---
mode: CREATE
adr_id: ADR-0.0.67
branch: main
timestamp: "2026-06-09T08:16:50Z"
agent: claude-code
obpi_id:
session_id:
continues_from: .gzkit/handoffs/20260609T073012Z-0.0.67-closed-ln-sunset-queued.md
---

<!-- Handoff document for ADR-0.0.67 — created by claude-code at 2026-06-09T08:16:50Z -->

## ⚠️ This handoff ADVISES next moves — it is NOT authorization to execute them

**Read this before anything else.** A handoff records a *proposed* plan and its
context. It is **NOT** a clearance to unilaterally execute that plan. On resume —
at **every** freshness level, Fresh included — you MUST:

1. Present the advised next steps and current state to the operator.
2. **Obtain explicit operator authorization before executing any of them** — no
   file mutation, no `gz` ceremony until the operator says go.
3. Treat the human-as-final-witness doctrine as binding: you advise; the operator
   rules; you note variance and stop.

## Current State Summary

**ADR-0.0.67 is VALIDATED — the audit ceremony (COMPLETED→VALIDATED) ran and
synced this session.** HEAD `9f3ce43b` on `main`, in sync with `origin/main`
(0/0), tree clean. `gz adr report ADR-0.0.67` reports Lifecycle **Validated**,
Closeout Phase `validated`, 3/3 OBPIs `attested_completed`.

The audit was not a rubber-stamp. It dispatched independent `spec-reviewer` and
`quality-reviewer` personas, demonstrated value live, and surfaced two findings —
both **non-blocking and routed to existing GHIs without filing duplicates**:

- spec-reviewer CONCERN (SUPPORT REQs cite an `artifact_edited` ledger event that
  never fires for non-markdown artifacts; `req-kind-discipline` defers the SUPPORT
  ledger query entirely per `req_kind.py:218`) → **evidence added to GHI #543**,
  refining its fix (must accept any witnessing event type).
- `gz obpi audit` per-OBPI coverage FAIL (whole-`src/`-tree denominator,
  unreachable by construction) → already owned by **GHI #591**.

Gate 5 was the operator's verbatim **"accept audit"**, recorded via
`gz adr emit-receipt --event validated` backed by **fresh** ARB receipts
(unittest 5977 pass, ruff, typecheck, mkdocs — the prior OBPI receipts had been
pruned from the store, so the validated event attests the tree *now*). An
advisor-flagged Layer-3 drift (frontmatter `Draft→Validated` desync'd
`adr-status.md`) was caught with `gz validate --adr-status-fresh` and regenerated
via `gz register-adrs`. Synced through guarded `gz git-sync --apply --lint --test`
(commit `9f3ce43b`).

## Important Context

**The light at the end of the tunnel — READ THIS.** The operator is fatigued by **endless restore-health iterating** — every closeout
turning into an archaeology dig. That fatigue is real, but it is **not** an
infinite tunnel. Two grounded facts:

**1. The foundation layer is finite and ~57% lit.** 67 distinct foundation ADRs
(0.0.x) exist. Current lifecycle split from the regenerated index:
**38 Validated · 1 Completed · 19 Draft · 8 Proposed.** A validated foundation
ADR with mechanical fail-closes is a *permanent floor* — it cannot silently
regress. 0.0.67 just locked one more (full-surface skill-alignment enforcement).
The finish line for the foundation set is countable: ~28 ADRs still short of
Validated, most of them Draft/Proposed (queued, not in-flight).

**2. The "restore-health" fatigue has ONE named root cause, not infinite causes.**
The pattern is always the same: **the test suite goes silently RED between
sessions** because coupled-surface edits (BDD scenarios, manpages, the insights
schema, the `ln`/closeout-proof-binding surface) aren't caught at edit time. Every
example proves it:
- 0.0.67's closeout surfaced 3 hidden regressions (insights enum, two stale BDD
  scenarios, deprecated manpage sections) — all Rule-1a coupled-surface misses
  from *prior* cuts.
- ADR-0.0.41 is parked at closeout Step 6, red on `ln` (60 errors) — same pattern.

This is **fixable by structure, not by iterating.** The `ln`-sunset ADR (advised
below) is precisely the convergence move: it retires the brittle
closeout-proof-binding surface that keeps generating the red, completes the
deferred `req-kind` channels (the #543 gap documented this session), AND unblocks
0.0.41. **One ADR collapses several open loops** — it is subtraction of the
red-generator, not addition of backlog.

**"Done enough" looks like:** (a) the foundation set all Validated or consciously
parked; (b) a standing *green-between-sessions* invariant so red never silently
accumulates again; (c) the 40-GHI backlog drops to steady-state triage +
patch-release cadence — maintenance, not restore-health. After `ln`-sunset +
0.0.41, the structural red-generator is gone and remaining work becomes *additive*
(pace the 19 Draft foundation ADRs by felt need) rather than corrective.

## Decisions Made

- **Audit findings routed, not re-filed.** Step-0 prior-art lookup found GHI #543
  and #591 already own both findings; added evidence to #543 rather than create a
  duplicate. Rationale: the doctrine is observation-routing, and duplicate GHIs
  dilute triage.
- **Fresh ARB receipts over pruned ones.** The pruned OBPI-completion receipts no
  longer resolved in `artifacts/receipts/`; regenerating was the honest path —
  a `validated` event should attest the tree at validation time, not cite stale
  evidence. (Alternative rejected: un-prune / cite-anyway — would have attested
  receipts that no longer exist.)
- **Frontmatter `status: Validated` written, then index reconciled.** The Layer-1
  edit has a Layer-3 consumer (`adr-status.md` via `gz register-adrs`); reconciled
  in the same session so `gz check` won't trip on stale state (coupled-surface
  coherence, Rule 1a).

## Immediate Next Steps

<!-- ADVISORY ONLY — present and await operator authorization before acting. -->

1. **Lowest-energy momentum (if tired, start here):** close **GHI #592** (already
   fixed by `814099fe`, just unclosed) and the direct-fix candidates **#591**
   (`gz obpi audit` whole-`src` coverage denominator) and **#589** (gz-obpi-pipeline
   Stage 3 tail-pipe exit-code masking). These are visible wins with no ceremony
   weight — progress you can feel without opening a foundation ADR.
2. **THE TREADMILL EXIT — name the green-between-sessions gate. Do this before the
   next foundation cut.** The restore-health fatigue's root cause is silent
   inter-session red: coupled-surface edits (BDD scenarios, manpages, insights
   schema, the `ln` surface) go uncaught at edit time and surface as archaeology at
   the next closeout. A pre-session or pre-push full-suite + behave gate converts
   "archaeology at closeout" into "caught at edit." This is the single
   highest-leverage move in this handoff — its payoff is that *every closeout after
   it gets cheaper*. Doing item 3 (or any foundation work) without it just feeds the
   same treadmill. Route via `gz-design` (likely a foundation ADR or a standing
   invariant + hook). **This is the structural exit from the iteration treadmill —
   not an afterthought.**
3. **The convergence move: open the `ln`-sunset foundation ADR via `gz-design`.**
   Scope carries TWO items: (a) retire the `ln`/closeout-proof-binding surface —
   replace its "green-at-closeout" purpose with a DERIVED VIEW over (req-kind
   channels + ledger) and COMPLETE the deferred SUPPORT/FENCE
   `req-kind-discipline` channels (closes the #543 gap) rather than mask them;
   (b) fold the fail-open seam fix (`cli.py:222-225` → surfaced `ValidationError` +
   test). **This ADR also UNBLOCKS ADR-0.0.41.**
4. **ADR-0.0.41 closeout (follows from item 3).** Parked at closeout Step 6, red on
   `ln` (60 errors). Once the sunset lands — OR decide it attests as-is exactly like
   0.0.67 did (its 4 cited receipts DO resolve via the ledger) — drive its closeout
   ceremony.

## Pending Work / Open Loops

- **`ln`-sunset foundation ADR** — not yet created; carries the two scope items
  above; unblocks 0.0.41; closes the #543 SUPPORT-channel gap structurally.
- **ADR-0.0.41** — parked closeout Step 6, red on `ln`; coupled to the sunset
  decision.
- **GHI #543** (open) — SUPPORT proof-channel never queries the ledger; this
  session added the non-markdown-artifact refinement. Destination for `ln`-sunset.
- **GHI #591, #589** (open) — direct-fix candidates. **GHI #592** — close it
  (already fixed by `814099fe`).
- **GHI #595** (open) — `gz-design`/`gz-adr-create` evaluate-gate errors on pool
  ADRs; direct-fix candidate.
- **GHI #594** (open, blocker) — ARB archive/purge lifecycle; tied to receipt
  accumulation (1881 receipts on disk; the pruned-receipt friction this session
  hit is the same surface).
- **GHI #519** (open, **emergency**) — codex gzkit context surface exhausts 258K
  window; the one emergency-labeled issue, untouched this session.
- **Backlog scale (honest):** 40 open GHIs (34 tech-debt, 29 defect, 28 runtime,
  11 enhancement, 1 emergency). This is steady-state-able once the red-generator
  is gone — it is NOT a restore-health queue.

## Verification Checklist

```bash
# Confirm 0.0.67 is Validated and synced
uv run gz adr report ADR-0.0.67          # Lifecycle: Validated
git log -1 --oneline                     # 9f3ce43b
git status --short                       # clean
uv run gz validate --adr-status-fresh    # green (index reconciled this session)

# Foundation convergence snapshot (the tunnel)
grep -oE 'ADR-0\.0\.[0-9]+' docs/governance/GovZero/adr-status.md | sort -u | wc -l   # 67

# Before any ln-sunset / 0.0.41 work: confirm the red surface
uv run gz validate --skill-alignment     # green
# (0.0.41's `ln` red is the closeout-proof-binding surface the sunset retires)

# Quick-win backlog
gh issue view 592                        # confirm fixed-by 814099fe, then close
```

## Evidence / Artifacts

- `docs/design/adr/foundation/ADR-0.0.67-tool-skill-invariant1-enforcement/audit/AUDIT.md` — full audit (Feature Demonstration, independent-review synthesis, shortfalls)
- `docs/design/adr/foundation/ADR-0.0.67-tool-skill-invariant1-enforcement/audit/AUDIT_PLAN.md` — claims-to-checks plan
- `docs/design/adr/foundation/ADR-0.0.67-tool-skill-invariant1-enforcement/ADR-0.0.67-tool-skill-invariant1-enforcement.md` — ADR (status: Validated, attestation row added)
- `docs/governance/GovZero/adr-status.md` — regenerated Layer-3 index (92 ADRs)
- `.gzkit/handoffs/20260609T073012Z-0.0.67-closed-ln-sunset-queued.md` — predecessor handoff (chain)
