Skip to content

fix(cli): admit remediable host storage - #8922

Merged
prekshivyas merged 2 commits into
mainfrom
codex/fix-host-probe-remediation-8849
Aug 13, 2026
Merged

prekshivyas merged 2 commits into
mainfrom
codex/fix-host-probe-remediation-8849

Conversation

@rsliter

@rsliter rsliter commented Aug 12, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

nemoclaw host probe now reports supported with exit code 0 when a Docker storage conflict is the sole blocker and a supported lifecycle remediation path is available.
The public report retains the storage conflict as a warning, while the strict internal readiness report remains incompatible for operation-specific admission.

Related Issue

Fixes #8849

Changes

  • Add a host-probe-specific public projection that uses the existing storage remediation predicate.
    A direct change to the shared public projection could admit remediation for unrelated consumers.
    Presentation tests protect the sole-blocker, unavailable-remediation, and additional-blocker cases.
  • Keep host.docker.storage_incompatible visible as a warning without mutating the strict readiness report.
  • Route host probe through the new projection and update its command tests.
  • Update the system readiness reference for the public exit status, strict internal report, and observation-only command boundary.
  • Record the detection gap with regression tests.
    Existing tests covered remediation availability but did not cover the public host-probe status and exit-code projection.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification:
  • Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging)
  • Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: Codex Desktop confirmed that host probe remains read-only, strict internal readiness remains fail-closed, and any additional blocking or fatal finding prevents the projection.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Documentation Writer Review

  • Documentation writer subagent reviewed the completed changes
  • Result: docs-updated
  • Evidence: docs/reference/system-readiness.mdx
  • Agent: Codex Desktop

DGX Station Hardware Evidence

  • Tested on DGX Station
  • Tested commit:
  • Station profile/scenario:
  • Result:
  • Supporting evidence:

Verification

  • PR description includes a Signed-off-by: line and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run validate:pr passed after refreshing origin/main when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result or justification: CLI readiness and host-probe source tests passed 63 tests; the sandbox agent surface parity integration test passed 1 test.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result:
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Targeted test commands:

npm exec -- vitest run --project cli src/lib/readiness/presentation.test.ts src/lib/readiness/host.test.ts --testTimeout=15000
npm exec -- vitest run --project cli src/commands/host/probe.test.ts --testTimeout=15000
npm exec -- vitest run --project integration test/sandbox-agent-surface-parity.test.ts --testTimeout=15000

The docs build completed with 0 errors and 2 existing warnings.
The CLI type check and build completed successfully.


Signed-off-by: Rebecca Sliter 571084+rsliter@users.noreply.github.com

Summary by CodeRabbit

  • New Features

    • Host readiness checks now recognize supported Docker storage remediation paths.
    • Remediable storage conflicts can report a supported status with exit code 0, while remaining visible as warnings.
    • Host probe results now consistently present readiness status and remediation outcomes.
  • Documentation

    • Clarified readiness status, exit-code behavior, and the distinction between compatibility results and public lifecycle admission.

Signed-off-by: Rebecca Sliter <571084+rsliter@users.noreply.github.com>
@rsliter rsliter self-assigned this Aug 12, 2026
@coderabbitai

coderabbitai Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: f1a70211-bd0a-4bdb-91f0-3f033c4246f8

📥 Commits

Reviewing files that changed from the base of the PR and between f1eb3a6 and 04c3fbc.

📒 Files selected for processing (1)
  • docs/reference/system-readiness.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/reference/system-readiness.mdx

📝 Walkthrough

Walkthrough

Host probing now uses a dedicated readiness projection. A sole remediable Docker storage conflict becomes supported with exit code 0 and warning severity. Other blocking findings remain incompatible. Tests and documentation cover this policy.

Changes

Host probe readiness policy

Layer / File(s) Summary
Host-probe readiness projection
src/lib/readiness/presentation.ts, src/lib/readiness/presentation.test.ts
Adds createPublicHostProbeReadinessReport. It projects a sole remediable storage conflict to supported with exit code 0 and warning severity. Tests cover unavailable remediation and additional blockers.
Host probe integration
src/lib/readiness/index.ts, src/commands/host/probe.ts, src/commands/host/probe.test.ts
Exports the new helper and updates host probing and its tests to use it.
Readiness policy documentation
docs/reference/system-readiness.mdx
Documents the difference between strict internal readiness and public lifecycle admission.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant HostProbeCommand
  participant createPublicHostProbeReadinessReport
  participant hasRemediableStorageConflict
  HostProbeCommand->>createPublicHostProbeReadinessReport: pass strict readiness report
  createPublicHostProbeReadinessReport->>hasRemediableStorageConflict: evaluate storage conflict
  hasRemediableStorageConflict-->>createPublicHostProbeReadinessReport: return remediation availability
  createPublicHostProbeReadinessReport-->>HostProbeCommand: return projected readiness report
Loading

Possibly related PRs

Suggested labels: area: cli, bug-fix

Suggested reviewers: cv, prekshivyas

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR satisfies the relevant host-probe objective in [#8849] by admitting remediable storage conflicts without changing strict readiness.
Out of Scope Changes check ✅ Passed The changes remain within scope: implementation, tests, exports, and documentation for remediable host storage admission.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main CLI change: admitting remediable host storage conflicts.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/fix-host-probe-remediation-8849

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

@github-code-quality

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

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit 04c3fbc in the codex/fix-host-probe... branch remains at 96%, unchanged from commit 7c721ae in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit 04c3fbc in the codex/fix-host-probe... branch remains at 82%, unchanged from commit 7c721ae in the main branch.

Show a code coverage summary of the most impacted files.
File main 7c721ae codex/fix-host-probe... 04c3fbc +/-
src/lib/cua/bounded-file.ts 94% 84% -10%
src/lib/cua/run...ime-manifest.ts 91% 84% -7%
src/lib/cua/contract.ts 87% 80% -7%
src/lib/messagi.../ilink-login.ts 96% 89% -7%
src/lib/trace.ts 94% 90% -4%
src/lib/state/o...d-checkpoint.ts 90% 87% -3%
src/lib/onboard...press-resume.ts 78% 82% +4%
src/lib/securit...ntial-filter.ts 91% 95% +4%
src/lib/agent/dashboard-ui.ts 91% 98% +7%
src/lib/onboard...der/snapshot.ts 75% 83% +8%

Updated August 12, 2026 21:16 UTC

@github-actions

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/reference/system-readiness.mdx`:
- Line 120: Update the status and exit-code rule in system-readiness
documentation to require host.docker.storage_remediation_available in addition
to host.docker.storage_incompatible being the sole blocking finding. State that
without the remediation capability, the host must not be reported as supported.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 64d70256-19ba-4dfa-ba98-89c3def4eccb

📥 Commits

Reviewing files that changed from the base of the PR and between 7c721ae and f1eb3a6.

📒 Files selected for processing (6)
  • docs/reference/system-readiness.mdx
  • src/commands/host/probe.test.ts
  • src/commands/host/probe.ts
  • src/lib/readiness/index.ts
  • src/lib/readiness/presentation.test.ts
  • src/lib/readiness/presentation.ts

Comment thread docs/reference/system-readiness.mdx Resolved
@github-actions

github-actions Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings reported

Advisor assessment: No blocking advisor findings reported
Next action: Review the warnings below.
Findings: 0 blockers · 1 warning · 0 suggestions

Model lanes

  • GPT-5.6 Terra (primary): Completed · high confidence · 0 blockers · 1 warning · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Completed · high confidence · 0 blockers · 1 warning · 0 suggestions
  • Model comparison: normalized findings differ; normalized terminology decisions differ; normalized E2E selections differ; severity counts match.
8 terminology differences from the second opinion

Advisory only. These are normalized differences from the primary terminology receipt.

  • remediation path at docs/reference/system-readiness.mdx:40: selected only by the second-opinion lane as established.
  • hasRemediableStorageConflict at src/lib/readiness/presentation.ts:288: selected only by the second-opinion lane as established.
  • host probe at docs/reference/system-readiness.mdx:120: selected only by the second-opinion lane as established.
  • read-only host probe policy at src/lib/readiness/presentation.ts:283: selected only by the second-opinion lane as established.
  • strict internal readiness at docs/reference/system-readiness.mdx:117: selected only by the second-opinion lane as define.
  • operation-specific admission at docs/reference/system-readiness.mdx:117: selected only by the second-opinion lane as define.
  • createPublicHostProbeReadinessReport at src/lib/readiness/presentation.ts:284: selected only by the second-opinion lane as define.
  • supported lifecycle remediation at src/lib/readiness/presentation.test.ts:63: selected only by the second-opinion lane as replace.
3 additional E2E selections from the second opinion

Advisory only. The primary lane did not select these E2E jobs or targets.

  • bootstrap-install-smoke: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • onboard-resume: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • onboard-repair: The completed second-opinion lane identified E2E coverage that the primary lane omitted.

Second-opinion terminology and E2E selections are advisory. Live E2E does not run automatically for pull requests.

3 semantic terminology decisions

Terminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.

  • define — strict internal readiness report at docs/reference/system-readiness.mdx:117: Define this report as the shared unprojected report on first use, as the changed sentence does.
  • established — public projection at docs/reference/system-readiness.mdx:122: Keep the established term for the host probe report view.
  • established — supported remediation path at docs/reference/system-readiness.mdx:40: Keep this established term to distinguish lifecycle remediation from current compatibility.

E2E guidance

Advisory only. A maintainer can dispatch the default E2E suite for the commit under review.

Recommended E2E: None

2 optional E2E recommendations
  • overlayfs-autofix
  • vllm-docker-storage
1 warning · 0 suggestions

Warnings

Warnings do not block.

PRA-1 Warning — Test the host probe with the remediable storage projection

  • Location: src/commands/host/probe.test.ts:16
  • Category: tests
  • Problem: The command test replaces createPublicHostProbeReadinessReport with an identity mock. It does not prove that host probe converts the strict remediable-storage report to supported with exit code 0.
  • Impact: A wiring change can bypass or replace the host-probe projection while presentation tests still pass, leaving CLI JSON and human output incompatible for the remediable storage case.
  • Recommendation: Add a command-level test that returns the strict remediable-storage report from createSystemReadinessReport, uses the actual host-probe projection, and checks supported status and exit code 0 for JSON and human output.
  • Verification: Read src/commands/host/probe.test.ts and confirm the changed projection remains mocked as an identity function in every command test.
  • Test coverage: Run HostProbeCommand with a strict incompatible report that has only host.docker.storage_incompatible, absent storage compatibility, and present remediation. Assert both output modes report supported and exit code 0.
  • Evidence: src/commands/host/probe.test.ts:16 mocks createPublicHostProbeReadinessReport. src/commands/host/probe.test.ts:79 sets the projection mock to return its input. src/commands/host/probe.ts:36 applies createPublicHostProbeReadinessReport before setting the CLI exit code. src/lib/readiness/presentation.test.ts:64 tests the projection below the command boundary.

Workflow run details

This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge.

Signed-off-by: Rebecca Sliter <571084+rsliter@users.noreply.github.com>
@prekshivyas
prekshivyas merged commit a44610a into main Aug 13, 2026
83 of 91 checks passed
@prekshivyas
prekshivyas deleted the codex/fix-host-probe-remediation-8849 branch August 13, 2026 02:53
@wscurran wscurran added the bug-fix PR fixes a bug or regression label Aug 25, 2026
@wscurran wscurran added area: cli Command line interface, flags, terminal UX, or output area: docs Documentation, examples, guides, or docs build area: security Security controls, permissions, secrets, or hardening platform: container Affects Docker, containerd, Podman, or images labels Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: cli Command line interface, flags, terminal UX, or output area: docs Documentation, examples, guides, or docs build area: security Security controls, permissions, secrets, or hardening bug-fix PR fixes a bug or regression platform: container Affects Docker, containerd, Podman, or images

Projects

None yet

4 participants