merge: 集成 AI 设计生成任务修复

This commit is contained in:
2026-08-14 15:32:55 +08:00
14 changed files with 1023 additions and 218 deletions

View File

@@ -12,6 +12,7 @@
## Scope
- On 2026-08-14, resume the existing Integration owner to merge reviewed AI Canvas source commit `22378efcee07e7fb80b651e65e3202f1a1dfea1d` into local `main` and promote its accepted project-memory candidates.
- Resume the existing integration owner to fast-forward the completed Robot / AI hardware source commit into local `main` after verifying the current remote `main` tip.
- Fetch the authoritative remote `main`, inspect all commits not present in the
local branch, and merge them into the reviewed local `main` without rewriting
@@ -35,6 +36,7 @@
semantic reconciliation.
- Push only after the merge result is clean, verified, and independently
reviewed. Never use `--force`.
- The 2026-08-14 user request authorizes the local `main` merge only. It does not expand this resumption into a remote push; the existing authentication blocker remains a separate follow-up.
## Project Context Loaded
@@ -82,16 +84,22 @@ Relevant understanding:
Gate result:
- Passed.
### 2026-08-14 AI Canvas Integration Resume
- Reused the same Integration owner because it still exclusively owns `main` and the repository integration lock; `task_context.py touch` refreshed the existing reservation.
- Verified the main worktree was clean at `88f9ee8708beeb1ab45ca741807f6cca0f075ac9` before merging.
- `git fetch origin main --prune` confirmed `origin/main` is also `88f9ee8708beeb1ab45ca741807f6cca0f075ac9`.
- Source `22378efcee07e7fb80b651e65e3202f1a1dfea1d` is exactly one commit ahead of `main`, with `88f9ee8` as merge base; no remote-only or unrelated main commit exists.
- Read the source task, ADR-001, canonical AI Canvas architecture/domain memory, and all registry-owned peer task Scope / Intent / Promotion Candidate sections. The source preserves Workspace-owned tasks and Conversation-owned state; no semantic conflict requires human resolution.
- Gate result: Passed for the local AI Canvas merge. Remote push remains outside this resumption.
## Plan
1. Commit this integration ownership record, fetch `origin/main`, and inspect
remote-only commits, paths, and topology.
2. Merge `origin/main` normally with local `main` as first parent; resolve any
conflict semantically and inspect the combined tree.
3. Run focused/full checks required by the fetched changes plus project-document
gates, then obtain a final independent Sol PASS/FAIL review.
4. Complete documentation, push `main` without force, verify local/remote tip
equality, and release the clean integration task.
1. Fetch `origin/main` and verify local `main`, the remote tip, and reviewed AI Canvas source commit topology.
2. Merge `22378ef` normally into local `main` without rebase/reset, and retain the source commit as a dedicated second parent.
3. Promote the bidirectional Gateway and Quote-reconciliation facts into canonical project memory.
4. Re-run focused/full checks, production build, project-document gates, and independent Sol review.
5. Commit the verified local merge; do not push unless the user separately requests it and authentication is available.
## Outcome
@@ -149,6 +157,13 @@ Gate result:
- Completion is blocked only on the user authenticating this machine for
`git.nianxx.cn`. Keep this integration task owned and do not release it until
a normal push succeeds and `origin/main` is verified equal to local `HEAD`.
- On 2026-08-14, the user requested a local-main merge of reviewed AI Canvas source `22378ef`. A fresh fetch verified local and remote `main` were both `88f9ee8`, and the source was exactly one descendant commit with no unrelated overlap.
- Started a normal `--no-ff --no-commit` merge of `22378ef`; Git reported no textual conflict. The source task record remains intact on source commit `22378ef` and its feature branch, and is excluded from the `main` result to preserve task-document ownership boundaries.
- Promoted the accepted source facts into canonical current-state, architecture, data-flow, business-rule, evidence, and commitment records: connected Conversation commands/events are bidirectional over WebSocket; REST fallback is transport-only and idempotent; Quote task recovery remains Workspace-owned while Conversation writes retain generation guards.
- Merge validation exposed a pre-existing AI Hardware test race: the edit button is rendered disabled while configuration loads, but four tests clicked it after waiting only for existence. Under full-suite load the browser correctly ignored the disabled click. The tests now wait for the button to become enabled and for the dialog heading; production Robot behavior is unchanged.
- The first independent AI Canvas merge review returned `FAIL` on two integration gaps and one safety subfinding: stale confirmation task-refresh errors could overwrite a newer Conversation error, top-level structured WebSocket command errors lacked focused coverage, and unknown Gateway messages could expose upstream details. Confirmation reconciliation now uses an internal task refresh without UI-error side effects; explicit user refreshes retain their error behavior. Matching WebSocket errors are tested as non-retryable, and unknown codes project a fixed Chinese fallback instead of the server message.
- The second independent Sol review returned `PASS` with no blocking findings after those corrections. The verified no-ff merge is ready to commit with `88f9ee8` as first parent and `22378ef` as second parent.
- This resumption intentionally does not push. The previous remote authentication follow-up remains unchanged and does not block completion of the user's requested local merge.
## Verification
@@ -172,6 +187,19 @@ Gate result:
- Merge topology — verified first parent `1c85bc0`, second parent `f4113a8`.
- Push — attempted normally, rejected before ref update because remote
authentication is unavailable on this machine.
- 2026-08-14 AI Canvas focused selection — 3 files / 74 tests passed on the merged `main` tree.
- AI Hardware readiness regression — full `ai-hardware-page.test.tsx` passed 24/24 after replacing existence-only clicks with enabled/dialog readiness waits.
- `pnpm test` — the original full-suite loop failed twice at the same disabled-button race before the test hardening; the post-fix run passed 156 files / 1687 tests.
- `pnpm run typecheck` — passed after the integration test hardening.
- `pnpm run lint:check` — passed with 0 errors and 6 unchanged warnings outside the merge paths.
- `pnpm run build:vite` — Renderer, Electron Main, and Preload production builds passed; existing chunk-size and mixed-import warnings remain.
- Post-review focused checks — Works Square adapter 27/27 and Image Workspace Store coverage passed, including top-level WebSocket errors, unknown-message redaction, A→B task-refresh failure isolation, and explicit-refresh error reporting.
- Final post-review `pnpm test` — 156 files / 1691 tests passed.
- Final post-review `pnpm run typecheck` — passed.
- Final post-review `pnpm run lint:check` — passed with 0 errors and the same 6 warnings outside the merge paths.
- Final post-review `pnpm run build:vite` — Renderer, Electron Main, and Preload passed; only the existing mixed-import and chunk-size warnings remain.
- Second independent final review — `PASS`; it re-ran 4 files / 102 tests plus typecheck, found no unmerged entries or unstaged changes, and confirmed the previous state-isolation, structured-error coverage, and redaction findings are closed.
- Final project-document ownership drift, structure checks, and staged/unstaged whitespace checks — passed before the merge commit.
## Follow-ups