Skip to content

Update Copilot CLI to 1.0.86-2 and fix Rust schema enum collision - #2703

Open
aurokin wants to merge 1 commit into
mainfrom
aurokin-cli-1-0-86-2-adoption
Open

aurokin wants to merge 1 commit into
mainfrom
aurokin-cli-1-0-86-2-adoption

Conversation

@aurokin

@aurokin aurokin commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adopt exactly Copilot CLI 1.0.86-2 in the shared release pin and regenerate all six SDKs from its release schemas.
  • Unblock Rust generation for new assisted-approval attribution enums. The protocol's explicit "unknown" maps to UnknownValue; Unknown remains the forward-compatible serde fallback. Generalizes the existing CatalogTrustEligibility rule without renaming existing public variants or accepting other naming collisions.
  • Add focused generator collision tests and generated Rust serialization/future-value coverage.

Single replacement for updater 35171940387, which failed during Rust codegen before creating a PR. Supersedes closed #2702 (1.0.86-1). No competing version bump was created.

Validation

  • Reproduced release codegen failure and three failing regression cases before the fix.
  • All six generators succeeded; repeat regeneration produced identical output.
  • Node: 55 focused codegen tests, typecheck, changed-test ESLint/Prettier passed.
  • Rust: 22 generated API/event tests and all-feature/all-target Clippy passed.
  • Python: 43 generated/event-compatibility tests passed.
  • Go: targeted serialization/protocol tests passed; all packages compiled.
  • .NET: generated-source formatting and SDK build passed.
  • Java: focused generated/event tests and mvn verify passed; handwritten Spotless/Checkstyle passed. Initial broad local Java invocation lacked the replay harness and was stopped; full E2E ran in CI.
  • Fresh loop-review found no significant issues. No unresolved review threads as of the latest check.

Release provenance

The published release is release ID 390361151. Packaged buildMetadata.gitCommit identifies runtime source 615005b5795ebea28929abdc43e4ad6acff6024f (previous -1: 8c1a31a6239666247da539954f1b2eb0447f15bb). Both public tags point to ab6139c694ba09ab4e8ac76b6046daa6b5d89616, so the public tag alone does not identify the runtime payload.

The Linux ARM64 runtime package is asset 569122771; its checksum manifest entry matches GitHub's asset digest: 28d0a1a86fec459240c564b35b2d8071fcf8bb8f47de8e8621400dd4fbfcc5cc. Provenance review found additive schema changes and no JSON-RPC method/envelope changes. This is not an independent audit of every asset or a guarantee for every older strict consumer.

CI and residual risk

Ready for human review, not merge, at unchanged 6c5d962eeea540952a7195dbe1b1712632e92c8e. SDK run 35172957670, attempt 3, has 85 successful jobs and 2 failed jobs: the original Go Linux in-process test and its required aggregate. These counts are jobs within this run, not all PR checks; superseded-run cancellations are excluded.

Area Verified outcome Remaining risk
Go Linux in-process Original job 105048503768 reproduces signal 17 received but handler not on signal stack / missing SA_ONSTACK on Go 1.24.13 x64 in both pre-MCP replace-meta and remove-meta subprocesses. It was not rerun. Native defect remains in released -2. Separate fix: github/copilot-agent-runtime#21231 (15d3866198b), not included here. No SDK workaround or test weakening.
Python macOS in-process Initial job 105048503744 stalls 300 seconds in session.resume, with native mutex waits and healthy SDK transport. Exactly one targeted retry, job 105053802670, passed 945 tests, 9 skipped, including that exact case. Initial native resume hang remains unexplained; a retry pass is not a fix or proof the defect predates -2. CI diagnostics artifact 10477637325 preserves the original failure.
.NET macOS event-log Original job 105048504030 exceeded its 20-minute execution limit. Exactly one targeted retry, job 105055558937, passed all 4 RpcEventLogE2ETests; actual log available. .NET required is now successful. Original timeout remains unexplained because its logs/artifacts were unavailable. The retry proves this shard can pass unchanged, not the root cause of the first timeout.

The .NET retry executed persisted-event reads, tail-cursor/empty reads, filtered title-change longpoll, and idempotent interest registration/release. It ran on a new runner from 02:40:21Z to 02:41:41Z on September 17, 2026.

Only Python and required aggregates executed in attempt 2; only the .NET event-log shard and required aggregates executed in attempt 3. Other job IDs appearing in subsequent attempts are carried-forward aliases with original timestamps, not additional test runs. No further retries are planned.

Bounded local follow-up did not reproduce the original Python FFI resume hang: five permissions-module runs per release passed 65 tests on -2 and 65 on -0; a full Python 3.11 two-worker run also passed the original case but encountered two distinct failures (ambient standalone-extension configuration and TCP session.detach cleanup). These are not conflated with the CI FFI failure.

Do not merge automatically. Do not change the CLI pin beyond 1.0.86-2 without direction.

Regenerate all six SDK bindings and preserve Rust's forward-compatible Unknown fallback while mapping the protocol's explicit unknown value to UnknownValue. Cover nested schema collisions and generated wire roundtrips.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@aurokin
aurokin marked this pull request as ready for review September 17, 2026 02:03
@aurokin
aurokin requested a review from a team as a code owner September 17, 2026 02:03
Copilot AI balanced review requested due to automatic review settings September 17, 2026 02:03
@github-actions

Copy link
Copy Markdown
Contributor

SDK Consistency Review

Reviewed the full PR diff (23 files) via the GitHub API. This PR is a coordinated CLI schema update (bump to 1.0.86-2) plus a Rust codegen fix, and it maintains excellent cross-language consistency:

New/changed fields — present in all 6 SDKs (.NET, Go, Java, Node.js, Python, Rust):

  • enterprise_list on CopilotUserResponse (RPC type) — consistent naming per language convention (EnterpriseList/enterprise_list/enterpriseList).
  • ResponsesReasoning nested type, added to CompactionCompleteData, SystemNotificationEvent, UserMessageEvent, and SessionCompactionCompleteEvent data — present identically across all generated session-event types.
  • permissionMode on PermissionRequestedEventData — present in all languages.

CLI version bump:

  • Only nodejs/package.json / nodejs/src/cliVersion.ts hardcode copilotCliVersion (1.0.86-01.0.86-2). Go, Rust, and Python build scripts all read this value dynamically from nodejs/package.json at build/test time, and Java/.NET don't have their own hardcoded copy in this diff — so no other file needed a manual bump. This is correct and consistent with existing conventions.

Rust-specific codegen fix (scripts/codegen/rust.ts):

  • Removes the STRING_ENUM_VARIANT_OVERRIDES special-case map (previously only handling CatalogTrustEligibility.unknown) in favor of a general rule: any wire value literally equal to "unknown" is mapped to the UnknownValue variant, keeping it distinct from the serde-fallback Unknown variant for all enums, not just one hardcoded type. New tests in nodejs/test/rust-codegen.test.ts cover this generalization (including nested/anonymous enums) and a collision-rejection case. This is a Rust-only codegen concern (serde #[serde(other)] fallback pattern) and does not need equivalent handling in other language codegens, since none of them use a comparable "catch-all fallback variant" pattern for unknown enum values — this is an appropriate language-specific difference.

All changes are auto-generated from the CLI schema (or in the case of rust.ts, a codegen script fix) and are internally consistent. No cross-SDK gaps or divergent API shapes found. No action needed.

Generated by SDK Consistency Review Agent for #2703 · copilot · sonnet50 · 46.9 AIC · ⌖ 12.2 AIC · ⊞ 8.3K ·

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

🔵 Needs a closer look

New generated fields break stable Python positional constructors and exhaustive Rust struct literals.

Review effort: Balanced (auto)
Findings: None

Note

Copilot is running an experiment and ran this review at Balanced.

What changed in this PR

Updates the shared Copilot CLI pin to 1.0.86-2, superseding #2702, and regenerates all SDK protocol surfaces.

Changes:

  • Distinguishes explicit Rust "unknown" values from serde fallbacks.
  • Adds assisted-approval, reasoning-history, permission-mode, and enterprise-license fields.
  • Adds focused Rust generator and serialization coverage.
File Description
scripts/​codegen/​rust.ts Generalizes explicit "unknown" enum handling.
rust/​tests/​session_events_test.rs Tests explicit and future enum values.
rust/​src/​generated/​session_events.rs Adds regenerated event models and enums.
rust/​src/​generated/​api_types.rs Adds enterprise-license data.
python/​copilot/​generated/​session_events.py Adds regenerated event models.
python/​copilot/​generated/​rpc.py Adds enterprise-license RPC data.
nodejs/​test/​rust-codegen.test.ts Tests enum collisions and nested enums.
nodejs/​src/​generated/​session-events.ts Adds regenerated event interfaces.
nodejs/​src/​generated/​rpc.ts Adds enterprise-license RPC fields.
nodejs/​src/​cliVersion.ts Pins CLI 1.0.86-2.
nodejs/​package.json Updates the shared CLI release pin.
java/​sdk/​src/​generated/​java/​com/​github/​copilot/​generated/​UserMessageEvent.java Adds reasoning metadata.
java/​sdk/​src/​generated/​java/​com/​github/​copilot/​generated/​SystemNotificationEvent.java Adds reasoning metadata.
java/​sdk/​src/​generated/​java/​com/​github/​copilot/​generated/​SessionCompactionCompleteEvent.java Adds compaction reasoning metadata.
java/​sdk/​src/​generated/​java/​com/​github/​copilot/​generated/​rpc/​CopilotUserResponse.java Adds enterprise-license data.
java/​sdk/​src/​generated/​java/​com/​github/​copilot/​generated/​ResponsesReasoning.java Defines reasoning metadata.
java/​sdk/​src/​generated/​java/​com/​github/​copilot/​generated/​PermissionRequestedEvent.java Adds permission mode.
go/​zsession_events.go Re-exports new event types and constants.
go/​rpc/​zsession_events.go Adds regenerated event models and enums.
go/​rpc/​zsession_encoding.go Decodes new event fields.
go/​rpc/​zrpc.go Adds enterprise-license RPC data.
dotnet/​src/​Generated/​SessionEvents.cs Adds regenerated event models and converters.
dotnet/​src/​Generated/​Rpc.cs Adds enterprise-license RPC data.
Files not reviewed (3)
  • go/rpc/zsession_encoding.go: Generated file
  • go/rpc/zsession_events.go: Generated file
  • go/zsession_events.go: Generated file

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

@aurokin

aurokin commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

CI investigation at unchanged head 6c5d962e (run 35172957670):

  • Go Linux in-process: job 105048503768 positively reproduces the native signal defect on published 1.0.86-2, Go 1.24.13 x64. Both pre-MCP replace-meta and remove-meta subprocesses report signal 17 received but handler not on signal stack / non-Go code set up signal handler without SA_ONSTACK flag, then exit 2. This is now execution evidence, not merely a source-based risk.
  • Python macOS in-process: job 105048503744 times out after 300 seconds awaiting session.resume in the deny-after-resume permissions test. The JSON-RPC reader is alive, SDK locks are not held, and the native sample contains two copilot-cabi threads waiting on mutexes. Exact native lock ownership is unavailable in the stripped release sample. Diagnostics artifact: 10477637325.
  • Five fresh local permissions-module runs per release passed: 65 tests on -2 and 65 on -0. Local Python 3.12 and isolated module execution differ from CI Python 3.11 and its long-lived worker, so these passes do not prove a fix or that this timeout predates -2.

No SDK workaround or test weakening is justified by this evidence. The .NET macOS event-log shard is still running; superseded-run cancellations are excluded from this assessment. Ready for human review remains distinct from merge readiness; do not merge.

@aurokin

aurokin commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

Concrete follow-up for the confirmed Go native signal crash: github/copilot-agent-runtime#21231, head 15d3866198b. It preserves inherited SA_ONSTACK during native signal registration; it is pending runtime CI/maintainer review and is not included in released CLI 1.0.86-2. SDK pins and head remain unchanged. The Python session.resume native mutex hang is a separate unresolved failure and is not claimed to be fixed by that PR.

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.

2 participants