--- id: core-pin-offset-initial-value name: Verify and pin EventReceiver::offset()'s pre-yield value (review 004 item 12) status: pending depends_on: [] scope: narrow risk: low impact: project level: implementation tags: [review-004-fixes, core, contract, verification] --- ## Description The named gap from `docs/reviews/004-pre-release-general-review.md` §"Findings recorded, not fixed" item 12: `EventReceiver::offset()` pins the *post-yield* value only; the *pre-yield* return (the seeded checkpoint vs 0) is unpinned in core-contract.md's receiver text. Two steps, in order: 1. **Verify the three engines' pre-yield values empirically** — the review explicitly did not verify them this session. Probe per engine: a fresh consumer's `offset()` before any yield, and a consumer with a saved checkpoint's `offset()` before any yield. The contract suite is the natural home (a three-way equivalence leg, stamped per `version_stamp.rs` convention); per-engine tests are the acceptable alternative if the suite's harness shape fights the probe — implementer's choice, recorded. 2. **Pin the semantics in the contract text** — core-contract.md's `EventReceiver::offset()` paragraph gains the pre-yield return (dated annotation). Doc-only. **If the engines diverge**: do NOT paper over with a doc pin — record the divergence precisely (which engine, which arm) and raise with the user; a contract-observable divergence is a fix-the-code-or-amend conversation, not a doc edit. ## Acceptance Criteria - [ ] The three engines' pre-yield `offset()` values verified equal by live runs (the probe/leg recorded; green on all three columns — pg against the harness server) - [ ] core-contract.md's `EventReceiver::offset()` text pins the pre-yield return with a dated annotation - [ ] If divergent instead: the divergence recorded and raised with the user (this AC replaces the doc pin, not supplements it) - [ ] Doc gate green; any new suite leg green on all three columns ## References - docs/reviews/004-pre-release-general-review.md §"Findings recorded, not fixed" item 12 (the named gap) - docs/architecture/core-contract.md (the receiver text, the verification backlog) - alkstore-contract-suite (the three-column harness; the version-stamp convention) ## Notes > To be filled by implementation agent ## Summary > To be filled on completion