Repository navigation
fix(goal): move past a failing ledger check unless proof is required - #666
Merged
Merged
Conversation
Without --require-proof the ledger is documented as a record, but a model-written check that kept failing still stopped the run: two identical failures tripped the non-convergence guard, and a missing program tripped the environment guard. Live runs on gpt-5-mini hit both. A PowerShell quoting mistake made one check unpassable, and for "run these two commands and report" the planner wrote checks for files it invented, then spent the run creating those files. In a run that does not require proof, such an item is now marked abandoned: unproven on the record with the failure that gave it up. The run moves to the next item and the counts tied to the old check are cleared. The abandon mark is carried through the status merge like a proof, so a worker write in the same window cannot drop it. The model sees abandoned items as [-] in its plan, is told once when the plan closes which items were left unproven, and is told that a check it believes is wrong is to be reported, not worked around. The planner is told that an objective whose result is only a report has no checkable items, and an empty plan now builds in an advisory run instead of stalling. With --require-proof nothing changes: the item stops the run and an empty plan stalls it. A repeated evaluator refusal with no check failure in it still stops either kind of run. Signed-off-by: Ion Alpha <contact@ionalpha.io>
A run that does not require proof can now finish with ledger items left unproven. The model is told to name them in its answer, but an operator should not depend on that. flynn goal now prints, after the answer, how many planned items were proven and each one that was not, with the failure that made the run move past it. Signed-off-by: Ion Alpha <contact@ionalpha.io>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
What
Without
--require-proof, a ledger item whose model-written check fails the same way twice, or names a program the host does not have, is now left unproven on the record and the run moves to the next item. Previously the run stopped. A planned goal now ends by printing how many items were proven and naming each one that was not. With--require-proofnothing changes.Why
The ledger is documented as a record unless
--require-proofis set, but a failing check still stopped the run through the non-convergence and missing-program guards. On live runs with gpt-5-mini, a PowerShell quoting mistake made one check unpassable. For "run these two commands and report", the planner wrote checks for files it invented, and the worker spent the run creating them. Published results point the same way: model-written test oracles are often wrong (46% accuracy for GPT-4.1-mini in Nexus, arXiv 2510.26423), and models given a visible check that conflicts with the task often game it (54% for GPT-5 on ImpossibleBench, arXiv 2510.20270).How to verify
go test ./goal/ -run 'Advisory|RequiresProof|RepeatedRefusal|AbandonMark|EmptyPlan'covers both modes. With the move-off switched off, the three advisory-mode tests fail; with the merge not carrying the mark, the merge test fails.go test ./mission/ -run 'Brief|Check|Plan'covers what the model is told:[-]marks, the one-time closing note listing unproven items, and the wording that a wrong check is to be reported, not worked around.go test ./cmd/flynn/ -run LedgerOutcomecovers the end-of-run lines.Notes for reviewers
mergeLedgerlike a proof, so a worker write in the same window cannot drop it or restore the abandoned item's feedback.EmptyLedgerstill stalls a run that requires proof). The trade-off: a model can skip planning in advisory mode, which loses no enforcement, since completion there was already the model's call.