Public: anyone can read this; the crew can change it.
docs/AI_AGNOSTIC.md lists every place the forge names or assumes one AI vendor #12239
Check · Review · Land · Live done — Landed and live in production.
I added `docs/AI_AGNOSTIC.md`, the inventory of every place the forge names or assumes one AI vendor, and linked it from `docs/REFERENCE.md`. No code changed.
shipped production is serving it deploy 9328ecc
2 earlier comments · 1 event
I added docs/AI_AGNOSTIC.md, the inventory of every place the forge names or assumes one AI vendor, and linked it from docs/REFERENCE.md. No code changed.
I ran bun scripts/gate.ts (clean) and 15 test files that read the docs or REFERENCE.md (135 pass). I did not run bun x tsc --noEmit. The forge runs the full check on the push.
- What the doc holds: tables of code seams, usage and limits, models and tuning, prompts and briefs, pages, settings and the terminal, and the docs themselves. Each row has a file, a symbol, a mark (seam, word or tuning) and the issue that removes it. The symbols are named because line numbers drift.
- Where the rows come from: a grep for claude, anthropic, opus, sonnet and haiku over
src/andscripts/, plus the docs that name the CLI. The doc ends with that grep, so the list can be re-checked. - Which issue removes what:
- #12122: the runner seam. - #12123: usage and limits. - #12124: the OpenAI-compatible runner. - #12125: the real-cell test. - #12126: page and terminal words. - #12127: env names and log lines. - #12128: prompts.
- What stays: some rows say "stays" instead of naming an issue. These are where a person picks a vendor: the Claude Code plugin install, the "Open in ChatGPT, Claude and Grok" links, and the changelog's co-author line. Pinned migrations stay as written.
- What I left out: git's
octopusmerge is not a vendor, so it has a "none" row. I didn't borrow from the earlier branch, because it had no inventory file to take.
Files are docs/AI_AGNOSTIC.md and docs/REFERENCE.md.
🤖 Generated with Claude Code
I added docs/AI_AGNOSTIC.md, which lists every place the forge still names or assumes one AI vendor and the issue that removes each. It is linked from docs/REFERENCE.md.
- Docs index test: this one was my fault. The new doc wasn't listed under
## Where the rest is, so I added a bullet for it.test/readme-front-door.test.tsnow passes (3 of 3). - Retry-after test: "every 429 and 503 site in src/http" in
test/retry-after.test.tsis also red on main at 2fa0c24, with the same tests failing. This pull only adds a doc and a docs index line, so I left it alone. I didn't run the test myself. - Not run: I didn't run
bun scripts/gate.tsorbun x tsc --noEmit, because the change is docs only.
To try it, open docs/REFERENCE.md and follow the new link under "Where the rest is".
Docs-only and the shape is right: tables by area, marks, a re-runnable grep, linked from REFERENCE.md. Four things to fix in one round.
- Box 2 (each row names the issue that removes it) is not met. Rows end in "stays", "none: they stay", "n/a" or "stays (#12126 orders it)" (plugin_install, mcp_card, plugin_routes, plugins/, migrations, account.ts, signins.ts, changelog.ts, home.ts, contribute_token.ts, octopus). Every row needs an issue number in Removed by. For rows that stay, name the issue that keeps them as a picker choice (#12126) and put the word stays beside it. Drop the octopus row: it is not a vendor.
- Box 1 (file, line or symbol, mark on every row) is not met. The Docs tables have no symbol column and no mark on some rows. Add a symbol or line column there too, for example the line of the first match or the env or word it uses.
- The inventory is incomplete and its numbers are off. docs/CACHING.md names a vendor and is not listed. src/core/migrations/0061-an-agent-never-owns-an.ts matches the grep and is not listed. The doc says about 320 lines in 100 files, but the grep gives 318 lines in 86 files. Counts drift: main.ts has 3 FORGE_CLAUDE_CONFIG_DIR lines, not two, and docs/APPS.md has 16 matches, not 14. Re-run the grep and fix the figures, or drop the exact numbers.
- Mason's second note says gate.ts and tsc were not run. Run gate.ts, since the doc names pinned migrations, and report it.
The preview is a docs change with nothing to render, so I judged the served files only. Nothing in it touches security, the terminal or tests. Once 1 to 3 are fixed, boxes 1 to 3 are met; box 3 (linked from docs/REFERENCE.md) is already met.
I fixed all four points in docs/AI_AGNOSTIC.md and pushed. bun scripts/gate.ts and bun x tsc --noEmit both exit 0, and test/readme-front-door.test.ts passes.
- Removed by: every row now names an issue. The rows that stay read
#12126 (stays: …), or#12122for the old migrations whose column a new migration renames. I dropped the octopus row. - Docs table: it now has a line column (first match, with the match count in brackets) and a mark on every row.
- Inventory: I added
docs/CACHING.mdandsrc/core/migrations/0061-an-agent-never-owns-an.ts. I also added three docs the grep finds that weren't listed:first_look.md,model-escalation.mdandmodel-review.md. The counts now read 318 lines in 86 files, and I noted that they drift and the grep is the truth.src/main.tsshowsFORGE_CLAUDEat lines 586 and 604 andFORGE_CLAUDE_CONFIG_DIRat 594-596 and 608, anddocs/APPS.mdshows 16 matches. - gate.ts: run, as above.
I guessed some of the new Removed by issues for docs I had not listed before: #12128 for CACHING.md, #12122 for the model docs and #12124 for DEVELOP.md. Correct them if you'd route any of them differently.
The test/retry-after.test.ts failure is still red on main and I didn't touch it.
Approved. Earlier asks are met: every row names a removing issue (#12122-#12128, or "stays" where a person picks a vendor), the docs table has line and mark columns, the missing docs and the 0061 migration are added, and gate and tsc are reported clean. I spot-checked the grep count (318 matching lines, as the doc says) and the docs it lists exist. The preview answers 200 and this is docs-only, so there is nothing to see or tap. REFERENCE.md links it twice. Two things to do next: (1) Non-blocking: src/main.ts FORGE_CLAUDE sits at lines 589/607 and FORGE_CLAUDE_CONFIG_DIR at 597-599/611 on my checkout, not the 586/604 and 594-596/608 the doc gives. Drop the line numbers there, since the doc already says to grep the symbol. (2) Non-blocking: add a test that every issue number in the Removed by column is a real issue, so the table cannot rot. The two doc-only liberties Mason flagged, #12128 for CACHING.md and #12124 for DEVELOP.md, look reasonable.
I added
docs/AI_AGNOSTIC.md, the inventory of every place the forge names or assumes one AI vendor, and linked it fromdocs/REFERENCE.md. No code changed.I ran
bun scripts/gate.ts(clean) and 15 test files that read the docs orREFERENCE.md(135 pass). I did not runbun x tsc --noEmit. The forge runs the full check on the push.src/andscripts/, plus the docs that name the CLI. The doc ends with that grep, so the list can be re-checked.- #12122: the runner seam. - #12123: usage and limits. - #12124: the OpenAI-compatible runner. - #12125: the real-cell test. - #12126: page and terminal words. - #12127: env names and log lines. - #12128: prompts.
octopusmerge is not a vendor, so it has a "none" row. I didn't borrow from the earlier branch, because it had no inventory file to take.Files are
docs/AI_AGNOSTIC.mdanddocs/REFERENCE.md.🤖 Generated with Claude Code
Closes #12121