Skip to content

fix: preserve question history and legacy attribution (KR-06b-1) - #1896

Merged
mergify[bot] merged 4 commits into
mainfrom
codex/kr-06b-1-history
Oct 25, 2026
Merged

mergify[bot] merged 4 commits into
mainfrom
codex/kr-06b-1-history

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 25, 2026

Copy link
Copy Markdown
Owner

Der Fragenverlauf zeigt gespeicherte Einträge und kennzeichnet fehlende Herkunft korrekt.
Dieser Entwurf ersetzt #1893 und enthält den geprüften Verlauf mit der C1-Korrektur.
Die zusätzliche Bestätigung einer gerade gespeicherten Antwort folgt in KR-06b-1b.

Report

Plan-ID: KR-06b-1
Child ticket: 50b01db1-881f-4919-9901-0a4faa8ac5cb
Parent: b5998181-4fc9-4637-9783-1903d16a4a46 (OPEN)

Supersedes #1893. This replacement branch points directly to the existing reviewed C1 commit 72f0652897e200e9cab6b6b288c1e6ad194d6454; no new source commit, cherry-pick, revert, rebase or history rewrite was made. The original codex/kr-06b-questions branch retains 22a13980 and its C2 history. PR base is main; original merge-base is 60aa6ac17afb89cc5f88e220db1f9bf7dbb7d7fb.

Change and bounded delivery

Replace the local 20-line success-text stream with fetched QuestionsState.history, preserving the existing frontend hook's 50-record cap, fresh fetch/remount, question, stored answer, closed status, actual attribution/time and stable stored project/worker context. There is no second store/poller or backend change.

C1 distinguishes legacy answered records with answeredBy=null: Herkunft nicht gespeichert. Expired/refused null-attribution records retain niemand hat entschieden; human/unverified labels remain. The compiling legacy regression preceded the correction (75ab90b6 then 72f06528). Existing input-unlock/second-answer, Enter/Escape, options, errors, lanes and honest loading/empty cases are retained. Tests exercise real NeedsYou/useQuestions/IPC normalization with only Tauri boundaries mocked.

Actual original-base diff: 138 added + 45 deleted = 183 RAW lines, four files inside needs/. C1 delta from initial reviewed ed835cdc is 14 added + 2 deleted = 16 RAW lines, three files. No native seam, hook, gate, dependency, style, route, IPC, PLAN or scope change. Fleet/scope/lifetime remain KR-06b-2; parent acceptance remains open.

Root split and review disposition

Root's round-two decision accepted C1 and split C2 after the last review round. Additive reverts cannot satisfy the unchanged red-first gate: they retain C2 Test-First trailers while removing the named tests. Root explicitly authorized this replacement from the already reviewed C1 commit, retaining the old branch/history. No gate exception or bypass was used.

Finding Disposition
R1893-C1 Accepted, corrected by 72f06528 after RED 75ab90b6; round-two reviewer explicitly confirmed the C1 correction
R1893-C2 / K6; R1893-D1 / D2 Moved to serial KR-06b-1b, ticket 2fc5073b-4e42-4f41-9c0f-9efe3b325493; excluded from this candidate. Announce only the exact just-answered question ID and stored answer, nothing on initial load/poll/project/scope change
R1893-D3 Follow-up, related to the exact-answer live-confirmation package; not claimed fixed here
K1 / K2 / K3 Rejected by Root: ipc.ts:2038-2040 normalizes createdAt, answeredAt and answeredBy before this component; no new malformed-input policy
K4 Rejected by Root: existing useQuestions owns the 50-row cap and order
C3 Follow-up: visual separation of closed/open entries requires screenshot evidence at Glass acceptance
C4 / K5 Follow-up: shared i18n catalog; current local dictionary retained

Review binding remains Root's original two-family disposition on ed835cdc plus the round-two non-author delta reviewer, observed by Root as claude-opus-5-5[1m] (Anthropic), explicitly confirming C1. The replacement contains only ed835cdc..72f06528, a subset of that reviewed delta. No additional review/model/E1 measurement is claimed. Root checks this binding and alone sets ready/review-ok/Mergify; this handover is DRAFT, not self-acceptance.

Evidence

Original author: OpenAI gpt-6-astra/high, native job162 turn_context observed before source edits. This coordinator replacement introduces no new source commit or implementation author.

Command / evidence Exit / result
Original public-view regressions before initial implementation Compiling RED, then GREEN at ed835cdc; initial exact test commit 1a176163
C1 named legacy regression at reviewed implementation Compiling RED (2 failed, 18 passed), then GREEN (20 passed) at 72f06528; author job162 receipt
C1 intermediate normal push hook in job162 Full prepush passed for 72f06528; preserved log ends with ed835cdc..72f06528 normal push receipt
Fresh bash scripts/ci/red-first.sh in replacement worktree 0, 2026-10-25T01:18:29Z–01:19:06Z, exact 72f06528; only initial/C1 evidence remains, all candidate obligations green
Normal git push -u origin codex/kr-06b-1-history and mandatory prepush hook 0, completed 2026-10-25T01:31:54Z; own complete prepush lane green (195 seconds)
git ls-remote origin refs/heads/codex/kr-06b-1-history 0, exact 72f0652897e200e9cab6b6b288c1e6ad194d6454
Exact branch/tree and clean-worktree checks 0, tree equals 72f06528, clean; C2 commits are not ancestors of this branch; old branch remains at 22a13980

Fresh resource guards and each heavy phase were chained in the same shell command (guard && phase), preserving load/RAM/build-slot limits and hook exit codes. Existing dependencies and a warm assigned build target were reused; no dependency install/change or extra agent/reviewer/QA/service was started. Architecture/gates remain unchanged.

One initial normal-push attempt was interrupted by the SSH observation limit and SIGHUP during the already-compiled Rust suite. It did not publish the branch and is not passing evidence. After checking process termination, unchanged source and absent remote ref, one fresh guarded retry used the warmed build artifacts and completed the full normal hook successfully. No test retry/timeout/skip setting, gate or hook was changed; only the completed final run is counted above.

NICHT ABGEDECKT

  • Keine Live-Bestätigung bis KR-06b-1b. The visible stored Beantwortet: … history row remains; the rejected C2 implementation and tests are absent from this candidate.
  • Scope selection, fleet/project names, open-question attribution and project lifetime isolation remain KR-06b-2. KR-06b-1b runs first; parent KR-06b remains open until the preserved aggregate acceptance is met.
  • Functional evidence is browser MOCK at the Tauri boundary, not native product/UAT/provider execution. No screenshot, assistive-technology runtime or full Glass acceptance is claimed.
  • Linux does not cover #[cfg(windows)] tests or Windows clippy branches. Root owns Windows evidence through the Mergify queue; ordinary PR checks are not that verdict.
  • Prepush is not the full Linux workflow or application browser-smoke lane. Existing Rust skips and external updater/router/mirror limits remain; no new skip/timeout/retry or weakened assertion was introduced.
  • Source-graph tooling and independent worker usage connector were unavailable to the original author; bounded source/actual session evidence is recorded. The replacement adds no new review provenance, billing-condition or native runtime measurement.
  • Product PLAN edits are excluded by Root's explicit bookkeeping method. The PLAN owner batches the canonical rows/status separately after deliveries; no product acceptance is inferred from a ticket/plan status.

Handover

One C1-only DRAFT replaces #1893. Root verifies the reviewed subset and owns final acceptance, ready/review-ok and Mergify. KR-06b-1b and KR-06b-2 remain blocked on the replacement's actual merge; no follow-on implementation is started by this handover. Installed/effective state is unproven.

Cuarroc and others added 4 commits October 25, 2026 01:50
Replace obsolete local-stream assertions while preserving input unlock and second-answer coverage. Exercise fetched history through the real hook and Tauri boundary.

Plan-ID: KR-06b-1
Test-First: src/screens/leitstand/needs/NeedsYou.test.tsx::shows the stored answer rather than the submitted text
Test-First: src/screens/leitstand/needs/NeedsYou.test.tsx::unlocks for a second answer without fabricating unreadable history
Test-First: src/screens/leitstand/needs/NeedsYou.test.tsx::loads the latest 50 persisted questions on fetch and remount
Test-First: src/screens/leitstand/needs/NeedsYou.test.tsx::preserves closed status attribution timestamps and stored context
Co-authored-by: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
Use QuestionsState.history without a second cap or success-text store. Preserve closed status, recorded answerer and time, and stable stored project and worker IDs with honest missing-data fallbacks.

Plan-ID: KR-06b-1
Test-First: src/screens/leitstand/needs/NeedsYou.test.tsx::shows the stored answer rather than the submitted text
Test-First: src/screens/leitstand/needs/NeedsYou.test.tsx::unlocks for a second answer without fabricating unreadable history
Test-First: src/screens/leitstand/needs/NeedsYou.test.tsx::loads the latest 50 persisted questions on fetch and remount
Test-First: src/screens/leitstand/needs/NeedsYou.test.tsx::preserves closed status attribution timestamps and stored context
Co-authored-by: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
Cover answered records with null attribution through NeedsYou and real useQuestions. Correct the mixed-history expectation while retaining expired and refused assertions.

Plan-ID: KR-06b-1
Test-First: src/screens/leitstand/needs/NeedsYou.test.tsx::labels legacy answered questions without attribution as unknown origin
Co-authored-by: GPT-6 Astra <gpt-6-astra@users.noreply.github.com>
Use the local history copy for answered records whose attribution was not stored. Keep nobody attribution for expired and refused records.

Plan-ID: KR-06b-1
Test-First: src/screens/leitstand/needs/NeedsYou.test.tsx::labels legacy answered questions without attribution as unknown origin
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

Root acceptance check (2026-10-25 ~01:53Z) — head 72f0652

  • Files/size: 4 files under src/screens/leitstand/needs/, +138/-45 = 183 raw lines (<= 300); no seam, no PLAN edit. Matches KR-06b-1 brief.
  • Red-first trailers: 1a17616/ed835cdc (4 tests) + 75ab90b/72f06528 (C1 test); fresh red-first.sh exit 0 reported by Stabschef.
  • Review binding: round 1 on ed835cd = Anthropic (Claude subagent in Root's harness) + Moonshot (Kimi CLI v2.1.1); round-2 delta reviewer Anthropic claude-opus-5-5[1m] confirmed C1. ed835cdc..72f06528 (+14/-2, 3 files) is a subset of the reviewed delta ed835cdc..22a13980 (verified with git diff --stat).
  • Disclosed evidence limits (same as fix: preserve project chat drafts across routes (KR-04b) #1894): round-1 Kimi model ID not logged (family inferred from vendor CLI); E1 condition "OpenRouter credit <= 0" rests on a 2026-10-17 note, not a fresh observation.
  • Report, disposition table and NICHT ABGEDECKT (mock only, no live confirmation until KR-06b-1b) present.
    Next: ready → CI → review-ok bound to this head → Mergify.

@Cuarroc
Cuarroc marked this pull request as ready for review October 25, 2026 01:52
@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-25T01:52:53.069267Z 72f0652 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 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 19e8255 into main Oct 25, 2026
36 checks passed
@mergify

mergify Bot commented Oct 25, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

  • ✅ Entered queue — 2026-10-25 02:01 UTC · Rule: default · triggered by merge protections
  • ✅ Checks passed · on draft merge queue: checking #1896 on main (ae9abb5) #1897
  • ✅ Merged — 2026-10-25 02:12 UTC · at 19e8255342367ca3aa6926e8796816803c141335 · merge

This pull request spent 10 minutes 53 seconds in the queue, including 10 minutes 13 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