Skip to content

feat: launch profiles beside eligible live Glass terminal tabs - #1915

Merged
mergify[bot] merged 6 commits into
mainfrom
codex/kr-08c-2b-live
Oct 25, 2026
Merged

mergify[bot] merged 6 commits into
mainfrom
codex/kr-08c-2b-live

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Die Profilauswahl öffnet sich jetzt als Overlay, ohne das laufende Terminal zu verkleinern.
Tabwechsel und Schließen funktionieren bei geöffneter Auswahl, und ein ausdrücklich gestarteter Neustart bleibt erhalten.
Die Nachbesserung ist geprüft und gepusht; der Entwurf wartet auf Roots letzten Delta-Review und die Abnahme.

Report

KR-08c-2b-LIVE / R1915-NB1 — tier A — same owner srv-kr-08c-2b-live.

  • Original PR base: f06031435259b9148d9fc550244cb0dd6af7d85f.
  • Reviewed R1 candidate / NB admission HEAD: 99d947826af78ad7fa5d6ef7370760d27351f76e.
  • New candidate / verified remote: fbbcf1db970609c26269aa75f477511a7389491c.
  • LAST Round2 delta: 99d947826af78ad7fa5d6ef7370760d27351f76e..fbbcf1db970609c26269aa75f477511a7389491c. Root owns Anthropic + Kimi CLI reviews and actual wire provenance; no third round.
  • Test-first commit: 3339a8ff786179e2258cd6d184eb8126ea371090; implementation/PLAN commit: fbbcf1db970609c26269aa75f477511a7389491c.
  • Parent ticket 251d1fa7-961a-421a-b7ae-ffaacb425f6b and grandparent 366c57e2-488c-48c1-9405-90b0cf28fab6 remain unaccepted. This is a worker handover, not product or parent acceptance.

Change, size and scope

The existing anchored Popover now overlays the viewer rather than enlarging the live action strip. Removing the route-scoped position: static override also prevents a pointerdown dismissal from moving the subsequent tab/close click target. Tab and close controls stay outside the overlay in the measured placements.

An insertion no longer resets an explicitly pending restart or hides its restore panel. The explicit restart is a newer deliberate action owning its restore route; the snapshot is consumed without fencing that request. Ordinary pending worker lookup/deep-link fencing remains exercised separately. The observer no longer calls setRestarting(false). A launcher settlement callback updates route-local pending state; an effect disarms the snapshot only after checking committed sessions and finding no insertion. The shared pending/error lifetime remains unchanged through the full provider Promise.

283 RAW total, versus the original base: 272 additions + 11 deletions, including tests/docs. 69 RAW NB1 delta, versus reviewed 99d9478: 61 additions + 8 deletions. The forecast before code was approximately 310–350; the actual implementation stays below 300, so no 300-line overrun and no 400-line exception are consumed. Forcing findings: C1/B1/V1, C2, C4/A2, C5/C1; DOC1 is report-only.

NB1 edits only src/screens/terminal/TerminalRoute.tsx, TerminalLauncher.tsx, TerminalRoute.test.tsx, terminal.css, and its own docs/PLAN.md row. The full PR additionally retains the previously authorized combined 08c/08d status-cell edit in docs/plan/v2.0/plan.md; NB1 does not change that file. No provider/reducer/App/TerminalView/shared design system/IPC/mock/native seam, dependency, gate, baseline, timeout/retry/skip, or service edits. No installs or license additions. Architecture drift: no new allowlist entry; normal gate passed.

Admission, original-start correction and ownership

DOC1 — original implementation start: Clean own branch and HEAD = origin/main = f060314 were verified before edits; final candidate fbbcf1d was separately verified after implementation.

NB1 admission, separately: on 2026-10-25 the clean own branch, local HEAD and branch remote were 99d947826af78ad7fa5d6ef7370760d27351f76e, while origin/main and PR base remained f06031435259b9148d9fc550244cb0dd6af7d85f. git fetch origin, git log origin/main -1, git ls-remote, gh pr list and gh pr view 1915 confirmed the one existing OPEN/DRAFT PR with no labels. Main CI run 40203710694 was completed/success at the exact base. No freshness merge, new branch/PR, stash, reset, rebase or force push occurred.

Actual native turn_context for this execution reports OpenAI gpt-6-astra, effort high, matching the request; session start was 2026-10-25T16:02:57.830Z. The supplied dispatcher receipt at 15:55:42Z was hash-checked at 16:03:06Z: SHA-256 7b42a7795149cd1603f553d0bc12592ec6c99c3b32956f4fe8ff6104561bd9dc; reported actual quota was 27% used / 73% remaining, below its recorded admission rule. This is supplied dispatcher evidence, not a native usage API observation by the worker. The start-check missing-usage warning is not quota evidence.

get_goal returned null for this new execution; create_goal established the bounded NB1 handover objective, and get_goal was checked again before report delivery. No older native goal was edited or falsely completed. The local lage-jetzt mirror is absent, and native memory/quota/Sourcegraph functions are absent from the inspected runtime catalog; live Git/PR/CI plus the bounded brief were used, without an exhaustive graph claim.

bash scripts/sync.sh start and npm run dev:start-check -- --max-cargo 2 --min-free-gb 3.5 both exited 0. Actual process inspection found no foreign worker or cargo build at admission, and all four exact Root-disposed idle identities matched UID/PPID/PGID/start ticks/comm/argv/exe/cwd. Those exceptions apply only to the supplied identities; origin remains unknown, and none was modified. Worker ancestry was excluded correctly. Every heavy phase used the foreground python3 .pa/kr08c2b-nb1-evidence/phase_guard.py <phase> && <phase-command> form, checking load1 <8, MemAvailable >=3500 MiB, cargo roots <2, total active heavy phases <=2, actual exclusive target ownership, one Cargo job and no profile overrides. guards.jsonl retains the fresh per-phase readings. No separate background command was launched; browser/Vite lifetimes ended in the foreground capture's finally block.

Before report replacement, SHA-named copies of the previous coordinator report, available runner-log snapshot, prior PR body and admission receipt were retained in the coordinator backup and .pa/kr08c2b-nb1-evidence/backup/manifest.json. The coordinator report snapshot hashes to e8cd9fadbdbdb3156a8a282dcfe61351e919330c7da2cbc989ad5fb1f30a42d0; the prior PR API body envelope hashes to b8eaf0b31be08ff01bb021286187025efcdf5a2a139096ca3349e9eabf8826d7. Historical .pa/kr08c2b-evidence/ is untouched. New artifacts are uncommitted under .pa/kr08c2b-nb1-evidence/; they are private evidence references, not public downloadable attachments.

R1 findings and disposition

R1 source labels below are supplied by Root; the worker does not claim to have observed reviewer wire identity. Source line references are bound to reviewed 99d9478. Implementation is offered for the LAST Round2 delta review, not self-approved closure.

ID Source / reviewed source Severity Disposition and evidence Fix commit
R1915-C1 / Kimi B1 / Root V1 Supplied R1 + Root; terminal.css:3 medium Removed the static override. Fresh browser rects remain identical; every chooser-only resize delta is zero. fbbcf1db970609c26269aa75f477511a7389491c
R1915-C2 Supplied R1; static layout at terminal.css:3, existing pointerdown dismissal medium Trusted full pointer sequences select another tab and close worker/ad-hoc tabs with chooser OPEN. Worker close has no kill; ad-hoc close kills its own session only. fbbcf1db970609c26269aa75f477511a7389491c
R1915-C4 / Kimi A2 Supplied R1; TerminalRoute.tsx:74 low, breaks L7 New public regression RED on reviewed source, then GREEN; insertion retains busy restore and accepts the explicit restart result. test 3339a8ff; fix fbbcf1db970609c26269aa75f477511a7389491c
R1915-C5 / Kimi C1 Supplied R1; TerminalRoute.tsx:66–71, TerminalLauncher.tsx:61 nit Settled-without-insertion detection is disarmed by the committed-state effect. Existing public rejection, insertion-before-subscription and pending/remount tests pass. No private-state/reset/module-mock test is claimed. fbbcf1db970609c26269aa75f477511a7389491c
R1915-DOC1 Root report correction low Original-start sentence corrected above; NB admission is distinct. Historical closed-error reference uses settled 91172b2a. New head has separately inspected OPEN/CLOSED captures. report-only, bound to fbbcf1db970609c26269aa75f477511a7389491c
R1915-C3 / Kimi A1 Supplied R1, bounded by full L3 below not specified in brief Retained known bound: route remount loses insertion detection. No global fence added. no fix authorized
Kimi B2 Supplied R1, bounded by full L3 below not specified in brief Retained known bound: post-commit effect leaves a same-tick lookup window. no fix authorized
Kimi D1 / R1915-C6 Supplied R1, full L3/L6/L7 below evidence limit Browser-only focus; jsdom does not count resize calls. New browser proof closes its listed scenario only. bounded evidence only

L1–L8 — verbatim requirements, evidence and retained bounds

ID Verbatim requirement Candidate evidence / retained bound
L1 "The existing generic empty launcher remains available, and one new launcher with the stable name Neue Sitzung is available beside a selected non-exited live session only when no restore panel, route lookup, restart or route error is active; mounting, opening, cancelling or dismissing it never starts, restarts or kills a session." The same empty/live launcher eligibility and mutation assertions pass. Only the scoped static positioning override was removed; the shared Popover and controls are unchanged.
L2 "Only explicit activation of an enabled profile starts one spawn_pty with the selected profile and existing geometry; all prior session IDs and their order remain intact, and repeated activation across empty/live transitions or route unmount/remount starts no second request until the original openAdHoc Promise settles, including its exit subscription." The public append test still requires one spawn with the chosen profile and 80×24 geometry, preserved prior IDs/order, and the shared Promise guard. Both original-spawn resolve/reject remount cases and both exit-subscription settlements remain exercised. No provider/reducer changes.
L3 "Actual insertion appends and selects one new tab at the end through the existing provider and, on the still-mounted terminal route, clears the old worker deep link and fences its request even if exit subscription later rejects; normal success closes the chooser and the ready single terminal viewer receives focus through its existing lifecycle, while cancel or Escape returns focus to the launcher and outside interaction preserves the focus it chose, with no callback that navigates back or focuses an unmounted route." The normal pending-lookup fence and post-insertion subscription-rejection cases pass. A newer explicitly activated restart retains its restore route and request; insertion consumes its snapshot without cancelling that restart. C3/KimiA1 remains bounded: remount while a launch is pending loses route-local insertion detection; the shared pending guard survives, but there is no new global fence. KimiB2 remains bounded: detection runs in post-commit useEffect, leaving a same-tick lookup window. Browser success focuses the existing terminal input; cancel/Escape focus the launcher; outside click on the already selected worker tab retains that tab focus. Switching to another tab mounts its viewer and then focuses the terminal input. No global selection/cancellation/focus guarantee is added.
L4 "A rejected launch request leaves existing provider-owned sessions intact and exposes exactly one truthful request-failure alert on the eligible empty or live launcher, whether the chooser is open or closed; if insertion happened before rejection, the inserted session remains visible and selected alongside the alert, and the message never claims that no PTY or session was created." Exactly one full truthful failure is visible in the fresh failure-page OPEN and CLOSED captures. The first spawn is rejected; no setup consumes it. Existing tests also retain a session inserted before subscription rejection. The CLOSED alert occupies an action-area row: its show/ack changes viewer height by 31.5px with one resize each, expressly allowed by Root; chooser-only transitions remain zero-resize.
L5 "The same request failure survives hiding or remounting the launcher until deliberate reopen or a new explicit attempt acknowledges it; acknowledgement never releases a pending request, success leaves no stale failure, and returning from a hidden restore or other route causes no automatic retry, session mutation or route jump." The retained-failure/acknowledgement regressions pass. C5 clears a settled no-insertion snapshot in an effect after inspecting actual committed sessions, not synchronously at spawn resolution. Shared pending still lasts through the complete openAdHoc Promise, including exit subscription; no automatic retry or provider mutation was added.
L6 "The author inspects real BASE/HEAD Glass captures of the same rich worker route, input, theme and viewport showing the live action, chooser, successful new tab and truthful failure with the chooser open and closed; the changed controls and full error text are not clipped or covered in the captured placements, existing tab and close controls remain usable, and every unproven placement or focus case is documented for Root before acceptance." Fresh candidate captures, exact rectangles, resize counts and trusted pointerdown/up/click traces are recorded below. Root clarification: a transient USER-OPENED popover may cover the viewer but never tab/close controls; the CLOSED alert stays in the action area and may cause the accepted show/ack resize. This supersedes the previous static-layout method, not the requirements. C6/KimiD1 remains limited: success focus is browser-only, and jsdom tests do not count resize_pty; the browser counts close only the listed fixture scenario. Other placements, delayed focus, native behavior and assistive technology remain unproven.
L7 "New regressions fail against BASE before the fix and pass on the candidate through the mounted App and Tauri boundary, preserve both resolve and reject remount guard cases and the test-hygiene cleanup guarantees, replace only superseded empty-only eligibility or live-error-absence expectations with explicit stronger assertions, and keep restore launch, restart fencing, lookup errors, Classic and existing session-close contracts unchanged." The new exact named C4 regression compiles and fails on reviewed production 99d9478 at the missing restore-region assertion after insertion, then passes on the candidate. It exercises a pending spawn, an explicit pending restart, retained busy restore panel, visible completed worker, and exact mutations through mounted App/Tauri boundaries. All deferred requests settle in the existing B cleanup helper. Both resolve/reject remount cases remain. The four original assertion replacements are retained below; NB1 removes or weakens no existing committed assertion. C6/KimiD1: jsdom cannot prove native focus or resize counts; those claims are limited to the separate browser fixture. RESTORE launch/Classic/close/lookup-error behavior remains scoped as before.
L8 "The LIVE PR stays within 300 RAW lines and its exclusive files, carries its own truthful PLAN row and only the allowed combined status-cell update, passes targeted tests and full own prepush with normal verified push, and returns one new DRAFT with two non-author-family reviews still owned by Root; restore launch, KR-08d split, native, installed/effective, whole-Glass, UAT and parent acceptance remain open." Same existing DRAFT PR #1915, 283 RAW total (272 additions + 11 deletions) versus original PR base, no overrun above 300 or 400. NB1 delta is 69 RAW (61 additions + 8 deletions) against 99d9478. Own PLAN row updated; the already allowed combined subplan cell has no NB1 change. Targeted, red-first, full own prepush and ordinary push hook passed; remote matches candidate. Root owns the LAST Round2 delta reviews, acceptance and Mergify. RESTORE/split/native/installed/effective/whole-Glass/UAT and parent acceptance remain open.

Commands and actual exits on the candidate

Commands ran in the assigned worktree. Every test/build/browser/secret-scan+commit/full-prepush/normal-push-hook phase was preceded by the fresh guard in the same foreground command. Gates printed the own worktree and HEAD fbbcf1db; public text omits private absolute paths.

Command Exit / evidence
npm run test:unit -- src/screens/terminal/TerminalRoute.test.tsx -t 'preserves an explicit restart and its restore panel when a pending launch inserts' 1, compiling regression against exact reviewed production 99d9478. red-C4.log: Unable to find an accessible element with the role "region" and name "Sitzungs-Wiederherstellung", test line 1162, immediately after pending insertion. 1 failed; the other 46 tests were only deselected by -t, not changed/skipped in source.
npm run test:unit -- src/screens/terminal/TerminalRoute.test.tsx src/sessions/SessionProvider.test.tsx src/sessions/sessionReducer.test.ts 0, final candidate, 3 files / 67 tests passed, targeted-final.log. Existing jsdom canvas warnings are not native evidence.
npm run typecheck 0, ordinary commit hooks and candidate prepush gate; final prepush typecheck took 8s.
git diff --check 0, no whitespace errors.
bash scripts/ci/secret-scan.sh and git commit -F <UTF-8 LF message> 0 before each of the two NB1 commits; ordinary commit hooks also 0, red-commit.log / fix-commit.log. Raw parsed trailers and actual committed bodies inspected.
bash scripts/ci/red-first.sh 0, red-first.log. Exact named candidate tests green; new C4 name absent at original merge-base. This missing-name result is separately distinguished from the real failing C4 assertion on 99d9478 above.
node .pa/kr08c2b-nb1-evidence/capture.mjs 0, final browser-final.log, binding/head/source hashes, rectangles, counts, trusted pointer traces and PNGs below.
bash scripts/ci/gates.sh lane prepush 0, prepush.log, 265s. Frontend 235 files / 1753 passed; Rust 2327 passed / 7 existing skips. All required gates passed.
git push -u origin codex/kr-08c-2b-live 0, push.log; ordinary full push hook also 0, 180s. No bypass or history rewrite.
git ls-remote origin refs/heads/codex/kr-08c-2b-live 0, exact fbbcf1db970609c26269aa75f477511a7389491c.
gh pr view 1915 --json url,state,isDraft,headRefOid,baseRefOid,labels 0, OPEN, DRAFT, unchanged base, exact new candidate, labels [].

Exact new trailer: Test-First: src/screens/terminal/TerminalRoute.test.tsx::preserves an explicit restart and its restore panel when a pending launch inserts. It is present on both new commits. The compiling failing test was committed first in 3339a8f, then the fix in fbbcf1d. Historical original-base RED evidence and commits 62e1211 / 0786002 / 1cbd2b6 / 99d9478 remain preserved in the backup; they are not relabelled as new-head evidence.

Capture correction disclosed: the initial candidate capture exited 1 after successful tab selection because the scratch script additionally demanded persistent focus on the newly selected tab. The unchanged viewer lifecycle focuses the terminal input on mounting. The initial script/log/images remain in capture-initial.mjs, browser.log, and browser/. The final scratch script checks/records the actual input focus and still requires real pointer selection, open-chooser dismissal and close semantics. No product test, timeout/retry, or source was changed for that correction, and no global outside-focus promise is inferred. A pointer click on the already selected worker tab does retain its focus, as separately measured.

Fresh browser measurements and inspected images

Existing rich fixture, worker w1, sole initial live session ses-w1, same task/input and 1440×900 / light / glas / reduced motion. Chromium 153.0.8010.12. Final capture binding starts 2026-10-25T16:14:16.163Z at candidate fbbcf1d. The source SHA-256 map is retained in browser-final/binding.json; the capture used real Vite/React/xterm and the existing Tauri browser fixture. Paint was awaited with two animation frames plus a 200ms capture-only delay, then another stable count/paint sample. No committed harness or fixture modification.

The existing call log contains command names. In the chooser-only scenarios only ses-w1 is open, and all resize-call counts stay unchanged, stronger than merely filtering by that session. Additional capture-time instrumentation transparently records selected __TAURI_INTERNALS__.invoke commands/arguments and returns the original result; it changes no mock response. It provides exact close-session evidence and subsequent resize arguments. Trusted pointer events are captured separately.

Rectangles use (x, y, width, height) CSS pixels. BEFORE and AFTER opening/cancel/Escape/outside dismissal are exactly equal:

Element Before Chooser open / dismissed
Action strip (248.625, 110.796875, 1179.375, 42) identical
Initial worker tab (253.625, 115.796875, 203, 32) identical
Close button (473.625, 115.796875, 105, 32) identical
Viewer (248.625, 164.796875, 1179.375, 723.203125) identical top AND dimensions
Open popover absent (590.625, 157.796875, 320, 280); below tab/close bottom 147.796875, overlays viewer only
Scenario / operation Baseline resize count After operation Delta
Normal: open 2 2 0
Normal: cancel 2 2 0
Normal: reopen before Escape 2 2 0
Normal: Escape 2 2 0
Normal: reopen before outside click 2 2 0
Normal: click selected worker outside 2 2 0
Fresh failure-page: same six operations, before first spawn 2 each 2 each 0 each
Failure after first explicit spawn, chooser remains OPEN 2 2 0
Show CLOSED alert row 2 3 +1, accepted alert resize
Reopen/acknowledge CLOSED alert 3 4 +1, accepted alert acknowledgement resize

The error page was a fresh ?launchFailure=1 page with no setup spawn. Exactly one spawn, no respawn/kill. OPEN full alert: (599.625, 198.296875, 302, 39), scroll/client 302×39. CLOSED full alert: (248.625, 164.796875, 1179.375, 19.5), integer scroll/client 1179×20. Both raster images show the full truthful text and controls. CLOSED strip height becomes 73.5; viewer top/height become 196.296875 / 691.703125. Showing/acknowledging that row changes the viewer by 31.5px, with ses-w1 geometry 166×40 → 166×38 → 166×40. This allowance is not applied to chooser-only layout.

C2 actual clicks: the public chooser creates Claude / ses-adhoc-1 once, then a real pointer click returns to initial w1. With the chooser OPEN, the second-tab rectangle is (460.625, 115.796875, 66, 32) and close is (543.625, 115.796875, 105, 32); the overlay begins at (660.625, 157.796875), covering neither. Each operation below records exactly the trusted mouse sequence pointerdown → pointerup → click, without pre-closing the chooser or invoking a handler directly.

Actual open-chooser operation Before → after tabs/selection Mutations Settled observed focus
Click Claude tab [w1 selected, adhoc] → [w1, adhoc selected], chooser closes spawn remains 1; respawn/kill 0 .xterm-helper-textarea, via existing viewer lifecycle
Return to w1, reopen chooser, click Tab schließen [w1 selected, adhoc] → [adhoc selected] kill remains 0; worker keeps running remaining Claude tab
Reopen chooser on remaining adhoc, click Tab schließen [adhoc selected] → [], empty launcher visible exactly kill_pty({sessionId: "ses-adhoc-1"}); spawn remains 1, respawn 0 Klassisch empty-state control

Viewer remounts after deliberate tab selection/close legitimately increment resize counts (selection 6→8, worker close 10→12); these are not chooser-only claims. Ad-hoc close leaves count 12. The complete before/after rectangles, call lists, boundary arguments, focus HTML and pointer events are in browser-final/measurements.json.

Every unique new image listed below was visually inspected; equal hashes identify byte-identical duplicates. These are fresh candidate captures even where pixels happen to match a historical success frame.

New artifact (under browser-final/) SHA-256
failure-before.png 3f0a58fbc56640dab10c0caa6cbc6df61a4d86f9f94be90c0afdc599ed254c55
failure-chooser-open.png 88fdc88cd9e6323273b3ba29c4c1a98450718c8acc8e547755f167cd5e7f99e2
failure-error-closed.png c05ebe13500671e01b578b944144ebb2b3542fd05aa8f05190d04bd5ca61fce3
failure-error-open.png 53b48f7a0bcf7a023da1c2cfe5f5e90e1bd168f5fbdd08bbbd9c81be8910653e
normal-adhoc-close-after.png 1eeae0e194b4899f65ff7de32411b2ada0b73d04679f3aba8af8fbaf58dfb086
normal-adhoc-close-before.png cedb79db64ccde8acaf6af21d68ed90e9f1733bc0738d3650ea0e3acbc433c0e
normal-before.png 3f0a58fbc56640dab10c0caa6cbc6df61a4d86f9f94be90c0afdc599ed254c55
normal-chooser-open.png 88fdc88cd9e6323273b3ba29c4c1a98450718c8acc8e547755f167cd5e7f99e2
normal-select-after.png 5aa24646f2d3f213a5625477cd196f126ed82dd74ae8ad43927d8c38aa4e96e8
normal-select-before.png 7071ae699268eeb73f9bd60c91853a0cff790483a5e0383032fb22393c297621
normal-success.png 5aa24646f2d3f213a5625477cd196f126ed82dd74ae8ad43927d8c38aa4e96e8
normal-worker-close-after.png a0b18eb4403ef0b98ed00da095188a5e004084d0392d063da1e6e2af5ddebcd2
normal-worker-close-before.png 7071ae699268eeb73f9bd60c91853a0cff790483a5e0383032fb22393c297621

Source binding:

File SHA-256
TerminalRoute.tsx 7fbfa28434ead8a0f650729720462f6eee16f2c2902783fc7536996e9c2534c0
TerminalLauncher.tsx d73fec6950e7be49dfc26ab5ac41f3b857d9a45b4d07253d8d3599edf62782e5
TerminalRoute.test.tsx 0e8ce721e9818480105266cd93bc56840a182558808ff132e7f75cbe5e98cab0
terminal.css 0b872bf3c1ce1391a42891f283ac3a6b0c165049f67962f219e57ed61d187458

Original-base assertion replacements retained verbatim (L7)

  1. In launches exactly one chosen enabled profile from the empty Glass route, old: expect(screen.queryByRole("button", { name: "Neue Sitzung" })).toBeNull();. New: expect(screen.getByRole("button", { name: "Neue Sitzung" })).toHaveAttribute("aria-expanded", "false"); plus expect(screen.queryByRole("alert")).toBeNull();. Reason: successful insertion now exposes the unique eligible live action, closed and without a stale error.
  2. In preserves late provider insertion without navigating back to an unmounted launcher, old: expect(screen.queryByText(/Sitzungsanfrage fehlgeschlagen/)).toBeNull();. New: expect(screen.getAllByRole("alert")).toHaveLength(1); and expect(screen.getByRole("alert")).toHaveTextContent("Sitzungsanfrage fehlgeschlagen. exit subscription failed");. Reason: the accepted LIVE policy requires retained truthful failure beside the inserted/selected tab after returning; the no-route-jump and exact-mutation assertions remain.
  3. In the eligibility case immediately after selecting live Task two, old: expect(screen.queryByRole("button", { name: "Neue Sitzung" })).toBeNull();. New: expect(await screen.findByRole("button", { name: "Neue Sitzung" })).toBeVisible();, followed by an observed ptyExit("pty-two") subscription, public exit delivery, and the original absence assertion after exit. Reason: eligible live launch is enabled while exited-tab launch remains excluded. The title changes from offers launch only in the generic empty route and not lookup error restore or live views to offers launch in empty and eligible live views but not lookup error restore or exited views; lookup/error/restore and zero-mutation assertions remain.
  4. In keeps an inserted session visible when its exit subscription rejects, old: expect(screen.queryByText(/Sitzungsanfrage fehlgeschlagen/)).toBeNull();. New: expect(screen.getAllByRole("alert")).toHaveLength(1); and expect(screen.getByRole("alert")).toHaveTextContent("Sitzungsanfrage fehlgeschlagen. exit subscription failed");. Reason: the inserted selected session and truthful shared failure must coexist. Subsequent explicit close, retained empty-view error, acknowledgement and exact mutation assertions remain.

No other BASE assertion was removed or weakened. The newly added subscription resolve/reject parameterization was consolidated into the exact named test fences live insertion before exit subscription, which still executes both settlements with unconditional cleanup. The two historical original-spawn remount cases and the B cleanup/diagnostic helpers remain unchanged.

NB1 adds only the named C4 regression; no further existing assertion replacement was needed.

Historical BASE / 99d9478 image table — not new-head proof

The original images remain under .pa/kr08c2b-evidence/. BASE lacks the live launch action; no fake BASE chooser was constructed. BASE and the settled historical CLOSED frame were inspected again during NB1. The remaining historical image entries retain the predecessor's evidence binding. DOC1 replaces only the erroneous immediate CLOSED-frame reference with the settled 91172b2a frame; none of these is presented as new-head evidence.

Artifact SHA-256
base-normal-live.png 4dc4cb5dccf9ad2e23b23dd5b19712d64117f9df0b9e9e7c0af77b5a7cb81fc7
base-failure-live.png 4dc4cb5dccf9ad2e23b23dd5b19712d64117f9df0b9e9e7c0af77b5a7cb81fc7
final/head-normal-live.png e3e869d2ed8fc80c1b9e658ad8d51a7ffd07293dca5e8b62bc223fa0881dc5d2
final/head-failure-live.png e3e869d2ed8fc80c1b9e658ad8d51a7ffd07293dca5e8b62bc223fa0881dc5d2
settled/head-normal-chooser.png 0aa47051928e2bec0eb10c1b96594b2d9699227b3e8c7c5d462e8f4629a31a13
final/head-failure-chooser.png 0aa47051928e2bec0eb10c1b96594b2d9699227b3e8c7c5d462e8f4629a31a13
final/head-normal-success.png 5aa24646f2d3f213a5625477cd196f126ed82dd74ae8ad43927d8c38aa4e96e8
final/head-failure-error-open.png 4560b423f042d77c4ce2e5fa793b1ab920a2c1ceb403c05f6d50e3056e792352
settled/head-failure-error-closed.png 91172b2a913bc773d5a934fecf3f4bedc4477f54a0e819e4752fc014aa8c0841

NICHT ABGEDECKT / remaining acceptance

  • Linux does not compile/run #[cfg(windows)] tests (run_in_pty, npm_shim, ConPTY, DPAPI) or Windows clippy branches. The real Windows lane runs in the merge queue; ordinary PR status is not Windows proof. Seven existing Rust skips remain; none was added here.
  • The prepush lane does not replace the full Linux browser-smoke/frontend-build/workflow lanes. External Updater/OmniRoute/Mirror state and release verification are not covered by any claimed gate here.
  • No real native provider/PTY launch, native focus, installed/effective delivery, whole-Glass acceptance, UAT or parent acceptance. Displayed terminal fixture text is not native test output.
  • RESTORE launch, exited-tab launch, KR-08d split, D1 timeout and the unresolved provider/reducer restore contract are unchanged and out of scope. No global focus/selection/cancel guarantee, provider fix, shared Popover repair or new service.
  • Full L3 above retains C3/KimiA1 (remount loses insertion detection) and KimiB2 (post-commit same-tick lookup window). These are recorded nonfix bounds, not silently treated as closed.
  • Full L3/L6/L7 above retain KimiD1/C6: jsdom does not count resize calls and success focus is browser-only. New count/rect/click evidence closes only the explicitly observed configuration and operations; tab switch still allows its viewer to take focus. Delayed subscription-rejection focus, restart-failure focus, restore transitions, unmount/remount focus and global late selection are unproven in the real browser.
  • Full L4/L6 above distinguish the permitted CLOSED-alert show/ack resize from zero-resize chooser-only operations. Long errors, many-profile overflow, narrow/other viewports, themes/variants, zoom, other motion settings, assistive technology and native behavior remain unproven.
  • Four exact idle identities remain untouched; provenance is unknown. Memory mirror/native quota API/Sourcegraph limitations remain as disclosed. No assumption about a provider's network connections or CPU usage is inferred from Root's identity exception.

Review: ausstehend (Stufe A). Stabs checks the handover; Root runs the LAST Round2 delta 99d947826af78ad7fa5d6ef7370760d27351f76e..fbbcf1db970609c26269aa75f477511a7389491c through Anthropic + Kimi CLI, proves actual wire identities, and decides merge/split/drop. No third round. The worker launched no reviewers/QA/team, set no ready/review-ok/queue labels and performed no merge. The same PR remains DRAFT and the parent remains open.

Round 2 (LAST) — Root delta review and decision, bound to fbbcf1d

Delta 99d94782..fbbcf1db, Tier A, author family OpenAI (Codex gpt-6-astra). Reviewers (non-author families):

  • Anthropic: Claude Opus 5.5 code-review subagent (Root-run, read-only) — APPROVE WITH CONDITIONS. C1/B1/V1, C2, C4/A2, C5 FIXED.
  • Moonshot: Kimi Code CLI, model kimi-code/k3 per wire.jsonl session 27cd7a6a — APPROVE WITH CONDITIONS. C1, C2, C4, C5 FIXED.
  • Root personally inspected browser-final/ captures at fbbcf1d (sha256 match the table above): chooser overlays viewer only, strip/tab/close rects unchanged, full error text OPEN and CLOSED.
ID Source Severity Disposition
R1915-R2-A1 Anthropic, TerminalLauncher.tsx:67 (default align="start"), layout.css:70 left: 0, mount.css:3 overflow: auto medium Follow-up. Plausible but unmeasured: with many tabs on a narrow window the start-aligned panel can overflow right, possibly adding a horizontal scrollbar (viewer resize) and partly hiding the panel. L6 requires unproven placements to be documented; the report lists "other placements" as unproven; the captured placements meet L6 and the NB1 zero-resize requirement. Follow-up ticket: right-edge placement (e.g. align="end") + narrow-viewport browser proof.
R1915-R2-B1 / Kimi R2-a1 Anthropic + Kimi, TerminalRoute.tsx:80-82 low / nit Root adjudication: an insertion during an explicit pending restart does not clear ?worker= or fence the restart. L7 ("keep … restart fencing … unchanged") and accepted R1915-C4 take precedence over L3's deep-link clearing for this case; L3 still holds for ordinary pending lookups (test-covered). Recorded here as the sanctioned L3 bound.
R1915-R2-C1 Anthropic, TerminalRoute.tsx:76-78 low Follow-up: C5 disarm correct by inspection in both reviews; no dedicated regression test.
Kimi R2-b1 Kimi, TerminalRoute.test.tsx:990-992 low Resolved by evidence: browser-final trusted pointerdown/up/click traces show tab select, worker close (no kill) and ad-hoc close (exact kill) with chooser OPEN. jsdom click-through test remains an optional follow-up.
Kimi R2-c1 Kimi, terminal.css:7 low Accepted bound: overlay relies on shared Popover CSS; no jsdom layout test possible.
R1915-R2-D1 Anthropic, useFlip.ts with wrapped strip nit Follow-up together with A1 (flip-above could cover a wrapped tab row on short windows).

Root decision after round 2 (no third round): MERGE. Conditions met: fresh captures at head inspected by Root; prepush exit 0 on head (worker evidence); CI to be green on head before queue; no open high finding.

Cuarroc and others added 6 commits October 25, 2026 16:11
Exercise the mounted App at the Tauri boundary before implementing LIVE.
All four new cases fail on the missing live launcher at the exact base.

Plan-ID: KR-08c-2b-LIVE
Test-First: src/screens/terminal/TerminalRoute.test.tsx::appends an explicit live launch without replacing existing worker tabs
Test-First: src/screens/terminal/TerminalRoute.test.tsx::fences live insertion before exit subscription
Test-First: src/screens/terminal/TerminalRoute.test.tsx::retains live launch failure across dismissal restore and remount until acknowledgement
Co-Authored-By: GPT-6 Astra <noreply@openai.com>
Reuse the shared pending guard and retained request feedback in live views.
Track explicit route-local insertion before exit subscription settlement,
normalize the worker link and close the mounted chooser after success.
Keep chooser errors in the action strip without covering the viewer.

Plan-ID: KR-08c-2b-LIVE
Test-First: src/screens/terminal/TerminalRoute.test.tsx::appends an explicit live launch without replacing existing worker tabs
Test-First: src/screens/terminal/TerminalRoute.test.tsx::fences live insertion before exit subscription
Test-First: src/screens/terminal/TerminalRoute.test.tsx::retains live launch failure across dismissal restore and remount until acknowledgement
Test-First: src/screens/terminal/TerminalRoute.test.tsx::keeps the same request pending across empty live and empty subscription views
Co-Authored-By: GPT-6 Astra <noreply@openai.com>
Resolve the event-name gate finding without changing test expectations.

Plan-ID: KR-08c-2b-LIVE
Test-First: src/screens/terminal/TerminalRoute.test.tsx::fences live insertion before exit subscription
Test-First: src/screens/terminal/TerminalRoute.test.tsx::keeps the same request pending across empty live and empty subscription views
Co-Authored-By: GPT-6 Astra <noreply@openai.com>
Retain all deferred completions so assertion failures cannot leave
additional IPC promises pending during unconditional public cleanup.

Plan-ID: KR-08c-2b-LIVE
Test-First: src/screens/terminal/TerminalRoute.test.tsx::fences live insertion before exit subscription
Test-First: src/screens/terminal/TerminalRoute.test.tsx::keeps the same request pending across empty live and empty subscription views
Co-Authored-By: GPT-6 Astra <noreply@openai.com>
Expose R1915-C4 through the mounted App and Tauri boundary: a pending
ad-hoc insertion must retain the busy restore panel and restart result.
The regression compiles and fails against reviewed production 99d9478.

Plan-ID: KR-08c-2b-LIVE
Test-First: src/screens/terminal/TerminalRoute.test.tsx::preserves an explicit restart and its restore panel when a pending launch inserts
Co-Authored-By: OpenAI gpt-6-astra <noreply@openai.com>
Use the existing anchored popover without growing the live action strip.
Keep a newer explicit restart and restore panel intact during ad-hoc
insertion. Disarm settled launch snapshots only after checking committed
session state, preserving insertion-before-subscription observation.

Address R1915-C1/C2/C4/C5 and update the package's pending review status.

Plan-ID: KR-08c-2b-LIVE
Test-First: src/screens/terminal/TerminalRoute.test.tsx::preserves an explicit restart and its restore panel when a pending launch inserts
Co-Authored-By: OpenAI gpt-6-astra <noreply@openai.com>
@Cuarroc
Cuarroc marked this pull request as ready for review October 25, 2026 16:45
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-25T16:47:00.394887Z fbbcf1d Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@Cuarroc

Cuarroc commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

Root acceptance (INTEGRIEREN) bound to head fbbcf1d, 2026-10-25T16:58:36Z.

  • Tier A. Author family OpenAI (Codex gpt-6-astra). Round 1 on 99d9478 and LAST round 2 delta 99d9478..fbbcf1d: Anthropic (Claude Opus 5.5 subagent) + Moonshot (Kimi Code CLI kimi-code/k3, wire session 27cd7a6a), both APPROVE WITH CONDITIONS; conditions met (fresh browser captures at head inspected by Root, prepush exit 0, CI green). Disposition table in PR body (Round 2 section). No open high finding.
  • Root decision after round 2: MERGE. Follow-ups: R1915-R2-A1/D1 placement, R1915-R2-C1 test.
  • 283 RAW (272+11) <= 300. Red-first pass. CI on head: gates (linux), gates (windows), linux_1/linux_2, windows lanes, red-first, CodeQL, GitGuardian all pass. Codex connector on fbbcf1d: no findings (advisory, author family).
  • review-ok bound to fbbcf1d; any new push voids it.

@Cuarroc Cuarroc added the review-ok Pipeline: review disposition complete, no open high finding label Oct 25, 2026
@Cuarroc

Cuarroc commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

@Mergifyio queue

@mergify mergify Bot added the queued label Oct 25, 2026
@mergify mergify Bot mentioned this pull request Oct 25, 2026
30 of 46 tasks
@mergify
mergify Bot merged commit 5c15cdd into main Oct 25, 2026
25 checks passed
@mergify

mergify Bot commented Oct 25, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

This pull request spent 10 minutes 40 seconds in the queue, including 10 minutes 1 second running CI.

Required conditions to merge
  • check-success = gates (linux)
  • check-success = gates (windows)
  • check-success = red-first
  • github-review-approved [🛡 GitHub repository ruleset rule main-pr-required-checks]
  • label != do-not-merge
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (linux)
    • check-neutral = @github-actions/gates (linux)
    • check-skipped = @github-actions/gates (linux)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (windows)
    • check-neutral = @github-actions/gates (windows)
    • check-skipped = @github-actions/gates (windows)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/red-first
    • check-neutral = @github-actions/red-first
    • check-skipped = @github-actions/red-first
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-neutral = @mergify/Mergify Merge Protections
    • check-skipped = @mergify/Mergify Merge Protections
    • check-success = @mergify/Mergify Merge Protections

@mergify
mergify Bot deleted the codex/kr-08c-2b-live branch October 25, 2026 17:09
@mergify mergify Bot removed the queued label Oct 25, 2026
Cuarroc added a commit that referenced this pull request Oct 26, 2026
Merge origin/main (be8b703, #1917) to resolve the real PLAN.md conflict
at the KR-08c-2b-LIVE / FU-KR08C-LIVE-PLACEMENT rows; both rows are kept.

Correct the V2-REST rows: own status after merge, #1917 merged with its
actual SHA, RESTORE next on a fresh base, exited-tab eligibility as a
separate residual, KR-07a parking kept in the 07a-11c-11d chain, GI05
runs independently of RESTORE. Record the bounded Root acceptance of
#1915 and #1917 and the GI05 answer versus the accepted conservative cut.

Plan-ID: V2-REST-PLAN-PFLEGEN
No-Test: docs-only plan correction, no runtime or test change
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review-ok Pipeline: review disposition complete, no open high finding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant