docs: complete abort main integration

This commit is contained in:
2026-09-01 15:39:36 +08:00
parent 8590071790
commit 52e2a97a12
4 changed files with 95 additions and 128 deletions

View File

@@ -6,8 +6,10 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
- Conversation abort reconciliation source - Conversation abort reconciliation source
`d2ef37bc4d7d3609cec0a55c4ae8ffb2734696d5` from task `d2ef37bc4d7d3609cec0a55c4ae8ffb2734696d5` from task
`20260901-conversation-abort-stall-6f4c2a91` is prepared for local `main` `20260901-conversation-abort-stall-6f4c2a91` is merged into local `main` as
promotion by integration task `20260901-promote-conversation-abort-7b4e2c91`. `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 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 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 installed 1.2.1 case where Pi had already recorded bash results and a final

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.