roust / research

How roust is developed: flag-gated hypotheses, a two-set gate, and a public ledger of what failed.

research/
├── the-loop # hypothesis, gate, ledger
├── the-dual-gate # why one benchmark is not enough
├── what-was-adopted # the six changes that survived
├── what-failed # nine mechanisms and one shared cause
├── where-the-record-lives # issues, writeups, artifacts
└── open-problems # what is still unsolved

the-loop/

one experiment round
1. mine        find the failure in existing artifacts before writing code
2. implement   behind a flag, defaults byte-identical to main (proven, md5)
3. gate        tuning set AND held-out set, same protocol, paired statistics
4. decide      adopt as default, or write the null up with its anatomy
5. record      artifacts committed, ledger comment on the campaign issue

Step 1 is load-bearing. Two rounds were killed by mining alone, for the price of a script: issue-mention gating (1 of 499 gold files was actually named by filename in its issue) and the general displacement guard (culprit fires were shape-identical to the fires behind the adopted wins).

the-dual-gate/

Adoption requires a win on SWE-bench Lite and on the 407 held-out Verified instances, which no tuning decision is ever made on. This has caught two mechanisms that looked good on the tuning set and were negative held-out — query-type routing and one sibling-expansion variant. Both would have shipped under single-set evaluation.

what-was-adopted/

what-failed/

rejected, with artifacts
neighbor score smoothing      FILE +1 is churn (p=1.0); hub guard taxes gold
chunk-max file scoring        FILE +0.3, FUNCTION -2.7 (budget shrinkage)
chunk ranking, decoupled      tax halved; residual from list composition
query-type routing            Lite +1.7 LINE, Verified -2.2 FUNCTION
static test bridge            no bridged file was ever a missing gold file
sibling-sweep expansion       FUNCTION 53.3 -> 27.7 (depth charged too early)
universal indexing            FILE 46.4 -> 31.2 (boilerplate displaces code)
newcomer reserve budget       buys template admissions at region cost
issue-mention gating          1 of 499 gold files named in its issue

Three of these share one cause, which is the most useful thing the campaign found: in this corpus, gold files are disproportionately large and central. Any mechanism that redistributes weight away from large central files taxes the files it was built to rescue — whether it does so through graph-hub exclusion, score damping, or selection-list composition. The interventions that worked instead changed the budget economy directly, or added evidence-gated boosts that fire rarely on strong signals.

where-the-record-lives/

open-problems/

Line-level mean fraction is .527 against a measured lexical ceiling of .93 for this corpus. The residual is dominated by patches that touch many sibling functions, where no single-site mechanism suffices. File ranking trails trained retrievers by roughly seven points on the depth-aligned metric. Both are documented rather than papered over.

continue/
├── getting-started # install, CLI, agent integration
└── benchmarks      # how every published number was measured
MIT License github.com/narehart/roust