18b — DOT-119 Repair Execution Pack (Rev 3)
18b — DOT-119 Repair Execution Pack
Date: 2026-05-05 | Rev 3 Status: PASS as umbrella/gated execution design — GPT approved rev3. Controlling: 18a rev4 FINAL (design PASS) Nature: Umbrella gated execution design. Mỗi phase = 1 Claude Code prompt riêng biệt, soạn SAU khi phase trước PASS. 18b KHÔNG phải prompt dispatch. Rev 3 patches: umbrella reframe, P0 KB report, DDL tool preflight, HC defer default, script exact-content contract, exit codes align 18a, IU dry-run only, rollback dependency check, manual provenance. Scope: DDL metadata + seed + DOT-119 script rewrite + HC. Không IU trigger (18c).
§0. Channel / Authority Matrix
| Hành động | Luật chủ quản | Kênh/Path |
|---|---|---|
| ALTER TABLE collection_registry (DDL 3 cols) | Đ36 — Collection Protocol (schema owner) | SQL DDL trong transaction. Preflight: check DOT schema/migration tool trước. |
| UPDATE collection_registry (seed metadata) | Đ36 — Registry metadata path | SQL UPDATE trong transaction, verify distribution |
| DOT-119 script rewrite | Đ35 — DOT Governance (tool lifecycle) | VPS bash: atomic write (temp → syntax check → no-clobber → chmod → mv) |
| HC registration (system_health_checks) | Đ43 — Context Graph / Health-check path | DEFER by default. Chỉ execute nếu P3 chứng minh legal path. |
| HC KB query doc | Đ43 — KB authorized path | Agent Data upload_document |
| Birth strategy semantics | Đ4 — Birth Process Law | Đã chốt 18a rev4, không execute thêm |
| fn_birth_registry_auto | Đ4 — KHÔNG THUỘC 18b scope | Không sửa. Chỉ hash verify. |
§1. Scope + Nature
18b là umbrella execution design, không phải prompt chạy một lần.
Workflow:
- 18b PASS → soạn P0 runtime prompt → dispatch Claude Code.
- P0 report PASS → soạn P1 runtime prompt → dispatch.
- P1 report PASS → Opus đọc v1 source + viết exact script → soạn P2 runtime prompt → dispatch.
- P2 report PASS → soạn P3 runtime prompt → dispatch (hoặc defer HC).
Mỗi phase prompt soạn riêng, sau khi phase trước PASS. Opus không soạn P1 prompt trước khi P0 report được duyệt.
DO: DDL 3 cols, seed birth identity metadata, rewrite DOT-119 script, register HC (nếu path hợp pháp). DO NOT: Không IU trigger (18c). Không sửa fn_birth_registry_auto. Không tạo IU rows. Không Pack 2B. Không Directus manual field insert. Agent không tự viết script từ pseudocode.
§2. Exit Code Contract (align 18a rev4)
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Usage/help (no mode specified) |
| 10 | Unclassified — collection chưa phân loại |
| 11 | Invalid metadata — strategy/column mismatch hoặc missing |
| 12 | No-clobber — script chứa function replacement |
| 13 | Fallback missing — fn v2 synthetic fallback không detect được |
| 14 | Trigger mismatch — existing trigger không khớp expected |
| 20 | Execution failed / rollback |
| 30 | Permission / tooling error |
§3. 18b-P0 — Read-only Preflight + Seed-mapping Report
Mục tiêu: Chỉ khảo sát. Không sửa gì. Output = mapping report trên KB.
P0-Step 1: Baselines
-- 0a: 3 fields chưa tồn tại
SELECT column_name FROM information_schema.columns
WHERE table_name = 'collection_registry'
AND column_name IN ('birth_code_strategy','birth_code_column','birth_identity_source');
-- Expected: 0 rows. Nếu > 0 → STOP.
-- 0b: fn_birth_registry_auto v2 hash
SELECT md5(pg_get_functiondef('fn_birth_registry_auto'::regproc)) AS fn_hash_baseline;
-- 0c: Birth trigger count
SELECT count(*) AS current_birth_triggers FROM pg_trigger
WHERE tgname LIKE 'trg_birth_%' AND NOT tgisinternal;
-- 0d: Birth registry count
SELECT count(*) AS current_birth_records FROM birth_registry;
-- 0e: DOT-119 script metadata
-- bash: ls -la /opt/incomex/dot/bin/dot-birth-trigger-setup
-- bash: md5sum /opt/incomex/dot/bin/dot-birth-trigger-setup
-- bash: wc -l /opt/incomex/dot/bin/dot-birth-trigger-setup
P0-Step 2: Script inspection
grep -c 'CREATE OR REPLACE FUNCTION fn_birth_registry_auto' \
/opt/incomex/dot/bin/dot-birth-trigger-setup
# Expected: > 0 (v1 stale). Nếu 0 → STOP.
P0-Step 3: Schema/migration tool preflight
SELECT code, name, status, operation, file_path
FROM dot_tools
WHERE code ILIKE '%SCHEMA%'
OR code ILIKE '%MIGR%'
OR code ILIKE '%ALTER%'
OR name ILIKE '%schema%'
OR name ILIKE '%migration%'
OR name ILIKE '%alter%'
ORDER BY code;
-- Tool found → STOP chờ decision. No tool → raw DDL authorized per Đ36.
P0-Step 4: Seed-mapping table
SELECT
tgrelid::regclass AS table_name,
tgname AS trigger_name,
tgfoid::regproc AS function_name,
pg_get_triggerdef(oid) AS trigger_def
FROM pg_trigger
WHERE tgname LIKE 'trg_birth_%' AND NOT tgisinternal
ORDER BY table_name;
Mapping rules + manual classifications + provenance: xem 18b rev3 full content.
P0 Gate
Report path: knowledge/dev/laws/dieu44-trien-khai/reports/dot119-repair-p0-readonly-mapping-report.md
HARD STOP sau upload.
§4–§6: P1 (DDL+seed), P2 (script rewrite), P3 (HC)
Xem 18b rev3 full content. Mỗi phase soạn prompt riêng sau phase trước PASS.
§7–§11: Rollback, STOP conditions, Report requirements, Hard boundaries, Hard stop
Xem 18b rev3 full content.
18b rev 3 | 2026-05-05 | Opus 4.6 | PASS GPT review. Umbrella gated design. P0→P1→P2→P3. Chờ P0 dispatch.