From 52e2a97a12ffaf838c3218795ff33e7fb91940cf Mon Sep 17 00:00:00 2001 From: brother7 <7brother7@gmail.com> Date: Tue, 1 Sep 2026 15:39:36 +0800 Subject: [PATCH] docs: complete abort main integration --- .project-docs/30-worklog/current-state.md | 6 +- ...60901-conversation-abort-stall-6f4c2a91.md | 54 ----------- .../20260901-merge-abort-main-a83d4c71.md | 91 +++++++++++++++++++ ...901-promote-conversation-abort-7b4e2c91.md | 72 --------------- 4 files changed, 95 insertions(+), 128 deletions(-) delete mode 100644 .project-docs/30-worklog/tasks/20260901-conversation-abort-stall-6f4c2a91.md create mode 100644 .project-docs/30-worklog/tasks/20260901-merge-abort-main-a83d4c71.md delete mode 100644 .project-docs/30-worklog/tasks/20260901-promote-conversation-abort-7b4e2c91.md diff --git a/.project-docs/30-worklog/current-state.md b/.project-docs/30-worklog/current-state.md index f89f434..d34873c 100644 --- a/.project-docs/30-worklog/current-state.md +++ b/.project-docs/30-worklog/current-state.md @@ -6,8 +6,10 @@ This file is the integrated default-branch snapshot. Feature tasks record progre - Conversation abort reconciliation source `d2ef37bc4d7d3609cec0a55c4ae8ffb2734696d5` from task - `20260901-conversation-abort-stall-6f4c2a91` is prepared for local `main` - promotion by integration task `20260901-promote-conversation-abort-7b4e2c91`. + `20260901-conversation-abort-stall-6f4c2a91` is merged into local `main` as + `85900717906713d8343c2087eade904aead8f111` through verified candidate + `599d1847f73a590690cbac2ee1c5bf36e8cd83f1` by task + `20260901-merge-abort-main-a83d4c71`. Both visible abort actions now call the Main-owned abort route and then silently reload only the target Conversation's authoritative Snapshot. This closes the installed 1.2.1 case where Pi had already recorded bash results and a final diff --git a/.project-docs/30-worklog/tasks/20260901-conversation-abort-stall-6f4c2a91.md b/.project-docs/30-worklog/tasks/20260901-conversation-abort-stall-6f4c2a91.md deleted file mode 100644 index af1b238..0000000 --- a/.project-docs/30-worklog/tasks/20260901-conversation-abort-stall-6f4c2a91.md +++ /dev/null @@ -1,54 +0,0 @@ -# Task: Fix running conversation abort stall - -## Identity - -- Task ID: 20260901-conversation-abort-stall-6f4c2a91 -- Mode: Feature -- Branch: codex/20260901-conversation-abort-stall-6f4c2a91-conversation-abort-stall -- Worktree: D:\Datas\OthersProjects\makelore-conversation-abort-stall-6f4c2a91 -- Base commit: 143aaec3d6770dd263bf1e418e89bf722989caef -- Owner: codex-root -- Status: Completed - -## Scope - -- Diagnose the installed 1.2.1 state where a Conversation continued to render as running and neither visible abort entry point unlocked the UI. -- Correlate the screenshot with privacy-safe Main lifecycle and Pi Session metadata, then reproduce the stale-Renderer state at the public Chat seam. -- Make both the Header and Composer abort actions reconcile the authoritative Conversation Snapshot after the abort request completes. -- Add focused Renderer regression coverage and extend the existing Electron E2E fixture for a missed terminal SSE patch. - -## Intent And Constraints - -- Preserve ADR-006: Pi `0.84.2` remains the sole production runtime and Electron Main remains the only Pi/Host API authority. -- Do not replay accepted or uncertain work, change the abort RPC/Host API contract, add polling, or introduce a fallback/compatibility path. -- Treat the visible running state as evidence to investigate, not proof that the bash subprocess or Pi turn is still active. -- Keep the change at the existing Renderer Host API boundary and use the existing target-only Snapshot recovery semantics. -- Work only in the isolated feature worktree; do not modify the occupied `main` worktree or the completed 1.2.1 packaging task. - -## Outcome - -- Confirmed the screenshot was from installed Makelore 1.2.1. The affected Pi JSONL Session recorded three bash tool results and a final assistant `stop` by 14:55:35, while the 14:59 screenshot still rendered the earlier bash call as executing. Main later stopped the already-idle logical thread through background sleep, so the supported incident was stale Renderer state rather than an indefinitely running curl process. -- Reproduced the defect with a focused Chat test: the UI held a running Snapshot, the abort request succeeded against an already-terminal authority, but `getCodingConversationSnapshot` remained at one call and the UI stayed on `中止生成`. -- Added one shared `abortConversation` path in `CodingChatPanel`: after the existing POST abort completes, it silently reloads that Conversation's authoritative Snapshot. Both the Header `中止` button and Composer `中止生成` button now use this path. -- Kept error ownership in the existing controls: Header action failures remain local to Header, while Composer failures remain scoped to the originating draft/Conversation. -- Updated the Electron E2E host fixture so a deliberately missed terminal SSE patch becomes an authoritative aborted Snapshot only after the user clicks abort; the test now proves both abort controls disappear and runtime settings unlock after reconciliation. - -## Verification - -- Red regression before the fix: `tests/unit/coding-chat-panel.test.tsx` failed because the Snapshot API was called once instead of twice after abort. -- `pnpm exec vitest run tests/unit/coding-chat-panel.test.tsx tests/unit/coding-feature-ui.test.tsx tests/unit/coding-conversations-facade.test.ts tests/unit/pi-conversation-runtime.test.ts tests/unit/pi-worker-pool-process-integration.test.ts` passed: 5 files, 35 tests. -- `pnpm run typecheck` passed. -- Scoped ESLint over the two product files and three changed test files passed with no findings. -- `pnpm run build:vite` passed for Renderer, Electron Main, Preload, and release utility bundles; only existing bundle-size/dynamic-import warnings were reported. -- `pnpm exec playwright test tests/e2e/pi-coding-first-chat.spec.ts --grep "PI feature UI"` passed: 1/1 Electron E2E. -- `pnpm test` passed: 215 files / 1780 tests, 2 skipped, plus the isolated pressure test 1/1. -- `pnpm run lint:check` completed with 0 errors and 5 existing warnings in `src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`; no warning is in a changed file. -- `git diff --check` passed. - -## Follow-ups - -- A new Windows installer must be built and installed before claiming the user's installed app contains this fix. Do not overwrite or relabel the already-built 1.2.1 artifact with changed source under the same version. - -## Promotion Candidates - -- None. This fix enforces the existing abort/terminal convergence and Snapshot recovery contracts without changing architecture or product direction. diff --git a/.project-docs/30-worklog/tasks/20260901-merge-abort-main-a83d4c71.md b/.project-docs/30-worklog/tasks/20260901-merge-abort-main-a83d4c71.md new file mode 100644 index 0000000..c587aed --- /dev/null +++ b/.project-docs/30-worklog/tasks/20260901-merge-abort-main-a83d4c71.md @@ -0,0 +1,91 @@ +# Task: Merge conversation abort reconciliation into main + +## Identity + +- Task ID: 20260901-merge-abort-main-a83d4c71 +- Mode: Integration +- Branch: main +- Worktree: D:\Datas\OthersProjects\makelore +- Base commit: ebc46c679da3907fd337e51b54c2da9f72c02755 +- Owner: codex-root +- Status: Completed + +## Scope + +- Merge exact verified candidate `599d184` into local `main` after the + human-authorized closure of packaging task `20260901-package-121-7a3c`. +- Preserve the candidate's product implementation and canonical current-state + reconciliation while retaining the packaging task's committed record. +- Verify the merged product tree, exact ancestry, focused behavior, documentation + boundaries, and clean task state. Do not package, install, publish, deploy, or push. + +## Intent And Constraints + +- Preserve ADR-006: Pi `0.84.2` remains the only production Coding runtime; + Electron Main remains the Host API authority; accepted or uncertain work is never + replayed; recovery remains target-only Snapshot/Patch convergence. +- The existing 1.2.1 installer was built from pre-fix source and must not be + overwritten or represented as containing this change. +- The user explicitly authorized takeover of the known packaging task. That task was + closed in commit `ebc46c6` and released cleanly before this Integration Gate began. +- Concurrent and Planning Gates passed on exact base `ebc46c6`: the active record, + candidate/source outcomes, accepted decision, canonical memory, and all 210 peer + records were read. No semantic conflict or competing integration owner exists. + +## Plan + +1. Verify the candidate ancestry and conflict-free merge tree against current `main`. +2. Merge candidate `599d184` with an explicit integration commit, preserving both + the packaging closure and verified abort-reconciliation history. +3. Run the focused abort UI regression plus typecheck and production build, then + verify exact candidate product-tree parity and repository documentation gates. +4. Record the actual merge and verification outcome, commit the integration ledger, + complete the task, and release `main` from a clean state. + +## Outcome + +- Verified a conflict-free merge tree + `06a1e65143c10c67c4eda1b9ee277e13210bf01f` between current `main` and + candidate `599d184`; their common base was `143aaec`, with one `main`-only and + two candidate-only commits. +- Merged the exact candidate into local `main` as + `85900717906713d8343c2087eade904aead8f111`, preserving both packaging closure + `ebc46c6` and the feature/integration history `d2ef37b` / `599d184`. +- Omitted the two source-owned task-record copies from the final `main` file tree + after the task-aware drift gate correctly rejected them. Their unchanged records + remain reachable in source/candidate commits and merge history; product code, + tests, and canonical current state remain integrated. +- Canonical current state now records the actual local-main merge rather than a + prepared promotion. No ADR, architecture, domain, README, dependency, package, + installed data, deployment, publication, or remote branch was changed. + +## Verification + +- Post-merge product tree exactly matched verified candidate `599d184`; no non-doc + path differs, and the candidate is an ancestor of `main`. +- Focused post-merge regression passed: 5 files / 35 tests. +- `pnpm run typecheck` passed. +- `pnpm run lint:check` passed with 0 errors and the same 5 existing warnings in + `src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`. +- `pnpm run build:vite` passed for Renderer, Electron Main, Preload, and release + utility bundles with existing build warnings only. +- Post-merge Electron E2E passed: targeted `PI feature UI` scenario 1/1, including + the missed-terminal-SSE abort reconciliation and both controls unlocking. +- Source full-suite evidence remains applicable because the merged product tree is + byte-identical to the candidate: 215 files / 1,780 tests with 2 skips, plus the + isolated pressure test 1/1. +- Task-aware documentation drift, project-document structure, merge ancestry, + product-tree parity, whitespace, and clean-status checks are rerun before release. + +## Follow-ups + +- Increment the application version, build and verify a new Windows installer, + install it, and repeat the reported interaction before claiming installed-client + acceptance. The existing 1.2.1 installer remains valid historical evidence but + does not contain this fix. + +## Promotion Candidates + +- Resolved: `.project-docs/30-worklog/current-state.md` records the exact source, + verified candidate, local-main merge, unchanged contracts, and pending release + gate. No further canonical promotion is proposed. diff --git a/.project-docs/30-worklog/tasks/20260901-promote-conversation-abort-7b4e2c91.md b/.project-docs/30-worklog/tasks/20260901-promote-conversation-abort-7b4e2c91.md deleted file mode 100644 index 152f25b..0000000 --- a/.project-docs/30-worklog/tasks/20260901-promote-conversation-abort-7b4e2c91.md +++ /dev/null @@ -1,72 +0,0 @@ -# Task: Promote conversation abort reconciliation - -## Identity - -- Task ID: 20260901-promote-conversation-abort-7b4e2c91 -- Mode: Integration -- Branch: codex/20260901-promote-conversation-abort-7b4e2c91-promote-conversation-abort -- Worktree: D:\Datas\OthersProjects\makelore-promote-conversation-abort-7b4e2c91 -- Base commit: d2ef37bc4d7d3609cec0a55c4ae8ffb2734696d5 -- Owner: codex-root -- Status: Ready for Integration - -## Scope - -- Reconcile verified source commit `d2ef37b` from feature task - `20260901-conversation-abort-stall-6f4c2a91` into canonical current state from a - correctly based, exclusively owned Integration Gate. -- Preserve the verified product tree exactly and prepare a clean candidate for local - `main` promotion. -- Keep the occupied `main` worktree and its completed 1.2.1 packaging-task record - read-only until the human explicitly authorizes ownership transfer. - -## Intent And Constraints - -- Preserve ADR-006: Pi `0.84.2` remains the sole production runtime and Electron Main - remains the only Pi/Host API authority. -- Record an implementation correction to existing abort/Snapshot convergence, not a - new public contract, replay policy, recovery mechanism, or background-lifecycle rule. -- Do not overwrite or relabel the already-built 1.2.1 installer. Its bytes predate this - source change, so installed-client acceptance requires a newly versioned package. -- Concurrent and Planning Gates passed: the task identity, integration lock, exact - source base, 211 peer records, current state, ADR-006, architecture, domain, evidence, - reflection, commitments, and stale-item registry were checked. No semantic conflict - was found; direct `main` promotion is ownership-blocked only. - -## Outcome - -- Established the Integration Gate directly from verified source `d2ef37b`, so the - source task record and product changes are part of the recorded base rather than - foreign drift. -- Added the exact source commit, confirmed installed-incident shape, shared abort then - target-Snapshot behavior, unchanged contracts, verification, and remaining package - gate to canonical `current-state.md`. -- Left README, accepted ADRs, architecture, domain rules, evidence indexes, source task - records, product code, tests, dependencies, packages, installed data, and `main` - untouched. The resulting branch is the clean promotion candidate. - -## Verification - -- Source verification carried forward unchanged: 5 focused files / 35 tests, 215 - files / 1,780 full tests with 2 skips, isolated pressure 1/1, typecheck, scoped and - full lint, Renderer/Main/Preload/utility production build, Electron E2E 1/1, and - `git diff --check` all passed. -- The source feature worktree remained clean at `d2ef37b`; this Integration Gate made - no product-tree change relative to that verified base. -- Task-aware documentation drift, project-document structure, exact product-tree, - ancestry, and clean-status checks are run before task-context completion. - -## Follow-ups - -- Local `main` remains owned by completed task `20260901-package-121-7a3c` and contains - that task's untracked record. Promotion requires explicit human authorization to - adopt, commit, and release that known task before advancing `main`. -- After promotion, increment the application version, build and verify a new Windows - installer, reinstall it, and repeat the reported abort interaction before claiming - installed-client acceptance. - -## Promotion Candidates - -- Resolved: canonical `current-state.md` now records the exact source, behavior, - evidence, unchanged contracts, and package gate. No ADR, architecture, domain, or - product-direction promotion is proposed.