Skip to content

refactor(sandbox): remove Shields from core - #10722

Merged
ericksoa merged 99 commits into
mainfrom
refactor/remove-shields-core-10696
Sep 3, 2026
Merged

ericksoa merged 99 commits into
mainfrom
refactor/remove-shields-core-10696

Conversation

@ericksoa

@ericksoa ericksoa commented Aug 31, 2026 •

Copy link
Copy Markdown
Member

Outcome

Removes Shields from NemoClaw core in one atomic change: the CLI, plugin, runtime-provider contract, policies, manifests, docs, tests, and compiled command surface no longer expose a Shields capability. Existing installations with legacy Shields state receive an explicit retirement notice and are routed through fail-closed rebuild, recreation, or destruction recovery before ordinary mutation.

Reason

NemoClaw should not own post-provisioning immutability as an inherent product concept. A future ecosystem product or composable blueprint can provide that capability on top of NemoClaw without coupling every supported agent and runtime provider to a built-in Shields state machine.

Related issues

Fixes #10696

Changes

  • Delete the public shields up, shields down, and shields status commands, plugin status affordance, src/lib/shields, permissive-policy and state-lock-plan assets, runtime-provider stateMutation contract, Hermes mutation publisher/controller/gate, and Shields-specific E2E and unit infrastructure.
  • Keep ordinary sandbox state mutable under OpenShell policy authority. Preserve only agent-neutral integrity controls such as restart transactions, config hashing, cross-process lifecycle exclusion, and a narrowed operational audit for supported configuration and inference mutations.
  • Add a bounded upgrade migration that detects legacy state without interpreting it. CLI startup identifies affected sandbox records and announces retirement; any timer, transition, policy, containment, or authority-bearing provider artifact globally blocks onboarding and mutation. The error names the active state directory and exact quarantine units; recovery requires reboot, trusted backup, and moving every whole unit outside active state before retrying rebuild or recreate. Inert per-sandbox records are retired only after verified mutable rebuild or exact destruction.
  • Clean the complete CLI and plugin output trees before normal builds and publication so an in-place source upgrade cannot retain an old command or internal module. Package-contract tests seed stale Shields, deploy, and unrelated outputs and prove the real root and standalone-plugin builds contain only current artifacts.
  • Preserve Hermes' supported mutable lazy-dependency lifecycle without restoring Shields: a sandbox-identity, descriptor-rooted normalizer makes installed package directories gateway-readable while rejecting privileged execution, foreign ownership, cross-filesystem entries, hardlinks, special files, races, and unbounded traversal. The image proof requires sandbox install/write, gateway import, and gateway write denial.
  • Delete additional code made inert by the removal: legacy OpenClaw lock/unlock recovery, Shields-only policy and agent-authority helpers, unused rebuild inputs, obsolete workflow-check helpers, and mechanical test/support tails.
  • Replace active Shields documentation with retirement and trusted-data-transfer guidance. Historical changelog and security-review records remain as historical evidence only.

Verification

  • npm run validate:pr — passed on the published commit against the refreshed canonical comparison ref.
  • npm run build:cli and npm run typecheck:cli — passed.
  • npm --prefix nemoclaw run build and npm --prefix nemoclaw run typecheck — passed.
  • npm run validate:configs — 52/52 configuration files passed.
  • npm run checks:repository — architecture, imports, project membership, source-shape, and growth checks passed.
  • npm run test:e2e-phases:check — 132 semantic E2E phase tests across 87 files passed.
  • npm --prefix tools/mcp-tool-discovery-runtime run bundle:reviewed:check — passed.
  • npm run docs — passed with 0 errors and 2 unrelated existing Fern warnings.
  • Focused package/standalone-build contracts — 3/3 passed; mock/live parity passed against the exact base and candidate.
  • Focused removed-immutability and caller admission — 64/64 passed; OpenClaw guard/rebuild/policy follow-up — 189/189 passed; conflict-sensitive fail-closed rebuild suite — 75/75 passed.
  • Hermes permission, dependency, portable-context, and image-contract focus — 73 passed, 2 skipped; a cached managed-image proof passed under the real sandbox and gateway identities.
  • Manual generated-command and public-surface scan — no Shields command, flag, manifest field, or supported posture remains; legacy references are limited to upgrade diagnostics and historical records.
  • gitleaks and the pre-commit private-key check passed; the diff contains no secrets, API keys, or credentials.

Review notes

  • This is intentionally one atomic removal rather than a sequence of partially compatible PRs. The diff changes 512 files, with 8,145 insertions and 90,597 deletions (82,452 net lines removed).
  • Broad local npm test and npm run test:changed attempts were not green on this loaded macOS host. The observed failures included fixed-timeout/load behavior, a known invalid host-local gateway registry row, macOS /private/var normalization, and a snapshot-sanitizer hardlink case that reproduced intermittently on clean main. A serial replay of the initially red changed set passed 301/308; its remaining seven failures are in unchanged files and reduce to that host registry plus one macOS temp/timing fixture. The implementation-owned gates and focused suites above pass, and clean PR CI remains authoritative.
  • Legacy recovery artifacts are deliberately preserved rather than interpreted or deleted by the new version. Authority-bearing artifacts block all sandbox mutation until the operator reboots, backs up the exact printed paths, and moves the whole quarantine units outside active state. Cross-sandbox snapshot restore from an affected legacy image remains blocked; recreation transfers only trusted user data.

Signed-off-by: Aaron Erickson aerickson@nvidia.com

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
@ericksoa ericksoa self-assigned this Aug 31, 2026
@coderabbitai

coderabbitai Bot commented Aug 31, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 604 files, which is 304 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d798335d-06cc-4dc4-b342-38254394d04c

📥 Commits

Reviewing files that changed from the base of the PR and between f2ee031 and fff3bca.

📒 Files selected for processing (604)
  • .agents/skills/_shared/controlled-words.md
  • .agents/skills/nemoclaw-maintainer-cross-issue-sweep/checks/fingerprint-extraction.md
  • .agents/skills/nemoclaw-maintainer-cross-issue-sweep/relationship-rules.md
  • .agents/skills/nemoclaw-maintainer-runtime-provider/references/activation-and-qualification.md
  • .agents/skills/nemoclaw-maintainer-runtime-provider/references/api-contract.md
  • .agents/skills/nemoclaw-maintainer-runtime-provider/references/implementation-and-review.md
  • .coderabbit.yaml
  • .github/actions/publish-managed-image-digest/validate.sh
  • .github/workflows/e2e.yaml
  • .github/workflows/managed-images.yaml
  • .github/workflows/podman-cpu-proof.yaml
  • .github/workflows/sandbox-images-and-e2e.yaml
  • .pre-commit-config.yaml
  • Dockerfile
  • Dockerfile.base
  • agents/hermes/Dockerfile
  • agents/hermes/Dockerfile.base
  • agents/hermes/config/generate.ts
  • agents/hermes/generate-config.ts
  • agents/hermes/hermes-wrapper.py
  • agents/hermes/image-build-probes.py
  • agents/hermes/manifest.yaml
  • agents/hermes/mcp-config-transaction.py
  • agents/hermes/patch-cron-execution-runtime.py
  • agents/hermes/patch-gateway-runtime-metadata.py
  • agents/hermes/patch-hermes-sqlite-temp-store.py
  • agents/hermes/policy-additions.yaml
  • agents/hermes/policy-permissive.yaml
  • agents/hermes/runtime-boundaries.patch
  • agents/hermes/runtime-config-guard.py
  • agents/hermes/runtime-state-mutation-publisher-v1.json
  • agents/hermes/start.sh
  • agents/hermes/state-lock-plan.json
  • agents/hermes/validate-env-secret-boundary.py
  • agents/langchain-deepagents-code/manifest.yaml
  • agents/nemocua/manifest.yaml
  • agents/openclaw/manifest.yaml
  • agents/openclaw/policy-permissive.yaml
  • agents/openclaw/state-lock-plan.json
  • agents/pi/Dockerfile
  • agents/pi/manifest.yaml
  • ci/cli-test-timing-hints.json
  • ci/env-var-doc-allowlist.json
  • ci/full-e2e-cold-path-calibration.json
  • ci/pi-agent-qualification-v1-linux-amd64.json
  • ci/pi-agent-qualification-v1-linux-arm64.json
  • ci/source-architecture-budget.json
  • ci/source-shape-test-budget.json
  • ci/test-file-size-budget.json
  • docs/.docs-skip
  • docs/configure-agents/configure-memory-search.mdx
  • docs/deployment/deploy-to-headless-server.mdx
  • docs/deployment/set-up-mcp-bridge.mdx
  • docs/inference/configure-inference-timeouts.mdx
  • docs/inference/set-up-sub-agent.mdx
  • docs/inference/switch-models.mdx
  • docs/inference/switch-providers.mdx
  • docs/manage-sandboxes/backup-restore.mdx
  • docs/manage-sandboxes/gateway-lifecycle-control.mdx
  • docs/manage-sandboxes/install-plugins-hermes.mdx
  • docs/manage-sandboxes/recover-rebuild-sandboxes.mdx
  • docs/manage-sandboxes/run-pi.mdx
  • docs/manage-sandboxes/run-sandboxes.mdx
  • docs/manage-sandboxes/runtime-controls.mdx
  • docs/manage-sandboxes/uninstall-nemoclaw.mdx
  • docs/reference/commands.mdx
  • docs/reference/host-files-and-state.mdx
  • docs/reference/pi-commands.mdx
  • docs/reference/troubleshooting.mdx
  • docs/security/best-practices.mdx
  • docs/security/credential-storage.mdx
  • docs/security/filesystem-controls.mdx
  • docs/security/tcb-boundary.mdx
  • internal/security-reviews/hermes-0.19.0-dependency-review.md
  • internal/security-reviews/openclaw-2026.6.10-dependency-review.md
  • internal/security-reviews/openshell-0.0.101-migration-review.md
  • internal/security-reviews/openshell-0.0.72-compatibility-review.mdx
  • internal/security-reviews/openshell-0.0.99-migration-review.md
  • nemoclaw-blueprint/policies/openclaw-sandbox-permissive.yaml
  • nemoclaw-blueprint/policies/openclaw-sandbox.yaml
  • nemoclaw/package.json
  • nemoclaw/src/commands/config-show.test.ts
  • nemoclaw/src/commands/config-show.ts
  • nemoclaw/src/commands/shields-status.test.ts
  • nemoclaw/src/commands/shields-status.ts
  • nemoclaw/src/commands/slash.test.ts
  • nemoclaw/src/commands/slash.ts
  • package.json
  • scripts/bench/README.md
  • scripts/bench/lib.mts
  • scripts/bench/run.mts
  • scripts/bench/trace-ingest.mts
  • scripts/checks/layer-import-boundaries.mts
  • scripts/checks/pi-qualification-receipt-refresh.mts
  • scripts/checks/pull-public-exact-digest.sh
  • scripts/checks/test-create-require-budget.mts
  • scripts/lib/generate-agent-state-lock-plans.mts
  • scripts/lib/normalize_mutable_config_perms.py
  • scripts/lib/sandbox-init.sh
  • scripts/nemoclaw-start.sh
  • scripts/openclaw-config-guard.py
  • scripts/patch-openclaw-shared-state-permissions.mts
  • scripts/runtime-state-mutation-control.py
  • scripts/runtime-state-mutation-startup-gate.py
  • scripts/runtime-state-mutation-transport-broker.py
  • scripts/runtime_state_mutation_hermes_publisher.py
  • scripts/state-dir-guard.py
  • scripts/validate-configs.mts
  • src/commands/sandbox/connect.ts
  • src/commands/sandbox/destroy.test.ts
  • src/commands/sandbox/oclif-command-adapters.test.ts
  • src/commands/sandbox/shields/down.ts
  • src/commands/sandbox/shields/status.ts
  • src/commands/sandbox/shields/up.ts
  • src/commands/sandbox/snapshot.test.ts
  • src/commands/sandbox/snapshot/restore.ts
  • src/lib/README.md
  • src/lib/actions/inference-set-gateway-restart.ts
  • src/lib/actions/inference-set-gateway-route-containment.test.ts
  • src/lib/actions/inference-set-hermes-run.test.ts
  • src/lib/actions/inference-set-openclaw-gateway-restart.test.ts
  • src/lib/actions/inference-set-openclaw-pairing.test.ts
  • src/lib/actions/inference-set-openclaw-run.test.ts
  • src/lib/actions/inference-set-provider-alias.test.ts
  • src/lib/actions/inference-set-reasoning-effort.test.ts
  • src/lib/actions/inference-set-shields.test.ts
  • src/lib/actions/inference-set.test-support.ts
  • src/lib/actions/inference-set.ts
  • src/lib/actions/maintenance.test.ts
  • src/lib/actions/maintenance.ts
  • src/lib/actions/root-help.ts
  • src/lib/actions/sandbox/agent/connect-shields-relock-notice.test.ts
  • src/lib/actions/sandbox/agent/connect-shields-relock-notice.ts
  • src/lib/actions/sandbox/agent/passthrough-help.test.ts
  • src/lib/actions/sandbox/agent/passthrough-help.ts
  • src/lib/actions/sandbox/agent/passthrough-ollama-recovery.test.ts
  • src/lib/actions/sandbox/agent/passthrough-shields-warning.test.ts
  • src/lib/actions/sandbox/agent/passthrough-shields-warning.ts
  • src/lib/actions/sandbox/agent/passthrough.test.ts
  • src/lib/actions/sandbox/agent/passthrough.ts
  • src/lib/actions/sandbox/backup-shields-window.ts
  • src/lib/actions/sandbox/channel-status.test-helpers.ts
  • src/lib/actions/sandbox/connect-flow.test.ts
  • src/lib/actions/sandbox/connect-shields-relock-wiring.test.ts
  • src/lib/actions/sandbox/connect.ts
  • src/lib/actions/sandbox/destroy-execution.ts
  • src/lib/actions/sandbox/destroy-flow.test.ts
  • src/lib/actions/sandbox/destroy-host-local-inference.test.ts
  • src/lib/actions/sandbox/destroy-openclaw-mcp-force.test.ts
  • src/lib/actions/sandbox/destroy-preflight.ts
  • src/lib/actions/sandbox/destroy-timeout-recovery.test.ts
  • src/lib/actions/sandbox/destroy.ts
  • src/lib/actions/sandbox/doctor-config-perms.test.ts
  • src/lib/actions/sandbox/doctor-config-perms.ts
  • src/lib/actions/sandbox/doctor-flow.test.ts
  • src/lib/actions/sandbox/doctor.ts
  • src/lib/actions/sandbox/exec-openclaw-permission-cleanup.test.ts
  • src/lib/actions/sandbox/exec.test.ts
  • src/lib/actions/sandbox/exec.ts
  • src/lib/actions/sandbox/launch-readiness.ts
  • src/lib/actions/sandbox/mcp-bridge-adapter-hermes-branding.test.ts
  • src/lib/actions/sandbox/mcp-bridge-adapter-hermes.ts
  • src/lib/actions/sandbox/mcp-bridge-adapter-openclaw.ts
  • src/lib/actions/sandbox/mcp-bridge-adapters.ts
  • src/lib/actions/sandbox/mcp-bridge-add-restart.ts
  • src/lib/actions/sandbox/mcp-bridge-destroy-forced-scrub.test.ts
  • src/lib/actions/sandbox/mcp-bridge-destroy.ts
  • src/lib/actions/sandbox/mcp-bridge-openclaw-shields-config.test.ts
  • src/lib/actions/sandbox/mcp-bridge-rebuild.ts
  • src/lib/actions/sandbox/mcp-bridge-remove.ts
  • src/lib/actions/sandbox/mcp-bridge-restart.ts
  • src/lib/actions/sandbox/mcp-bridge-runtime-capabilities.ts
  • src/lib/actions/sandbox/policy-channel-conflict.test.ts
  • src/lib/actions/sandbox/process-recovery-lock.test.ts
  • src/lib/actions/sandbox/process-recovery.ts
  • src/lib/actions/sandbox/rebuild-backup-phase.test.ts
  • src/lib/actions/sandbox/rebuild-backup-phase.ts
  • src/lib/actions/sandbox/rebuild-dcode-artifact-drift.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-mutation-edge.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-pre-delete-drift.test.ts
  • src/lib/actions/sandbox/rebuild-destroy-phase.test.ts
  • src/lib/actions/sandbox/rebuild-destroy-phase.ts
  • src/lib/actions/sandbox/rebuild-flow-helpers.test.ts
  • src/lib/actions/sandbox/rebuild-flow-helpers.ts
  • src/lib/actions/sandbox/rebuild-flow-lifecycle.test.ts
  • src/lib/actions/sandbox/rebuild-flow-recovery.test.ts
  • src/lib/actions/sandbox/rebuild-flow-shields-window.test.ts
  • src/lib/actions/sandbox/rebuild-flow-target-image.test.ts
  • src/lib/actions/sandbox/rebuild-gpu-opt-out.ts
  • src/lib/actions/sandbox/rebuild-hermes-accepted-target.test.ts
  • src/lib/actions/sandbox/rebuild-mcp-phase.test.ts
  • src/lib/actions/sandbox/rebuild-mcp-phase.ts
  • src/lib/actions/sandbox/rebuild-pipeline.ts
  • src/lib/actions/sandbox/rebuild-post-restore-phase.test.ts
  • src/lib/actions/sandbox/rebuild-post-restore-phase.ts
  • src/lib/actions/sandbox/rebuild-preflight-phase.ts
  • src/lib/actions/sandbox/rebuild-recreate-observability.test.ts
  • src/lib/actions/sandbox/rebuild-recreate-phase.ts
  • src/lib/actions/sandbox/rebuild-recreate-reasoning.test.ts
  • src/lib/actions/sandbox/rebuild-restore-phase.test.ts
  • src/lib/actions/sandbox/rebuild-resume-snapshot.test.ts
  • src/lib/actions/sandbox/rebuild-shields-finally.test.ts
  • src/lib/actions/sandbox/rebuild-shields-phase.test.ts
  • src/lib/actions/sandbox/rebuild-shields-phase.ts
  • src/lib/actions/sandbox/rebuild-shields.ts
  • src/lib/actions/sandbox/runtime-env.test.ts
  • src/lib/actions/sandbox/skill-install.test.ts
  • src/lib/actions/sandbox/skill-install.ts
  • src/lib/actions/sandbox/snapshot-auto-create-failure.test.ts
  • src/lib/actions/sandbox/snapshot-command-host-local-authority.test.ts
  • src/lib/actions/sandbox/snapshot-failed-create-cleanup.test.ts
  • src/lib/actions/sandbox/snapshot-restore-lifecycle.test.ts
  • src/lib/actions/sandbox/snapshot-restore-test-fixture.ts
  • src/lib/actions/sandbox/snapshot.test.ts
  • src/lib/actions/sandbox/snapshot.ts
  • src/lib/actions/sandbox/snapshot/backup-authority.test.ts
  • src/lib/actions/sandbox/start.test.ts
  • src/lib/actions/sandbox/start.ts
  • src/lib/actions/sandbox/status-flow.test.ts
  • src/lib/actions/sandbox/status-text.ts
  • src/lib/actions/sandbox/wipe-state.ts
  • src/lib/actions/uninstall/all-gateway-ports.test.ts
  • src/lib/actions/uninstall/run-plan-portable-runtime.test.ts
  • src/lib/actions/uninstall/run-plan.ts
  • src/lib/actions/upgrade-sandboxes.ts
  • src/lib/adapters/container-engine.test.ts
  • src/lib/adapters/container-engine.ts
  • src/lib/adapters/podman/index.test.ts
  • src/lib/adapters/podman/index.ts
  • src/lib/adapters/sandbox/command-transport.test.ts
  • src/lib/adapters/sandbox/command-transport.ts
  • src/lib/advisories/types.ts
  • src/lib/agent/candidate-authority.ts
  • src/lib/agent/definition-types.ts
  • src/lib/agent/defs.test.ts
  • src/lib/agent/defs.ts
  • src/lib/agent/hermes-recovery-boundary-fixtures.ts
  • src/lib/agent/manifest-readers.ts
  • src/lib/agent/onboard.test.ts
  • src/lib/agent/runtime.test.ts
  • src/lib/agent/state-directory-contract.test.ts
  • src/lib/agent/state-directory-contract.ts
  • src/lib/cli/duration-flags.test.ts
  • src/lib/cli/duration-flags.ts
  • src/lib/cli/nemoclaw-oclif-command.test.ts
  • src/lib/cli/nemoclaw-oclif-command.ts
  • src/lib/cli/public-display-defaults.ts
  • src/lib/coverage-hotspots.test.ts
  • src/lib/domain/duration.test.ts
  • src/lib/domain/duration.ts
  • src/lib/inference/local-docker-isolation.test.ts
  • src/lib/onboard.ts
  • src/lib/onboard/build-context-stage.test.ts
  • src/lib/onboard/build-context-stage.ts
  • src/lib/onboard/docker-gpu-patch-clone.ts
  • src/lib/onboard/dockerfile-remote-dashboard-bind-contract.ts
  • src/lib/onboard/entry-options.ts
  • src/lib/onboard/experimental/hermes-portable-build-context-files.ts
  • src/lib/onboard/experimental/hermes-portable-build-context.ts
  • src/lib/onboard/experimental/hermes-portable-contract.ts
  • src/lib/onboard/experimental/hermes-portable-lifecycle.ts
  • src/lib/onboard/experimental/hermes-portable-onboarding.ts
  • src/lib/onboard/experimental/hermes-portable-podman-authority.ts
  • src/lib/onboard/experimental/hermes-portable-receipt.ts
  • src/lib/onboard/experimental/portable-agent-lifecycle.ts
  • src/lib/onboard/initial-policy-real-policy.test.ts
  • src/lib/onboard/lifecycle-contracts.md
  • src/lib/onboard/managed-startup-agent-environment.test.ts
  • src/lib/onboard/managed-startup-image-runtime-handoff.test.ts
  • src/lib/onboard/managed-startup-shared-state-transaction.test.ts
  • src/lib/onboard/managed-startup/agent-environment.ts
  • src/lib/onboard/managed-startup/image-runtime.ts
  • src/lib/onboard/managed-workload-rebuild-transaction.test.ts
  • src/lib/onboard/runtime-provider/access.ts
  • src/lib/onboard/runtime-provider/activation.test.ts
  • src/lib/onboard/runtime-provider/activation.ts
  • src/lib/onboard/runtime-provider/container-state-mutation.ts
  • src/lib/onboard/runtime-provider/contract.ts
  • src/lib/onboard/runtime-provider/docker-state-mutation.test.ts
  • src/lib/onboard/runtime-provider/docker-state-mutation.ts
  • src/lib/onboard/runtime-provider/docker.ts
  • src/lib/onboard/runtime-provider/mxc.test.ts
  • src/lib/onboard/runtime-provider/mxc.ts
  • src/lib/onboard/runtime-provider/persisted-engine-authority.ts
  • src/lib/onboard/runtime-provider/persisted-engine-lifecycle.test.ts
  • src/lib/onboard/runtime-provider/persisted-engine-lifecycle.ts
  • src/lib/onboard/runtime-provider/podman-preflight.test.ts
  • src/lib/onboard/runtime-provider/podman-preflight.ts
  • src/lib/onboard/runtime-provider/podman-runtime-surfaces.test.ts
  • src/lib/onboard/runtime-provider/podman-state-mutation.test.ts
  • src/lib/onboard/runtime-provider/podman-state-mutation.ts
  • src/lib/onboard/runtime-provider/podman.test.ts
  • src/lib/onboard/runtime-provider/podman.ts
  • src/lib/onboard/runtime-provider/registry.ts
  • src/lib/onboard/runtime-provider/runtime-provider-contract.test.ts
  • src/lib/onboard/runtime-provider/state-mutation.test.ts
  • src/lib/onboard/runtime-provider/state-mutation.ts
  • src/lib/onboard/sandbox-create/orchestration.ts
  • src/lib/onboard/sandbox-create/rebuild-policy-handoff.test.ts
  • src/lib/onboard/sandbox-workload-preparation.test.ts
  • src/lib/onboard/sandbox-workload-rebuild.test.ts
  • src/lib/onboard/types.ts
  • src/lib/onboard/verify-channel-runtime.test.ts
  • src/lib/onboard/workload/preparation.ts
  • src/lib/onboard/workload/rebuild.ts
  • src/lib/policy/README.md
  • src/lib/policy/context-builder.ts
  • src/lib/policy/index.ts
  • src/lib/sandbox/agent-config.test.ts
  • src/lib/sandbox/agent-config.ts
  • src/lib/sandbox/build-context.ts
  • src/lib/sandbox/config-get.test.ts
  • src/lib/sandbox/config-read-not-ready.test.ts
  • src/lib/sandbox/config-rotate-token.ts
  • src/lib/sandbox/config.ts
  • src/lib/sandbox/hermes-dashboard-reseed.test.ts
  • src/lib/sandbox/mutable-config-perms.test.ts
  • src/lib/sandbox/mutable-config-perms.ts
  • src/lib/sandbox/openclaw-config-guard.test.ts
  • src/lib/sandbox/openclaw-config-guard.ts
  • src/lib/sandbox/privileged-exec-exclusion.test.ts
  • src/lib/sandbox/privileged-exec.test.ts
  • src/lib/sandbox/privileged-exec.ts
  • src/lib/shields/audit-format.test.ts
  • src/lib/shields/audit-reader.test.ts
  • src/lib/shields/audit.ts
  • src/lib/shields/auto-restore-target.test.ts
  • src/lib/shields/deferred-exit.ts
  • src/lib/shields/flow.test.ts
  • src/lib/shields/hermes-runtime-state-mutation.test.ts
  • src/lib/shields/hermes-runtime-state-mutation.ts
  • src/lib/shields/index.test.ts
  • src/lib/shields/index.ts
  • src/lib/shields/inference-convergence.test.ts
  • src/lib/shields/inference-convergence.ts
  • src/lib/shields/legacy-hermes-compat.test.ts
  • src/lib/shields/legacy-hermes-transition.test.ts
  • src/lib/shields/mcp-policy-transition.test.ts
  • src/lib/shields/mcp-policy-transition.ts
  • src/lib/shields/mutable-config-perms.test.ts
  • src/lib/shields/mutable-config-perms.ts
  • src/lib/shields/mutable-config-repair.test.ts
  • src/lib/shields/mutable-config-repair.ts
  • src/lib/shields/openclaw-config-lock.test.ts
  • src/lib/shields/openclaw-config-lock.ts
  • src/lib/shields/openclaw-transition.test.ts
  • src/lib/shields/permissive-runtime.ts
  • src/lib/shields/policy-delta.test.ts
  • src/lib/shields/policy-transition.test.ts
  • src/lib/shields/relock-reconfirm.test.ts
  • src/lib/shields/relock-reconfirm.ts
  • src/lib/shields/seal.test.ts
  • src/lib/shields/seal.ts
  • src/lib/shields/state-dir-lock.test.ts
  • src/lib/shields/state-dir-lock.ts
  • src/lib/shields/status-state-lock-plan.test.ts
  • src/lib/shields/timer-bound-lock.test.ts
  • src/lib/shields/timer-bound-lock.ts
  • src/lib/shields/timer-control.test.ts
  • src/lib/shields/timer-control.ts
  • src/lib/shields/timer-process.test.ts
  • src/lib/shields/timer-recovery-budget.test.ts
  • src/lib/shields/timer.test.ts
  • src/lib/shields/timer.ts
  • src/lib/shields/transition-lock.test.ts
  • src/lib/shields/transition-lock.ts
  • src/lib/shields/verify-lock.test.ts
  • src/lib/shields/verify-lock.ts
  • src/lib/state/audit/operational.test.ts
  • src/lib/state/audit/operational.ts
  • src/lib/state/mcp-lifecycle-lock-acquisition.test.ts
  • src/lib/state/mcp-lifecycle-lock-acquisition.ts
  • src/lib/state/mcp-lifecycle-lock-identity.test.ts
  • src/lib/state/mcp-lifecycle-lock-identity.ts
  • src/lib/state/mcp-lifecycle-lock.ts
  • src/lib/state/mcp-lifecycle-lock/decisions.test.ts
  • src/lib/state/mcp-lifecycle-lock/decisions.ts
  • src/lib/state/mcp-lifecycle-lock/inspection.ts
  • src/lib/state/mcp-lifecycle-lock/shields-timer-authority.test.ts
  • src/lib/state/mcp-lifecycle-lock/shields-timer-authority.ts
  • src/lib/state/migrations/removed-immutability.test.ts
  • src/lib/state/migrations/removed-immutability.ts
  • src/lib/state/user-managed-files-probe.test.ts
  • src/lib/tunnel/allowed-origins.test.ts
  • test/agents/hermes/hermes-config-transaction-wiring.test.ts
  • test/agents/hermes/hermes-dependency-review.test.ts
  • test/agents/hermes/hermes-discord-recovery-permissions.test.ts
  • test/agents/hermes/hermes-doctor-config-hash.test.ts
  • test/agents/hermes/hermes-env-secret-boundary-hardening.test.ts
  • test/agents/hermes/hermes-gateway-supervisor-recovery.test.ts
  • test/agents/hermes/hermes-gateway-wrapper.test.ts
  • test/agents/hermes/hermes-image-build-probes.test.ts
  • test/agents/hermes/hermes-lazy-dependency-lifecycle.test.ts
  • test/agents/hermes/hermes-mcp-config-transaction.test.ts
  • test/agents/hermes/hermes-mcp-shields-order.test.ts
  • test/agents/hermes/hermes-mcp-startup-probe.test.ts
  • test/agents/hermes/hermes-nonroot-strict-hash-reconciliation.test.ts
  • test/agents/hermes/hermes-openshell-runtime-env-boundary.test.ts
  • test/agents/hermes/hermes-restart-config-seal-hostile-input.test.ts
  • test/agents/hermes/hermes-restart-config-seal-recovery.test.ts
  • test/agents/hermes/hermes-restart-config-seal-transition.test.ts
  • test/agents/hermes/hermes-restart-config-seal-write-lock.test.ts
  • test/agents/hermes/hermes-runtime-api-key.test.ts
  • test/agents/hermes/hermes-runtime-config-guard-topology.test.ts
  • test/agents/hermes/hermes-runtime-config-guard.test.ts
  • test/agents/hermes/hermes-share-mount-deps.test.ts
  • test/agents/hermes/hermes-sqlite-temp-store-patch.test.ts
  • test/agents/hermes/hermes-start-config-integrity.test.ts
  • test/agents/hermes/hermes-start.test.ts
  • test/agents/hermes/hermes-tirith-retry-finalization.test.ts
  • test/agents/openclaw/openclaw-2026-7-startup-compat.test.ts
  • test/agents/openclaw/openclaw-config-guard-absent-hash.test.ts
  • test/agents/openclaw/openclaw-config-guard-lock-reseal.test.ts
  • test/agents/openclaw/openclaw-config-guard-mutable-unlock.test.ts
  • test/agents/openclaw/openclaw-config-guard-startup-failure-gate.test.ts
  • test/agents/openclaw/openclaw-config-guard.test.ts
  • test/agents/openclaw/openclaw-config-transaction-wiring.test.ts
  • test/agents/openclaw/runtime/nemoclaw-start-config-io.test.ts
  • test/agents/openclaw/runtime/nemoclaw-start-locked-migration.test.ts
  • test/agents/openclaw/runtime/nemoclaw-start-locked-parent.test.ts
  • test/agents/openclaw/runtime/nemoclaw-start-perms.test.ts
  • test/agents/openclaw/runtime/nemoclaw-start-reasoning-effort.test.ts
  • test/agents/openclaw/runtime/nemoclaw-start-reconcile.test.ts
  • test/agents/openclaw/runtime/nemoclaw-start-sealed-restart.test.ts
  • test/agents/openclaw/runtime/nemoclaw-start.test.ts
  • test/automation/pull-requests/pr-risk-plan.test.ts
  • test/bench/bench.test.ts
  • test/cli/doctor-gateway-token.test.ts
  • test/cli/root-help.test.ts
  • test/cli/shields-transition-lock.test.ts
  • test/cli/snapshot-shields.test.ts
  • test/e2e-gateway-isolation.sh
  • test/e2e-runtime/entrypoint-env-wrapper.test.ts
  • test/e2e-runtime/pull-public-exact-digest.test.ts
  • test/e2e-runtime/repro-4538-raw-doctor-perms.test.ts
  • test/e2e/README.md
  • test/e2e/fixtures/phases/onboarding.ts
  • test/e2e/fixtures/redaction.ts
  • test/e2e/fixtures/shell-probe.ts
  • test/e2e/fixtures/shields-failed-startup.ts
  • test/e2e/live/agent-turn-latency-helpers.ts
  • test/e2e/live/agent-turn-latency.test.ts
  • test/e2e/live/bedrock-runtime-compatible-anthropic.test.ts
  • test/e2e/live/brave-search-helpers.ts
  • test/e2e/live/brave-search.test.ts
  • test/e2e/live/channels-add-remove.test.ts
  • test/e2e/live/channels-stop-start-googlechat-proof.ts
  • test/e2e/live/channels-stop-start.test.ts
  • test/e2e/live/cloud-inference.test.ts
  • test/e2e/live/cloud-onboard.test.ts
  • test/e2e/live/common-egress-agent.test.ts
  • test/e2e/live/concurrent-gateway-ports.test.ts
  • test/e2e/live/cron-preflight-inference-local.test.ts
  • test/e2e/live/dcode-base-image-runtime-evidence.ts
  • test/e2e/live/device-auth-health-helpers.ts
  • test/e2e/live/device-auth-health.test.ts
  • test/e2e/live/double-onboard.test.ts
  • test/e2e/live/full-e2e.test.ts
  • test/e2e/live/gateway-guard-recovery.test.ts
  • test/e2e/live/gpu-double-onboard.test.ts
  • test/e2e/live/gpu-e2e.test.ts
  • test/e2e/live/hermes-discord.test.ts
  • test/e2e/live/hermes-e2e-phases.ts
  • test/e2e/live/hermes-e2e.test.ts
  • test/e2e/live/hermes-gpu-startup.test.ts
  • test/e2e/live/hermes-inference-switch-helpers.ts
  • test/e2e/live/hermes-inference-switch.test.ts
  • test/e2e/live/hermes-sandbox-secret-boundary.test.ts
  • test/e2e/live/hermes-shields-config.test.ts
  • test/e2e/live/hermes-slack-e2e-helpers.ts
  • test/e2e/live/issue-2478-crash-loop-recovery.test.ts
  • test/e2e/live/issue-4462-scope-upgrade-approval.test.ts
  • test/e2e/live/launchable-smoke.test.ts
  • test/e2e/live/managed-image-activation-e2e-helpers.ts
  • test/e2e/live/mcp-bridge-hermes-lifecycle.ts
  • test/e2e/live/mcp-bridge-phases.ts
  • test/e2e/live/mcp-bridge.test.ts
  • test/e2e/live/messaging-compatible-endpoint.test.ts
  • test/e2e/live/messaging-providers-helpers.ts
  • test/e2e/live/model-router-provider-routed-inference.test.ts
  • test/e2e/live/network-policy.test.ts
  • test/e2e/live/onboard-repair.test.ts
  • test/e2e/live/onboard-resume.test.ts
  • test/e2e/live/openclaw-discord-pairing.test.ts
  • test/e2e/live/openclaw-inference-switch.test.ts
  • test/e2e/live/openclaw-plugin-runtime-exdev.test.ts
  • test/e2e/live/openclaw-slack-pairing.test.ts
  • test/e2e/live/openshell-gateway-upgrade-helpers.ts
  • test/e2e/live/openshell-gateway-upgrade.test.ts
  • test/e2e/live/phase6-messaging-helpers.ts
  • test/e2e/live/podman-cpu-lifecycle-helpers.ts
  • test/e2e/live/podman-cpu-lifecycle.test.ts
  • test/e2e/live/rebuild-openclaw.test.ts
  • test/e2e/live/sandbox-operations.test.ts
  • test/e2e/live/sandbox-survival.test.ts
  • test/e2e/live/sessions-agents-cli.test.ts
  • test/e2e/live/shields-config.test.ts
  • test/e2e/live/shields-retirement-upgrade.test.ts
  • test/e2e/live/skill-agent.test.ts
  • test/e2e/live/snapshot-commands.test.ts
  • test/e2e/live/spark-install.test.ts
  • test/e2e/live/state-backup-restore.test.ts
  • test/e2e/live/state-dir-guard-metadata-helpers.ts
  • test/e2e/live/state-dir-guard-metadata.test.ts
  • test/e2e/live/telegram-injection.test.ts
  • test/e2e/live/token-rotation.test.ts
  • test/e2e/live/tunnel-lifecycle-helpers.ts
  • test/e2e/live/whatsapp-qr-compact.test.ts
  • test/e2e/mock-parity.json
  • test/e2e/support/bedrock-runtime-compatible-anthropic-progress.test.ts
  • test/e2e/support/dashboard-connect-handoff.test.ts
  • test/e2e/support/dcode-base-image-runtime-evidence.test.ts
  • test/e2e/support/e2e-cleanup-resources.test.ts
  • test/e2e/support/e2e-fixture-context.test.ts
  • test/e2e/support/e2e-phase-onboarding.test.ts
  • test/e2e/support/e2e-progress-fixture.test.ts
  • test/e2e/support/e2e-redaction-entry.test.ts
  • test/e2e/support/hermes-discord-proxy-request.test.ts
  • test/e2e/support/hermes-workflow-boundary.test.ts
  • test/e2e/support/larger-runner-routing-workflow-boundary.test.ts
  • test/e2e/support/launch-agent-turn.test.ts
  • test/e2e/support/managed-image-activation-diagnostics.test.ts
  • test/e2e/support/mcp-bridge-hermes-lifecycle.test.ts
  • test/e2e/support/openshell-gateway-upgrade-workflow-boundary.test.ts
  • test/e2e/support/sandbox-images-workflow-boundary.test.ts
  • test/e2e/support/shields-failed-startup.test.ts
  • test/e2e/support/shields-retirement-workflow-plan.test.ts
  • test/e2e/support/workflow-plan.test.ts
  • test/helpers/base-image-test-harness.ts
  • test/helpers/destroy-flow-test-assertions.ts
  • test/helpers/destroy-flow-test-harness.ts
  • test/helpers/docker-state-mutation-harness.ts
  • test/helpers/hermes-restart-config-seal-fixture.ts
  • test/helpers/hermes-runtime-state-mutation-test-helpers.ts
  • test/helpers/hermes-shields-provider-consumer-harness.ts
  • test/helpers/hermes-unsafe-config-shields-harness.ts
  • test/helpers/hermes-wrapper-harness.ts
  • test/helpers/privileged-exec-test-helpers.ts
  • test/helpers/rebuild-dcode-flow-helpers.ts
  • test/helpers/rebuild-flow-generic-harness.ts
  • test/helpers/rebuild-flow-harness.ts
  • test/helpers/rebuild-flow-test-support.ts
  • test/helpers/runtime-provider-bundle.ts
  • test/helpers/runtime-provider-state-mutation-test-helpers.ts
  • test/helpers/runtime-state-mutation-control-harness.ts
  • test/helpers/shields-flow-harness.ts
  • test/helpers/vitest-coverage-thresholds.ts
  • test/inference/inference-provider-id-rename.test.ts
  • test/inference/managed/managed-gateway-control.test.ts
  • test/inference/managed/managed-image-publication-workflow.test.ts
  • test/mcp/completed-auto-restore-command.test.ts
  • test/mcp/mcp-destroy-lifecycle.test.ts
  • test/mcp/mcp-lifecycle-lock.test.ts
  • test/mcp/mcp-provider-ownership.test.ts
  • test/mcp/mcp-tool-discovery-image-contract.test.ts
  • test/onboarding/config-set-prompt-error.test.ts
  • test/onboarding/onboard-readiness.test.ts
  • test/onboarding/validate-blueprint.test.ts
  • test/onboarding/validate-config-schemas.test.ts
  • test/package-contract/cli/build-upgrade.test.ts
  • test/package-contract/cli/command-registry.test.ts
  • test/package-contract/cli/config-set-prompt-eof.test.ts
  • test/package-contract/openshell-policy-boundary.test.ts
  • test/platform/images/image-cleanup.test.ts
  • test/platform/images/publish-managed-image-digest-negative.test.ts
  • test/platform/images/publish-managed-image-digest.test.ts
  • test/repository/pi-qualification-receipt-refresh.test.ts
  • test/runtime/policy/permissive-runtime.test.ts
  • test/runtime/policy/policies-permissive-policy.test.ts
  • test/runtime/policy/policies.test.ts
  • test/runtime/policy/rebuild-shields-window.test.ts
  • test/runtime/policy/shields-deferred-exit-lock.test.ts
  • test/runtime/policy/shields-up-runtime-perms.test.ts
  • test/runtime/sandbox/destroy-wipe-sandbox-state.test.ts
  • test/runtime/sandbox/repro-2681-group-writable.test.ts
  • test/runtime/sandbox/sandbox-build-context.test.ts
  • test/runtime/sandbox/sandbox-init.test.ts
  • test/runtime/sandbox/sandbox-provisioning-helper-permissions.test.ts
  • test/runtime/sandbox/sandbox-rlimit-hooks.test.ts
  • test/security/config-rotate-token-provider-profile.test.ts
  • test/security/config-set-nested-ssrf.test.ts
  • test/state/hermes-shields-up-confirmation.test.ts
  • test/state/runtime-state-mutation-control.test.ts
  • test/state/runtime-state-mutation-hermes-publisher.test.ts
  • test/state/runtime-state-mutation-release-ack.test.ts
  • test/state/runtime-state-mutation-startup-gate.test.ts
  • test/state/snapshot-shields-guard.test.ts
  • test/state/state-dir-guard-dashboard-profile.test.ts
  • test/state/state-dir-guard-mutable-posture.test.ts
  • test/state/state-dir-guard-verification.test.ts
  • test/state/state-dir-guard.test.ts
  • test/support/completed-auto-restore-fixture.ts
  • test/support/connect-flow-test-harness.ts
  • test/support/hermes-shell-harness.ts
  • test/support/status-flow-test-harness.ts
  • tools/advisors/risk-plan.mts
  • tools/e2e/hermes-timeout-contract.mts
  • tools/e2e/mcp-dev-workflow-boundary-digests.mts
  • tools/e2e/operations-workflow-boundary.mts
  • tools/e2e/pr-managed-image-publication.mts
  • tools/e2e/sandbox-images-workflow-boundary.mts
  • tools/e2e/target-catalogue.mts
  • tools/e2e/workflow-boundary.mts
  • tools/mcp-tool-discovery-runtime/reviewed-runtime-bundle/managed-startup-image-runtime.bundle

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

@github-code-quality

github-code-quality Bot commented Aug 31, 2026 •

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall line coverage in commit fff3bca in the refactor/remove-shie... branch remains at 96%, unchanged from commit 3509b5a in the main branch.

TypeScript / code-coverage/cli

The overall line coverage in commit fff3bca in the refactor/remove-shie... branch remains at 83%, unchanged from commit c811ef9 in the main branch.

Show a line coverage summary of the most impacted files.
File main c811ef9 refactor/remove-shie... fff3bca +/-
src/lib/actions...sor-relaunch.ts 96% 79% -17%
src/lib/inferen...-materialize.ts 90% 77% -13%
src/lib/inferen...er-lifecycle.ts 77% 70% -7%
src/lib/onboard...able-receipt.ts 75% 70% -5%
src/lib/state/p...l-retirement.ts 79% 85% +6%
src/lib/onboard/docker-cdi.ts 70% 82% +12%
src/lib/onboard...an-lifecycle.ts 76% 92% +16%
src/lib/sandbox...config-perms.ts 0% 54% +54%
src/lib/state/m...immutability.ts 0% 81% +81%
src/lib/sandbox...config-guard.ts 0% 85% +85%

Updated September 03, 2026 02:30 UTC

@ericksoa
ericksoa marked this pull request as draft August 31, 2026 23:14
@copy-pr-bot

copy-pr-bot Bot commented Aug 31, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
ericksoa and others added 3 commits August 31, 2026 20:00
Restore the Hermes mutable cross-identity root before gateway import.

Repair the stale image fixture and CodeQL annotations.

Enable trusted BuildKit E2E prebuilds and pin the exact Pi candidate receipts.

Co-authored-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Preserve current advisor and Hermes E2E fixes while keeping the removal atomic.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Keep the newly landed Shields implementation and tests removed while retaining current E2E fixes.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Retire legacy Shields state only after an exact sandbox-identity proof.

Verify rebuilt Hermes config through pinned descriptors before deleting upgrade state.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Exercise valid, read-only, and linked config fixtures.

Clarify when legacy recovery artifacts block existing sandboxes.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Avoid a redundant agent-definition lookup after the recreated Hermes identity is already verified.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Bind DCode and Pi retirement to exact replacement identity and successful restore.

Require complete generic post-restore verification before deleting legacy state.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Keep the atomic removal branch aligned with current main before final qualification.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Read replacement and staged fixtures through no-follow regular-file descriptors.

Keep intentional stale-handle tests without filesystem race alerts.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Keep retired Shields commands and tests removed.

Retain current external gateway and E2E pruning changes.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Sep 22, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Sep 23, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Sep 24, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Sep 24, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Sep 24, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Sep 25, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd pushed a commit to shanemcd/NemoClaw that referenced this pull request Sep 30, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 2, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 3, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 5, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 6, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 7, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 7, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 8, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 9, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 9, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 10, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 11, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 12, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 13, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 14, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 15, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 16, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 17, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 18, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
shanemcd-rebase-bot Bot pushed a commit to shanemcd/NemoClaw that referenced this pull request Oct 19, 2026
…pts removed upstream

Upstream removed the Shields/state-mutation subsystem (NVIDIA#10722), deleting
scripts/state-dir-guard.py, runtime-state-mutation-{control,startup-gate}.py,
runtime_state_mutation_hermes_publisher.py, and their state-lock-plan /
runtime-state-mutation-publisher-v1.json manifests. The fork's hermes
Dockerfile and start/vm entrypoints still COPY and invoke them at runtime,
so a bare rebase dropped them and broke build-nemoclaw-hermes.

Restore the six files from the pre-rebase fork HEAD so the hermes image
keeps its state-guard posture.
@wscurran wscurran added the area: ci CI workflows, checks, release automation, or GitHub Actions label Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci CI workflows, checks, release automation, or GitHub Actions area: cli Command line interface, flags, terminal UX, or output area: docs Documentation, examples, guides, or docs build area: e2e End-to-end tests, nightly failures, or validation infrastructure area: integrations Third-party service integration behavior area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow area: packaging Packages, images, registries, installers, or distribution area: policy Network policy, egress rules, presets, or sandbox policy area: sandbox OpenShell sandbox lifecycle, runtime, config, or recovery area: security Security controls, permissions, secrets, or hardening integration: dcode LangChain Deep Code integration behavior integration: hermes Hermes integration behavior integration: openclaw OpenClaw integration behavior platform: container Affects Docker, containerd, Podman, or images refactor PR restructures code without intended behavior change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove Shields from NemoClaw core and defer immutability to composable blueprints

5 participants