Audit v3.0 — Codex — Code Quality & Assembly Compliance
AUDIT REPORT — CODEX — 2026-03-19
Scope: Architecture v3.0 post-completion (Agent 2 brief: A-F) Method: Cross-check GitHub main (web-test) + production runtime (VPS) + PostgreSQL/Directus metadata
TÓM TẮT
- A. PG Objects Inventory: PASS
- B. Directus Configuration: WARN
- C. Nuxt Code Review: PASS
- D. Health Check Script Review: PASS
- E. Git Integrity: WARN
- F. Assembly Compliance: WARN
Overall: PASS có điều kiện (không có lỗi blocking mới, nhưng còn governance/ops drift cần xử lý).
A) PG OBJECTS INVENTORY — PASS
Evidence
- Trigger inventory:
SELECT tgname, tgrelid::regclass AS table_name, tgenabled
FROM pg_trigger
WHERE tgname LIKE 'trg_%'
ORDER BY tgname;
Result: 108 triggers, all tgenabled = 'O'.
- Disabled trigger check:
SELECT COUNT(*) AS disabled_trg_count
FROM pg_trigger
WHERE tgname LIKE 'trg_%' AND tgenabled <> 'O';
Result: 0.
- Function inventory:
SELECT routine_name
FROM information_schema.routines
WHERE routine_schema='public' AND routine_type='FUNCTION'
ORDER BY routine_name;
Result: 71 functions present (including lifecycle/rules/reconciliation functions).
- DRV-001..007 existence:
SELECT d.code, d.name AS registered_function,
CASE WHEN r.routine_name IS NULL THEN 'MISSING' ELSE 'OK' END AS function_exists
FROM derived_objects_registry d
LEFT JOIN information_schema.routines r
ON r.routine_schema='public' AND r.routine_name=d.name
WHERE d.code BETWEEN 'DRV-001' AND 'DRV-007'
ORDER BY d.code;
Result: DRV-001 → DRV-007 all OK.
Conclusion
- Không phát hiện trigger/function bị thiếu hay disabled ngoài ý muốn.
B) DIRECTUS CONFIGURATION — WARN
Evidence
- AUTO-ID flows inactive (13/13):
SELECT name, status, trigger
FROM directus_flows
WHERE lower(name) LIKE '%auto-id%'
ORDER BY name;
Result: 13 flow [AUTO-ID] ... đều inactive.
- Summary:
SELECT status, COUNT(*)
FROM directus_flows
WHERE lower(name) LIKE '%auto-id%'
GROUP BY status;
Result: inactive = 13.
- New collections status config (S142):
SELECT collection, field, interface, options
FROM directus_fields
WHERE collection IN ('workflow_steps','trigger_registry','task_comments')
AND field='status';
Result: cả 3 collection có status dropdown draft/active/deprecated/retired.
- DB column check:
SELECT table_name, column_default, is_nullable
FROM information_schema.columns
WHERE table_name IN ('workflow_steps','trigger_registry','task_comments')
AND column_name='status';
Result: cả 3 có default 'active', NOT NULL.
- API read access check:
curl https://directus.incomexsaigoncorp.vn/items/universal_edges?limit=1
curl https://directus.incomexsaigoncorp.vn/items/lifecycle_log?limit=1
curl https://directus.incomexsaigoncorp.vn/items/universal_rule_violations?limit=1
HTTP: 200/200/200.
Finding (WARN)
- API read access đang mở cho 3 collection governance (
universal_edges,lifecycle_log,universal_rule_violations). Nếu đây không chủ đích cho public/API role thì là risk lộ telemetry nội bộ.
C) NUXT CODE REVIEW — PASS
Source reviewed from
web-test@main(GitHub), không dùng checkout cũ trên VPS làm chuẩn.
Evidence
useUniversalEdges.tsexists and readsuniversal_edgesvia Directus:
web/composables/useUniversalEdges.tslines 34-97- Query
readItems('universal_edges'...)lines 46-57.
[entityType]/[id].vueuses composable:
web/pages/knowledge/registries/[entityType]/[id].vueline 80:const { data: layer5 } = useUniversalEdges(...)
- DiscoveryView uses composable and 6 headings:
web/components/registries/DiscoveryView.vueline 105:const { data: edges } = useUniversalEdges(...)- 6 headings đúng thứ tự:
1. Thuộc ai(line 412)2. Chứa gì(line 425)3. Dùng ai(line 438)4. Ai dùng tôi(line 451)5. Cùng nhóm(line 464)6. Tương tự(line 487)
- No direct PG access from Nuxt source files audited (Directus SDK path).
Note
- DiscoveryView vẫn giữ nhánh
entity_dependencieslegacy cho backward compatibility (không blocking, nhưng có nguy cơ drift nếu song song lâu dài).
D) HEALTH CHECK SCRIPT REVIEW — PASS
Evidence
-
Health-check workflow file on main is
.github/workflows/sync-check.yml(không phảihealth-check.yml). -
CHECK 11 logic (blocking):
sync-check.ymllines 379-429- Blocking condition:
- lines 422-424: nếu
BLOCKING_VIOLATIONS > 0thìexit 1.
- lines 422-424: nếu
- CHECK 13 logic (INFO mode):
sync-check.ymllines 496-515- Không block deploy, report reconciliation info.
scripts/smoke-test.shexists and executable logic valid.
- Runtime execution (2026-03-19) result: PASS 17 | FAIL 0.
- Latest Health Check workflow runs:
gh run list -R Huyen1974/web-test --workflow 'Health Check' --limit 3- 3 gần nhất đều
conclusion: success.
E) GIT INTEGRITY — WARN
Evidence
- PR merge status:
- PR #549:
MERGED, commitf3bd1f1..., checks success. - PR #550:
MERGED, commit2a5e6f4..., checks success.
- Direct push check:
- GraphQL query 40 commits gần nhất trên
web-test/main. - Kết quả: tất cả có
associatedPullRequests.totalCount = 1.
- Docker compose parity:
web-test@main: infra/docker/docker-compose.ymlsha256/opt/incomex/docker/docker-compose.ymlsha256- Result: identical hash (
08826106...2a2caebc).
Finding (WARN)
- Checkout source tại VPS
/opt/incomex/docker/nuxt-repođang ở commit cũf706da7(PR #493 era), trong khi main hiện là2a5e6f4. - Dù runtime artifact đang reflect code mới, checkout cũ trên VPS dễ gây audit/deploy nhầm nguồn.
F) ASSEMBLY COMPLIANCE — WARN
Evidence
- Assembly chain đúng ở runtime:
- Nuxt đọc qua Directus API/composable (
useUniversalEdges) thay vì query PG trực tiếp.
- Secrets hygiene:
- Không thấy hardcoded credential trong các file audit trọng yếu (
useUniversalEdges.ts,[id].vue,DiscoveryView.vue,sync-check.yml,smoke-test.sh). - VPS
.envpermission:600 root:root. - Key format check (không lộ value): hợp lệ.
- Governance exposure:
- Public read
200cholifecycle_logvàuniversal_rule_violations.
Finding (WARN)
- Cần xác nhận chính sách: các collection governance có thực sự intended public-read hay chỉ dành API role nội bộ.
KHUYẾN NGHỊ
- (High) Dọn hoặc tự động sync checkout
/opt/incomex/docker/nuxt-repotheomainđể tránh sai nguồn khi điều tra production. - (High) Chốt policy quyền đọc cho
lifecycle_log+universal_rule_violations; nếu không cần public thì giảm scope. - (Medium) Lập kế hoạch retire nhánh
entity_dependencieslegacy trong DiscoveryView khi coverageuniversal_edgesđạt ngưỡng. - (Medium) Đặt naming thống nhất workflow (
health-check.ymlalias hoặc doc mapping) để tránh nhầmsync-check.ymlvs health-check.
FINAL VERDICT
Architecture v3.0 (scope Agent 2) đạt trạng thái vận hành, các thành phần cốt lõi A/C/D đã khớp mục tiêu thiết kế và CI evidence cho PR #549/#550 là sạch. Không phát hiện lỗi blocking mới.
Các điểm còn lại là governance/ops WARN (source checkout drift trên VPS và phạm vi read access của dữ liệu governance).