KB-5A9B
B\u00e1o c\u00e1o Review AI Council V\u00f2ng 3 \u2014 Gemini \u2014 Ki\u1ebfn tr\u00fac v3.0
8 min read Revision 1
architecturev3round3reviewcouncilgemini
B\u00e1o c\u00e1o Review AI Council V\u00f2ng 3 \u2014 Gemini \u2014 Ki\u1ebfn tr\u00fac v3.0
Ng\u00e0y: 2026-03-19 | Phi\u00ean: S136 Reviewer: Gemini CLI (Senior Architect) Tr\u1ea1ng th\u00e1i: APPROVE WITH CHANGES
I. C\u00c2U H\u1eceI CHUNG (C1-C5)
C1. Xung \u0111\u1ed9t v\u1edbi Hi\u1ebfn ph\u00e1p hi\u1ec7n h\u00e0nh
- \u0110i\u1ec1u 27 vs \u0110i\u1ec1u 0: Kh\u00f4ng xung \u0111\u1ed9t. Tr\u1ea1ng th\u00e1i
draftv\u00e0retiredb\u1ed5 sung r\u1ea5t t\u1ed1t cho \u0111\u1ecbnh ngh\u0129a th\u1ef1c th\u1ec3 \u0111\u01b0\u1ee3c qu\u1ea3n tr\u1ecb. - \u0110i\u1ec1u 28 vs \u0110i\u1ec1u 0-B: Kh\u00f4ng xung \u0111\u1ed9t. Vi\u1ec7c t\u00e1ch bi\u1ec7t Integrity (FK) v\u00e0 Visibility (Edges) l\u00e0 gi\u1ea3i ph\u00e1p th\u00f4ng minh \u0111\u1ec3 gi\u1eef logic c\u1ea5u t\u1ea1o ph\u00e2n t\u1ea7ng m\u00e0 v\u1eabn th\u1ea5y \u0111\u01b0\u1ee3c to\u00e0n c\u1ea3nh.
- \u0110i\u1ec1u 29 vs \u0110i\u1ec1u 23: C\u00f3 m\u1ed9t \u0111i\u1ec3m c\u1ea7n l\u01b0u \u00fd: Rule 7 (Visibility) \u0111ang d\u1ef1a v\u00ao DOT scan. C\u1ea7n \u0111\u1ea3m b\u1ea3o k\u1ebft qu\u1ea3 DOT scan \u0111\u01b0\u1ee3c insert t\u1ef1 \u0111\u1ed9ng v\u00ao
universal_rule_violations\u0111\u1ec3 kh\u00f4ng b\u1ecb m\u1ed3 c\u00f4i.
C2. L\u1ed7 h\u1ed5ng Logic trong Schema
- Missing Column: Trong
universal_edges, n\u00ean th\u00eambusiness_hash(gi\u1ed1ng entity) \u0111\u1ec3 ch\u1ed1ng tr\u00f9ng quan h\u1ec7 t\u1ea1i t\u1ea7ng metadata. - Race Condition: Khi sync FK \u2192 universal_edges qua trigger, n\u1ebfu m\u1ed9t transaction s\u1eeda c\u1ea3 FK v\u00e0 Edge th\u1ee7 c\u00f4ng (semantic), c\u00f3 th\u1ec3 g\u00e2y ghi \u0111\u00e8. Mitigation: Sync trigger ch\u1ec8 ho\u1ea1t \u0111\u1ed9ng n\u1ebfu
source_infoLIKE 'FK_SYNC%'. - Index Strategy: Thi\u1ebfu index tr\u00ean
universal_rule_violations(entity_code)cho vi\u1ec7c truy v\u1ea5n nhanh l\u1ed7i c\u1ee7a 1 entity c\u1ee5 th\u1ec3.
C3. Assembly First Compliance
- Th\u00e0nh ph\u1ea7n d\u01b0 th\u1eeba: B\u1ea3ng
birth_rejection_logc\u00f3 th\u1ec3 g\u1ed9p v\u00aosystem_issues(Điều 22) v\u1edbi m\u1ed9t category ri\u00eang \u0111\u1ec3 gi\u1ea3m s\u1ed1 l\u01b0\u1ee3ng b\u1ea3ng. - PG vs Code: Vi\u1ec7c generate
codePREFIX-NNN n\u00ean l\u00e0m ho\u00e0n to\u00e0n trong PG (Sequence + Trigger) nh\u01b0 \u0111\u00e3 th\u1ed1ng nh\u1ea5t, kh\u00f4ng n\u00ean \u0111\u1ec3 DOT tool t\u1ef1 sinh ID.
C4. End-to-End Scenario: ATM-100
- T\u1ea1o ATM-100: User ch\u1ea1y DOT tool \u2192 Pre-Birth Check (PG) OK \u2192
lifecycle_logghi 'draft' \u2192 Birth Pipeline ghi 'active' \u2192universal_edgesghi origin = ATM creation. - G\u1eafn v\u00ao MOL-020: FK trong
molecule_membersupdate \u2192 Trigger sync sanguniversal_edges(edge_type = 'BELONGS_TO'). - D\u00f9ng trong PRD-005: Nguy\u00ean t\u1eafc b\u1eafc c\u1ea7u hi\u1ec3n th\u1ecb qua query
universal_edges(PRD \u2192 MOL \u2192 ATM). - Retire ATM-100: User chuy\u1ec3n sang 'deprecated' OK. Chuy\u1ec3n sang 'retired' \u2192 Retire Gate qu\u00e9t
universal_edgesth\u1ea5y MOL-020 \u0111ang d\u00f9ng \u2192 BLOCK. Ph\u1ea3i g\u1ee1 ATM-100 kh\u1ecfi MOL-020 m\u1edbi cho retire. K\u1ebft qu\u1ea3: Logic ch\u1eb7t ch\u1ebd, kh\u00f4ng c\u00f3 gap.
C5. R\u1ee7i ro l\u1edbn nh\u1ea5t
- R\u1ee7i ro: "Data Gravity Hell". Khi
universal_edgesv\u00e0universal_rule_violationsph\u00ecnh to (h\u00e0ng tri\u1ec7u records), vi\u1ec7c scan realtime cho m\u1edbi insert s\u1ebd l\u00e0m DB ch\u1eadm l\u1ea1i. - Mitigation: D\u00f9ng Asynchronous Refresh (Materialized Views) cho c\u00e1c rules kh\u00f4ng y\u00eau c\u1ea7u strict realtime. CH\u1ec8 gi\u1eef Identity v\u00e0 Uniqueness l\u00e0 strict trigger.
II. C\u00c2U H\u1eceI RI\u00caNG (M1-M5)
M1. SQL Views cho 10 Rules
- So s\u00e1nh: SQL trong d\u1ef0 th\u1ea3o t\u1ed5ng qu\u00e1t h\u01a1n (d\u00f9ng
measurement_source), trong khi SQL v\u00f2ng 2 c\u1ee7a t\u00f4i c\u1ee5 th\u1ec3 cho t\u1eebng b\u1ea3ng. - \u0110\u00e1nh gi\u00e1: B\u1ea3n d\u1ef0 th\u1ea3o t\u1ed1t h\u01a1n v\u00ec n\u00f3 cho ph\u00e9p th\u00eam rule m\u00e0 kh\u00f4ng c\u1ea7n s\u1eeda function ch\u00ednh (Open-Closed Principle).
M2. Universal Matrix Table vs universal_edges
- Capture \u0111\u1ee7 ch\u01b0a? \u0110\u00e3 capture \u0111\u1ee7 90% \u00fd \u0111\u1ed3.
- Thi\u1ebfu: C\u1ea7n th\u00eam c\u1ed9t
depth(integer) trong view discovery \u0111\u1ec3 h\u1ed7 tr\u1ee3 recursive query nhanh h\u01a1n m\u00e0 kh\u00f4ng c\u1ea7n t\u00ednh l\u1ea1i m\u1ed7i l\u1ea7n.
M3. State Machine \u2014 Transition Validation
- Thi\u1ebfu: Transition 'archive' cho c\u00e1c th\u1ef1c th\u1ec3 qu\u00e1 c\u0169 kh\u00f4ng d\u00f9ng nh\u01b0ng c\u1ea7n gi\u1eef l\u1ea1i cho audit (kh\u00e1c v\u1edbi retired l\u00e0 ngh\u1ec9 h\u01b0u).
- Validation: Logic merge/split hi\u1ec7n t\u1ea1i m\u1edbi ch\u1ec9 l\u00e0 m\u00f4 t\u1ea3. C\u1ea7n c\u1ee5 th\u1ec3 ho\u00e1:
mergeph\u1ea3i ensurebusiness_hashc\u1ee7a entity m\u1edbi ph\u1ea3i cover \u0111\u01b0\u1ee3c c\u1ea3 2 th\u1ef1c th\u1ec3 c\u0169.
M4. FK \u2192 Edge Sync \u2014 Race Condition & Performance
- Optimization: V\u1edbi bulk update, PG trigger n\u00ean d\u00f9ng
FOR EACH STATEMENTthay v\u00ecFOR EACH ROWkhi c\u00f3 th\u1ec3, ho\u1eb7c d\u00f9ng m\u1ed9t b\u1ea3ng queue t\u1ea1m th\u1eddi \u0111\u1ec3 sync batch qua worker. - Th\u1ef1c t\u1ebf: V\u1edbi 100 records,
FOR EACH ROWv\u1eabn ch\u1ea1y t\u1ed1t trong 1 transaction (< 500ms). Ch\u01b0a c\u1ea7n lo l\u1eafng cho \u0111\u1ebfn khi bulk > 10,000.
M5. Birth Signal \u2014 Auto-Registration
- \u0110\u00e1nh gi\u00e1: \u0110\u00e3 \u0111\u1ea1t \u0111\u01b0\u1ee3c \u00fd \u0111\u1ed3 auto-registration. Vi\u1ec7c d\u00f9ng
_dot_originl\u00e0m b\u1eb1ng ch\u1ee9ng "ngu\u1ed3n g\u1ed1c sinh" l\u00e0 r\u1ea5t ch\u1eb7t ch\u1ebd. - C\u1ea7n th\u00eam: M\u1ed9t dashboard "Birth Monitoring" hi\u1ec3n th\u1ecb realtime c\u00e1c th\u1ef1c th\u1ec3 v\u1eeba sinh ra trong 24h qua \u0111\u1ec3 con ng\u01b0\u1eddi gi\u00e1m s\u00e1t t\u1ed5ng th\u1ec3.
III. DANH S\u00c1CH THAY \u0110\u1ed4I \u0110\u1ec0 XU\u1ea4T
1. Th\u00eam c\u1ed9t business_hash v\u00e0o universal_edges
ALTER TABLE universal_edges ADD COLUMN business_hash TEXT;
CREATE UNIQUE INDEX uq_edges_business_hash ON universal_edges(business_hash) WHERE status = 'active';
2. T\u00edch h\u1ee3p birth_rejection_log v\u00e0o system_issues
Thay v\u00ec b\u1ea3ng ri\u00eang, d\u00f9ng b\u1ea3ng hi\u1ec7n c\u00f3 v\u1edbi issue_type = 'birth_rejection'.
3. B\u1ed5 sung tr\u1ea1ng th\u00e1i 'archived'
ALTER TABLE lifecycle_log DROP CONSTRAINT lifecycle_log_to_status_check;
ALTER TABLE lifecycle_log ADD CONSTRAINT lifecycle_log_to_status_check
CHECK (to_status IN ('draft', 'active', 'deprecated', 'retired', 'merged', 'archived'));
IV. \u0110\u00c1NH GI\u00c1 T\u1ed4NG TH\u1ec2
\u2705 APPROVE WITH CHANGES
B\u1ea3n d\u1ef1 th\u1ea3o r\u1ea5t ch\u1ea5t l\u01b0\u1ee3ng, bi\u1ebfn c\u00e1c nguy\u00ean t\u1eafc v\u00f4 h\u00ecnh th\u00e0nh c\u01a1 ch\u1ebf th\u1ef1c thi v\u1eadt l\u00fd ch\u1eb7t ch\u1ebd. Sau khi t\u00edch h\u1ee3p 3 \u0111i\u1ec3m s\u1eeda \u0111\u1ec1 xu\u1ea5t tr\u00ean, h\u1ec7 th\u1ed1ng s\u1ebd s\u1eb5n s\u00e0ng cho Phase 1.
B\u1ea3n review v3.0 \u2014 AI Council Member: Gemini CLI