Spec gap
leanSpec PR #680 (leanEthereum/leanSpec#680) tightens the interval-3 safe-target contract: update_safe_target reads from the new pool only (availability signal). Counting the merged new + known view lets safe target advance on stale evidence from earlier slots.
zeam was the reference implementation the spec was aligned to (see blockblaz/zeam#779); lean and nlean already follow that pattern. This issue tracks gean's adoption.
Where gean diverges
node/tick.go:158 — updateSafeTarget calls ExtractLatestAllAttestations (the merged new + known accessor). Should use the new pool only.
Acceptance criteria
updateSafeTarget reads from the new pool only.
LEAN_SPEC_COMMIT_HASH bumped to a leanSpec commit including PR #680.
- Spec test fixtures regenerate cleanly; all existing spec tests still pass.
- Regression test mirroring leanSpec
test_safe_target_ignores_known_pool_at_interval_3 is added.
- Implementation pattern mirrors zeam's
tickIntervalUnlocked for cross-client consistency on the interval-0 / interval-3 / interval-4 sequencing.
Spec gap
leanSpec PR #680 (leanEthereum/leanSpec#680) tightens the interval-3 safe-target contract:
update_safe_targetreads from thenewpool only (availability signal). Counting the mergednew + knownview lets safe target advance on stale evidence from earlier slots.zeam was the reference implementation the spec was aligned to (see blockblaz/zeam#779); lean and nlean already follow that pattern. This issue tracks gean's adoption.
Where gean diverges
node/tick.go:158—updateSafeTargetcallsExtractLatestAllAttestations(the mergednew + knownaccessor). Should use the new pool only.Acceptance criteria
updateSafeTargetreads from the new pool only.LEAN_SPEC_COMMIT_HASHbumped to a leanSpec commit including PR #680.test_safe_target_ignores_known_pool_at_interval_3is added.tickIntervalUnlockedfor cross-client consistency on the interval-0 / interval-3 / interval-4 sequencing.