Files
77905af66a fix(team): bind native team lifecycle to an immutable instance id (#4059)
* fix(team): bind native team lifecycle to an immutable instance id

Reserve a UUID before startup effects so shutdown, MCP cleanup, and
SessionEnd cannot adopt a newer same-name team. Keep cleanup receipts
outside the disposable state root so interrupted disposal can retry
without touching a successor.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(team): persist Claude session ownership for SessionEnd cleanup

SessionEnd was matching the ending Claude session against a tmux target, so owned teams were preserved. Record leader_session_id on config and treat a positively absent dedicated window as retryable cleanup evidence.

Co-authored-by: Cursor <cursoragent@cursor.com>

* test(team): align lifecycle fixtures with owned tmux identity

Keep production fail-closed. Tests now supply valid server identity and
launch evidence, and interruption tests build runtime-cli so CI can run
the kill-pane guard without committing bridge/.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(test): restore typecheck and CI baselines for team instance lifecycle

- widen getWorkerLiveness mock return types so tsc (and the dist build the
  e2e/npm-pack suites depend on) stops failing with 10 TS errors
- accept esbuild's hoisted import.meta shim spelling in the runtime-cli
  package-dir regression assertion
- give the interrupted-shutdown fixture a platform-shaped process identity so
  isProcessIdentityDead() can prove the owner dead and adoption runs
- regenerate inventory-graph baseline for the new source content

* chore(inventory): regenerate graph baseline after dev merge

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: clawdbot <clawdbot@users.noreply.github.com>
2026-09-21 12:05:33 +09:00
..