mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
ddff171532
A manifest entry cannot target code that does not exist at its own HEAD — the anchor pre-flight refuses — so a gap closed on an unmerged branch had nowhere to be recorded, and the entry would go fatal the moment that branch merged. `ratchet` is a SECOND declared state for the same mutation, measured at a named commit. The runner checks the entry's own state first and the ratchet second, and reports which one the tree is in (RATCHETED). An outcome matching NEITHER state is still fatal, and both states name their failing tests exactly, so this buys tolerance of someone else's merge without buying laxity. Five gaps have ratchets, each measured by running this gate against the fix branch rather than taking its word: page-cap/halved-to-10, page-cap/cut-to-5 — closed at 67c2c8c5c4 (Q1), which gives the cap a two-sided guard; 3 of the now-7 bounds tests fail at cap 10 and the same 3 at cap 5, where all 6 passed before. goldenmaster/redsignalknown-family-scope, goldenmaster/failcount-min-not-max, aggregation/softclass-any-not-every — closed at 3c1177838f (Q4), each by exactly one new heterogeneous-family fixture. `pendingSources` records the two fixes that cannot be seeded yet: Q2's PB evaluator work is still in flight, and Q3's ladder-gap carve-out does not exist at this manifest's `measuredAt` (verified against 49bf40943f: it moves none of the 21 existing verdicts). Without that list the knowledge evaporates exactly the way the hand-written mutations did. Also: retry a NON-MEASUREMENT once. A vitest killed by its own internal timeouts under machine load says nothing about whether a guard has teeth — one run died at 161s without writing its JSON report, which reported as a false FATAL. Retrying a real SURVIVED would be corner-cutting; retrying a non-measurement refuses to guess. The dashboard timeout goes to 10 minutes for the same reason, still well below the 25-minute spike-test hang. `--check` now works on a dirty tree, since it only reads.