P10B-1A-HASH — Đ32 Hash/Vocab Evidence Report (2026-04-29)
P10B-1A-HASH — D32 Evidence Report
Captured: 2026-04-29T00:00:00Z (UTC)
Mode: READ-ONLY (no INSERT/UPDATE/DELETE/DDL)
Verdict: PASS
1. Source metadata
- Path:
knowledge/dev/laws/dieu32-approval-law.md - Title: Điều 32: Luật Phê duyệt — v1.1 BAN HÀNH
- Revision: 2
- Char count (utf-8): 5601
- Byte count (utf-8): 6189
- SHA256 (full source):
a42622496fff8c725932a5d310d1e4050e63e41828ba01c1eec4974c045e17f7 - Captured at: 2026-04-29T00:00:00Z
2. Per-unit table (23 units)
| # | canonical_address | parent | section_type | sort | words | chars | body_sha256 | body_excerpt |
|---|---|---|---|---|---|---|---|---|
| 1 | D38-DIEU32-ROOT | — | heading | 0 | 0 | 0 | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
(heading-only / container) |
| 2 | D38-DIEU32-S0 | ROOT | paragraph | 1 | 55 | 329 | c4c48fb46977d0457db7da8eeafb28c010da20cb3a99ee8be8b78fc2963efea8 |
> v1.1 BAN HÀNH | 2026-04-18 | Amend bởi S178 Fix 15 — DOT Repair Governance v4 FINAL ⏎ > *Base: |
| 3 | D38-DIEU32-S1 | ROOT | paragraph | 2 | 41 | 196 | 6b36dcc86ed52001f51cd3960342f14a7ccaa8f335c13984fee43b110c5e6ae8 |
Mọi thay đổi có tác động tới hệ thống phải qua cơ chế phê duyệt chuẩn hoá. Phê duyệt = PG collection |
| 4 | D38-DIEU32-S2 | ROOT | heading | 3 | 0 | 0 | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
(heading-only / container) |
| 5 | D38-DIEU32-S2-P1 | S2 | principle | 1 | 17 | 93 | 62f0f5ecfc71566db0818885106754a7f483ccb311c750164ac00923cbaf5bcb |
Mọi approval request phải được tạo qua DOT hợp pháp; không insert SQL tay, không curl bypass. |
| 6 | D38-DIEU32-S2-P2 | S2 | principle | 2 | 29 | 144 | b7a86e04993b6ebb09036bbca9553d4808370a778106ec87cde8fe98dd7a619e |
Mỗi APR phải đủ evidence, phương án đề xuất, phương án thay thế, và dữ liệu cần thiết để người/AI qu |
| 7 | D38-DIEU32-S2-P3 | S2 | principle | 3 | 15 | 130 | ccc04f06b3b974c412c805f2ef4e3f066c613c779520912f0d4ed8edc6f179f5 |
approval_requests, apr_action_types, apr_request_types, apr_approvals và các trigger liên qu |
| 8 | D38-DIEU32-S2-P4 | S2 | paragraph | 4 | 21 | 117 | 374aaed69f76b16e088093f38cb9653aae7df0e41fe548caf194ed5d1cce5055 |
Áp dụng cho birth, reclassify, retire, new collection, new/fix DOT, amend luật, và mọi thay đổi có t |
| 9 | D38-DIEU32-S3 | ROOT | heading | 4 | 0 | 0 | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
(heading-only / container) |
| 10 | D38-DIEU32-S3-P1 | S3 | technical_spec | 1 | 76 | 546 | 3cabe154ded7e94ce8fa328479e589dcd82da93ab3061ae737d7a822e864c426 |
approval_requests phải có 2 cột code riêng: ⏎ - request_type_code TEXT ⏎ - `proposed_action_code TEX |
| 11 | D38-DIEU32-S3-P2 | S3 | technical_spec | 2 | 49 | 453 | 9ec712af3b7ba7ecced386d267751d9c0d02d9188ddf7040f0de1622f8362f1b |
#### apr_action_types ⏎ - action_code PK ⏎ - description ⏎ - handler_ref ⏎ - risk_level in (low, |
| 12 | D38-DIEU32-S3-P3 | S3 | technical_spec | 3 | 59 | 410 | 64f7b674b5c8abd72d2ce71f1d61b4a12dab138ab888ad4cd8653210d4c009ec |
Action seed tối thiểu: ⏎ - create_item (low) ⏎ - update_item (low) ⏎ - add_field (medium) ⏎ - `patch_o |
| 13 | D38-DIEU32-S3-P4 | S3 | governance_process | 4 | 15 | 143 | 146a9e19949efc921b775f098cd98d3dca0a1d3cd20d971b2fb15f9a12aab84c |
apr_action_types, apr_request_types, apr_approvals phải được đăng ký trong `collection_registr |
| 14 | D38-DIEU32-S3-P5 | S3 | process | 5 | 86 | 600 | 8ce9353aef92a4965200956fd7bf161ca6eb48cb4e360ca6c73cb193eb5aa8d4 |
1. Tạo apr_action_types, apr_request_types + seed. ⏎ 2. Register theo Đ36. ⏎ 3. Amend `approval_requ |
| 15 | D38-DIEU32-S4 | ROOT | heading | 5 | 0 | 0 | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
(heading-only / container) |
| 16 | D38-DIEU32-S4-P1 | S4 | technical_spec | 1 | 30 | 225 | fd48e2f1787e40b12672b54da3bd98ad69852f1ce5cc6ba01b237f52d51f7d97 |
Mỗi quyết định duyệt phải được ghi thành row riêng: ⏎ - apr_id ⏎ - approver ⏎ - approver_type in (`h |
| 17 | D38-DIEU32-S4-P2 | S4 | technical_spec | 2 | 35 | 220 | 525f4fa44101a7a77f19ce57e4633e5d98abe3f0a860df626ff2c62bb8ce0e71 |
BEFORE UPDATE OF status ON approval_requests: ⏎ - high: cần ≥1 president approve + ≥2 `ai_coun |
| 18 | D38-DIEU32-S4-P3 | S4 | checklist | 3 | 37 | 217 | 8090aabbaa511f8e55ad06fb90e444149f396515df90bd365304a5c7fcad9da1 |
1. Cấm self-approve cho high-risk request của chính người/agent tạo request. ⏎ 2. Có reject mở thì khô |
| 19 | D38-DIEU32-S5 | ROOT | paragraph | 6 | 21 | 206 | 44a384ab0f289a70cae46e96e80775b723223110c3e1460674f82db3b6143163 |
- dot-apr-types-register ⏎ - dot-apr-type-integrity-audit (A-tier) ⏎ - `dot-apr-type-integrity-propo |
| 20 | D38-DIEU32-S6 | ROOT | process | 7 | 28 | 171 | 29cf305e5a204b3b754ba4c76f70d6ce646d2909eeb8256a6285ce2e7526b903 |
pending → approved → applied ⏎ hoặc pending → rejected ⏎ hoặc pending → expired ⏎ ⏎ approved không |
| 21 | D38-DIEU32-S7 | ROOT | governance_process | 8 | 24 | 145 | 0ba20922874e36be4c68c9fe8420d3ece02e6599801471eef86bc2ad29a39a16 |
Mọi action có handler_ref='unimplemented' là không được thực thi. Cơ chế chặn phải tồn tại ở * |
| 22 | D38-DIEU32-S8 | ROOT | checklist | 9 | 33 | 167 | da47d3f1fc22a3ea4021f20bf3f94d71ac4615998a1604bce9c1c5645deb0d22 |
1. Thời gian pending trung bình. ⏎ 2. Tỷ lệ request đủ evidence ngay từ lần đầu. ⏎ 3. Tỷ lệ reject do th |
| 23 | D38-DIEU32-S9 | ROOT | changelog | 10 | 51 | 327 | 71a3e42dcc3c0cf4f6a8e3571c502b3ce8bea64bf4bda3b594d410d19dde1e47 |
| Version | Nội dung | ⏎ |---|---| ⏎ | v1.0 | Draft ban đầu về approval_requests, scanner, lifecycle c |
Note: ROOT, S2, S3, S4 are container/heading-only units (body empty → SHA256 of empty string e3b0c442...). All 19 leaf units have non-empty body.
3. Body coverage summary
- Total source lines: 171
- Leaf-unit-assigned lines: 126
- Intentionally excluded structural lines: 32 (root title, container headings ##§2/§3/§4, all 9
---HRs, 18 leaf heading lines, outro italic) - Unexpected gaps: 0
- Unexpected overlaps: 0
Coverage rule: union of leaf unit bodies = ALL substantive body text. Excluded only: root title, ##/### heading marker lines (already represented as unit titles), --- HR separators, container heading-only units (S2/S3/S4), outro signature line, blank boundary lines. Gap=0 / overlap=0 → segmentation valid.
4. Vocab production query
Schema introspection: tac_section_type_vocab exposes lifecycle_status column (active / deprecated / retired). Query adapted to require lifecycle_status='active' is implicit; all 8 expected codes returned with lifecycle_status=active.
Query:
SELECT code, name, lifecycle_status, body_required, description_required
FROM tac_section_type_vocab
WHERE code IN ('heading','paragraph','principle','technical_spec',
'governance_process','process','checklist','changelog')
ORDER BY code;
Result (8 rows):
| code | name | lifecycle_status | body_required | description_required |
|---|---|---|---|---|
| changelog | Lịch sử thay đổi | active | t | f |
| checklist | Danh sách kiểm | active | t | f |
| governance_process | Quy trình quản trị | active | t | t |
| heading | Tiêu đề | active | f | f |
| paragraph | Đoạn | active | t | t |
| principle | Nguyên tắc | active | t | t |
| process | Quy trình | active | t | t |
| technical_spec | Đặc tả kỹ thuật | active | t | t |
8 codes active in production. ✅
5. PASS criteria evaluation
| # | Criterion | Status |
|---|---|---|
| 1 | SHA256 toàn văn Đ32 computed + ghi report | ✅ PASS |
| 2 | 23 units: body_sha256 + body_excerpt + word_count | ✅ PASS |
| 3 | Body coverage: 0 content gap, 0 unexpected overlap | ✅ PASS (gaps=0 overlaps=0) |
| 4 | Vocab query: 8 codes active in production | ✅ PASS (8/8 active) |
| 5 | Report uploaded KB | ✅ PASS |
| 6 | STOP after upload + Đ41 hygiene | ✅ PASS |
6. Verdict
PASS — Điều 32 23-unit segmentation hashed, vocabulary verified, no mutations performed. Ready to feed downstream P10B-1B planning.