KB-1EF5

Macro-RS3B — Registrar Hardening Design Package (Executive Rollup) — 2026-06-21

6 min read Revision 1
rs3bmacroexecutive-rollupregistrar-hardeninghold-source-not-readregistration-holdread-only2026-06-21

Macro-RS3B — Registrar Hardening Design Package (Executive Rollup) — 2026-06-21

Class: read-only / KB-design · non-enacting · non-authorizing · no implementation · 0 substrate mutations Gate consumed: Codex ACCEPT_RS3_PATCH2_AND_PROCEED_TO_RS3B · READY_FOR_RS3B · C1–C4 mandatory Controlling verdict: RS3B_HOLD_REGISTRAR_SOURCE_NOT_READ Registration gate: REGISTRATION_HOLD · REGISTRATION_CAN_PROCEED = NO Live read tier: CLAUDE_READ_ONLY_PACKET 2026-06-21 (query_pg read-only role, VPS read_file allowlist, AgentData KB) · NO_CODEX_LIVE_READ


1. One-paragraph result

RS3B is the bounded read-only registrar-hardening design macro opened after Codex accepted RS3-PATCH2. Its first and gating deliverable — recover and read the registrar implementation source bin/dot/dot-dot-register.ts and reconstruct behavior from code — cannot be satisfied: the only file channel (VPS read_file) is allowlisted to /opt/incomex/docs, /opt/incomex/dot/specs, /var/log/nginx, and the registrar (confirmed live at dot_tools.DOT-REGISTER.file_path = bin/dot/dot-dot-register.ts) is outside every prefix; no KB source copy exists. Per macro §0.5/§5 and the Codex gate, the verdict is RS3B_HOLD_REGISTRAR_SOURCE_NOT_READ — PASS is not forced. The remaining nine deliverables are produced at design/criteria level, each fail-closed, consuming Codex C1–C4. A 13-file package was written to KB. Registration stays HOLD.

2. Package (13 files written)

Index + 01–10 + Codex packet at …/laws-new/reports/rs3b/; this executive rollup at …/laws-new/reports/. All rev1, readback-confirmed. See rs3b-index-…md for the full table and per-file sub-status.

3. Mục tiêu A–J outcomes

  • A Source recovery: SOURCE_NOT_READ (exhaustive ~22-probe proof; allowlist denies bin/dot/...; no KB copy). Behavior reconstruction HELD; RP-03 prose carried only as UNVERIFIED scope.
  • B Dual-writer boundary: PARTIAL_SOURCE_NOT_READ. Registrar DOT-REGISTER (op=register, paired DOT-HEALTH-DOT) vs catalog-sync DOT-015 (op=NULL, paired NULL, domain sync, on-deploy). Boundary rules: registrar = sole registration writer of closed rows; catalog-sync = read-only reconciliation, no clobber/activation; conflict/drift → reject+HOLD.
  • C Single-artifact contract v0.1: CRITERIA_DEFINED_PENDING_SOURCE. One admitted artifact only; broad scan = MASS_REGISTRATION_ATTEMPTED; full reject-code set; post-commit paired verifier; no activation.
  • D Interface F v0.1: CARRIER_SOURCE_UNPROVEN_FAIL_CLOSED. request_proposed vs trusted_attested split; lead future carrier = context_pack_manifest (sha256 NOT NULL) but UNPROVEN (no UNIQUE/immutability/observer); resolver fail-closed.
  • E Replay/attempt state machine v0.1: REPLAY_DOMAIN_FAIL_CLOSED · REPLAY_SURFACE_NOT_FIT. C1 three identities; C2 atomic Phase-1 + S1/S2/S3 + uncertain-commit recovery; C3 retention/tombstone ≠ freshness; iu_route_attempt rejected as store; required surface defined, not created.
  • F Audit sink: SINK_CANDIDATE_SELECTED_FAIL_CLOSED. Lead = event_outbox (richest schema, safe_payload guard, post-rollback writable) but no enforced immutability/retention/idempotency on any candidate; no new ledger.
  • G Pair/guard: REPRESENTATION_DERIVED. Registry pair = 1 primary + 1 paired_dot verifier (2 rows); guards = 4 content-bound contract components (0 rows); not five rows.
  • H Triggers / closed-at-registration: INVENTORIED. 14 dot_tools triggers (1 disabled); the one activation surface = trg_context_pack_dot_registerpg_notify('context_pack_event') on watch-tier {A,B,C}+status='active'; closed-at-registration obligations defined.
  • I Adversarial matrix: DEFINED_NOT_EXECUTED, 40 cases (≥35), all required categories covered.
  • J Decision packet + this rollup + Codex packet: produced.

4. Gap report (single-sufficient blockers)

G1 registrar source unreadable (upstream-most for code-level work) · G2 owner-of-record = 0 rows (deciding authority blocker) · G3 no register_dot action · G4 no artifact-hash carrier · G5 no fit replay surface · G6 no immutable audit sink · G7 activation side-effect. Each alone keeps registration on HOLD.

5. Single next recommendation

Recover the registrar source (extend read_file allowlist to the bin/dot/ directory, or admit a faithful line-level KB source mirror, or provide a read-only git/code channel), then re-run RS3B-01/02/03 against real code. RS-VALIDATOR-HARDENING stays after RS3B; RS2B-RISK-RESIDUE-AND-Đ35-HEALTH-CLOSURE separate; Owner-of-record decision still upstream. No implementation/registration until G1–G7 clear and Owner authorizes.

6. Discipline held

No-mega-system · DOT-only · reuse-first · no new registry/table/collection · hash ≠ signature · caller input ≠ authority · pure validator ≠ replay-state owner · snapshot/QT001 ≠ trusted provider · iu_route_attempt ≠ single-use store · attempt_id ≠ logical-key bypass · consumed-state ≠ erased by staleness · RP-03 prose ≠ source · no PASS while source unread. 35-item must-not-do list confirmed in the index. Only writes = this RS3B package at official KB paths. Engineering criteria ≠ authority PASS; KB admission ≠ runtime registration.

7. Lineage

Builds on / consumes: RS3-PATCH2 (macro-rs3-patch2-…-2026-06-21) + its Codex acceptance; RS3-PATCH1; RS3-BUNDLE; RS2-PATCH1. Next gate: Codex reviews RS3B → confirm HOLD → registrar source recovery.