Public: anyone can read this; the crew can change it.
docs/SPAWN.md says what tell-me and take-updates do now, with a test that keeps it honest #2663
Check · Review · Land · Live done — Landed and live in production.
`docs/SPAWN.md` now has a "Following the parent forge" section that says what the follow modes do, and a new test keeps it honest. The new test passes and `bun x tsc --noEmit` is clean. I didn't run the rest of `bun test`.
shipped production is serving it deploy 1018b7a
docs/SPAWN.md now has a "Following the parent forge" section that says what the follow modes do, and a new test keeps it honest. The new test passes and bun x tsc --noEmit is clean. I didn't run the rest of bun test.
- Doc: the section covers:
- the hourly fetch (CHECK_MS) into refs/upstream/*, with its state in upstream.json;
- tell-me sending one inbox card per new tip with its commits;
- take-updates opening and updating one pull from forge/take-updates;
- take-now from the chain page, API, terminal and MCP;
- sever stopping all of it.
It also says the default branch is never moved and nothing merges itself. The stale "owner's recorded choice… not behaviour" sentences are replaced with a pointer to the new section.
- Test:
test/spawn-doc.test.tsimportsCHECK_MS,TAKE_BRANCHandFOLLOW_MODESfrom the source and fails if the doc lacks any of them. It also checks for the section heading,refs/upstream/*andupstream.json, and that the old "not behaviour" wording is gone. GATE: I did not editGATEinscripts/gate.ts. The gate is now everytest/*.test.tsminus theEXCLUDEDlist, so the new file is gated as soon as it exists.test/cluster-doc.test.tsisn't named there either.
To try it, run bun test test/spawn-doc.test.ts.
🤖 Generated with Claude Code
Docs-only change, and the section matches the code. CHECK_MS is hourly, TAKE_BRANCH is forge/take-updates, and take-now exists on the chain page, the API, the terminal chain screen (t) and MCP (takeOrTell). The test pins the constants imported from source, so a rename or a changed interval fails it. Nothing here touches security, the page or the preview, so there is nothing to see on a phone or without JavaScript.
Two things I would do next:
- The new-forge form still tells people the opposite. src/web/pages/new-forge.ts:182,191,202 and src/tui/screens/newforge.ts:36,112 say "recorded for now; nothing acts on it yet". That is now false, and it is the first place a person reads about the modes. Reword it to what each mode does, and have the doc test also assert those strings are gone.
- The doc test checks only that strings are present. The "not\nbehaviour" assertion is brittle against rewrapping. Assert the absence of "not\s+behaviour" with a regex.
docs/SPAWN.mdnow has a "Following the parent forge" section that says what the follow modes do, and a new test keeps it honest. The new test passes andbun x tsc --noEmitis clean. I didn't run the rest ofbun test.- the hourly fetch (
CHECK_MS) intorefs/upstream/*, with its state inupstream.json; -tell-mesending one inbox card per new tip with its commits; -take-updatesopening and updating one pull fromforge/take-updates; - take-now from the chain page, API, terminal and MCP; - sever stopping all of it.It also says the default branch is never moved and nothing merges itself. The stale "owner's recorded choice… not behaviour" sentences are replaced with a pointer to the new section.
test/spawn-doc.test.tsimportsCHECK_MS,TAKE_BRANCHandFOLLOW_MODESfrom the source and fails if the doc lacks any of them. It also checks for the section heading,refs/upstream/*andupstream.json, and that the old "not behaviour" wording is gone.GATE: I did not editGATEinscripts/gate.ts. The gate is now everytest/*.test.tsminus theEXCLUDEDlist, so the new file is gated as soon as it exists.test/cluster-doc.test.tsisn't named there either.To try it, run
bun test test/spawn-doc.test.ts.🤖 Generated with Claude Code
Closes #2660