story-113: A refile over a failure is reported - #157
Merged
Conversation
Implemented by the l5 harness story workflow.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Story
A refile over a failure is reported.
story-095 made a terminally-failed queue entry stop suppressing a finding, which is right: a failed entry is a finding that reached nobody, and suppressing on it would lose that finding permanently with no signal. So the next inspection files it again — and the re-enqueue overwrites the entry at the same key with a fresh one, discarding the attempt count and the last error.
Those two fields are the only lasting record that filing this identity keeps failing, and
l5-statusshows a last error only for an entry that failed terminally. So the steady state was: fail terminally, refile, erase the evidence, fail the same way, erase again. A transport that is misconfigured — a bad token, a label that does not exist, an archived repository — looked exactly like one that is flaky, on every inspection, forever.What changed
The local index now keeps the keys the queue holds in the terminal failed state, and says so two ways: a count on the local-queue line, and a note beneath each brief filed over one — refiled over a terminal failure: the local queue held this key failed.
Three things about the shape:
failedis evidence and never a suppression source. story-095's rule is untouched, and the code says so where the field is declared. Nothing that decides suppression reads it.No retry ceiling, deliberately. "Stop refiling after K failures" is the suppression story-095 refused and it fails the same way: a finding that reached nobody would be lost with no signal. The answer to a filing that keeps failing is a developer reading that it keeps failing.
Evidence
tests/test_a_refile_over_a_failure_is_reported.py(610 lines); 7 files changed, +729 / −31Notes for review
The falsifiability note is worth reading rather than skimming. The verifier could not demonstrate the new tests failing: the sandbox refused the edit that would have removed the mark from
file_findingsand re-run the module. It judged falsifiability by reading the assertions instead, observing that the load-bearing ones are positive — an exact slug list, an exact failed-key set, a literal count in the printed line — rather than absence checks that would pass against a silent implementation.That is a reasonable substitute and it is not the same thing as having shown it. Worth knowing that this environment's own restrictions are what stopped the check the repository would normally insist on.
The second note is routine: the suite verdict is the coordinator's injected result rather than a run the verifier made.
🤖 Generated with Claude Code
https://claude.ai/code/session_019WkxmJ5ArLEaC2RDPGkbRU