Skip to content

Complete Fast Auto-tier support across SDKs - #2669

Merged
stephentoub merged 4 commits into
mainfrom
complete-auto-tier-support-v2
Sep 16, 2026
Merged

stephentoub merged 4 commits into
mainfrom
complete-auto-tier-support-v2

Conversation

@andyfeller

Copy link
Copy Markdown
Contributor

Why

Fast is now a canonical runtime Auto tier. The SDKs should expose and preserve that value consistently across public APIs, request forwarding, lifecycle events, and documentation without making SDK-side eligibility or fallback decisions.

What changed

  • Added missing consumer-facing Fast support for Python and Java public Auto-tier APIs.
  • Extended Auto-tier contract and event coverage across Node.js, Python, Go, .NET, Java, and Rust.
  • Added shared replay-proxy support for ordered /auto responses with optional status codes.
  • Added shared Fast lifecycle snapshots and six-SDK E2E coverage for cold resume, explicit override, successful commit, and failed activation recovery.
  • Updated the changelog, feature docs, and language READMEs to describe Fast as an integrator-only latency preset requiring Copilot CLI 1.0.84-0 or later.

Out of scope

This does not add recommendation presentation, acceptance, dismissal, deduplication, telemetry, or SDK-side Fast eligibility policy. The SDKs continue to forward runtime errors from older or incompatible Copilot CLI versions instead of downgrading or silently ignoring Fast.

Validation

  • uv run pytest e2e/test_auto_tier_e2e.py -v
  • ~/Documents/testing/complete-auto-tier-support-v2/run-scenario.sh run 01-public-contract-fast --yes
  • ~/Documents/testing/complete-auto-tier-support-v2/run-scenario.sh run 02-six-sdk-fast-lifecycle --yes
  • ~/Documents/testing/complete-auto-tier-support-v2/run-scenario.sh run 03-consumer-doc-semantics --yes
  • ~/Documents/testing/complete-auto-tier-support-v2/run-scenario.sh verify 01-public-contract-fast
  • ~/Documents/testing/complete-auto-tier-support-v2/run-scenario.sh verify 02-six-sdk-fast-lifecycle
  • ~/Documents/testing/complete-auto-tier-support-v2/run-scenario.sh verify 03-consumer-doc-semantics
  • git diff --check
  • Generated-file diff path check returned no matches.
  • Stale AUTO_V2_ENDPOINT, 1.0.84-2, and placeholder Fast-version reference check returned no matches.

@andyfeller
andyfeller requested a review from a team as a code owner September 15, 2026 12:46
Copilot AI balanced review requested due to automatic review settings September 15, 2026 12:46
@github-actions

This comment has been minimized.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

Functional coverage is comprehensive; only a non-blocking documentation-formatting correction remains.

Review tier: Balanced
Findings: 1 Low severity

Open (1)
What changed in this PR

Adds complete Fast Auto-tier support across all six SDKs, lifecycle tests, replay fixtures, and documentation.

Changes:

  • Exposes and forwards the canonical fast tier.
  • Adds deterministic lifecycle and failure-path E2E coverage.
  • Documents compatibility and runtime-owned fallback behavior.
File Description
test/​snapshots/​auto_tier/​should_restore_and_override_fast_auto_tier_on_cold_resume.yaml Adds cold-resume responses.
test/​snapshots/​auto_tier/​should_preserve_effective_tier_when_fast_activation_fails.yaml Adds activation-failure responses.
test/​snapshots/​auto_tier/​should_commit_fast_auto_tier_after_successful_turn.yaml Adds successful-commit response.
test/​harness/​replayingCapiProxy.ts Replays ordered /auto responses.
test/​harness/​replayingCapiProxy.test.ts Tests response ordering and status codes.
rust/​tests/​e2e/​auto_tier.rs Covers Rust Fast lifecycle behavior.
rust/​tests/​api_types_test.rs Tests Rust Fast serialization.
rust/​src/​types.rs Documents Fast and tests CAPI forwarding.
rust/​README.md Documents Rust Fast usage.
python/​test_event_forward_compatibility.py Tests Python Fast events.
python/​test_client.py Tests Python request forwarding.
python/​README.md Documents Python Fast usage.
python/​e2e/​test_auto_tier_e2e.py Covers Python Fast lifecycle behavior.
python/​copilot/​session.py Adds Fast to the public type.
python/​copilot/​client.py Documents the Fast CAPI option.
nodejs/​test/​session-event-types.test.ts Tests Node.js Fast event types.
nodejs/​test/​e2e/​auto_tier.e2e.test.ts Covers Node.js Fast lifecycle behavior.
nodejs/​test/​client.test.ts Tests Node.js Fast forwarding.
nodejs/​README.md Documents Node.js Fast usage.
java/​sdk/​src/​test/​java/​com/​github/​copilot/​SessionAutoTierSwitchTest.java Tests Java Fast switching.
java/​sdk/​src/​test/​java/​com/​github/​copilot/​SessionAutoTierEventTest.java Tests Java Fast events.
java/​sdk/​src/​test/​java/​com/​github/​copilot/​CapiSessionOptionsTest.java Tests Java CAPI serialization.
java/​sdk/​src/​test/​java/​com/​github/​copilot/​AutoTierIT.java Covers Java Fast lifecycle behavior.
java/​sdk/​src/​main/​java/​com/​github/​copilot/​rpc/​AutoTier.java Adds the Java Fast enum value.
java/​README.md Documents Java Fast usage.
go/​session_test.go Tests Go Fast switching.
go/​session_event_serialization_test.go Tests Go Fast events.
go/​README.md Documents Go Fast usage.
go/​internal/​e2e/​auto_tier_e2e_test.go Covers Go Fast lifecycle behavior.
go/​client_test.go Tests Go CAPI forwarding.
dotnet/​test/​Unit/​SessionEventSerializationTests.cs Tests .NET Fast events.
dotnet/​test/​Unit/​ClientSessionLifetimeTests.cs Tests .NET Fast forwarding.
dotnet/​test/​E2E/​AutoTierE2ETests.cs Covers .NET Fast lifecycle behavior.
dotnet/​README.md Documents .NET Fast usage.
docs/​features/​session-persistence.md Documents Fast persistence semantics.
CHANGELOG.md Records cross-SDK Fast support.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread docs/features/session-persistence.md Outdated

@ArshVermaGit ArshVermaGit left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good overall. The Fast Auto-tier support seems consistent across all six SDKs, and the E2E coverage and docs updates look solid. I didn’t notice any major issues from the changes.

@github-actions

This comment has been minimized.

Comment thread docs/features/session-persistence.md Outdated
@github-actions

This comment has been minimized.

Comment thread CHANGELOG.md Outdated
@github-actions

This comment has been minimized.

andyfeller and others added 4 commits September 16, 2026 00:44
Add Fast Auto-tier exposure, contract tests, and lifecycle E2E coverage across the SDKs while preserving runtime-owned eligibility and omitted-tier semantics.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Restrict routing-dependent lifecycle tests to CAPI while retaining direct-provider coverage for the other Auto-tier tests. Apply Python formatting and documentation punctuation fixes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Address maintainer feedback consistently across feature documentation, SDK READMEs, the changelog, and API comments while preserving routing and runtime-error guidance.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@stephentoub
stephentoub force-pushed the complete-auto-tier-support-v2 branch from 40acab4 to 5cf136c Compare September 16, 2026 04:44
@github-actions

Copy link
Copy Markdown
Contributor

Cross-SDK Consistency Review — PR #2669

Reviewed all 35 changed files against the authoritative PR diff (get_files/get_diff). This PR adds a new fast value to AutoTier (an integrator-only latency preset) plus clarifying docs/behavior for failed Auto-tier activation, and adds three new deterministic e2e lifecycle scenarios backed by new replay-proxy /auto fixture support.

Findings: no consistency issues. The change is applied uniformly across all six SDKs:

  • Enum/type value fast/Fast/FAST present in generated types for Node.js (session-events.ts), Go (zrpc.go/zsession_events.go, re-exported in types.go... note: go/types.go re-export constants weren't touched by this PR, but AutoTierFast is already exposed via zsession_events.go), .NET (Generated/SessionEvents.cs), Java (AutoTier.java, hand-maintained enum), Rust (generated::session_events::AutoTier), and Python (session.py Literal).
  • Docs: .NET, Go, Java, Node.js, Python, and Rust READMEs all updated with equivalent wording describing fast as an integrator-only latency preset and clarifying failed-activation behavior (incumbent tier unchanged).
  • Unit tests: serialization/round-trip tests for the fast value added consistently in .NET, Go, Java, Node.js, Python, and Rust.
  • E2E tests: three new scenarios — should_restore_and_override_fast_auto_tier_on_cold_resume, should_commit_fast_auto_tier_after_successful_turn, should_preserve_effective_tier_when_fast_activation_fails — implemented with matching semantics in all six SDKs' e2e suites, backed by three new shared YAML snapshots and a new autoResponses fixture mechanism added to the shared test harness (test/harness/replayingCapiProxy.ts), used identically by every language's e2e runner.

No inline comments needed — API naming follows each language's existing convention for AutoTier (PascalCase enum member in .NET/Java, camelCase string literal in Node/Python, PascalCase Go constant, PascalCase Rust variant), and no SDK was left behind.

Generated by SDK Consistency Review Agent for #2669 · copilot · sonnet50 · 74.8 AIC · ⌖ 11.3 AIC · ⊞ 8.3K ·

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.

4 participants