Skip to content

ci(e2e): identify controller runs by revision - #7862

Merged
cv merged 6 commits into
mainfrom
codex/7860-e2e-run-identity
Aug 3, 2026
Merged

ci(e2e): identify controller runs by revision#7862
cv merged 6 commits into
mainfrom
codex/7860-e2e-run-identity

Conversation

@cjagwani

@cjagwani cjagwani commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

Make every trusted PR E2E controller run identify its exact PR revision in the Actions list. Coordination runs now carry the authenticated source CI display title, while manual approval runs show the supplied PR, head SHA, and base SHA; authorization behavior is unchanged.

Related Issue

Fixes #7860

Changes

  • Name workflow_run controllers from the exact-revision CI display title, including when fork payloads omit pull-request metadata.
  • Name manual approve-e2e controllers with the supplied PR, head, and base identity.
  • Add workflow contract assertions and maintainer E2E documentation for both paths.

Type of Change

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

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification:
  • Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging)
  • Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: Codex Desktop independently reviewed exact head be9f66ecda1dffeb837a25c8799352aa7f7688df against base d5b64a72a5fcb8299e8cec1c2f22746b5c0a7f32 (tree a28243171958653e0fc9a039024f3b0e46aa8b6c; stable patch b0332efd486aec1e231052d80584402f90079cc5). All nine security categories PASS; run-name-only changes do not alter triggers, predicates, permissions, authentication, dispatch, evidence, or secret handling.
  • 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: Updated test/e2e/README.md documents automatic controller run names carrying the prerequisite-CI PR, head, and base display identity, and manual approve-e2e run names showing the supplied PR, head, and base identity. Reviewed all changed workflow text, operator guidance, tests, comments, and commit text against the repository Writing Guide, documentation contract, and controlled terminology. Validation evidence reviewed: focused workflow contract tests passed 13/13; npm run docs passed with 0 errors and 2 existing warnings; exact-head npm run validate:pr passed.
  • Agent: Codex Desktop

DGX Station Hardware Evidence

  • Tested on DGX Station
  • Tested commit:
  • Station profile/scenario:
  • Result:
  • Supporting evidence:

Verification

  • PR description includes a Signed-off-by: line and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run validate:pr passed after refreshing origin/main when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — npm exec vitest -- run --project integration test/pr-e2e-gate-workflow.test.ts (13/13)
  • 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 a workflow naming and contract-test change.
  • 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)

Additional exact-head validation: focused workflow contract tests passed 13/13; npm run validate:pr passed; npm run docs completed with 0 errors and 2 existing warnings.


Signed-off-by: Charan Jagwani cjagwani@nvidia.com

Summary by CodeRabbit

  • Improvements

    • Standardized E2E Gate workflow run names across trigger types, including the coordinating workflow and pull request details.
  • Documentation

    • Updated E2E guidance for selector compatibility, plugin lifecycle, inference-mode routing, telemetry, risk planning, onboarding timing, latency anomalies, and scorecard scheduling.
  • Tests

    • Strengthened workflow checks to verify the complete run-name expression across supported trigger paths.

Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
@cjagwani cjagwani self-assigned this Jul 30, 2026
@cjagwani cjagwani added area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure area: observability Logging, metrics, tracing, diagnostics, or debug output labels Jul 30, 2026
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The E2E gate workflow now uses the prerequisite workflow display title for workflow_run names. Contract tests validate the complete expression, while E2E documentation updates compatibility, runner routing, risk planning, telemetry, timing, and scorecard rules.

Changes

E2E gate updates

Layer / File(s) Summary
Run-name formatting and coverage
.github/workflows/pr-e2e-gate.yaml, test/pr-e2e-gate-workflow.test.ts, test/e2e/README.md
The workflow adds a workflow_run-specific display title to the E2E gate name, tests validate the complete expression, and documentation records identity-bearing controller names.
E2E compatibility and runner guidance
test/e2e/README.md
Documentation covers retired-selector compatibility, the OpenClaw plugin EXDEV lifecycle, Anthropic-only larger-runner routing, credential-generation handling, and revised runner-comparison telemetry.
Risk planning and scorecard rules
test/e2e/README.md
Risk-plan boundaries, control-plane coverage, timing metadata, hosted-latency anomalies, and scheduled scorecard recurrence rules are updated.

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

Possibly related PRs

Suggested labels: chore

Suggested reviewers: cv, jyaunches, prekshivyas

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The workflow, tests, and documentation address exact-revision run naming while preserving authorization and behavior.
Out of Scope Changes check ✅ Passed All changes are limited to CI observability, contract tests, and related maintainer documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: identifying E2E controller runs by revision in CI.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/7860-e2e-run-identity

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

@github-code-quality

github-code-quality Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit be9f66e in the codex/7860-e2e-run-i... branch remains at 96%, unchanged from commit d5b64a7 in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit be9f66e in the codex/7860-e2e-run-i... branch remains at 81%, unchanged from commit d5b64a7 in the main branch.

Show a code coverage summary of the most impacted files.
File main d5b64a7 codex/7860-e2e-run-i... be9f66e +/-
src/lib/credentials/store.ts 56% 55% -1%
src/lib/inferen...ompatibility.ts 95% 94% -1%
src/lib/shields/index.ts 68% 68% 0%
src/lib/messagi...nnels/policy.ts 100% 100% 0%
src/lib/sandbox...rce-identity.ts 88% 88% 0%
src/lib/state/config-io.ts 93% 93% 0%
src/lib/platform.ts 84% 89% +5%
src/lib/onboard...ndbox-create.ts 83% 91% +8%
src/lib/onboard...-create-plan.ts 75% 88% +13%
src/lib/onboard...ndbox-create.ts 33% 83% +50%

Updated August 02, 2026 15:44 UTC

@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 `@test/pr-e2e-gate-workflow.test.ts`:
- Around line 285-291: Strengthen the run-name assertions around
workflow["run-name"] by testing complete observable names for representative
workflow_run and workflow_dispatch inputs, including the expected coordinate,
approval, and identity values. Ensure the tests distinguish trigger branches and
validate the &&/|| precedence through actual evaluated run-name behavior rather
than separate source-fragment toContain checks.
🪄 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: c532e0fa-0726-470b-a6d1-8e5a7daf21cd

📥 Commits

Reviewing files that changed from the base of the PR and between d52d459 and b4e2e5e.

📒 Files selected for processing (3)
  • .github/workflows/pr-e2e-gate.yaml
  • test/e2e/README.md
  • test/pr-e2e-gate-workflow.test.ts

Comment thread test/pr-e2e-gate-workflow.test.ts Outdated
@github-actions

github-actions Bot commented Jul 30, 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 · 0 warnings · 0 suggestions
  • Model comparison: normalized findings match; normalized terminology decisions differ; normalized E2E selections match; severity counts match.

Second-opinion terminology and E2E selections are advisory. They do not change the primary assessment or E2E / PR Gate.

2 semantic terminology decisions

Terminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.

  • established — CI display title at test/e2e/README.md:592: Retain "CI display title" for the authenticated prerequisite CI value.
  • justified — manual controller run at test/e2e/README.md:802: Retain "manual controller run" where the workflow_dispatch approval path must be distinguished.

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.

Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Jul 30, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
test/e2e/README.md (2)

677-706: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Restore the manual approval run-name contract in the operator documentation.

The workflow contract includes PR, head, and base identity for approve-e2e runs, but this change removes the README’s operator-facing description of that naming. Retain a concise statement in the fork approval section so operators can discover and use those identity-bearing names during diagnosis.

🤖 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/e2e/README.md` around lines 677 - 706, Restore a concise operator-facing
statement in the fork approval section describing the approve-e2e manual
run-name contract, including the PR, head, and base identity fields. Keep the
documentation aligned with the existing workflow behavior and place it near the
manual approval guidance.

117-121: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Qualify “PR-gate dispatches” as internal/trusted dispatches.

This wording broadly includes fork approval dispatches, but Line 149 says fork-owned runs cannot reach the fallback. Say “trusted internal PR-gate dispatches” or explicitly exclude fork-owned approval dispatches here to avoid an operationally contradictory scope.

🤖 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/e2e/README.md` around lines 117 - 121, Update the “PR-gate dispatches”
wording in the README to explicitly mean trusted internal dispatches, excluding
fork-owned approval dispatches. Preserve the surrounding description of fallback
behavior and runner routing.
🤖 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.

Outside diff comments:
In `@test/e2e/README.md`:
- Around line 677-706: Restore a concise operator-facing statement in the fork
approval section describing the approve-e2e manual run-name contract, including
the PR, head, and base identity fields. Keep the documentation aligned with the
existing workflow behavior and place it near the manual approval guidance.
- Around line 117-121: Update the “PR-gate dispatches” wording in the README to
explicitly mean trusted internal dispatches, excluding fork-owned approval
dispatches. Preserve the surrounding description of fallback behavior and runner
routing.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 7fb4f26a-6e00-4f57-be8a-2860a7c452af

📥 Commits

Reviewing files that changed from the base of the PR and between 5b208d2 and da13b56.

📒 Files selected for processing (1)
  • test/e2e/README.md

@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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
test/e2e/README.md (1)

171-171: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Align the larger-runner scope wording with the eligible set.

This sentence broadly says the fallback covers Hermes inference-switch executions, while the eligible list limits that mode to Anthropic-compatible inference switching. Clarify the sentence to avoid implying that non-Anthropic modes are routed to the larger runner.

Proposed wording
- the Hermes inference switch and shields,
+ the Anthropic-compatible Hermes inference-switch mode and shields,

Also applies to: 191-192

🤖 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/e2e/README.md` at line 171, Update the larger-runner scope wording in
the Hermes execution description to state that inference-switch executions are
included only when using Anthropic-compatible inference switching. Keep the
eligible-set wording for the Hermes stable MCP shard, common-egress, and channel
unchanged, and apply the same clarification to the repeated wording around the
later referenced section.
🤖 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.

Outside diff comments:
In `@test/e2e/README.md`:
- Line 171: Update the larger-runner scope wording in the Hermes execution
description to state that inference-switch executions are included only when
using Anthropic-compatible inference switching. Keep the eligible-set wording
for the Hermes stable MCP shard, common-egress, and channel unchanged, and apply
the same clarification to the repeated wording around the later referenced
section.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: c457f8b8-118d-4b4a-af5d-cdf5f5ca07cf

📥 Commits

Reviewing files that changed from the base of the PR and between da13b56 and a7b26e1.

📒 Files selected for processing (1)
  • test/e2e/README.md

cv added 2 commits August 2, 2026 07:46
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Describe the PR, head, and base identity in automatic and manual controller run names.

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

@apurvvkumaria apurvvkumaria left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Approve — reviewed exact head be9f66e. This change only improves controller run identity for workflow_run and manual approval events; it does not alter dispatch, authorization, or gate state. The workflow expression is covered by an exact contract assertion, operator docs match the behavior, and exact-head CI plus E2E gate pass. No blocking correctness, security, compatibility, or regression defect found.

@cv
cv merged commit 0ddb8c2 into main Aug 3, 2026
66 of 67 checks passed
@cv
cv deleted the codex/7860-e2e-run-identity branch August 3, 2026 23:37
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: observability Logging, metrics, tracing, diagnostics, or debug output

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ci(e2e): identify PR gate controller runs by exact revision

3 participants