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

fix(cli): admit remediable host storage#8922
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 Outdated
@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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants