Agent Island / research / session-state fixtures

Claude Code and Codex session-state fixtures

Fourteen reproducible JSONL cases that distinguish a finished turn from a newer user turn, sidechain traffic, stale metadata, streaming output, and provider errors.

Observed 2026-08-01: 14 of 14 macOS classifier fixtures passed on Agent Island v1.7.1 source commit e598b57. This is correctness evidence for the listed cases, not a performance benchmark or user-data study.

Method

  1. Use only synthetic JSONL lines checked into the public test suite; no private transcript or user message is included.
  2. Compile the production classifier and scanner with the test runner by executing ./scripts/test-session-turn-state.sh.
  3. Compare the returned completion flag, semantic activity time, and turn key with each fixture's expected state.
  4. Record every case, including failure-prone sidechain, metadata, staleness, bookkeeping, and API-error boundaries.

Environment: macOS 26.5.2 build 25F84, Apple Silicon arm64, Apple Swift 6.3.3. Implementation: SessionTurnState.swift. Fixtures: SessionTurnStateTests.swift.

Download the machine-readable results (JSON)

Results

FixtureProviderExpectedObservedResult
User after assistantClaude CodeNot your turnNot your turnPASS
Trailing metadataClaude CodeYour turn; original keyYour turn; original keyPASS
Sidechain end_turnClaude CodeNot your turnNot your turnPASS
Main end_turn after sidechainClaude CodeYour turnYour turnPASS
User after task_completeCodexNot your turnNot your turnPASS
Task start after completeCodexNot your turnNot your turnPASS
task_completeCodexYour turnYour turnPASS
Old transcript, metadata touchClaude CodeIdleIdlePASS
Fresh end_turnClaude CodeYour turnYour turnPASS
Newer Desktop activityClaude CodeWorkingWorkingPASS
Desktop bookkeeping graceClaude CodeYour turnYour turnPASS
Return well after end_turnClaude CodeWorkingWorkingPASS
Streaming assistantClaude CodeWorkingWorkingPASS
API-error stop_sequenceClaude CodeNot your turnNot your turnPASS

What these fixtures establish

  • A completion envelope alone is insufficient: a newer user message or task start must suppress a stale alert.
  • Claude Code sidechain traffic must not finish the main session, while trailing sidechain records must not hide a genuine main-session completion.
  • Filesystem modification time is not semantic activity time; metadata and Desktop bookkeeping require explicit handling.
  • An API-limit message can use a completion-like stop reason and still must not become a false “your turn” event.

Limits

The run verifies the macOS Swift classifier against fourteen committed fixtures. The Windows implementation has a source-parity test suite, but its runtime was not executed here because the verification machine did not have the dotnet CLI installed. The dataset does not measure latency, CPU use, recall on unknown future provider formats, downloads, or user outcomes.

See the broader seven-state taxonomy, the safe JSONL parsing guide, and the factual comparison hub.

Download Agent Island