Skip to content

Persist the complete native agent home through OpenShell storage #11767

Description

@ericksoa

Parent: #11255

Problem

#11258 normalized selected paths but deliberately retained declared-state allowlists and targeted snapshot behavior. Native agents expect their complete home and workspace state to remain available. NemoClaw still decides which directories and files are durable, selectively merges state, and can discard unrecognized but valid agent data.

Desired behavior

The agent uses and retains its native home, workspace, configuration, package, plugin, history, and runtime state through the persistence supplied by OpenShell. NemoClaw does not impose its own file allowlist. Credentials remain in the placement required by OpenShell and are not copied into agent-visible state.

Scope

  • Replace NemoClaw's declared-directory/file persistence allowlist with the native OpenShell-backed home and workspace behavior.
  • Remove selective state-file merges and image-owned directory preservation rules that alter valid agent state.
  • Preserve complete agent-owned state across restart and reconnect; define rebuild migration as a whole native-state transfer when a new sandbox is actually required.
  • Exclude OpenShell-owned credential stores and host-only secrets according to the OpenShell contract.
  • Delete obsolete snapshot manifests, per-agent state inventories, and restriction-only migration code after their consumers are removed.

Acceptance criteria

  • Arbitrary benign files created under the native agent home and workspace survive supported lifecycle operations.
  • Native configuration, histories, hooks, plugins, packages, cron state, and child-agent state persist without being individually declared to NemoClaw.
  • NemoClaw does not discard unknown agent-owned paths during rebuild or restore.
  • OpenShell credential placement remains excluded from agent-state copying.
  • The old selective persistence layer and its allowlist tests are removed.

Basic-onboarder end state and E2E amendments

The basic onboarder must use the persistence supplied by OpenShell and then stop managing agent state. Do not replace the current allowlist with another NemoClaw snapshot schema. Migration to a new sandbox, when unavoidable, should transfer complete native agent-owned state while excluding only OpenShell-owned credential material according to the OpenShell contract.

Amend the existing E2E inventory as follows:

  • test/e2e/live/state-backup-restore.test.ts: replace declared-directory and selective-file expectations with complete native-home/workspace preservation, including an unrecognized benign file.
  • test/e2e/live/snapshot-commands.test.ts (snapshot-commands): retire NemoClaw snapshot lifecycle commands if they are not part of the basic onboarder; otherwise reduce the target to explicit one-time migration owned by onboarding.
  • test/e2e/live/sandbox-survival.test.ts (sandbox-survival): create arbitrary native home, workspace, package, plugin, hook, and cron state and verify it survives OpenShell lifecycle without NemoClaw recovery.
  • test/e2e/live/rebuild-openclaw.test.ts and test/e2e/live/rebuild-hermes.test.ts: retire routine rebuild ownership or refocus unavoidable migration on complete native state rather than per-agent allowlists.
  • test/e2e/live/full-e2e.test.ts (full-e2e): verify a benign unregistered home file remains after the supported lifecycle exercised by the target.

Amend or delete test/e2e/support/snapshot-commands-helpers.test.ts, test/e2e/support/snapshot-credential-scanner.test.ts, and the per-agent rebuild restore support fixtures. Keep credential exclusions only where the OpenShell placement contract requires them.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: architectureArchitecture, design debt, major refactors, or maintainabilityarea: sandboxOpenShell sandbox lifecycle, runtime, config, or recovery

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions