Public: anyone can read this; the crew can change it.
Take updates from trevato/forge-upstream #2604
Check · Review · Land · Live done — Landed and live in production.
This merges trevato/forge-upstream's `main` (`refs/following/main`, 6808423) into this repository. Two upstream changes come in:
shipped production is serving it deploy 28f939d
This merges trevato/forge-upstream's main (refs/following/main, 6808423) into this repository. Two upstream changes come in:
- Terminal shuts down cleanly (#66): when an app's terminal runs without a cell, a hangup or the terminal's own exit now ends everything it started. This touches
src/apps/tty.tsandsrc/apps/process.tsand addstest/tty-stop-tree.test.ts. It merged without conflicts. - Crew reads same-millisecond words in order (#65): this fix was already here, brought in by #2601. Its changes to
src/crew/parks.tsandtest/crew-parks.test.tsmerged cleanly.
Per conflicted file:
src/actions/issues.ts— this repository won. Upstream doesn't have our limb re-plan code (replanSincefromcore/limb_replan.ts, from #2588). So its version ofhandedToPlannerhas no limb hand-over time, and it would drop an issue even when a person's issue sits beneath a limb. Upstream made no change of its own here, so keeping ours loses nothing from either side.src/crew/parks.ts— this repository won. Upstream doesn't have our rule from #2525 that skips a parked-twice issue when commits on main already name it (alreadyDone). Its tie-order fix outside the conflict was already present, so nothing upstream meant is lost.
After resolving, both files match this repository's main exactly. The type check is clean, and the parks, terminal, process, already-done, limb re-plan and issues suites pass: 104 tests across 10 files. I didn't run the rest of the suite here; the forge's check runs it on this push.
Closes #2603
🤖 Generated with Claude Code
Approved. The upstream merge brings in a contained change: an uncelled app terminal now leads its own process group. A hangup signals the whole group, and once the program exits the leftovers get SIGKILL, so nothing keeps running with the environment secrets. Access gating for the terminal is untouched. The tests cover hangup, a child that ignores HUP, and a normal exit, and each would fail without the change. I read the diff only; I did not curl the preview or open the screenshots. There is no page change, so nothing for a phone or screen reader here.
Two things I would do next:
- signalGroup(proc.pid, SIGKILL) after exit relies on the group id not having been reused. The window is tiny, but a note in the code, or a check that the group is still ours, would make that explicit.
- Add one line to the README or AGENTS.md saying that an uncelled terminal is killed as a group, so the sandbox boundary is documented.
This merges trevato/forge-upstream's
main(refs/following/main, 6808423) into this repository. Two upstream changes come in:src/apps/tty.tsandsrc/apps/process.tsand addstest/tty-stop-tree.test.ts. It merged without conflicts.src/crew/parks.tsandtest/crew-parks.test.tsmerged cleanly.Per conflicted file:
src/actions/issues.ts— this repository won. Upstream doesn't have our limb re-plan code (replanSincefromcore/limb_replan.ts, from #2588). So its version ofhandedToPlannerhas no limb hand-over time, and it would drop an issue even when a person's issue sits beneath a limb. Upstream made no change of its own here, so keeping ours loses nothing from either side.src/crew/parks.ts— this repository won. Upstream doesn't have our rule from #2525 that skips a parked-twice issue when commits on main already name it (alreadyDone). Its tie-order fix outside the conflict was already present, so nothing upstream meant is lost.After resolving, both files match this repository's
mainexactly. The type check is clean, and the parks, terminal, process, already-done, limb re-plan and issues suites pass: 104 tests across 10 files. I didn't run the rest of the suite here; the forge's check runs it on this push.Closes #2603
🤖 Generated with Claude Code
Closes #2603