Files
consensus/engine
zeekayandHanzo Dev 5047aa38bc test(quasar): assert the export guarantee the design makes, not a stronger one
TestNovaQuasarMatrix_FourOfFive_ExportsQuasar and _Partition_MajorityProducesNeither
Exports failed roughly one run in three under full-suite CPU load, both with the same
signature — tips=map[], nothing exported at all, after a 25s wait. An export-liveness
test failing a third of the time trains a reader to re-run instead of read, which is
how a real failure gets waved through.

It was not slowness and not a too-short bound. promoteQuasar emits an export cert only
for a block whose OWN Nova cert carried >⅔ of stake; a block finalized on the bare α
quorum without that supermajority attesting in its round stays Nova-only PERMANENTLY,
and that is deliberate — "no per-block retroactive promotion is needed for liveness"
precisely because a later fully-voted block carries the frontier past it, and a Quasar
tip finalizes all its ancestors.

So the guarantee is at the FRONTIER, across blocks. Both tests demanded that one
specific block export while building no successor, which is a strictly stronger claim
than the engine makes. On any run where height 1's cert completed on the minimum
quorum, the frontier had nothing to ride and the assertion reported the empty tips of a
correctly-behaving fleet. The partition test had the same shape one level up: it drove
heights only to a cap of 8, then sat in a 25s waitFor building NOTHING — waiting for an
event that by construction nothing could now cause.

Both now drive successive honest heights until the frontier moves, bounded by exportTO.
Nothing is weakened: the FourOfFive invariant moves from the tip to blk's own HEIGHT,
which is where "no two conflicting Quasars at one height" actually lives — a Quasar tip
finalizes its ancestors, so comparing the tip to blk flagged honest frontier progress
as a fork.

Verified: 8/8 FourOfFive, 6/6 the whole matrix family. Runtime drops with the timeouts.

Ruled out by execution, recorded so it is not retried: forcing prodParams5Fast
(RoundTO 200ms) makes it fail MORE, not less — repolls advance the round and votes are
round-scoped, so a shorter round splits the tally across rounds and the cert never
reaches ⅔.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-08 06:41:14 -07:00
..
2025-12-19 08:49:11 -08:00