fix(stella-pipeline): verification follow-ups round 3 — flip rescues the fallback, budget stops degrade, arming symptoms recorded - #1890
Open
macanderson wants to merge 1 commit into
Open
Conversation
…the fallback, budget stops degrade, arming symptoms recorded Three decisions from the verification audit backlog, decided and shipped: - #1788: heuristic_fallback passes on an observed fail→pass flip. A verifier OUTAGE is the absence of a checker, not a refutation, and it must not outrank the strongest deterministic evidence the crate has — before this, a flip-verified candidate whose diff ran over budget was driven to VerificationFailed by a provider being down. With nothing deterministic positive the fallback still fails closed. Inverts the 'even a flip doesn't rescue' pin, with the reasoning recorded. - #1789 (partial): a budget stop during witness authoring or repair degrades instead of discarding the worker's completed change — the budget guard still gates every later paid call, so degrading cannot overspend; and the stage's two workspace expects become degradable aborts, per its own produce-vs-trust contract. The e2e for the complete-without-further-spend ending stays open on the issue. - #1790: a witness whose arming failure was a build failure is RECORDED (witness_baseline=build_failure in the verifier's evidence, plus a warning), deliberately not refused — refusal would reject the most common Rust witness shape, where a missing-API test fails to compile on the old code by design. - #1786 (measurement half): the management-prompt module doc records the measured prefix sizes — no fixed block clears Anthropic's 1024-token minimum alone; the raw calls need an agents.<role>.prompt override to cache, while the witness author's engine turn crosses the minimum within its first tool round-trip. Closes #1788 Closes #1790 Closes #1786 Refs #1789
Contributor
There was a problem hiding this comment.
Sorry @macanderson, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
This was referenced Aug 6, 2026
Contributor
Reviewer's GuideAdjusts verification pipeline behavior to treat verifier outages and budget stops as degradable conditions rather than hard failures, records build-failure witness baselines as explicit evidence instead of rejecting them, and documents measured cache/prefix behavior in the management prompt module. File-Level Changes
Assessment against linked issues
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
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.
What this is
Round 3 of the verification-role work (#1798, #1813 were rounds 1–2): three decision-gated issues from the audit backlog, decided with the reasoning recorded in code, each with a witness test.
The decisions
A verifier outage is not a refutation (
Closes #1788).heuristic_fallbacknow passes on an observed fail→pass flip, not only on green touched tests. The asymmetry it closes:Unverifiableabstains when the evidence is absent, but a missing checker drove a flip-verified candidate (diff over budget → ModelVerdict → provider down) toVerificationFailed— the checker's absence treated as the work's failure. With nothing deterministic positive the fallback still fails closed. This deliberately inverts the "even a flip doesn't rescue an unconfirmed suite" pin; the test now states why.The scaffolding's budget must not discard the work (
Refs #1789— the reclassification + de-panic half). A budget stop during witness authoring/repair wasrejected, aborting a candidate whose worker change was already complete. It degrades now: the budget guard still gates every later paid call (no overspend is possible), and what degrading buys is the deterministically-resolvable endings — a warranted waiver, an abstention — that need no further spend. The stage's twoexpects on workspaces became degradable aborts, per its own produce-vs-trust contract. The issue stays open for the end-to-end complete-without-further-spend scenario.A build-failure baseline is recorded, never refused (
Closes #1790). Resolved per the on-issue analysis: refusingSymptomClass::BuildFailurebaselines (the issue's original framing) would reject the most common Rust witness shape — a missing-API test fails to compile on the old code by design. Instead the arming failure's class is recorded (witness_baseline=build_failurein the verifier's trusted evidence, plus a run warning), so a compile-armed flip is visible to the verdict and to anyone reading the evidence — the honest treatment for a shape that is legitimate for missing-API goals and identical to two-tree environment drift.The cache-minimum measurement is a stated fact (
Closes #1786— the split landed in fix(stella-pipeline,stella-cli): verification follow-ups round 2 — role tuning parity, policy reach, cache-stable witness prompt, scoped goal verifier #1813). The management-prompt module doc records the measured prefix sizes: no fixed instruction block clears Anthropic's 1024-token minimum alone (verdict ~520, witness author ~620); the raw calls cache only with anagents.<role>.promptoverride padding the prefix, while the witness author's engine turn crosses the minimum within its first tool round-trip — which is exactly where fix(stella-pipeline,stella-cli): verification follow-ups round 2 — role tuning parity, policy reach, cache-stable witness prompt, scoped goal verifier #1813's split pays.Witness tests
heuristic_fallback_passes_only_on_confirmed_green_tests(inverted pin + new no-evidence case),a_build_failure_baseline_is_recorded_and_an_assertion_one_is_not. Both fail on main.CI note
Until #1859 (witness_stage clippy, merged with #1813's premature auto-merge) and #1845 (file-size baseline skew:
deck_render.rs+3) land, the required job is red on those pre-existing steps — none are in hunks this PR touches. I'll update-branch after they merge. Coordination: my #1795 implementation was dropped from this round in favor of the more complete open #1867; my duplicate unbreak #1874 was closed in favor of #1859/#1845.Still tracked
#1787 (structured verdict output, per-candidate degradation records), #1789 (the e2e half), #1793 (FlipHalt — gated on a loop-bench measurement), #1794 (semantic witness review — needs its design pass; recommendation on the issue is extending the mutation audit to flip-corroborated ModelVerdict passes).
Closes #1788
Closes #1790
Closes #1786
Refs #1789
Summary by Sourcery
Adjust verification pipeline behavior to treat verifier outages, budget stops, and build-failure witnesses as recorded, degradable conditions rather than hard rejections, and document cache minimum measurements for management prompts.
Bug Fixes:
Enhancements:
Tests: