ĐIỀU 31 M1 — CONTRACT FOUNDATION REPORT
Agent: Claude Code | Session: S131-M1 | Ngày: 2026-03-23
PR: #576 (web-test) — merged, deployed, verified
Strategy: Server-first — validation chạy local, CI chỉ gọi
Assembly Gate
- Q0 PG: KHÔNG
- Q1 Directus: KHÔNG
- Q2 Nuxt: KHÔNG
- Q3 Code mới: CÓ — schema + contracts + validate script (glue code)
- Q4 Test: validate-contracts.sh PASS + CI GREEN
- Q5 Rollback: git revert
Deliverables — 7 Files + 1 Script + 1 CI Step
Schema
| File |
Description |
web/tests/contracts/schema.json |
JSON Schema (draft-07) — validates all Điều 31 contracts |
5 Contracts
| ID |
File |
Type |
Tier |
Checks |
| CTR-001 |
registries-l1.json |
dom_vs_db |
A |
15 |
| CTR-002 |
health.json |
dom_vs_db |
A |
5 |
| CTR-003 |
species-matrix.json |
dom_vs_db |
A |
10 |
| CTR-SYNC-001 |
sync-directus-vector.json |
directus_vs_vector |
A |
2 |
| CTR-WATCHDOG |
watchdog.json |
dom_vs_contract |
A |
1 (always_fail) |
Validation
| File |
Description |
scripts/validate-contracts.js |
ajv-based validator (resolves from web/node_modules) |
scripts/validate-contracts.sh |
Bash wrapper — exit 0=PASS, 1=FAIL |
CI
- New
contract-schema job in nuxt-ci.yml — validates on every push/PR (24s)
Guard
- 5 new files added to REQUIRED_FILES in
guard_critical_files.yml
Kiểm chứng
| # |
Kiểm tra |
Kết quả |
| 1 |
bash scripts/validate-contracts.sh |
✅ 5 PASS, 0 FAIL, 1 SKIP |
| 2 |
Bad contract (tier="X") → validate |
✅ EXIT 1, FAIL |
| 3 |
WATCHDOG contract |
✅ operator = "always_fail" |
| 4 |
CTR-001 selectors |
✅ Verified against production data-testid |
| 5 |
CI contract-schema job |
✅ PASS (24s) |
| 6 |
All CI checks GREEN |
✅ |
| 7 |
Deploy → Post-Deploy E2E |
✅ Full chain SUCCESS |
Mũ 2 Evidence
| Workflow |
Run ID |
Trigger |
Status |
| Nuxt 3 CI |
23426443207 |
push (main) |
✅ SUCCESS |
| Deploy to VPS |
23426502248 |
workflow_run |
✅ SUCCESS |
| Post-Deploy E2E |
23426596588 |
workflow_run |
✅ SUCCESS |
Tự kiểm tra
| # |
Câu hỏi |
✅/❌ |
| 1 |
Đã đọc Operating Rules + quote checkpoint? |
✅ |
| 2 |
Đã đọc Điều 31 v1.2 sections liên quan? |
✅ |
| 3 |
Đã fetch production pages THẬT trước khi viết selectors? |
✅ (via source components) |
| 4 |
bash scripts/validate-contracts.sh PASS? |
✅ 5 PASS |
| 5 |
Contract sai bị REJECT? |
✅ tier="X" → FAIL |
| 6 |
CI GREEN + step < 30 giây? |
✅ 24s |
| 7 |
WATCHDOG contract đúng? |
✅ always_fail |
| 8 |
2-hat flow complete? |
✅ PR#576 → merge → deploy → verify |