fix(stella-pipeline): bound the oracle trace at the verifier-prompt ingress (#1787) - #2012
Merged
Merged
Conversation
…ngress The trusted evidence summary rode into the verdict prompt with no length bound on its one growing channel: oracle_trace gains an observation per verification round, and the repair gate can keep granting rounds as long as a measured budget affords them — the diff has a token budget, the trusted zone had none (#1787's folded-in item). Bounded where the prompt value is constructed (the #1932 rule), to the newest 24 observations with the drop stated in-band, so a verifier reads 'earlier observations exist' rather than a trace that silently starts mid-run. The stored ladder snapshot keeps the full trace; provenance rendering is deliberately untouched. Refs #1787
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
|
Contributor
Reviewer's GuideBounds the oracle trace rendered in the verifier evidence summary to the newest 24 observations, with an in-band indication of omitted earlier observations, and adds tests to verify both pathological and ordinary trace behaviors remain correct. File-Level Changes
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 & why
The last unbounded ingress into the verdict prompt, and the item #1787 folds in
at the end of its body:
verifier_evidence_summaryrendersoracle_tracein full. That trace gains anobservation per verification round, and the repair gate (#1479) keeps granting
rounds for as long as a measured budget affords them — so the one channel that
grows without limit was also the one channel with no ceiling. Every other input
to that prompt is bounded: the diff has a token budget, recall frames have
bound_recalled_frames, andVerdict::reasoninggot its cap in #1932.Bounded to the newest 24 observations, with the drop stated in-band:
Three choices worth naming, because each has a wrong-looking alternative:
a trace clipped from the front would hand the verifier a history that stops
before the evidence.
run — the verifier would draw conclusions about a first observation that was
not the first.
That is the same "structural, not by convention" rule fix(stella-pipeline): bound the verdict reasoning at the point it is constructed (#1787) #1932 applied to
reasoning, and it is why the storedLadderSnapshotandverdict_provenanceare deliberately untouched: the bound is on the promptingress, not on the record.
24 is sized far above a normal run (a baseline plus a handful of rounds), so
the bound only ever bites a pathological loop. It is a named constant next to
its rationale rather than a literal.
The witness
a_pathological_oracle_trace_is_clipped_with_the_drop_stated— a 100-observationtrace renders exactly 24 entries behind the
…76 earlier observation(s) omitted →marker, and still ends on the newest observation.an_ordinary_oracle_trace_renders_unchangedis the other half, and the onethat matters for regression: a 5-observation trace is asserted byte-identical
to
render_oracle_trace, main's own unbounded function, which is stillpresent and still used for provenance. So every prompt the bound does not bite
is unchanged to the byte — which also means no verdict-reuse digest (#1431)
moves for an ordinary run.
Honest note on "fails on main": these pin a bound that does not exist on
main,so the failure there is that
bounded_oracle_traceis not defined — the sameshape as #1932's witnesses for the
reasoningcap, and the shape any"add a missing ceiling" change has. The behavioural claim is carried by the
second test, which compares against main's function directly rather than
against a copied expectation.
The gate
cargo test -p stella-pipeline— 585 + 5 + 2 + 5 + 6 + 4 = 607 passed, 0 failedcargo clippy -p stella-pipeline --all-targets— cleancargo fmt --check -p stella-pipeline— cleanscripts/check-file-size.sh— OK, none grew (evidence.rswas extracted frompipeline.rsprecisely so this kind of channel can be added without touchinga god file, and that still holds)
Full workspace left to CI.
Nothing left behind
Refs #1787, deliberately notCloses— this is the folded-in bound only.Item 1 (a provider-parity-aware structured verdict output path, invariant 8)
remains open and is being approached from a different angle in #1964; item 2
shipped as #1932 and item 3 as #1951.
Refs #1787
Summary by Sourcery
Bound the oracle trace rendered in verifier evidence summaries and added tests to cover the new trusted-zone length cap.
New Features:
Tests: