Skip to content

fix(server): retain OpenCode V2 per-turn token usage - #9937

Closed
saphid wants to merge 387 commits into
pingdotgg:t3code/codex-turn-mappingfrom
saphid:fix/v2-opencode-usage-20260905
Closed

fix(server): retain OpenCode V2 per-turn token usage#9937
saphid wants to merge 387 commits into
pingdotgg:t3code/codex-turn-mappingfrom
saphid:fix/v2-opencode-usage-20260905

Conversation

@saphid

@saphid saphid commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

OpenCode V2 now records per-turn token usage from step-finish events, deduplicating step IDs and carrying input, cache, output and reasoning totals into the turn. Completed turns report complete usage, interrupted/failed turns preserve partial usage, and turns without usage data report unavailable rather than zero. Subagent presence is tracked separately from the main-agent totals.

Current head ea21a4983 includes current V2 base 3aa47e294 and the shared test-only prerequisite #10865. Merge #10865 first; the topic itself changes 2 files. This rebuild removes the obsolete merged-base history from the PR diff.

Validation: 58 focused tests pass across the affected feature and foundation persistence coverage. Scoped server typecheck passes; targeted lint, formatting and diff checks pass. After merging the latest V2 base, 24 OpenCode adapter and targeted queued-cancellation replay tests pass; server typecheck passes. New-head CI is pending.

Independent cross-provider review was unavailable: the direct Claude Opus 5 high launcher in this audit exited 1 with expired OAuth before inference. No Claude review is claimed.

Targets Orchestrator V2 in #2829. Updated with GPT-6 in Codex/T3.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Sep 5, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This focused fix restores per-turn token accounting and changes provider-turn usage data consumed by analytics and potentially metering. The implementation is isolated and tested, but the billing/usage surface warrants human review.

You can add or adjust custom eligibility rules. Learn more.

@cursor

cursor Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@juliusmarminge
juliusmarminge force-pushed the t3code/codex-turn-mapping branch 2 times, most recently from 9242b91 to 3d81172 Compare September 8, 2026 03:31
@saphid

saphid commented Sep 8, 2026

Copy link
Copy Markdown
Contributor Author

Independent automated first-pass review (Amp/Astra agent mode) against base 415ed0f: no actionable findings. Verified in source: usage normalization matches the pinned OpenCode v1.15.13 conversion; step-ID dedup handles replay; root/child accumulation stays separate; unavailable/partial shapes satisfy the TurnTokenUsage contract; hasSubagents is only set on task tools; tokens fields are SDK-required and defensively clamped. One note: the PR-side diff vs the current base tip is inflated because the base branch advanced past 415ed0f; the contribution itself remains the two adapter files.

@cursor

cursor Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@github-actions github-actions Bot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 8, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Macroscope has since reviewed this pull request. An earlier review was skipped by a cost limit; a review has now completed, so that notice no longer applies.

juliusmarminge and others added 19 commits September 7, 2026 23:12
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
- Re-route steering that races completion into idempotent follow-up dispatches
- Preserve scheduled-task attribution and provider ownership history across clients
Port main's pull-request discovery, active thread ordering, async question dismissal, settlement fixes, provider-session import, attachment context, and provider correctness changes into orchestration v2.

Keep the branch's intentional composer and subagent behavior while adopting main's web and mobile fixes. Prevent headless setup terminals from hanging on the color probe, and move the v2 migration block to 050-061 after main claimed 048-049.
Restore the failed-before-start timer guard, align two server fixtures with the reconciled behavior, and remove dead files, exports, and dependencies surfaced by Knip.

Drop the temporary branch push trigger now that the PR is mergeable, so each update runs the pull-request workflow once.
Keep main's batch machine-update banner and update action while preserving the v2 runtime-based environment lock used by draft load balancing.
Adopt TypeScript 7 and Effect rc.112 across orchestration v2, including the TaggedError API migration and updated Effect-aware tests. Restore main's composer-aware scroll-to-end clearance while retaining selected-model settings sync, preview recording transfer, image galleries, desktop context menus, and layout hit targets. Regenerate the lockfile on the upgraded dependency baseline.
@juliusmarminge
juliusmarminge force-pushed the t3code/codex-turn-mapping branch from efd9994 to 6102d00 Compare September 8, 2026 06:23
juliusmarminge and others added 6 commits September 8, 2026 14:26
Advertise bounded socket snapshots and authoritative dispatch validation, omit raw command output and inline file bodies at the wire boundary, and preserve compact status metadata across web and mobile. Add transport-budget coverage for snapshots, resume, commands, legacy import, and projection maintenance.
@saphid
saphid force-pushed the fix/v2-opencode-usage-20260905 branch from caac367 to 648221e Compare September 9, 2026 00:18
@github-actions github-actions Bot added size:M 30-99 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Sep 9, 2026
juliusmarminge and others added 2 commits September 8, 2026 17:26
Restore pinned-thread shelf classification, server-owned unread state, hidden-subagent-safe project ordering, guarded jump hints, draft upload cleanup, and active-provider archive guards across the current and legacy sidebars.

Bring the surrounding current-main sidebar work forward as well: canonical project favicons, stable row layout, thread file drops, account-aware mobile provider badges, and deferred desktop keyring loading.
@juliusmarminge
juliusmarminge force-pushed the t3code/codex-turn-mapping branch 2 times, most recently from ed5dc41 to 2b1139a Compare September 10, 2026 19:28
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by 95045bb, already on remote v2. The adapter retains normalized per-turn OpenCode step-finish usage, deduplicates step IDs, reports main-agent scope and subagent presence, and distinguishes complete/partial/unavailable totals. Current code additionally checks message ownership to avoid charging unrelated/replayed steps to a turn. All five focused usage cases pass on current v2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants