KB-72AF

01 — Law Placement Rationale — Why Điều 45 (Not Đ35/36/31/44)

8 min read Revision 1
dieu45-draftlaw-placementrationalequeue-lawdieu35dieu36dieu31dieu44

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"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

  1. v0.1 DRAFT (file law) → upload KB → notify Council. ✅ (hoàn tất hôm nay 2026-05-26)
  2. GPT review round 1 → response → patch → v0.2.
  3. Optionally Gemini review round 1.
  4. (Nếu Council yêu cầu) round 2.
  5. 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.md thê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.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-dieu45-pg-native-queue-law-draft/01-law-placement-rationale.md