01 — Law Placement Rationale — Why Điều 45 (Not Đ35/36/31/44)
01 — Law Placement Rationale
Date: 2026-05-26 | Scope: Tại sao queue law thuộc Điều 45 mới chứ không là Điều 35/36/31/44 mở rộng. Nội dung tóm tắt từ survey
04-law-placement-analysis.md+ GPT proposal.
§1. Tổng kết quyết định
Chọn: Điều 45 (luật mới) — "Luật Hàng Đợi & Điều Phối Tác Vụ PG-native". Loại bỏ: Mở rộng Điều 35 (A), Điều 36 (B), Điều 31 (C). Tránh: Mở rộng Điều 44 (D) như giải pháp lâu dài (chấp nhận như interim).
§2. Tại sao không thuộc Điều 35 (DOT Governance)
Điều 35 BAN HÀNH v5.2 FINAL (2026-04-18 S178 Fix 15) quản trị DOT (Domain Operation Tool) lifecycle: register, run modes, ADMIN fallback, paired test, fix_repair_dot, verify 3-tầng. Vocab category {collection, piece, lifecycle, read, health, monitoring.health, monitoring.integrity, monitoring.dot, pivot, sync, data_quality, workflow, collection}.
DOT là một loại executor. Queue substrate phục vụ DOT, Agent, Hermes, worker, MOT, customer-care.
Cho queue vào Điều 35:
- ❌ Làm Điều 35 quá rộng — đang chuyên về DOT lifecycle.
- ❌ Vocab DOT (category) không phải vocab queue (event_domain/stream/lane).
- ❌ Sub-domain queue (events trên
system_issues,iu_lifecycle_log, …) không liên quan DOT.
Bác bỏ.
§3. Tại sao không thuộc Điều 36 (Collection Protocol)
Điều 36 (v5.0 DRAFT 30%) quản trị Collection Birth + Species + Entity Linking + NVSZ. GP6/GP7 (Birth trigger, Lifecycle).
Cho queue vào Điều 36:
- ❌ Birth là một nguồn sự kiện của queue, không phải toàn bộ queue.
- ❌ NVSZ là một invariant — luật mới có thể ratify NVSZ (Điều 45 §14) mà không phải gộp Điều 36.
- ❌ Tasks, jobs, customer-care không liên quan Collection birth.
Bác bỏ.
§4. Tại sao không thuộc Điều 31 (System Integrity)
Điều 31 v1.2 BAN HÀNH 2026-03-22 quản trị contract-driven integrity, watchdog, refusal, 3-loop validation, system_issues. 38 điểm sửa qua 2 vòng Council.
Cho queue vào Điều 31:
- ⚠ Queue dead-letter + liveness contract là integrity-adjacent — có liên hệ.
- ❌ Nhưng queue là operational substrate, không phải contract validation framework.
- ❌ Đặt "worker drains event_outbox at cadence X" vào luật integrity sẽ làm Điều 31 rộng quá.
Quan hệ tốt hơn: queue interacts với Điều 31 (queue emits issue_opened → watchdog reads). Điều 45 cross-reference Điều 31, không gộp.
Bác bỏ.
§5. Tại sao không tốt nếu chỉ mở rộng Điều 44 (Implementation)
Điều 44 (controlled DRAFT v0.1.2, IU-0) là implementation pack. Phần queue substrate hiện hữu (event_outbox, worker, dead-letter, lease, staging) sinh ra dưới Điều 44 trien-khai (P3D4C0X, P3D4C1, IU-0 design).
Cho queue vào Điều 44 mở rộng:
- ⚠ Path-of-least-resistance: chỉ thêm §X / §Y vào Điều 44 design tree.
- ❌ Nhưng Điều 44 = "implementation pack cho IU-0". Queue phục vụ toàn hệ 13 luật, không riêng IU-0.
- ❌ Name confusion: "Điều 44 chứa hàng đợi cho hệ thống" sai phạm trù — future readers tìm queue ở top-level law slot.
- ❌ Coupling tiến hoá queue với tiến hoá IU-0 — xấu cho cả hai.
Chấp nhận interim (giữ design docs hiện tại nơi cũ trong khi v0.1 đang Council review). Không chấp nhận lâu dài.
§6. Tại sao Điều 45 mới đúng
| Tiêu chí | Điều 45 mới |
|---|---|
| Queue scope cross-domain (≥3 laws) | ✅ 8 domains: iu, birth_registry, governance, tac, kg, system, dot, health (+sub piece + staging) |
| Queue có own invariants | ✅ 8 nguyên tắc (idempotency, durable+transient, retry, lease, lifecycle vocab, payload classification, observability, no-vector-transient) |
| Governs Agent/DOT/worker/Hermes uniformly | ✅ §11 three-layer executor boundary |
| Treated as core architecture | ✅ Substrate đã 131k rows + active worker — không thể là "implementation detail" |
| Minimizes coupling to one domain | ✅ Bất kể domain — vocab CHECK-cứng cho tất cả |
| Council-review effort | medium-high (mới luật, full review) — chấp nhận |
| Risk of premature codification | low — Phase 2 PoC đã ship, substrate đã ổn định 18 ngày |
Survey 04-law-placement-analysis.md score matrix cho Điều 45 = 5 cột ✓ + 1 effort cao + 1 risk medium — cao nhất so với 4 phương án còn lại.
§7. Liên kết với "candidate Điều 45" trong tài liệu cũ
Doc 23-P3D4C0X §K (2026-05-08) đã pre-flag "candidate Điều 45 Universal Event/Signal Law" và deferred decision cho đến sau Phase 2 PoC. Phase 2 PoC đã ship — substrate 131k events hiện hữu. Deferred condition met.
Điều 45 mới CHỈ ratify candidate đó với mở rộng phạm vi (queue + task orchestration, không chỉ universal event/signal).
§8. Bàn giao boundary
Sau ban hành Điều 45:
| Domain | Owner law (post-Điều 45) |
|---|---|
| Event envelope (CHECK + vocab) | Điều 45 |
| Inclusion criteria + governance-significance rubric | Điều 45 |
| Worker / cursor / dead-letter / lease | Điều 45 |
| Routing / subscription | Điều 45 + cross-ref Điều 37 (agency vocab) |
| Trigger-in (SQL route) | Điều 45 |
| Trigger-out (consumer pattern) | Điều 45 |
| DOT lifecycle | Điều 35 (không đổi) |
| DOT ↔ queue interaction | Điều 45 (mới) + cross-ref Điều 35 |
| Birth gate, Collection species | Điều 36 (không đổi) |
| NVSZ invariant | Điều 45 (nâng từ D36 design → law) + cross-ref Điều 36 |
| Integrity watchdog | Điều 31 (không đổi) |
| IU-0 minimum standard | Điều 44 (không đổi) |
| IU events emit | Điều 45 routes; emit functions vẫn live |
| Directus exposure (UI) | Điều 28 Display + Điều 35/43 infra (không đổi) |
§9. Quy trình ban hành đề xuất
- v0.1 DRAFT (file law) → upload KB → notify Council. ✅ (hoàn tất hôm nay 2026-05-26)
- GPT review round 1 → response → patch → v0.2.
- Optionally Gemini review round 1.
- (Nếu Council yêu cầu) round 2.
- User approve → ban hành v1.0:
- Rename file: bỏ "DRAFT" header, thêm "BAN HÀNH" banner.
- Cập nhật
knowledge/dev/architecture/index.mdthêm Điều 45 vào danh sách luật. - Cập nhật START-HERE cutting operator nếu cần reference §11 boundary.
- Sub-design packs (DP1–DP7) chỉ được dispatch sau bước này.
§10. Pre-emption — vấn đề có thể bị Council raise
| Vấn đề có thể raise | Defense |
|---|---|
| "Điều 45 chồng lấn Điều 35 DOT-run lifecycle" | §11.3 + §16.1 phát biểu rõ: Điều 35 chủ quản DOT lifecycle, Điều 45 chủ quản DOT↔queue interface. dot_iu_command_run schema không thay đổi. |
| "Customer-care/email vắng substrate — sao đưa vào luật?" | §13 minh thị là design seam, không normative Phase 1. Forward-compatibility clause cho phép mở rộng mà không amend Điều 45. |
| "Điều 45 vi phạm Điều 18.1 'tách luật/design/triển khai' vì ratify hậu nghiệm" | §18.1 thừa nhận thẳng: substrate sinh trước luật, nay sửa hậu quả. Tương lai phải Council-first. |
| "Tại sao không gộp Điều 35 + 45 thành DOT+Queue?" | DOT là 1 producer; queue phục vụ 8+ producers. Vocab khác (category vs domain). Bác bỏ trong §2. |
| "Liều lĩnh khi pg_cron chưa quyết định" | §5.4 + §9.4 + §20.5 phát biểu rõ scheduler boundary — luật version-agnostic về pg_cron decision, scheduler decision thuộc DP1. |
| "Risk codify quá sớm" | Phase 1 §18.2 KHÔNG tạo bảng mới — chỉ ratify hiện hành. Mọi mở rộng substrate phải qua sub-design pack có Council review. |
§11. Quyết định cuối cùng
Điều 45 mới là placement đúng. Mở rộng Điều 44 là interim chấp nhận trong khi v0.1 Council review; sau ban hành phải migrate documentation về Điều 45 + Điều 44 trien-khai sub-design packs.