Skip to content

Commit aa2fa1f

Browse files
committed
chore(build): merge main into remove-bundled-z3
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
2 parents 2fd3279 + 7139df8 commit aa2fa1f

981 files changed

Lines changed: 169430 additions & 56270 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.agents/skills/build-openshell-mxc-windows/SKILL.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,10 @@ compatibility under emulation is not part of these tasks. The aggregate
214214
commands above on an ARM64 host.
215215

216216
The repository-wide `mise run pre-commit` task is also supported on Windows.
217+
Run `rust:lockfiles:check`, `sdk:ts:ci`, `go:ci`, and `test:e2e-parity` through
218+
the Windows-aware tasks when validating those surfaces. Do not count the Go
219+
Windows ARM64 race-detector exclusion or POSIX permission-bit skips as security
220+
coverage. SDK test dependencies must remain at their lockfile versions.
217221
Its Rust check, Clippy, and test dependencies enter the same MSVC environment
218222
for the native host target and use an inherited compiler wrapper when it is
219223
available. Linux glibc

‎.agents/skills/build-openshell-mxc-windows/reference.md‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,16 +112,18 @@ top-level workspace targets for check/test:
112112
--exclude openshell-driver-vault
113113
--exclude openshell-driver-vm
114114
--exclude openshell-sandbox
115-
--exclude openshell-supervisor-network
115+
--exclude openshell-supervisor
116116
--exclude openshell-supervisor-process
117117
--exclude openshell-vfio
118118
```
119119

120120
The gateway keeps platform configuration and unsupported-operation contracts
121-
without depending on the Docker, Kubernetes, Podman, sandbox supervisor,
122-
process supervisor, VM, or VFIO runtime crates. The Kubernetes Secrets and
123-
Vault libraries still compile as gateway dependencies; only their standalone
124-
Unix-socket binaries and package-level tests are excluded as top-level targets.
121+
without depending on the Docker, Kubernetes, Podman, sandbox runtime,
122+
standalone supervisor, supervisor process runtime, VM, or VFIO crates. The MXC
123+
driver does depend on the cross-platform supervisor network library for its host
124+
egress proxy. The Kubernetes Secrets and Vault libraries still compile as
125+
gateway dependencies; only their standalone Unix-socket binaries and
126+
package-level tests are excluded as top-level targets.
125127

126128
## Common Errors
127129

‎.agents/skills/helm-dev-environment/SKILL.md‎

Lines changed: 178 additions & 59 deletions
Large diffs are not rendered by default.

‎.agents/skills/launch-openshell-gator/SKILL.md‎

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ For gator's PR/issue validation policy, load `gator-gate` inside the launched sa
1313

1414
## Non-Negotiable Rules
1515

16-
- Keep normal gator launches supervised: use `--watch --background` and let the in-sandbox supervisor own sleeping and relaunching bounded cycles.
16+
- Keep normal gator launches supervised: use `--watch` and let the in-sandbox supervisor own sleeping and relaunching bounded cycles.
1717
- Do not add passive `sleep` loops in the operator session to watch gator. Check logs or status once, then report the current state or launch a proper watcher outside the model session only when explicitly asked.
1818
- Do not change the default gator model in `scripts/agents/gator/agent.yaml` for experiments. Use `CODEX_MODEL=...` and, if needed, a temporary `--from` Docker context or `--codex-bin` override.
1919
- Do not push to contributor branches, approve, merge, post `/ok to test`, or broaden gator scope unless the operator explicitly authorized that action.
@@ -34,7 +34,6 @@ For gator's PR/issue validation policy, load `gator-gate` inside the launched sa
3434
| `scripts/agents/gator/bin/validate-review-findings` | Enforces the blocker evidence schema and downgrades unsupported hypotheses. |
3535
| `scripts/agents/gator/prompts/gator.md` | Rendered top-level prompt template baked into the payload. |
3636
| `scripts/agents/gator/skills/gator-gate/SKILL.md` | In-sandbox gator state-machine skill. |
37-
| `scripts/agents/gator/logs/` | Background launch and supervisor logs. |
3837

3938
## Preflight
4039

@@ -156,11 +155,12 @@ sandbox_name="gator-pr-${pr_number}-supervised"
156155
--gateway "$gateway_name" \
157156
--name "$sandbox_name" \
158157
--watch \
159-
--background \
160158
"Review and monitor PR #${pr_number} through the gator-gate workflow. Scope this invocation only to PR #${pr_number}."
161159
```
162160

163-
The launcher queries gateway's selected compute driver, builds gator image in matching Docker or Podman image store, stages immutable payload, imports provider profiles, configures provider credentials and refresh, creates and uploads sandbox payload, then starts agent supervisor with `sandbox exec`. It writes a background log under `scripts/agents/gator/logs/`. `CONTAINER_ENGINE`, when set, must match gateway driver.
161+
The launcher queries the gateway's selected compute driver, builds the gator image in the matching Docker or Podman image store, stages the immutable payload, imports provider profiles, configures provider credentials and refresh, and starts the agent supervisor as the sandbox's canonical main process. The detached main process survives loss of the host CLI connection and reconnects to a restarted gateway. Unless `--keep` is set, the sandbox is marked ephemeral so the gateway deletes it after the supervisor exits. `CONTAINER_ENGINE`, when set, must match the gateway driver.
162+
163+
The launcher streams image-build and provisioning output until the detached workload is ready, then exits. Use `openshell logs <sandbox-name>` or the TUI for runtime output.
164164

165165
### Launch An Issue Or Issue/PR Pair
166166

@@ -177,7 +177,6 @@ sandbox_name="gator-issue-${issue_number}-supervised"
177177
--gateway "$gateway_name" \
178178
--name "$sandbox_name" \
179179
--watch \
180-
--background \
181180
"Run gator on issue #${issue_number}. Scope this invocation only to issue #${issue_number}."
182181
```
183182

@@ -198,7 +197,6 @@ sandbox_name="gator-pr-${pr_number}-supervised"
198197
--gateway "$gateway_name" \
199198
--name "$sandbox_name" \
200199
--watch \
201-
--background \
202200
"Review and monitor PR #${pr_number} with linked issue #${issue_number} through the gator-gate workflow. Scope this invocation only to PR #${pr_number} and issue #${issue_number}."
203201
```
204202

@@ -219,7 +217,6 @@ sandbox_name="gator-pr-${pr_number}-supervised"
219217
--gateway "$gateway_name" \
220218
--name "$sandbox_name" \
221219
--watch \
222-
--background \
223220
"Review and monitor PR #${pr_number} through the gator-gate workflow. Scope this invocation only to PR #${pr_number}. The operator explicitly authorizes applying the test:e2e label, posting /ok to test for the current head SHA, and rerunning the relevant current-head workflow when the E2E Label Help bot says that is required."
224221
```
225222

@@ -241,7 +238,6 @@ CODEX_MODEL=gpt-5.6-sol \
241238
--gateway "$gateway_name" \
242239
--name "$sandbox_name" \
243240
--watch \
244-
--background \
245241
"Review and monitor PR #${pr_number} through the gator-gate workflow. Scope this invocation only to PR #${pr_number}. This launch is intentionally testing Codex model gpt-5.6-sol via the CLI launcher."
246242
```
247243

@@ -266,27 +262,22 @@ CODEX_MODEL=gpt-5.6-sol \
266262
--name "$sandbox_name" \
267263
--from "$tmp_context" \
268264
--watch \
269-
--background \
270265
"Review and monitor PR #${pr_number} through the gator-gate workflow. Scope this invocation only to PR #${pr_number}."
271266
```
272267

273268
## Monitoring
274269

275270
### Read The Launch Result
276271

277-
The launcher prints the log path when `--background` is used:
278-
279-
```text
280-
Started in background. Log: scripts/agents/gator/logs/<sandbox-name>.log
281-
```
282-
283-
Read that file directly. Important markers:
272+
The launcher streams image-build and provisioning output to the terminal. Important markers:
284273

285274
- `Built image ...` means the local image build completed.
286275
- `Created sandbox: <name>` means OpenShell accepted the sandbox.
287276
- `openshell-agent: starting watch cycle` means the in-sandbox supervisor began a bounded cycle.
288277
- `OpenAI Codex v...` plus `model: ...` confirms the Codex CLI and model actually used.
289278
- `OPENSHELL_AGENT_RESULT {...}` is the bounded-cycle sentinel. In watch mode, the supervisor sleeps and relaunches after this line.
279+
- `/sandbox/.openshell-agent/status.json` is the atomic current state snapshot. Its `result.notes` field is Gator's plain-language diagnosis and next action for that cycle.
280+
- `/sandbox/.openshell-agent/history.jsonl` contains the latest 100 supervisor transitions, including active-cycle starts and completed cycle results.
290281
- `openshell-agent: still running watch cycle ...` is a heartbeat during long active model cycles.
291282
- `review_feedback_lookup_failed` means Gator could not build the required cross-SHA feedback ledger and deliberately skipped a context-free review.
292283

@@ -314,6 +305,11 @@ If `sandbox get` is not supported by the local CLI shape, use `openshell sandbox
314305
| `status=terminal_failure` | Unrecoverable or stale immutable payload. | Inspect the reason; rebuild/relaunch for `stale_gator_payload`. |
315306
| `status=complete` | Target closed, merged, or one-shot complete. | Delete sandbox if no longer needed. |
316307

308+
Prefer the state snapshot over scraping transient `/tmp` cycle output. Use the
309+
history file to tell whether a failure is repeating or whether the supervisor
310+
has begun a fresh cycle. Runtime logs remain useful for full command output and
311+
transport diagnostics.
312+
317313
## Restarting A Gator
318314

319315
Restart when the payload must change, the sandbox is wedged without a sentinel, the model/tooling version changed, or a transient failure repeats past the useful retry point.
@@ -339,7 +335,6 @@ openshell --gateway "$gateway_name" sandbox delete "$sandbox_name"
339335
--gateway "$gateway_name" \
340336
--name "$sandbox_name" \
341337
--watch \
342-
--background \
343338
"<same scoped operator prompt, updated only with the reason for relaunch>"
344339
```
345340

@@ -401,7 +396,6 @@ When you launch or inspect gator, report:
401396

402397
- Sandbox name.
403398
- Gateway name.
404-
- Log path.
405399
- Target issue/PR scope.
406400
- Harness and model when relevant.
407401
- Whether image build and sandbox creation succeeded.

‎.agents/skills/sbom/SKILL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ The OpenShell SBOM tooling produces source-tree CycloneDX JSON SBOMs using Syft,
1515

1616
SBOMs are **release artifacts only** -- they are generated on demand and not committed to the repository. Output lands in `deploy/sbom/output/` (gitignored).
1717

18-
Pushed gateway and supervisor images carry an SPDX SBOM and minimal SLSA provenance as OCI attestations. Branch E2E, Release Dev, and Release Tag image binaries embed cargo-auditable metadata, so their image SBOMs include linked Rust crates.
18+
Pushed gateway, sandbox, and supervisor images carry an SPDX SBOM and minimal SLSA provenance as OCI attestations. Branch E2E, Release Dev, and Release Tag image binaries embed cargo-auditable metadata, so their image SBOMs include linked Rust crates.
1919

2020
## Prerequisites
2121

‎.agents/skills/sync-agent-infra/SKILL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Use this map when product behavior, commands, or development workflows change. I
4545
| Sandbox policy schema, presets, or enforcement behavior | `generate-sandbox-policy`, `openshell-cli` |
4646
| Supervisor middleware policy, registrations, runtime, or failure behavior | `generate-sandbox-policy`, `openshell-cli`, `debug-openshell-cluster` |
4747
| Gateway deployment, Helm, runtime drivers, or health checks | `debug-openshell-cluster`, `helm-dev-environment` |
48-
| Inference providers, native model endpoints, or migration from `inference.local` | `debug-inference`, `openshell-cli`, `generate-sandbox-policy` |
48+
| Inference providers, native model endpoints, or migration from the retired managed endpoint | `debug-inference`, `openshell-cli`, `generate-sandbox-policy` |
4949
| TUI architecture, navigation, data fetching, or UX | `tui-development` |
5050
| Release artifacts or post-publish smoke coverage | `test-release-canary` |
5151
| GitHub Actions workflows, required checks, or CI diagnostics | `watch-github-actions`; also `test-release-canary` for release smoke coverage |

‎.agents/skills/test-release-canary/SKILL.md‎

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,20 @@ The Release Canary (`.github/workflows/release-canary.yml`) smoke-tests the arti
1313

1414
| Job | Runner | Verifies |
1515
|---|---|---|
16-
| `macos` | `macos-latest-xlarge` | `install.sh` resolves the Homebrew formula, brew installs the cask, and `openshell status` reaches the brew-services–backed local gateway with the VM driver. |
17-
| `ubuntu` | `ubuntu-latest` | `install.sh` installs the Debian package, the post-install systemd user service starts, and `openshell status` reaches the local gateway with the Docker driver. |
18-
| `fedora` | `fedora:latest` container | `install.sh` installs the RPM packages, the local gateway starts under Podman, and `openshell status` succeeds. |
19-
| `ubuntu-snap` | `ubuntu-latest` | Downloads the Snap artifact from Release Dev, installs it with `--dangerous`, connects the required interfaces, and waits up to 30 seconds for the recovered local gateway. |
20-
| `kubernetes` | `ubuntu-latest` + kind | `helm install oci://ghcr.io/nvidia/openshell/helm-chart --version 0.0.0-dev` succeeds in a kind cluster, the gateway pod becomes Ready, port-forward exposes 8080, and the released CLI registers the in-cluster gateway and runs `openshell status` against it. |
16+
| `macos` | `macos-latest-xlarge` | Installs the dev Homebrew artifacts, reaches the VM gateway, and creates, executes in, and deletes a sandbox. |
17+
| `ubuntu` | `ubuntu-latest` | Installs the dev Debian package, reaches the Docker gateway, and creates, executes in, and deletes a sandbox. |
18+
| `fedora` | `fedora:latest` container | Installs the dev RPM packages, reaches the Podman gateway, and creates, executes in, and deletes a sandbox. |
19+
| `ubuntu-snap` | `ubuntu-latest` | Installs the Release Dev Snap, connects its interfaces, reaches the Docker gateway, and creates, executes in, and deletes a sandbox. |
20+
| `kubernetes` | `ubuntu-latest` + kind | Installs the dev Helm chart, reaches the in-cluster gateway, and creates, executes in, and deletes a sandbox using the published runtime images. |
2121

2222
All canary jobs disable anonymous OpenShell telemetry. Host package jobs inject
2323
`OPENSHELL_TELEMETRY_ENABLED=false` through the service environment, and the
2424
Kubernetes job installs with `server.telemetryEnabled=false`, so smoke traffic
2525
does not contribute to product usage metrics.
2626

27-
`install.sh` defaults to the *latest tagged* release — the canary is therefore checking that the most recent public release still installs, not the just-published `dev` build. The `kubernetes` job is the exception: it pins to `0.0.0-dev` chart + `:dev` images.
27+
The workflow sets `OPENSHELL_VERSION=dev`, so every `install.sh` job consumes the
28+
rolling dev release produced by the triggering workflow. Kubernetes pins the
29+
matching `0.0.0-dev` chart and `:dev` images.
2830

2931
The host-package jobs exercise fresh installs, not upgrades from a persisted
3032
schema-v1 gateway config. Validate Homebrew and RPM exact-default migration with
@@ -83,7 +85,7 @@ gh run view <run-id> --log-failed
8385

8486
## Iterating on the canary itself
8587

86-
When you change `release-canary.yml` on a branch, a manual dispatch on that branch tests *your branch's workflow logic* against *main's published artifacts* (`0.0.0-dev` chart, `:dev` images, latest tagged install.sh assets). This is what you want for iterating on the canary — you're validating that the canary still works against known-good artifacts.
88+
When you change `release-canary.yml` on a branch, a manual dispatch on that branch tests *your branch's workflow logic* against *main's published dev artifacts* (`0.0.0-dev` chart, `:dev` images, and the `dev` GitHub release). This is what you want for iterating on the canary — you're validating that the canary still works against known-good artifacts.
8789

8890
Note `install.sh` is pulled from `raw.githubusercontent.com/NVIDIA/OpenShell/${head_sha}/install.sh`, so changes to `install.sh` on your branch *are* exercised even though the binaries it downloads are from the latest public tag.
8991

@@ -92,7 +94,7 @@ Note `install.sh` is pulled from `raw.githubusercontent.com/NVIDIA/OpenShell/${h
9294
`Release Dev` publishes two chart versions for every dev build (see `.github/actions/release-helm-oci/action.yml:89-102`):
9395

9496
- `oci://ghcr.io/nvidia/openshell/helm-chart:0.0.0-dev` — floating, overwritten on every main push.
95-
- `oci://ghcr.io/nvidia/openshell/helm-chart:0.0.0-dev.<sha>` — immutable, `appVersion` set to the same SHA so it pulls `ghcr.io/nvidia/openshell/gateway:<sha>` and `:supervisor:<sha>`.
97+
- `oci://ghcr.io/nvidia/openshell/helm-chart:0.0.0-dev.<sha>` — immutable, `appVersion` set to the same SHA so it pulls the matching `gateway`, `sandbox`, and `supervisor` images.
9698

9799
To smoke-test the chart for a specific dev build, dispatch `Release Dev` on the branch first, then run the kind canary steps locally pointed at the SHA-pinned chart (see "Local kind reproduction" below). The release-canary workflow itself does not currently expose `chart_version` / `image_tag` inputs.
98100

@@ -110,6 +112,7 @@ helm install openshell oci://ghcr.io/nvidia/openshell/helm-chart \
110112
--namespace openshell --create-namespace \
111113
--set server.disableTls=true \
112114
--set server.telemetryEnabled=false \
115+
--set supervisor.sandboxRuntime.networkPolicyEnforced=true \
113116
--wait --timeout 5m
114117
115118
kubectl wait --namespace openshell \
@@ -134,7 +137,8 @@ Loopback registration auto-derives the gateway name to `openshell` if `--name` i
134137

135138
| Symptom | Likely cause | Where to look |
136139
|---|---|---|
137-
| `macos`/`ubuntu`/`fedora` job fails on `install.sh` | Latest tagged release missing an asset, checksum mismatch, or `install.sh` regression on this branch. | Job log around the `curl … install.sh \| sh` step. |
140+
| `macos`/`ubuntu`/`fedora` job fails on `install.sh` | Dev release missing an asset, checksum mismatch, or `install.sh` regression on this branch. | Job log around the `curl … install.sh \| sh` step. |
141+
| Sandbox create or exec fails | Published sandbox and supervisor artifacts are missing, incompatible, or cannot establish the protected runtime channel. | Gateway logs plus Docker, Podman, VM, Snap, or Kubernetes runtime diagnostics for the job. |
138142
| `macos`/`ubuntu`/`fedora` job fails on `openshell status` | Local gateway service did not start (systemd/brew/podman). Often a driver issue. | Service logs in the job log; `OPENSHELL_COMPUTE_DRIVER` env in the "Ensure …" step. |
139143
| `ubuntu-snap` fails after interface connection | The gateway did not recover after Docker became available, or did not become reachable within the 30-second bound. | Failure diagnostics dump Snap service/connection/change state, gateway and snapd journals, Snap logs, and port 17670 listeners. |
140144
| `kubernetes` job fails on `helm install --wait` | Chart did not deploy in 5 min — usually image pull failure or readiness probe failing. | "Diagnostics on failure" step dumps `helm status`, manifest, pod describe, pod logs. |

0 commit comments

Comments
 (0)