plan: preserve declared evidence from measured failures - #101
Open
tlrmchlsmth wants to merge 3 commits into
Open
plan: preserve declared evidence from measured failures#101tlrmchlsmth wants to merge 3 commits into
tlrmchlsmth wants to merge 3 commits into
Conversation
Add an isolated failure-file channel for epilogue reporting, project the opt-in onto the admitted-plan wire contract, and document the candidate RFC amendment. Refs: WI-2026-09-03-001 Signed-off-by: Tyler Michael Smith <tlrmchlsmth@gmail.com>
tlrmchlsmth
force-pushed
the
failure-evidence-files
branch
from
September 3, 2026 21:36
cd6bc8c to
de14996
Compare
…exit An epilogue's file producers were only main-graph tasks, so an epilogue that consumed another epilogue's declared files lost them. Candidates are now its ancestors plus the main graph. The executor flagged a failed producer by mutating capture_on_failure on a staging clone, and the harness probed the filesystem to guess whether a set was published. TaskRunner gains has_captured_files; the executor drops a failed producer whose set was withheld before staging, and the harness answers from its own state. Both ceiling checks overwrote the halt reason, so an epilogue crossing the budget after a required failure reported budget-exceeded instead of the short-circuit. The first halt reason now wins. capture_on_failure on an epilogue task is refused: its files are never staged anywhere. Executor tests cover the epilogue ordering, the failure path, ceiling blocking, exit labelling, and file staging for ancestors, captured failures, and withheld sets. Assisted-by: Claude
Regenerate the RFC-0001 render after both sides amended it, and give the work item the next free ID: main's neuralmagic#104 took WI-2026-09-03-001. Assisted-by: Claude
Contributor
|
superceded by #105 |
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.
Summary
capture_on_failureto isolated, non-mappedcommandandevaluatetasks that declareemits_filesinputs/<producer>/<declared-path>plan_admitted, defaulting older events tofalseWhy this is useful
A certain backport workflow needs two things to happen when a measurement fails:
Today those requirements conflict with the playbook workspace contract: a failing task does not contribute its workspace writes. The pack therefore makes producers such as
repro,build, andconfirmalways settle successfully so theirevidence/*.jsonfiles survive, then adds a separaterepro_ok,build_ok, orconfirm_oktask to fail the graph. Reporting has to correlate three things: the producer, its gate, and the shared evidence file.This change gives the workflow a direct expression of the intended behavior:
For example, a probe can fail directly while declaring
evidence/repro.jsonas retained failure evidence. The epilogue receives it atinputs/repro/evidence/repro.json. The producer now owns both the failure and its diagnostic evidence, without laundering a bad measurement through a passing task.In the current backport graph this can replace the paired gates for ten non-mapped command producers: resolve, spec, rig baseline, repro, build, candidate rig, confirm, regress, deliver, and rig teardown. It intentionally does not cover the mapped skill producers behind
review_okandauthor_repro_ok; those gates must remain or be folded into a separate non-mapped validator. The domain migration will also need to make reporting a true epilogue and read producer-namespaced inputs.Contract and safety
emits_filespath is requiredThe restrictions on isolation and mapping are deliberate. They avoid retaining a failed shared workspace and avoid using untrusted mapped instance keys as filesystem namespaces.
Verification
cargo test --workspacecargo clippy --workspace --all-targets -- -D warningscargo fmt --all -- --checkgovctl checkThe implementation is compliant with the amended candidate contract. RFC-0002 remains in its existing
specphase, so the amendment is not a sealed normative baseline yet.Refs: WI-2026-09-03-001