KB-42CE

P10B-2A — Điều 28 Hash/Vocab Evidence (2026-04-29)

7 min read Revision 1
reportp10bdieu-28hashvocabevidence

P10B-2A — Điều 28 Hash/Vocab Evidence

Task: P10B-2A-HASH v1.1 Captured at: 2026-04-29T00:00:00Z Mode: READ-ONLY (no INSERT/UPDATE/DELETE/DDL; vocab query only)


1. Source Metadata

Field Value
Document path knowledge/dev/laws/dieu28-display-technology-law.md
Title Điều 28: Luật Kỹ thuật Hiển thị — v2.0 BAN HÀNH (NT rà soát)
Revision (AD) 1
Length (chars) 8520
Length (UTF-8 bytes) 9289
SHA256 (full UTF-8 body) fa5ed5c1f6a6ab70f69f48e0bd3a2e4d822eb6b672a1c2b2313edd23f3277d7b
Captured at 2026-04-29T00:00:00Z

2. Per-Unit Hashes

Unit count derived from dynamic heading parse: 25 (candidate v1.1 expected 27 — see §7 finding).

canonical_address section_type body_sha256 (16) word_count body_excerpt (≤80)
S0 paragraph b3560a32fd4bc6b1... 85 # ĐIỀU 28: LUẬT KỸ THUẬT HIỂN THỊ — v2.0 BAN HÀNH > **v2.0 BAN HÀNH | S150 (20
S1 principle 8f5cd61da52341ee... 72 > **Nuxt CHỈ render từ khuôn đã đăng ký trong PG. Không có khuôn = không có giao
S1.1 principle 2b6958a58d8fb778... 59 | Lớp | Ví dụ | Thuộc Điều 28? | (table)
S2 heading e3b0c44298fc1c14... 0 (container, empty body)
S2.1 principle 6ceb6981a022b8bc... 27 Nuxt ĐƯỢC: đọc Directus API, render từ khuôn, phát event/submit payload…
S2.2 principle 87babdafe2412250... 18 1 loại giao diện = 1 khuôn. Instance = config. Sửa khuôn = tất cả…
S2.3 principle ad33b434f4683178... 13 Config trong PG (JSONB) để validate, query, DOT thao tác. Text = doc…
S2.4 principle e9fcbe2113670625... 10 Đăng ký design_templates, birth record, species SPE-TPL, DOT-health…
S2.5 principle 4c28808845a993cd... 103 | # | Bộ phận | Quên thì sao | (NT-D5 checklist 8 bộ phận table)
S3 heading e3b0c44298fc1c14... 0 (container, empty body)
S3.1 technical_spec 4537ea23216a940b... 203 Schema table — design_templates fields
S3.2 technical_spec 7bf7ec1c11ffe6cd... 59 ```sql CREATE TABLE template_statuses …
S3.3 technical_spec bf6d2cbd10e38902... 114 ```sql CREATE FUNCTION fn_template_lifecycle_guard() …
S3.4 principle 185030c2c9642e19... 25 Quy tắc versioning
S3.5 principle 494cdc9c62326087... 24 Quy tắc instance
S4 process 609dfd525525789e... 89 IV. QUY TRÌNH TEST 5/5
S5 governance_process 821c5b564843bfd8... 80 V. DOT QUẢN TRỊ — PAIRED
S6 process 02758f53e63682fc... 51 VI. QUY TRÌNH TẠO KHUÔN MỚI
S7 process d230d07300648f4b... 106 VII. CHUYỂN GIAO COMPONENT (single block per MP2)
S8 heading e3b0c44298fc1c14... 0 (container, empty body)
S8.1 technical_spec 89e05c127dbced47... 19 Whitelist
S8.2 governance_process bdae72e594acf63b... 26 Coverage Scanner
S9 principle b74e7071ca83fac4... 90 IX. QUAN HỆ VỚI LUẬT KHÁC
S10 technical_spec 80a41eacdf852780... 75 X. NỢ KỸ THUẬT
S11 paragraph a8c128769877b7c5... 33 *Điều 28 v2.0 BAN HÀNH | 13/13 NT ✅ | … (footer italic)

Empty containers (S2, S3, S8) all share the empty-string SHA e3b0c442… — expected (immediate body empty; children carry substance).


3. Body Coverage Check

Metric Result
Total source lines 229
Substantive lines uncovered 0
Unexpected overlaps 0
Code-fence balance ✅ S3.2 = 2 fences (closed); S3.3 = 2 fences (closed)
Footer captured ✅ S11
Markdown tables preserved ✅ all tables intact (S1.1, S2.5, S3.1, S4, S5, S7-inline, S9, S10)
Excluded text Heading markers, --- HR, blank lines, intentional container placeholders only

§FAIL CONDITIONS audit: PASS on all five.


4. VII Coverage Analysis

S7 extracted as single block per MP2. The three ### sub-headings (4 CÓ, KHÔNG đưa vào, Quy trình) are title-only — entire content lives in heading text itself. 0 gap, 0 overlap inside S7.

Recommendation: keep S7 as 1 unit. Splitting would yield 3 leaves with empty bodies (semantically weaker).


S11 captured (paragraph, wc=33, sha=a8c128769877b7c5…):

*Điều 28 v2.0 BAN HÀNH | 13/13 NT ✅ | 6/6 Q ✅ | Ref table status | PG trigger lifecycle+checklist guard | DOT paired rõ | instance_collection FK | Dùng chung dot_config*

6. Vocab Verification (7 types)

Schema cols of tac_section_type_vocab (11): code, name, description, lifecycle_status, owner, soft_limit_words, hard_limit_words, description_required, body_required, created_at, updated_at.

code name body_required description_required lifecycle_status
checklist Danh sách kiểm t f active
governance_process Quy trình quản trị t t active
heading Tiêu đề f f active
paragraph Đoạn t t active
principle Nguyên tắc t t active
process Quy trình t t active
technical_spec Đặc tả kỹ thuật t t active

7/7 active. ✅


7. Finding — Unit Count Discrepancy (per §SEGMENTATION AUTHORITY)

Candidate v1.1 specifies 27 units. Dynamic heading parse + MP2 single-block S7 yields 25 units:

  • S0 (title+preamble) + 4 containers (S1, S2, S3, S8) + S1.1 + 5 NT-D + 5 S3 children + S4 + S5 + S6 + S7 (single block) + 2 S8 children + S9 + S10 + S11 = 25.

Options to reach 27 (each requires evidence-based decision, not auto-applied):

Option Effect Evidence
(A) Split S0 into ROOT (title) + S0 (preamble) +1 → 26 Title is structurally distinct from blockquote preamble
(B) Split S7 into 3 leaf units + container +2 → 27 Three ### headings exist as title-only units
(A) + (B) combined +3 → 28 overshoots

Recommendation: Adopt (A) only → 26. If 27 is firm, also adopt (B) but accept S7.x will have empty bodies (heading text IS content) — semantically weaker. Per §SEGMENTATION AUTHORITY flagged for human review; agent has NOT silently changed the candidate list.


8. Verdict

Criterion Status
1. Full-body SHA256 computed
2. Units with body_sha256 + excerpt + word_count ⚠ 25 derived (see §7)
3. Body coverage: 0 gap, 0 unexpected overlap
4. Footer captured as paragraph unit
5. VII body coverage verified single-block
6. 7 section_type codes active in production
7. Report uploaded KB

VERDICT: PASS-with-finding — all FAIL CONDITIONS clear, vocab production-ready, coverage proven. Unit count discrepancy (25 vs 27) flagged for human decision before downstream tasks rely on count.

STOP per spec.