Files
consensus/engine
zeekayandHanzo Dev a823912b27 chain: re-validate epoch when a parent lands, and seed the anchor by decision
Two findings close here.

The epoch bound ran once, at arrival, against a parent the sender chose not to
have sent yet. A child delivered before its parent was admitted as an orphan at a
stale epoch, and nothing re-read it when the parent became tracked — so a
departed coalition holding no stake in the live set reached VM.Accept at Quasar
(export) finality. The child's epoch is now re-checked against its parent at the
point the parent becomes tracked, and a regressed child is refused there, closing
the ordering the attacker picked.

And the build anchor / hint was seeded from an envelope id where it must be
seeded from the inner canonical decision, so a sibling wrapper of the tip's
execution read as a different anchor and the anchor could regress. It routes
through decision() now — the one canonical-vs-envelope primitive — so two
wrappers of one execution seed the same anchor and it never moves backward.

Full engine/chain suite green: no regression against the eight findings already
closed on this branch.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-21 08:37:55 -07:00
..
2025-12-19 08:49:11 -08:00