Skip to content

ci(fullsend): bootstrap evals from reviewed PR299 source - #323

Merged
mrizzi merged 13 commits into
RHEcosystemAppEng:mainfrom
mrizzi:codex/tc-6726-native-eval-ci
Oct 6, 2026
Merged

mrizzi merged 13 commits into
RHEcosystemAppEng:mainfrom
mrizzi:codex/tc-6726-native-eval-ci

Conversation

@mrizzi

@mrizzi mrizzi commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Implements TC-6726 for TC-6201.

Corrected scope: this PR is only the minimal CI bootstrap. All native suite files are delivered by PR #299. The earlier oversized commits are corrected by 4cd3c96; the final diff against main contains exactly these four files:

  • .github/workflows/eval-pr.yml
  • .github/workflows/eval-pr-run.yml
  • .github/scripts/run-native-fullsend-evals.sh
  • plugins/sdlc-workflow/scripts/test_native_fullsend_eval_ci.py — workflow-only contracts

There are no native cases, fixtures, judges, suite/dependency files, production companions or suite documentation in this PR's final diff.

  • Implements TC-6729: grant the native revision recheck read-only PR metadata access.

  • Implements TC-6730: check the latest API-identified workflow run/attempt before status or ordinary/native review publication; refuse publication when superseded or unverifiable.

  • Implements TC-6731: serialize runs for the same PR head and paginate/reuse matching bot reviews for both suites, preventing duplicate publication.

  • Review-fix verification: 93 repository tests passed, including 90 required scripts tests; Skillsaw 0 errors / 7 existing warnings, plugin validation and diff checks passed. Independent review found no concrete blocker. Each sub-task has one commit. Hosted WIF execution remains to be validated after bootstrap merges.

  • Implements TC-6744: conclude the commit status with failure when the publication guard cannot determine whether the run is current.

  • Implements TC-6745: tolerate delayed indexing of the current run while still suppressing older runs and attempts.

  • Implements TC-6746: explicitly register escaped masks for each nonempty credential line. The current GitHub runner already splits multiline masks; this makes registration explicit.

  • Implements TC-6747: fail before native inference on unexpected credential names without printing their values, preserving valid blank-line and heredoc parsing.

  • Validation for these four sub-tasks: 113 repository tests and 110 script tests passed; Skillsaw, plugin validation, Bash syntax, and whitespace checks passed. One commit per sub-task, pushed together once. Hosted native Fullsend/WIF validation remains pending.

Execution and trust

The bootstrap activates native evals only for PR #299 targeting main from verify-pr-fullsend. It checks out the reviewed suite at immutable b46b2bf647be8451b6aedda58dc8e51448f0eab6, verifies that checkout before installing or executing its code, and separately checks out the exact approved PR merge as sandbox plugin input.

This retains existing collaborator/environment approvals, immutable head/base/merge checks before WIF, existing Fullsend WIF settings and upstream setup, separate host/judge and sandbox ADC, and safe source-bound reporting. Native execution has readonly GitHub permissions plus OIDC; reporting writes remain separate. Arbitrary PR scripts/locks/validators do not execute on the credentialed host. Reports bind the tested revision, trusted workflow and reviewed suite source. Ordinary manifests and main's verify-pr dispatch are unchanged.

Verification

  • Bootstrap python3 -m pytest -q: 71 passed.
  • Bootstrap Skillsaw: 0 errors, 7 baseline warnings.
  • Plugin validation and diff check: passed.
  • Native suite and activation on PR [DRAFT] verify-pr fullsend CI deployment (TC-6180) #299: 423 passed, 1 optional resolver test skipped; lint/plugin validation/native preflight passed.
  • Independent review confirmed the four-file boundary and immutable source trust; no remaining concrete blocker.
  • Four native cases/21 assertion texts and existing PR [DRAFT] verify-pr fullsend CI deployment (TC-6180) #299 fixes are preserved. Earlier real local native run passed21/21; hosted WIF remains unproven.

Merge order

  1. Review this bootstrap and its explicitly pinned suite source on PR [DRAFT] verify-pr fullsend CI deployment (TC-6180) #299; human merges this PR first.
  2. Rerun the existing PR [DRAFT] verify-pr fullsend CI deployment (TC-6180) #299 eval flow after bootstrap lands, inspecting source-bound ordinary and WIF-backed native results. Require native21/21.
  3. Human merges PR [DRAFT] verify-pr fullsend CI deployment (TC-6180) #299 only after hosted validation. Its activation then uses trusted github.sha as suite source for future relevant PRs.

No native suite lands on main until PR #299 merges. No agent merges either PR. Production mutation/native verify-pr coverage remains outside this suite; TC-6201 is not complete from the bootstrap alone.

Summary by Sourcery

Bootstrap source-bound native Fullsend evaluations in CI with fail-closed publication and trusted execution safeguards.

New Features:

  • Bootstrap native Fullsend evaluations for the reviewed PR [DRAFT] verify-pr fullsend CI deployment (TC-6180) #299 source with immutable suite, infrastructure, and tested revision bindings.
  • Publish source-bound native evaluation results alongside ordinary PR evaluation reviews and statuses.

Bug Fixes:

  • Prevent superseded, concurrent, stale, or unverifiable workflow runs from publishing evaluation results.
  • Fail closed on incomplete native evidence, unexpected credential output, missing credentials, or publication-guard errors.

Enhancements:

  • Separate trusted CI setup and credentials from untrusted PR plugin execution while preserving read-only native job permissions and WIF authentication.
  • Add revision validation, approval gating, serialized execution, paginated review reuse, and controlled native result reporting.

CI:

  • Extend PR evaluation workflows to discover and run the bootstrap native suite for the designated PR and relevant changes.
  • Add workflow contract tests covering revision trust, publication guards, credential parsing, native reporting, concurrency, and review reuse.

Tests:

  • Add comprehensive workflow and credential-wrapper coverage for native evaluation CI contracts.

mrizzi added 2 commits October 5, 2026 19:03
Extend the existing eval approval flow with immutable PR source pins, trusted native tooling, separate host and sandbox WIF credentials, and source-bound safe reporting. Keep native execution restricted to PR299 while preserving ordinary evals and the active verify-pr rollout.

Implements TC-6726

Assisted-by: Claude Code
Lock the trusted host validator dependency and preserve lexical plugin paths until root, ancestor and child symlinks are rejected. Add three regressions for fresh CI dependencies and CLI path boundaries.

Implements TC-6726

Assisted-by: Claude Code
@sourcery-ai

sourcery-ai Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Sorry @mrizzi, your pull request is larger than the review limit of 150,000 diff characters

@mrizzi
mrizzi marked this pull request as draft October 5, 2026 17:19

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

Eval Results

Eval Summary: triage-security

Results

Eval Assertions Passed Failed Pass Rate Tokens Duration
1 11 11 0 100% 64,178 178.1s
2 5 5 0 100% 58,422 96.1s
3 5 5 0 100% 45,526 91.6s
4 5 5 0 100% 60,646 123.9s
5 6 6 0 100% 53,058 117.2s
6 6 6 0 100% 36,194 83.2s
7 5 5 0 100% 45,550 93.4s
8 8 8 0 100% 47,922 113.5s
9 5 5 0 100% 45,762 90.8s
10 5 5 0 100% 55,139 147.3s
11 5 5 0 100% 46,019 95.7s
12 5 5 0 100% 53,587 206.3s
13 5 5 0 100% 55,782 254.4s
14 5 5 0 100% 48,633 129.5s
15 5 5 0 100% 60,537 218.3s
16 7 7 0 100% 35,909 71.3s
17 5 5 0 100% 41,889 140.9s
18 5 5 0 100% 47,977 135.1s
19 5 5 0 100% 35,529 50.6s
20 4 4 0 100% 36,528 60.9s
21 4 4 0 100% 40,296 107.9s
22 4 4 0 100% 47,288 125.9s
23 4 4 0 100% 46,277 146.8s
24 4 4 0 100% 45,239 119.1s
25 4 4 0 100% 36,365 56.6s
26 5 5 0 100% 52,413 118.6s
27 5 5 0 100% 46,771 99.6s
28 4 4 0 100% 55,609 157.1s
29 5 5 0 100% 44,833 49.0s
30 4 4 0 100% 43,987 78.4s
31 4 4 0 100% 44,484 63.4s
32 4 4 0 100% 43,146 63.4s

Aggregate

Metric Mean Stddev
Pass Rate 100.0% 0.0%
Duration 115.1s 48.4s
Tokens 47,547 7,557

Total: 32 evals, 163 assertions, 163 passed, 0 failed

Baseline Comparison

No baseline found at evals/triage-security/baselines/latest/. This is the first recorded run.


Generated by sdlc-workflow v0.13.9

Remove all native suite, fixture, dependency, companion and documentation files from the main bootstrap. Keep only the two workflows, setup wrapper and workflow contracts. Fetch the explicitly reviewed PR299 suite commit and verify it before host execution; bind suite provenance to reports.

Implements TC-6726

Assisted-by: Claude Code
@mrizzi mrizzi changed the title feat(fullsend): bootstrap native triage-security eval CI ci(fullsend): bootstrap evals from reviewed PR299 source Oct 5, 2026
@mrizzi
mrizzi marked this pull request as ready for review October 5, 2026 17:28
@sourcery-ai

sourcery-ai Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Reviewer's Guide

Introduces a narrowly scoped, PR299-only native Fullsend CI bootstrap that executes a reviewed, immutable suite against an immutable PR merge with approval and WIF safeguards, publishes only validated source-bound evidence, and verifies the workflow contracts with synthetic tests.

Sequence diagram for the PR299 native Fullsend eval run

sequenceDiagram
    participant Workflow as GitHub Actions
    participant Discover as Discover job
    participant Gate as Approval gate
    participant Native as Native eval job
    participant Suite as Reviewed eval source
    participant Plugin as PR merge sandbox
    participant Report as Safe result reporter

    Workflow->>Discover: Validate PR identity and merge_sha
    Discover->>Discover: Set native output for PR299 and verify-pr-fullsend
    Discover->>Gate: Request eval-protected approval
    Gate-->>Native: Approval succeeds
    Native->>Suite: Checkout NATIVE_EVAL_SOURCE_SHA
    Native->>Plugin: Checkout exact merge_sha
    Native->>Native: run-native-fullsend-evals.sh setup
    Native->>Native: run-native-fullsend-evals.sh run
    Native->>Suite: run.py run against plugin-root
    Suite-->>Native: Allowlisted native-result.json
    Native->>Report: Upload source-bound result
    Report->>Report: Validate revisions, completeness, and 21 assertions
    Report-->>Workflow: Publish review and commit status
Loading

Flow diagram for native Fullsend activation and reporting

flowchart TD
    A[PR workflow triggered] --> B[Discover PR context]
    B --> C{PR299 targeting main from verify-pr-fullsend?}
    C -- No --> D[Run ordinary eval path]
    C -- Yes --> E{Native-relevant files changed?}
    E -- No --> D
    E -- Yes --> F[Approval gate for exact head and merge]
    F --> G[Checkout trusted base, exact PR merge, reviewed suite pin, and pinned Fullsend]
    G --> H[Recheck approved revision before WIF]
    H --> I[Authenticate host with existing WIF]
    I --> J[Run native suite in sandbox with separate credentials]
    J --> K[Upload only allowlisted result]
    K --> L{Source binding and 21 assertions valid?}
    L -- Yes --> M[Publish native review and success status]
    L -- No --> N[Publish failure evidence and fail status]
Loading

File-Level Changes

Change Details Files
Adds a source-pinned native Fullsend evaluation bootstrap with isolated credentialed execution.
  • Checks out and verifies the reviewed eval suite and pinned Fullsend infrastructure before setup or execution.
  • Runs the native suite against the exact approved PR merge in a read-only/OIDC job with separate host and sandbox credentials.
  • Keeps raw native logs private and uploads only an allowlisted, source-bound 21-assertion result.
.github/scripts/run-native-fullsend-evals.sh
.github/workflows/eval-pr-run.yml
Restricts native activation and hardens PR revision trust across the eval workflow.
  • Activates native evaluation only for PR 299 from verify-pr-fullsend when relevant files change.
  • Validates the API-associated head, base, merge parents, repository, branch, and revision again immediately before WIF authentication.
  • Replaces floating pull refs with immutable commit checkouts and binds ordinary/native review comments and statuses to the tested source.
.github/workflows/eval-pr-run.yml
.github/workflows/eval-pr.yml
Adds workflow contract tests covering trust, activation, isolation, reporting, and status behavior.
  • Tests stale revision rejection, bootstrap-only discovery, approval requirements, checkout and permission contracts, and native status propagation.
  • Tests source-bound report validation, complete boolean outcome requirements, secret/log filtering, and early rejection of an untrusted suite checkout.
plugins/sdlc-workflow/scripts/test_native_fullsend_eval_ci.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

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

Hey - I've found 3 issues

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path=".github/workflows/eval-pr-run.yml" line_range="402-404" />
<code_context>
+      (needs.discover.outputs.trusted == 'true' || needs.gate.result == 'success')
+    runs-on: ubuntu-24.04
+    timeout-minutes: 90
+    permissions:
+      contents: read
+      id-token: write
+    steps:
+      - name: Checkout trusted base
</code_context>
<issue_to_address>
**Revision check lacks API permission**

When a native eval job reaches the revision-recheck step, the job-level permissions replace the workflow-level permissions, leaving this job without `pull-requests: read`. The `Recheck approved revision before WIF` step calls `github.rest.pulls.get`, which GitHub rejects for lack of permission; every requested native run fails before WIF authentication.

Add `pull-requests: read` to the native job's permissions.
</issue_to_address>

### Comment 2
<location path=".github/workflows/eval-pr-run.yml" line_range="576" />
<code_context>
+              process.env.NATIVE_REPORT_RESULT === 'success');
+            const ordinaryOk = !ordinaryRequested || evalsResult === 'success';
+            const state = discoverResult === 'success' && gateResult !== 'failure' && gateResult !== 'cancelled' &&
+              nativeOk && ordinaryOk ? 'success' : 'failure';
+            const description = state === 'success' ? 'Requested eval suites completed successfully' :
+              'Eval execution, approval or native evidence failed';
</code_context>
<issue_to_address>
**Older runs overwrite current results**

When two workflow runs for the same PR head overlap and resolve different merge/base revisions, `report-status` and the ordinary review update publish by head SHA without checking whether a newer run has reported. An older run that finishes last overwrites the newer run’s status and review with results for its older merge, so callers see stale results as current.

Before publishing either a status or an ordinary review update, verify that the run is still the latest for that PR head.

Also at `.github/workflows/eval-pr-run.yml:370`, `.github/workflows/eval-pr-run.yml:577`.
</issue_to_address>

### Comment 3
<location path=".github/workflows/eval-pr-run.yml" line_range="550" />
<code_context>
+            // Only constructed scalar/count data enters the review. No arbitrary
+            // rationale, transcript, credential path or PR-controlled Markdown.
+            await github.rest.pulls.createReview({...context.repo, pull_number: expected.pr_number,
+              commit_id: expected.head_sha, event: 'COMMENT', body});
+            if (!valid) core.setFailed('Native evidence incomplete, failed, or missing');
+
</code_context>
<issue_to_address>
**Duplicate reviews accumulate**

When the native workflow is rerun for the same head, or concurrent ordinary eval runs for the same head reach the review check, the native publisher calls `createReview` on every run, so reruns create duplicate native result reviews. The ordinary publisher’s find-then-create sequence is not atomic, so concurrent runs can also create duplicate reviews, leaving repeated comments on the PR.

Make native review publication reuse or update an existing result review, and make ordinary review creation atomic or otherwise safe under concurrent runs.

Also at `.github/workflows/eval-pr-run.yml:370`.
</issue_to_address>

Sourcery assessment

Needs a human reviewer. 3 findings to address first, and this adds a credentialed CI trust boundary that runs PR-controlled plugin code alongside cloud WIF credentials and external native inference. If the source pinning, sandboxing, or credential isolation is wrong, a malicious or flawed revision could expose credentials or cause unbounded cloud-side effects; reverting the workflow would not undo those effects.

Blocking findings: .github/workflows/eval-pr-run.yml:404, .github/workflows/eval-pr-run.yml:576, .github/workflows/eval-pr-run.yml:550


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

Comment thread .github/workflows/eval-pr-run.yml
Comment thread .github/workflows/eval-pr-run.yml
Comment thread .github/workflows/eval-pr-run.yml Outdated
@mrizzi

mrizzi commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator Author

Code review (high effort)

Security-hardened CI bootstrap PR — trust/credential flow checks out clean (native eval only activates for the real collaborator PR #299, the credentialed job re-checks the approved revision before WIF auth, final status fails closed). No exploitable false-pass or credential-leak path found in the diff. Findings skew to maintainability/robustness, most severe first:

1. Three sources of truth for the native-path regex — .github/workflows/eval-pr-run.yml:187
The nativeRelevant path regex duplicates the paths: trigger list in eval-pr.yml (and the test parametrization). A future PR that adds a fullsend/triage-security path to the trigger but forgets this regex will run with native='false' — silently skipping all native Fullsend coverage while the gate shows green.

2. Download safe native result has no continue-on-error — .github/workflows/eval-pr-run.yml:507
If Recheck approved revision before WIF fails (head advanced after approval), the upload is skipped but run-native-evals.result is 'failure' (not 'skipped'), so this download runs, finds no artifact, and hard-errors. Status is still posted via if: always(), but the job shows a confusing error instead of a clean controlled failure.

3. Transient merge_commit_sha === null hard-fails the run — .github/workflows/eval-pr-run.yml:97
If the dispatch fires while GitHub is still computing mergeability (a known race right after a push), shaPattern.test(... || '') fails → core.setFailed(...) → whole run fails with no retry. Flaky red check on a valid PR.

4. Native pr-head checkout omits fetch-depth: 0 — .github/workflows/eval-pr-run.yml:412
Unlike the run-evals checkout of the same ref (line 254, depth 0), the native job gets a shallow pr-head. Anything inspecting git history/merge-base under pr-head would fail in native but succeed in run-evals.

5. Credential-parsing loop is stricter than GITHUB_ENV guarantees — .github/scripts/run-native-fullsend-evals.sh:48
The while IFS='=' read loop aborts on any line that isn't a single-line KNOWN_NAME=value. If the pinned upstream prepare-sandbox-credentials.sh ever emits a blank line, comment, or heredoc multiline value, the *) branch exits 1 even though credentials were written fine.

6. Native activation hardcoded to prNumber === 299 / verify-pr-fullsend — .github/workflows/eval-pr-run.yml:186
Deliberate bootstrap, but the identity is coupled in three places (discover bootstrap, the recheck step's pr.number !== 299 / pr.head?.ref, and tests). The intended "remove only this identity condition" follow-up is easy to apply inconsistently, leaving native CI partially gated or dead after #299 merges.

🤖 Generated with Claude Code

@mrizzi

mrizzi commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator Author

[sdlc-workflow/verify-pr] Re: @sourcery-ai review — Classified as code change request (3 findings). This review body restates the three inline findings already tracked:

  • Revision check lacks API permission → TC-6729
  • Older runs overwrite current results → TC-6730
  • Duplicate reviews accumulate → TC-6731

No additional sub-tasks created (the findings are the same as the inline comments).

@mrizzi

mrizzi commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator Author

Verification Report for TC-6726 (commit 4cd3c96)

Check Result Details
Review Feedback WARN 3 code change requests from sourcery-ai → sub-tasks TC-6729, TC-6730, TC-6731 created
Root-Cause Investigation DONE 1 consolidated convention-gap task TC-6732 — document GitHub Actions workflow-authoring conventions in CONVENTIONS.md
Scope Containment PASS Exactly the 4 allowed CI files; delivery boundary (no PR299 suite/fixtures/companions/docs) respected
Diff Size PASS 574 lines across 4 files; proportionate to a native eval CI bootstrap
Commit Traceability PASS All 3 commits reference TC-6726
Sensitive Patterns PASS No literal secrets; WIF deny-by-default (external_account asserted, paths masked); long hex are SHA pins
CI Status PASS All 4 head-SHA checks success (Sourcery, Plugin Validation, Trigger Eval Dispatch, Skill Lint); ordinary eval 100% (32/32)
Acceptance Criteria WARN Met by static inspection; keystone live WIF-backed run explicitly deferred to post-merge human bootstrap; comment-1 permission gap confirmed (fails safe) → TC-6729
Test Quality PASS Docstrings on all test functions; no repetitive tests; evals 32/32 (100%)
Test Change Classification ADDITIVE test_native_fullsend_eval_ci.py is net-new (205 lines); no modified/deleted tests
Verification Commands PASS pytest 68+3 passed; git diff --check clean; skillsaw 0 errors (7 pre-existing warnings); claude plugin validate passes

Overall: WARN

The PR is a clean, well-scoped four-file CI bootstrap: delivery boundary respected, no secrets, deny-by-default WIF, trusted/sandbox credential separation, read-only native job (plus OIDC), all local checks green. Three sourcery-ai findings on .github/workflows/eval-pr-run.yml were confirmed real and tracked as sub-tasks:

  • TC-6729 (High) — native run-native-evals job omits pull-requests: read, but its "Recheck approved revision before WIF" step calls github.rest.pulls.get; the recheck would be rejected at runtime (fails safe). The contract test currently pins the incomplete permission set, so the workflow and the test must be fixed together.
  • TC-6730 (Medium) — status/review publication has no superseded/concurrent-run guard; an older run finishing last can overwrite newer results.
  • TC-6731 (Medium) — native review publication is not idempotent (createReview always called); ordinary find-then-create is non-atomic → duplicate reviews under re-run/concurrency.

Acceptance Criteria is WARN because the keystone criterion — a real WIF-backed native CI run proving execution + 21-judgment grading — is explicitly deferred to a post-merge human bootstrap per the task's own delivery sequence, so it is only statically verifiable today.

This report does not merge the PR or transition the issue; a human reviewer decides next steps.


This comment was AI-generated by sdlc-workflow/verify-pr v0.13.9.

mrizzi added 3 commits October 6, 2026 09:56
Implements TC-6729

Assisted-by: Claude Code
Implements TC-6730

Assisted-by: Claude Code
Implements TC-6731

Assisted-by: Claude Code

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

Follow-up on 3 robustness findings from my earlier high-effort review that the post-review fix commits didn't cover (those addressed the Sourcery findings). Inline below.

Comment thread .github/workflows/eval-pr-run.yml
Comment thread .github/workflows/eval-pr-run.yml
Comment thread .github/scripts/run-native-fullsend-evals.sh Outdated
@mrizzi

mrizzi commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator Author

[sdlc-workflow/verify-pr] Re: @mrizzi review — Classified as code change request (3 findings). The three robustness follow-ups are tracked as sub-tasks of TC-6726: TC-6740 (poll/retry transient null merge_commit_sha), TC-6741 (continue-on-error on the native-result download), and TC-6742 (tolerate GITHUB_ENV blank/heredoc lines in credential parsing). See the inline replies for details.

@mrizzi

mrizzi commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator Author

Verification Report for TC-6726 (commit bbcf960)

Check Result Details
Review Feedback WARN 3 new human-review robustness findings → sub-tasks TC-6740, TC-6741, TC-6742 (prior run: TC-6729/6730/6731 for the sourcery findings)
Root-Cause Investigation DONE Convention gap; folded into existing root-cause task TC-6732 as GHA workflow-authoring rules 4–6 (no duplicate task)
Scope Containment PASS Authoritative diff is exactly the 4 CI bootstrap files, matching the task's Files to Modify one-for-one; no native suite/fixtures/companions/docs leaked (those belong to PR299)
Diff Size PASS ~699 additions / ~29 deletions across 4 files — proportionate for a native-eval CI bootstrap
Commit Traceability PASS All 6 commits reference the task ID (TC-6726 or child sub-tasks TC-6729/6730/6731)
Sensitive Patterns PASS No secrets/credentials in added lines; secret indirections, SHA pins and labelled synthetic test fixtures only; ::add-mask:: actively masks credential paths
CI Status PASS Sourcery review, Plugin Validation, Skill Lint, Trigger Eval Dispatch all completed/success; ordinary triage-security eval suite 163/163 assertions passed
Acceptance Criteria WARN In-scope criteria (workflow wiring, trust/pin logic, deterministic contract tests) satisfied; AC7 (PR299 suite + activation) and AC8 (real hosted WIF-backed eval run) pending PR299 delivery + human merge — documented limitations, not PR323 defects
Test Quality PASS Eval Quality 163/163 (100%); all 15 test functions + 3 helpers documented; no repetitive non-parameterized tests
Test Change Classification ADDITIVE One new test file (test_native_fullsend_eval_ci.py), none modified or deleted
Verification Commands PASS pytest scripts 90 passed, run-evals 3 passed; git diff --check clean; uvx skillsaw 0 errors (7 pre-existing warnings); claude plugin validate passed

Overall: WARN

The four-file native-eval CI bootstrap is sound: scope is exactly the intended CI files (native suite/fixtures/companions/docs correctly reserved for PR299), all deterministic tests/lint/plugin checks pass, CI is green, the ordinary eval suite is 163/163, and the trust/credential/pin flow (WIF separation, PR-source pinning, read-only GitHub permissions, source-bound safe reporting) checks out with no secrets in the diff.

Two WARNs, neither a FAIL:

  • Review Feedback — the human reviewer raised 3 robustness follow-ups (transient-null merge_commit_sha fail-closed; missing continue-on-error on the native-result download; over-strict GITHUB_ENV credential parsing). Each is a fix-forward improvement tracked as a sub-task (TC-6740/6741/6742); none breaks the current diff. Root cause is a documented convention gap, folded into TC-6732.
  • Acceptance Criteria — everything verifiable from this four-file bootstrap passes; the real hosted WIF-backed native eval run (AC8) and the PR299 suite content/activation (AC7) are, by the task's own delivery boundary, delivered/proved on PR299 and pending human merge of this bootstrap.

This report does not merge the PR or transition the Jira issue — a human reviewer decides.


This comment was AI-generated by sdlc-workflow/verify-pr v0.13.9.

mrizzi added 3 commits October 6, 2026 12:27
Implements TC-6740

Assisted-by: Claude Code
Implements TC-6741

Assisted-by: Claude Code
Implements TC-6742

Assisted-by: Claude Code

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

Focused high-effort re-review of the 6 post-review fix commits (4cd3c960..7ded9d6f), concentrating on the newly-added supersession guard, concurrency, and credential parser. 5 findings inline, most severe first. The heredoc parser itself is well-structured and well-tested — findings against it are the per-line masking gap and a narrowed fail-closed behavior.

Comment thread .github/workflows/eval-pr-run.yml
Comment thread .github/workflows/eval-pr-run.yml
Comment thread .github/workflows/eval-pr-run.yml
Comment thread .github/scripts/run-native-fullsend-evals.sh
Comment thread .github/scripts/run-native-fullsend-evals.sh Outdated
@mrizzi

mrizzi commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator Author

[sdlc-workflow/verify-pr] Re: @mrizzi review — Classified the 5 inline findings from your focused re-review of 4cd3c960..7ded9d6f: 4 code change requests, tracked as sub-tasks of TC-6726 —

  • TC-6744 — guard API error strands the required check pending (eval-pr-run.yml:88)
  • TC-6745 — eventual-consistency race skips pending/approval statuses (eval-pr-run.yml:69)
  • TC-6746 — multiline secret per-line masking (run-native-fullsend-evals.sh:99)
  • TC-6747 — silent fail-closed regression on unexpected credentials (run-native-fullsend-evals.sh:93)

and 1 suggestion — superseded-run compute optimization (cancel-in-progress, eval-pr-run.yml:29) — left as a suggestion (no documented/demonstrated convention), no sub-task.

@mrizzi

mrizzi commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator Author

Verification Report for TC-6726 (commit 7ded9d6)

Check Result Details
Review Feedback WARN 5 new findings from the focused re-review classified: 4 code change requests → sub-tasks TC-6744/TC-6745/TC-6746/TC-6747; 1 suggestion (cancel-in-progress) not upgraded. Prior 6 already tracked (TC-6729/6730/6731/6740/6741/6742).
Root-Cause Investigation DONE All 4 new defects = convention gap (GitHub Actions workflow-authoring facts). Extended existing root-cause task TC-6732 rather than creating duplicates.
Scope Containment PASS PR's 4 files exactly match the task's Files to Modify/Create; no out-of-scope or unimplemented files.
Diff Size PASS +867/-29 across 4 files — proportionate for a CI bootstrap adding two new files (123-line script + 415-line test).
Commit Traceability WARN 3/9 commits reference TC-6726; 6 reference its child sub-tasks (by-design review-fix commits in the TC-6726 family; all carry valid Jira IDs + Assisted-by).
Sensitive Patterns PASS No committed secrets; all credentials handled by env-var reference, secrets.*/vars.*, and ::add-mask:: plumbing.
CI Status PASS All 5 head-SHA checks pass: Plugin Validation, Trigger Eval Dispatch, Skill Lint, Sourcery review, Eval PR Run.
Acceptance Criteria WARN All PR323-scoped criteria satisfied; C5/C7/C8/C9 verified indirectly (suite contents + live WIF run live on PR299; Jira-scope items outside the 4-file diff).
Test Quality PASS Repetitive-test PASS, test-doc PASS (all docstrings present), Eval Quality PASS — triage-security 163/163 assertions (100%).
Test Change Classification ADDITIVE One new test file (test_native_fullsend_eval_ci.py, 415 lines); no modified/deleted tests.
Verification Commands PASS pytest 101 + 3 pass, git diff --check clean, claude plugin validate passes, uvx skillsaw 0 errors (7 pre-existing warnings). PR299-only commands N/A for this checkout.

Overall: WARN

No blocking (FAIL) findings. The 4-file CI bootstrap is scope-clean, CI is green, no secrets, triage-security evals pass 163/163, and all PR323-scoped acceptance criteria are satisfied (those whose proof lives on PR299 or the hosted WIF run are verified indirectly). This re-review surfaced 5 new reviewer findings on the on-branch fix commits (4cd3c960..7ded9d6f): 4 code change requests now tracked as TC-6744 (guard-error terminal status), TC-6745 (latest-run eventual-consistency), TC-6746 (per-line secret masking), TC-6747 (fail-closed on unexpected credentials); plus 1 suggestion (cancel-in-progress compute optimization) left as a suggestion. Root cause for all four is a GitHub Actions workflow-authoring convention gap, folded into existing root-cause task TC-6732. Commit Traceability is WARN only because 6 commits reference child sub-tasks by design. No merge or Jira transition performed — the merge decision is yours.


This comment was AI-generated by sdlc-workflow/verify-pr v0.13.9.

mrizzi added 4 commits October 6, 2026 13:49
Implements TC-6744

Assisted-by: Claude Code
Implements TC-6745

Assisted-by: Claude Code
Implements TC-6746

Assisted-by: Claude Code
Implements TC-6747

Assisted-by: Claude Code
@mrizzi

mrizzi commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator Author

Verification Report for TC-6726 (commit 4da8bdd)

Check Result Details
Review Feedback WARN 11 inline threads + 3 review bodies, all classified as code change requests in prior runs → sub-tasks TC-6729/6730/6731/6740/6741/6742/6744/6745/6746/6747. No new unclassified feedback this run.
Root-Cause Investigation N/A No new sub-tasks created this run (all defects already tracked; root-cause TC-6732 exists).
Scope Containment PASS Net diff is exactly the 4 mandated CI bootstrap files; PR299-reserved native-suite files correctly absent.
Diff Size PASS 955 insertions / 29 deletions across 4 files — proportionate to a security-hardened CI bootstrap.
Commit Traceability WARN All 13 commits carry Implements TC-XXXX; 3 reference TC-6726 directly, 10 reference child sub-tasks (benign, fully traceable).
Sensitive Patterns PASS No hardcoded secrets; credentials via WIF/OIDC indirection; credential-shaped literals are synthetic test fixtures.
CI Status PASS All 4 head check-runs success (Sourcery review, Skill Lint, Plugin Validation, Trigger Eval Dispatch).
Acceptance Criteria WARN 0 of 9 failed; 5 fully met by the bootstrap diff, 2 partially met, 2 deferred to PR299 suite + hosted WIF run.
Test Quality PASS New workflow-contract suite is parameterized and fully docstringed; eval run 163/163 assertions (100%).
Test Change Classification ADDITIVE Adds one new test file (+489 lines); no tests modified or deleted.
Verification Commands PASS pytest 110/110; run-evals helpers 3/3; git diff --check clean; claude plugin validate ✔ (skillsaw sandbox-blocked → CI Skill Lint green).

Overall: WARN

No new actionable items were created this run — all review feedback is already tracked as sub-tasks (TC-6729…6747), CI is green on this head, and the triage-security eval run passed 163/163. The three WARNs are informational and benign:

  • Commit Traceability — every commit is traceable; 10 commits reference child sub-tasks of TC-6726 rather than the parent directly.
  • Acceptance Criteria — nothing fails; the criteria requiring the native suite (evals/fullsend/*, 4 cases / 21 judgments) and a hosted WIF-backed run are intentionally deferred to PR299 and the human-merge-then-hosted-run sequence, per the task's delivery boundary.
  • Review Feedback — code change requests exist and are already addressed by the 4 newest fix commits (TC-6744/6745/6746/6747).

This PR is a minimal 4-file CI bootstrap; a human merge followed by a real WIF-backed native eval run on PR299 remains the final verification gate. This report does not merge the PR or transition the issue.


This comment was AI-generated by sdlc-workflow/verify-pr v0.13.9.

@mrizzi
mrizzi merged commit 805068c into RHEcosystemAppEng:main Oct 6, 2026
5 checks passed
@mrizzi
mrizzi deleted the codex/tc-6726-native-eval-ci branch October 6, 2026 12:59
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.

1 participant