Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
c0013a7
docs(release): record v0.20.2 publication evidence
Jul 16, 2026
9574705
docs(release): complete v0.20.2 public install evidence
Jul 16, 2026
1727267
docs(release): make v0.20.2 topology evidence stable
Jul 16, 2026
5319c3d
docs(release): reconcile v0.20.2 published collateral
Jul 16, 2026
6c970cc
Merge dev for v0.20.3 release
Jul 19, 2026
435d4a9
docs: update permanent Discord invite
Yeachan-Heo Jul 19, 2026
c012cdb
fix(team): reject ambiguous split pane output
ictechgy Jul 22, 2026
b739e69
merge: restore v0.20.3 release lineage before v0.20.4
ictechgy Jul 22, 2026
d1ab6dc
fix(team): retain ambiguous split cleanup debt
ictechgy Jul 22, 2026
079af1f
fix(team): preserve reconciliation failure debt
ictechgy Jul 22, 2026
00ef1e3
fix(team): retain restored HUD ambiguity debt
ictechgy Jul 22, 2026
a7adaab
Merge upstream dev into fix/safe-shared-startup-rollback-v0.20.4
ictechgy Jul 22, 2026
bf263d0
test(team): preserve detached residue cleanup on setup failure
ictechgy Jul 23, 2026
e435fb4
fix(team): pin ambiguous restored HUD cleanup debt
ictechgy Jul 23, 2026
abbac3f
fix(team): pin reconciled worker cleanup PID
ictechgy Jul 23, 2026
d61ae7e
fix(team): bind ambiguous split reconciliation to window ID and cover…
Yeachan-Heo Jul 23, 2026
5168544
Merge origin/dev into fix/pr-3265-maintainer-pid-pin
Yeachan-Heo Jul 23, 2026
87be4e3
fix(team): bind ambiguous startup cleanup to split proof
ictechgy Jul 23, 2026
5628ec1
Merge remote-tracking branch 'fork/fix/safe-shared-startup-rollback-v…
ictechgy Jul 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions docs/qa/parent-provenance-pane-residue-e2e.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Private terminal pane-teardown residue E2E

This gate covers the process-residue half of the parent-provenance/rollback incident matrix without contacting an installed lterm daemon or the default tmux server.

## Safety model

- The lterm case requires `LTERM_BIN` to name a newly built local binary. It creates unique `HOME`, `LTERM_RUNTIME_DIR`, `LTERM_SOCKET`, `LTERM_DATA_DIR`, `TMPDIR`, and `TMUX_TMPDIR` paths, starts a disposable daemon, verifies `doctor --json` reports that exact private socket, and places a temporary `tmux` shim (`lterm tmux-compat`) first on `PATH`.
- The tmux case uses the existing `withTempTmuxSession` fixture, which creates a uniquely named private `-L` server with `/dev/null` configuration and destroys that server afterward.
- Both cases tag only the attempt pane with `@omx_team_pane_owner_id`, freeze its exact pane PID, protect the leader/control panes, and call the production `teardownWorkerPanes` primitive with a final owner-tag authorization check.
- The shared rollback call is instrumented so any direct `process.kill` attempt fails the test. No process-tree, `pkill`, `killall`, or shared PID fallback is allowed.
- A deliberately detached (`setsid`-equivalent) child is expected to survive pane deletion. The test emits a residue warning, then sends a nonce over the residue's private attempt-owned control socket only while its bounded PID/PGID/start-time identity is unchanged; the residue validates the nonce and exits itself. No PID signal is sent after pane death, and command text is never captured. This exact-owned fixture cleanup is outside the shared rollback primitive. Ordinary descendants are never directly signaled by the test harness; their fallback cleanup remains the private pane/server teardown.

## Coverage

For both private real tmux and disposable real lterm, the test proves:

1. the exact owner-tagged attempt pane is removed;
2. the protected leader and independent control pane survive;
3. the foreground worker, ordinary child, and ordinary grandchild exit within a bounded poll timeout;
4. the intentionally detached residue is reported and handled by exact-owned cleanup; and
5. shared rollback issues no direct process signal.

## Reproduce

```bash
cargo build \
--manifest-path /path/to/light_terminal/Cargo.toml \
--bin lterm

cd /path/to/oh-my-codex
npm run build
LTERM_BIN=/path/to/light_terminal/target/debug/lterm \
node dist/scripts/run-test-files.js \
dist/team/__tests__/pane-teardown-residue-e2e.test.js
```

The normal suite skips only the lterm case when `LTERM_BIN` is absent. Release evidence must run the command above with an explicit local binary and confirm that both subtests pass rather than skip.

Related regression gate:

```bash
node dist/scripts/run-test-files.js \
dist/team/__tests__/tmux-session.test.js \
dist/team/__tests__/runtime.test.js
```

The fixture is disposable-only. Do not point `LTERM_BIN` at an installed wrapper that can select a live daemon, do not remove the private tmux server boundary, and do not use this test as authority to publish, deploy, restart live services, or run an unsafe mixed-version destructive cell.
Loading
Loading