Skip to content

fix(ci): reopen completed PR E2E checks - #7054

Merged
apurvvkumaria merged 11 commits into
mainfrom
codex/e2e-gate-retry-state
Jul 17, 2026
Merged

fix(ci): reopen completed PR E2E checks#7054
apurvvkumaria merged 11 commits into
mainfrom
codex/e2e-gate-retry-state

Conversation

@apurvvkumaria

@apurvvkumaria apurvvkumaria commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

Allow an unchanged exact PR diff to recover from conclusively retryable E2E infrastructure failures without mutating completed checks or reopening product, evidence-integrity, reconciliation, controller, or unknown terminal failures. The controller records a versioned machine-readable retry reason and, after a later trusted ordinary-CI run succeeds, creates a fresh validated check for the same exact-diff identity.

Related Issue

Fixes #7052

Changes

  • Record only three versioned retry reasons: prerequisite-ci, child-cancelled, and evidence-download.
  • Treat completed checks as immutable, including completed checks from an earlier PR base, and require a recognized marker plus later successful trusted CI before creating a fresh exact-diff check.
  • Select the highest monotonic check-run ID only when every older duplicate is a recognized retryable failure; reject unexpected apps, mismatched mutation identities, duplicate IDs, older unmarked or active history, and multiple active candidates.
  • Validate every check creation and update response before continuing, and mirror the immutable-history selection rules in the native required-check observer.
  • Preserve the evidence-download retry reason when a failed completion update falls through to the outer completion fallback.
  • Classify child cancellation from the complete, untruncated non-passing job set so a hidden failed job cannot be mistaken for an all-cancelled run.
  • Keep product/test failures, evidence verdict and integrity failures, fork-approval outcomes, reconciliation states, controller errors, and unknown or pre-marker failures terminal.
  • Document the retry taxonomy and update fork recovery guidance in the maintainer merge-gate reference and E2E runbook.

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: Independent audit of the immutable-check design verified monotonic exact-identity selection, retry-marker allowlisting, completed-check immutability, stale-base handling, fail-closed duplicate/history rules, and validated mutation responses. Exact head 7bd36fdabb5f255cf3237295ed273db6d41874f0 adds the CodeRabbit-requested fallback-marker preservation with an adversarial 503 regression. An independent documentation review also corrected stale-base, fresh-check, retry-history, and native-versus-coordination guidance. Keep this draft until automated reviewers are clean.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

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 for the current change set, or tests are marked not applicable above — npx vitest run test/pr-e2e-gate*.test.ts test/pr-e2e-required.test.ts (148/148 passed); npm run build:cli; npm run typecheck:cli; npm run test:titles:check; and npx prek run --files across all changed files passed, including source-shape and test-size budgets.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: The focused controller suite and all changed-file hooks passed; exact-head GitHub CI for 7bd36fdabb5f255cf3237295ed273db6d41874f0 is running.
  • 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) — not applicable to the maintainer merge-gate reference and E2E runbook; both passed changed-file markdown checks.
  • Doc pages follow the style guide (doc changes only) — not applicable; no Fern user-doc page changed.
  • New doc pages include SPDX header and frontmatter (new pages only) — not applicable; no page added.

Signed-off-by: Apurv Kumaria akumaria@nvidia.com

Summary by CodeRabbit

  • New Features
    • Added controlled retry handling for eligible PR E2E gate failures via hidden retry markers and explicit retry reasons (e.g., prerequisite CI, child-cancelled, evidence-download).
    • Improved exact-diff coordination so immutable completed checks remain unchanged while eligible retries create fresh checks.
  • Bug Fixes
    • Tightened fail-closed behavior for evidence verification and unexpected/invalid check scenarios; refined when coordination is treated as waiting vs terminal.
  • Documentation
    • Expanded merge-gate and E2E guidance with detailed reopen/eligibility and fork-skip approval steps.
  • Tests
    • Updated and added E2E tests to validate retry history, check-run mutations, and completion output markers.

Clear the prior terminal conclusion before restoring exact-diff authorization.

Fixes #7052

Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@apurvvkumaria apurvvkumaria added area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance v0.0.85 labels Jul 16, 2026
@apurvvkumaria apurvvkumaria self-assigned this Jul 16, 2026
@copy-pr-bot

copy-pr-bot Bot commented Jul 16, 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 16, 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 gate controller adds versioned retry markers, validates immutable exact-diff history, reopens eligible infrastructure failures, and preserves terminal outcomes. Required-gate logic, tests, and documentation cover coordination selection, evidence failures, and fork approval recovery.

Changes

PR E2E gate retry flow

Layer / File(s) Summary
Retry markers and gate lifecycle
tools/e2e/pr-e2e-gate.mts
Adds retry-reason typing, marker propagation, exact-diff retry validation, cleared conclusions for reopened checks, and retryable prerequisite, cancellation, and evidence-download outcomes.
Coordination-check history selection
tools/e2e/pr-e2e-required.mts, test/pr-e2e-required.test.ts
Selects the newest valid exact-diff coordination check and rejects unmarked terminal history or multiple active candidates.
Retry and terminal outcome coverage
test/pr-e2e-gate*.test.ts
Verifies mutation state propagation, retry markers, immutable history, non-retryable failures, malformed evidence, and authorization restoration.
Retry and approval guidance
.agents/skills/.../MERGE-GATE.md, test/e2e/README.md
Documents retry eligibility, terminal verification failures, evidence-download behavior, coordination outcomes, and fork skip-approval recovery.

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

Possibly related PRs

Suggested reviewers: ericksoa, jyaunches, cjagwani

Sequence Diagram(s)

sequenceDiagram
  participant PRCI
  participant PRGateController
  participant GitHubChecks
  participant RequiredGate
  PRCI->>PRGateController: Start with CI conclusion and exact-diff history
  PRGateController->>GitHubChecks: Validate or create exact-diff check
  PRGateController->>GitHubChecks: Complete with retry marker when eligible
  PRCI->>PRGateController: Run again for unchanged head and base
  PRGateController->>GitHubChecks: Create fresh in_progress check
  RequiredGate->>GitHubChecks: Select current coordination check
Loading
🚥 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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main change: reopening completed PR E2E checks.
Linked Issues check ✅ Passed The PR implements the retryable completed-check recovery and in_progress reset required by #7052.
Out of Scope Changes check ✅ Passed The docs and tests are aligned with the retry/reopen workflow and do not show unrelated scope creep.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/e2e-gate-retry-state

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

@github-code-quality

github-code-quality Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage remains at 96%, unchanged from the main branch.

TypeScript / code-coverage/cli

The overall coverage remains at 80%, unchanged from the main branch.


Updated July 17, 2026 01:13 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — Informational

Advisor assessment: Informational / high confidence
Next action: No advisor follow-up needed.
Findings: 0 blockers · 0 warnings · 0 suggestions
Status: No actionable findings remain in the canonical review ledger.

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 · 0 suggestions
  • Model comparison: normalized findings differ; normalized E2E selections differ; Nemotron reported the same number of blockers, 1 more warning, the same number of 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-onboard, credential-sanitization, security-posture

Workflow run details

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

Record versioned retry reasons only for conclusively retryable infrastructure failures.

Keep product, evidence-integrity, reconciliation, controller, and unknown outcomes terminal.

Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@apurvvkumaria

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@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`:
- Around line 2519-2533: Update the outer fallback completion attempt in the
surrounding evidence-download error flow to pass retryableFailureReason:
"evidence-download" as well. Preserve this reason when the first
completeFailureAfterControllerError call fails, while keeping the existing
childRunUrl and error-completion behavior unchanged.
🪄 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: c8226670-8d7f-4941-8d81-0f6033f51e3a

📥 Commits

Reviewing files that changed from the base of the PR and between 3558a7a and 6d9bf04.

📒 Files selected for processing (6)
  • .agents/skills/nemoclaw-maintainer-day/MERGE-GATE.md
  • test/e2e/README.md
  • test/pr-e2e-gate-fork-skip.test.ts
  • test/pr-e2e-gate-lifecycle.test.ts
  • test/pr-e2e-gate.test.ts
  • tools/e2e/pr-e2e-gate.mts

Comment thread tools/e2e/pr-e2e-gate.mts
Treat completed checks as immutable.

Create a new exact-diff check only after a trusted, marker-backed infrastructure retry.

Fail closed on suspicious duplicate history and validate each check mutation.

Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@apurvvkumaria

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

Carry the evidence-download reason through the outer completion fallback.

Add a regression for a failed first completion update.

Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@apurvvkumaria

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@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

🧹 Nitpick comments (1)
test/pr-e2e-gate-lifecycle.test.ts (1)

78-85: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider deduplicating prGateMutationResponse across sibling test files.

This helper is byte-for-byte duplicated in test/pr-e2e-gate-fork-skip.test.ts and test/pr-e2e-gate.test.ts. Extracting it into the shared test/support/github-fetch-router.ts (or a new small support module) would avoid drift across the three files as the mock contract evolves.

♻️ Suggested extraction
-function prGateMutationResponse(request: RecordedGitHubRequest, id = 17): Response {
-  return githubResponse(
-    exactPrGateCheck({
-      id,
-      ...(request.body as Record<string, unknown> | undefined),
-    }),
-  );
-}
+import { prGateMutationResponse } from "./support/pr-gate-mocks";
🤖 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 `@test/pr-e2e-gate-lifecycle.test.ts` around lines 78 - 85, Extract the
duplicated prGateMutationResponse helper into shared test support, preferably
test/support/github-fetch-router.ts, and remove the local copies from
pr-e2e-gate-lifecycle.test.ts, pr-e2e-gate-fork-skip.test.ts, and
pr-e2e-gate.test.ts. Update all three tests to import and reuse the shared
helper while preserving its request-body handling and default id 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 `@tools/e2e/pr-e2e-required.mts`:
- Around line 226-229: Update matchingChecks() to paginate through all check-run
responses before filtering and validating coordination history, rather than
relying on the first per_page=100 page. Preserve the existing
GITHUB_ACTIONS_APP_ID filter and currentCoordinationCheck() selection only after
the complete matching history has been collected.

---

Nitpick comments:
In `@test/pr-e2e-gate-lifecycle.test.ts`:
- Around line 78-85: Extract the duplicated prGateMutationResponse helper into
shared test support, preferably test/support/github-fetch-router.ts, and remove
the local copies from pr-e2e-gate-lifecycle.test.ts,
pr-e2e-gate-fork-skip.test.ts, and pr-e2e-gate.test.ts. Update all three tests
to import and reuse the shared helper while preserving its request-body handling
and default id behavior.
🪄 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: 65ef4b12-6cc7-4702-a4c4-aa7924742f36

📥 Commits

Reviewing files that changed from the base of the PR and between 6d9bf04 and 7bd36fd.

📒 Files selected for processing (9)
  • .agents/skills/nemoclaw-maintainer-day/MERGE-GATE.md
  • test/e2e/README.md
  • test/pr-e2e-gate-fork-skip.test.ts
  • test/pr-e2e-gate-lifecycle.test.ts
  • test/pr-e2e-gate-retry-history.test.ts
  • test/pr-e2e-gate.test.ts
  • test/pr-e2e-required.test.ts
  • tools/e2e/pr-e2e-gate.mts
  • tools/e2e/pr-e2e-required.mts
🚧 Files skipped from review as they are similar to previous changes (1)
  • tools/e2e/pr-e2e-gate.mts

Comment thread tools/e2e/pr-e2e-required.mts
@apurvvkumaria
apurvvkumaria marked this pull request as ready for review July 17, 2026 00:10
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@cv
cv requested review from ericksoa and jyaunches July 17, 2026 00:16
@cv
cv requested a review from cjagwani July 17, 2026 00:16

@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 @.agents/skills/nemoclaw-maintainer-day/MERGE-GATE.md:
- Line 36: Update the prerequisite-ci recovery wording in MERGE-GATE.md to state
the sequence explicitly: first rerun eligible CI for the unchanged open head and
base when prerequisite-ci is recorded, then allow the controller to retry only
after that new CI run succeeds. Preserve the existing sequencing and behavior
for child-cancelled and evidence-download reasons.
🪄 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: b4c6b674-41be-4d9b-8e27-b597c178144a

📥 Commits

Reviewing files that changed from the base of the PR and between 332351d and af47c00.

📒 Files selected for processing (4)
  • .agents/skills/nemoclaw-maintainer-day/MERGE-GATE.md
  • test/e2e/README.md
  • test/pr-e2e-required.test.ts
  • tools/e2e/pr-e2e-required.mts
🚧 Files skipped from review as they are similar to previous changes (2)
  • tools/e2e/pr-e2e-required.mts
  • test/e2e/README.md

Comment thread .agents/skills/nemoclaw-maintainer-day/MERGE-GATE.md Outdated
apurvvkumaria and others added 2 commits July 16, 2026 18:00
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@apurvvkumaria
apurvvkumaria enabled auto-merge (squash) July 17, 2026 01:19
@cv

cv commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Final exact-revision handoff for independent human review:

  • Head 7e5694fb0ae46274cadbc675d9a9a75abac3b8f3; base/current main dddfc51daa9f9e69dcb85ec009f86ded27ca0793; GitHub reports MERGEABLE.
  • Canonical maintainer checker: allPass: true; all 52 current checks green; no conflicts; DCO declaration present; all 11 commits GitHub Verified; no unresolved Major/Critical CodeRabbit findings.
  • Exact ordinary CI: success.
  • Exact Advisor: 0 blockers, 0 warnings, 0 suggestions.
  • Exact E2E child: cloud-onboard, credential-sanitization, and OpenClaw/Hermes security-posture all passed.
  • Trusted coordinator: success; plan ac13d345a68fef03d4bb211ffca0e1f217fbc972f9818f61780bdf79726f9100; correlation b46fa141-596e-4ad1-875e-38ab8a8105b6.
  • Native required observer: success for the same exact head/base.
  • Security review: retry waiting reuses the exact versioned allowlist parser, preserves app/head/base/history validation, leaves unknown/product/integrity failures terminal, and has a full failure-to-replacement-to-success lifecycle regression.

@jyaunches @ericksoa @cjagwani — please make the independent review and merge decision when satisfied. I have not approved or merged this PR.

@cv
cv requested a review from prekshivyas July 17, 2026 01:28
@apurvvkumaria

Copy link
Copy Markdown
Collaborator Author

Ready for human review at exact head 7e5694fb0ae46274cadbc675d9a9a75abac3b8f3 on current base dddfc51daa9f9e69dcb85ec009f86ded27ca0793.

  • 53 checks passed; 0 failed or pending
  • Protected E2E passed cloud-onboard, credential-sanitization, and OpenClaw/Hermes security-posture
  • Canonical advisor: 0 blockers, warnings, or suggestions
  • 0 unresolved review threads
  • All 11 commits GitHub Verified; DCO passed
  • GitHub reports OPEN, ready, and MERGEABLE

Human approval is the only remaining gate; no merge was performed.

@apurvvkumaria
apurvvkumaria merged commit 94b5e46 into main Jul 17, 2026
53 checks passed
@apurvvkumaria
apurvvkumaria deleted the codex/e2e-gate-retry-state branch July 17, 2026 01:51
apurvvkumaria pushed a commit that referenced this pull request Jul 17, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Restore the trusted PR E2E controller after #7054 by omitting the
invalid `conclusion: null` field when updating an active GitHub check.
GitHub currently rejects that request with HTTP 422 before control-plane
authorization or E2E dispatch can occur.

## Changes

- Omit `conclusion` from in-progress check-run PATCH requests while
retaining strict validation that GitHub returns `conclusion === null`
for the persisted active check.
- Assert the outbound field is absent across initial authorization,
restored authorization, and authorized dispatch transitions.
- Preserve exact PR/head/base identity, trusted-app validation,
maintainer authorization, immutable history, and final stale-revision
checks unchanged.

The escaped defect was caused by treating GitHub's response
representation as a valid request representation. Existing mocks spread
the request into a successful response, `toMatchObject` allowed the
extra request key, and one test explicitly required the invalid null
field. Live controller run
https://github.com/NVIDIA/NemoClaw/actions/runs/29549179465 reproduced
the API rejection after all ordinary CI passed.

This prerequisite cannot satisfy its own required `E2E / PR Gate
Coordination` check: trusted workflow-run evaluation checks out the
current `main` controller, which contains the defect being repaired.
After ordinary CI and automated review pass, an independent maintainer
must review this exact commit and explicitly accept that one check as a
manual merge exception. Subsequent release PRs will then refresh on the
repaired base and produce normal exact-head E2E evidence.

## 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 only corrects an
internal GitHub check-run request body; observable maintainer guidance,
CLI/configuration, product behavior, and release notes do not change.
Independent docs-writer review found no update necessary.
- [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: Independent
nine-category security review of exact commit
`a76af0b9c2d15486c0f5b6f869a802e3bb9ed631` returned PASS/GO with no
findings; outbound null removal does not alter strict inbound identity,
authorization, TOCTOU, or fail-closed validation.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue: Pending independent
maintainer review of the expected `E2E / PR Gate Coordination`
self-bootstrap failure described above. Do not merge before ordinary CI
and automated review are otherwise green.

## 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 — `npx vitest run
test/pr-e2e-gate*.test.ts test/pr-e2e-required.test.ts` passed 149/149
tests across 9 files; the focused regression failed before the fix with
received `conclusion: null` and passed afterward. Source-shape,
test-size, Biome, CLI build, and CLI typecheck also passed.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: Not run; the focused
controller suite and normal hooks cover this three-file request-shape
fix.
- [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

* **Bug Fixes**
* Updated E2E check-run progress updates to omit an unnecessary
conclusion value while checks are in progress.
* Improved handling of retryable authorization states after incompatible
changes.

* **Tests**
* Expanded coverage to verify check-run updates use the correct
in-progress payload.

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

Signed-off-by: Carlos Villela <cvillela@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 chore Build, CI, dependency, or tooling maintenance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Trusted PR E2E gate cannot retry a completed exact-diff check

3 participants