Repository navigation
feat(submitqueue): code-aware jev scorer, scoring benchmarks, and a speculation liveness fix - #1
Merged
Merged
Conversation
A funded path whose build was never dispatched stayed cancelling after a speculate run broke, superseded or user-cancelled it. Only the next run's read moved it to cancelled, and a quiet queue sends no next run: no build exists to signal, so the path held its budget slot forever and wedged every batch behind it. Seen at buildBudget 2, where two such paths filled the budget and the queue stalled with batches in speculating. A pending path the run's own read found no build for is now cancelled outright when it is marked. The build stage starts only pending paths and the poll loop already stops builds for cancelled paths, so a build dispatched after the read is still stopped.
…benchmark - jev: a content scorer that prices a batch with a System One decision model behind a LiteLLM proxy, with a shared price cache and a fallback scorer. - changediff: a new extension returning each change's diff and, optionally, its modified files in full and package-scoped callers of changed declarations and definitions of called functions, read from the orchestrator's git copy. jev sends it as annotated repository context under configurable byte caps. - oracle: a benchmarks-only scorer pricing batches from recorded outcomes, the ceiling other scorers are measured against. - replay: a benchmarks-only build runner answering builds with recorded CI outcomes and durations, and tool/replaybench to build datasets and sandboxes from GitHub merge-queue history. - RFCs: code-aware-scoring and replay-benchmark.
Generates Go changes by mutating a seed repository into safe and unsafe variants balanced across size tiers, labels each by building and testing it, writes a replay-format dataset and sandbox, and grades jev against a size baseline offline. Indexes the code-aware-scoring, replay-benchmark and synthetic-corpus RFCs.
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.
Why?
SubmitQueue's speculation ranks builds by each batch's probability of succeeding, and the shipped scorer prices every batch at a flat 0.5. This branch explores a code-aware scorer backed by a System One decision model (TypeSafe Jev, reached through a LiteLLM proxy), and builds the infrastructure to measure whether it beats simple baselines: an oracle ceiling, a real-history replay benchmark, and a synthetic corpus with build-verified labels. Along the way it fixes a speculation liveness bug the experiments exposed.
What?
Three commits, reviewable independently:
fix(submitqueue): cancel undispatched paths in the run that breaks them— a funded path whose build was never dispatched stayedcancellingafter its guess broke, holding a budget slot until a later speculate run that a quiet queue never sends. AtbuildBudget: 2this wedged the queue with batches stuck inspeculating. Such paths are now cancelled in the run that marks them. Includes a regression test that fails without the fix. Self-contained and suitable for upstream on its own.feat(submitqueue): add jev scorer with code-aware context and replay benchmarkscorer/jev— scores a batch through the proxy with a shared price cache, a fallback scorer, and configurable byte caps.extension/changediff— new extension returning each change's diff and, optionally, modified files in full and package-scoped references (untouched callers of changed declarations, definitions of called functions), read from the orchestrator's existing git copy. Jev sends them as an annotatedrepository_context.scorer/oracle— benchmarks-only scorer pricing batches from recorded outcomes; the ceiling for comparisons.buildrunner/replay+tool/replaybench— benchmarks-only replay of GitHub merge-queue history: fetch attempts, rebuild each PR's change on an epoch base, answer builds with the recorded CI outcome and duration.doc/rfc/submitqueue/code-aware-scoring.md,doc/rfc/submitqueue/replay-benchmark.md.feat(tool): add jevcorpus synthetic scorer corpus— generates Go changes by mutating a seed repository, labels them by building and testing, writes a replay-format dataset, and grades jev offline. RFC:doc/rfc/submitqueue/synthetic-corpus.md.Everything new is opt-in configuration; existing queues behave as before.
oracleandreplaylog a warning when configured and are documented as never for production.Findings so far (details in the RFCs)
jev.diff.maxDiffBytes/maxContextBytes; the code defaults are far larger.Test Plan
make lint,make check-gazelle,make check-tidy,make check-mockspass.make test: 154/155 pass. The one failure,//tool/compose:compose_test, fails identically onmainwithout these commits (a macOS/varvs/private/varpath assertion introduced upstream in chore(docker): supply docker compose via Bazel uber/submitqueue#830), so it is unrelated.make e2e-git-testpasses (needs--spawn_strategy=localon macOS, where Bazel's sandbox blocks Docker buildx).replaybenchverdict logic, profile wiring for jev/oracle/replay, and the speculation regression test.Issue
None — exploratory work on this fork.