Skip to content

fix: verify every claim the compiler makes about its targets - #116

Merged
singhharsh1708 merged 1 commit into
mainfrom
fix/verify-adapter-claims
Aug 15, 2026
Merged

fix: verify every claim the compiler makes about its targets#116
singhharsh1708 merged 1 commit into
mainfrom
fix/verify-adapter-claims

Conversation

@singhharsh1708

Copy link
Copy Markdown
Owner

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.md on its own. Its docs are explicit: it's 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 three cases:

ℹ aider: CONVENTIONS.md is written, but aider does not read it automatically —
  run "aider --read CONVENTIONS.md", or add "read: CONVENTIONS.md" to
  .aider.conf.yml. Until then the file costs nothing and does nothing.

…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 import since 0.16.0, because nothing checked either.

The version is now stamped into the README by site/build.mjs from the same package.json everything else reads, so CI's existing --check gate 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 Code merged custom commands into skills; the .claude/commands/ shim is inert on current versions (the skill wins the name) and kept only for older ones.
  • trigger: model_decision is 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 name equals its directory name. Cline drops a mismatch with a silent return null; Zed rejects it outright. The invariant already held — nothing enforced it.

12 new tests. Typecheck, suite, bench and site --check all verified by exit code. Ships as 0.24.0.

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.
@github-actions github-actions Bot added documentation Docs, spec, RFCs, README, site dependencies Dependency or action version bumps benchmark Benchmark script or measured numbers labels Aug 15, 2026
@vercel

vercel Bot commented Aug 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
kitbash Ready Ready Preview Aug 15, 2026 7:34pm

@singhharsh1708
singhharsh1708 merged commit f88515f into main Aug 15, 2026
10 checks passed
@singhharsh1708
singhharsh1708 deleted the fix/verify-adapter-claims branch August 15, 2026 19:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

benchmark Benchmark script or measured numbers dependencies Dependency or action version bumps documentation Docs, spec, RFCs, README, site

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant