ci(release): automate post-merge daily editions - #8479
Conversation
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThe release process now freezes a 4 PM Pacific candidate, cuts a signed tag at 4 AM, and hands off release state at 8 AM. E2E runs provide advisory diagnostics. Release plans use schema version 2 and frozen candidate metadata. CI adds deterministic smoke coverage and exact-SHA post-merge review dispatch. ChangesDaily release policy
Release planning and automation
CI and validation
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
🌿 Preview your docs: https://nvidia-preview-pr-8479.docs.buildwithfern.com/nemoclaw |
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
PR Review Advisor — No blocking findings reportedAdvisor assessment: No blocking advisor findings reported Model lanes
8 terminology differences from the second opinionAdvisory only. These are normalized differences from the primary terminology receipt.
Second-opinion terminology and E2E selections are advisory. Live E2E does not run automatically for pull requests. 3 semantic terminology decisionsTerminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.
E2E guidanceAdvisory only. A maintainer can dispatch the default E2E suite against this exact revision. Recommended E2E: This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (2)
.github/workflows/release-edition-close.yaml (1)
6-11: 🩺 Stability & Availability | 🔵 TrivialConsider a manual recovery path for a failed freeze.
The workflow runs only on the schedule. If the 4:17 PM run fails or GitHub skips the cron, no
release-edition-plan-YYYY-MM-DDartifact exists, and the 4 AM cut in .github/workflows/release-edition-cut.yaml cannot find a successful close artifact. A re-run of the failed scheduled run keeps thescheduleevent, so it still works, but a delayed re-run recomputes the cutoff from the new wall-clock time.Two operational options keep the freeze recoverable. First, add alerting on a failed
Release / Edition Closerun so a maintainer reacts before 4 AM. Second, if a manual path is added later, keep it separate from the scheduled authorization boundary thatscripts/release-cut-tag.shenforces, because that script requiresGITHUB_EVENT_NAME == schedulefor scheduled cuts.🤖 Prompt for 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. In @.github/workflows/release-edition-close.yaml around lines 6 - 11, Make the scheduled edition-close workflow recoverable by adding failure alerting for the “Release / Edition Close” run, allowing a maintainer to react before the 4 AM cut. Keep any future manual recovery path separate from the scheduled authorization boundary enforced by scripts/release-cut-tag.sh, which requires GITHUB_EVENT_NAME to remain schedule..agents/skills/nemoclaw-maintainer-e2e/SKILL.md (1)
161-164: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winMake the inventory check fail closed on an empty run set.
jq -e 'all(...)'returns true for an empty array. If no main-push run matches the window, the snippet succeeds and the agent proceeds with no evidence, although line 164 states that more than one run is expected. Add a length assertion.♻️ Proposed guard
jq -e 'all(.[]; (.headSha // "") | test("^[0-9a-f]{40}$"))' <<<"$MATCHES" >/dev/null +test "$(jq 'length' <<<"$MATCHES")" -ge 1🤖 Prompt for 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. In @.agents/skills/nemoclaw-maintainer-e2e/SKILL.md around lines 161 - 164, Update the inventory validation around the jq all(...) check to require a non-empty run set before validating every headSha. Make the command fail when MATCHES is empty, while preserving the existing 40-character SHA validation and downstream pending/exclusion behavior.
🤖 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 @.agents/skills/nemoclaw-maintainer-e2e/SKILL.md:
- Around line 149-162: Rename the plan-derived variable in the release-plan
snippet from CANDIDATE_SHA to FROZEN_CANDIDATE_SHA so it remains distinct from
the later origin/main assignment and matches the comparison at line 203. Update
the ancestry requirement near the validation step to reference
FROZEN_CANDIDATE_SHA as well.
In `@test/maintainer-skills-policy.test.ts`:
- Around line 269-270: Remove the duplicated assertion in the policy test and
restore the distinct cutoff-aware release-planning assertion intended by the
change. Keep one assertion for the existing contributor-update command and make
the second assertion target the exact cutoff-aware planning text expected in
policy.
In `@test/release-latest-tag.test.ts`:
- Around line 558-563: The existing lateCommit timestamp is before the edition
cutoff, so update it to 2026-08-06T16:30:00-07:00 and extend the
release-latest-tag tests around commitReleaseAt to cover a
--candidate-recorded-at value after the cutoff, asserting the error contains
“Candidate source time ... is after edition cutoff”.
---
Nitpick comments:
In @.agents/skills/nemoclaw-maintainer-e2e/SKILL.md:
- Around line 161-164: Update the inventory validation around the jq all(...)
check to require a non-empty run set before validating every headSha. Make the
command fail when MATCHES is empty, while preserving the existing 40-character
SHA validation and downstream pending/exclusion behavior.
In @.github/workflows/release-edition-close.yaml:
- Around line 6-11: Make the scheduled edition-close workflow recoverable by
adding failure alerting for the “Release / Edition Close” run, allowing a
maintainer to react before the 4 AM cut. Keep any future manual recovery path
separate from the scheduled authorization boundary enforced by
scripts/release-cut-tag.sh, which requires GITHUB_EVENT_NAME to remain schedule.
🪄 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: 418c1370-610e-4fbb-8a75-7b9af96ad0af
📒 Files selected for processing (30)
.agents/skills/nemoclaw-maintainer-cut-release-tag/SKILL.md.agents/skills/nemoclaw-maintainer-cut-release-tag/scripts/release-e2e-evidence.mts.agents/skills/nemoclaw-maintainer-day/PR-REVIEW-PRIORITIES.md.agents/skills/nemoclaw-maintainer-e2e/SKILL.md.agents/skills/nemoclaw-maintainer-evening/SKILL.md.agents/skills/nemoclaw-maintainer-morning/SKILL.md.agents/skills/nemoclaw-maintainer-policies/references/daily-flow.md.agents/skills/nemoclaw-maintainer-policies/references/release-train.md.agents/skills/nemoclaw-maintainer-release-notes/SKILL.md.agents/skills/nemoclaw-skills-guide/SKILL.md.github/actions/ci-build-typecheck/action.yaml.github/workflows/post-merge-agent-review.yaml.github/workflows/pr-review-advisor.yaml.github/workflows/release-edition-close.yaml.github/workflows/release-edition-cut.yaml.github/workflows/release-latest-tag.yamlci/source-shape-test-budget.jsonpackage.jsonscripts/release-cut-tag.shscripts/release-notes-data.mtsscripts/release-plan.mtsscripts/release-wait-latest.shtest/deterministic-smoke-workflow.test.tstest/maintainer-e2e-skill.test.tstest/maintainer-skills-policy.test.tstest/package-contract/deterministic-smoke.test.tstest/release-e2e-evidence.test.tstest/release-edition-workflow.test.tstest/release-latest-tag-workflow.test.tstest/release-latest-tag.test.ts
💤 Files with no reviewable changes (2)
- test/release-e2e-evidence.test.ts
- .agents/skills/nemoclaw-maintainer-cut-release-tag/scripts/release-e2e-evidence.mts
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
|
Addressed the current CodeRabbit findings in |
|
Optional CI follow-up: |
|
Superseded by #8483. The replacement keeps #8477 as the sole owner of all-E2E-on-main behavior and limits this follow-up to the nonblocking 4 PM tag plus removal of the pre-tag E2E release gate. It intentionally drops the merge freeze, 4 AM cut, frozen candidate, Advisor artifact workflow, and smoke/signing changes from this PR. |
Summary
Automates the frozen daily release edition around the all-workflows-on-main E2E model in #8477. Every merge receives an immutable run selecting every workflow E2E, a separate exact-
before...afterAdvisor review retained as an artifact, and the 4 AM tag is cut from the 4 PM candidate regardless of advisory E2E state.Depends on #8477. This PR is intentionally stacked on
ci/e2e-all-workflow-mainso Carlos's E2E workflow remains the single source of truth.Changes
mainSHA in a provenance-bound edition plan after the 4 PM close.mainpush range without allowing later pushes to cancel earlier reviews.Type of Change
Quality Gates
00a606270; both advisor models succeeded and Terra recommendsmerge_as_iswith high confidence and no findings. The latest merge commit changes ancestry only, not the PR tree.Documentation Writer Review
no-docs-neededtest/e2e/README.mdandtest/e2e/docs/README.md; the release-train delta is maintainer-only and changes no public product contract.DGX Station Hardware Evidence
Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run validate:prpassed after refreshingorigin/mainwhen hooks were skipped or unavailablenpm run test:smokepassed 2/2.npm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — command/result: not run; targeted coverage and normal hooks cover the changed workflow and release surfaces.npm run docsbuilds without warnings (doc changes only)Signed-off-by: Charan Jagwani cjagwani@nvidia.com