fix: verify every claim the compiler makes about its targets - #116
Merged
Conversation
A pass over all eleven adapters, checking each claimed path and loading mode against that client's own source or documentation. All eleven loading modes are correct — the 14x-47x standing-cost benchmark stands. Three claims around them did not survive. Aider does not read CONVENTIONS.md on its own. Its docs are explicit that the file is loaded with `aider --read CONVENTIONS.md` or a `read:` entry in .aider.conf.yml; there is no auto-discovery. Aider is one of only two eager targets, so reporting a standing cost beside a file that is never in context charged a cost nobody was paying. compile now distinguishes the three cases — unconfigured, configured but not reading, wired up — and the benchmark and README carry the same caveat. The numbers are unchanged; what they mean is not. The README's status line had drifted eight releases (still v0.15.0 at v0.23.0) and had omitted `import` since 0.16.0, because nothing checked either. The version is now stamped by site/build.mjs from package.json, so CI's --check gate catches it and the drift class is gone rather than patched. Three tests hold the paragraph to the real command surface; each was verified to fail on the exact drift it guards. The benchmark crashed after a docs edit whose backticks closed its template literal, and the failure hid behind `git diff --exit-code`, which reads "the script never ran" as "output unchanged" — the second time that pattern produced a false green. Fixed, and the gate checks exit codes explicitly. Three findings are now recorded in the adapters instead of assumed: .windsurf/rules/ is the legacy Devin path (.devin/rules/ supersedes it and wins where both exist) and is still written deliberately, since it is the form that works on current Devin and on unmigrated Windsurf; Claude Code merged custom commands into skills, so the .claude/commands/ shim is inert on current versions and kept only for older ones; and trigger: model_decision is confirmed lazy, which makes a rule with an empty description inert. A test pins the invariant that an emitted skill's frontmatter name equals its directory name — Cline drops a mismatch with a silent return null and Zed rejects it outright, so a wrong name is invisible skill loss. The invariant held; nothing enforced it. Adds 12 tests. 0.24.0.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
A verification pass over all eleven adapters — every claimed path and loading mode checked against that client's own source or documentation, since the last two releases each found a confident comment nobody had tested.
Headline: the benchmark stands
All eleven loading modes are correct. The 14×–47× standing-cost figure the project leads with is intact. Three claims around it were not.
Aider — the one that was in the published numbers
Aider does not read
CONVENTIONS.mdon its own. Its docs are explicit: it's loaded withaider --read CONVENTIONS.mdor aread:entry in.aider.conf.yml. There is no auto-discovery.Aider is one of only two eager targets, so reporting a standing cost beside a file that is never in context charged a cost nobody was paying.
compilenow distinguishes three cases:…a distinct message when a conf exists but doesn't read it, and silence once wired up. The benchmark and README carry the same caveat. Measured numbers unchanged; what they mean is now stated correctly.
README drift, eliminated rather than fixed
The status line still said v0.15.0 at v0.23.0 — eight releases — and had omitted
importsince 0.16.0, because nothing checked either.The version is now stamped into the README by
site/build.mjsfrom the samepackage.jsoneverything else reads, so CI's existing--checkgate catches it. Three tests additionally hold the paragraph to the real command surface. Each test was verified to fail on the exact drift it guards before being committed.A false green, twice
The benchmark crashed after a docs edit whose backticks closed its template literal — and the failure hid behind
npm run bench >/dev/null && git diff --exit-code, which reads "the script never ran" as "output unchanged." That's the second time this pattern produced a false green in this repo. Fixed, and the gate now checks exit codes explicitly.Findings recorded instead of assumed
.windsurf/rules/is the legacy Devin path —.devin/rules/supersedes it and wins where both exist. Still written deliberately: it's the form that works on current Devin and on unmigrated Windsurf..claude/commands/shim is inert on current versions (the skill wins the name) and kept only for older ones.trigger: model_decisionis confirmed lazy — which makes a rule with an empty description inert.Silent-skill-loss invariant
A test now pins that an emitted skill's frontmatter
nameequals its directory name. Cline drops a mismatch with a silentreturn null; Zed rejects it outright. The invariant already held — nothing enforced it.12 new tests. Typecheck, suite, bench and site
--checkall verified by exit code. Ships as 0.24.0.