Skip to content

v0.9.0 — the right to retry (community stress-test fix)

Choose a tag to compare

@anlor1002-alt anlor1002-alt released this 11 Jun 15:48

v0.9.0 — the right to retry

A community member cloned this repo, read all ~2,400 lines, reproduced the benchmark, and then broke the design with two lines of experiment:

Fix changing timeout 5000 -> 30000: same fingerprint? true
Fix changing "admin" -> "superuser": same fingerprint? true

Because literals collapsed to STR/NUM, a legitimate parameter retry shared a fingerprint with the failed attempt — so the tool hard-blocked the correct fix with "change strategy" (when changing the constant WAS the strategy). Worse: the benchmark's own disguise list defined literal changes as matches, making its "0 false blocks" structurally circular. The biggest false-positive class lived outside the measurement.

They proposed the fix. It's shipped, exactly as designed:

Changed

  • Hard blocks now require a raw-channel match — same code, constants included (only whitespace/comments stripped). Changing a constant or string is never denied.
  • Collapsed-only matches (same shape, different values) get an advisory note and one hearing. A variant that fails earns its own record — its verbatim repeat then blocks.
  • Retire-on-pass is raw-keyed: timeout: 30000 passing does not acquit timeout: 5000's failure.
  • Batch attribution disclosed: when one run fails N edits, block messages admit "attribution is approximate" with an rl unblock pointer.
  • Benchmark rewritten in three honest categories: 60/60 cosmetic re-applies hard-matched - 40/40 literal variants routed to note-not-block (0 wrongly blocked) - 0/190 distinct fixes matched.

86 tests - zero dependencies - this changelog keeps its own ledger honest.