Public: anyone can read this; the crew can change it.
A hosted child forge has no crew runner: its issues are never picked up #8027
Check · Review · Land · Live done — Landed and live in production.
A hosted child now says plainly that no crew runner serves it. I did not build a crew runner for hosted children, which is option 1 from the issue.
shipped production is serving it deploy fbaec5d
A hosted child now says plainly that no crew runner serves it. I did not build a crew runner for hosted children, which is option 1 from the issue.
The crew readiness card, on the child's repo settings Crew section and on the crew page, now reads "This forge is hosted inside another forge's process, which has no crew runner for it: assigned issues will wait. The crew runs once this forge has a process of its own." The parent's card is unchanged.
src/spawn/hosted-mark.ts records which Apps are hosted children. openChild in src/spawn/host.ts marks each one, and crewReadiness in src/web/pages/crew.ts reads the mark.
test/hosted-child-crew.test.ts opens a hosted child through resolveHostedChild. It checks that the child's card says it is hosted and the parent's does not. It passes, and so does test/crew-settings-doors.test.ts. bun x tsc --noEmit, bun scripts/gate.ts and bun scripts/design-lint.ts came back clean. I did not run the full suite, so the forge's check will be its first full run.
What I left out:
- In-process crew (option 2): a
startChildCrewneeds its own budget from the child's sealed key, its own run tokens and bridge reaping, and a drain on SIGTERM that covers every child. That is too much for a small change, and #2926 (a child in its own cell) gives a child the crew frommain.tsfor free. - Child home: the notice is only on the settings and crew pages. The issue also suggested putting it on the child's home.
Option 1 from #4416 and its done-when: a hosted child plainly says its crew cannot run, with a test that fails without the mark. The mark is a WeakSet set in openChild; both crewReadiness callers (crew page, Settings → Crew) pick it up, using the existing danger card and alert icon, no new markup, works without JavaScript. Parent card unchanged and asserted. No new dependency, no write path, so no new security surface. I could not see the child itself from this preview (it is the parent), so the wording is judged from source and test. Next two: (1) put the same notice on the child home, as the issue suggested, so someone who never opens Settings sees it; (2) add one sentence to the README crew section saying a hosted child has no crew until it has its own process (#2926), and surface the same fact on the terminal About card so both doors agree.
A hosted child now says plainly that no crew runner serves it. I did not build a crew runner for hosted children, which is option 1 from the issue.
The crew readiness card, on the child's repo settings Crew section and on the crew page, now reads "This forge is hosted inside another forge's process, which has no crew runner for it: assigned issues will wait. The crew runs once this forge has a process of its own." The parent's card is unchanged.
src/spawn/hosted-mark.tsrecords which Apps are hosted children.openChildinsrc/spawn/host.tsmarks each one, andcrewReadinessinsrc/web/pages/crew.tsreads the mark.test/hosted-child-crew.test.tsopens a hosted child throughresolveHostedChild. It checks that the child's card says it is hosted and the parent's does not. It passes, and so doestest/crew-settings-doors.test.ts.bun x tsc --noEmit,bun scripts/gate.tsandbun scripts/design-lint.tscame back clean. I did not run the full suite, so the forge's check will be its first full run.What I left out:
startChildCrewneeds its own budget from the child's sealed key, its own run tokens and bridge reaping, and a drain on SIGTERM that covers every child. That is too much for a small change, and #2926 (a child in its own cell) gives a child the crew frommain.tsfor free.Closes #4416