KB-439E
Doc 08 — Law / Forbidden / Self-Review (2026-05-29)
5 min read Revision 1
iuself-reviewlawforbiddencompliance2026-05-29
Doc 08 — Law / Forbidden / Self-Review
(2026-05-29)
1. Law compliance
| Law | Compliance |
|---|---|
| Đ30 (reversibility) | Both commits reversible (restore original def / DELETE row), authored before commit (Doc 07). Dress-rehearsed BEGIN..ROLLBACK before COMMIT. |
| Đ31 (integrity/detect-first) | Vector PG↔Qdrant reconciled (149==149); recommended dot_iu_vector_verify → system_issues on divergence. P0 fix is idempotent + best-effort (no silent corruption). |
| Đ32 (approval) | No production review_decision minted; mutating DOT wrappers + dot_tools integration deferred to APR. No self-approval. |
| Đ35 (DOT) | New read-only DOT registered in the catalog; mutating wrappers specified with paired Tier-A; dot_tools integration plan respects trg_dot_enforce_paired (not bypassed). |
| Đ38/39 (IU/KG/vector) | No vector write; vector_sync_enabled stayed false (never-flip); per-IU isolation re-confirmed; relation-assert pack honors provenance-or-quarantine. |
| Đ45 (queue/event) | No event delivery/job execution; emit/route/dlq wrappers deferred (gated); signal-not-data preserved. |
| NT9 ("not sure = stop") | Traced exact root cause + deterministic doc_code mapping + canary proof before committing the core-function change. |
2. Forbidden-list compliance
| Forbidden | Status |
|---|---|
| Workflow design registry / MOWD | ✅ none |
| 4 Mothers runtime / UI / Nuxt | ✅ none |
| Directus mutation | ✅ none (read-only GET via directus container only) |
| Qdrant / vector write | ✅ none (GET only) |
vector_sync_enabled=true |
✅ stayed false |
allow_no_review_decision=true |
✅ stayed false |
| Production-law IU unsafe mutation | ✅ none (only metadata-tag-capable, gated off) |
| Law enactment | ✅ none |
| Hidden second SoT | ✅ none (catalog canonical; dot_tools by reference) |
| Gate left open | ✅ canary gate-flip was in-tx, ROLLBACK; exit all_safe=true |
| Event delivery / job execution | ✅ none |
| Self-approval | ✅ none |
| Idle transaction left behind | ✅ idle-in-tx = 0 at exit |
3. Acceptance-criteria check
| Criterion | Met? |
|---|---|
| P0 autowire fixed or exact blocker proven | ✅ FIXED (committed, gated default-off, canary-proven) |
| DOT completeness improved or packs ready | ✅ 1 live (reconstruct) + 7 exact packs |
| Vector reconciliation via read-only Qdrant or exact blocker | ✅ achieved (149==149, GREEN) |
| A–F regression green/pilot-green | ✅ PILOT-GREEN |
| No unsafe mutation | ✅ 2 additive reversible commits; zero data corruption |
| Workflow/MOWD not implemented | ✅ deferred |
Verdict: PASS.
4. Self-review — honesty notes & limitations
- P0 fix is default-OFF. I gated the autowire on the existing governable
three_axis_auto_refresh_enabledrather than forcing it on. Rationale: respect the pilot's deliberate freeze; don't unilaterally change cut behaviour. This closes the structural bug (the wire now exists and the gate is now meaningful for cuts) and proves the enabled path, but post-cut auto-materialization only runs once a human opens that gate. If the intent was "always-on," that is a one-line activation (Doc 07 §5) — flagged for governance. - Mutating DOT wrappers not auto-registered. Registering Tier-B without a Tier-A companion would be half-Đ35-governance; deferred to a paired macro under APR. Honest trade-off: coverage stayed ~16/22 wrapped + 7 specified.
dot_toolsnot mutated. The constitutional SSOT has a paired-enforce trigger; safe integration needs the Tier-A companions first. Plan delivered, execution deferred.- Qdrant API key. I read the Qdrant API key from the container env to perform read-only GETs (mission-authorized "read-only Qdrant check"). The key was never written to the KB and was masked in logs; only GET endpoints were called.
- Stale registry note left in place.
iu_qdrant_collection_registry.notesstill says "0 points"; correcting it is a PG write I deferred to keep this session's vector work strictly read-only. Cosmetic only — the live reconcile proves 149. - Core-function change blast radius.
fn_cut_completeis cut-pipeline-core. Mitigations: no internal callers (external-only), behaviour-preserving default, best-effort sub-transaction (cannot break completion), idempotent target, verbatim-backed-up original, fresh-connection verification.
5. Reproducibility
All facts reproducible: read-only via query_pg on directus; live state via the apply channel (Doc 07). Environment: contabo / container postgres / PG 16.13. Session band 2026-05-29T09:27–11:20Z.