KB-943F

07 — Pin / Ghim Rehearsal (Branch G)

4 min read Revision 1
registries-pivotpinghimbranch-gregistry-pinregistry-missingnewpropose-onlybegin-rollback2026-05-31

title: 07 — Pin / Ghim Rehearsal (Branch G) date: 2026-05-31 verdict: REGISTRY_MISSING confirmed (no pin artifact); registry_pin shape rehearsed valid in BEGIN..ROLLBACK; propose-only, NOT created

07 — Pin / Ghim Rehearsal (Branch G)

A. Reuse search (live) — confirmed ABSENT

information_schema.tables in public matching %pin% / %favorit% / %watch% / %bookmark% / %ghim%0 rows. Closest live concepts are issue monitoring (system_issues) and the audit queue (entity_audit_queue, PIV-018) — neither is a user/role/team pin. → Pin/ghim is genuinely NEW (REGISTRY_MISSING).

B. Rehearsed registry_pin (BEGIN..ROLLBACK, doc 04 #8) — shape VALID

CREATE TABLE registry_pin (
  id serial PRIMARY KEY,
  object_ref   text NOT NULL,                 -- pinned object (entity_code / pivot filter-path / substrate key)
  object_kind  text,                          -- species/composition kind so a pin survives drill-layer changes
  surface_ref  text NOT NULL,                 -- e.g. 'registries-pivot:PIV-007'
  pinned_by    text NOT NULL,                 -- user/agent id
  scope        text NOT NULL DEFAULT 'user',
  scope_ref    text,                          -- role/team id when scope != global/user
  reason       text,
  priority     int  DEFAULT 0,
  created_at   timestamptz DEFAULT now(),
  active       boolean DEFAULT true,          -- soft-retire only (Đ0 Atom)
  CONSTRAINT registry_pin_scope_ck CHECK (scope IN ('global','user','role','team'))
);
INSERT INTO registry_pin(object_ref,object_kind,surface_ref,pinned_by,scope,reason)
VALUES ('PIV-007','dot_tools','registries-pivot:PIV-007','agent:claude-rehearsal','global','rehearsal pin');
-- in-tx: 1 row, scope='global', CHECK enforced  →  ROLLBACK  →  post_tables leftover = 0

Result: CREATE TABLE + CHECK + sample INSERT all succeeded inside the transaction; after ROLLBACK the table does not exist (post_tables leftover=0), idle_tx=0. The shape compiles and the scope CHECK is valid.

C. Governance gates (must hold before any implementation — Đ0-G/Đ2/Đ23/Đ26/Đ37/Đ45)

  • Birth: created via the birth path → ID + birth_registry record like every entity.
  • Registered: added to meta_catalog → itself visible/monitored, subject to the orphan/phantom invariant (an unregistered pin table would itself be an orphan — T-SELF-1).
  • Counted: PIV-32x registry_pin pivot (PIVOT_MISSING until born); pinned_count per surface is a pivot dimension.
  • Auditable: every pin/unpin = an event_outbox event. ⚠ event_type_registry (40) has no pin.created/pin.removed → must be registered before first emit (Đ45 register-before-emit, doc 08).
  • Governed: owner = a governance Mother / monitoring sub-registry (likely GOV-COUNCIL, Đ37); scope changes auditable; soft-retire (active=false) only.

D. Contract field

A node carries pin_state ∈ {pinned, unpinned, pinned-by-role, pinned-by-team}, resolved server-side from registry_pin filtered by the viewer's scope. Nuxt renders the flag; never stores pins locally (T-PIN-1: any localStorage/in-memory pin array ⇒ hardcode_violation).

E. Verdict

NEW, propose-only. Shape rehearsed and valid; not created (no COMMIT). Implementation gated behind RG5 + an Đ32 additive-change approval, with birth + registration + PIV-32x + pin.* event registration done together (macro M5, doc 11).

Back to Knowledge Hub knowledge/dev/reports/architecture/registries-pivot-p0-p1-count-integrity-view-rehearsal-2026-05-31/07-pin-ghim-rehearsal.md