The pre-release agent A/B (main vs v1.6.0, 7 README repos, 3 runs each)
had main returning 15% less source on vscode for the same queries, with
Reads in 2 of 3 runs where v1.6.0 had none. Replaying every query both
builds' agents issued traced it to three causes:
1. Named gaps (#1711) displaced source. Every cluster fit measured the gap
names, which on a long path run to hundreds of chars, so a class shrunk
into its file's room overran it by the names alone and was dropped
whole: rpcProtocol.ts emitted 222 of 5,496 funded chars (v1.6.0: 5,194),
and the test fixture came back as an empty fence. Fits now measure bare
gaps; names are added at assembly from what the file's budget has left.
2. Interface members (#1638) corroborated English words. The NL-stopword
guard lets a bare word seed a definition when another query word names a
symbol in the same file; `readonly host` in an options interface made
"main" seed `main()` in agentHostServerMain.ts, which took the named-first
tier from the answer files. Members declared inside an interface no
longer count as corroboration.
3. The interface-dispatch note announced dispatch through any common base,
declared or not: "`extension` -> runtime dispatch to 2706 types
implementing Disposable" opened 9 of 31 vscode answers. A supertype now
has to declare the member (it, an ancestor, or a same-named Swift
extension). When absence can't be judged, because a protocol's
requirements aren't indexed, the note stays as before.
Replayed queries, source lines vs v1.6.0 (main -> fixed): vscode 10,744 ->
12,577 (12,617), excalidraw 13,065 -> 13,698 (13,764), django 8,420 ->
8,803 (8,954), tokio 13,618 -> 14,151 (14,600), okhttp 6,511 -> 6,883
(7,090), alamofire 7,019 -> 7,249 (7,120); no query below 60% of v1.6.0.
Real dispatch notes (Alamofire adapt/retry/asURLRequest, django, okhttp)
are unchanged.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>