Skip to content

fix: isolate question scopes and pending answer lifetimes - #1900

Merged
mergify[bot] merged 11 commits into
mainfrom
codex/kr-06b-2-scope-r2
Oct 25, 2026
Merged

mergify[bot] merged 11 commits into
mainfrom
codex/kr-06b-2-scope-r2

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Der Nachtrag ergänzt genau die eigene KR-06b-2-Planzeile mit Lieferumfang, Grenzen und offenen Nachläufern.
Alle Code- und Testdateien bleiben unverändert; die lokalen Pflichtprüfungen und der normale Push sind grün.
PR #1900 wartet auf Roots Dokumentenabnahme und Mergify, während nativer Betrieb, Gesamt- und Nutzerabnahme offen bleiben.

Report

Plan-ID: KR-06b-2. Operator: NACHBESSERN, R1900-X1 documentation-only completion.
Child: 6c247c5e-a94f-4f09-a3e7-ab1f50b3984f; parent: b5998181-4fc9-4637-9783-1903d16a4a46, OPEN.

Current candidate and scope — 2026-10-25

  • Original PR merge-base/size anchor: 6acaaf7802ec280a7d0ccf908969fb2577f5ac22.
  • Reviewed code and this correction's base: 292c09650c31be97ee9aafd546ab181199515f60.
  • Candidate, pushed remote and PR head: 4a59cf0f889f3c2c114cae77c0a675f757e6e001, same codex/kr-06b-2-scope-r2 branch and PR fix: isolate question scopes and pending answer lifetimes #1900.
  • Exact correction: 292c0965..4a59cf0f, one added table row, zero deletions, only docs/PLAN.md:253. All seven reviewed code/test files are byte-identical; every pre-existing PLAN byte, row, dependency, title and status is preserved.
  • Full PR: 298 RAW = 276 added + 22 deleted, including all tests, with no exclusions. R1900-X1 authorized a review-forced ceiling of 400; the actual result stays below 300, so no size overrun/exception is used.
  • One unique nine-column row in the existing Nutzbar-1 table records scope, attribution, switch isolation, merged predecessors fix: preserve question history and legacy attribution (KR-06b-1) #1896/fix: confirm only the current NeedsYou stored answer #1898, mock-only evidence and the open parent/follow-ups. Its required Erledigt status describes the prospective state after this PR merges. The PR is currently OPEN, non-draft, unmerged and has no labels; this is not installed/effective delivery or aggregate acceptance.
  • Observed author in this execution's own header and turn_context: OpenAI gpt-6-astra, effort high. Actual get_goal returned null at start and handover; no goal was created, resumed, replaced or completed. The bounded objective is this checked one-row handover to Root; the parent remains OPEN.

R1900-X1 disposition and review boundary

R1900-X1 (medium): accepted by Root and implemented in 4a59cf0f889f3c2c114cae77c0a675f757e6e001. Root's correction withdraws the earlier product-no-PLAN/batched-own-row exception. Product PRs carry their own post-merge Plan-ID row in the same PR before review-ok. Previous statements below saying “No PLAN”, separate-owner PLAN bookkeeping or an absent KR-06b-2 row are superseded historical dispatch/evidence at 292c096, not current policy or current candidate status.

Review: ausstehend (Stufe C: Root-Dokumentenprüfung). The entire PR remains tier B; its code review rounds are CLOSED per Root's final code-delta disposition. Root recorded outside-family APPROVE on 16cb5f5e..292c0965, resolving C1/K1, K2/C2, K3 and C3. This worker commissioned no new reviewer, code-review round or QA. Root next checks the bounded docs-only delta 292c0965..4a59cf0f, accepts it, then alone binds review-ok and uses Mergify. Existing non-draft/no-label state was preserved; no ready, draft, label, queue or merge action was taken.

The prior Kimi actual-model verification limit and dated E1 evidence limit remain explicit in the historical report; this documentation correction does not cure or replace them. R1900-D1/D2/C4/C5/C6/K4/K5 remain OPEN, not implemented by the row. Catch-up ticket d87be838-da1c-43b9-a6ac-061c928566cb remains blocked until actual #1900 merge; no KR-04b/KR-06b-1/KR-06b-1b row was added here.

Fresh evidence at 4a59cf0

All commands ran in the owning worktree. Every heavy phase used a fresh foreground resource/ancestry/target-owner guard followed by && and the command; all guard/start-check admissions passed. Commands were awaited to completion.

Command / check Exit / observed result
bash scripts/sync.sh start 0; exact clean correction base before writes
npm run dev:start-check -- --max-cargo 2 --min-free-gb 3.5 0 at start and every phase; its missing usage-file warning is not quota evidence; native usage separately checked within authorization
Unique-row/nine-column check and byte comparison after removing only that row 0; all original PLAN content preserved
git diff --check 6acaaf78 HEAD 0
npm run plan:check -- --offline 0; zero findings; offline limits below
bash scripts/ci/secret-scan.sh 0 before commit; normal commit hook scan also 0
git commit -F <UTF8-LF-message> 0; normal precommit lane 0, 67 seconds; Plan-ID KR-06b-2, No-Test: docs-only plan row, observed-model coauthor
git interpret-trailers --parse <actual-message> and parsed actual commit body 0 before/after commit; exact message equality, UTF-8/LF, no literal escaped separators
git diff --exit-code 292c0965 HEAD -- . ':(exclude)docs/PLAN.md' 0; all seven reviewed code/test paths and every other file unchanged
git diff --no-renames --ignore-submodules=none --numstat 6acaaf78 HEAD 0; 276 added + 22 deleted = 298 RAW
bash scripts/ci/gates.sh lane prepush 0, HEAD 4a59cf0, 258 seconds; 1,729 frontend and 2,327 Rust tests passed; normal existing skips below
git push -u origin codex/kr-06b-2-scope-r2 0; normal full push hook 0, HEAD 4a59cf0, 179 seconds; same frontend/Rust pass counts
git ls-remote origin refs/heads/codex/kr-06b-2-scope-r2 0; exact 4a59cf0f889f3c2c114cae77c0a675f757e6e001
gh pr view 1900 --json headRefOid,state,isDraft,labels 0; exact candidate, OPEN, non-draft, no labels
git status --porcelain=v1 0; empty output

Live main remained 6acaaf78; gh run list --branch main --workflow ci --limit 1 returned completed/success run 40158729004 for that SHA. gh pr view 1896/1898 confirmed both predecessors MERGED. These are separate live GitHub observations, not evidence supplied by the offline PLAN gate. No refresh merge was performed.

NICHT ABGEDECKT — this documentation correction

  • PLAN checks are offline: GitHub-PRs und Planalter-Abgleich (--offline); Laufende Jobs (kein --events) are not checked by the gate. No offline-to-live or native-evidence claim.
  • Linux does not compile/run #[cfg(windows)] tests (run_in_pty, npm_shim, ConPTY, DPAPI) or Windows clippy branches. The Windows lane runs in the merge queue; an ordinary PR stub is not that proof.
  • Existing exclusions: seven Rust tests, three HQ entries (two Windows-only and the symlinked-output-path case), one Windows-only Denkraum test. No skips, retries, timeouts or assertions were changed. Mandatory Denkraum browser tests ran inside the gates, not as native Glass/UAT evidence.
  • No new screenshot/visual acceptance, separate Glass browser smoke, frontend build or linux workflow-lane run was performed for this row. Earlier code-build/mock receipts are retained below as historical author evidence. No native Glass/backend operation, provider send, installed/effective state, whole-Glass/UAT or release acceptance is proved.
  • External services (updater endpoint, OmniRoute, mirror) are not verified by these gates. The local project-memory mirror was unavailable; live Git/CI and the bounded documentation checks were used. No graph/completeness claim.
  • R1900-D1/D2/C4/C5/C6/K4/K5 and the parent remain OPEN. The separately assigned missing predecessor PLAN rows remain catch-up work after actual fix: isolate question scopes and pending answer lifetimes #1900 merge.

Verbatim common boundary for this precommit/prepush/push execution (precommit prints precommit in the lane line):

--- NICHT ABGEDECKT von diesem Lauf ---
  Plattform Linux:
    - die #[cfg(windows)]-Tests (run_in_pty, npm_shim, ConPTY, DPAPI)
    - die Windows-Arme von clippy
  Dieser Lauf belegt die Linux-Haelfte, nicht die Windows-Haelfte.
  Windows-Haelfte: derselbe Befehl in Git-Bash auf dem Zielrechner.
  Bahn 'prepush' ist die schnelle Schleife: Browser-Smoke, Frontend-Build
  und die Workflow-Gates laufen erst in der Bahn 'linux'.
  Der Zustand externer Dienste (Updater-Endpoint, OmniRoute, Mirror)
  wird von keinem Gate geprueft — dafuer ist das Release-Verify da.
---------------------------------------
Historical code report at 292c096 — preserved author receipts and review history

The following report is preserved from before R1900-X1. Its candidate, draft status, pending code-review steps and no-PLAN routing statements describe that earlier dispatch and are superseded by the current sections above. Earlier evidence and limitations remain traceable; no historical command is represented as rerun in this documentation-only correction.

Plan-ID: KR-06b-2. Operator: NACHBESSERN (bounded round-one corrections). Child: 6c247c5e-a94f-4f09-a3e7-ab1f50b3984f; parent: b5998181-4fc9-4637-9783-1903d16a4a46, OPEN until aggregate Root acceptance.

  • Base: 6acaaf7802ec280a7d0ccf908969fb2577f5ac22.
  • Reviewed head: 16cb5f5eb1ff0573ba71a4f5115cde94c46c6a0f.
  • Candidate and verified remote: 292c09650c31be97ee9aafd546ab181199515f60 on codex/kr-06b-2-scope-r2.
  • Exact independent delta-review range: 16cb5f5eb1ff0573ba71a4f5115cde94c46c6a0f..292c09650c31be97ee9aafd546ab181199515f60 (93 RAW = 80 added + 13 deleted).
  • Observed author: gpt-6-astra, effort high, own turn context dated 2026-10-25.
  • Total RAW size: 297 lines = 275 added + 22 deleted, including all tests, against the exact original base (git diff --no-renames --ignore-submodules=none --numstat 6acaaf78 HEAD). Reviewed size: 226 RAW. Correction forecast before edits: 340–375 total; actual total remains below 300, so the Root-authorized review exception forced by R1900-C1/K1 was not needed. No exclusions.
  • Exactly seven changed paths: src/lib/useQuestions.ts; src/screens/leitstand/LeitstandRoute.tsx; src/screens/leitstand/needs/{NeedsYou.tsx,Ask.tsx,DecisionLane.tsx,texts.ts,scope-lifetime.test.tsx}. The only new path, declared before edits, is src/screens/leitstand/needs/scope-lifetime.test.tsx.

Behavior and interfaces

Scope buttons use the existing QuestionsState.scope/setScope: project reads pass projectId; fleet reads pass undefined and use the actual fleet list, including decision lanes. The existing project action and board remain available; the questions panel stays reachable without an active project. Unread, offline and missing-project states do not claim an empty measured list.

Fleet cards now resolve registered project names through the existing read-only listProjects IPC wrapper, once per route mount with an unmount guard. Optional projectNames context reaches both ordinary cards and DecisionLane. Undefined means unread/pending, null means failed, and a completed map missing the stored ID means unregistered; each fallback retains the stored ID. Empty project IDs remain explicitly unknown. No active project name is substituted. Worker branch/task context still requires both worker and project IDs to match, using a local derived value rather than reassigning a prop. Missing or wrong-project workers retain needs.noAgent in project scope; fleet fallback IDs are shortened to eight characters, with explicit unknown and preflight wording preserved. No inventory backend, poller or new question mutation was added.

Project/scope changes remount the local question view and clear fetched rows/history before paint. A hook-local lifetime identity guards callbacks and answer outcomes, including null-result fallback reads. It changes on project/scope/enabled transitions, not on ordinary polls. The original implementation brief’s lifetime C4 was addressed inside that cut; R1900-C4 below is a different, deferred finding. The shared request helper remains unchanged.

Interface inventory, checked with bounded caller/fixture grep and baseline typecheck: useQuestions is used by App and LeitstandRoute; NeedsYou is used by the route and its existing test/i18n harnesses; Ask is used by NeedsYou and DecisionLane. QuestionsView and ShellAccessibility typed fixtures remain compatible and unchanged. The original optional props were NeedsYouProps.projectId, Ask.fleet, DecisionLane.fleet; this correction adds only optional projectNames to NeedsYou, DecisionLane and Ask. Before the interface edit, rg over production callers and fixtures found only the route plus NeedsYou/i18n harnesses and the two internal Ask paths. No forbidden fixture/caller change was needed; final typecheck and related suites passed. QuestionsState remains unchanged, including answer(id, text, onStored?): Promise<void>. This is bounded source evidence, not a complete graph claim.

ClosedHistory, history copy, cap 50, ordering, stored-answer provenance and existing answer/refusal/unlock/confirmation tests are unchanged. No PLAN, style, dependency, backend, native seam, IPC, shared concurrency, gate or configuration changes. Other #1898 follow-ups remain uncommissioned. PLAN bookkeeping stays with its separately assigned owner under Root's batched method.

Correction evidence (fresh observations, 2026-10-25)

The same clean local/remote/OPEN DRAFT PR head was verified at 16cb5f5e before writes. bash scripts/sync.sh start and npm run dev:start-check -- --max-cargo 2 --min-free-gb 3.5: 0. Own turn context proves gpt-6-astra/high; native usage was separately observed within the authorized cap (the start-check warning itself is not quota evidence). Actual get_goal returned null at start and handover; no native goal was created, replaced, completed or resumed. Live main was 6acaaf78, with completed/success ci and Push-on-main runs; no main merge was performed.

Command / boundary Exit / observation
npm run typecheck 0 for both compiling RED setups; normal commit hooks and final prepush typecheck also 0
npm run test:unit -- src/screens/leitstand/needs/scope-lifetime.test.tsx before C1/K1 fix 1 at reviewed production: two new regressions and the updated exact-name assertion fail; three other tests pass
Same focused command before K2/C2 fix 1: missing project-scope Agent nicht mehr da; six other tests pass
Related six-file command preserved below 0: 73 tests after name fix; 74 tests at final implementation
npm run test:unit -- src/screens/leitstand/needs/scope-lifetime.test.tsx src/i18n/hardcoded.test.ts 0, 21 tests after local text-format correction
npm run build 0 at final candidate, including typecheck and contrast check; existing large-chunk warning
bash scripts/ci/red-first.sh 0 at c873c1c, 68ff43a and final candidate; exact original base; all seven named regression cases pass at HEAD, file absent at base
bash scripts/ci/secret-scan.sh + normal git commit -F <LF-message> 0 before each of five correction commits; every normal commit hook 0
git interpret-trailers --parse <actual-message> / actual commit body 0 before and after every commit; final five-commit audit 0, exact names, UTF-8/LF, Plan-ID and actual-model coauthor
bash scripts/ci/gates.sh lane prepush at c873c1c 1: hardcoded-string gate rejected fallback punctuation in Ask; later gates hq-test/denkraum/clippy/rust-suite did not run in this attempt
Same full prepush at 68ff43a 0; 1,728 frontend and 2,327 Rust tests passed
Same full prepush at final candidate 0 in the owning worktree, 1,729 frontend and 2,327 Rust tests passed, 179 seconds
git push -u origin codex/kr-06b-2-scope-r2 0 after each green slice, normal full hook 0; final hook 179 seconds
git ls-remote origin refs/heads/codex/kr-06b-2-scope-r2 0; first 68ff43a, final exact 292c096
git diff --check 6acaaf78 HEAD; git status --porcelain=v1 0; clean tree

C1/K1 RED commit: eafb6788a1779205b12ff6a302f319924605afc7; implementation c873c1cb832f0f8ad6a41ee6f8017629db612fb4; unchanged-output text-format correction 68ff43a3f32537b9d30d7288aaf877dc569bea56. The full prepush failure was corrected in the already permitted local texts.ts, without changing the gate. The first green slice was pushed and remote-verified before the next slice.

K2/C2 RED commit: b6591e851ed0c0bf314e160e3439c62d85a83eb7; implementation plus K3/C3: 292c09650c31be97ee9aafd546ab181199515f60. Compared with reviewed head, useQuestions.ts has exactly one added comment and no runtime/signature/state changes. No history rewrite occurred.

Three new exact Test-First names in src/screens/leitstand/needs/scope-lifetime.test.tsx:

  1. resolves registered fleet names in ordinary and decision cards and identifies missing registrations
  2. distinguishes pending and failed project reads from missing registrations
  3. preserves project missing-worker wording and shortens only fleet fallback identities

These regressions mount public LeitstandRoute with real useQuestions and IPC normalization, mocking only Tauri and interval-time boundaries. Registry fixtures answer the existing list_projects read. Assertions cover both ordinary and decision cards, exact real names, missing registration, deferred success, failed read, absent/wrong-project workers, eight-character fleet IDs, explicit unknown identity, and rejection of borrowed active branch/task/name context. Existing matching-worker, preflight, polling, draft, late-read, stored/null/refused-answer and lifetime cases remain passing. No assertion was weakened.

Every heavy phase used a fresh foreground guard followed by && and the phase, checking load, memory, process ancestry, cargo/heavy roots, target ownership and own start-check. Final push admission at 05:09:21Z was refused (load1 8.74) before push; after one foreground 30-second wait, fresh admission at 05:10:03Z passed (load1 5.15, no cargo/heavy roots or target owners). No bypass or other process termination.

Preserved original implementation history (author receipts at reviewed 16cb5f5)

Old branch codex/kr-06b-scope remains clean and unpushed at d7e493d2fcec4644c90e588b14cbd78190f18bfd. The replacement started clean at the exact base; no amend, reset, rebase, stash, force push or history rewrite was used.

The old 84-line test was reused unchanged in new RED commit 515414608ffdb6ba0fda53baa077c188a545d6ca. git diff --exit-code d7e493d2 -- src/screens/leitstand/needs/scope-lifetime.test.tsx at that commit: 0. Both copies contain 4,731 bytes, blob 7bb6a005fedf77db50a8212338a917131d6835f1, SHA256 88210e4a7e2f916ded089613317f3958bf5f40ebb0158ce68f9e7ab436def07b. The reviewed 16cb5f5 test file retained that exact byte prefix; this correction intentionally changes its two raw-project-ID assertions to exact registered names and adds dedicated regressions.

Scope GREEN: 984bf98827b77eb49b294f92f28a2446f4a13d93, full prepush and normal push hook 0, remote verified before the next slice. Additional tests were committed in 2d56367d5c3b07e7c274a8ab76652627d7f6f908; a duplicate fixture question initially made the query ambiguous. Separate test correction 4b71035be5efc6e2ca4b722071a258b04c2d67f7 supplies the meaningful lifetime RED: an old stored answer wrongly removes the current answer field after p1→p2→p1. Production protection follows in 16cb5f5e.

Every commit used an actual UTF-8/LF message file with git commit -F. Before and after each commit, git interpret-trailers --parse validated exactly one Plan-ID, two separate exact Test-First entries and Co-Authored-By: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>; no literal escaped newline separators. Final audit of all five actual commit bodies: 0. Exact Test-First names (all in src/screens/leitstand/needs/scope-lifetime.test.tsx):

  1. reads real scopes and labels fleet projects and workers without borrowing active context
  2. keeps fleet reachable without a project and never calls unread or offline lists empty
  3. isolates late reads and answers across project and scope round trips
  4. keeps current drafts through polls and resets refused drafts on scope and project switches

Original implementation evidence (preserved author receipts at reviewed 16cb5f5)

All observations below are from 2026-10-25. Before writes, main CI runs 40158729004 (ci) and 40158728476 (Push on main/CodeQL) were completed/success at the exact base; dev-build 40158728984 was also completed/success, without treating it as an admission prerequisite. There were no open PRs before this replacement PR.

Command / boundary Exit / observation
bash scripts/sync.sh start 0; exact clean initial branch
npm run dev:start-check -- --max-cargo 2 --min-free-gb 3.5 0; independent provider observation recorded privately
npm run typecheck 0 at baseline, RED setup and GREEN; normal hooks also 0
npm run test:unit -- src/screens/leitstand/needs/scope-lifetime.test.tsx Initial RED: 1, two expected failures; corrected lifetime RED: 1, one expected failure and three passes
Focused/related command below 0; 71 tests in six files
npm run build 0; existing large-chunk warning remains
bash scripts/ci/red-first.sh 0; exact base and final HEAD, all four named tests green at HEAD, new file absent at base
git diff --check 6acaaf78 HEAD 0
bash scripts/ci/secret-scan.sh 0 before every commit; normal commit hooks 0
bash scripts/ci/gates.sh lane prepush 0 in the owning worktree at final HEAD; 1,726 frontend tests and 2,327 Rust tests passed
git push -u origin codex/kr-06b-2-scope-r2 0 with normal full push hook
git ls-remote origin refs/heads/codex/kr-06b-2-scope-r2 0; reviewed 16cb5f5 (original receipt)
git status --porcelain=v1 0; empty output
npm run test:unit -- src/screens/leitstand/needs/scope-lifetime.test.tsx src/screens/leitstand/needs/NeedsYou.test.tsx src/screens/leitstand/LeitstandRoute.test.tsx src/screens/leitstand/i18n.test.tsx src/components/QuestionsView.test.tsx src/components/ShellAccessibility.test.tsx

New regressions mount public LeitstandRoute/NeedsYou with real useQuestions, IPC normalization and active-project events. Only Tauri and interval-time boundaries are mocked. They assert real filtered/unfiltered calls, lane counts, foreign attribution, no-project/loading/offline states, drafts/history/pending reads and stored/null/rejected answers across project and scope round trips, silent stale outcomes, and current stored-answer confirmation through an ordinary poll. No own-module mocks or private state access were added. Existing tests were not weakened.

Each heavy phase used a fresh foreground resource guard followed by && and the phase. One final push admission was correctly refused before starting the hook; after a 30-second wait a fresh guard admitted it. No bypass, installation, extra agent, external review or real-provider action occurred.

NICHT ABGEDECKT

  • Linux does not compile/run #[cfg(windows)] tests (run_in_pty, npm_shim, ConPTY, DPAPI) or the Windows clippy branches. The Windows lane belongs to the merge queue; ordinary PR checks do not establish it.
  • Existing suite exclusions remain: seven Rust tests, three HQ test entries (including the symlinked-output-path case), and one Windows-only Denkraum test were skipped by existing platform/suite rules. No skip, timeout, retry or assertion policy was changed. Red-first's name-filtered invocations omit other test names; the complete new test file is covered by the focused and full suites.
  • The precommit/prepush lane's generic exclusion includes frontend build, frontend browser smoke and Linux workflow gates. Frontend build was separately run successfully; no separate Glass browser smoke or workflow-lane run is claimed. Mandatory Denkraum browser tests ran within the normal gates.
  • No inspected screenshot, visual acceptance, desktop/native Glass integration, real-provider action, UAT, release verification or whole-Glass acceptance. The desktop app was not launched.
  • Gate runs do not verify external services (updater endpoint, OmniRoute, mirror). No installed/effective product delivery is claimed.
  • The local project-memory mirror and project/generation/snippet/coverage graph tools were unavailable; live Git/CI and bounded source/caller grep were used. No complete graph/coverage claim.
  • PLAN gate runs were offline: GitHub/plan-age comparison and running-job validation were not covered by that gate. Literal KR-06b-2 is absent from docs/PLAN.md and its v2 subplan (rg, exit 1); authorized PLAN housekeeping remains with the separate owner for Root acceptance, with no PLAN edits by this worker.
  • The project registry is a one-time read per route mount; no live registry refresh/poller or retry control was added.
  • All five correction precommit runs carry the same Linux/platform/external-service exclusions below and skip Rust fmt/cargo-check because the staged changes contain no Rust input. Full successful prepush/push runs execute the normal Rust gates; the failed first prepush stopped after fe-test as recorded above.

Verbatim common gate boundary, preserved for every correction run (precommit uses precommit in the lane line, prepush/push use prepush):

--- NICHT ABGEDECKT von diesem Lauf ---
  Plattform Linux:
    - die #[cfg(windows)]-Tests (run_in_pty, npm_shim, ConPTY, DPAPI)
    - die Windows-Arme von clippy
  Dieser Lauf belegt die Linux-Haelfte, nicht die Windows-Haelfte.
  Windows-Haelfte: derselbe Befehl in Git-Bash auf dem Zielrechner.
  Bahn 'prepush' ist die schnelle Schleife: Browser-Smoke, Frontend-Build
  und die Workflow-Gates laufen erst in der Bahn 'linux'.
  Der Zustand externer Dienste (Updater-Endpoint, OmniRoute, Mirror)
  wird von keinem Gate geprueft — dafuer ist das Release-Verify da.
---------------------------------------

Review disposition and next owner

Review: ausstehend (Stufe B).

Root’s full round-one disposition at reviewed 16cb5f5e remains authoritative. Reported non-author families: Anthropic claude-opus-5-5[1m] observed in Root’s harness, conditional approval on C1; Moonshot Kimi CLI 2.1.1, self-reported kimi-code/k3, conditional approval on K1. Kimi’s actual model was not independently verified; the E1 basis is the dated 2026-10-17 note, not a fresh credit observation. This worker does not cure those limits or count itself as an independent reviewer.

ID Severity Root disposition / implementation evidence
R1900-C1 / K1 medium Accepted by Root. Name resolution and honest missing/pending/failed fallback implemented in c873c1c + text-format correction 68ff43a; RED eafb678; independent delta closure pending
R1900-K2 / C2 low Accepted by Root. Project missing-worker wording and eight-character fleet IDs implemented in 292c096; RED b6591e8; independent delta closure pending
R1900-K3 low Accepted by Root. Local matching-worker derivation in 292c096; same matching policy, no prop reassignment
R1900-C3 low Accepted by Root as comment only. One added line in useQuestions at 292c096 explains existing silent stale return and key-remounted Leitstand ownership; no runtime change
R1900-C4 low Preserved follow-up: omitted projectId treated as project active; not implemented
R1900-C5 low Preserved follow-up: duplicate no-project message; screenshot needed; not implemented
R1900-C6 info Preserved follow-up: fixture branch display; not implemented
R1900-K4 low Preserved follow-up: focus lost on scope remount; not implemented
R1900-K5 low Preserved follow-up: loading status/group label; ButtonGroup already renders role=group per round-one reviewer; not implemented

Root next commissions one non-author-family bounded delta review of 16cb5f5..292c096, then owns acceptance and Mergify. This is round two, not a worker acceptance claim. No third review, new review agent, QA, service, ready/review-ok/queue/merge or release action was performed. Same OPEN DRAFT PR 1900, same branch and execution owner; no new PR. Parent remains OPEN; not installed/effective, whole-Glass/UAT acceptance remains open. Old branch d7, prior evidence and backups remain untouched.

Cuarroc and others added 5 commits October 25, 2026 05:03
Cover public route scope controls and honest fleet attribution.

Plan-ID: KR-06b-2
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::reads real scopes and labels fleet projects and workers without borrowing active context
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::keeps fleet reachable without a project and never calls unread or offline lists empty
Co-Authored-By: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
Keep fleet questions reachable without an active project and reset scope views.

Plan-ID: KR-06b-2
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::reads real scopes and labels fleet projects and workers without borrowing active context
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::keeps fleet reachable without a project and never calls unread or offline lists empty
Co-Authored-By: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
Cover project and scope round trips while reads and answers are pending.
Preserve drafts and exact stored-answer confirmation across ordinary polls.

Plan-ID: KR-06b-2
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::isolates late reads and answers across project and scope round trips
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::keeps current drafts through polls and resets refused drafts on scope and project switches
Co-Authored-By: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
Use a distinct history question so the regression reaches the late answer.

Plan-ID: KR-06b-2
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::isolates late reads and answers across project and scope round trips
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::keeps current drafts through polls and resets refused drafts on scope and project switches
Co-Authored-By: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
Ignore stale answer results and fallback reads after project or scope changes.
Keep the existing Promise<void> and optional stored-row callback contract.

Plan-ID: KR-06b-2
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::isolates late reads and answers across project and scope round trips
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::keeps current drafts through polls and resets refused drafts on scope and project switches
Co-Authored-By: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
@Cuarroc

Cuarroc commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

Review round 1 — Root disposition, 2026-10-25 ~04:45Z, head 16cb5f5

Tier B (frontend TS, no seam), author OpenAI Codex gpt-6-astra/high. Reviewers from two non-author families:

  • Anthropic: Claude subagent in Root's harness, observed model claude-opus-5-5[1m] — APPROVE WITH CONDITIONS (C1).
  • Moonshot: Kimi CLI v2.1.1, model self-reported kimi-code/k3 (not independently verified) — APPROVE WITH CONDITIONS (K1).
  • E1 basis: OpenRouter credit <= 0 per memory note 2026-10-17, not freshly observed.
ID Sev Finding (file:line @16cb5f5e) Disposition
R1900-C1 = K1 medium Ask.tsx:60 fleet cards show raw projectId, not the project name; deleted project indistinguishable (brief: honest read-only project names) Accepted → NACHBESSERN: resolve names via existing read-only listProjects (pattern QuestionsView.tsx:405-431), deleted/unknown → honest fallback, never borrow active project
R1900-K2 / C2 low Ask.tsx:62 worker fallback prints full id and replaces needs.noAgent also in project scope Accepted: project scope keeps the previous needs.noAgent wording; fleet shows the id shortened to 8 chars like QuestionsView.tsx:366
R1900-K3 low Ask.tsx:34 reassigns prop worker Accepted (derive a local, same pass)
R1900-C3 low useQuestions.ts:122 stale answer resolves silently Accepted as one-line comment documenting why unreachable in Leitstand (key remount) — no behavior change
R1900-C4 low omitted projectId prop treated as "project active" Follow-up
R1900-C5 low "Kein Projekt gewählt" shown twice Follow-up (needs screenshot)
R1900-C6 info fixture can no longer show branch Follow-up
R1900-K4 low scope switch remount drops focus Follow-up (a11y)
R1900-K5 low loading note lacks role=status; group label Follow-up (ButtonGroup renders role=group per Claude reviewer)

Fix round forced by C1/K1: same branch, red-first, total diff <= 400 per AGENTS rule 1 (expected well under 300). Then one outside-family delta review of 16cb5f5e..newhead.

Cuarroc and others added 5 commits October 25, 2026 05:49
Cover registered names in both card paths and distinguish unread or failed
registry reads from a completed read with a missing registration.

Plan-ID: KR-06b-2
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::resolves registered fleet names in ordinary and decision cards and identifies missing registrations
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::distinguishes pending and failed project reads from missing registrations
Co-Authored-By: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
Read the existing project registry once per route lifetime and pass optional
name context to both card paths. Keep failed and pending reads distinct
from a completed registry read that cannot resolve the stored ID.

Plan-ID: KR-06b-2
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::resolves registered fleet names in ordinary and decision cards and identifies missing registrations
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::distinguishes pending and failed project reads from missing registrations
Co-Authored-By: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
Move the fallback format into the existing local text catalog to satisfy
the hardcoded-string gate without changing its policy or output.

Plan-ID: KR-06b-2
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::resolves registered fleet names in ordinary and decision cards and identifies missing registrations
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::distinguishes pending and failed project reads from missing registrations
Co-Authored-By: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
Cover missing and wrong-project workers through the public route, with
short stored IDs and explicit unknown identities in fleet scope.

Plan-ID: KR-06b-2
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::preserves project missing-worker wording and shortens only fleet fallback identities
Co-Authored-By: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
Restore missing-worker wording in project scope and shorten stored fleet
IDs to eight characters. Derive matching worker context locally and
document the existing silent stale-answer return without changing it.

Plan-ID: KR-06b-2
Test-First: src/screens/leitstand/needs/scope-lifetime.test.tsx::preserves project missing-worker wording and shortens only fleet fallback identities
Co-Authored-By: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
@Cuarroc

Cuarroc commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

Fix-round delta review — Root disposition, head 292c096

Delta 16cb5f5e..292c0965 (+80/-13, 7 files; PR total +275/-22 = 297 <= 300). Tier B fix-round delta, no tier-A files: one outside reviewer (AGENTS rule 5).
Reviewer: Claude subagent in Root's harness, observed model claude-opus-5-5[1m], family Anthropic (non-author) — APPROVE.

ID Status
R1900-C1/K1 Fixed (c873c1c after RED eafb678; 68ff43a): names via read-only listProjects; pending/failed read distinct from "nicht registriert"; ordinary + DecisionLane cards
R1900-K2/C2 Fixed (292c096 after RED b6591e8): project scope keeps needs.noAgent; fleet shows 8-char id
R1900-K3 Fixed: local matchingWorker, no prop reassignment
R1900-C3 Fixed: comment only, no behavior change
R1900-D1 low — LeitstandRoute.tsx:62-65 project names read once on mount; a project registered later by CLI shows "nicht registriert" until remount → Follow-up
R1900-D2 nit — omitted optional projectNames reads as "wird gelesen" → Follow-up, no current caller affected

Next: ready → CI → review-ok bound to this head → Mergify.

@Cuarroc
Cuarroc marked this pull request as ready for review October 25, 2026 05:25
@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-25T05:27:43.351610Z 292c096 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.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 292c09650c

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +77 to +78
<Button size="sm" aria-pressed={scope === "project"} onClick={() => setScope("project")}>{T.project}</Button>
<Button size="sm" aria-pressed={scope === "all"} onClick={() => setScope("all")}>{T.all}</Button>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Synchronize the canonical plan with this package

The commit report identifies this package as Plan-ID: KR-06b-2, but that row is absent from docs/PLAN.md, while the corresponding 06b entry in docs/plan/v2.0/plan.md still says geplant. Adding the working scope controls without updating that record leaves the canonical plan inconsistent with the delivered behavior. AGENTS.md explicitly requires the Plan-ID row check through its binding review reference, which requires this mismatch to be fixed in the same PR before review-ok; coordinate the separately assigned PLAN update before accepting this package.

AGENTS.md reference: AGENTS.md:L74-L76

Useful? React with 👍 / 👎.

@Cuarroc

Cuarroc commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

Root disposition — Codex connector finding on head 292c096 (05:27Z)

R1900-X1 (medium) — accepted. docs/development/AGENTS_REFERENCE.md:130 @ origin/main (binding via AGENTS.md:74-76, user order 2026-10-15): every review checks docs/PLAN.md at the head for the PR's own Plan-ID: row; a mismatch is medium and must be fixed in the same PR before review-ok. docs/PLAN.md @ 292c096 has no KR-06b-2 row.

Root's earlier routing note ("product PRs do not edit docs/PLAN.md, PLAN owner batches") contradicts that binding rule and is withdrawn. The same gap exists for already-merged #1894 (KR-04b), #1896 (KR-06b-1), #1898 (KR-06b-1b); that catch-up is a separate tier-C PFLEGEN package, not this PR.

Next: NACHBESSERN on this branch, docs-only commit adding the KR-06b-2 row to docs/PLAN.md (state after merge, follow-ups R1900-D1/D2/C4/C5/C6/K4/K5, mock-only limit). Review-forced fix, finding ID R1900-X1; size may exceed 300 up to 400. Tier C delta: gates + Root check of the docs-only delta, then review-ok on the new head. No review-ok until then.

Resolve R1900-X1 with the package delivery, mock-only evidence limits,
open follow-ups and parent goal in the existing Nutzbar-1 table.
Preserve every existing plan row and all reviewed code and tests.

Plan-ID: KR-06b-2
No-Test: docs-only plan row
Co-Authored-By: GPT-6 Astra <noreply@openai.com>
@Cuarroc

Cuarroc commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

Root acceptance — review-ok bound to head 4a59cf0f889f3c2c114cae77c0a675f757e6e001

  • Delta 292c0965..4a59cf0f: one commit, docs/PLAN.md +1 line only (KR-06b-2 row, post-merge state, mock-only limit, follow-ups D1/D2/C4/C5/C6/K4/K5, parent b5998181 open). Code/tests byte-identical to the reviewed head 292c096. Trailer No-Test: docs-only plan row; tier C delta, gates suffice.
  • R1900-X1: resolved by 4a59cf0.
  • Reviews (all non-author families vs OpenAI author): R1 Anthropic claude-opus-5-5[1m] + Kimi (self-reported kimi-code/k3) on 16cb5f5; fix-round delta Anthropic APPROVE on 292c096; rounds closed. No open high.
  • Checks on 4a59cf0: gates (linux) pass, gates (windows) pass, linux_1/linux_2 pass, red-first pass.
  • Size: 298 RAW (276+/22-) vs 6acaaf7, <=300.
  • Note (follow-up, not blocking): docs/plan/v2.0/plan.md §10.2 KLASSIK-RAUS status is still the 15.10. "geplant" wave text; to be refreshed in the catch-up package d87be838 (PLAN-KR-DELIVERY-CATCHUP).
  • Limit: browser/Tauri-mock evidence only; native behaviour not proven.

@Cuarroc Cuarroc added the review-ok Pipeline: review disposition complete, no open high finding label Oct 25, 2026
@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 a19bccb into main Oct 25, 2026
18 checks passed
@mergify
mergify Bot deleted the codex/kr-06b-2-scope-r2 branch October 25, 2026 06:16
@mergify

mergify Bot commented Oct 25, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

  • ✅ Entered queue — 2026-10-25 06:07 UTC · Rule: default · triggered by merge protections
  • ✅ Checks passed · on draft merge queue: checking #1900 on main (6acaaf7) #1901
  • ✅ Merged — 2026-10-25 06:16 UTC · at a19bccb77680b2f20dfb4f589148e23cefab8e84 · merge

This pull request spent 9 minutes 12 seconds in the queue, including 8 minutes 28 seconds 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

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