Skip to content

Portable onboarding does not prove default policy application finality #9206

Description

@senthilr-nv

Goal

On an accepted rootless Podman Linux host, fresh Portable OpenClaw onboarding must apply the accepted default policy set and reach authoritative finality.

When NEMOCLAW_POLICY_PRESETS is absent, empty, or whitespace-only, fresh onboarding must:

  • select exactly weather,public-reference,github;
  • preserve every mandatory baseline policy entry;
  • complete step 8/8;
  • confirm the applied policy through OpenShell readback; and
  • keep the sandbox and onboarding session resumable after a policy failure.

A nonblank NEMOCLAW_POLICY_PRESETS value remains authoritative. Resume must not inject the fresh default.

Scope authority

Epic #9200 records the accepted narrow-default decision and delivery order. Merged PR #9289 implements the fresh default. PR #9238 remains the separate status-preservation and temporary-cleanup slice.

This decision replaces the earlier requirement to compose personal-open-internet with the mandatory exact-host policies. The accepted default does not require an OpenShell host-exclusion capability.

Current gap

The previous personal-open-internet default overlapped mandatory exact-host policies with incompatible OpenShell metadata. Fresh onboarding then stopped before policy finality.

Merged PR #9289 excludes that broad preset from the implicit default. Explicit operator policy intent remains unchanged.

PR #9238 must still preserve an exact nonzero policy submission status through cleanup and resumable unwind.

Acceptance criteria

  • Default: Fresh absent, empty, or whitespace-only intent selects exactly weather,public-reference,github.
  • Override: Fresh nonblank operator intent remains authoritative.
  • Resume: Resume does not inject or restore the fresh default.
  • Allowed: The accepted default preserves mandatory baseline policies, completes onboarding 8/8, and supports one real routed-inference request.
  • Denied: Broad unapproved network access, loopback addresses, link-local addresses, metadata endpoints, and unapproved binaries, methods, or paths remain blocked.
  • Failure: A controlled invalid submission returns the exact OpenShell status and diagnostic. It must not update local preset attribution.
  • Recovery: A later onboarding resume uses the same sandbox identity after the operator corrects the owning prerequisite.
  • Cleanup: Temporary policy material is removed after success and failure.

Evidence

Exact PR #9289 commit 6df172770c11115b931f06390fdf417feedffa79 completed these boundaries on a dedicated L40S Brev host:

  • strict v2.1 host preparation and prerequisite reboot;
  • fresh public-installer onboarding 8/8;
  • exact qwen3.6:35b model selection without fallback;
  • sandbox Ready and direct CUDA proof;
  • exact weather,public-reference,github policy readback;
  • allowed weather access and denied broad example.com access;
  • connect --probe-only with status 0;
  • TUI gateway connected | idle; and
  • one real chat turn.

The Epic keeps stop/start, product-installed host restart, uninstall, and the protected complete-journey lane open.

Blockers and stop conditions

  • The merged current-main revision must repeat the policy evidence because its identity differs from the tested PR commit.
  • PR fix(policy): report the authoritative OpenShell policy result (#9206) #9238 must complete the status-preservation and temporary-cleanup slice before this issue closes.
  • Stop before weakening a mandatory baseline policy, explicit operator authority, resume authority, or failure status.

Out of scope

Pairing settlement, host restart, general lifecycle recovery, uninstall preservation, Hermes, and production Podman-provider activation remain separate work.

Metadata

Metadata

Assignees

Labels

area: onboardingOnboarding FSM, provider setup, sandbox launch, or first-run flowintegration: openclawOpenClaw integration behaviorplatform: containerAffects Docker, containerd, Podman, or imagessecurity

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions