Public: anyone can read this; the crew can change it.
The crew starts every run through one agent-runner seam, with today's CLI as its first runner #12132
Check · Review · Land · Live — Its check is running.
Every crew run now starts through a new agent-runner seam, `src/crew/agent_runner.ts`, with the Claude CLI as its only runner. Behaviour is unchanged.
11 files · +194 −110
working checking now deploy 848081d
Check running · 15 min · 2384 passed, 17 failedCheck of 848081dchecked against main at 2dca344fast tier: running · full gate runs on land
Website spec: 19 findings (report only)
- /board http://127.0.0.1:33319/board answered 303 — https://specification.website/
- /notes http://127.0.0.1:33319/notes answered 303 — https://specification.website/
- /feed http://127.0.0.1:33319/feed answered 303 — https://specification.website/
- /review http://127.0.0.1:33319/review answered 303 — https://specification.website/
- /releases http://127.0.0.1:33319/releases answered 303 — https://specification.website/
- /repos http://127.0.0.1:33319/repos answered 303 — https://specification.website/
- /map http://127.0.0.1:33319/map answered 303 — https://specification.website/
- /system http://127.0.0.1:33319/system answered 303 — https://specification.website/
- /talk http://127.0.0.1:33319/talk answered 303 — https://specification.website/
- /flow http://127.0.0.1:33319/flow answered 303 — https://specification.website/
- /resilience http://127.0.0.1:33319/resilience answered 303 — https://specification.website/
- /boards?help http://127.0.0.1:33319/boards?help answered 303 — https://specification.website/
- /settings/crew http://127.0.0.1:33319/settings/crew answered 303 — https://specification.website/
- /settings/crew?help http://127.0.0.1:33319/settings/crew?help answered 303 — https://specification.website/
- /preview-admin/sample expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/next expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/bets expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/waves expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/milestones expected exactly one <h1>, found 2 — headings
Look
9 pages beside main · 0 new to this pull
/apps
In the dark
at 848081d ·
/explore
In the dark
at 848081d ·
/feed
In the dark
at 848081d ·
/front
In the dark
at 848081d ·
/map
In the dark
at 848081d ·
/notes
In the dark
at 848081d ·
/releases
In the dark
at 848081d ·
/repos
In the dark
at 848081d ·
/review
In the dark
at 848081d ·
Every crew run now starts through a new agent-runner seam, src/crew/agent_runner.ts, with the Claude CLI as its only runner. Behaviour is unchanged.
bun x tsc --noEmit and bun scripts/gate.ts are clean. I ran only the tests that touch this code (the new seam test, crew-limits, crew-network, claude-context, steer, conversation-turn, session-settle, crew-watch, crew-cancel-group, usage, spawn-sites, spawn-pipes, src-imports), and they pass. I did not run the full suite; the forge's check does that on push. No existing test file was edited.
What moved where
- The seam:
agent_runner.tsholds the run input (AgentRun), the outcome (AgentOutcome),SpentandBUDGET_REACHED, all moved verbatim fromclaude.ts. It adds anAgentRunnerinterface withrunanddetect, and the entry pointsrunAgentanddetectAgent. Claude is wired in as the current runner. claude.ts: it now imports those types from the seam and keepsClaudeInputandClaudeOutcomeas aliases, so existing test imports still work. It defines its ownBUDGET_REACHED, type-checked against the seam's, so the two modules never import each other at run time.runClaudeanddetectClaudeare untouched, so argv, env and outcomes are the same.- Callers:
runner.ts,dispatch.ts,one_shot.tsandconversation.tsimport only from./agent_runner.ts. - Beyond the four callers:
network.tsandlimits.tshad type-only imports fromclaude.ts; I repointed them to the seam, which the new test needs. I also reworded two comments inleftovers.tsandrun-cell.tsthat namedrunClaude. Those two edits go slightly past the files you named. - The guard:
test/agent-runner-seam.test.tsfails if any file undersrc/other thanclaude.tsandagent_runner.tsimportsclaude.ts. It also checks that the four callers import the seam.
Not done
- No second runner and no runner selection yet:
currentRunner()always returns Claude. AgentRunstill carriesbinaryand a few Claude-shaped options (mcp,idleMs,settleMs). Renaming or removing them would change callers.- No new process start, so
spawn-sitesandspawn-pipesare unchanged. - I did not borrow from the 12068 branch; it isn't in this clone.
Try it: bun test test/agent-runner-seam.test.ts. Then add import "./claude.ts" to any other src/ file and the same test fails.
🤖 Generated with Claude Code
No change this turn, and nothing was pushed. I found no fault in the code to fix.
The log you sent has no error from my change. It shows the preview's routine SQL stats and a restore-drill message, "this forge has nowhere to drill from", which isn't from this branch. Its header line says "running … · no tests declared, none run". That matches forge.json: it has an app block with no test command, and its check block carries the tests (fast and verify run scripts/test-shards.ts).
The preview at https://lab--12132--forge-trevato-apps.open-platform.sh answers 200 on /healthz and on /.
If the deploy is marked failed because it declares no tests, that comes from forge.json, which is outside this issue's files. If it is something else, send me the part of the log that has the failing line.
The gate failed because one comment in src/crew/agent_runner.ts (the contextTokens doc comment, line 98) was 102 columns, over the 100-column limit. I shortened it ("0 when none reported" is now "0 if none") and pushed.
After the commit, bun scripts/gate.ts and bun x tsc --noEmit both passed. The gate checks committed content, so it only turned green once the fix was committed. I did not run any tests, because the change is a comment edit.
Line 61 of the same file is 121 columns, but it is code, not a comment, so the gate's comment rule doesn't cover it. I left it alone.
The rest of the pull is unchanged: the crew starts every run through one agent-runner seam, src/crew/agent_runner.ts, with the Claude CLI as its first runner. runner, dispatch, one_shot and conversation call that seam. A test fails if anything outside the runners imports claude.ts.
Every crew run now starts through a new agent-runner seam,
src/crew/agent_runner.ts, with the Claude CLI as its only runner. Behaviour is unchanged.bun x tsc --noEmitandbun scripts/gate.tsare clean. I ran only the tests that touch this code (the new seam test, crew-limits, crew-network, claude-context, steer, conversation-turn, session-settle, crew-watch, crew-cancel-group, usage, spawn-sites, spawn-pipes, src-imports), and they pass. I did not run the full suite; the forge's check does that on push. No existing test file was edited.What moved where
agent_runner.tsholds the run input (AgentRun), the outcome (AgentOutcome),SpentandBUDGET_REACHED, all moved verbatim fromclaude.ts. It adds anAgentRunnerinterface withrunanddetect, and the entry pointsrunAgentanddetectAgent. Claude is wired in as the current runner.claude.ts: it now imports those types from the seam and keepsClaudeInputandClaudeOutcomeas aliases, so existing test imports still work. It defines its ownBUDGET_REACHED, type-checked against the seam's, so the two modules never import each other at run time.runClaudeanddetectClaudeare untouched, so argv, env and outcomes are the same.runner.ts,dispatch.ts,one_shot.tsandconversation.tsimport only from./agent_runner.ts.network.tsandlimits.tshad type-only imports fromclaude.ts; I repointed them to the seam, which the new test needs. I also reworded two comments inleftovers.tsandrun-cell.tsthat namedrunClaude. Those two edits go slightly past the files you named.test/agent-runner-seam.test.tsfails if any file undersrc/other thanclaude.tsandagent_runner.tsimportsclaude.ts. It also checks that the four callers import the seam.Not done
currentRunner()always returns Claude.AgentRunstill carriesbinaryand a few Claude-shaped options (mcp,idleMs,settleMs). Renaming or removing them would change callers.spawn-sitesandspawn-pipesare unchanged.Try it:
bun test test/agent-runner-seam.test.ts. Then addimport "./claude.ts"to any othersrc/file and the same test fails.🤖 Generated with Claude Code
Closes #12122