---
mode: CREATE
adr_id: ADR-0.0.41
obpi_id: OBPI-0.0.41-04-lock-handoff-coupling-validator
branch: main
timestamp: "2026-06-12T00:23:45Z"
agent: claude-code
session_id: build-to-1.0-2026-06-11
last_lock_event_timestamp: "2026-06-11T23:42:50.858777+00:00"
last_commit_sha: c50d37519d75f9fc19ed00079092fde790ed775d
---

# Handoff — OBPI-0.0.41-04 lock-handoff coupling validator complete

## Current State Summary

OBPI-0.0.41-04-lock-handoff-coupling-validator is **attested_completed** (operator
"attest completed", Jeffry Babb, 2026-06-11). Landed `gz validate
--lock-handoff-coupling`: a ledger-replay validator that fail-closes (exit 3) on
any post-cutover `obpi_lock_released` event lacking a valid `handoff_path`,
referencing a missing file, predating its matching claim, or missing any of the
four Sub-Invariant 2 minimum-information fields. Wired into the default `gz check`
pipeline (REQ-04-07). This register entry pairs the lock surrender for the
completed traversal (token-block discipline § Sub-Invariant 5 — the very
invariant OBPI-04 now mechanically audits).

ADR-0.0.41 is now **4/5**; OBPI-05 (surface updates) remains parked per the A.5
split authorization.

## Important Context

The validator's cutover boundary is derived from the latest OBPI-02/OBPI-03
`obpi_receipt_emitted` timestamp in the ledger (never hardcoded), grandfathering
the warning-only transition window between OBPI-02 (additive field) and OBPI-03
(fail-closed). This widening was an in-flight fix surfaced when the validator
flagged 11 legitimate-at-the-time historical events on the live ledger.

## Decisions Made

- Completed OBPI-04 via the full five-stage gz-obpi-pipeline; operator attested
  in Stage 4 ("attest completed").
- Cutover boundary widened from OBPI-02-only to latest(OBPI-02, OBPI-03) receipt
  so the warning-only window is grandfathered.
- `req_atomic` declared for all 9 REQs (each a single indivisible TDD unit).
- behave waiver registered (representative scenarios + unit-tier proof; integrated
  lock-feature BDD deferred to ADR-0.0.41 closeout) — same shape as OBPI-03.
- `--accept-security-floor` applied: the quality.py change is an additive
  read-only validator wrapper, not security-relevant (GHI #462; slot unfilled).

## Immediate Next Steps

1. Complete Stage 5 git-sync of the OBPI-04 governance edits and reconcile.
2. ADR-0.0.41 closeout (build OBPI-05 or operator-park) per the campaign A.5 item.

## Pending Work / Open Loops

- OBPI-0.0.41-05 (gz-session-handoff SKILL trigger + orientation + runbooks) is
  parked per the A.5 split.
- Integrated lock-feature BDD (claim->release/reap->validate flow) lands at
  ADR-0.0.41 closeout.

## Verification Checklist

- [ ] `git rev-parse HEAD` returns `c50d37519d75f9fc19ed00079092fde790ed775d` (or operator explains drift).
- [ ] Branch matches `main`.

## Evidence / Artifacts

- `.gzkit/locks/obpi/OBPI-0.0.41-04-lock-handoff-coupling-validator.lock.json` — lock at surrender (deleted on release).
- Completion receipt `obpi_receipt_emitted` for OBPI-0.0.41-04 in `.gzkit/ledger.jsonl`.
