Repository navigation
fix: preserve project chat drafts across routes (KR-04b) - #1894
Conversation
Exercise the real route composer through the mocked Tauri boundary. The regression fails when returning to the route loses the first draft. Plan-ID: KR-04b Test-First: src/shell/mount/verlauf.mount.test.tsx::retains project drafts across routes and settles only the submitted revision Co-Authored-By: GPT-6 Astra <noreply@openai.com>
Require genuine history after an in-flight first send completes across navigation. Also observe the empty-state claim at the history read boundary. Plan-ID: KR-04b Test-First: src/shell/mount/verlauf.mount.test.tsx::loads the accepted first conversation after returning during its send Co-Authored-By: GPT-6 Astra <noreply@openai.com>
Keep one current draft and its pending send/error per project in UI-session memory. Clear only the acknowledged text revision and discover a first conversation when a send completes after route return. Reuse the existing history reader and preserve classic callers. Plan-ID: KR-04b Test-First: src/shell/mount/verlauf.mount.test.tsx::retains project drafts across routes and settles only the submitted revision Test-First: src/shell/mount/verlauf.mount.test.tsx::loads the accepted first conversation after returning during its send Co-Authored-By: GPT-6 Astra <noreply@openai.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Root: |
Merge Queue Status
This pull request spent 8 minutes 39 seconds in the queue, including 8 minutes running CI. Required conditions to merge
|
Report addendum — review evidence limits (Root, 2026-10-25 ~00:42Z, post-merge)Tier B counted two non-author families for head babf5f9 (author: OpenAI Codex gpt-6-astra/high):
Basis: origin/main AGENTS.md rule 5 + E1 (Elias 2026-10-20: while OpenRouter credit <= 0 a second subscription family may replace OpenRouter). The DOC-mission rule "Root alone uses Claude" (FINAL-20261020T2156Z) is scoped to that docs mission; KR-04b is Glass product work, covered by the "reviews outside this mission: E1" clause. Evidence gaps, disclosed (not measured after the fact):
Future review starts record the observed reviewer model identity and the E1 condition evidence before counting a review. |
Ungesendete Chatentwürfe bleiben innerhalb der laufenden Oberfläche pro Projekt erhalten.
Beim Zurückkehren wird der echte Projektverlauf gelesen, ohne automatisch eine Nachricht zu senden.
Die lokalen Prüfungen sind grün; unabhängige Reviews und Abnahme stehen noch aus.
Report
Plan-ID: KR-04b
Ticket: 54a480e5-5c04-4387-b15b-ae60d7e62e6c
Operator: UMSETZEN. Execution owner: srv-kr-04b-chat-state. Parent: Nutzbar1 / Classic removal; Root owns acceptance, reviews and integration.
Candidate and contract
60aa6ac17afb89cc5f88e220db1f9bf7dbb7d7fb; own clean HEAD, origin/main and remote main matched before edits. Predecessor feat(leitstand): mount orchestrator chat in Verlauf (KR-04a) #1569 was independently confirmed MERGED at3ad56a8a2c231d5f4d56730a00b26101c6b29d95.babf5f9586b5e12973c1bc998e76e7284b285fd3, branchcodex/kr-04b-chat-state.gpt-6-astra, efforthigh, observed in this session's native turn_context at 2026-10-24 23:49:17 UTC.git diff --numstat 60aa6ac17afb89cc5f88e220db1f9bf7dbb7d7fb: +212 / -36 = 248 raw lines, including tests, five assigned files.get_goal({})initially returnedgoal: null,remainingTokens: null,completionBudgetReport: null.create_goalreturned an active bounded worker goal covering draft/history behavior, allowed files, 300-line limit, predecessor, red-first/gates/push/DRAFT/report acceptance and this owner. The checked handover is its endpoint; parent acceptance is separate. No quota inference from these null fields.Changes and lifetime
Evidence
All final evidence is for the head above in the assigned worktree. Commands ran in the foreground, with Cargo slot 2 and one build job; no hook bypass or history rewrite.
bash scripts/sync.sh startnpm run dev:start-check -- --max-cargo 2 --min-free-gb 3.5npx --no-install vitest run src/shell/mount/verlauf.mount.test.tsx— initial RED117bdc99.b15d956f.npx --no-install vitest run src/shell/mount/verlauf.mount.test.tsx src/screens/leitstand/verlauf/VerlaufChat.test.tsx src/lib/orchestratorChat.test.ts src/lib/orchestratorChat.switch.test.tsnpm run typechecknpm run buildbash scripts/ci/red-first.shbash scripts/ci/secret-scan.shbash scripts/ci/gates.sh lane prepushgit push -u origin codex/kr-04b-chat-stategit ls-remote origin codex/kr-04b-chat-statebabf5f9586b5e12973c1bc998e76e7284b285fd3, observed 2026-10-25 00:08 UTC.git diff --check/git status --short --branchThe new functional proof uses the public ShellMount route and real composer, active-project module, IPC adapters and chat hook. Only Tauri invoke/listen are mocked. This is browser MOCK functional proof in Vitest/jsdom, not native execution or a Chromium chat drill. Literal assertions cover route return, project isolation, fresh backend history, no empty claim at first read, Shift+Enter, no restoration send/start, pending-send protection, identical-text/new-revision survival, late refusal/error preservation, exact accepted clearing and first-conversation discovery. Existing tests were not weakened; no skip, timeout or retry was added.
Procedural deviation
An orchestration mistake started the initial
npm run buildafter the extra load guard had returned 1 (load1 = 10.96875, threshold<8), although the RAM/Cargo startcheck passed. That build completed with exit 0. Subsequent heavy commands were made conditional on both successful checks; a foreground 30-second wait preceded the next admission. The final-head build, full prepush and normal push each had a fresh passing guard. No threshold/configuration was changed. Root must disposition this process deviation; the later green runs do not erase it.NICHT ABGEDECKT
#[cfg(windows)]tests (run_in_pty, npm_shim, ConPTY, DPAPI) or check Windows clippy branches. The Windows lane remains a merge-queue obligation owned by Root.Review and handover
Review: ausstehend (Stufe B)
Root arranges two different non-OpenAI review families under current rule 5/E1, dispositions the procedural deviation, and owns acceptance, ready/review-ok and Mergify. This is one checked DRAFT handover: implemented, locally tested, committed and remote-SHA verified; independent reviews, parent acceptance, merge and effective/native operation remain unproven. No follow-on dispatch by this worker.
Review disposition (Root, 2026-10-25 ~00:30Z, head
babf5f9586b5e12973c1bc998e76e7284b285fd3)Tier B (author OpenAI
gpt-6-astra). Two reviewers from two different non-author families, both on this exact head: Anthropic (Claude subagent, read-only) — APPROVE WITH CONDITIONS; Moonshot (Kimi CLI, read-only, diff-only) — APPROVE. No high or medium finding.VerlaufRoute.tsx:23-26re-lookup also after a failed first send: loading swap, composer focus lost, extralist_workerssending:truenever clears if the IPC call never settles (ipc.ts:323-325has no timeout)chatDraft.ts:13)npm run buildstarted after load guard exit 1 (load1 10.97 > 8)guard && phasesent to StabschefNICHT ABGEDECKT (Root addendum): if
send_to_orchestratornever settles, that project's composer stays on "Sendet …" until the UI reloads (R1894-C3). Evidence is browser MOCK (Tauri invoke/listen mocked); native behaviour not shown.