KB-26AB
dot-iu-cutter v0.1 — P0 Blocker Closure Workstream B (Vocabulary / Schema Authority / Canonicalization)
12 min read Revision 1
dot-iu-cutterblocker-closureworkstream-bvocabularyschemacanonicalizationx-1x-4x-7no-ddlrev5d
dot-iu-cutter v0.1 — P0 Blocker Closure Workstream B — Vocabulary / Schema Authority / Canonicalization
Date: 2026-05-15 Status: BLOCKER CLOSURE PROGRAM — Workstream B Scope: CLOSURE PLANNING ONLY. No schema created, no lookup table mutated, no DDL, no SQL, no PG mutation, no execution. Master:
blocker-closure/dot-iu-cutter-v0.1-p0-blocker-closure-master-plan-2026-05-15.md
1. Purpose
Address the vocabulary / schema authority / canonicalization blockers for dot-iu-cutter v0.1 P0:
- HB-01: X-1 schema placement sign-off —
cutter_governanceschema class + P0-1 stays on TAC schema (Đ44 + Đ33/Đ43) - HB-02: X-4 Đ24 lookup readiness / enum-set ratification (Đ24 + Đ44)
- HB-04: X-7 canonicalization rule prose ratification (Đ24 + Đ44)
For each closure: acceptance criteria, dependency order, what authorities perform the sign-off, and what is forbidden in this phase.
2. Source Inputs
final-readiness/dot-iu-cutter-v0.1-p0-final-readiness-blocker-register-2026-05-15.md§3.1, §3.2, §3.4implementation-planning/dot-iu-cutter-v0.1-p0-cross-cutting-resolution-plan-2026-05-15.md§4, §7, §9implementation-planning/dot-iu-cutter-v0.1-p0-canonicalization-rule-v0.1-planning-note-2026-05-15.mdratification/dot-iu-cutter-v0.1-x-a-source-span-drift-unit-ratification-2026-05-15.mdrisk-review/dot-iu-cutter-v0.1-p0-cross-cutting-decision-register-2026-05-15.md§3.2 (X-1), §3.5 (X-4), §3.7 (X-7)
3. Closure HB-01 — X-1 Schema Placement Sign-Off
closure_id: HB-01
title: Đ44 family registry custodian + Đ33/Đ43 schema authority sign off the `cutter_governance` schema class membership; canonical_address stays on existing TAC schema
authority: Đ44 (primary; family registry) + Đ33/Đ43 (schema authority; permission/role mapping)
prerequisites: none upstream
scope_of_signed_off_schema_class:
schema_class_name_proposed: cutter_governance (working name; Đ33/Đ43 may rename)
membership:
- manifest_envelope (P0-2)
- manifest_unit_block (P0-2)
- cut_change_set (P0-3)
- cut_change_set_affected_row (P0-3)
- dot_pair_signature (P0-3 + P0-4 shared)
- verify_result (P0-4)
- decision_backlog_entry (P0-5)
- decision_backlog_history (P0-5)
- decision_backlog_dependency (P0-5)
- sweep_log (P0-5)
- review_decision (P0-6)
P0_1_placement: stays on TAC schema (tac_logical_unit gains canonical_address field family; canonical_address_alias placement decided by Đ33/Đ43 — recommended on TAC or shared schema; not in cutter_governance)
acceptance_criteria:
artefact: ratification file under knowledge/dev/laws/dieu44-trien-khai/ratification/ binding
- schema class name (final, possibly renamed)
- full table membership list
- permission / role mapping (which roles have read/write on the schema class)
- confirmation that canonical_address stays on TAC schema
- canonical_address_alias placement
signers: Đ44 + Đ33/Đ43
closure_state: closed when ratification file present with signer attribution
downstream_closures_unblocked_by_HB_01:
- HB-09 schema snapshot scope (snapshot must cover the approved schema class)
- first DDL of every P0 step (no table creates until schema class exists)
what_HB_01_does_NOT_do:
- create the schema (DDL is future execution-phase task)
- assign concrete PG roles to the schema class (operational task post-sign-off)
- decide column-level details (those are per-item; design files already cover them)
4. Closure HB-02 — X-4 Đ24 Lookup Readiness / Enum-Set Ratification
closure_id: HB-02
title: Đ24 vocabulary owner ratifies each remaining P0 enum set; Đ24 lookup tables populated with controlled values
authority: Đ24 (primary; vocabulary owner) + Đ44 (cross-family confirmation per X-A pattern)
prerequisites: none upstream for enum-set ratification; lookup-table population is an operational task
enum_sets_pending_ratification (per final readiness blocker register §3.2):
state_extensions_and_new_enums:
cut_change_set:
state: {pending, executing, committed, rolled_back, superseded, invalid_drift}
cut_change_set_affected_row:
operation_kind: {create, update, supersede, link, unlink}
target_table: {tac_logical_unit, tac_unit_version, tac_publication, ...}
dot_pair_signature:
signature_kind: {executor_cut, verifier_cut, executor_verify, verifier_verify}
validation_state: {pending, valid, invalid, revoked}
verify_result:
verify_kind: {axis_1_round_trip, axis_2_coverage, joint}
axis_1_status: {not_run, running, pass, fail}
axis_2_status: {not_run, running, pass, advisory_fail, not_applicable}
verdict: {PASS, FAIL, NEEDS_HUMAN}
state: {pending, running, completed, superseded}
review_decision:
verdict: {PASS, FAIL, NEEDS_HUMAN} (aligned with verify_result.verdict)
reviewer_kind: {ai, human, council}
decision_backlog_entry:
kind extensions for new event kinds (e.g., migration_step_failed, rollback_test_scenario_failed, rollback_failed, rollback_cascade_blocked, rollback_key_collision, signature_revoked) — Đ24 confirm path
status: {open, in_progress, resolved, re_opened, closed}
axis_1_drift_unit:
value: canonical_token (X-A bound 2026-05-15; enum membership = {byte, line, ast_node, canonical_token})
ratification_status: VALUE ratified at X-A closure_with_notes; ENUM MEMBERSHIP needs HB-02 confirmation
acceptance_criteria:
artefact_a_ratification: a Đ24 ratification file under ratification/ binding each enum set's values
artefact_b_lookup_population: per-enum lookup table populated in cutter_governance (or Đ24-owned vocabulary schema, whichever Đ24 directs) — POPULATION is an operational task and is OUT OF SCOPE of THIS planning file; planning-level commitment recorded
signers: Đ24 (primary) + Đ44 (cross-family)
closure_state:
artefact_a: closed when ratification file present
artefact_b: closed when lookup-population operational session emits its artefact (separate operational session)
downstream_closures_unblocked_by_HB_02:
- first DDL of every P0 step (every step references at least one enum FK)
- HB-05 dry-run scenarios that involve state transitions referencing enum values
5. Closure HB-04 — X-7 Canonicalization Rule Prose Ratification
closure_id: HB-04
title: Đ24 vocabulary owner ratifies full canonicalization_rule_v0.1 prose; identifier assigned
authority: Đ24 (primary) + Đ44 (family ratifier)
prerequisites: none upstream
prose_to_be_ratified (per implementation-planning canonicalization rule planning note §4):
identifier_proposal: canon-md-v0.1.0 (exact identifier final at Đ24 ratification)
steps:
- read source bytes as UTF-8
- strip UTF-8 BOM if present
- apply NFC unicode normalization
- normalize line endings: CR / CRLF → LF
- trim trailing whitespace per line (space + tab; not other unicode whitespace)
- enforce exactly one LF at file end (recommendation; final at Đ24)
- tokenize into canonical_tokens (whitespace-delimited per line)
byte_to_token_mapping_algorithm:
- deterministic; O(n) acceptable v0.1
- emits (start_token_position, end_token_position) per byte_span
token_position_form:
- either (line_index, intra_line_token_index) tuple OR flat sequence index — Đ24 ratifies exactly one
per_source_kind_extension_policy:
- v0.1 = markdown only
- non-markdown source_kind → axis_1_status='not_applicable' v0.1 (FUTURE D4 capability intake)
- ast_node (code) and byte (binary) extensions are FUTURE
rule_changes_mid_cycle: prohibited; D4 capability intake required for any new rule version
acceptance_criteria:
artefact: Đ24 ratification file under ratification/ binding
- identifier (canon-md-v0.1.0 or final form)
- full prose covering BOM, mixed line endings, trailing newline, consecutive blank lines, canonical_token boundary, byte→token mapping algorithm, per-source_kind extension policy
- explicit binding that canonicalization_rule_used field on verify_result must record this identifier
signers: Đ24 + Đ44
closure_state: closed when ratification file present
downstream_closures_unblocked_by_HB_04:
- CTE-03 canonicalization rule library scaffolding (cannot scaffold until prose is ratified)
- HB-05 dry-run scenarios S13, S14, S19, S20 (depend on rule producing identical token streams)
- first DDL of Step 6 (verify_result.canonicalization_rule_used reference)
6. Authority Map for Workstream B
| Closure | Authority |
|---|---|
| HB-01 schema placement | Đ44 (family registry custodian) + Đ33/Đ43 (schema authority) |
| HB-02 Đ24 enum ratifications + lookup population | Đ24 (vocab owner) + Đ44 (cross-family) |
| HB-04 canonicalization rule prose | Đ24 (vocab owner) + Đ44 (family ratifier) |
7. Closure Order for Workstream B
order_internal_to_workstream_b:
- all three closures (HB-01, HB-02, HB-04) are MUTUALLY INDEPENDENT
- they can run in PARALLEL because their authorities and artefacts do not depend on each other
- HB-04 closure unblocks CTE-03 in Workstream C, which unblocks HB-05 in Workstream C
- HB-02 has a two-step closure: ratification (Đ24) + lookup-table population (operational); ratification can complete first, population is operational and proceeds in parallel after
constraints:
- HB-02 enum set values must NOT be added in a way that contradicts the X-A binding (axis_1_drift_unit=canonical_token must remain default)
- HB-04 prose must NOT contradict the X-A placeholder (NFC + LF + trim must remain step subset)
- HB-01 schema-class membership must NOT add or remove P0 tables not listed in §3
8. Acceptance Criteria — Aggregate
| Closure | Authority | Artefact | Closure State |
|---|---|---|---|
| HB-01 | Đ44 + Đ33/Đ43 | ratification file: schema class name + membership + permission/role mapping | closed when artefact present + signers attributed |
| HB-02 (ratification) | Đ24 + Đ44 | ratification file: enum set values per table | closed when artefact present |
| HB-02 (lookup population) | Đ24 + operational | operational artefact: lookup table populated | closed when artefact present (operational session) |
| HB-04 | Đ24 + Đ44 | ratification file: canonicalization rule v0.1 prose + identifier | closed when artefact present |
9. What Workstream B Does NOT Do
this_workstream_does_NOT:
- create any schema
- create any table
- populate any lookup table
- write any DDL / SQL / migration script
- ratify any artefact (ratifications happen in separate Đ24 / Đ44 / Đ33/Đ43 sessions)
- mutate PG / Qdrant / Directus
- implement the canonicalization rule (CTE-03 is in Workstream C; implementation is execution-phase)
- choose final identifiers (final identifiers chosen by Đ24 at ratification)
10. Explicit Confirmation
no_schema_created: true
no_table_created: true
no_lookup_table_populated: true
no_ratification_artefact_issued_in_this_file: true (ratification artefacts are issued in separate sessions under ratification/)
no_canonicalization_rule_implementation: true
no_ddl_written: true
no_sql_written: true
no_migration_executed: true
no_pg_mutation: true
no_qdrant_mutation: true
no_directus_mutation: true
no_data_writes: true
no_execution: true
no_phase_prior_file_modified: true
output_form: workstream_b_closure_planning_only