KB-4626

AI Council Review — GPT — Điều 26 MỚI v3.3

17 min read Revision 1
councilreviewgptdieu26pivotv3.3need-revision

AI Council Review — GPT — Điều 26 MỚI v3.3

Ngày: 2026-03-27 Reviewer: Incomex Hội đồng AI (GPT) Kết luận tổng thể: CẦN SỬA trước khi triển khai Mức độ tin tưởng: Cao cho hướng kiến trúc, trung bình-cao cho chi tiết triển khai


0) Phạm vi đã đọc

Đã đọc và đối chiếu 10 tài liệu lõi:

  1. knowledge/dev/architecture/council-review-request-dieu26.md
  2. knowledge/dev/architecture/dieu26-new-registries-counting-law-draft.md
  3. knowledge/dev/architecture/index.md
  4. knowledge/dev/architecture/dieu31-pg-technical-design.md
  5. knowledge/current-state/reports/s167h-codex-chaos-audit-report
  6. knowledge/current-state/reports/s169-chaos-round4-report.md
  7. knowledge/dev/architecture/birth-registry-law.md
  8. knowledge/dev/architecture/label-law.md
  9. knowledge/dev/architecture/standard-template-law.md
  10. knowledge/dev/architecture/system-integrity-law.md

Nguyên tắc dùng để chấm:

  • Hiến pháp tối cao: Điều 7, Điều 9, Điều 12, Điều 13, Điều 19, Điều 21, Điều 22, Điều 24, Điều 28, Điều 30, Điều 31, §0-S, §0-M, §0-L, Điều 0-G.
  • Zero Trust: cái gì chưa chắc đúng thì xem là chưa đạt.
  • Assembly First: PG/Directus/Nuxt trước, code mới là tối thiểu cần thiết.

1) Tóm tắt phán quyết

Tôi ĐỒNG Ý với hướng chuyển trục từ 7 tầng verify/cache sang Pivot-first, metadata-first, direct-counting.

Nhưng bản v3.3 chưa nên thông qua nguyên xi vì còn 4 lỗ hổng phải vá trước:

  1. filter_expression raw SQL là điểm rủi ro lớn nhất: vi phạm tinh thần Zero Trust, dễ mở cửa injection / bypass / khó audit.
  2. M2M “bao trùm hết” đúng ở tầng mô hình, nhưng chưa đủ ở tầng ràng buộc và semantics: temporal edges, ordered edges, weighted/payload edges cần chuẩn hóa.
  3. Scale 100M + 20K reports không thể chỉ nói “PG CUBE/ROLLUP là đủ”: cần chiến lược nóng/lạnh, indexing, partition, materialized refresh, template compilation.
  4. Quy trình AI tự tạo pivot cần guardrails vận hành: confidence gate, dedupe, approval path, observability.

Vì vậy: hướng đúng, cấu trúc đúng, triết lý đúng — nhưng cần sửa kỹ thuật trước khi triển khai production.


2) Trả lời 10 câu hỏi

Q1. 3 bài toán có đủ không?

Phán quyết: CẦN SỬA

Kết luận

Ba bài toán hiện tại đủ để làm khung nền:

  • BT1 M2M = nguyên liệu / graph nền
  • BT2 Pivot = trích xuất / tổng hợp / ma trận
  • BT3 Dây điện = hiển thị / kết nối / delivery

Đây là decomposition đúng hơn kiến trúc cũ vì tách rõ:

  • dữ liệu gốc
  • cơ chế suy ra câu trả lời
  • lớp truyền/hiển thị

Điểm cần sửa

Thiếu một lớp diễn đạt rõ tên là governance của derived artifacts. Hiện nó đang rải trong BT2 + lifecycle + Điều 31. Thực tế pivot/view/template không chỉ là “trích xuất”, mà còn có:

  • birth
  • dedupe
  • dependency tracking
  • deprecate/retire
  • health check

Không cần thêm “bài toán thứ 4”, nhưng nên bổ sung 1 đoạn trong BT2 nói rõ:

Pivot/View không chỉ là output query mà là governed derived entities, chịu birth/lifecycle/dependency/health như entity khác.

Kết luận ngắn

  • Không thiếu bài toán nền tảng mới.
  • Có thiếu ranh giới diễn đạt giữa “trích xuất” và “quản trị đối tượng dẫn xuất”.

Q2. M2M bao trùm M2O/O2M/1:1 — đúng không?

Phán quyết: CẦN SỬA

Kết luận

Đúng ở tầng biểu diễn logic. M2O, O2M, 1:1 đều có thể biểu diễn thành các dòng quan hệ trong junction/edge tables. Đây là tư duy đúng theo graph thinking và phù hợp Điều 24 (labels là quan hệ), Điều 0-G (birth trước), Điều 21 (DB quản lý chính nó).

Nhưng chưa đủ ở 4 edge cases

  1. Quan hệ có thứ tự: ví dụ step 1 → step 2 → step 3. Cần position / sequence_no.
  2. Quan hệ có hiệu lực thời gian: cần valid_from, valid_to.
  3. Quan hệ có trọng số hoặc payload: confidence, quantity, direction, rule source.
  4. Quan hệ cần FK cứng để chặn sai ngay lúc ghi: junction biểu diễn được, nhưng native FK vẫn cần cho integrity write-time ở một số bảng lõi.

Sửa đề xuất

Không đổi triết lý “M2M bao trùm”, nhưng thêm tuyên bố sau:

M2M là mô hình canonical ở tầng đọc/quản trị/phân tích, không cấm dùng native FK ở tầng ghi cho integrity cứng. Universal edge phải hỗ trợ temporal/order/payload metadata.

Kết luận ngắn

  • Đúng về kiến trúc.
  • Chưa đủ về semantics và write-time integrity nếu nói tuyệt đối.

Q3. pivot_count() + VIEW templates: performance cho trăm triệu records?

Phán quyết: CẦN SỬA

Kết luận

Khả thi, nhưng chỉ khi có chiến lược 4 tầng hiệu năng. Nếu chỉ dựa vào dynamic SQL + direct count cho mọi query thì sẽ sớm nghẽn khi số reports tăng mạnh.

Cần bổ sung bắt buộc

1. Phân tầng query nóng/lạnh

  • Cold / ad hoc: chạy direct COUNT/GROUP BY trên raw tables.
  • Warm / frequent: dùng VIEW chuẩn + index đúng cột.
  • Hot / dashboard: materialized view / pre-aggregated table refresh theo lịch hoặc theo event.

2. Indexing theo template, không theo cảm tính

Mỗi template phải khai báo:

  • source table/view
  • filter columns
  • group dimensions
  • join keys
  • expected selectivity
  • recommended index DDL

3. Partitioning

Với dữ liệu lớn theo thời gian, cần chuẩn hóa rule:

  • bảng sự kiện lớn → partition by month/quarter
  • pivot template có chiều thời gian → bắt buộc pushdown theo partition key

4. “Compile once” cho dynamic SQL

pivot_definitions 20K dòng là ổn ở metadata layer, nhưng runtime cần:

  • validate definition
  • normalize AST / JSON spec
  • generate SQL chuẩn
  • cache plan metadata, không cache count result

Quan trọng

Tôi đồng ý bỏ cache count result. Nhưng không đồng ý bỏ mọi lớp tối ưu hóa. Bỏ cache số đếm không đồng nghĩa bỏ materialized views cho các báo cáo nóng.

Kết luận ngắn

  • 100M records: có thể làm được trên PG.
  • Muốn thật sự đạt thì Điều 26 phải thêm chiến lược hot/warm/cold + index/partition/materialize.

Q4. source_object = table HOẶC VIEW — an toàn? filter_expression raw SQL WHERE. Injection risk?

Phán quyết: TỪ CHỐI trạng thái hiện tại

Kết luận

source_objecttable hoặc view thì ổn. Nhưng filter_expressionraw SQL WHERE text thì không đạt chuẩn Zero Trust.

Vì sao không đạt

  • AI tạo filter text rất dễ sinh SQL không an toàn hoặc quá rộng.
  • Rất khó audit / normalize / dedupe.
  • Dễ bị lẫn business rule với SQL syntax cụ thể.
  • Khó enforce allowlist cột/hàm.
  • Mở cửa cho UNION, subquery, function nguy hiểm nếu parser lỏng.

Sửa bắt buộc

Thay raw SQL bằng pivot DSL / JSON spec có whitelist. Ví dụ:

{
  "filters": [
    {"field": "status", "op": "=", "value": "active"},
    {"field": "species_code", "op": "in", "value": ["SPE-DOT","SPE-TPL"]}
  ],
  "group_by": ["species_code", "status"],
  "metrics": [{"type": "count", "field": "*"}]
}

Sau đó PG function hoặc generator mới biên dịch sang SQL từ whitelist:

  • allowlist fields
  • allowlist operators
  • allowlist joins
  • deny functions/subqueries tự do
  • SECURITY DEFINER nhưng chạy dưới read-only schema scope

Kết luận ngắn

  • Table/view: ĐỒNG Ý
  • Raw SQL filter: KHÔNG ĐỒNG Ý

Q5. Quy trình trả lời câu hỏi 4 bước có khả thi?

Phán quyết: CẦN SỬA

Kết luận

Quy trình 4 bước là đúng hướng và phù hợp mục tiêu tự động hóa:

  1. tìm pivot
  2. phân tích
  3. tạo nếu chưa có
  4. trả lời

Failure modes bắt buộc phải khóa

  1. AI hiểu sai ý định người dùng → tạo pivot sai.
  2. Tạo trùng pivot đã tồn tại nhưng diễn đạt khác tên.
  3. Chọn sai template cho câu hỏi cần recursive/time-series/cohort.
  4. Cardinality explosion do group theo quá nhiều chiều.
  5. Semantic drift: cùng câu hỏi nhưng 2 AI tạo 2 định nghĩa khác nhau.

Guardrails đề xuất

  • Bước 1.5: semantic dedupe trên pivot_definitions
  • confidence threshold: thấp thì không auto-create, trả về “đề xuất pivot” để user xác nhận
  • template fit check: mỗi template phải công bố scope + anti-scope
  • cost guard: ước lượng số group, số rows scan, thời gian dự kiến
  • approval mode cho lần đầu; các lần sau dùng lại tự động

Kết luận ngắn

  • Khả thi.
  • Nhưng muốn production-safe thì phải thêm confidence / dedupe / cost / approval.

Q6. Pivot view = phân tử (SPE-PIV): đúng phân loại?

Phán quyết: ĐỒNG Ý

Kết luận

Tôi đồng ý pivot view là thực thể dẫn xuất được quản trị, và phân loại nó như một phân tử là hợp lý hơn là nguyên tử.

Lý do

Pivot view là tổ hợp của:

  • source
  • filter
  • group
  • metrics
  • template

Nó không phải raw atom. Nó là đối tượng ghép từ nhiều thành phần nên xếp vào molecule là hợp logic với Điều 0-B.

Điều cần ghi rõ thêm

Pivot view là governed derived molecule, không phải business entity gốc. Do đó lifecycle nên có:

  • draft
  • active
  • deprecated
  • retired
  • thêm trường superseded_by nếu có pivot tốt hơn thay thế

Kết luận ngắn

  • Đồng ý phân loại SPE-PIV.
  • Nên bổ sung “derived molecule” để tránh nhầm với molecule nghiệp vụ.

Q7. ~30 VIEW templates phủ 80% câu hỏi: thực tế?

Phán quyết: CẦN SỬA

Kết luận

Có thể đúng cho phase đầu, nhưng tôi chấm thực tế hơn là:

  • 60–80% nếu phạm vi là registry/system/admin analytics
  • khó đạt 80% nếu mở rộng sâu sang business analytics / time-series / funnel

Các pattern quan trọng đang thiếu hoặc cần gọi tên rõ

  1. Temporal / as-of: “tại ngày X”, “30 ngày gần nhất”
  2. Age bucket / SLA bucket: overdue, aging, delay bands
  3. Distinct / unique count
  4. Top-N / ranking / Pareto
  5. Cohort / conversion funnel
  6. Recursive hierarchy / path expansion
  7. Exception / mismatch / reconciliation
  8. Snapshot vs current state

Tiêu chí khi nào cần template mới

Chỉ tạo template mới nếu đồng thời thỏa 3 điều:

  1. lặp lại >= 3 lần
  2. không fit template hiện có bằng config sạch
  3. có thể mô tả bằng input/output contract rõ ràng

Điều này bám sát Điều 28: thiết kế chuẩn 1 lần, khai báo để dùng lại.

Kết luận ngắn

  • Template-first là đúng.
  • Con số 30 phủ 80% cần xem là mục tiêu, không phải chân lý.

Q8. Tương thích 34 Điều?

Phán quyết: CẦN SỬA

Tổng quan

Điều 26 mới rất tương thích về hướng với Hiến pháp, đặc biệt:

  • Điều 7: PG-first, Directus dẫn, Nuxt hiển thị
  • Điều 28: template/config-driven
  • Điều 0-G: birth-first
  • Điều 24: labels là chiều filter tự nhiên
  • Điều 21: DB quản lý chính nó
  • Điều 31: chuyển vai trò sang giám sát dây điện thay vì ôm counting data
  • §0-S/0-M/0-L: single provider, đo lường, dùng lại

Các điểm có nguy cơ vi phạm nếu giữ nguyên wording hiện tại

1. Điều 7 / SSOT

Raw SQL filter làm suy yếu SSOT vì logic không còn ở metadata chuẩn hóa mà rơi vào text tự do.

2. Điều 28

Nếu mỗi câu hỏi khó lại phải thêm template mới thủ công mà không có tiêu chí chuẩn, sẽ tái diễn “code theo case”.

3. §0-M (Đo lường)

Phải nói rõ cái gì là measurement runtime, cái gì là report query. Nếu nhập nhằng, hệ thống lại quay về verify chồng verify.

4. Điều 13 (Danh mục sống)

pivot_definitions, templates, registry_groups, source views đều là danh mục sống. Điều 26 nên tuyên bố rõ các catalog này là managed registries.

Kết luận ngắn

  • Tương thích ở cấp chiến lược.
  • Chưa đủ chặt ở cấp luật thực thi.

Q9. 3 điều cần sửa nhẹ — đồng ý?

Phán quyết: ĐỒNG Ý

1. Điều 19: orphan mở rộng = thiếu M2M

Đồng ý. Orphan không chỉ là thiếu code/birth record, mà còn là thiếu quan hệ tối thiểu để entity “nhìn thấy được” trong graph hệ thống.

2. Điều 21: Layer 5 thêm ma trận đa chiều

Đồng ý. Layer 5 đang là nơi biểu diễn hệ thống tự nhìn chính nó. Ma trận đa chiều phù hợp vì cho phép biểu diễn “quan hệ thật” theo nhiều trục mà không phải vẽ thủ công.

3. Điều 28: TPL-002 DirectusMatrix = khuôn mẫu ma trận

Đồng ý mạnh. Đây là mảnh then chốt để tránh quay lại viết code lẻ cho từng matrix/report.

Điều kiện đi kèm

Ba sửa này nên được cập nhật đồng bộ với:

  • species / registry registration cho SPE-PIV và TPL-002
  • lifecycle rules
  • duplicate detection rules cho pivot/template

Q10. Hội đồng sai gì trong 3 tuần qua? Lần này khác gì?

Phán quyết: ĐỒNG Ý với chẩn đoán, CẦN SỬA cách kiểm soát

Hội đồng đã sai ở đâu

  1. Nhầm bài toán data với bài toán infrastructure. Count đúng là bài toán SQL trực tiếp, không phải bài toán verify nhiều tầng.

  2. Tin vào “đếm cache rồi verify cache” hơn là đếm trực tiếp từ nguồn chân lý. Tức là rời xa PG = chân lý.

  3. Chấp nhận framework tổng quát quá sớm khi bản chất bài toán quá đơn giản. Tạo ra kiến trúc đẹp trên giấy nhưng lệch khỏi nguyên lý Excel/Pivot rất cơ bản.

  4. Không đóng đinh ranh giới trách nhiệm giữa Điều 26 và Điều 31. Khi đó Điều 31 bị kéo sang giám sát số liệu, thay vì giám sát dây điện.

Lần này khác gì

  1. Count quay về raw source → đúng hơn theo SSOT.
  2. Metadata-first → scale bằng khai báo, không scale bằng code.
  3. Derived artifacts được quản trị như entity → giảm bóng ma.
  4. Điều 31 thu hẹp về infra integrity → ranh giới sáng hơn.

Nhưng để không lặp lại thất bại cũ, bắt buộc thêm 4 khóa an toàn

  • không raw SQL tự do
  • không auto-create pivot khi confidence thấp
  • không bỏ chiến lược hiệu năng nóng/lạnh
  • không bỏ dependency + dedupe + lifecycle cho pivot artifacts

3) Đánh giá tổng thể

KẾT LUẬN: CẦN SỬA

Vì sao chưa thể THÔNG QUA ngay

Tôi không bác hướng đi. Thực ra tôi xem đây là bản sửa đúng nhất từ trước tới nay cho bài toán Registries & Counting.

Nhưng 4 rủi ro dưới đây là release blockers:

  1. filter_expression raw SQL
  2. thiếu semantics chuẩn cho M2M nâng cao
  3. thiếu chiến lược performance rõ cho 100M + 20K reports
  4. thiếu guardrails cho AI auto-create pivot

4) Sửa gì, ở đâu

A. Sửa trong Điều 26 draft v3.3

A1. Thay filter_expression raw SQL

Ở: §II BT2 + schema pivot_definitions

Sửa thành:

  • filter_spec jsonb
  • group_spec jsonb
  • metric_spec jsonb
  • generator compile sang SQL từ whitelist

A2. Bổ sung chuẩn quan hệ M2M nâng cao

Ở: §II BT1

Thêm fields chuẩn cho edge model:

  • relation_type
  • position
  • valid_from
  • valid_to
  • weight
  • metadata jsonb
  • source_of_truth

A3. Bổ sung chiến lược hiệu năng

Ở: §II BT2 hoặc §VI môi trường PG

Thêm 1 mục riêng:

  • ad hoc = raw count
  • frequent = indexed view
  • hot dashboard = materialized/pre-agg
  • large event tables = partitioning

A4. Bổ sung guardrails cho AI flow

Ở: §III.2

Thêm bước:

  • semantic dedupe
  • cost estimation
  • confidence threshold
  • approval-on-first-create
  • fallback: trả lời “chưa đủ chắc để tự tạo”

B. Sửa trong các luật liên quan

B1. Điều 19

Mở rộng orphan = entity thiếu birth hoặc thiếu quan hệ tối thiểu bắt buộc.

B2. Điều 21

Layer 5 ghi rõ “ma trận đa chiều là hình thức biểu diễn chuẩn cho derived relational views”.

B3. Điều 28

Thêm TPL-002 DirectusMatrix + tiêu chí khi sinh template mới.

B4. Điều 31

Ghi rõ biên giới:

  • Điều 31 giám sát infra/path/wiring/liveness
  • Điều 26 chịu trách nhiệm semantics của counting/reporting

5) Đề xuất wording tổng thể

Đề nghị đổi tinh thần từ:

“0 code cho mọi thay đổi”

thành:

“Mặc định thay đổi bằng metadata; code mới chỉ xuất hiện khi sinh template mới hoặc capability mới ở tầng platform.”

Câu này thực tế hơn, đúng Điều 28 hơn, và tránh biến khẩu hiệu thành điểm phản công sau này.


6) Kết luận cuối cùng cho Founder / Orchestrator

Phán quyết cuối:

  • Hướng đi Pivot-first: ĐỒNG Ý
  • Triển khai v3.3 nguyên xi: KHÔNG
  • Trạng thái đúng: CẦN SỬA rồi triển khai ngay vòng sau

3 điều tôi ủng hộ mạnh nhất

  1. Đếm trực tiếp từ nguồn chân lý
  2. Pivot/view trở thành governed entities
  3. Điều 31 quay về đúng vai trò giám sát dây điện

3 điều phải sửa trước khi merge

  1. bỏ raw SQL filter
  2. thêm performance strategy chuẩn
  3. thêm AI guardrails + M2M advanced semantics

7) Bài học hội đồng

Bài học không phải là “đừng làm framework”. Bài học là:

Framework chỉ đúng khi nó làm bài toán đơn giản hơn, không phải khi nó biến COUNT(*) thành một hệ thần kinh 7 tầng.

Lần này bản Điều 26 mới đã quay về đúng bản chất hơn. Việc còn lại là khóa chặt 4 lỗ hổng triển khai để không lặp lại vòng xoáy over-engineering dưới một hình thức mới.


Ký tên: Incomex Hội đồng AI (GPT) Nguồn chuẩn dùng để đối chiếu: Hiến pháp 34 Điều + Điều 26 v3.3 + Điều 0-G + Điều 24 + Điều 28 + Điều 31 + audit S167H/S169