Files
makelore/.project-docs/30-worklog/tasks/20260907-design-chat-generation-handoff-client-7d3a9c41.md
T

4.7 KiB

Task: Handle AI Design chat generation handoff

Identity

  • Task ID: 20260907-design-chat-generation-handoff-client-7d3a9c41
  • Mode: Feature
  • Branch: codex/20260907-design-chat-generation-handoff-client-7d3a9c41-design-chat-generation-handoff
  • Worktree: D:\Datas\OthersProjects.codex-worktrees\makelore\20260907-design-chat-generation-handoff-client-7d3a9c41
  • Base commit: bce20d9e4d
  • Owner: codex-root
  • Status: Ready for Integration

Scope

  • Verify that the existing client event contract can consume a server-owned 开始生成 handoff without introducing a second Renderer command or public DTO.
  • Preserve the original optimistic user message, activity/reply settlement, stable operation identity, and the offered Quote created immediately after the committed chat event.
  • Add focused Store coverage for two consecutive Direction projections belonging to the same accepted chat command.

Intent And Constraints

  • Electron Main remains the only network authority. Source inspection showed that no new Renderer orchestration is needed: the server can emit the committed chat and subsequent Quote as two existing design.direction.updated events in one Run.
  • Never infer generation intent from assistant prose or duplicate phrase matching in the client. The server owns interpretation and the Quote transaction.
  • Keep Quote and generation confirmation separate: automatic handoff may create an immutable Quote, but only explicit user confirmation may create a Task or reserve Token Points.
  • Derive a stable follow-up operation identity from the committed chat Interaction, and do not replay an already accepted/unknown mutation under a new identity.

Project Context Loaded

  • Task context: feature task 20260907-design-chat-generation-handoff-client-7d3a9c41 owns this managed linked worktree at base bce20d9e….
  • Read: agent-entry and planning-gate docs, memory index, project positioning, integrated current state, decision index/system overview, ADR-007, architecture module/data-flow maps, domain/success criteria, evidence/reflection/commitment/stale indexes, and the recent Design activity and repeated-turn peer task records.
  • Project goal: a youth-friendly Canvas whose Current Specification, immutable Quote, and confirmed Task remain server-authoritative.
  • Current integrated focus: optimistic chat, operation-scoped activity and committed assistant streaming are already present; repeated identical user text is valid.
  • Decisions affecting this task: ADR-007 requires stable operation identity, Main-owned transport, immutable Quote display, and explicit Quote-ID confirmation.
  • Evidence and commitments: production logs show an input Run completed without any Quote/Task command; the real paid confirmation smoke remains separately pending.
  • Likely modules: shared/image-workspace.ts, the Works Square adapter, Renderer image-workspace Store, and their focused tests.
  • Unknowns/conflicts: source inspection must identify the narrowest post-commit event seam and ensure reconnect/replay cannot create duplicate Quote requests. The root worktree's unrelated untracked records are outside this isolated task. No active peer has a conflicting Design scope.
  • Gate result: Passed.

Outcome

  • Confirmed that Main maps every Gateway design.direction.updated event independently and the Store applies canonical form projections even after the original optimistic operation has settled.
  • Added a Store regression for the real sequence: committed chat projection, immediately followed by quote_request with the same client operation identity. The test proves the draft/pending chat settles once, the completed activity remains bound to its Turn, and the offered Quote remains visible.
  • No client product code, shared contract, routing, or UI change was necessary.

Verification

  • pnpm exec vitest run tests/unit/image-workspace-store.test.ts --maxWorkers=1 passed (33 tests).
  • pnpm exec eslint tests/unit/image-workspace-store.test.ts passed.
  • pnpm run typecheck passed.
  • git diff --check passed.

Follow-ups

  • Integrate and deploy with server task 20260907-design-chat-generation-intent-4f8c2a91, then perform the recorded real Quote/confirmation smoke.

Promotion Candidates

  • Target: .project-docs/20-architecture/data-flow.md and integrated current state. Proposal: record that one accepted Design chat Run may carry a committed chat Direction projection followed by an immutable Quote projection under the same client command identity; the Store converges both without issuing a second mutation. Evidence is the 33-test Store suite and the cross-repository server task. This is compatible with ADR-007 and needs no separate product-direction decision.