COUNCIL REVIEW Vòng 2 — Điều 35 & Điều 36 — GPT
COUNCIL REVIEW VÒNG 2 — GPT
XÁC NHẬN ĐÃ ĐỌC
- Hiến pháp v4.0.2
- 13 luật liên quan
- Điều 35 v4.0
- Điều 36 v3.0
- Báo cáo vòng 1 (GPT + Gemini)
Phương pháp vòng 2: không lặp lại khen/chê vòng 1. Tôi chỉ xác nhận cái gì đã fix đúng, và tập trung vào điểm gãy tiềm năng khi triển khai thật trên production.
ĐIỀU 35 v4.0
Câu 1-4: Xác nhận sửa + vấn đề mới còn lại
-
Đã fix đúng 4 điểm đỏ vòng 1:
§6.1 bước 2đã tách DOT A auto-approve / DOT B pending Desktop duyệt → đúng hơn Điều 32 và Tuyên ngôn ②. 🟢§5.3đã hạ naming convention xuống mức gợi ý, không còn tự suy đoán dependency → đúng NT-9. 🟢§6.2đã khóa vòng đời retire bằngmove file sang bin/dot/retired/ + xoá cron entryvà§5.1 check 9 retired alive→ fix trúng lỗ hổng vòng 1. 🟢§6.1 bước 3đã nói rõ AI agent viết file trong PR, không giả vờ DOT tự sinh file nữa. 🟢§2.1 last_executedđã chuyển từ metadata trang trí sang nghĩa vụ runtime. 🟢
-
Vấn đề mới còn lại, nhưng chưa tới mức thiết kế lại:
§2.3 dot_coverage_required.domainvà§3.1 dot_domains.codechưa nói rõ domain lưu kiểu nào: gốc (monitoring) hay phân cấp đầy đủ (monitoring.dot,governance.approval). Nếu seed sai format,UNIQUE(domain, operation)vẫn pass nhưng coverage metrics sẽ lệch. 🔴§5.3 dot-dot-registerauto-classify theo pattern, nhưng§3.2 operationcó bảng đối ứng khá giàu (create/update/delete/scan/health/propose/execute/refresh/migrate/backup/report/register), trong khi naming table ở§5.3mới cover một phần. Kết quả: DOT mới có thể luôn rơi vàocoverage_status='partial', làm coverage baseline nhiễu. 🟡§8ghi “Điều 31 ⚠️ cần update thêm §DOT monitoring” nghĩa là chính luật đang tự thừa nhận còn dependency ngược chưa hoàn tất. Về pháp lý, điều này chưa chặn ban hành, nhưng về triển khai production nó là một gap monitor-of-monitor. 🟡
★ Câu 5: ĐIỂM GÃY TRIỂN KHAI
5A. Thứ tự
-
Phải tạo
dot_domainstrước khi enforce FK trêndot_tools.domain.- Căn cứ:
§2.1 dot_tools.domain FK → dot_domains.code,§2.2 dot_domains. - Nếu thêm field
domain+ FK trước khi seeddot_domains, dữ liệu backfill đang là text tự do sẽ fail ngay lúc attach constraint. 🔴
- Căn cứ:
-
Phải seed
dot_domainstrước, rồi mới backfilldot_tools.domain, rồi mới ADD CONSTRAINT FK.- Nếu đi thứ tự ngược:
ALTER TABLE ADD CONSTRAINTsẽ fail vì 154 DOT hiện có chưa được chuẩn hóa domain. 🔴
- Nếu đi thứ tự ngược:
-
Phải tạo
dot_coverage_requiredsau khi thống nhất format domain ởdot_domains.- Nếu chưa chốt domain là
monitoringhaymonitoring.dot, coverage table seed trước sẽ tạo mẫu số sai; về sau phải migrate lại toàn bộ coverage metrics. 🟡
- Nếu chưa chốt domain là
-
Phải thêm 10 fields vào
dot_toolstrước khi chạydot-dot-healthv4.0.- Căn cứ:
§5.1dùngtier,paired_dot,last_executed,coverage_status,file_path. - Scanner mới mà chạy trên schema cũ sẽ fail hoặc false positive hàng loạt. 🔴
- Căn cứ:
-
Phải backfill
tier/trigger_type/file_path/status/domain/operationtối thiểu trước khi dùng các metricscoverage_pct/paired_pct/auto_pct.- Căn cứ:
§4,§5.2. - Nếu không, dashboard ngày đầu chỉ phản ánh “thiếu metadata”, không phản ánh chất lượng DOT thật. 🟡
- Căn cứ:
-
Điều 36 Phase 1 nên đi trước Điều 35 Phase 2.
- Vì
§2.4của Điều 35 yêu cầu DOT phải khai target collections; nếu collection governance chưa chuẩn hóa group/protocol theo Điều 36, target metadata dễ lệch. 🟡
- Vì
5B. Chicken-and-egg (gà-trứng)
-
dot-dot-registertự đăng ký DOT mới, nhưng bản thândot-dot-registerphải được đăng ký trước.- Căn cứ:
§5.3,§6.1 bước 4. - Đây là bootstrap problem. Luật chưa nói rõ “seed DOT nền tảng đầu tiên bằng migration one-time” hay “pre-registered bootstrap set”. Nếu không nói rõ, CLI agent sẽ hỏi: ai đăng ký
dot-dot-registerđầu tiên? 🔴
- Căn cứ:
-
dot-dot-healthdùng để kiểm DOT chưa đủ, nhưng DOT health itself cũng cầnpaired_dot,domain,target_collections,last_executed.- Nếu bộ DOT nền tảng không được seed tay một lần có kiểm soát, scanner sẽ tự quét chính nó như orphan/partial ngay từ ngày đầu. 🟡
-
entity_dependenciestarget của DOT mới phải do agent khai báo ở§6.1 bước 5, nhưng agent chỉ biết target sau khi luật collection/protocol ổn định.- Với DOT tạo mới phục vụ Điều 36, target có thể là collections chưa sinh ra hoặc chưa có group/registry ổn định. Đây là vòng lặp mềm giữa Điều 35 và 36. 🟡
-
Desktop verify
coverage_status → completeở§6.1 bước 9phụ thuộc data từdot-dot-healthvà target dependencies đã đủ, nhưng dependencies không auto-suy đoán nữa.- Nghĩa là nếu agent quên bước 5, DOT sẽ mãi partial. Đây không sai thiết kế, nhưng là chicken-and-egg vận hành: “chưa đủ metadata thì không complete; chưa complete thì coverage dashboard nhiễu”. 🟡
5C. Production safety
-
Backfill 154 DOT phải chia 3 pha transaction-safe, không làm 1 migration lớn.
- Pha 1: add nullable fields, chưa FK.
- Pha 2: seed
dot_domains, backfill data. - Pha 3: attach FK/CHECK cứng + bật scanners.
- Nếu làm thẳng 1 lần, lỗi giữa chừng sẽ để
dot_toolsở trạng thái nửa cũ nửa mới, scanner v4.0 sẽ báo loạn. 🔴
-
paired_dotself-FK có thể fail khi backfill cặp A/B nếu insert/update sai thứ tự.- Giải pháp triển khai phải là add nullable trước, backfill sau. Nếu CLI agent cố enforce ngay
NOT NULLcho tier B hoặc set pair theo thứ tự file scan, sẽ dính lỗi dữ liệu vòng tròn. 🔴
- Giải pháp triển khai phải là add nullable trước, backfill sau. Nếu CLI agent cố enforce ngay
-
last_executedlà field bắt buộc runtime, nhưng luật chưa nói migration giá trị cũ sẽ là gì.- Nếu để NULL hết cho 154 DOT rồi bật
§5.1 check 6 stale, toàn bộ cron DOT cũ có thể bị gắn stale ngay ngày đầu. Nên cần grace period hoặc baseline seed. 🟡
- Nếu để NULL hết cho 154 DOT rồi bật
-
retired alivecheck 9 đòi file phải move sangbin/dot/retired/và cron phải xoá.- Nếu script retire fail ở bước xoá cron nhưng move file đã xong, runtime vẫn có cron gọi path cũ và sinh lỗi. Luật đúng nhưng chưa mô tả verify xoá cron bằng nguồn chân lý nào. 🔴
-
Report path
reports/dot-dot-health-YYYY-MM-DD.jsontrên 1 VPS $8 nếu không có log rotation / retention sẽ phình file.- Không phải lỗi kiến trúc, nhưng là điểm gãy vận hành production sau vài tháng. 🟡
5D. Edge cases
-
DOT utility / helper / one-off migration script thuộc domain nào?
§3.1có 11 domain gốc, nhưng không có domain “utility” hoặc “migration.oneoff”. Nếu ép vào domain gần nhất, metrics coverage sẽ méo; nếu để partial mãi, dashboard mất ý nghĩa. 🔴
-
Một DOT có nhiều operation thật sự thì lưu gì?
§2.1 operationlà 1 field text,§3.2giả định 1 operation chính. Nhưng nhiều DOT thực tế vừascanvừareport, hoặcexecute+backup. Luật chưa nói chọn operation chính hay cho phép khai secondary operation trongextra_metadata. 🟡
-
Một DOT có nhiều target collections khác loại (read + write + verify) thì
entity_dependenciesrelation_type nào?- Điều 35 chỉ nói “khai báo target_collections → INSERT entity_dependencies”, nhưng không chuẩn hóa relation_type cho DOT. Điều 8 hiện có
uses, requires, extends, displays, triggers, chưa thật khớpreads/writes/verifies. 🟡
- Điều 35 chỉ nói “khai báo target_collections → INSERT entity_dependencies”, nhưng không chuẩn hóa relation_type cho DOT. Điều 8 hiện có
-
trigger_type='manual'+ operation cần tự động ở check 7 sẽ fail theo luật, nhưng chưa có danh sách operation nào “cần tự động” là SSOT.- Nếu không có allowlist/denylist, scanner phải suy luận, lại vi phạm NT-9. 🔴
5E. Tương tác giữa 2 luật
-
Hai bảng FK độc lập
dot_domainsvàcollection_groupslà đúng, không cần gộp.- Nhưng thiếu một bảng/mapping chéo cho biết domain DOT nào thường được phép tác động group collection nào. Ví dụ
collection.protocoltác độngGRP-REGISTRY/GRP-GOVERNANCE/GRP-BUSINESS, cònmonitoring.dotchủ yếu đọc. Không có mapping này, target_collections vẫn khai báo được nhưng khó audit “có hợp lý không”. 🟡
- Nhưng thiếu một bảng/mapping chéo cho biết domain DOT nào thường được phép tác động group collection nào. Ví dụ
-
dot-dot-healthvàdot-collection-healthcùng ghiapproval_requests.- Không thấy conflict schema-level, nhưng có nguy cơ APR trùng nội dung. Ví dụ collection mới tạo thiếu species: collection-health tạo APR; đồng thời DOT create chưa complete → dot-health tạo APR khác. Nếu không có dedupe key ở Điều 32, backlog APR sẽ phình đôi. 🔴
-
Cơ chế evolving fields ở Điều 35
§6.3và Điều 36§2.2giống nhau về pattern, nhưng tách là đúng.- Không nên gộp bảng ngay, vì đối tượng và scope khác nhau. Điểm gãy không nằm ở “tách hay gộp”, mà ở chỗ cả hai cùng tạo APR + sync. Cần bảo đảm scheduler/order không đá nhau trên production. 🟢
-
Điều 35 phụ thuộc Điều 36 ở mức target chuẩn hóa; Điều 36 phụ thuộc Điều 35 ở mức 3 DOT collection.
- Đây là phụ thuộc vòng, nên phải giải bằng bootstrap set seed tay có kiểm soát chứ không chờ hai luật tự cứu nhau. 🔴
5F. Đo lường thành công
-
Phase 1 DONE của Điều 35 không thể đo bằng coverage tổng thể ngay.
- Vì
§5.3auto-classify chỉ là gợi ý vàcoverage_status='partial'cho mọi DOT auto-classified. - Tiêu chí DONE phase 1 nên là:
- 100%
dot_toolscó đủ 10 fields mới - 100% record có
tier,file_path,status - 100% domain backfill hợp lệ với FK
dot_domains - 0 DOT B active mà thiếu
paired_dot - 0 DOT retired nhưng file còn sống trong
bin/dot/
- 100%
- Nếu dùng
coverage_pctlàm success metric chính ở phase 1, sẽ đánh giá sai. 🔴
- Vì
-
Coverage % “đủ” cho phase 1 nên đặt theo domain đã seed, không phải toàn hệ.
- Ví dụ:
monitoring,collection,pivot,governancecoverage đã có mẫu số rõ → target 80% hợp lý. - Toàn hệ 154 DOT mà coverage table mới seed một phần thì % tổng không có giá trị. 🟡
- Ví dụ:
-
Nếu metrics không đạt, phải tách 3 lớp nguyên nhân:
- luật sai (domain taxonomy/operation taxonomy sai)
- seed sai (dot_coverage_required thiếu ô required)
- triển khai sai (backfill hoặc dependency thiếu)
- Luật chưa viết rõ cách phân loại lỗi metrics này. 🟡
ĐIỀU 36 v3.0
Câu 1-4: Xác nhận sửa + vấn đề mới còn lại
-
Đã fix đúng 5 điểm vòng 1:
§2.2thêmapplies_to_groups[],exclude_groups[],exclude_patterns[]+§2.1 sync_field_standards boolean→ xử lý đúng lỗ hổng scope. 🟢§2.2 Tier 1tăng từ 6 lên 8 fields vớiclassification + owner→ fix đúng thiếu Điều 3. 🟢§7tách legacy thành 3 pha → thực tế hơn. 🟢§3 bước 8thêmpolymorphic→ lấp lỗ hổng log/audit. 🟢§3tách11 → 11a-11e+ verify timeout/retry ở bước 12 → rõ hơn nhiều. 🟢
-
Vấn đề mới còn lại:
§2.2vẫn là 2 tiers trong schema, nhưng tiêu đề nói “3 tầng minimum fields”. Nội dung mô tả 3 tầng ở vòng trước nay không còn nhất quán: table chỉ chotier IN (1,2). Đây là mâu thuẫn tài liệu dễ làm agent hiểu sai. 🔴§3ghi “PROTOCOL 14 BƯỚC” nhưng bảng đánh số thực chất là 12 mục hiển thị (1-12, trong đó11a-11elà phân rã). Nếu không quy ước rõ “14 logical steps”, agent test checklist có thể đếm lệch. 🟡§5.2 check 8 Missing birth_registry entrytrên collection-level hơi mơ hồ: birth registry là cho records hay cho collection entity? Nếu ý là collection phải có birth record trong registry quản trị thì cần gọi đúng tên/đúng scope để tránh lẫn với record-level birth trigger. 🟡
★ Câu 5: ĐIỂM GÃY TRIỂN KHAI
5A. Thứ tự
-
Phải seed
collection_groupstrước mọi thứ khác.- Căn cứ:
§2.1,§3 bước 2,§3 bước 10 collection_registry.group FK → collection_groups. - Nếu chưa có group seed mà đã chạy
dot-collection-create, bước 2 và 10 sẽ fail do FK. 🔴
- Căn cứ:
-
Phải tạo
collection_field_standardssau khi chốt taxonomy groups vàsync_field_standards.- Vì
§2.2scope logic dựa vào group và flags của group. Seed standards trước, groups sau → scope evaluation không ổn định. 🔴
- Vì
-
Phải rollout
dot-collection-healthtrướcdot-collection-field-synctrên legacy.- Nếu sync chạy trước baseline health, agent sẽ thêm field hàng loạt mà chưa biết collection nào thuộc scope thật, collection nào nên skip. Health-first mới ra baseline compliance %. 🔴
-
Phải chuẩn hóa scope trước khi insert Tier 2 records.
name_en,description,sortlà tier 2; nếu insert sớm trước khi xác nhậnGRP-CMS/GRP-SYSTEM/GRP-LOG/GRP-JUNCTION=false, dot-sync có thể chạm nhầm collections nhạy cảm. 🔴
-
Bước 11a-11e phải đi theo thứ tự cụ thể:
- 11a
entity_speciestrước 11bbirth_registryverify - 11c auto-code trigger trước khi insert test record verify
- 11d permissions trước 12 verify Directus/Nuxt
- 11e pivot_definitions trước 12 verify tab Pivot
- Luật đã tách bước nhưng chưa ghi rõ thứ tự nội bộ. 🟡
- 11a
-
Điều 36 Phase 1 nên đi trước Điều 35 Phase 2.
- Khi collections đã có group + field standards + protocol health, Điều 35 mới audit target_collections và coverage thật có nghĩa. 🟡
5B. Chicken-and-egg (gà-trứng)
-
dot-collection-createlà DOT B, nhưng chính DOT này cũng phải được quản trị theo Điều 35.- Nghĩa là muốn tạo collection theo luật 36, trước hết phải có bootstrap DOT set của Điều 35. Đây là dependency vòng, không giải được chỉ bằng text hiện tại. Cần bootstrap seed. 🔴
-
collection_groupsvàcollection_field_standardslà collections/bảng nền, nhưng lại chưa có protocol trước khi chính chúng tồn tại.- Ai tạo 2 SSOT tables đầu tiên? Nếu dùng
dot-collection-create, lại vướng vì tool đó cần group đã tồn tại. Đây là bootstrap problem giống Điều 35. 🔴
- Ai tạo 2 SSOT tables đầu tiên? Nếu dùng
-
dot-collection-healthdùng để phát hiện legacy thiếucollection_registry/meta_catalog/species, nhưng để nó chạy đúng cầncollection_groupsvà standards đã seed.- Nghĩa là scanner phụ thuộc seed tay lần đầu. Điều này không sai, nhưng luật chưa nói rõ “bootstrap manual one-time allowed qua migration PR”. 🟡
-
Bước 12 verify KB (
search_knowledge tìm thấy, timeout 30s, retry 1 lần) phụ thuộc Agent Data sync.- Nhưng Agent Data hiện có lúc degraded. Nếu collection đã đúng ở PG/Directus mà KB chưa kịp sync, protocol có thể fail dù bản chất collection ổn. Đây là chicken-and-egg giữa “đồng bộ tri thức” và “hoàn thành collection”. 🔴
5C. Production safety
-
Backfill 138 collections phải cấm chạy sync tự động toàn bộ ngay sau khi seed standards.
- Căn cứ:
§7đã tách 3 pha. Nhưng nếu CLI agent seed xong rồi bật event triggerdot-collection-field-sync, các Tier 2 standards hiện có sẽ có thể chạy ngay trên diện rộng. Cần kill-switch hoặc modedry_run/report_onlycho phase baseline. 🔴
- Căn cứ:
-
Thêm 8 Tier 1 fields vào collection hiện hữu qua Directus API có thể fail nửa vời.
- Ví dụ thêm được
classification, fail ởowner; collection sẽ ở trạng thái nửa compliant, health báo đỏ hàng loạt. Cần idempotent + per-field retry + per-collection checkpoint rõ theo Điều 11. 🔴
- Ví dụ thêm được
-
GRP-SYSTEMvàGRP-CMSnói “CẤM chạm”, nhưng legacy mapping group nếu sai có thể khiến sync chạm nhầm.- Trình tự an toàn phải là: seed groups → gán group cho collections → review sample → mới bật field sync. Nếu bật sync trước khi group mapping đúng,
sync_field_standards=falsekhông cứu được. 🔴
- Trình tự an toàn phải là: seed groups → gán group cho collections → review sample → mới bật field sync. Nếu bật sync trước khi group mapping đúng,
-
Bước 11c auto-code trigger dùng template
NEW.code := PREFIX + id.- Nếu collection dùng UUID hoặc sequence chưa ổn định, template này sẽ fail hoặc tạo code lệch. Điều 36 nói “giữ nguyên v2.0” nhưng chưa nêu điều kiện áp dụng template. 🟡
-
Bước 12 verify KB/Nuxt có timeout/retry, nhưng chưa nói rollback khi KB fail còn 4 tầng kia pass.
- Nếu cứ mark FAIL toàn protocol, agent có thể retry tạo lại và sinh APR/metadata trùng. Cần quy định “4 tầng lõi pass, KB pending-sync = warning hay fail?” 🔴
5D. Edge cases
-
Collection thuộc 2 groups?
§2.1 collection_groups+collection_registry.grouphiện là 1 FK đơn. Luật mặc định 1 collection = 1 group. Điều này tốt cho đơn giản hóa, nhưng với collection vừa governance vừa business support thì agent sẽ hỏi chọn nhóm nào. Cần nguyên tắc: group = vai trò chính, phân loại phụ qua species/labels. Nếu không nêu, người triển khai sẽ lúng túng. 🟡
-
Bỏ một Tier 2 field sau khi đã sync cho 100 collections.
§2.2mới mô tả thêm field, chưa mô tả retire field chuẩn. Theo Luật Bảo toàn/Điều 32, không được drop tùy tiện. Cần lifecycle cho field standard: active → deprecated → retired, và sync bỏ scope chứ không drop ngay. 🔴
-
Polymorphic relation (
entity_type + entity_id) không có FK cứng.- Đây là edge case hợp lý cho log/audit, nhưng muốn tuân thủ Tuyên ngôn ② thì phải có scanner verify existence. Điều 36 thêm type mới nhưng chưa thêm check mới trong
dot-collection-healthcho polymorphic integrity. 🔴
- Đây là edge case hợp lý cho log/audit, nhưng muốn tuân thủ Tuyên ngôn ② thì phải có scanner verify existence. Điều 36 thêm type mới nhưng chưa thêm check mới trong
-
Junction groups
sync_field_standards=falseđúng, nhưng vẫn cần fields tối thiểu riêng cho junction.- Hiện luật nói “junction chỉ cần FK, không cần full fields”, nhưng chưa có junction-standard tối thiểu thành văn. Agent sẽ không biết junction có cần
code/status/date_createdhay chỉ 2 FK. 🟡
- Hiện luật nói “junction chỉ cần FK, không cần full fields”, nhưng chưa có junction-standard tối thiểu thành văn. Agent sẽ không biết junction có cần
5E. Tương tác giữa 2 luật
-
Điều 35 và 36 đều ghi APR vào
approval_requests; overlap là có thật.- Ví dụ collection mới thiếu
meta_catalog/species/pivot_definitions(§5.2 checks 5,6,7,10của Điều 36) đồng thời DOT tạo collection còncoverage_status='partial'(Điều 35 §6.1 bước 9). Cùng một nguyên nhân có thể sinh 2 APR khác nhau. Nếu Điều 32 chưa có dedupe key theo(request_type, entity_code, issue_signature), production queue sẽ trùng. 🔴
- Ví dụ collection mới thiếu
-
dot_domainsvàcollection_groupsđang song song nhưng chưa có rule cross-map.- Điều 35 target là collection; Điều 36 phân nhóm collection; nhưng chưa có chuẩn “domain X được phép tác động group Y”. Điều này làm Desktop review phải tự suy luận, không machine-check được. 🟡
-
Evolving fields cho DOT và Collections tách riêng là đúng.
- Không thấy điểm gãy ở việc tách. Điểm gãy là cả hai cơ chế đều là event-driven sync; nếu cùng bắn nhiều changes một lúc trên VPS nhỏ, cần queue/throttle. Luật chưa nói gì về giới hạn batch hay rate limit. 🟡
-
dot-collection-health(Điều 36) là một DOT cần hoàn chỉnh metadata theo Điều 35 trước, nhưng Điều 35 phase 1 lại bảo “backfill metadata KHÔNG dependencies”.- Nghĩa là nếu triển khai đúng chữ Phase 1 của Điều 35, một DOT lõi của Điều 36 có thể chưa có dependencies đủ để pass check 8 no target. Hai phase phải xen đúng thứ tự, không thể tách cứng. 🔴
5F. Đo lường thành công
-
DONE Phase 1 của Điều 36 nên đo bằng baseline + pilot, không phải full compliance 138 collections.
- Tiêu chí nên là:
collection_groupsvàcollection_field_standardsđã tồn tại + seed xong- 100% collections được gán group hợp lệ
sync_field_standards=falseđúng cho 4 nhóm skip (GRP-CMS, GRP-LOG, GRP-JUNCTION, GRP-SYSTEM)dot-collection-healthchạy baseline thành công, cócompliance_pct- pilot governed collections pass >90% checks lõi
- Nếu đặt target “138 collections compliant” cho phase 1 thì sẽ fail giả. 🔴
- Tiêu chí nên là:
-
Compliance % phải tách theo group và governance_role.
- Một con số tổng cho 138 collections không có nghĩa vì groups skip scope khác nhau.
GRP-JUNCTIONkhông nên bị chấm bằng rubric nhưGRP-BUSINESS. 🟡
- Một con số tổng cho 138 collections không có nghĩa vì groups skip scope khác nhau.
-
Nếu metrics không đạt, luật cần chỉ rõ đường truy lỗi:
- group mapping sai
- standards scope sai
- sync bug
- health rubric sai
- Agent Data/Nuxt verify chậm
- Hiện luật chưa có “failure taxonomy” cho compliance_pct. 🟡
TÓM TẮT
-
Điểm gãy nghiêm trọng nhất:
- Bootstrap gà-trứng cho cả hai luật: ai seed
dot_domains,collection_groups,collection_field_standards, và đăng ký DOT nền tảng đầu tiên. - Thứ tự migrate/FK/backfill nếu làm sai sẽ fail production ngay.
- APR trùng lặp giữa hai health scanners nếu Điều 32 chưa có dedupe signature.
- Phase metrics đặt sai sẽ làm đội triển khai tưởng luật hỏng trong khi chỉ là baseline chưa phân pha.
- Bootstrap gà-trứng cho cả hai luật: ai seed
-
Khuyến nghị thứ tự triển khai cụ thể:
- Seed bootstrap one-time qua PR/migration có review:
collection_groups,collection_field_standards,dot_domains,dot_coverage_required, bootstrap DOT set (dot-dot-register,dot-dot-health,dot-collection-health,dot-collection-field-sync,dot-collection-create) - Add nullable fields vào
dot_tools→ backfill → attach FK/CHECK - Gán group cho 138 collections → review sample → bật
sync_field_standards=falseđúng nhóm skip - Chạy health-only baseline cho cả DOT và collections
- Sửa pilot trên governed scope
- Sau khi baseline sạch mới bật event-driven sync và coverage metrics làm KPI chính
- Seed bootstrap one-time qua PR/migration có review:
-
Phán quyết: CẦN SỬA TIẾP
Lý do phán quyết
Không còn lỗi tư duy lớn như vòng 1. Hai luật đã sửa đúng các điểm đỏ cũ. Nhưng ở góc độ triển khai thật, vẫn còn 4 điểm gãy production-level phải khóa trước khi giao agent làm:
- Bootstrap path phải được viết thành luật/quy trình rõ ràng
- Migration order phải được đóng đinh
- APR dedupe ở Điều 32 phải có trước khi hai health scanners cùng chạy
- Phase success metrics phải được định nghĩa theo baseline/pilot, không dùng % tổng quá sớm