KB-7013 rev 4

Hiến Pháp Bổ Sung S132 — Điều 0-S + 0-M + 0-L (v3.8)

8 min read Revision 4
constitutionamendmentS132v3.8dieu0-Sdieu0-Mdieu0-Lsingle-providerreusescaleproviders

Hiến Pháp Bổ Sung S132 — 3 Điều Mới

Ngày: 2026-03-24 | Session: S132 Tác giả: Anh Huyên (tầm nhìn), Claude Desktop (soạn thảo) Hiến pháp: v3.7 → v3.8 Áp dụng: Mọi thiết kế, mọi luật, mọi agent


ĐIỀU 0-S: NGUYÊN TẮC SINGLE PROVIDER — "1 BỘ PHẬN CUNG CẤP, TẤT CẢ DÙNG LẠI" (★ NỀN TẢNG)

"Mỗi loại service, thông tin sẽ do 1 bộ phận cung cấp → tất cả dùng lại." — Huyên, S132 "Mọi thứ tính bằng hàng trăm, hàng ngàn. Ngay PG cũng phải thiết kế cho tầm nhìn này." — Huyên, S132

§1 Định nghĩa

Single Provider = với mỗi loại NHU CẦU trong hệ thống, chỉ có ĐÚNG 1 "bộ phận" (provider) chịu trách nhiệm cung cấp service/data đó. Mọi phần khác cần thông tin đó → gọi provider đó. KHÔNG tự làm riêng.

§2 Tại sao

Khi hệ thống có hàng trăm collections, hàng ngàn entities, hàng trăm luật:

  • Tự làm riêng → hàng trăm bản sao logic → lỗi × hàng trăm → bảo trì × hàng trăm → PG thành "quái vật chậm chạp"
  • Dùng chung 1 provider → 1 logic → sửa 1 nơi → tất cả hưởng → PG gọn gàng → triển khai nhanh

§3 Quy tắc

3a. Mỗi loại nhu cầu = 1 provider duy nhất

Nhu cầu Provider (SSOT) Cách dùng
Đếm entities meta_catalog + refresh_registry_count() 17 triggers gọi CÙNG 1 function
Xác minh đếm verify_counts() 1 function, tất cả collections
Khai sinh entities birth_registry 1 bảng, mọi entity
Phân loại loài species_collection_map 1 bảng, mọi collection
Phát hiện vấn đề system_issues 1 bảng, mọi loại vấn đề
Đo lường/kiểm tra measurement_registry 1 bảng, mọi luật
Danh mục luật law_catalog 1 bảng, mọi luật
Hiển thị bảng DirectusTable.vue 1 component, mọi bảng
Navigation entity 5-Layer Registries 1 khung, mọi entity

3b. Thêm "khách hàng" mới = thêm DATA, KHÔNG thêm CODE

  • Thêm collection mới → thêm 1 row vào meta_catalog. KHÔNG viết trigger mới (trigger gọi chung function).
  • Thêm loại đo lường → thêm 1 row vào measurement_registry. KHÔNG viết function mới.
  • Thêm luật mới → thêm 1 row vào law_catalog + 1 collection SSOT. KHÔNG viết framework mới.
  • Thêm dòng Registries mới → config theo Điều 32 template. KHÔNG code tay từng layer.

3c. Tạo provider mới = quyết định kiến trúc lớn

Khi phát hiện nhu cầu chưa có provider → PHẢI:

  1. Thiết kế provider theo chuẩn (metadata-driven, config-based)
  2. Đảm bảo scale tới hàng trăm/hàng ngàn "khách hàng"
  3. Đăng ký vào Hiến pháp (bảng §3a)
  4. Hội đồng review nếu provider mới ảnh hưởng nhiều luật

TUYỆT ĐỐI KHÔNG tạo giải pháp riêng lẻ cho 1 luật nếu nhu cầu đó chung cho nhiều luật.

§4 Kiểm tra vi phạm

Assembly Gate Q6 (bắt buộc): "Nhu cầu này đã có provider chưa?"

  • Nếu CÓ → dùng provider đó (thêm row config)
  • Nếu CHƯA → đây có phải nhu cầu chung không?
    • Chung → thiết kế provider mới (quyết định kiến trúc)
    • Riêng biệt thật sự → OK tạo riêng (hiếm khi)

§5 Tầm nhìn PG

PG phải gọn gàng ở quy mô lớn:

  • Triggers: ít và ổn định (~20-30). Chỉ cho real-time events. 1 function, nhiều triggers gọi chung.
  • Tables: nhiều nhưng mỗi table có mục đích rõ. Law collection = SSOT data. Framework tables = shared infrastructure.
  • Functions: ít framework functions (~5-10), dùng lại cho mọi luật. KHÔNG 1 function per law.
  • Views/MViews: ít (~5-10), tổng hợp across laws. KHÔNG 1 view per law.
  • Data rows: nhiều — hàng trăm measurements, hàng ngàn entities = BÌNH THƯỜNG cho PG. Rows = data, không phải overhead.

Phân biệt rõ: Thêm DATA (rows) = tốt, PG xử lý dễ dàng. Thêm INFRASTRUCTURE (triggers, functions, views) = cẩn thận, phải justify.


ĐIỀU 0-M: NGUYÊN TẮC ĐO LƯỜNG PHỔ QUÁT

(Giữ nguyên nội dung đã soạn — 5 nguyên tắc)

  1. Mỗi luật = 1 collection SSOT
  2. 1 framework đo lường phổ quát (measurement_registry)
  3. Triggers chỉ cho real-time, measurements cho periodic
  4. SSOT tự mở rộng, tự phát hiện "điểm mù"
  5. "2 bài toán đơn giản" là nền tảng mọi đo lường

Chi tiết: search_knowledge("universal measurement framework")


ĐIỀU 0-L: NGUYÊN TẮC "DÙNG LẠI TRƯỚC KHI TẠO MỚI"

(Giữ nguyên nội dung đã soạn)

  1. Trước khi tạo mới → kiểm tra đã có provider chưa
  2. Trước khi tạo collection → kiểm tra law_catalog
  3. Trước khi viết logic → đăng ký measurement_registry
  4. Tiền lệ thành công phải ghi nhận và dùng lại
  5. Assembly Gate Q6: "Đã đăng ký vào framework phổ quát chưa?"

DANH SÁCH PROVIDERS HIỆN TẠI (v3.8)

# Provider Table/Component Phục vụ Khách hàng hiện tại Scale tới
1 Entity Counter meta_catalog + refresh_registry_count() Đếm real-time 17 collections 100+ collections
2 Count Verifier verify_counts() Xác minh đếm 17 collections 100+ collections
3 Birth Registry birth_registry Khai sinh entities 15,307 entities 100k+ entities
4 Species Classifier species_collection_map + meta_catalog.species_code Phân loại loài 21 species, 138 collections 100+ species
5 Issue Tracker system_issues Phát hiện vấn đề Điều 31 runner Mọi luật, mọi agent
6 Measurement Engine measurement_registry + run_internal_measurements() Đo lường phổ quát 15 measurements (8P/3F genuine/1dis) — PRODUCTION 500+ measurements
7 Law Catalog law_catalog Danh mục luật 5 luật đã đăng ký — PRODUCTION 100+ luật
8 Table Renderer DirectusTable.vue Hiển thị bảng Mọi trang bảng Mọi trang bảng
9 Entity Navigator 5-Layer Registries Navigation entity 15 loại entity 100+ loại entity
10 Framework Health verify_framework_health() Kiểm tra SSOT (MỚI — chưa implement) Toàn hệ thống

Providers CẦN TẠO (phát hiện qua rà soát):

# Nhu cầu Provider đề xuất Lý do
A Config cho Layer UI (Điều 32) layer_config table Mỗi dòng Registries cần config 5 layers — hiện code tay
B Relationship renderer (cần thiết kế) Layer 5 hiện render tay per entity type
C Nuxt API generator (cần thiết kế) Mỗi trang viết API endpoint riêng — nên metadata-driven

DANH SÁCH VI PHẠM CẦN SỬA

# Vi phạm Luật liên quan Cách sửa Ưu tiên
1 Contracts Điều 31 = JSON files trên đĩa Điều 31 Chuyển vào measurement_registry (PG) 🔴 S132-S133
2 Layer config cho mỗi dòng Registries = code tay Điều 32 (chưa viết) Tạo layer_config table = provider 🔴 S133
3 API endpoints Nuxt = mỗi trang code riêng Assembly First Audit + thiết kế API generator metadata-driven 🟡 S134+
4 Operating Rules VPS lỗi thời (MySQL backup, 8 containers) OR Cập nhật cho đúng thực tế 🟡 S134+
5 Luật nằm rải rác, không có law_catalog Điều 0-S mới Implement law_catalog 🔴 S132-S133

CÁC LUẬT CẦN CẬP NHẬT THEO ĐIỀU 0-S

Luật Cần sửa gì
Điều 26 (Đếm) Đăng ký verify_counts vào measurement_registry. Ghi rõ: meta_catalog = provider cho đếm.
Điều 28 (Khai sinh) Đăng ký birth_registry check vào measurement_registry.
Điều 29 (Species) Đăng ký species check vào measurement_registry.
Điều 31 (Toàn vẹn) Chuyển JSON contracts → measurement_registry. Thêm §III-B methodology.
Điều 32 (Layer — chưa viết) PHẢI thiết kế theo Single Provider từ đầu: 1 layer_config table cho mọi dòng.
Assembly Gate Thêm Q6: "Nhu cầu này đã có provider chưa?"