Skip to content

ci(e2e): unify maintainer approval - #7678

Closed
prekshivyas wants to merge 14 commits into
mainfrom
codex/maintainer-e2e-approval
Closed

ci(e2e): unify maintainer approval#7678
prekshivyas wants to merge 14 commits into
mainfrom
codex/maintainer-e2e-approval

Conversation

@prekshivyas

@prekshivyas prekshivyas commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

Replace the two protected-environment approval paths with one maintainer-only approve-e2e workflow operation for internal and fork PRs. The controller binds approval to the exact PR, head SHA, base SHA, deterministic plan, pending coordination check, trusted workflow commit, verified child evidence, and an approver who did not contribute to the PR.

Changes

  • remove the environment-gated approval job, outputs, API validation, and duplicate execution modes
  • require the trusted manual workflow actor to have current maintain or admin permission
  • reject the PR opener and every GitHub-associated commit author or co-author before coordination mutation or credentialed dispatch
  • fail closed when GitHub cannot associate every current commit author or co-author with an account
  • publish the exact PR, head SHA, base SHA, and deterministic plan in pending guidance
  • preserve live-revision, dispatch-reconciliation, cancellation, and evidence validation
  • update E2E and maintainer guidance plus security contract tests

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: Nine-category exact-head security review passed and records why this self-authored PR still requires independent merge approval.
  • 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: .agents/skills/nemoclaw-maintainer-day/MERGE-GATE.md and test/e2e/README.md consistently document independent approval, unresolved contributor-identity failure, exact-revision validation, and pre-dispatch enforcement. Changed test titles follow WRITING.md; no blocking documentation finding remains. The final head passes 16 files / 280 tests plus CLI typechecking, Biome, diff check, and normal hooks.
  • 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 check:diff passed when hooks were skipped or unavailable
  • Targeted behavior tests pass — npx vitest run --project integration test/pr-e2e-gate*.test.ts test/pr-e2e-required.test.ts test/maintainer-skills-policy.test.ts (16 files, 280 tests)
  • Applicable broad gate passed — local CLI typecheck, Biome, and diff checks pass; exact-head CI and automated review are pending
  • 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: Prekshi Vyas prekshiv@nvidia.com

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

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.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR consolidates PR E2E authorization into a maintainer-driven approve-e2e workflow and controller path, removes legacy approval modes and jobs, updates fork and internal approval messaging, and revises workflow, lifecycle, recovery, and authorization tests.

Changes

Maintainer E2E approval

Layer / File(s) Summary
Controller command and output contracts
tools/e2e/pr-e2e-gate.mts, test/pr-e2e-gate-command.test.ts
Adds the approve-e2e command contract and entrypoint, rejects legacy modes, and updates controller routing and output behavior.
Workflow approve-e2e dispatch
.github/workflows/pr-e2e-gate.yaml, test/pr-e2e-gate-workflow.test.ts, test/e2e/support/...
Restricts manual dispatch to approve-e2e, routes coordination through the new mode, removes the separate approval job, and updates workflow assertions.
Maintainer approval orchestration
tools/e2e/pr-e2e-gate.mts, .agents/skills/nemoclaw-maintainer-day/MERGE-GATE.md, test/e2e/README.md, test/maintainer-skills-policy.test.ts
Updates authorization titles, exact-SHA approval inputs, maintainer permission checks, fork handling, recovery guidance, and documented approval procedures.
Approval lifecycle and regression coverage
test/pr-e2e-gate-*.test.ts, test/pr-e2e-required.test.ts
Updates fork, internal, retry, recovery, cancellation, supersession, and coordination-state tests for maintainer approval semantics.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Maintainer
  participant PRGateWorkflow
  participant E2EController
  participant CoordinationCheck
  participant E2EJobs
  Maintainer->>PRGateWorkflow: Dispatch approve-e2e with PR, SHA, and reason
  PRGateWorkflow->>E2EController: Start evaluation with --mode approve-e2e
  E2EController->>CoordinationCheck: Validate and update authorization state
  E2EController->>E2EJobs: Dispatch selected E2E jobs
  E2EJobs->>CoordinationCheck: Publish completion evidence
Loading

Possibly related PRs

Suggested labels: feature

Suggested reviewers: cv, jyaunches, sandl99

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately reflects the main change: consolidating E2E approval paths into a maintainer-only approval flow.
✨ 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 codex/maintainer-e2e-approval

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

@prekshivyas prekshivyas added area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure area: security Security controls, permissions, secrets, or hardening labels Jul 28, 2026
@github-code-quality

github-code-quality Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit 7604293 in the codex/maintainer-e2e... branch remains at 96%, unchanged from commit 125ca30 in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit 7604293 in the codex/maintainer-e2e... branch remains at 81%, unchanged from commit cf34b72 in the main branch.

Show a code coverage summary of the most impacted files.
File main cf34b72 codex/maintainer-e2e... 7604293 +/-
src/lib/onboard...ndbox-create.ts 83% 33% -50%
src/lib/onboard...-create-plan.ts 88% 75% -13%
src/lib/onboard...ndbox-create.ts 91% 83% -8%
src/lib/onboard...etson-groups.ts 100% 96% -4%
src/lib/sandbox...rce-identity.ts 88% 88% 0%
src/lib/onboard...e-patch-flow.ts 71% 76% +5%

Updated July 29, 2026 02:52 UTC

@prekshivyas

Copy link
Copy Markdown
Collaborator Author

Security review

Verdict

PASS. The PR narrows credentialed E2E authorization to repository maintainers and administrators and preserves the existing exact-revision, deterministic-plan, trusted-workflow, dispatch-reconciliation, cancellation, and evidence checks. I found no security vulnerability or warning that blocks merge.

Findings

No findings.

Detailed analysis

  1. Secrets and credentials — PASS. No secret, token, key, environment secret, or credential value is added. The removed environment job carried only a job-scoped token, and the remaining workflow continues to receive github.token through the trusted workflow. Gitleaks and private-key detection passed.
  2. Input validation and data sanitization — PASS. The controller validates positive IDs, 40-character SHAs, maintainer login syntax, first workflow attempt, a normalized 10–500-character review reason, exact PR identity, and deterministic plan selections. Workflow values remain inert shell arguments.
  3. Authentication and authorization — PASS. GitHub supplies github.triggering_actor; the controller requires the matching collaborator record to have maintain or admin. Both internal and fork approvals require the exact pending title for the live PR/head/base pair before dispatch.
  4. Dependencies and third-party libraries — PASS. No dependency or third-party action changed.
  5. Error handling and logging — PASS. Review reasons are normalized, controller errors remain bounded, and no token or secret is logged. Uncertain or ambiguous dispatch remains terminal and attempts child cancellation.
  6. Cryptography and data protection — PASS. No cryptographic behavior changed. Existing SHA-256 state binding and private controller workspace handling remain intact.
  7. Configuration and security headers — PASS. Workflow permissions remain least-privilege (actions and checks write only where required; contents and pull requests read). Manual approval is restricted to a first-attempt workflow on main.
  8. Security testing — PASS. The contracts cover non-maintainer rejection, maintainer-approved internal and fork dispatch, stale head/base rejection, completed or mismatched gate rejection, incompatible main, ambiguous dispatch reconciliation, child-cancellation failure, inert shell arguments, and removal of the protected-environment modes. The full PR-gate suite passed: 15 files, 260 tests.
  9. System security — PASS. The change removes a second authorization implementation without weakening the live-revision and TOCTOU checks. Permission is checked before plan resolution; the PR is read three times around plan construction and immediately before dispatch; the coordination check and child authorization remain bound to the exact PR/head/base and trusted workflow commit.

Files reviewed

  • .agents/skills/nemoclaw-maintainer-day/MERGE-GATE.md
  • .github/workflows/pr-e2e-gate.yaml
  • test/e2e/README.md
  • test/pr-e2e-gate-command.test.ts
  • test/pr-e2e-gate-dispatch-recovery.test.ts
  • test/pr-e2e-gate-fork-approval.test.ts
  • test/pr-e2e-gate-internal-approval.test.ts (deleted)
  • test/pr-e2e-gate-lifecycle.test.ts
  • test/pr-e2e-gate-retry-history.test.ts
  • test/pr-e2e-gate-workflow.test.ts
  • test/pr-e2e-required.test.ts
  • tools/e2e/pr-e2e-gate.mts

Reviewed commit: 76a644b95bb7091c1d635f5dcb414a6b9baa05ab

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings reported

Advisor assessment: No blocking advisor findings reported
Next action: No advisor follow-up needed.
Findings: 0 blockers · 0 warnings · 0 suggestions

Model lanes

  • GPT-5.6 Terra (primary): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Completed · high confidence · 0 blockers · 1 warning · 7 suggestions
  • Model comparison: normalized findings differ; normalized E2E selections match; Nemotron reported the same number of blockers, 1 more warning, 7 more suggestions.

Nemotron output stays in workflow artifacts and does not change the assessment above.

E2E guidance

Advisory only. E2E / PR Gate selects and runs jobs independently.

Recommended E2E: cloud-inference, cloud-onboard, security-posture

Workflow run details

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

@cv cv added the v0.0.97 label Jul 28, 2026
@prekshivyas
prekshivyas marked this pull request as ready for review July 28, 2026 05:23
@prekshivyas prekshivyas self-assigned this Jul 28, 2026

@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 `@tools/e2e/pr-e2e-gate.mts`:
- Line 3108: Update both workflow URL construction call sites to pass only the
workflow file name, such as pr-e2e-gate.yaml, rather than the full
PR_GATE_WORKFLOW_PATH value that includes .github/workflows/. Preserve the
existing repository and Actions URL structure.
🪄 Autofix (Beta)

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: 70b8a824-e851-4d82-9565-90c6fbbc4b05

📥 Commits

Reviewing files that changed from the base of the PR and between b92ef67 and a81a63f.

📒 Files selected for processing (12)
  • .agents/skills/nemoclaw-maintainer-day/MERGE-GATE.md
  • .github/workflows/pr-e2e-gate.yaml
  • test/e2e/README.md
  • test/pr-e2e-gate-command.test.ts
  • test/pr-e2e-gate-dispatch-recovery.test.ts
  • test/pr-e2e-gate-fork-approval.test.ts
  • test/pr-e2e-gate-internal-approval.test.ts
  • test/pr-e2e-gate-lifecycle.test.ts
  • test/pr-e2e-gate-retry-history.test.ts
  • test/pr-e2e-gate-workflow.test.ts
  • test/pr-e2e-required.test.ts
  • tools/e2e/pr-e2e-gate.mts
💤 Files with no reviewable changes (1)
  • test/pr-e2e-gate-internal-approval.test.ts

Comment thread tools/e2e/pr-e2e-gate.mts Outdated
@cjagwani cjagwani added v0.0.98 Release target and removed v0.0.97 labels Jul 28, 2026
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
…approval

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Comment thread tools/e2e/pr-e2e-gate.mts Fixed
Comment thread tools/e2e/pr-e2e-gate.mts Fixed
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
…approval

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>

@prekshivyas prekshivyas left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Maintainer security review: PASS at exact head ff343972b27f9562175d776088c323886ed2579f against current main.

  1. Secrets and credentials — PASS: untrusted PR code still receives no credential before authorization; evidence validation and exact-plan dispatch remain required.
  2. Input validation — PASS: PR number, exact head/base SHAs, workflow SHA, first run attempt, maintainer login, bounded reason, pending check identity, and deterministic plan are validated fail-closed.
  3. Authentication and authorization — PASS: the manual workflow actor must currently have repository maintain or admin permission. One approve-e2e operation now applies the same role check to internal and fork PRs.
  4. Dependencies — PASS: no dependency change.
  5. Logging and exposure — PASS: coordination guidance publishes only PR/SHA/plan metadata; no secret or credential value is logged.
  6. Cryptography — PASS: no cryptographic behavior changed; trusted workflow and child-evidence hash bindings remain intact.
  7. Configuration — PASS: obsolete protected-environment outputs and duplicate modes are removed; the workflow remains main-branch, first-attempt, exact-input gated.
  8. Tests — PASS: parsing, permissions, fork/internal selection, pending checks, retries, dispatch reconciliation, lifecycle, workflow contract, and maintainer guidance are covered. All required CI, eight CLI shards, E2E support, CodeQL, advisors, sandbox-image tests, and E2E / PR Gate passed.
  9. System security — PASS: credentialed execution remains behind trusted-controller authorization; cancellation, live-revision checks, one-time runner-loss retry, evidence download/verification, and terminal check cleanup remain fail-closed.

The final follow-up removes an unused workflow-path constant and clarifies that reviewers must verify the exact head repository. No security findings or waiver remain.

@prekshivyas prekshivyas left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Maintainer exact-head security review: PASS at dc3f386 against current main.\n\nThis head is a signed mechanical merge of current main; the reviewed control-plane diff is unchanged. Live fork-gate evidence on PRs #7230 and #7463 also confirms the old unprotected environment path failed closed before exposing credentials, which is the operational gap this unified maintainer-dispatch flow removes.\n\n1. Secrets and credentials — PASS: no secret is exposed before exact-revision authorization; child evidence remains required.\n2. Input validation — PASS: PR number, 40-character head/base SHAs, head repository, deterministic plan, workflow commit, coordination identity, and review reason are validated.\n3. Authentication and authorization — PASS: first-attempt actors must have current maintain or admin access.\n4. Dependencies — PASS: none changed by the PR.\n5. Logging and exposure — PASS: guidance contains review metadata only; no credential value is logged.\n6. Cryptography — PASS: existing SHA and evidence integrity checks remain fail-closed.\n7. Configuration — PASS: removes dependence on mutable environment reviewer configuration without weakening repository permission checks.\n8. Tests — PASS: refreshed-head controller tests pass 48/48, maintainer policy tests pass 16/16, and CLI type-check and pre-push checks pass.\n9. System security — PASS: trusted main dispatch, fork repository checkout, live-revision revalidation, cancellation, and verified evidence gates remain intact.\n\nThe exact-head documentation writer receipt passed. No correctness or security findings remain.

@prekshivyas prekshivyas left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Maintainer exact-head security review: PASS at 3f72fec against current main.

This head adds only the signed merge of the current main changelog commit to the previously reviewed control-plane head; the PR implementation, workflow, guidance, and tests are unchanged.

  1. Secrets and credentials — PASS: no secret is exposed before exact-revision authorization; verified child evidence remains required.
  2. Input validation — PASS: exact PR, repository, head/base SHAs, workflow, plan, coordination identity, and review reason remain validated.
  3. Authentication and authorization — PASS: first-attempt actors still require current maintain or admin access.
  4. Dependencies — PASS: none changed.
  5. Logging and exposure — PASS: no credential value is logged.
  6. Cryptography — PASS: SHA and evidence integrity checks remain fail-closed.
  7. Configuration — PASS: maintainer dispatch remains independent of mutable environment reviewer configuration.
  8. Tests — PASS: prior refreshed-head controller tests pass 48/48, maintainer policy tests 16/16, CLI type-check passes, and the intervening docs-only merge passes changelog tests 6/6.
  9. System security — PASS: trusted main dispatch, live-revision revalidation, cancellation, fork checkout, and verified evidence gates remain intact.

The exact-head documentation writer receipt passed. No correctness or security findings remain.

@prekshivyas prekshivyas left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Maintainer follow-up on PRA-1 at exact head 3f72fec: BLOCKED pending an explicit architecture/security decision.

The finding is not dismissed by the general contributor/approver-overlap policy alone. Merged PR #6233 makes overlap nonblocking for PR approval and merge readiness, but the credential-release boundary had a separate required-reviewer allowlist. The current internal environment names cv and ericksoa as required reviewers (with prevent-self-review disabled), while the fork environment is misconfigured with no protection and correctly fails closed. This PR replaces those environment allowlists with any account holding current maintain or admin permission.

That broadening is deliberate in the code and fully tested, but the repository evidence does not establish whether the #6233 merge-approval decision is intended to cover credentialed E2E release. Do not approve this PR until a maintainer explicitly chooses one of these contracts: retain maintain/admin authorization as written, reject PR authors/commit authors/co-authors, or preserve an independent reviewer allowlist. No code change is made while that decision is unresolved.

@prekshivyas prekshivyas left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Maintainer exact-head security review: PASS at 7604293.

  1. Secrets and credentials — PASS. No credential is exposed before independent exact-revision authorization and verified child evidence remains required.
  2. Input validation — PASS. PR, repository, head/base SHAs, workflow, plan, coordination identity, reason, contributor history, and pagination are validated fail-closed.
  3. Authentication and authorization — PASS. The actor requires current maintain/admin access and is rejected if they opened the PR or authored/co-authored any current commit. Unassociated commit identities also fail closed before coordination mutation or dispatch.
  4. Dependencies — PASS. No dependency change.
  5. Error handling and logging — PASS. Contributor-history errors expose no credentials or author data and occur before credential-bearing dispatch.
  6. Cryptography — PASS. Existing SHA and evidence-integrity bindings remain unchanged.
  7. Configuration — PASS. The trusted main workflow and first-attempt restriction remain; the obsolete mutable environment-reviewer dependency stays removed.
  8. Tests — PASS. The final merged head passes 16 integration files / 280 tests plus CLI typechecking. Tests cover opener, author, co-author, unmapped author, role, exact revision, dispatch reconciliation, and failure recovery.
  9. System security — PASS. Authorization is now independently separated from every recognized contributor account and fails closed when complete identity proof is unavailable. Live-revision checks, cancellation, one-time retry, and evidence verification remain intact.

The prior advisor blocker is resolved. Because this PR is authored by the current account, this COMMENTED review is not independent merge approval; required CI, automated review, and another eligible reviewer must still evaluate the exact head.

@jyaunches jyaunches mentioned this pull request Jul 29, 2026
23 tasks
@jyaunches

Copy link
Copy Markdown
Contributor

Superseded by #7832, which keeps the useful unified approve-e2e path while using the smaller current-role authorization model and removing the protected-environment and approval-history machinery. Closing this version so review can continue on the reduced-complexity implementation. Thank you for the work that established the original direction.

@jyaunches jyaunches closed this Jul 29, 2026
jyaunches added a commit that referenced this pull request Jul 29, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Unify internal and fork pull-request E2E authorization under one
maintainer-only `approve-e2e` operation. This removes the
protected-environment and approval-history machinery proposed in #7678
while preserving the existing dispatch integrity checks.

## Changes

- Require current `maintain` or `admin` repository permission for every
`approve-e2e` request.
- Use the same authorization and dispatch path for internal and fork
pull requests.
- Remove the fork protected-environment job, approval-coordinate
outputs, GraphQL approval-history parsing, and separate fork command
mode.
- Preserve exact pull request, head SHA, base SHA, plan, workflow
revision, pending-check, and live-state validation.
- Update maintainer guidance, E2E operational documentation, and
workflow contract tests for the unified flow.
- Ratchet the `shell-quote.ts` fan-in budget from 27 to 26 after the
source-install path removed by #7632 reduced its consumers.

## 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: No user-facing product
behavior changed; internal maintainer and E2E operational guidance was
updated with the workflow.
- [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: Local NemoClaw
maintainer security review passed with no findings across all nine
review categories.
- [ ] 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: `docs-updated`
- Evidence: `.agents/skills/nemoclaw-maintainer-day/MERGE-GATE.md` and
`test/e2e/README.md` accurately document the unified maintainer-only
approval flow; no Fern documentation change is needed.
- Agent: Codex Desktop
<!-- docs-review-head-sha: 9001231 -->
<!-- docs-review-agents-blob-sha: 0082a58 -->

## 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 check:diff` passed 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 --project integration test/pr-e2e-gate*.test.ts
test/pr-e2e-required.test.ts test/maintainer-skills-policy.test.ts` — 16
files and 276 tests passed; focused fork-approval rerun — 19 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` was
attempted; the focused architecture test passed, but the full host suite
had 275 unrelated environment failures from missing Python `yaml`, an
absent official OpenShell Homebrew formula, macOS `/private/tmp` path
alias effects, and cascading timeouts. CI provides the authoritative
Linux 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: Julie Yaunches <jyaunches@nvidia.com>


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

## Summary by CodeRabbit

- **New Features**
- Consolidated PR E2E maintainer approval into a single `approve-e2e`
workflow flow, with updated dispatch behavior.
- Added/strengthened pre-approval validation for PR number, expected
head/base SHAs, and review reason.

- **Documentation**
- Refined maintainer approval and fork approval guidance, including
updated gate wording and authorization expectations.

- **Bug Fixes**
- Hardened the gate so approval credentials and sensitive approval
outputs aren’t emitted until authorization requirements are satisfied.

- **Tests**
- Updated E2E gate and lifecycle tests to match the new `approve-e2e`
flow and messages.

- **Chores**
  - Minor workflow/tooling budget adjustment.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure area: security Security controls, permissions, secrets, or hardening v0.0.98 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants