| ID | Path / condition / fixture | Affected or control; expected observable result | Viewport / theme | Required proof at FINAL head (all pending) |
| --- | --- | --- | --- | --- |
| L1 | `snapshotComposerSend` → `planComposerTurn`; stale tokens, Full=false; ordinary `hello`, `/compactfoo`; bare `/COMPACT`; instructed `/compact keep the API notes`, newline and tab delimiters; null tokens and Full=true controls | Logic: ordinary/prefix → compact=true, queue=true; explicit compact → false, auto, queue=false when idle; null/Full → false. Leading/trailing composer whitespace trimmed upstream. | Nonvisual | Focused behavior test transcript, exact final SHA; instructed regression must fail on origin/main for duplicate-compaction predicate and pass final. No recording required for pure test execution. |
| A1 | Resumed stopped Claude, enabled Compact chip; send `/compact keep the API notes` through real composer | Affected: base receives bare `/compact` THEN instructed command; final receives instructed command ONLY, no queued duplicate; reaches completed/idle state. | 1440 light AND 1440 dark AND 390 light AND 390 dark | FOUR before/after continuous recordings with narrated steps and timestamp index, paired base/final for each cell; correlated SDK launch argv (`--resume`) and full received-command trace through idle. Screenshots optional supplements. |
| C1 | Same immutable stopped seed as A1; send `Continue reviewing the API notes.` | Control: base AND final receive bare `/compact` THEN ordinary text; message waits for compact and completes, no dropped or duplicate normal turn. | 1440 light AND 1440 dark AND 390 light AND 390 dark | FOUR paired base/final continuous recordings, narrated steps/timestamps; trace proves ordering and completion, not just final message appearance. |
| C2 | Same seed/chip; send bare `/COMPACT` | Existing explicit-command exception: exactly one bare command; no automatic predecessor. | 1440 light | Paired base/final continuous recording with narrated before/send/after timestamps, argv and command count through completion. |
| C3 | Same seed/chip; send `/compactfoo` | Command-boundary control: automatic bare `/compact`, then literal `/compactfoo`; do not demand Claude accepts the unknown command or fabricates successful compaction for it. | 390 dark | Paired base/final continuous recording, narrated steps/timestamps; trace verifies prefix is NOT recognized as explicit compact. Show real resulting success/error, do not hide it. |
| C4 | Same seed; toggle Compact → Full, send ordinary message; reset seed and toggle Full → Compact | Opt-out control: Full sends ordinary text ONLY; re-enable restores bare-before-ordinary behavior. | 390 light | Paired base/final continuous recordings covering both toggles and both sends, narrated steps/timestamps and traces; do not treat a still of Full as proof of bypass. |
| C5 | Same aged high-token seed; effective idle-compaction setting `off` (Never); send ordinary message; restore `onReturn` | Null-token control: chip absent and ordinary text ONLY; after restoring setting/resetting seed, Compact chip and automatic predecessor return. | 1440 dark | Paired base/final continuous recordings showing scoped setting, route return, send and restored behavior with narrated timestamps and traces. |
| S1 | Other null-token gates and entry points: fresh/below-threshold/invalid usage; dismissed suggestion; busy/no permission/disconnected/no history/no manual capability/held queue/multiple-model selections; manual Compact action; other clients/providers | Source audit control: all offer gates unchanged; manual Compact calls standalone `/compact`, not planner; non-Claude cannot offer stale-session chip. Desktop shares web; native mobile separate. No new contract/server/provider behavior. | Nonvisual; no native-run claim | Re-read callers and gates against final diff; existing focused gate tests if needed. No interaction claimed, so no recording required. Any runtime claim added here requires a narrated continuous recording. |
