Status
Discussion — flagged during PR #684's own mutation verification; no maintainer decision yet.
Owning outcome
A regression that re-adds wholesale state_snapshot / question_queue comparison to _cash_recompute_drift is caught by a red test, not discovered by the next user whose recompute legitimately moves a derived object.
The gap
PR #684 (issue #665) replaced the drift gate's wholesale comparisons with the positive CASH_RECOMPUTE_SOURCE_FACTS list. During review, a discriminating mutation showed that re-adding the two wholesale entries stays green on every existing test: with the frozen market frame in place, state_snapshot and question_queue are byte-identical across the recompute on every fixture in mock/, so the wholesale comparison is inert — today.
It stops being inert the day an accepted anchor's effects reach either object (a future cash-aware question, a snapshot key derived from cash). At that point the reintroduced comparison would re-create #665's refusal — and nothing red precedes it.
Pinning it needs a fixture where the anchor actually propagates into a derived object under comparison; none exists in mock/. This is the "structural gate proves presence, not value" failure shape this repository has recorded before.
Evidence
Synthetic/mechanism-level only; no real trade data. Provenance: review of PR #684, refs #665.
Status
Discussion — flagged during PR #684's own mutation verification; no maintainer decision yet.
Owning outcome
A regression that re-adds wholesale
state_snapshot/question_queuecomparison to_cash_recompute_driftis caught by a red test, not discovered by the next user whose recompute legitimately moves a derived object.The gap
PR #684 (issue #665) replaced the drift gate's wholesale comparisons with the positive
CASH_RECOMPUTE_SOURCE_FACTSlist. During review, a discriminating mutation showed that re-adding the two wholesale entries stays green on every existing test: with the frozen market frame in place,state_snapshotandquestion_queueare byte-identical across the recompute on every fixture inmock/, so the wholesale comparison is inert — today.It stops being inert the day an accepted anchor's effects reach either object (a future cash-aware question, a snapshot key derived from cash). At that point the reintroduced comparison would re-create #665's refusal — and nothing red precedes it.
Pinning it needs a fixture where the anchor actually propagates into a derived object under comparison; none exists in
mock/. This is the "structural gate proves presence, not value" failure shape this repository has recorded before.Evidence
engine_state/engine_cardwhole → RED; appendstate_snapshot/question_queuewholesale entries → GREEN across the success, frame-gone and replay tests.skills/fomo-kernel/engine/review.py,CASH_RECOMPUTE_SOURCE_FACTSand_cash_recompute_drift.Synthetic/mechanism-level only; no real trade data. Provenance: review of PR #684, refs #665.