KB-2C4C rev 8

Matrix Refactor Quick Rules — rule ngắn cho Agent/Cowork/Fable

7 min read Revision 8
laws-newmatrix-assemblyquick-rulesanti-bloatdraft2026-06-13

Matrix Refactor Quick Rules

Rule ngắn để Agent/Cowork/Fable không đi lệch. Đọc kèm: matrix-refactor-implementation-plan.md. DRAFT — không phải ban hành.

Định vị

  1. Mọi việc mới phải đặt vào một ô ma trận Tầng × Loài × Kho × Miền TRƯỚC khi triển khai.
  2. Ma trận chỉ có 4 chiều. Không thêm chiều mới nếu nó chỉ là thuộc tính.
  3. Quan hệ KHÔNG phải chiều — là graph riêng (universal_edges / IU-edges).
  4. Capability/năng lực/điều kiện đáp ứng KHÔNG phải chiều — là thuộc tính lọc.
  5. Task/request/người thực hiện KHÔNG phải chiều — là overlay.
  6. Không dùng lại thiết kế "7 chiều phẳng".
  7. "Tầng" = 6 tầng lắp ráp (nguyên tử→công trình). Không lẫn với Đ5 "5 Tầng" hạ tầng; không dùng lại naming L1–L5.

Kho tạm trước

  1. Mặc định mọi triển khai mới đi vào kho tạm: mở ô tạm → lắp thử → kiểm nhanh → sai thì xóa → đúng thì promote.
  2. Không ghi thẳng kho chính/canonical. Kho chính chỉ nhận qua promote.
  3. Trong kho tạm: kiểm nhẹ, không full governance, không sửa lõi, không sửa công thức/kho/loài canonical.
  4. Sai trong kho tạm thì xóa kho tạm hoặc xóa phần triển khai — không kéo toàn hệ vào sửa.
  5. Object kho tạm chưa cần khai sinh canonical; nó mang TEMP_ID_STAMP (workspace_id/candidate_id). Khai sinh canonical (BIRTH_STAMP + birth_id/entity_code) chỉ xảy ra một lần khi promote pass.
  6. Output kho tạm là thông tin/candidate — không bao giờ là thay đổi đã áp.

Lắp ráp

  1. Tầng trên lắp từ thành phẩm/vật liệu của tầng dưới TRỰC TIẾP. Công thức tầng nào chỉ xử lý nguyên liệu tầng đó.
  2. Mục tiêu = nguyên liệu đầu vào + công thức + kho + máy lắp (DOT).
  3. Mỗi ô tối thiểu phải có: công thức + DOT lắp/kiểm + IO Contract + governance state + rollback.
  4. IO Contract = 1 record gọn (nhận gì / trả gì / schema tối thiểu / DOT kiểm / rollback) — không phải gói 5 file.

Chống phình hệ

  1. Không tạo module/lane/registry mới nếu biểu diễn được bằng tầng/loài/kho/miền/công thức/DOT/IO Contract.
  2. Không tạo registry mới nếu sổ cũ đã có (birth_registry, collection_registry, meta_catalog, dot_tools, universal_edges, canonical_fields). cell_id là thuộc tính trên sổ cũ.
  3. Không tạo thiết kế governance mới — One-Roof là trần duy nhất (một governance_registry, một trục Đ32, một Đ31+Đ45, một Đ35).
  4. Không tạo module contract phức tạp; không Integration Bus; không federated registry slice.
  5. Lane mức 1–2 có trần artifact cố định; muốn thêm yêu cầu bắt buộc = thay đổi mức 3.
  6. Mọi khái niệm mới phải có giải trình rất chặt vì sao 7 thành phần nền không biểu diễn được.

Đóng dấu kiểm soát (stamp)

Chi tiết: matrix-stamp-governance-addendum.md.

S1. Khai sinh không gánh toàn bộ governance. Khai sinh chỉ cấp căn cước tối thiểu (8 trường birth_registry). S2. Stamp KHÔNG phải chiều ma trận — là nội dung lớp "Governance state" của ô/object. S3. Mỗi dấu = 1 cột inspect_* trên birth_registry, do 1 DOT đóng độc lập (mô hình PEN/STAMP/GATE Đ0-G). DOT đóng dấu từng phần, không DOT nào phải hiểu toàn hệ. S4. Object thiếu dấu KHÔNG làm vỡ hệ; nó bị liệt kê/cảnh báo/chặn promote — KHÔNG vô hiệu hóa entity đang chạy. S5. Promote fail-closed nếu thiếu dấu bắt buộc. Tập dấu bắt buộc khai trong metadata, không hardcode. S6. Không tạo bảng stamp mới — tái dùng cột inspect_* birth_registry + system_issues/event_outbox/Đ23. governance_stamp_ledger chỉ khi thật sự cần (addendum §9). S7. Hai dấu căn cước tách biệt: TEMP_ID_STAMP (kho tạm: workspace_id/candidate_id) vs BIRTH_STAMP (canonical sau promote). BIRTH_STAMP + PROMOTE_STAMP là OUTPUT của promote, chỉ đóng SAU khi checker pass — không phải precondition (tránh circular). S8. Bộ dấu v0.1 ≤ 8–10 dấu lõi (hiện 7: TEMP_ID/BIRTH/CELL/IO/VALIDATION/ROLLBACK/PROMOTE). Thêm một dấu BẮT BUỘC mới = thay đổi Mức 3. GOV/OWNER chỉ bắt buộc ở vùng high-risk. Các inspector mịn (species/collection/relation) gom dưới dấu lõi, không tự nâng số dấu bắt buộc. S9. Tập dấu đọc từ required-stamps.v0.1.json (metadata) — không hardcode. Checker kiểm promote_preconditions, KHÔNG đòi promote_outputs (BIRTH/PROMOTE) trước khi chạy. S10. cell_id còn UNKNOWN/PENDING (chưa chắc tầng/loài/miền) → được ở kho tạm, nhưng KHÔNG promote (CELL_STAMP chưa đóng → PROMOTE_BLOCKED). S11. Checker chỉ kiểm MỘT candidate packet (binding theo candidate_id + packet_hash), KHÔNG scan toàn hệ, KHÔNG tự đoán/ráp artifact rời rạc. S12. Pre-promote stamps (TEMP_ID/CELL/IO/VALIDATION/ROLLBACK) nằm ở staging metadata; post-promote stamps (BIRTH/PROMOTE) nằm ở canonical substrate. Pre-promote KHÔNG ghi birth_registry. (addendum §2b) S13. PROMOTE_OK là verdict, KHÔNG phải mutation. Tạo birth + đóng BIRTH/PROMOTE + consume staging = Atomic Promote Contract (transaction riêng sau checker, all-or-nothing). (addendum §7b) S14. Mọi workspace/candidate phải có TTL + cleanup fail-safe: chỉ xóa draft/expired/quarantined; KHÔNG xóa đang checking/promote_ok-chưa-consumed/approved; nghi ngờ thì không xóa.

Promote

  1. Không promote nếu thiếu IO Contract / DOT kiểm pass / rollback.
  2. Kiểm promote CHỈ cục bộ: đúng ô? đúng input? đúng schema? DOT pass? relation bắt buộc đủ? rollback có? owner/scope rõ?
  3. Checker promote là fail-closed; nghi ngờ → đẩy lên mức trên. Blast-radius class được TÍNH, không tự khai; khai sai = incident + probation.
  4. Việc nguy hiểm (sửa khai sinh, kernel, tầng/loài/collection canonical mới, công thức canonical, owner/scope, production gate, approval/audit/rollback rule) = mức 3 Canonical — kiểm chặt như hiện tại.

Luật cũ & an toàn

  1. Không sửa knowledge/dev/laws/. Không xóa file cũ. Luật enacted thắng cho tới khi enact bản mới.
  2. Không sửa luật cũ trước khi có mapping sang ma trận (preserved/amended/moved; không xóa, không làm yếu).
  3. Knowledge Graph (Đ39) chạy lane độc lập — không là blocker; quan hệ canonical vẫn qua rule/DOT/promote.
  4. Không mutate production / DB thật / CI / secrets trong phạm vi track này. Tài liệu trong laws-new/ là DRAFT, không tự ủy quyền gì.
  5. No lane before checker: chưa có checker fail-closed chạy block-mode thì lane chưa mở. A paper lane is no lane.