KB-F097

06 — Technical Addendum SCAFFOLD: SB-2 Object/Axis Ownership Edge (2026-06-01)

4 min read Revision 1
one-roof-governancescaffoldsb-2object-axis-ownershipc-1governance-object-ownershiptrack-t4design-only2026-06-01

06 — Technical Addendum SCAFFOLD: SB-2 Object/Axis Ownership Edge

SCAFFOLD only. No DDL, no SQL, no migration script. Frames future T4.

Purpose

Frame the future design of the substrate that lets governance express who owns a governed object or axis — today impossible because the relations CHECK only allows law↔agency endpoints.

Controlling inputs

  • Concept canon doc 01 (M-DEF-1/2 governed-object, M-DEF-3 responsibility-scope, M-DEF-8/9 axis-as-governed-object) and doc 03 (SB-2).
  • Round-4 doc 02 (C-1) + doc 08 (chk_relations_source_type/chk_relations_target_type ∈ {law,agency}; 8 live edges agency→law).
  • Round-1 finding (HISTORICAL_REFERENCE_ONLY): ownership is relational — no owner_gov_code column exists system-wide; do not add one to arbitrary tables.
  • This package doc 03 §3.1 (SB-2), §3.2 (C-1); doc 04 (T4).

Current blocker status

OPEN. No way to record an object/axis owner edge. C-1 (new table vs widen CHECK) unresolved; recommended default = new additive governance_object_ownership table.

Exact scope of the future design (T4)

  • Specify the additive governance_object_ownership table contract (owner_gov_code, object_type, object_ref, scope, plus the responsibility-scope fields from M-DEF-3) — as a contract, not DDL-to-commit.
  • Prove no migration risk to the 8 live agency→law edges (the new table sits beside governance_relations, does not widen its CHECK).
  • Define container-grain inheritance so ownership scales to 10^8 children with Δtotal=0 (never per-row owner edges) — consistent with coverage invariant v3 and the count>1 rule.
  • Define how an axis (M-DEF-8/9, a governed object) gets an owner via the same table.

Dependencies

  • Pairs with C-1.
  • Feeds T6 (apply DOT writes owner edges here) and T10 (IU owner-binding lands here once OP-B decided).
  • Coverage invariant v3 (total = covered + orphans + exceptions + retired) is the accounting this table must satisfy.

Known constraints

  • Prefer additive table over CHECK widening (no migration risk).
  • No-hardcode: object types / axes are data; ownership inheritance is computed, not enumerated.
  • Reuse the relational-ownership model; do not bolt owner_gov_code columns onto domain tables.

Forbidden implementation shortcuts

  • ❌ Committing the table or widening the live CHECK.
  • ❌ Per-row owner edges (breaks 10^8 scale).
  • ❌ A second ownership store that bypasses the Điều 37 hub (local island).

Acceptance criteria for the future detailed design

Additive table contract specified; no-migration-risk proven against the 8 live edges; container-grain inheritance demonstrated (Δtotal=0 at scale); axis-ownership path defined; rollback + read-only rehearsal; no committed mutation.

Where future detailed docs must be added

This package (e.g. 06a-sb2-object-axis-ownership-design.md). Pointer line added here.

What old docs must NOT be used as controlling input

  • Round 1/2/3 ownership wording (SUPERSEDED_BY_ROUND4) except the fact that ownership is relational.
  • Any doc proposing owner_gov_code columns on domain tables (rejected by the relational model).
Back to Knowledge Hub knowledge/dev/reports/architecture/one-roof-governance-technical-addendum-and-implementation-index-2026-06-01/06-technical-addendum-sb2-object-axis-ownership-scaffold.md