KB-22AE

Branch L — Law / Forbidden Compliance / Self-Review

6 min read Revision 1
mowui-handofflawforbidden-complianceself-reviewdieu-28dieu-32dieu-372026-05-29

Branch L — Law / Forbidden Compliance / Self-Review


1. Law crosswalk

Law / invariant How this pack honors it
Điều 28 (UI = render shell, no business logic) Both briefs (doc 07/08) mandate zero-logic Nuxt, registry-driven config, no hardcoded data; surfaces bound to design_templates rows
Điều 32 (approval, no self-approval) Proposal-only editing; ≥2 human cross-signs; activation/rollback council-owned; automated-agent CHECK rejects agent apr_approvals (doc 06/08)
Điều 35 (DOT paired tests) Every new/changed DOT needs a passing paired test before UI wires it (doc 05/08); read subset rehearsed GREEN
Điều 37 (permission jurisdiction) Same UI, different backend-permission slice; per-tier predicate; super-admin subject to same predicate (doc 04/08)
Điều 30 (reversibility, forward-only) Binds reversible (set prior/NULL); activate↔rollback version-pin; minted IUs soft-retired not deleted (doc 06/09)
MOWD = subdomain, not 5th Mother Stated in doc 00/01; owner GOV-MOW; no GOV-MOWD; no second SoT (design bodies in information_unit, columns are pointers)
IU centrality iu_ref everywhere; cards render IU body via ref, never inline prose (doc 01/03)
Vector guarded No Qdrant write, no realtime vector; vector_sync_enabled=false never_flip (doc 08)

2. Forbidden-list compliance (campaign §14)

Forbidden Status Evidence
No Nuxt implementation Nothing built; wireframe/contract only
No UI code generation No code emitted; component specs only
No committed DDL Apply channel not used; EXTEND remains pending Điều-32 (referenced, not run)
No Directus mutation Read-only query_pg confirmed available; no write issued
No Qdrant/vector write Not touched
No 4 Mothers runtime Design-side only; runtime boundary doc 01/08
No workflow/task generation None created
No business logic in frontend Điều-28 enforced in both briefs
No hardcoded workflow/task/tier data Registry-driven mandated; mock/config behind DOT interface for absent tbl_*
No self-approval Proposal-only + ≥2 human cross-signs + agent CHECK
No law enactment Reuses existing spine; no new law/table
No event/job execution None invoked

3. Gate 0 / mutation ledger

  • Entry == exit: no DB object created/altered/dropped; no DOT run; no Directus/Qdrant write. The only writes performed are 13 KB documents (this handoff pack) via Incomex_KB.upload_document — documentation, not system mutation.
  • Live PG read used only to confirm container health + read-channel availability for data-contract validation; no row mutated.
  • Cowork Drive read-only (7 docs read for visual intent); no Drive write.

4. Acceptance criteria (campaign §16) — self-check

Criterion Met? Note
Cowork visual intent captured tokens, labels, components, prototypes A/C/D/E, v1 pack — verbatim in docs 01/06/07
T6→T1 model explicit doc 02 tier ladder + interactions
node/card contract concrete doc 03 — 22 fields, all backend-mapped
four surfaces specified doc 04 — goal/persona/source/filters/sort/traffic-light/drill/actions/permission/mobile/scale/states
DOT action map exists doc 05 — 14 actions + 4 nav DOTs; DOT_SPEC_ONLY flagged
Claude Design & Claude Code handoffs separated doc 07 (visual-only) vs doc 08 (engineering-only)
no UI implementation none
no unsafe mutation none

5. Self-review — strengths & honest gaps

Strengths: every claim is anchored to a named source (Phase 1 contracts + Cowork prototypes read verbatim, not paraphrased); the two traffic-light scales are reconciled rather than glossed; the Design/Code split is clean (no backend in the design brief, no visual guessing in the code brief); the three high-severity risks (scale, permission leakage, self-approval) are each closed by backend enforcement.

Honest gaps / decisions left open (deliberately, not silently):

  1. Dark theme — brief says dark, prototypes are light; deferred to Claude Design with a token-pair recipe (doc 07 §6). Not a blocker.
  2. T1 label — "Task" vs "Công việc" conflict between prototypes; canonical pick deferred to Design (recommended "Công việc").
  3. Reorder + comment/audio — referenced but never prototyped; flagged as explicit design tasks (doc 06/07/11-prompt-13).
  4. Tier tables tbl_* absent in live PG — T6–T4 run on mock/config until ratified (doc 08 §3; prompt 14). The reuse-first survey (v1 pack item P2) remains the one open backend prerequisite.
  5. EXTEND not yet committed — all live wiring (Stages 3–5) gated on the human Điều-32 commit; this pack does not assume it happened.

No overclaim: nothing here is "done" beyond the handoff documents themselves; the UI does not exist, the DOTs are mostly DOT_SPEC_ONLY, and the backend EXTEND is pending approval. This pack is a specification and handoff, faithfully labeled as such.

6. Self-review verdict

PASS. All acceptance criteria met; full forbidden-list compliance; zero unsafe mutation; law crosswalk clean; open decisions surfaced explicitly rather than papered over.

Back to Knowledge Hub knowledge/dev/reports/architecture/mow-unified-canvas-master-ui-handoff-pack-2026-05-29/12-law-forbidden-self-review.md