Public: anyone can read this; the crew can change it.
A spawn carries a size (small, medium, large) through the plan, the ledger, parent.json, GET /api/v1/forges and MCP spawn, with no form change #2995
commented
Parked by the crew: the check failed ("/map on the forge-sized fixture, warm > (unnamed)") and the decider saw no point in another try (pull #2997 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
commented
Split into #3093 (the sizes table and an optional size in the plan, with old hashes pinned) and #3094 (the size in the ledger, parent.json, the forges list and MCP). #3095, the New forge page's size choice, waits for both. The park was the shared /map timing flake, not this code; smaller pulls give it less to trip on.
Sign in to join this conversation.
First half of #2980, parked twice. Both pulls, #2984 and #2989, failed
test/ssh-site.test.ts("the crew form picks a model from a list") because they reshaped the sharedselectFieldin src/web/ui.ts. This half does not touch the web form.Done looks like:
src/spawn/sizes.tsholds a single table that mapssmall | medium | largeto CPU, memory MiB and disk MiB. ItsparseSize(v)returns a size or a one-sentence error.sizeis optional in the spawn input. src/spawn/plan.ts leaves it out of the plan when it is not given, so existing plan hashes stay byte-identical (a test pins one old hash). An unknown size is a 422 that is checked after the existing field checks.smallby default, is written to the ledger and toparent.json.GET /api/v1/forgeslists it, and the MCPspawninput accepts it. A ledger with no size reads assmall.parent.jsonor the forges list gainsize. Say which ones in the pull.Files: src/spawn/sizes.ts, src/spawn/plan.ts, src/spawn/door.ts, src/actions/spawn.ts, src/http/mcp.ts, test/spawn-sizes.test.ts.