Repository navigation
feat(testing): support independent test images - #1
Bobbins228 wants to merge 130 commits into
Conversation
Bobbins228
left a comment
There was a problem hiding this comment.
Review finding: complete supervisor image references fail in CI without IMAGE_TAG.
Before this PR, CI required IMAGE_TAG only when no supervisor override was provided. With this PR, setting SUPERVISOR_IMAGE=registry.example/supervisor:branch or a digest-pinned reference still exits when CI is set and IMAGE_TAG is unset. This contradicts the documented support for complete references and prevents CI callers from using immutable overrides independently of IMAGE_TAG.
Please apply the IMAGE_TAG validation only when SUPERVISOR_IMAGE is repository-only.
Affected locations:
- e2e/with-docker-gateway.sh:330-335
- e2e/with-podman-gateway.sh:332-337
|
Addressed in commit |
10f307f to
a9e5c27
Compare
…3207) Show configured tool server addresses and their last observed connection results together in sandbox status. Keep sandbox lifecycle readiness separate so an external connection failure does not mark the sandbox unready. Expose direct endpoint records through the CLI and SDKs, with plain-language failure explanations and gateway acceptance times. Keep observation tracking, runtime reporting, and gateway validation in dedicated endpoint status modules. Preserve bounded reporting, request attribution, retry ordering, and configuration and supervisor authority checks. Clear obsolete observations while retaining the configured addresses, and document the distinction between an observed HTTP response, current availability, and tool success. Signed-off-by: Shiju <[email protected]>
Signed-off-by: Evan Lezar <[email protected]>
* fix(auth): harden OIDC trust root retrieval Signed-off-by: Mrunal Patel <[email protected]> * fix(e2e): pass OIDC HTTP acknowledgement value Signed-off-by: Mrunal Patel <[email protected]> --------- Signed-off-by: Mrunal Patel <[email protected]>
* feat(api): expose structured gateway errors across SDKs Refs NVIDIA#3051. Add standard validation, conflict, and retry details; preserve raw transport status in Rust, Go, TypeScript, and Python; document status and recovery guidance. This is the structured-error foundation only. Mutation result shapes, allow_missing, durable request deduplication, and exec retry semantics remain follow-up work. Signed-off-by: Mrunal Patel <[email protected]> * fix(python): preserve wrapped RPC cleanup handling Inspect the original gRPC call when handling missing sandboxes during deletion waits and managed cleanup. Add intercepted cleanup regressions and clarify the error-wrapper migration contract. Addresses the cleanup review on NVIDIA#3313; part of NVIDIA#3051. Signed-off-by: Mrunal Patel <[email protected]> --------- Signed-off-by: Mrunal Patel <[email protected]>
Previously, metadata events omitted both HTTP request and response objects, early proxy rejections used HTTP Activity without request context, and unsupported-scheme events did not expose enough safe HTTP context to satisfy the OCSF 1.8 schema. Now, metadata events include a method-only request and their actual HTTP response codes without recording the metadata URL. Unsupported-scheme events also include a method-only request plus the generated 400 response. Authority mismatches and credential-resolution denials use HTTP Activity with their generated 403 or 500 responses, and HTTP activity IDs are derived from the request method. Additionally, HttpActivityBuilder now enforces the OCSF request-or-response constraint at compile time. Signed-off-by: Kris Hicks <[email protected]>
* fix(gator): run supervisor as sandbox main process Signed-off-by: John Myers <[email protected]> * feat(gator): persist supervised state history Signed-off-by: John Myers <[email protected]> * refactor(gator): remove obsolete background launch mode Signed-off-by: John Myers <[email protected]> --------- Signed-off-by: John Myers <[email protected]> Co-authored-by: John Myers <[email protected]>
Signed-off-by: John Myers <[email protected]>
Reject non-loopback plaintext Vault endpoints, disable redirects, and support private CA bundles without weakening hostname verification. Update Helm configuration, documentation, operator skills, and regression coverage for OSSR-002. Signed-off-by: Seth Jennings <[email protected]>
…IA#3337) Validate raw OPA object and array containers before normalization and access-preset expansion can skip malformed values. Return one fixed structural error without embedding authored policy data. Preserve versionless and runtime-only OPA data and existing semantic validation. Cover initial string/file loading, middleware callback order, valid deny-rule enforcement, and rejected reload state and generation. Document the loader contract and its engine-local rejection behavior. Signed-off-by: Shiju <[email protected]>
* fix(ci): upstream Windows SDK validation support Port remaining Windows validation tooling from GitLab independently of the combined MXC runtime port. Preserve locked SDK dependencies and guard temporary launcher cleanup. Co-authored-by: Shailendra Singh <[email protected]> Signed-off-by: Prekshi Vyas <[email protected]> * fix(ci): install native TypeScript dependencies before validation Signed-off-by: Prekshi Vyas <[email protected]> --------- Signed-off-by: Prekshi Vyas <[email protected]> Co-authored-by: Shailendra Singh <[email protected]>
…2942) * feat(isolation): add RFC 0012 backend contract Signed-off-by: Drew Newberry <[email protected]> * refactor(isolation): name the interface crate explicitly Signed-off-by: Drew Newberry <[email protected]> * feat(isolation): expose trusted host gateway Signed-off-by: Drew Newberry <[email protected]> * docs(agents): inventory the MXC driver Signed-off-by: Drew Newberry <[email protected]> * feat(isolation): add mediated DNS transport Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): tighten interface error and digest contracts Signed-off-by: Drew Newberry <[email protected]> * docs(isolation): remove unrelated driver inventory Signed-off-by: Drew Newberry <[email protected]> * feat(isolation): define capability-free launch contract Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): seal confirmed boundary state Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): validate confirmation for external backend implementations Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): clarify mediated DNS identity Signed-off-by: Drew Newberry <[email protected]> * refactor(isolation): generalize loopback connector Signed-off-by: Drew Newberry <[email protected]> * refactor(isolation): unify typed network mediation Signed-off-by: Drew Newberry <[email protected]> * feat(isolation): bind launches to sandbox sessions Signed-off-by: Drew Newberry <[email protected]> * fix(mxc): initialize extended sandbox status Signed-off-by: Drew Newberry <[email protected]> * feat(isolation): add boundary protocol and Linux primitives Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): harden signals and separate process status from transport Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): validate remote confirmation through public contract Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): validate wire state and propagate snapshot failures Signed-off-by: Drew Newberry <[email protected]> * test(isolation): import owned agent specification explicitly Signed-off-by: Drew Newberry <[email protected]> * docs(isolation): describe mediated DNS channel Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): bound mediation attach without nested retries Signed-off-by: Drew Newberry <[email protected]> * refactor(isolation): generalize loopback protocol Signed-off-by: Drew Newberry <[email protected]> * feat(isolation): add transport-neutral session authentication Signed-off-by: Drew Newberry <[email protected]> * refactor(isolation): separate sandbox backend protocol Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): harden runtime boundary controls Signed-off-by: Drew Newberry <[email protected]> * feat(isolation): add terminal boundary operation Signed-off-by: Drew Newberry <[email protected]> * feat(isolation): split supervisor and sandbox runtimes Signed-off-by: Drew Newberry <[email protected]> * fix(sandbox): harden boundary isolation and lifecycle ownership Signed-off-by: Drew Newberry <[email protected]> * fix(sandbox): reject private root redirects and adopt typed errors Signed-off-by: Drew Newberry <[email protected]> * fix(sandbox): preserve accept thread ownership on musl Signed-off-by: Drew Newberry <[email protected]> * test(sandbox): isolate credential probes from filtered threads Signed-off-by: Drew Newberry <[email protected]> * fix(sandbox): return retained exec exit status to independent waiters Signed-off-by: Drew Newberry <[email protected]> * fix(sandbox): bound network mediation and preserve socket authorization Signed-off-by: Drew Newberry <[email protected]> * fix(sandbox): bound control admission and retire stale mediation Signed-off-by: Drew Newberry <[email protected]> * ci(e2e): select migrated drivers per stack layer Signed-off-by: Drew Newberry <[email protected]> * refactor(sandbox): implement loopback connector Signed-off-by: Drew Newberry <[email protected]> * feat(isolation): authenticate the Sandbox Protocol Signed-off-by: Drew Newberry <[email protected]> * feat(supervisor): rotate launch-scoped authentication Signed-off-by: Drew Newberry <[email protected]> * refactor(sandbox): consume dedicated backend crate Signed-off-by: Drew Newberry <[email protected]> * test(sandbox): align topology session fixture Signed-off-by: Drew Newberry <[email protected]> * fix(sandbox): align projected bootstrap bundle Signed-off-by: Drew Newberry <[email protected]> * fix(auth): validate refreshed credentials before rotation Signed-off-by: Drew Newberry <[email protected]> * fix(sandbox): fail closed across supervisor disconnects Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): repair rebased sandbox CI Signed-off-by: Drew Newberry <[email protected]> * build(runtime): publish separate sandbox and supervisor images Signed-off-by: Drew Newberry <[email protected]> * feat(config): configure the sandbox runtime image Signed-off-by: Drew Newberry <[email protected]> * fix(ci): validate sandbox binary linkage Signed-off-by: Drew Newberry <[email protected]> * refactor(isolation): use backend and runtime terminology Signed-off-by: Drew Newberry <[email protected]> * refactor(sandbox): use a scratch runtime image Signed-off-by: Drew Newberry <[email protected]> * fix(ci): refresh schema and dependency policy Signed-off-by: Drew Newberry <[email protected]> * fix(sandbox): bind reconnects to supervisor process Signed-off-by: Drew Newberry <[email protected]> * docs: align runtime split operational guidance Signed-off-by: Drew Newberry <[email protected]> * chore(security): document Kubernetes runtime RBAC Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): enforce runtime lifecycle invariants Signed-off-by: Drew Newberry <[email protected]> * feat(compute): identify sandbox start generations Signed-off-by: Drew Newberry <[email protected]> * fix(server): restore sandbox launch sessions Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): support authenticated runtime replacement Signed-off-by: Drew Newberry <[email protected]> * fix(auth): bind sandbox session successors Signed-off-by: Drew Newberry <[email protected]> * fix(auth): retry pending sandbox successors Signed-off-by: Drew Newberry <[email protected]> * feat(vm): run the supervisor outside the guest workload Signed-off-by: Drew Newberry <[email protected]> * refactor(vm): use sandbox backend protocol Signed-off-by: Drew Newberry <[email protected]> * fix(vm): repair rebase integration Signed-off-by: Drew Newberry <[email protected]> * fix(vm): use unified build toolchain Signed-off-by: Drew Newberry <[email protected]> * refactor(vm): use sandbox runtime terminology Signed-off-by: Drew Newberry <[email protected]> * refactor(vm): own guest network bootstrap Signed-off-by: Drew Newberry <[email protected]> * fix(vm): expose guest init version Signed-off-by: Drew Newberry <[email protected]> * fix(vm): select native supervisor artifacts Signed-off-by: Drew Newberry <[email protected]> * fix(vm): guard guest init Linux symbols Signed-off-by: Drew Newberry <[email protected]> * fix(vm): scope Linux test imports Signed-off-by: Drew Newberry <[email protected]> * fix(vm): avoid guest interface casts Signed-off-by: Drew Newberry <[email protected]> * fix(vm): reconcile admitted sandbox identity Signed-off-by: Drew Newberry <[email protected]> * fix(vm): share resolved sandbox identity Signed-off-by: Drew Newberry <[email protected]> * fix(vm): surface host supervisor failures Signed-off-by: Drew Newberry <[email protected]> * fix(vm): include guest logs on supervisor exit Signed-off-by: Drew Newberry <[email protected]> * fix(vm): rotate and clean runtime generations Signed-off-by: Drew Newberry <[email protected]> * fix(vm): make sandbox starts generation-aware Signed-off-by: Drew Newberry <[email protected]> * fix(vm): rotate restored sandbox sessions Signed-off-by: Drew Newberry <[email protected]> * refactor(vm): keep shared paths in the base layer Signed-off-by: Drew Newberry <[email protected]> * fix(vm): bind sandbox session lineage Signed-off-by: Drew Newberry <[email protected]> * feat(docker): isolate workloads behind the host supervisor Signed-off-by: Drew Newberry <[email protected]> * feat(docker): rotate launch-scoped authentication Signed-off-by: Drew Newberry <[email protected]> * refactor(docker): use sandbox backend protocol Signed-off-by: Drew Newberry <[email protected]> * refactor(docker): use host networking for supervisor Signed-off-by: Drew Newberry <[email protected]> * fix(docker): preserve host gateway alias resolution Signed-off-by: Drew Newberry <[email protected]> * feat(docker): use separate sandbox and supervisor images Signed-off-by: Drew Newberry <[email protected]> * fix(docker): restore startup validation after rebase Signed-off-by: Drew Newberry <[email protected]> * refactor(docker): name the sandbox runtime directly Signed-off-by: Drew Newberry <[email protected]> * fix(docker): narrow supervisor CA runtime storage Signed-off-by: Drew Newberry <[email protected]> * fix(docker): close companion isolation gaps Signed-off-by: Drew Newberry <[email protected]> * test(docker): align mediated network expectations Signed-off-by: Drew Newberry <[email protected]> * test(docker): exercise mediated network paths Signed-off-by: Drew Newberry <[email protected]> * fix(docker): attach supervisor to managed network Signed-off-by: Drew Newberry <[email protected]> * fix(docker): defer supervisor recovery until gateway is ready Signed-off-by: Drew Newberry <[email protected]> * fix(docker): make sandbox starts generation-aware Signed-off-by: Drew Newberry <[email protected]> * fix(docker): rotate restored sandbox sessions Signed-off-by: Drew Newberry <[email protected]> * fix(docker): preserve workloads during session rotation Signed-off-by: Drew Newberry <[email protected]> * refactor(docker): remove unrelated configuration RFC changes Signed-off-by: Drew Newberry <[email protected]> * fix(docker): bind sandbox session lineage Signed-off-by: Drew Newberry <[email protected]> * feat(kubernetes): add proxy-pod isolation topology Signed-off-by: Drew Newberry <[email protected]> * refactor(kubernetes): use sandbox backend protocol Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): use stable sandbox service authority Signed-off-by: Drew Newberry <[email protected]> * feat(kubernetes): split sandbox and supervisor images Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): adapt proxy pods to current runtime APIs Signed-off-by: Drew Newberry <[email protected]> * refactor(kubernetes): describe the single runtime placement Signed-off-by: Drew Newberry <[email protected]> * refactor(kubernetes): simplify sandbox orchestration Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): validate deployment prerequisites Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): update Trivy Helm profile inventory Signed-off-by: Drew Newberry <[email protected]> * test(kubernetes): update Trivy scan inventory count Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): reuse preloaded runtime images in e2e Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): type and clean runtime resources Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): make sandbox restarts recoverable Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): rotate restored sandbox sessions Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): preserve supervisor egress Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): bind sandbox session lineage Signed-off-by: Drew Newberry <[email protected]> * feat(podman): adopt isolated sandbox and supervisor containers Signed-off-by: Drew Newberry <[email protected]> * fix(podman): stage bootstrap archives at named volume destinations Signed-off-by: Drew Newberry <[email protected]> * feat(podman): rotate launch-scoped authentication Signed-off-by: Drew Newberry <[email protected]> * refactor(podman): use sandbox backend protocol Signed-off-by: Drew Newberry <[email protected]> * refactor(podman): use host networking for supervisor Signed-off-by: Drew Newberry <[email protected]> * feat(podman): split sandbox and supervisor images Signed-off-by: Drew Newberry <[email protected]> * fix(podman): repair rebase integration Signed-off-by: Drew Newberry <[email protected]> * refactor(podman): name the sandbox runtime directly Signed-off-by: Drew Newberry <[email protected]> * fix(podman): provision supervisor CA runtime storage Signed-off-by: Drew Newberry <[email protected]> * fix(podman): address isolation review findings Signed-off-by: Drew Newberry <[email protected]> * fix(podman): inspect Debian supervisor provenance Signed-off-by: Drew Newberry <[email protected]> * fix(podman): use libpod-compatible tmpfs options Signed-off-by: Drew Newberry <[email protected]> * fix(podman): bind verified sandbox runtime binary Signed-off-by: Drew Newberry <[email protected]> * fix(podman): provide external driver data directory Signed-off-by: Drew Newberry <[email protected]> * fix(podman): start sandbox before joining user namespace Signed-off-by: Drew Newberry <[email protected]> * fix(podman): separate supervisor user namespace Signed-off-by: Drew Newberry <[email protected]> * fix(podman): make sandbox starts generation-aware Signed-off-by: Drew Newberry <[email protected]> * fix(podman): rotate restored sandbox sessions Signed-off-by: Drew Newberry <[email protected]> * fix(podman): bind sandbox session lineage Signed-off-by: Drew Newberry <[email protected]> * perf(isolation): add TCP and DNS benchmark harnesses Signed-off-by: Drew Newberry <[email protected]> * fix(perf): align benchmark timing and supported protocols Signed-off-by: Drew Newberry <[email protected]> * fix(perf): report TCP benchmark metrics accurately Signed-off-by: Drew Newberry <[email protected]> * fix(perf): cancel failed worker startup Signed-off-by: Drew Newberry <[email protected]> * fix(docker): build matching local supervisor image Signed-off-by: Drew Newberry <[email protected]> * fix(podman): make local sandbox smoke test runnable Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): wire local sandbox runtime image Signed-off-by: Drew Newberry <[email protected]> * fix(kubernetes): narrow sandbox service RBAC Signed-off-by: Drew Newberry <[email protected]> * fix(ci): validate split runtime artifacts Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): harden runtime session handling Signed-off-by: Drew Newberry <[email protected]> * feat(supervisor): add standalone network proxy role Signed-off-by: Drew Newberry <[email protected]> * docs(rfc): remove implementation companion notes Signed-off-by: Drew Newberry <[email protected]> * refactor(vm): standardize runtime release name Signed-off-by: Drew Newberry <[email protected]> * fix(vm): pin renamed runtime artifacts Signed-off-by: Drew Newberry <[email protected]> * fix(auth): persist sandbox runtime identity Signed-off-by: Drew Newberry <[email protected]> * fix(runtime): restore branch validation Signed-off-by: Drew Newberry <[email protected]> * fix(isolation): reconcile main after rebase Signed-off-by: Drew Newberry <[email protected]> * fix(network): close unframed HTTP 1.0 responses Signed-off-by: Drew Newberry <[email protected]> * chore(isolation): preserve upstream OCSF updates Signed-off-by: Drew Newberry <[email protected]> * fix(security): close credential and TLS replay paths Signed-off-by: Drew Newberry <[email protected]> * fix(auth): make sandbox refresh retries idempotent Signed-off-by: Drew Newberry <[email protected]> --------- Signed-off-by: Drew Newberry <[email protected]> Signed-off-by: Drew Newberry <[email protected]>
Signed-off-by: Prekshi Vyas <[email protected]>
* fix(ci): lock nextest for Windows ARM64 Signed-off-by: Drew Newberry <[email protected]> * fix(docker): preserve GPU access in sandbox runtime Signed-off-by: Drew Newberry <[email protected]> * fix(windows): restore host proxy identity binding Signed-off-by: Drew Newberry <[email protected]> * fix(windows): satisfy cross-platform network lint Signed-off-by: Drew Newberry <[email protected]> * fix(windows): satisfy MXC lint Signed-off-by: Drew Newberry <[email protected]> * fix(windows): exclude Unix supervisor runtime Signed-off-by: Drew Newberry <[email protected]> * fix(mxc): satisfy Windows test lint Signed-off-by: Drew Newberry <[email protected]> * fix(windows): escape proxy test policy paths Signed-off-by: Drew Newberry <[email protected]> * fix(sandbox): accept admitted GPU runtime groups Signed-off-by: Drew Newberry <[email protected]> * test(docker): serialize proxy pipeline scenarios Signed-off-by: Drew Newberry <[email protected]> --------- Signed-off-by: Drew Newberry <[email protected]>
…3239) * ci(release): advance seeded prereleases daily at Zurich time Signed-off-by: Simon Scatton <[email protected]> * ci(release): schedule prereleases on weekdays Signed-off-by: Simon Scatton <[email protected]> --------- Signed-off-by: Simon Scatton <[email protected]>
…IA#3371) * test(tmachine): add Docker VM scenario Signed-off-by: Simon Scatton <[email protected]> * test(tmachine): add portable container scenarios Signed-off-by: Simon Scatton <[email protected]> * chore(tmachine): isolate downloaded Ansible roles Signed-off-by: Simon Scatton <[email protected]> * test(tmachine): increase VM resources Signed-off-by: Simon Scatton <[email protected]> * test(tmachine): improve artifact builds and diagnostics Signed-off-by: Simon Scatton <[email protected]> * fix(nix): pin tmachine runtime on macOS Signed-off-by: Evan Lezar <[email protected]> * feat(tests): enable tty and fix supervisor image path * fix(nix): isolate testing tools from default shell Signed-off-by: Simon Scatton <[email protected]> * fix(tmachine): initialize test runner working directory Signed-off-by: Simon Scatton <[email protected]> * fix(tmachine): include Ansible sources in layer cache keys Signed-off-by: Simon Scatton <[email protected]> * fix(tmachine): build and load separate runtime images Signed-off-by: Simon Scatton <[email protected]> * fix(tmachine): use local runtime images for Docker Signed-off-by: Simon Scatton <[email protected]> --------- Signed-off-by: Simon Scatton <[email protected]> Signed-off-by: Evan Lezar <[email protected]> Co-authored-by: Evan Lezar <[email protected]>
* test(conformance): package CLI smoke test archive Signed-off-by: Evan Lezar <[email protected]> * test(tmachine): execute nextest archives in guests Signed-off-by: Evan Lezar <[email protected]> --------- Signed-off-by: Evan Lezar <[email protected]>
0819e08 to
7dcc44d
Compare
Signed-off-by: Kris Hicks <[email protected]>
setuptools-scm can select jj's Git-bridge dev tag when uv resolves the local package. Pin a development-only version for every Python task that performs that resolution. The 0.0.0 value is valid local editable-package metadata for development tasks; it is neither a release version nor a Git tag. Wheel builds remain unpinned and derive their published version from the actual release tag. Signed-off-by: Kris Hicks <[email protected]>
…VIDIA#3334) * chore(policy): restart schema implementation Signed-off-by: Johnny Greco <[email protected]> * feat(policy-schema): add canonical authored policy model Signed-off-by: Johnny Greco <[email protected]> * refactor(policy): use canonical authored schema Signed-off-by: Johnny Greco <[email protected]> * refactor(prover): project canonical policy documents Signed-off-by: Johnny Greco <[email protected]> * docs(policy): describe shared schema boundary Signed-off-by: Johnny Greco <[email protected]> * fix(policy): close reviewed parser gaps Signed-off-by: Johnny Greco <[email protected]> * fix(policy-schema): fail closed on unsupported fields Signed-off-by: Johnny Greco <[email protected]> * fix(policy): preserve partial process identities Signed-off-by: Johnny Greco <[email protected]> * fix(policy-schema): harden authored policy inspection Signed-off-by: Johnny Greco <[email protected]> * refactor(policy): rename policy schema crate Signed-off-by: Johnny Greco <[email protected]> * revert(policy): restore policy schema crate Signed-off-by: Johnny Greco <[email protected]> * test(e2e): serialize OIDC PKCE scenarios Signed-off-by: Johnny Greco <[email protected]> --------- Signed-off-by: Johnny Greco <[email protected]>
* fix(ci): restore Windows build checks Signed-off-by: Piotr Mlocek <[email protected]> * test(windows): fix real MXC clippy warnings Signed-off-by: Piotr Mlocek <[email protected]> * test(windows): fix native test execution Signed-off-by: Piotr Mlocek <[email protected]> * ci(gator): require Windows checks for support changes Signed-off-by: Piotr Mlocek <[email protected]> * docs(gator): remove arbitrary line breaks Signed-off-by: Piotr Mlocek <[email protected]> * chore(ci): drop superseded Windows fixes Signed-off-by: Piotr Mlocek <[email protected]> * chore(mise): refresh Windows ARM64 lock metadata Signed-off-by: Piotr Mlocek <[email protected]> --------- Signed-off-by: Piotr Mlocek <[email protected]>
* refactor(proto)!: use well-known time types Signed-off-by: Derek Carr <[email protected]> * fix(proto): preserve time migration behavior Signed-off-by: Derek Carr <[email protected]> * fix(proto): preserve timestamp boundary semantics Signed-off-by: Derek Carr <[email protected]> * fix(proto): convert sandbox token expiry to timestamp Signed-off-by: Derek Carr <[email protected]> * fix(proto): preserve time compatibility semantics Signed-off-by: Derek Carr <[email protected]> * fix(proto): preserve exact endpoint and profile times Signed-off-by: Derek Carr <[email protected]> * test(e2e): use duration for interactive exec timeout Signed-off-by: Derek Carr <[email protected]> * fix(sdk-go)!: remove legacy profile duration fields BREAKING CHANGE: Go provider profile callers must use RefreshBefore, MaxLifetime, and CacheTTL with ProfileDuration instead of the whole-second fields. Signed-off-by: Derek Carr <[email protected]> --------- Signed-off-by: Derek Carr <[email protected]>
…t semantics (NVIDIA#3317) * feat(api): return typed deletion outcomes with explicit missing-target semantics Implement phase 2 of NVIDIA#3051 across the public gateway API and first-party SDKs. Preserve asynchronous sandbox deletion and observed resource identities, reserve legacy wire fields, and document the coordinated migration. Signed-off-by: Mrunal Patel <[email protected]> * fix(sdk): bind deletion waits to sandbox identity Track accepted deletions by original sandbox identity in Rust and TypeScript. Preserve name-only waits and cover replacement races and lookup failures. Merge the phase-one cleanup fix and adapt its interceptor regressions to typed deletion outcomes. Refs NVIDIA#3051. Signed-off-by: Mrunal Patel <[email protected]> * test(e2e): accept asynchronous stopped sandbox deletion Allow either completed or accepted deletion output, then continue polling for actual sandbox absence. This preserves the lifecycle assertion under the phase-two deletion contract. Refs NVIDIA#3051. Signed-off-by: Mrunal Patel <[email protected]> --------- Signed-off-by: Mrunal Patel <[email protected]>
) * test(podman): cover user namespace configurations Signed-off-by: Evan Lezar <[email protected]> * fix(podman): support keep-id runtime groups Signed-off-by: Evan Lezar <[email protected]> refactor(podman): generalize keep-id group handling Signed-off-by: Evan Lezar <[email protected]> * ci(podman): run driver integration tests Signed-off-by: Evan Lezar <[email protected]> --------- Signed-off-by: Evan Lezar <[email protected]>
Signed-off-by: Drew Newberry <[email protected]>
Signed-off-by: Drew Newberry <[email protected]>
Signed-off-by: divesh <[email protected]>
…A#3580) * fix(vm): scope GPU filesystem enrichment to assigned workloads Signed-off-by: Drew Newberry <[email protected]> * refactor(supervisor): clarify proxy baseline enrichment Signed-off-by: Drew Newberry <[email protected]> --------- Signed-off-by: Drew Newberry <[email protected]>
…col (NVIDIA#3456) CA certificates are PEM-encoded text. Using String instead of Vec<u8> avoids base64 overhead in the JSON wire format, keeping large CA bundles within the 1 MiB control frame limit without needing to raise it. Signed-off-by: Florent Benoit <[email protected]>
) Signed-off-by: Evan Lezar <[email protected]>
Signed-off-by: Evan Lezar <[email protected]>
…ath (NVIDIA#3544) The VM driver bound control.sock and ssh.sock inside the per-sandbox state directory, which defaults to $HOME/.local/state/openshell/vm-driver/sandboxes/<uuid>/. On macOS the sun_path field of sockaddr_un holds 104 bytes, so a normal home directory plus the sandbox UUID already pushes the socket path past the limit and bind fails with "path too long". Bind both sockets under a short driver-owned namespace instead: /tmp/os-<uid>-<128-bit-hex>/<sandbox-id>/. The worst case with a UUID sandbox id is 101 bytes. Security properties of the new location: - The root is created with mkdir mode 0700 and a random 128-bit name, retrying on EEXIST, so a local user cannot pre-create the path to block the driver or plant a symlink. - The root's directory FD is held for the driver lifetime. Per-sandbox leaves are created and removed with mkdirat/unlinkat relative to that FD, so there is no path re-resolution between check and mutation. - Leaf creation rejects any sandbox id whose socket path would still exceed sun_path, returning a clear error instead of a bind failure. The driver removes the whole root on shutdown so restarts do not accumulate orphaned roots in /tmp. VM children are kill_on_drop, so no socket is live at that point. Restore-on-restart goes through the normal launch path and recreates leaves under the new root. Signed-off-by: Florent Benoit <[email protected]>
a95fb75 to
1c1ca77
Compare
Signed-off-by: Jim Meyer <[email protected]>
…2e-kubernetes (NVIDIA#3626) PRs labeled test:e2e-kubernetes now run the Kubernetes HA suite and the Kubernetes credential-driver suite (Kubernetes Secrets and Vault). Both stay optional and off in merge groups. - Read the test:e2e-kubernetes label for the HA and credential-driver lanes in Branch E2E Checks. - Point gator at test:e2e for Helm and Kubernetes coverage and at test:e2e-kubernetes for gateway high availability and credential driver storage. Refs NVIDIA#3481 Signed-off-by: Kris Hicks <[email protected]>
Bumps [anyio](https://github.com/agronholm/anyio) from 4.13.0 to 4.14.2. - [Release notes](https://github.com/agronholm/anyio/releases) - [Commits](agronholm/anyio@4.13.0...4.14.2) --- updated-dependencies: - dependency-name: anyio dependency-version: 4.14.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
… available (NVIDIA#3572) * fix(supervisor): explain unavailable main terminal attachments Signed-off-by: Piotr Mlocek <[email protected]> * fix(supervisor): reset cursor after terminal attachment errors Signed-off-by: Piotr Mlocek <[email protected]> * fix(supervisor): format read-only warnings for terminal clients Signed-off-by: Piotr Mlocek <[email protected]> * docs: drop terminal attachment documentation additions Signed-off-by: Piotr Mlocek <[email protected]> * fix(supervisor): exit read-only viewers on Ctrl-C Signed-off-by: Piotr Mlocek <[email protected]> * docs: simplify read-only viewer Ctrl-C guidance Signed-off-by: Piotr Mlocek <[email protected]> --------- Signed-off-by: Piotr Mlocek <[email protected]>
Signed-off-by: Mrunal Patel <[email protected]>
…#3635) * fix(server): retry runtime identity persistence on sandbox create With multiple gateway replicas, another replica can update a new sandbox record between the create path's read and its compare-and-swap write of the runtime identity. The create path made one attempt, so the conflict failed the request and deleted the backend sandbox. Persist the identity through the same retrying helper that start and startup recovery use, which rereads the record and retries while the sandbox stays in the same generation and a Provisioning or Ready phase. Signed-off-by: Kris Hicks <[email protected]> * ci(e2e): run Kubernetes HA tests one at a time The two HA tests scale and roll the shared gateway Deployment. Their in-process lock does not apply under nextest, which runs each test in its own process, so one test could delete a gateway pod while the other was executing through it. Put both tests in a nextest test group limited to one thread in the e2e-kubernetes profile. The override matches test names because a binary() filter fails in workspaces that lack the HA test binary. Signed-off-by: Kris Hicks <[email protected]> --------- Signed-off-by: Kris Hicks <[email protected]>
* fix(network): honor HTTP response connection closure Signed-off-by: Drew Newberry <[email protected]> * test(network): fix EOF fixture socket setup Signed-off-by: Drew Newberry <[email protected]> * test(network): keep pipeline probe response reusable Signed-off-by: Drew Newberry <[email protected]> --------- Signed-off-by: Drew Newberry <[email protected]>
…#3279) * fix(pagination): document list contract and harden SDK pagers Signed-off-by: Gaizka Menendez Hernandez <[email protected]> * fix(pagination): bound pager token history Signed-off-by: Gaizka Menendez Hernandez <[email protected]> * fix(pagination): preflight token history limits Signed-off-by: Gaizka Menendez Hernandez <[email protected]> * fix(pagination): paginate sandbox providers Signed-off-by: Gaizka Menendez Hernandez <[email protected]> * fix(pagination): harden TypeScript pager Signed-off-by: Gaizka Menendez Hernandez <[email protected]> * fix(pagination): expose provider pagers in SDKs Signed-off-by: Gaizka Menendez Hernandez <[email protected]> * docs(pagination): describe a uniform list contract Signed-off-by: Gaizka Menendez Hernandez <[email protected]> * fix(pagination): use stable provider cursors Signed-off-by: Gaizka Menendez Hernandez <[email protected]> * docs(pagination): clarify mutation semantics Signed-off-by: Gaizka Menendez Hernandez <[email protected]> * fix(cli): expose sandbox provider pagination Signed-off-by: Gaizka Menendez Hernandez <[email protected]> * fix(proto): refresh pagination schema inventory Signed-off-by: Gaizka Menendez Hernandez <[email protected]> * fix(proto): refresh rebased schema inventory Signed-off-by: Gaizka Menendez Hernandez <[email protected]> Signed-off-by: Kris Hicks <[email protected]> --------- Signed-off-by: Gaizka Menendez Hernandez <[email protected]> Signed-off-by: Kris Hicks <[email protected]>
* docs: add 0.1.0 upgrade guide outline Signed-off-by: Drew Newberry <[email protected]> * docs: add upgrade change provenance Signed-off-by: Drew Newberry <[email protected]> * docs: update 0.1.0 upgrade guidance Signed-off-by: Drew Newberry <[email protected]> * docs: move upgrade navigation below security Signed-off-by: Drew Newberry <[email protected]> * docs: remove release notes page Signed-off-by: Drew Newberry <[email protected]> * docs: announce OpenShell 0.1.0 Signed-off-by: Drew Newberry <[email protected]> * docs: reorganize guides and require user-owned images Signed-off-by: Drew Newberry <[email protected]> * docs: reorganize navigation around core concepts Signed-off-by: Drew Newberry <[email protected]> * docs: simplify navigation and tutorial catalog Signed-off-by: Drew Newberry <[email protected]> * docs: refine 0.1.0 release highlights Signed-off-by: Drew Newberry <[email protected]> * docs: align navigation and 0.1.0 guidance Signed-off-by: Drew Newberry <[email protected]> --------- Signed-off-by: Drew Newberry <[email protected]>
…#3633) * fix(security): pin supplied executable identity chains Signed-off-by: Jim Meyer <[email protected]> * docs(security): document executable identity chain pinning Signed-off-by: Jim Meyer <[email protected]> * fix(binary-identity): compile Linux ancestry hashing Signed-off-by: Jim Meyer <[email protected]> * test(binary-identity): avoid cross-label ancestry fixture Signed-off-by: Jim Meyer <[email protected]> * test(e2e): choose distinct denied TCP port Fix flaky test due to sequential port assignment on MacOS Signed-off-by: Jim Meyer <[email protected]> * fix(identity): bound executable evidence cache Reject identity chains atomically when the supervisor cache reaches its hard limit, and preserve existing pins without eviction. Classify malformed or conflicting evidence separately from policy denials at the staged TCP boundary. Signed-off-by: Jim Meyer <[email protected]> --------- Signed-off-by: Jim Meyer <[email protected]>
* fix(driver-kubernetes-secrets)!: store provider credentials in one namespace The Kubernetes Secrets credential driver now stores every credential in its configured namespace in all workspace modes and rejects handles that reference any other namespace before contacting the Kubernetes API. The gateway reaches credential Secrets through the Role in that namespace; this allows removing the Secret rules from the ClusterRole. - Remove the workspace_mode, gateway_id, and allow_reference_namespace driver settings and stop rendering them from Helm. Configurations that set them fail at startup. Existing credential state is not migrated. - Add server.credentialDrivers.kubernetesSecrets.createNamespace to provision a dedicated credential namespace. The namespace is kept on uninstall, adopted by a reinstall of the same release, and left untouched when something else owns it. - Update the gateway config reference, Kubernetes setup docs, 0.1.0 upgrade guide, compute-runtime architecture, and cluster debugging skill. Signed-off-by: Kris Hicks <[email protected]> * fix(helm): reduce gateway Secret permissions Remove the gateway's Secret list permission in every workspace mode and grant source Secret reads through a Role in the sandbox namespace. Bootstrap Secret cleanup deletes Secrets by exact name instead of listing them. - Grant get on the copied client TLS and image-pull Secrets through a Role in the sandbox namespace. The ClusterRole keeps get and patch on those names for the ownership check and server-side apply into workspace namespaces. - Delete sandbox and supervisor bootstrap Secrets by exact name, derived from the runtime generation recorded on the Sandbox and, on restart, the target generation, tolerating 404. The generation annotation is cleared only after cleanup succeeds, and each bootstrap Secret has a Pod owner reference, so garbage collection removes any generation the driver does not name. - Drop Secret list from the ClusterRole and the shared-mode sandbox Role. - Extend the managed e2e RBAC checks to Secret list. - Update the Kubernetes setup and sandbox runtime docs, compute-runtime architecture, and cluster debugging skill. Signed-off-by: Kris Hicks <[email protected]> * fix(driver-kubernetes): stage workspace Secrets per runtime generation Every Secret the Kubernetes driver writes into a workspace namespace is now scoped to one sandbox runtime generation, immutable, and created with create only, so the gateway never reads, patches, or adopts an existing Secret there. This removes the gateway's cluster-wide get and patch on the copied client TLS and image-pull Secret names. - In managed mode, create an immutable copy of each configured image-pull Secret per generation, named os-pull-<id>-<generation>-<n> and owned by the generation's workload and supervisor Pods. Pods and the restarted Sandbox template reference those names, and generation cleanup deletes them by name. A Secret already holding a generation name fails the create. - Outside shared mode, stage the gateway client TLS material into the supervisor bootstrap Secret instead of copying the client TLS Secret into the workspace namespace. - Remove the fixed-name TLS and image-pull copies, the target ownership read, and the ClusterRole get and patch rule on the copied names. Source reads stay in the sandbox-namespace Role. - Update the managed e2e to expect generation image-pull Secrets and client TLS material in the supervisor bootstrap Secret, and to check that the gateway cannot read the copied names in workspace namespaces. - Update the gateway config and compute driver references, Kubernetes setup and sandbox runtime docs, compute-runtime architecture, driver README, and cluster debugging skill. Signed-off-by: Kris Hicks <[email protected]> * fix(helm)!: grant operator-mode Secret permissions through the workspace chart The operator-mode gateway ClusterRole grants no Secret permissions. The openshell-workspace chart Role, installed in each operator-managed namespace, grants the gateway create and delete on Secrets for sandbox runtime generations. Operator-managed namespaces require the workspace chart. - Fail the chart tests on any ClusterRole rule that includes Secrets in operator and shared modes. - Install the workspace chart when the operator e2e provisions a namespace, and assert that the gateway has no Secret permissions in a namespace without it. - Update the Kubernetes setup docs, 0.1.0 upgrade guide, compute-runtime architecture, and cluster debugging skill. Signed-off-by: Kris Hicks <[email protected]> --------- Signed-off-by: Kris Hicks <[email protected]>
Signed-off-by: Bobbins228 <[email protected]> Signed-off-by: Kris Hicks <[email protected]>
Signed-off-by: Bobbins228 <[email protected]>
Signed-off-by: Bobbins228 <[email protected]> Signed-off-by: Kris Hicks <[email protected]>
Signed-off-by: Bobbins228 <[email protected]>
Signed-off-by: Bobbins228 <[email protected]>
8624632 to
d6a9792
Compare
Signed-off-by: Kris Hicks <[email protected]>
|
This pull request has had no activity for 14 days and is now marked stale. It may be closed in 7 days if there is no further activity. |
Add backward-compatible gateway and supervisor image overrides to the container and Kubernetes test wrappers. Preserve registry and tag defaults, support complete tagged or digest-pinned references, and document the new behavior.
Closes NVIDIA#3315
Summary
Related Issue
Changes
Testing
mise run pre-commitpassesChecklist