Repository navigation
Conversation
…d session expiry The sandbox API no longer takes `idle_timeout_seconds` (CreateSandboxSessionRequest rejects unknown fields) and now returns `expires_at: null` for a session with no lifetime limit, which local mode produces. The hand-written client still sent the removed field and raised on a null expiry. Generated code is unchanged. - remove the `idle_timeout_seconds` keyword from `Sandboxes#create`, so passing it raises ArgumentError instead of sending a field the API rejects - decode `SandboxSession#expires_at` as `Time?` on create, get and refresh, and still reject a value that is neither a time nor null; access credentials still require one - update the public and dev type signatures to match - document that `session.expires_at` is nil when a session has no lifetime limit BREAKING CHANGE: `Sandboxes#create` no longer accepts `idle_timeout_seconds`, and `SandboxSession#expires_at` can now be nil.
AI review: no P0-P2 findingsThis PR removes the Not checked: The AI review read the diff, the code, and the PR's text; it ran no tests or builds and read nothing outside this repository.
Human review: needed
The AI review found no P0-P2 problems at 8b87489, so the code needs no second review for bugs. Decide the points above: approve to accept them, or request changes. Suggested reviewer: |
|
|
Change
Stop accepting the removed sandbox idle timeout and accept a session with no expiry. The API (Kong/volcano-hosting#1743) removed
idle_timeout_seconds, andCreateSandboxSessionRequestrejects unknown fields. It also returnsexpires_at: nullfor a session with no lifetime limit, which local mode produces. The hand-written client still sent the removed field and raised on a null expiry. This is the companion to the OpenAPI sync PR #5, which exposes both mismatches. That branch is rebuilt by the sync bot, so the fix lands onmain.idle_timeout_secondskeyword fromSandboxes#create, so passing it raisesArgumentErrorinstead of sending a field the API rejectsSandboxSession#expires_atasTime?on create, get and refresh; a value that is neither a time nor null is still rejected, and access credentials still require an expirysession.expires_atis nil when a session has no lifetime limitBreaking:
Sandboxes#createno longer acceptsidle_timeout_seconds, andSandboxSession#expires_atcan now be nil.Separate from this fix: the sync PR #5 fails
spec/volcano_generation_spec.rb:51because that spec pins the SHA-256 ofopenapi/openapi.yaml, and a sync changes the file. Earlier contract updates (for example #344) updated the pin by hand. This PR does not touch the contract or the pin.Verification
The new specs failed before the fix (2 of the 6) and pass after it. On this branch:
bundle exec rake quality:lint,quality:types(Steep, both projects) andquality:defectspass, and the full suite (2,048 examples) passes the coverage gate at 100% lines and branches. The only failures are the fourvolcano_generation_spec.rbexamples that need a Java runtime and the openapi-generator package, which my machine lacks; they fail identically onmainhere. I did not runquality:audit,quality:generatedorquality:package.Cross-language impact
Classification: wire contract. The client follows a removed request field and a nullable response field.
idle_timeout_secondsand it models the session expiry as optional.tests/sdk-contractdoes not use the removed option.docs/sandboxes.mdin each repo.Follow the contributor workflow. Tooling checks and dry runs
are not live acceptance.