|
| 1 | +# Conversation fidelity acceptance, 2026-10-18 (preparation) |
| 2 | + |
| 3 | +The acceptance receipt for tracker [#273](https://github.com/TypeSafeAI/modex/issues/273) and its |
| 4 | +gate [#281](https://github.com/TypeSafeAI/modex/issues/281) (CF-8). **The gate is not passed.** This |
| 5 | +receipt records what is verified, how, and every gate still open. A green mock or fixture test is not |
| 6 | +recorded as live-provider or human acceptance. |
| 7 | + |
| 8 | +## Candidate |
| 9 | + |
| 10 | +No integrated candidate is pinned yet: CF-2 (#275, PR #286) and CF-3 (#276) have not landed, and |
| 11 | +several children have parts still open. Each row names the build it was checked on. |
| 12 | + |
| 13 | +## Children |
| 14 | + |
| 15 | +| Child | Landed | State | |
| 16 | +| --- | --- | --- | |
| 17 | +| CF-1 #274: identity, phases, outcomes | #282 → `7780093` | Done; closed | |
| 18 | +| CF-2 #275: Claude Stop and cleanup | PR #286, green, waiting to update over CF-4 | Owned by another session | |
| 19 | +| CF-3 #276: human requests | — | Not started by its owner | |
| 20 | +| CF-4 #277: typed turns, Markdown | #284 → `8e26534` (typed turns); Markdown slice is PR #283 | Partial | |
| 21 | +| CF-5 #278: evidence | #287 → `d3711c6` (first part) | Partial | |
| 22 | +| CF-6 #279: journal and clients | #285 → `fb76aac` (CF-1 half) | Partial; request half waits for CF-3 | |
| 23 | +| CF-7 #280: plans and Notes | PR #289 (first part) | Partial; question cards wait for CF-3 | |
| 24 | + |
| 25 | +## Integration matrix |
| 26 | + |
| 27 | +| Requirement | Evidence | State | |
| 28 | +| --- | --- | --- | |
| 29 | +| Golden path: request → plan → approval → real edit → check → answer → Save to Notes → Open → restart restores, nothing re-runs | `e2e/conversation-fidelity.spec.ts` "golden path", against the real app, main process and `claude -p` adapter with a fake Claude CLI. Asserts file bytes, execution counts `{edits: 1, checksStarted: 1, checksFinished: 1}` before and after restart, plan statuses, outcomes, note revision 1 → 2 on the same page, and identical `thread:items` after restart | Verified with a fixture CLI, not a live provider | |
| 30 | +| A plan or clarifying question answered during the path | — | Open: needs CF-3 | |
| 31 | +| Paired-client reconnect in the path | CF-6 unit tests (journal replay, the phone's full and delta snapshots); `journal-resume.test.ts` | Verified in unit tests; not yet inside the golden fixture | |
| 32 | +| Denial: file unchanged, nothing runs | "a denial leaves the file as it was and runs nothing": bytes unchanged, counts `{}` | Verified (fixture) | |
| 33 | +| Command failure | "a failing check is a failed command": the tool is failed, and the plan step stays in progress | Verified (fixture) | |
| 34 | +| Unknown outcome | CF-1 and CF-6 unit tests: a dropped stream; work left running at a restart | Verified (unit) | |
| 35 | +| Stop while executing | "Stop while a check runs": stopped, the check never reports, nothing retried | Verified (fixture); CF-2 refines Stop | |
| 36 | +| Request withdrawal; simultaneous desktop and phone answers; reconnect after a decision send | — | Open: needs CF-3 | |
| 37 | +| Old snapshot migration | `test/conversation-migration.test.ts` | Verified (unit) | |
| 38 | +| Journal off | The golden fixture runs with the journal off, the default | Verified (fixture) | |
| 39 | +| Expired cursor | Existing `event-journal.test.ts` resume and reload cases | Verified (unit, existing) | |
| 40 | +| Stale Note revision | `task-context.test.ts`: a note edited since is kept and the new record becomes a new note | Verified (unit) | |
| 41 | +| Missing artifact | — | Open: CF-5's owned-artifact actions | |
| 42 | +| Outcomes, reasoning and provenance match recorded events | CF-1 fixture tests on Claude Code 2.1.302 and codex-cli 0.163.0 captures; CF-5 evidence tests | Verified on captures, not live | |
| 43 | +| Themes at 900×600 | `e2e/typed-turns.spec.ts`: Graphite, Jev and OpenCoven, no sideways scroll | Partial: no wider reference viewport, no committed references | |
| 44 | +| Keyboard and reduced motion | Existing `app.spec.ts` accessibility test; the new elements add no animation | Partial; human VoiceOver open | |
| 45 | +| Long transcript and streaming measurement | CF-5: a 3 MiB Codex stream from 584 ms to 76 ms in a unit test | Open: no named-environment measurement | |
| 46 | +| Live Codex and Claude acceptance | Captures only (2026-10-18, Haiku 5.5 and gpt-6-astra, benign tasks) | Open: needs authorized live runs through the app | |
| 47 | +| Human VoiceOver | — | Open: human | |
| 48 | +| Fresh `pnpm build`, `typecheck`, `test`, `test:e2e` on a pinned candidate | Per-PR results in #282, #284, #285, #287, #289 | Open until a candidate is pinned | |
| 49 | + |
| 50 | +## Commands and results for this preparation |
| 51 | + |
| 52 | +On `cf8-fidelity`, stacked on CF-7, macOS (Apple Silicon), Node v24.18.1, pnpm 10.34.5: |
| 53 | + |
| 54 | +- `pnpm run build`: passed. |
| 55 | +- `npx playwright test e2e/conversation-fidelity.spec.ts`: 4 of 4 passed (45 s). |
| 56 | + |
| 57 | +These are acceptance tests of behaviour CF-1 through CF-7 already built, so they had no red phase. |
| 58 | + |
| 59 | +## Next |
| 60 | + |
| 61 | +1. Land CF-2 (#286) and CF-3. Then add the question, withdrawal, simultaneous-answer and |
| 62 | + reconnect-after-decision variants to the golden fixture. |
| 63 | +2. Pin a candidate SHA and run fresh full checks on it. |
| 64 | +3. Run authorized live Codex and Claude smoke tasks through the app, and record versions, models and |
| 65 | + limits. |
| 66 | +4. Get human keyboard and VoiceOver acceptance, commit reference captures, and measure a long |
| 67 | + transcript on a named machine. |
| 68 | +EOF |
| 69 | +cd /Users/buns/Documents/GitHub/TypeSafeAI/modex/.worktrees/cf8-fidelity && git status --short |
0 commit comments