Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
312 commits
Select commit Hold shift + click to select a range
f01bdd7
docs(CHANGELOG): owner-hop measured row counts from the final head (1…
barefootski Oct 8, 2026
bdf3961
for: the common-word table is searched and checked with rw::sortutil:…
barefootski Oct 8, 2026
a12ab43
feat(map): inventory tier names or counts every file the ranked rows …
barefootski Oct 8, 2026
a058223
fix(taskroute): a non-ASCII --help-task prompt is not a sanitizer err…
barefootski Oct 8, 2026
964cc17
wrap: recommend plain --for (the default budget), not --token-budget=…
barefootski Oct 8, 2026
880e431
for: the via="name" clause only owner rows switch on is exempt from t…
barefootski Oct 8, 2026
99ed07d
test: ownerhopcheck (R) pins exact calls again on the five questions;…
barefootski Oct 8, 2026
1c9ca31
test: ownerhopcheck (C/scoped) pins the canonical next= for a cut met…
barefootski Oct 8, 2026
71c72c3
test(wrap): the --max-tokens recipe arm asserts the --for line exists…
barefootski Oct 8, 2026
f6aa106
fix(history): a git history walk that could not be read is disclosed,…
barefootski Oct 8, 2026
084376c
feat(map): --no-inventory, runaway guards for the inventory tier, gat…
barefootski Oct 8, 2026
5733048
fix(crossref): the cross-branch verbs refuse when the blob batch cann…
barefootski Oct 9, 2026
e064e04
for: the qword legend says the name is case-folded with leading _ # $…
barefootski Oct 9, 2026
de91903
Merge branch 'main' (train-26a, 60dd3b3f) into ripwire-ruby-a2 — kPar…
mpapis Oct 9, 2026
c67a264
test(compactlegend): re-pin the map legend for the inventory readings…
barefootski Oct 9, 2026
e0b0f83
test: the K51/K75 arms spell their verdicts on wrapped lines (gateexi…
barefootski Oct 9, 2026
6a7ac06
feat(expand): --expand/--outline ship no ride-along map when every de…
barefootski Oct 9, 2026
455b2c7
docs(skills): orient once per session, then look up lean
barefootski Oct 9, 2026
fddd4b3
refactor(taskroute): lowerAscii is queryshape's one lowercaser, not a…
barefootski Oct 9, 2026
ab2c5cd
docs: regenerate COMMANDS.md and LIMITS.md for the lean --expand/--ou…
barefootski Oct 9, 2026
8fb1781
docs: regenerate COMMANDS.md for the lean --expand/--outline default
barefootski Oct 9, 2026
5db01c4
test(scroundtrip): the whole-file arms read a file that is cheaper th…
barefootski Oct 9, 2026
9d3815a
docs: regenerate TUNING.md and the README cap count for the lean expa…
barefootski Oct 9, 2026
3bd3bee
map inventory: house _capped/_total disclosure, TS and C# entry sibli…
barefootski Oct 9, 2026
539f055
test(mapinventory): near-miss fixtures for the trigger (an empty modu…
barefootski Oct 9, 2026
32f7620
test(shapingflag): re-pin the --max-tokens / --top-k read sites for t…
barefootski Oct 9, 2026
1347f53
map inventory: drop the redundant test-path clause from entry eligibi…
barefootski Oct 9, 2026
e09410c
map inventory: reuse the shared path splitters, split the selection i…
barefootski Oct 9, 2026
164b354
map inventory: inline the root-dir spelling (a three-line helper read…
barefootski Oct 9, 2026
eec9bdc
test: re-pin the expand-file legend (with its old-pin twin); outline …
barefootski Oct 9, 2026
4940593
docs(tuning): regenerate for the two inventory caps
barefootski Oct 9, 2026
2857f22
test(printfparity): re-pin the expand and help_all labels for the lea…
barefootski Oct 9, 2026
60a2893
test(paging): the #362 CI round — the new sweep arms fit the slowest …
usehoplite[bot] Oct 9, 2026
631d672
fix(token-budget): the gate reads the compacted body's printed price …
barefootski Oct 9, 2026
997d3d9
for: charge the <sigs> budget for the <lego>/<compose> stub it serves…
barefootski Oct 8, 2026
770a848
for: lego-charge — read servedBytes outside the ENSURES (selfcheckche…
barefootski Oct 9, 2026
e748ab0
for: lego-charge — only --token-budget is the lens's explicit <sigs> …
barefootski Oct 9, 2026
43d21e5
for: under --token-budget, <sigs> leaves room for the --with-graph bl…
barefootski Oct 9, 2026
479bb19
K29 fix round 1: true CHANGELOG disclosure wording, wrapverbscheck co…
barefootski Oct 9, 2026
acb00e3
changelog(wrap): the call-hop block vanished on 24 questions, 22 of w…
barefootski Oct 9, 2026
c199dd3
for: under --token-budget a cut <hops> and a cut <tail> name the call…
barefootski Oct 9, 2026
a8ac1d5
fix(K51): a prefix walk is labelled a floor, and git that does not ru…
barefootski Oct 9, 2026
6281926
for: with both --detail and --with-graph under --token-budget, the ra…
barefootski Oct 9, 2026
7aef0ee
test: estchargecheck #11 A7R/A7D and fordisclosurecheck #1b/#1c pin t…
barefootski Oct 9, 2026
ed4ae43
refactor(K51): the unread-walk marking is one helper, so gitLogNameOn…
barefootski Oct 9, 2026
1a8c84c
refactor(K51): the walk's exit status folds in through one helper, so…
barefootski Oct 9, 2026
788d06c
docs(K51): the deferred siblings are worded by what they print, not a…
barefootski Oct 9, 2026
75e69e0
fix(map inventory): claim an entry only by its language's convention;…
barefootski Oct 9, 2026
0baede2
fix(map inventory): a class member main is never a script entry, even…
barefootski Oct 9, 2026
9b3cd1d
fix(expand-lean): pasteable, honest continuations; quality-bar gating…
barefootski Oct 9, 2026
76da4bd
test(mapinventorycheck): a Swift method main is no entry claim
barefootski Oct 9, 2026
6e25066
for: the spent-ceiling <hops> marker counts the candidate head, not o…
barefootski Oct 9, 2026
54c0c7d
docs(CHANGELOG): lego-charge fix round 4 hop-row count from the final…
barefootski Oct 9, 2026
86ad98f
map inventory: entry styles as language lists; shorter recovery composer
barefootski Oct 9, 2026
f88781b
for: owner ruling (option B) on estchargecheck #11 A7 — both trailing…
barefootski Oct 9, 2026
879a54b
fix(paging): the #362 review round 5 — the gate keeps proving B1; the…
usehoplite[bot] Oct 9, 2026
058f963
test(ceilingverdictcheck): the kept-rows reason cannot be forged eith…
barefootski Oct 9, 2026
acd94ba
whereis: a branch row is kind="def" only for a definition's shape; a …
barefootski Oct 9, 2026
f1f11a7
whereis: the shared-definitions legend clause and refs= attribute eac…
barefootski Oct 9, 2026
fc5e58d
fix(K51): the history_unread comment names the walk, not a git comman…
barefootski Oct 10, 2026
1cfbfdc
for: the kept-rows over_ceiling note spells the flags without double …
barefootski Oct 10, 2026
a2734f6
train-26c: merge lane/owner-hop-068 e064e046 (no-ff)
barefootski Oct 10, 2026
a383599
train-26c: merge lane/cli-perf-068 93068d82 (no-ff)
barefootski Oct 10, 2026
10dbad0
train-26c: merge lane/import-capture-jsts-358 780cd126 (no-ff)
barefootski Oct 10, 2026
5394d78
train-26c: merge lane/import-capture-go-358 243d59c0 (no-ff)
barefootski Oct 10, 2026
a099154
train-26c: merge lane/wrap-recipe-k29 acb00e3a (no-ff)
barefootski Oct 10, 2026
7580f1e
trial(26c): merge PR #339 de919036 (Rails db/schema.rb columns) onto …
barefootski Oct 10, 2026
e3c3bdf
resolve: a Rule 3 proven list replacing the memoized candidates drops…
barefootski Oct 10, 2026
02329ae
train-26c: merge lane/map-inventory-d7 86ad98f4 (no-ff)
barefootski Oct 10, 2026
f4e226f
changelog: a blank line before each merged [Unreleased] block heading
barefootski Oct 10, 2026
1b9165a
train-26c: merge lane/expand-lean-k64 9b3cd1da (no-ff)
barefootski Oct 10, 2026
3121921
docs: plain `ripwire .` is the one-call orient; how we measure the cl…
barefootski Oct 10, 2026
e243b79
trial(26c): #339 train fixups — a definitions-only arm that can fail …
barefootski Oct 10, 2026
749e4cf
mcp: read grep `in` before the shared shape gate (CodeRabbit 54680034…
barefootski Oct 10, 2026
4fc704b
test(countfloorcheck): the two negative arms state their premise (Cod…
barefootski Oct 10, 2026
2e774b8
quality: two aliases converging on one current anchor fill its defect…
barefootski Oct 10, 2026
c93e56d
path: the gap rows' next= is built with nextFlag, so a path with a sp…
barefootski Oct 10, 2026
df026a3
for: the at= stamp is read once per run, not once per payment-mode re…
barefootski Oct 10, 2026
17529c1
main: a memory-guard refusal abandons the history walk instead of joi…
barefootski Oct 10, 2026
afae07f
test(localitycheck): the memo arm (10) keeps one file per directory (…
barefootski Oct 10, 2026
d95608e
test(forrankordercheck): (10c) a three-render --token-budget run read…
barefootski Oct 10, 2026
550955c
trial(26c): #339 locality arm tests Ruby locality (CodeRabbit thread …
barefootski Oct 10, 2026
8b94616
test(pargates): pagingsweepcheck's hang tripwire is 2400 s (it measur…
barefootski Oct 10, 2026
f3f3b6b
--seams: leave doc-section links out; --report: rank test-layer files…
barefootski Oct 10, 2026
cb8bb92
test(greptiercheck): (9e) reads the refusal out of the JSON message
barefootski Oct 10, 2026
264f420
Merge origin/main (0852bc0f, train 26b) into lane/whereis-defs-fix
barefootski Oct 10, 2026
cccf8d3
path: the next= flag spelling carries its `=` (nextFlag( "--expand=",…
barefootski Oct 10, 2026
0be5a67
trial(26c): mcpToolIndex uses findIndexByField instead of a hand-roll…
barefootski Oct 10, 2026
9f949e3
fix(graph): a C++ standard-member call on an untyped receiver binds n…
barefootski Oct 10, 2026
8b1f193
test(stdmembergate): a tier-3 decline is named on the <stdm> line too
barefootski Oct 10, 2026
23d828a
main: the history walk's own reader honours the abandon flag; (B21) s…
barefootski Oct 10, 2026
7d8641b
test(stdmembergate): the dead-set arm runs where it can fail; legend …
barefootski Oct 10, 2026
7601d3a
train-26c: merge lane/lego-charge 1cfbfdcc (no-ff)
barefootski Oct 10, 2026
c7147f7
train-26c: merge PR #362 879a54b4 (budgeted-bundle candidate page, @p…
barefootski Oct 10, 2026
ea7fddd
train-26c: merge PR #339 (Rails db/schema.rb columns, @mpapis) via th…
barefootski Oct 10, 2026
f9d39e2
docs: regenerate LIMITS.md (244 caps), TUNING.md and the README cap s…
barefootski Oct 10, 2026
fe388fd
--deps: read godfiles layer= only where a row carries it
barefootski Oct 10, 2026
d15c4b7
feat(callers): caller rows carry their call sites as file:line (sites…
barefootski Oct 10, 2026
53a9aaa
mcpverbs.h: restore assembleMcpFor's closing brace lost in the #362 m…
barefootski Oct 10, 2026
6274267
test: re-pin printf_parity help_all, re-anchor the tools/list ceiling…
barefootski Oct 10, 2026
854706d
fix(situ): the C++ standard-member clause stays off the budgeted --te…
barefootski Oct 10, 2026
5db0367
for/main: the render's mode is one struct; the walk readers share one…
barefootski Oct 10, 2026
2d9d405
test(usesselector): look the canonical id up independent of the symbo…
barefootski Oct 10, 2026
521d21a
fix(graph): a field written as an in-tree container keeps its hedge u…
barefootski Oct 10, 2026
acd3234
test: re-pin forrankordercheck (3) q3 and (11) @2160 for lego-charge'…
barefootski Oct 10, 2026
906d0c5
docs(changelog, graph): final numbers for the standard-member gate; t…
barefootski Oct 10, 2026
a74e2de
refactor(graph): quality-delta clean for the standard-member gate; ab…
barefootski Oct 10, 2026
761cbef
refactor(callhierarchy): one std::format spelling for the <stdm> line…
barefootski Oct 10, 2026
e74b1dc
test(estchargecheck): re-pin the floor twin, C3 and its near miss on …
barefootski Oct 10, 2026
2fbb9b7
feat(lego): list the implementors below a direct one, with via= and d…
barefootski Oct 10, 2026
aa03403
docs(legend): the standard-member clauses say "no rule tied the recei…
barefootski Oct 10, 2026
ddd516b
test(callers): carry the sites_at= change through the gates, docs and…
barefootski Oct 10, 2026
d760d56
feat(lego): implementor rows carry the definition line
barefootski Oct 10, 2026
b5ce1f8
feat(grep): serve the string tier for text-shaped literals, ranked
barefootski Oct 10, 2026
a0c3c21
feat(impact): per-file rollup of the whole reach set; umbrella import…
barefootski Oct 10, 2026
915ce7a
feat(quality-delta,edit-check): a clean answer prints its verdict, no…
barefootski Oct 10, 2026
743c253
fix(graph): the <stdm> subset check is a DASSERT, not a promise that …
barefootski Oct 10, 2026
a6223a1
feat(lego): a Ruby module mixed in is an implements edge
barefootski Oct 10, 2026
e4ac9ac
test(runhint, showcase): re-seed a graph-reach arm; re-derive the pac…
barefootski Oct 10, 2026
9fc530c
refactor(callers): keep the sites_at= plumbing out of the row emitters
barefootski Oct 10, 2026
be229e6
test(compactlegendcheck): (P4 floor twin) near miss 750 -> 900 on the…
barefootski Oct 10, 2026
6e1f03f
test(fornotesbudgetcheck): the tight rung 1100 -> 1200 and the no-not…
barefootski Oct 10, 2026
98a0827
test(readmedriftcheck): the cold-start arm (G) follows the owner's or…
barefootski Oct 10, 2026
bb78627
feat(ingest): a JS/TS class factory is a class extending its receiver
barefootski Oct 10, 2026
2971026
--deps: godfiles layer= rides after afferent=
barefootski Oct 10, 2026
4f05fce
test(forrootlegendcheck): arm 2's tight budget 850 -> 1000 on the mer…
barefootski Oct 10, 2026
eb14fd7
refactor(callers): site tokens spell their file through valuerefs.h v…
barefootski Oct 10, 2026
49c86ce
docs(tuning): regenerate TUNING.md for kCallSitesPerRowCap (151 caps)
barefootski Oct 10, 2026
e965bc4
docs(graph): two include comments lose internal coordinate tags
barefootski Oct 10, 2026
fa8185a
test(callers): absence arms read only an answer whose root was printed
barefootski Oct 10, 2026
9917682
fix(resolve): a named focus is a code definition before a docs heading
barefootski Oct 10, 2026
fb6cec4
ingest: definitionLinesInBlobs runs the index's own extraction over i…
barefootski Oct 10, 2026
319648f
whereis: another ref's kind="def" comes from a parser; a runaway guar…
barefootski Oct 10, 2026
282083f
perf(lego): one compact legend term for the closure and its row attri…
barefootski Oct 10, 2026
61cf486
whereis: computeWhereis, the tree walk, the blob parse batch and the …
barefootski Oct 10, 2026
933c439
docs/test: LIMITS.md and README's cap count for kWhereisParseMaxBlobs…
barefootski Oct 10, 2026
e516bcf
fix(legend): the compact defs= reading keeps its same-scope condition
barefootski Oct 10, 2026
c04351d
refactor(lego): the targeted verb's packLego inputs travel as one arg…
barefootski Oct 10, 2026
79552ab
test(ruby): read the Unrelated::build absence only off a run with a c…
barefootski Oct 10, 2026
612bb7c
docs: count and classify the deeper-implementor page cap; regenerate …
barefootski Oct 10, 2026
bb3fdbd
fix(help): --help's paging list names --lego
barefootski Oct 10, 2026
8903c9f
fix(cache): parser version 160, clear of 156's rich tag and train 26c
barefootski Oct 10, 2026
b61a47a
train-26c: merge lane/honesty-small-b fc5e58dc (no-ff)
barefootski Oct 10, 2026
960db34
refactor(crossref): --whereis and the cross-branch verbs refuse an un…
barefootski Oct 10, 2026
a807cea
fix(qchurn): kQChurnCacheScheme 2 -> 3, so a failed walk an earlier b…
barefootski Oct 10, 2026
064e3c6
whereis: the <unparsed next=> replays the same question — an explicit…
barefootski Oct 10, 2026
f2eaae3
whereis: name both floors a branch row's label carries — the chooser'…
barefootski Oct 10, 2026
409591b
test(crossrefdegradecheck): 6e's failure line quotes the refusal it c…
barefootski Oct 10, 2026
211125b
refactor(crossref): blobsUnreadCause formats its one sentence (std::f…
barefootski Oct 10, 2026
4d59c80
test(paging): enumerate --lego in the paging sweep; re-pin help_all
barefootski Oct 10, 2026
28b0b22
test: crossrefcheck arms for the C2 call shapes, the checklist-29 nea…
barefootski Oct 10, 2026
574f758
CHANGELOG: the tools/list manifest shrinks; the parse guard applies u…
barefootski Oct 10, 2026
11674d1
refactor(crossref): blobsUnreadCause takes which batch went unread (a…
barefootski Oct 10, 2026
e6f2201
fix(grep): document the string-tier lift in --help; queryfilescanchec…
barefootski Oct 10, 2026
2e62743
fix(impact): the file rollup rides only beside a cut window, 20 rows,…
barefootski Oct 10, 2026
ce0c3b3
fix(edit-check,quality-delta): the verdict line under every legend po…
barefootski Oct 10, 2026
65d62fe
train-26c: merge lane/whereis-defs-fix 574f7583 (no-ff)
barefootski Oct 10, 2026
11cc368
docs: regenerate LIMITS.md (245 caps) and the README cap sentence on …
barefootski Oct 10, 2026
39fd059
test: re-pin printf_parity help_all and re-measure tools/list (47,109…
barefootski Oct 10, 2026
b6f7ef3
docs: the train 26c regeneration, once, from the merged binary — show…
barefootski Oct 10, 2026
a1e005b
test(crossrefcheck): 5f/5g — the two seams the whereis-defs-fix merge…
barefootski Oct 10, 2026
6009ca6
test(showcase_capture): capture `--top-k=5 --no-inventory` (showcasec…
barefootski Oct 10, 2026
9449c6a
docs: re-capture with the --no-inventory case; COMMANDS.md (169 sampl…
barefootski Oct 10, 2026
6b1d030
changelog: the whereis entry names selectorhonestycheck's arm by what…
barefootski Oct 10, 2026
3ea4956
test(selfcheckcheck): WhereHit::inCheckout is a read-only predicate a…
barefootski Oct 10, 2026
3387386
fix(quality-delta): --show-stale gets a skill home; the deck states 1…
barefootski Oct 10, 2026
c088780
test(crashsweepcheck): register whereis's catFileBatch stream pair, r…
barefootski Oct 10, 2026
80ec96a
--report/--deps: test-layer group needs every dependent to be a test …
barefootski Oct 10, 2026
eee1ccc
fix(graph): a C++ receiver whose recorded written type names an in-tr…
barefootski Oct 10, 2026
a1ddf84
docs(changelog): the standard-member gate's receiver exception and fl…
barefootski Oct 10, 2026
5ddcb85
test(stdmembergate): a std field with no recorded type hides a namesp…
barefootski Oct 10, 2026
4c38d36
test(hazardpatterncheck): register whereis-defs-fix's four sites, eac…
barefootski Oct 10, 2026
e657f74
fix(graph): stdArrowPointee's postcondition is a range check, not a s…
barefootski Oct 10, 2026
e67719b
refactor(graph): stdArrowPointee trims with resolve.h trimWs, not a p…
barefootski Oct 10, 2026
5a20659
test(callers): near-miss arms keep non-call references out of sites_at=
barefootski Oct 10, 2026
5be5960
docs(callers): the sites_at= readings say the match is by leaf name
barefootski Oct 10, 2026
10a06ad
fix(graph): a `->` through a type alias reads its recorded target, on…
barefootski Oct 10, 2026
bab7c4f
docs: the alias rule and the optional-field / function-local typedef …
barefootski Oct 10, 2026
6b6d23c
docs(changelog): an alias of an undefined wrapper keeps its hedge thr…
barefootski Oct 10, 2026
22ce3dd
fix(grep): the shape lift yields to a full source code tier; ref= nam…
barefootski Oct 10, 2026
62594cd
fix(edit-check,quality-delta): fold only on a tree at HEAD, and only …
barefootski Oct 10, 2026
b218e4c
test: restore the edit-check caller identity arm on a --limit twin; r…
barefootski Oct 10, 2026
4893509
fix(grep): test files vote in the lift's code count
barefootski Oct 10, 2026
9bd8528
refactor(edit-check,quality-delta): no clone helper for the at-HEAD t…
barefootski Oct 10, 2026
cbbcdb2
fix(ingest): a base clause records the same-file declaration it binds to
barefootski Oct 10, 2026
6141637
fix(js): a class factory needs a class receiver or a class body
barefootski Oct 10, 2026
5c82878
fix(lego): the closure walks only extends edges the index proves
barefootski Oct 10, 2026
9095cc8
test(lego): namesake arms in five languages, Python base expressions,…
barefootski Oct 10, 2026
4d5f60a
refactor(lego): the base evidence as one function per tier; the closu…
barefootski Oct 10, 2026
3591f89
refactor(ingest): a base-clause wrapper child through wrappedBase; th…
barefootski Oct 10, 2026
ad9dd78
refactor(ingest): baseSegments finds separators with find_first_of
barefootski Oct 10, 2026
d1318ff
fix(grep): one program-code count decides the lift and the ranked win…
barefootski Oct 10, 2026
a9aec97
fix(edit-check,quality-delta): an index-hidden edit owes the rows; le…
barefootski Oct 10, 2026
62716ab
perf(ingest): base lookups read a per-file scope table, not a rescan
barefootski Oct 10, 2026
2276f2a
feat(whereis): print a long line's t= as a 200-byte preview, disclose…
barefootski Oct 10, 2026
06500f9
perf(whereis): read back only the blobs the parse batch chose
barefootski Oct 10, 2026
388e266
docs(limits): regenerate LIMITS.md for the ranked-window note on kGre…
barefootski Oct 10, 2026
ab49d62
docs(whereis): name the t= preview in --help and the CHANGELOG
barefootski Oct 11, 2026
d339adf
docs: count and classify this round's caps; regenerate LIMITS, TUNING…
barefootski Oct 11, 2026
9d43f73
refactor(whereis): shape the read-back sink and the <t_cut> writer as…
barefootski Oct 11, 2026
9f51cca
chore(quality): ack whereis-lean's measured footprint
barefootski Oct 11, 2026
44c9052
fix(lego): disclose the walk's stop below an unproven direct row
barefootski Oct 11, 2026
c368e1b
docs(ingest): kBaseScopeScanCap bounds only the unindexed fallback an…
barefootski Oct 11, 2026
1ff3059
test(lego): legotransitivecheck (UW) arms for the disclosed unwalked …
barefootski Oct 11, 2026
2e058a4
fix(legend): the compact transitive= term counts rows, not only prove…
barefootski Oct 11, 2026
752b7d3
docs(ingest): restate kBaseScopeScanCap as the scans' guard; regenera…
barefootski Oct 11, 2026
af4837c
fix(whereis): the <t_cut next=> replays the same page whole; a page c…
barefootski Oct 11, 2026
a769b39
docs(changelog): the whereis preview entry states what the fix round'…
barefootski Oct 11, 2026
269d66d
refactor(whereis): spell whereisTextCut's whole-page arm on its own (…
barefootski Oct 11, 2026
a2fdbf5
chore(quality): ack the fix round's --whereis-full-text footprint
barefootski Oct 11, 2026
a4884e4
docs(commands): document --whereis-full-text and the PREVIEW help lin…
barefootski Oct 11, 2026
14f3e53
fix(whereis): a kind-filtered page discloses that its <t_cut next=> d…
barefootski Oct 11, 2026
175b6df
chore(quality): ack fix round 2's D1 footprint
barefootski Oct 11, 2026
7e59153
train-27: merge lane/seams-doc-links 80ec96a3 (no-ff)
barefootski Oct 11, 2026
2dff70d
train-27: merge lane/cpp-builtin-member-gate 6b6d23c9 (no-ff)
barefootski Oct 11, 2026
2c8bef7
train-27: merge lane/callers-sites-first-call 5be5960d (no-ff)
barefootski Oct 11, 2026
90d73a7
train-27: merge lane/lean-trio 388e2661 (no-ff)
barefootski Oct 11, 2026
44e1be3
train-27: merge lane/lego-transitive 752b7d39 (no-ff)
barefootski Oct 11, 2026
9a7a631
train-27: versions above every live build (parser 164, cache 31, qsna…
barefootski Oct 11, 2026
48b1031
train-27: merge lane/whereis-lean 175b6dff (no-ff)
barefootski Oct 11, 2026
66ee975
docs(contributing): feature families, one shared handler each
barefootski Oct 11, 2026
aef4fe6
test(editcheckcheck): read the (e) precision absence only off a run t…
barefootski Oct 11, 2026
7f52680
test(editcheckcheck): the (k) counterpart arm reads a real unflagged …
barefootski Oct 11, 2026
05d7571
test: re-pin printf_parity and re-measure tools/list (47,383 B) on th…
barefootski Oct 11, 2026
3d39afe
test(showcase_capture): capture --show-stale and --whereis-full-text …
barefootski Oct 11, 2026
d0f7b83
docs: the train 27 regeneration from the merged binary — showcase cap…
barefootski Oct 11, 2026
005f9c7
docs(readme): 191 long flags (--show-stale and --whereis-full-text bo…
barefootski Oct 11, 2026
09fa6c7
train-27 CR pre-pass: name the safe-delete legend fields; the version…
barefootski Oct 11, 2026
9b7d0d8
docs: --quality-delta has twelve kinds in LINEAGE and EVALS (CR lens …
barefootski Oct 11, 2026
82c662f
test(ripwirepubliccheck): arm 9 re-keys the two recorded prose lines …
barefootski Oct 11, 2026
aa01a7f
fix(help, skills): --whereis-full-text's summary line ends on a claus…
barefootski Oct 11, 2026
e8e9dcb
test(rubyschemacheck): the two name-caller rows carry sites_at= (call…
barefootski Oct 11, 2026
7a2141b
test(importcapcheck): J1 looks for the walk's JS/TS branch with its l…
barefootski Oct 11, 2026
494f97b
test, docs: re-pin printf_parity help/help_all and regenerate COMMAND…
barefootski Oct 11, 2026
3c88095
for: the compact answer fits an explicit token budget where the full …
barefootski Oct 11, 2026
823aeeb
docs(contributing): where each feature family lives today, claimable …
barefootski Oct 11, 2026
e07f8f3
docs(contributing): the feature families' forms catalogue and the lan…
barefootski Oct 11, 2026
194ef63
fix(impact): a multi-definition selector's file rollup keeps the via=…
barefootski Oct 11, 2026
79a7dfa
docs(contributing): slice 4c, structural conformance (Python Protocol…
barefootski Oct 11, 2026
f696584
fix(graph): a C++ std-member call on one element access reads the con…
barefootski Oct 11, 2026
fb01047
test(stdmembergate): element near-misses — an in-tree template's oper…
barefootski Oct 11, 2026
b1b7f8a
refactor(impact): the rollup hedge set is an empty vector, not a null…
barefootski Oct 11, 2026
5cc969d
refactor(graph): the template-argument readers leave StdMemberGate; f…
barefootski Oct 11, 2026
3430d4e
test(qschemetrip): re-pin for kParserVer 166 (mirror moved in the sam…
barefootski Oct 11, 2026
c586dd3
train-27: merge lane/fix27-cpp-subscript 3430d4e8 (round-4 ninja-07: …
barefootski Oct 11, 2026
0e45f2d
test(impactimportcheck): the multidef XML arm reports through if/else…
barefootski Oct 11, 2026
173a185
train-27: merge lane/fix27-impact-multidef 0e45f2dd (round-4 textual-…
barefootski Oct 11, 2026
50dfd49
release: 0.6.7 (version, CHANGELOG section, README release notes)
barefootski Oct 11, 2026
06f0a9c
regen: showcase capture, COMMANDS, dictv, deck, LIMITS for 0.6.7
barefootski Oct 11, 2026
a666527
docs(readme): 0.6.7 release notes compare speed, bytes and memory wit…
barefootski Oct 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/pargates-shard-weights.json
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@
"legendrefcheck.sh": 4.3,
"legobundlecheck.sh": 10.2,
"legocheck.sh": 9.6,
"legotransitivecheck.sh": 2.0,
"lintbudgetcheck.sh": 16.7,
"lintcatalogcheck.sh": 1.7,
"lintcheck.sh": 3.2,
Expand All @@ -293,6 +294,7 @@
"manifestcheck.sh": 62.9,
"mapdatasectioncheck.sh": 55.0,
"mapdiffcheck.sh": 3.3,
"mapinventorycheck.sh": 2.5,
"matchcapturecheck.sh": 11.8,
"matchgrammarcheck.sh": 0.6,
"maxfilesizecheck.sh": 6.8,
Expand Down Expand Up @@ -378,6 +380,7 @@
"oswin32logiccheck.sh": 30.0,
"outlinecheck.sh": 1.5,
"overbudgetcommentcheck.sh": 0.5,
"ownerhopcheck.sh": 53.2,
"ownerscheck.sh": 5.2,
"packcallersharecheck.sh": 0.9,
"packtaskcheck.sh": 20.8,
Expand Down Expand Up @@ -544,6 +547,7 @@
"spectimingcheck.sh": 1.8,
"staleackcheck.sh": 6.1,
"statgatecheck.sh": 10.2,
"stdmembergatecheck.sh": 10.0,
"structlayoutcheck.sh": 12.0,
"sublistcountcheck.sh": 9.6,
"substrfiltercheck.sh": 42.0,
Expand Down
13 changes: 9 additions & 4 deletions .ripwire_quality_acks

Large diffs are not rendered by default.

595 changes: 585 additions & 10 deletions CHANGELOG.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.24)
# The version string lives in exactly ONE place — this project() call. --version (main.cpp)
# reads it via the generated version.h below; test/versioncheck.sh asserts the two never drift.
project(ripwire VERSION 0.6.5 LANGUAGES C CXX)
project(ripwire VERSION 0.6.7 LANGUAGES C CXX)

# ---- language standards (C++23 for our own code / C11 for the vendored C dependencies) ----
set(CMAKE_CXX_STANDARD 23)
Expand Down
123 changes: 119 additions & 4 deletions CONTRIBUTING.md

Large diffs are not rendered by default.

119 changes: 87 additions & 32 deletions README.md

Large diffs are not rendered by default.

1,589 changes: 832 additions & 757 deletions docs/COMMANDS.md

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions docs/EVALS.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ section, and it is not an afterthought.
| **Co-change / known-item evals** | `--eval`, `--eval-retrieval` (see `bench/ANSWERQUALITY.md`) | Whether the tool surfaces the other files a real historical commit touched; and known-item retrieval across four rankers. |
| **Ensemble calibration harness** | `bench/ensemblecal/` | Whether `--ensemble`'s four evidence families are actually orthogonal, how often each fires, how stable each is across commits — and the preset ladder derived from that (§9). |
| **Differential argv harness** | `test/argvdiffcheck.sh` | That a refactor changed *nothing observable*: two binaries, every argv vector, stdout + stderr + exit code byte-identical. |
| **The gate suite** | `test/regression.sh`, `test/pargates.py` | 678 gate scripts plus the determinism, cache-transparency and golden contracts. <!-- gatecount --> |
| **The gate suite** | `test/regression.sh`, `test/pargates.py` | 683 gate scripts plus the determinism, cache-transparency and golden contracts. <!-- gatecount --> |
| **`--quality-delta`** | `src/quality.h` | Ten measured code-quality failure modes, reported only where a change made them worse. |

### The labeling protocol (why the held-out eval is allowed to disagree with the ranker)
Expand Down Expand Up @@ -1160,7 +1160,7 @@ rows are hash-only — and no number resembling it will be reported from it.
**Window 1 (registered 2026-09-02): VOID for the verdict.** Until issue #381 an unconfigured install resolved every session to `treatment`, so this window had no control arm, and the registered treatment − control difference cannot be computed from it. No verdict is read from it. Its four- and six-week dates (2026-09-30, 2026-10-14) are not readout dates.

**Window 2: the readout clock restarts at the release that ships `arm=auto` as the default.** The rule is unchanged: one readout at four weeks, at least 40 recommended prompts per arm, and one extension to six weeks if the readout is underpowered.
**Window start:** PENDING (the release that ships `arm=auto` writes its release date here as YYYY-MM-DD)
**Window start:** 2026-10-11

`bench/routing_ab_report.py` reads the `Window start` line: a date gives the readout date (start + 28 days) and the one-time extension date (start + 42 days); `PENDING` gives no date.

Expand Down Expand Up @@ -5861,7 +5861,7 @@ four `--quality-delta` shapes, against 2–6 before: this lane closed `sa@key`,
shapes by absolute legend size and reports the fraction as INFO. A `legend<=payload` arm is
unsatisfiable on the case these verbs exist to handle well — a clean tree's payload is near-zero by
construction — so at 40% of a 572 B payload the whole legend would have to fit in 381 B, shorter than
the list of the ten measured kinds (eleven since 0.6.5). **A ≤40% relative ceiling for `--quality-delta` and ≤50% for
the list of the ten measured kinds (twelve kinds now, with placeholder and defect-shape). **A ≤40% relative ceiling for `--quality-delta` and ≤50% for
`--safe-delete`/`--test-gate` were considered and are recorded as UNREACHABLE rather than as missed
work**: post-fix fractions are 87.0% / 91.4% / 78.8% on the clean cases and 81.4–86.7% wherever
the payload is real. The same reasoning `test/testgatelegendbudgetcheck.sh` recorded in 2026-08-28.
Expand All @@ -5888,7 +5888,7 @@ copy here would be exactly the dialect divergence that gate exists to catch. Com
tags, wrap, stable-order defaults), seven individually invoked standalone gates (`g1freshcheck`,
`skillscan`, `htmlexport`, `compresscheck`, `handoffcheck`, `releaseinstallcheck`,
`taskroutecheck`), and a single loop
naming **678 gate scripts**, all of which exist on disk. <!-- gatecount -->
naming **683 gate scripts**, all of which exist on disk. <!-- gatecount -->

`python3 test/pargates.py . ./build/ripwire -j 6` runs the same scripts in parallel so a full
verification fits in one sitting. It does not modify `regression.sh`.
Expand Down Expand Up @@ -6196,7 +6196,7 @@ These are the exact `kind=` strings the binary emits, from `src/quality.h`:
`complexity` · `verbosity` · `nesting` · `params` · `duplication` · `dead-code` · `api-surface` ·
`error-masking` · `short-horizon-churn` · `new-clone-of-reused-helper` · `placeholder` · `defect-shape`

The first ten each target a failure mode measured in the literature; `placeholder` (added 0.6.5) is an
The first ten each target a failure mode measured in the literature; `placeholder` (added 0.6.7) is an
honesty check on "done" — a stub or TODO the change added — and never gates. `defect-shape` carries four
facets in `defect=` (`format-arity`, `utf8-cut`, `dedup-first`, `vacuous-assert`), shapes this project's own
code review kept finding; only `format-arity` gates, and on any origin (new-symbol rows never gate, except
Expand All @@ -6220,9 +6220,9 @@ output.
The verb reports only what a change made *worse*, against git HEAD. `--quality-ack` records a
reviewed exception; `--ack-only=KIND` scopes it.

### error-masking widened: log-only and rethrow-only (0.6.5) — hand-labelled precision, and which shapes gate
### error-masking widened: log-only and rethrow-only (0.6.7) — hand-labelled precision, and which shapes gate

`error-masking` counted only an EMPTY handler (empty braces, `pass`, `...`, a comment-only body). 0.6.5 adds
`error-masking` counted only an EMPTY handler (empty braces, `pass`, `...`, a comment-only body). 0.6.7 adds
two shapes from `src/handlershape.h`, walked over the same parse the query rows use:

- **log-only** — a BROAD handler (catches everything, or the root error type: `Exception`, `Throwable`,
Expand Down Expand Up @@ -6274,7 +6274,7 @@ each, 24 gating across the 40). This repository has no Python/JS handler of eith
added in that window, so on upgrade its own reports are unchanged; the replay shows the widening costs no
noise here, not that it finds anything here. The rows the shapes produce were measured on the corpus above.

### placeholder (0.6.5) — what the eleventh kind counts, and a labelled sample
### placeholder (0.6.7) — what the eleventh kind counts, and a labelled sample

A stub or TODO the change ADDED, counted per enclosing symbol and compared with the baseline like
error-masking. Every row is `origin="new-symbol"` by construction and never gates. It counts: Rust
Expand Down Expand Up @@ -7005,7 +7005,7 @@ Listed because the reason is more useful than the silence.
shipped**. See `bench/locbench/anchorhop_calib.json`. The mention anchor's reproducible numbers are
the ablations in §4.
- **A single round gate-count.** Two in-tree numbers disagree (`test/pargates.py`'s docstring says
~210; `test/argvdiffcheck.sh` says 200+), while the loop in `test/regression.sh` names 678. The <!-- gatecount -->
~210; `test/argvdiffcheck.sh` says 200+), while the loop in `test/regression.sh` names 683. The <!-- gatecount -->
loop is the authority; the stale docstrings are a known drift. Since 2026-09-10 the number is not
written by hand anywhere: `docs/gatecount_build.py` derives it from the loop and rewrites every
published site, `test/gatecountcheck.sh` fails if any of them drifts, and `test/manifestcheck.sh`
Expand Down
43 changes: 35 additions & 8 deletions docs/LIMITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ it once, marked `×N`.

| total caps | files | caps whose file discloses | caps whose file discloses NOTHING |
| --- | --- | --- | --- |
| 240 | 96 | 140 | **100** |
| 253 | 98 | 149 | **104** |

Plus 7 ranking and apportionment parameters, in their own table below: they are not caps, they
are not counted as caps, and 240 + 7 is the 247 constants this generator parses out of `src/`.
are not counted as caps, and 253 + 7 is the 260 constants this generator parses out of `src/`.

## INDEXING, OUTPUT or BOUNDARY — which half of the answer a cap bounds

Expand All @@ -38,8 +38,8 @@ None of them truncates anything, so none can be judged by `shown=`/`total=` and
a disclosure — labelling them OUTPUT would ask for a `capped="1"` that could never honestly fire.
The distinction was named in review on #108 and the rows below now carry it.

The `class` column below carries that answer where it is known. **132 of 240 caps are classified
(47 INDEXING, 41 OUTPUT, 44 BOUNDARY); the remaining 108 render `—`, which means NOT YET
The `class` column below carries that answer where it is known. **139 of 253 caps are classified
(49 INDEXING, 46 OUTPUT, 44 BOUNDARY); the remaining 114 render `—`, which means NOT YET
CLASSIFIED — never "neither".** Classifications live in `docs/limits_classes.tsv`, a sidecar with
a known expiry:
the tag belongs on the declaration itself, and this file exists only because the round that
Expand Down Expand Up @@ -89,7 +89,7 @@ refuse to write, so the column cannot be satisfied by pointing at nothing.

## Caps, by file

One table for each of the 96 files that declare a cap — the 240 caps counted above, and no parameter.
One table for each of the 98 files that declare a cap — the 253 caps counted above, and no parameter.

### `src/abicheck.h`

Expand Down Expand Up @@ -190,6 +190,9 @@ Discloses: **none**
| `kMaxRenameProbeFiles` | `32` | INDEXING | HEAD copies one rename probe reads; past it the probe stops (a hint, never a claim) |
| `kMaxWorktreePaths` | `8192` | INDEXING | — |
| `kWhereisHits` | `60` | OUTPUT | — |
| `kWhereisParseMaxBlobs` | `256` | — | — |
| `kWhereisTextPreviewCapBytes` | `200` | OUTPUT | the printed preview, the ellipsis included |
| `kWhereisTextWholeMaxBytes` | `300` | OUTPUT | a line up to this prints whole, so a cut drops 100+ bytes |

### `src/darkflags.h`

Expand Down Expand Up @@ -323,7 +326,7 @@ Discloses: `capped`, `hosts_capped`

### `src/forpage.h`

Discloses: **none**
Discloses: `capped`

| constant | value | class | note |
| --- | --- | --- | --- |
Expand Down Expand Up @@ -359,6 +362,7 @@ Discloses: `importers_capped`
| constant | value | class | note |
| --- | --- | --- | --- |
| `kChaConeCap` | `4096` | INDEXING | per-walk discovery cap, unchanged from the per-call walk |
| `kImpactFileRollupCap` | `20` | — | — |
| `kMaxEdges` | `256` | — | total emitted edge cap |
| `kMaxNodes` | `96` | — | total emitted node cap (§3 size caps) |
| `kMaxRadius` | `12` | — | — |
Expand Down Expand Up @@ -475,6 +479,7 @@ Discloses: **none**

| constant | value | class | note |
| --- | --- | --- | --- |
| `kExtendChainCap` | `16` | INDEXING | factory-of-a-factory links the receiver rule follows (nunjucks: 2); past it, no class |
| `kMaxQualifierHops` | `32` | INDEXING | `a::b::c::…` past 32 segments is not written C++ |

### `src/ingest_parsepool.h`
Expand All @@ -492,6 +497,7 @@ Discloses: **none**

| constant | value | class | note |
| --- | --- | --- | --- |
| `kBaseScopeScanCap` | `4096` | INDEXING | statements the unindexed scope scans read (not the index) |
| `kMaxImportContainerDepth` | `256` | INDEXING | — |

### `src/ingest_sidecap.h`
Expand Down Expand Up @@ -583,8 +589,18 @@ Discloses: **none**

| constant | value | class | note |
| --- | --- | --- | --- |
| `kMaxUnservedSelectors` | `16` | — | — |
| `kRecentRows` | `40` | — | F3: ~45 B a row; the file-level answer, not the file list |

### `src/mapinventory.h`

Discloses: `entries_capped`, `names_capped`

| constant | value | class | note |
| --- | --- | --- | --- |
| `kInventoryEntryCap` | `256` | OUTPUT | — |
| `kInventoryNameCeiling` | `2000` | OUTPUT | — |

### `src/mcp.h`

Discloses: `hits_capped`
Expand Down Expand Up @@ -630,7 +646,6 @@ Discloses: `capped`, `blast_radius_capped`, `calledBy_capped`, `coboost_commits_
| `kMcpPageValueMax` | `1000000000` | — | == cli.h's kPageValueMax |
| `kMcpRecallTopKMax` | `1000` | — | — |
| `kOtherDefCap` | `4` | OUTPUT | disclosure, not a listing — cap the tail |
| `kRowCap` | `100` | — | — |

### `src/mention.h`

Expand Down Expand Up @@ -708,6 +723,7 @@ Discloses: `capped`, `count_capped`, `findings_capped`, `hits_capped`, `importer
| constant | value | class | note |
| --- | --- | --- | --- |
| `kCallHierarchyRowCap` | `40` | — | — |
| `kCallSitesPerRowCap` | `16` | — | — |
| `kCochangePartnerCap` | `30` | — | — |
| `kExternalSurfaceRowCap` | `100` | — | names, by ref count (≈ 5.2 KB on this repo) |
| `kImportReachRowCap` | `40` | — | — |
Expand Down Expand Up @@ -851,6 +867,7 @@ Discloses: `hits_capped`
| constant | value | class | note |
| --- | --- | --- | --- |
| `kGrepCollectionBudget` | `4000000` | — | — |
| `kGrepLiftRowCap` | `10` | — | a RANKED code+string answer's default window (CLI and MCP alike) |
| `kGrepMatchedLineMaxBytes` | `512` | — | — |
| `kGrepTierFileBudget` | `128` | — | hit files classified per call |
| `kMaxAffixSet` | `8` | — | cap on prefix/suffix set sizes |
Expand All @@ -867,7 +884,7 @@ Discloses: **none**

### `src/serialize.h`

Discloses: `capped`, `calls_capped`, `inc_capped`, `sibs_capped`
Discloses: `capped`, `calls_capped`, `entries_capped`, `files_capped`, `importers_capped`, `inc_capped`, `names_capped`, `sibs_capped`

| constant | value | class | note |
| --- | --- | --- | --- |
Expand All @@ -879,6 +896,7 @@ Discloses: `capped`, `calls_capped`, `inc_capped`, `sibs_capped`
| `kForFileTailShownCap` | `24` | — | — |
| `kForLensDefaultTopN` | `40` | — | — |
| `kForPayloadBudgetBytes` | `7500` | — | — |
| `kLegoClosureRowCap` | `200` | OUTPUT | — |
| `kMaxExpandIncludes` | `24` | — | inc= cap |
| `kMaxExpandSibs` | `100` | — | sibs= cap — a BLOW-UP GUARD, set above the tail, not a trim of the |
| `kMaxSig` | `240` | OUTPUT | — |
Expand Down Expand Up @@ -984,8 +1002,17 @@ Discloses: `capped`, `coboost_commits_capped`, `terms_capped`

| constant | value | class | note |
| --- | --- | --- | --- |
| `kForOwnerHopRows` | `3` | — | — |
| `kJsonEnvelopeDigitsMax` | `10` | — | — |

### `src/verbs_grep.h`

Discloses: `capped`, `hits_capped`, `importers_capped`, `unindexed_candidates_capped`

| constant | value | class | note |
| --- | --- | --- | --- |
| `kGrepHitRefsMax` | `4` | — | — |

### `src/verbs_lint.h`

Discloses: `capped`, `count_capped`, `ellipsis_capped`, `findings_capped`, `hits_capped`, `rows_capped`
Expand Down
4 changes: 2 additions & 2 deletions docs/LINEAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ left to look like a paper.
| ONTO — [arXiv:2604.17512](https://arxiv.org/abs/2604.17512) | Genuinely tabular rows re-encode far cheaper as parallel arrays than as repeated per-row markup. | `--format=columnar` (`src/columnar.h`) |
| Controlled serialization study — [arXiv:2603.03306](https://arxiv.org/abs/2603.03306) | The same compact re-encoding collapses on *nested* data, and the headline savings are measured against pretty-printed JSON — a baseline minified XML already beats. | `--format=columnar` refuses every non-tabular verb with exit 1 instead of degrading quietly; the nested map is never re-encoded |
| Tokenizer and formatting cost — [arXiv:2508.13666](https://arxiv.org/abs/2508.13666) | A single characters-per-token divisor is 20–35% wrong on code, and the spread is dominated by language, not by the tokenizer. | The per-language calibration behind `est_tokens` — and the decision *not* to vendor a byte-pair table, which would buy exactness for the wrong tokenizer |
| AI-generated code smells — [arXiv:2605.02741](https://arxiv.org/abs/2605.02741) | Bloat tracks architectural decay almost perfectly, and the named failure modes are god-class growth, inline re-implementation of existing interfaces, and file separation mistaken for cohesion. | Three of `--quality-delta`'s eleven kinds: verbosity, duplication, and new-clone-of-reused-helper (`src/quality.h`) |
| AI-generated code smells — [arXiv:2605.02741](https://arxiv.org/abs/2605.02741) | Bloat tracks architectural decay almost perfectly, and the named failure modes are god-class growth, inline re-implementation of existing interfaces, and file separation mistaken for cohesion. | Three of `--quality-delta`'s twelve kinds: verbosity, duplication, and new-clone-of-reused-helper (`src/quality.h`) |
| Agent-code maintainability — [arXiv:2606.21804](https://arxiv.org/abs/2606.21804) | Classical complexity did not predict real agent-code maintenance failures. Contract drift and code growth did. | The api-surface kind in `--quality-delta`, and `--edit-check` as a standalone contract check (`src/editcheck.h`) |
| Metric feedback into the loop — [arXiv:2505.23953](https://arxiv.org/abs/2505.23953) | Feeding measured complexity back after a failed attempt raised Pass@1 from 12.5% to 35.7%; the oracle has to be re-readable, not just a verdict. | `--quality-delta` reports only what a change made *worse*, itemised, in a form meant to go back into the next prompt |
| ARISE — [arXiv:2605.03117](https://arxiv.org/abs/2605.03117) | Statement-level definition-use edges exposed as a queryable agent primitive lifted Function Recall@1 by 17 points over an unmodified SWE-agent — the graph's granularity floor, not its ranking, was the binding constraint. | `--slice=SYM[:VAR]` and the rung-2 `--slice-flow` (`src/slice.h`) — per-line def/use rows inside one resolved definition, plus the bounded transitive BFS over reaching-definition edges. **Bounded, and the output says so**: name-based, intra-procedural, no alias analysis, no control dependence, disclosed depth truncation; the paper's three-tier graph API remains a design note. The reference implementation is now published ([FARD-Lab/ARISE](https://github.com/FARD-Lab/ARISE), MIT) and was audited line-by-line against this slicer 2026-08-31 — the core reaching-definition rule matches; the divergences (their traversal is seed-variable-filtered and unbounded, ours chains operand variables under a disclosed bound) are recorded in [`EVALS.md`](EVALS.md) |
Expand Down Expand Up @@ -273,7 +273,7 @@ disclosed; it is not a lesson this tool folded, so it does not get a row above.

**Related work, not counted: [NVIDIA SkillSpector](https://github.com/NVIDIA/SkillSpector) (Apache-2.0).** The later
hardening of `src/skillscan.h` — the `--scan-skill`/`--scan-skills` scanner and the `wrap` pre-install scan — was
informed by ideas from SkillSpector, surveyed as related work: in 0.6.6, `EXFILTRATE:net-exfil` is graded by whether a
informed by ideas from SkillSpector, surveyed as related work: in 0.6.7, `EXFILTRATE:net-exfil` is graded by whether a
credential-shaped source is on the line (issue #353). No SkillSpector code or pattern text is included today. A
counted lineage row, with exact per-rule attribution, will be added once the planned port of its code-based checks
lands; until then it is not in the table above, and the counts stay at 49 repositories.
Expand Down
Loading
Loading