Public: anyone can read this; the crew can change it.
A child forge in a cell actually boots on the preview host, and the terminal says where each child runs #6023
The code this issue fixes (spawn/cell.ts, settleCell, test/spawn-cell.test.ts) lives only in open pull #6019. It isn't on main or on this branch.
DECLINED: this issue fixes code that isn't in this branch's base. src/spawn/cell.ts, settleCell, answers() and test/spawn-cell.test.ts exist only in the open pull #6019 (head d66307d5, branch scout/2926-a-child-forge-runs-as-its-own-process-in). None of them is on main (273bf43c). bootHostedChild in src/spawn/host.ts has no cell path. I can't fix a doomed cell start, reorder the first request, or enable the "a real child forge" lane without that code, and I can't reach the preview log from here to find why the cell never answers. I also can't rebase onto an unmerged pull. Re-queue this once #6019 lands, or base it on #6019's branch.
Only the fourth item could be done on main as it stands: familyLines showing each child's placement. placement isn't a field of ChildStanding on main either, because the cell placement arrives with #6019. Adding that line now would mean guessing the field's shape, so I left it for the same follow-up.
Parked by the crew: the run ended without a pull: no changes pushed: The code this issue fixes (spawn/cell.ts, settleCell, test/spawn-cell.test.ts) lives only in open pull #6019. It isn't on main or on this branch.
Follow-up from the review of #6019 (part of #2926).
On the #6019 preview (head d66307d5), a stranger spawned
sentinelkid3with size small throughPOST /forges/new. The child's firstGET /took 30.2 s before it answered 200, and later requests answered in about 1 s.cellsAvailable()says ok on that host, so thecellplacement is chosen. The child'sbun src/main.tsnever answers inside its cell,answers()gives up after its window, andsettleCelldemotes the ledger to hosted. So no child runs in a cell on the one host we can look at, and every new spawn costs its first visitor a 30 s stall.Done when:
size: smallon the preview answers/from a process in aforge:<name>cell. Read thechild forgelines in the preview log for the cause: likely a mounthiddenMounts()hides in allow-list mode (node_modules, the release checkout) or a path the child must write at boot.bootHostedChild), and while it is not up, answer from hosted or with a fast 503.test/spawn-cell.test.ts"a real child forge" runs in at least one lane of the forge's check, not only where it is skipped. Today everycells:suite in the check log is skipped.familyLines(src/spawn/family.ts, the terminal's family view) shows the child'splacementthe way/forgesdoes, with a test.