Skip to content

fix(ci): complete main-only lifecycle evidence - #8771

Merged
jyaunches merged 5 commits into
mainfrom
fix/main-managed-lifecycle-evidence
Aug 11, 2026
Merged

fix(ci): complete main-only lifecycle evidence#8771
jyaunches merged 5 commits into
mainfrom
fix/main-managed-lifecycle-evidence

Conversation

@cv

@cv cv commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Follow up merged PR #8761 with literal main-publisher trigger paths and accurate post-promotion lifecycle evidence.
The change preserves main-only managed image lifecycle verification while removing stale or ambiguous contributor and security guidance.

Changes

  • Replace the wildcard base-image trigger with literal lifecycle test and helper paths accepted by the publication path validator.
  • Document the local growth-contract count ratchets and the enforced JavaScript extensions.
  • Document that managed image lifecycle verification runs after the promote job, does not gate PRs, and does not roll back promotion failures.
  • Align growth-contract and qualification test titles with their current behavior.

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: Base-image publication, lifecycle qualification, and documentation trust boundaries have focused positive and negative tests.
  • 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: Reviewed AGENTS.md, CONTRIBUTING.md, docs/security/openclaw-2026.6.10-dependency-review.md, and docs/security/openshell-0.0.99-migration-review.md. No user-guide variant update is required. npm run docs passed.
  • Agent: Pi CLI

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: Base-image publication support passed 39 tests; four integration files passed 50 tests; npm run typecheck:cli, npm run checks:repository, and npm run test:e2e-phases:check passed.
  • 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)

Signed-off-by: Carlos Villela cvillela@nvidia.com

Summary by CodeRabbit

  • Documentation

    • Clarified testing guidance for conditional-count budgets and JavaScript path restrictions.
    • Updated security review guidance for managed-image lifecycle qualification.
    • Documented validation across published image versions, onboarding, agent turns, recovery, and destruction.
  • Tests

    • Refined test descriptions to better explain growth guardrails and qualification requirements.
  • Chores

    • Narrowed automated workflow triggers to the relevant managed-image end-to-end tests.

@cv cv self-assigned this Aug 11, 2026
@coderabbitai

coderabbitai Bot commented Aug 11, 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: ff492fef-b43d-4462-837d-c563bec19a30

📥 Commits

Reviewing files that changed from the base of the PR and between 505f536 and ad384cf.

📒 Files selected for processing (8)
  • .github/workflows/base-image.yaml
  • AGENTS.md
  • CONTRIBUTING.md
  • docs/security/openclaw-2026.6.10-dependency-review.md
  • docs/security/openshell-0.0.99-migration-review.md
  • test/codebase-growth-contract.test.ts
  • test/growth-guardrails-entrypoints.test.ts
  • test/openshell-e2e-qualification.test.ts

📝 Walkthrough

Walkthrough

Changes

Validation and documentation updates

Layer / File(s) Summary
Managed-image workflow triggers
.github/workflows/base-image.yaml
The workflow now watches the main managed-image E2E test and its helper file explicitly.
Growth guardrails and test guidance
AGENTS.md, CONTRIBUTING.md, docs/security/openclaw-2026.6.10-dependency-review.md, test/*growth*, test/openshell-e2e-qualification.test.ts
Guidance and test descriptions now refer to increased conditional counts, JavaScript paths, current language policy, and local versus PR test-budget checks.
Managed-image qualification documentation
docs/security/openshell-0.0.99-migration-review.md
The migration review documents post-promotion lifecycle qualification timing, coverage, gating behavior, and cohort-pointer handling.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested labels: area: ci, area: e2e, chore, v0.0.106

Suggested reviewers: ericksoa, sandl99

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the CI change to complete main-only managed image lifecycle evidence.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/main-managed-lifecycle-evidence

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

@github-actions

Copy link
Copy Markdown
Contributor

@github-code-quality

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit ad384cf in the fix/main-managed-lif... branch remains at 96%, unchanged from commit 4fbec14 in the main branch.

@github-actions

github-actions Bot commented Aug 11, 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): Failed after a partial review · low confidence · 0 blockers · 0 warnings · 0 suggestions

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 — managed image lifecycle job at docs/security/openshell-0.0.99-migration-review.md:187: Define this job at first use when the document addresses readers outside the workflow context.
  • justified — PR base commit at AGENTS.md:118: Keep the modifier because it identifies the comparison commit required by the pull request check.
  • established — if-statement count at test/codebase-growth-contract.test.ts:29: Use this established term for the growth-contract metric.

E2E guidance

Advisory only. A maintainer can dispatch the default E2E suite against this exact revision.

Recommended E2E: None

1 warning · 0 suggestions

Warnings

Warnings do not block.

PRA-1 Warning — Require the literal lifecycle trigger paths in the publication contract test

  • Location: test/e2e/support/base-image-publication.test.ts:175
  • Category: tests
  • Problem: The base-image publication support test parses the push paths but does not require either literal managed-image activation path added by this change.
  • Impact: A later edit can remove either literal path or restore an unsupported wildcard without a focused contract failure. Changes to the activation test or helper would then not rebuild published managed images.
  • Recommendation: Add both literal lifecycle paths to the required parsed-path assertions.
  • Verification: Read `test/e2e/support/base-image-publication.test.ts` and confirm its parsed-path assertions require both literal lifecycle inputs.
  • Test coverage: In `test/e2e/support/base-image-publication.test.ts`, assert that both literal lifecycle paths are present in `parseBaseImagePushPaths` output.
  • Evidence: .github/workflows/base-image.yaml:26-27 adds the two literal lifecycle trigger paths. test/e2e/support/base-image-publication.test.ts:175-202 parses and asserts the trigger paths but omits both added literals. test/e2e/support/base-image-publication.test.ts:207-223 replaces `Dockerfile.base` with `Dockerfile.*` and expects `not a safe literal path`. test/e2e/support/base-image-publication.test.ts:175-202 omits `test/e2e/live/managed-image-activation-e2e.test.ts` and `test/e2e/live/managed-image-activation-e2e-helpers.ts` from its required paths.

Workflow run details

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

@jyaunches
jyaunches merged commit 1fbfc90 into main Aug 11, 2026
71 of 72 checks passed
@jyaunches
jyaunches deleted the fix/main-managed-lifecycle-evidence branch August 11, 2026 01:33
cv added a commit that referenced this pull request Aug 11, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Require both literal managed lifecycle files in the base-image publisher
path contract.
This preserves the main-only lifecycle trigger added by merged PR #8771.

## Changes

- Assert that `test/e2e/live/managed-image-activation-e2e.test.ts`
triggers the main publisher.
- Assert that `test/e2e/live/managed-image-activation-e2e-helpers.ts`
triggers the main publisher.

## Type of Change

- [x] 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

- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [ ] Docs updated for user-facing behavior changes
- [x] Docs not applicable — justification: This test asserts existing
main-publisher path behavior and does not change a documented surface.
- [ ] 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:
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Documentation Writer Review

- [x] Documentation writer subagent reviewed the completed changes
- Result: `no-docs-needed`
- Evidence: The test covers two existing literal workflow paths and
changes no public command, configuration, default, error, or agent
variant.
- Agent: Pi CLI
<!-- docs-review-head-sha: db0240b -->
<!-- docs-review-agents-blob-sha: fca0e02 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit:
- Station profile/scenario:
- Result:
- Supporting evidence:

## Verification

- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] 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
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: `npx
vitest run --project e2e-support
test/e2e/support/base-image-publication.test.ts` passed 39 tests.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

---
Signed-off-by: Carlos Villela <cvillela@nvidia.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Tests**
  * Expanded end-to-end coverage for managed-image activation.
  * Added helper paths to the reviewed base-image workflow expectations.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
jyaunches added a commit that referenced this pull request Aug 11, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Fully reverts PR #8761 and its dependent follow-up PR #8771 as a release
contingency. This restores the codebase growth guardrails, managed-image
workflow, and related repository contracts to their state before #8761.

## Changes

- Reverts the complete #8761 squash commit.
- Reverts #8771 first because it modifies files introduced by #8761 and
cannot remain independently.
- Restores the pre-#8761 workflow, test, script, and
contributor-documentation behavior.

## Type of Change

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

## Quality Gates

- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [ ] Docs updated for user-facing behavior changes
- [x] Docs not applicable — justification: This revert restores the
documentation that existed before #8761; it does not introduce a new
user-facing behavior.
- [x] 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:
- [ ] 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: `blocked`
- Evidence: Independent documentation writer review was unavailable in
the isolated contingency preparation session. The documentation changes
are exact reversions from the #8761/#8771 stack.
- Agent: Codex Desktop
<!-- docs-review-head-sha: b42ab51 -->
<!-- docs-review-agents-blob-sha: c4923a3 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit:
- Station profile/scenario:
- Result:
- Supporting evidence:

## Verification

- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] 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
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: `npm
exec -- vitest run test/growth-guardrails-entrypoints.test.ts
test/growth-guardrails-workflow-boundary.test.ts
test/managed-image-publication-workflow.test.ts
test/openshell-e2e-qualification.test.ts
test/vitest-developer-feedback.test.ts` — 5 files and 58 tests passed.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: `npm run check` passed all
pre-commit checks and entered CLI coverage; the optional broad run was
interrupted after 30 minutes to publish the requested contingency PR.
- [ ] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

---
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
jyaunches added a commit that referenced this pull request Aug 11, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Installer host preflight adopted canonical readiness admission in #8738
but hardcoded storage remediation off. Managed Docker
overlayfs/containerd hosts therefore exited before onboarding could
build the documented `fuse-overlayfs` replacement image. This change
derives the waiver from canonical gateway lifecycle authority, keeps
external, invalid, and non-remediable states blocked, and reports
bounded admission IDs when preflight fails.

The first manual PR E2E run then exposed a separate parser mismatch
after installer preflight: the generic GPU host reported valid NVIDIA
driver `595.84`, while the detector required exactly three numeric
components. The bounded follow-up accepts two- or three-component NVIDIA
versions without changing the minimum, resolver, schema, or supported
surface.

## Changes

- Allow the installer storage exception only when the canonical
gateway-management declaration is valid and absent or explicitly
`nemoclaw-managed`; normal onboarding revalidates that authority before
lifecycle effects.
- Print deduplicated finding and capability IDs that satisfy the
readiness schema's stable-ID grammar and length limit.
- Cover absent and explicit managed authority, external supervision,
invalid authority, non-remediable storage, onboarding continuation, and
unsafe diagnostic input in installer integration tests.
- Accept bounded two- or three-component NVIDIA driver versions while
retaining numeric comparison, identical multi-GPU inventory, and
fail-closed malformed-input behavior.

## Type of Change

- [x] 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

- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [ ] Docs updated for user-facing behavior changes
- [x] Docs not applicable — justification: this restores the documented
managed-only storage remediation path and accepts a valid NVIDIA driver
form above the existing documented `580.65.06` minimum. It adds no
command, configuration, schema, minimum, or support claim.
- [x] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [x] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: an independent Codex
Desktop review of exact head `4d78d7355` on base `acda7aa22` passed all
nine security categories with no findings. It verified canonical
authority parsing and revalidation, managed-only lifecycle effects,
fail-closed external/invalid/non-remediable states, sanitized admission
IDs, and strict bounded driver parsing.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Documentation Writer Review

- [x] Documentation writer subagent reviewed the completed changes
- Result: `no-docs-needed`
- Evidence: `docs/get-started/prerequisites.mdx`,
`docs/reference/system-readiness.mdx`, and
`docs/deployment/gateway-lifecycle-authority.mdx` already document
managed storage remediation and external lifecycle authority.
`docs/inference/set-up-llama-cpp.mdx` already requires NVIDIA driver
version `580.65.06` or later; accepting valid two- or three-component
versions restores that contract. The generic Linux preset remains
explicit-only and experimental.
- Agent: Codex Desktop
<!-- docs-review-head-sha: 4d78d73 -->
<!-- docs-review-agents-blob-sha: fca0e02 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit:
- Station profile/scenario:
- Result:
- Supporting evidence:

## Verification

- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] 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
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result:
- `npm exec -- vitest run --project installer-integration
test/install-preflight.test.ts --maxWorkers=4` — exact reviewed patch
passed 98/99; the unrelated five-second release-tag fixture timed out,
then passed alone 1/1. The six changed readiness cases passed, and the
byte-identical pre-merge candidate passed 99/99 under the same worker
limit.
- `npm exec -- vitest run --project cli
src/lib/inference/nim-driver-version.test.ts
src/lib/inference/llama-cpp/managed-selection.test.ts
src/lib/inference/serving/resolver.test.ts` — 49/49 passed.
- `npm exec -- vitest run --project e2e-support
test/e2e/support/base-image-publication.test.ts` — 39/39 passed after
merging upstream repairs #8771 and #8772.
- `npm run test:changed` — passed; the clean checkout selected no CLI,
plugin, or E2E-support source tests and the integrated growth contract
passed 4/4.
- `npm run validate:pr` — passed all pre-commit, commit-message, and
pre-push checks at exact head.
- The requested `npm exec -- vitest run --project integration
test/install-preflight.test.ts` reports no matching tests because
project membership assigns this file to `installer-integration`; the
owning lane is recorded above.
- Ordinary manual PR E2E [run
31444706504](https://github.com/NVIDIA/NemoClaw/actions/runs/31444706504)
passed six of the seven installer-path jobs at the prior head.
`llama-cpp-generic-gpu` passed installer preflight and exposed the
two-component driver parser mismatch fixed here. Exact-head E2E is
pending.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: not applicable to these
bounded installer-admission and driver-parser changes; targeted
installer and CLI suites plus required CI are the applicable evidence.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

---

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Bug Fixes**
- Installer preflight now limits storage remediation to supported,
explicitly managed gateway configurations.
- Host-admission failures provide validated, deduplicated finding and
capability identifiers alongside existing diagnostics.
- Installer onboarding behavior and failure reporting are now more
consistent across gateway lifecycle states.
- NVIDIA driver detection more reliably handles repeated version output
and rejects malformed or contaminated results.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants