Skip to content

Normalize Claude, Grok and Codex decoder events - #1046

Merged
JacobStephens2 merged 5 commits into
issue-700from
issue-983
Oct 22, 2026
Merged

JacobStephens2 merged 5 commits into
issue-700from
issue-983

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 22, 2026 •

Copy link
Copy Markdown
Owner

Summary

Claude / Grok JSONL ─┐
Codex JSONL ─────────┴─ Interpretation::decode → progress + normalized Event[]
                       Interpretation::condense → existing progress

Add model/tool lifecycles, messages, reported usage/cost, errors, denials, killed/interrupted work and sub-agent lifecycles. Keep existing Model evidence, diagnostics, Resume facts and final replies. Codex exposes measured turn totals separately: its exec stream has no per-request boundaries or Model records.

Closes #983

Evidence

  • Before: the normalized-event interface was absent; recorded-stream regressions failed. Each supplied behavioral reproducer ran exactly and failed as reported.
    After: the stopped-child and late-denial reproducers each passed after their fixes. Their assertions remain, with descendant isolation, partial-message usage, completed-only Codex items, late input snapshots, error envelopes, terminal metadata, and deduplicated same-call outcome amendments covered.
  • /usr/bin/time -p scripts/affected-tests issue-700 selected cargo nextest run: 2,235 passed, 3 skipped, across 52 binaries. Wall time 1,927.55 s (32m 07.55s) including compilation (2m 00s); nextest execution 1,802.105 s. Local timings reflect host load and build cache, not CI queue time.
  • The three skips are two existing manual probes (authenticated agy and capture latency), plus the retained, known failing Codex contract regression pending Decide Codex per-request evidence for Session traces #1047. The green suite does not establish that missing requirement.
  • cargo check --bin thirdshift, final cargo clippy --all-targets -- -D warnings, and cargo fmt --check passed. CI also passed on the exact pushed head 4d58484.

Test seams

  • Each Harness adapter's Interpretation::decode: JSONL to ordered normalized events and existing progress/Model evidence.
  • Interpretation::finish and existing integration scenarios: final replies, diagnostics and Resume facts remain compatible.

Review coverage

Independent Standards and Spec reviews against issue-700 (cd7119f): both read all 14 changed paths and their single follow-up covered the six review-fix paths. Both Standards design findings are addressed. Spec findings S2 (stopped child calls) and S3 (late denial metadata) are fixed with their regressions retained.

Remaining coverage gaps: final revisions after those follow-ups were not independently reread in src/harness/interpretation/event.rs, src/harness/interpretation/stream/events.rs, and src/harness/interpretation/event_tests.rs. Those changes received the exact S3 regression and duplicate-metadata coverage plus clippy/format checks. Earlier versions of all three were reviewed. No generated-output exclusions.

Unaddressed findings

Standards

None.

Spec

Merge Danger

Door: two-way

Additive decoder interface; no storage migration or launch-argument change.

Blast Radius: Harnesses

Existing progress/Model evidence, diagnostics, Resume and final-message consumers continue through their current interface. Codex per-request telemetry remains incomplete as disclosed above.

Normalized-event consumers must treat ToolCallEnded { amended: true, .. } as an authoritative outcome update for the same call, preserving its original end time and call count.

Built with codex · gpt-6.1-sol · xhigh

@JacobStephens2
JacobStephens2 merged commit dd4b988 into issue-700 Oct 22, 2026
18 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-983 branch October 22, 2026 01:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant