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_governance schema 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.4
  • implementation-planning/dot-iu-cutter-v0.1-p0-cross-cutting-resolution-plan-2026-05-15.md §4, §7, §9
  • implementation-planning/dot-iu-cutter-v0.1-p0-canonicalization-rule-v0.1-planning-note-2026-05-15.md
  • ratification/dot-iu-cutter-v0.1-x-a-source-span-drift-unit-ratification-2026-05-15.md
  • risk-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
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/blocker-closure/dot-iu-cutter-v0.1-p0-workstream-b-vocabulary-schema-canonicalization-2026-05-15.md