Skip to content

TC-6192: record E2E CI-dispatch acceptance evidence in fullsend.md - #301

Merged
mrizzi merged 3 commits into
verify-pr-fullsendfrom
TC-6192
Sep 16, 2026
Merged

mrizzi merged 3 commits into
verify-pr-fullsendfrom
TC-6192

Conversation

@mrizzi

@mrizzi mrizzi commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator

What

Records the TC-6192 E2E acceptance — the CI-gated verify-pr dispatch path proven end to end — in fullsend.md §Acceptance run (new subsection "E2E acceptance via CI dispatch (TC-6192)"). TC-5815 proved the agent; this proves the CI-dispatch path.

Acceptance run (vehicle: throwaway PR #300 / task TC-6254)

A qualifying PR (tc-6192-e2e-acceptanceverify-pr-fullsend, head on the upstream repo so pull_request secrets + OIDC are available) linked to Jira TC-6254 (status Review, ai-generated-jira label, Git PR field = PR #300). All five acceptance criteria proven:

Criterion Result
Qualifying PR → CI finishes → verify-pr dispatches wait-for-checks releases after python-tests terminal, then verify-pr runs
Report posts to PR and Jira ✅ sticky report on PR #300 + comment on TC-6254
CI passing ✅ python-tests 34990552632=success → verify-pr 34990553318 posted (CI PASS, Overall WARN) for 3271577
CI failing ✅ python-tests 34991800394=failure → wait still releases → verify-pr 34991800865 posted (CI FAIL, Overall FAIL) for 64b818c; sub-task TC-6255 auto-created
No duplicate on re-run of same head ✅ re-ran verify-pr on 64b818c: PR stayed at 2 report comments (second edited in place), Jira stayed at 1 comment

CI result is data, not a gate: allowed-conclusions includes failure, so a failing check still releases the wait and verify-pr reports CI Status = FAIL. DENIED sandbox egress (github/raw) = split-trust policy working. Jira report authored under the interim personal token pending the SA (TC-6191).

The PR #300 vehicle, branches, test issues (TC-6254/TC-6255), and scaffolding files are disposable and removed after this evidence lands.

Implements TC-6192.

🤖 Generated with Claude Code

Summary by Sourcery

Document end-to-end evidence that CI-gated verify-pr dispatch runs and reports correctly for both passing and failing checks.

Enhancements:

  • Document the end-to-end TC-6192 CI-gated verify-pr dispatch acceptance, covering successful and failing CI runs, reporting to GitHub and Jira, and duplicate-report prevention.
  • Record expected split-trust sandbox behavior and the Jira Markdown table rendering limitation in the known issues.

Documentation:

  • Add an acceptance-run subsection to fullsend.md documenting the CI dispatch workflow and its five acceptance criteria.

Add fullsend.md §Acceptance run → "E2E acceptance via CI dispatch
(TC-6192)" documenting the CI-gated verify-pr dispatch proven end to end
on PR #300 / TC-6254: qualifying PR triggers the workflow, wait-for-checks
releases after CI reaches terminal, verify-pr posts to both the PR and
Jira. Records all four acceptance criteria — CI-pass run (python-tests
success → Overall WARN), CI-fail run (python-tests failure still releases
the wait → CI Status FAIL, sub-task auto-created), report on both surfaces,
and idempotency (re-run same head, no duplicate reports). Notes DENIED
egress = split-trust policy working, and the interim personal-token Jira
authorship pending the SA (TC-6191).

Implements TC-6192

Assisted-by: Claude Code
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sourcery-ai

sourcery-ai Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Reviewer's Guide

Adds a detailed TC-6192 acceptance subsection to fullsend.md, providing evidence that qualifying pull requests dispatch verify-pr after CI completes for both passing and failing checks, publish reports to GitHub and Jira, and avoid duplicate comments on reruns.

Sequence diagram for CI-gated verify-pr dispatch

sequenceDiagram
    participant PR as Qualifying PR
    participant Workflow as fullsend-verify-pr
    participant Wait as wait-for-checks
    participant CI as python-tests
    participant Verify as verify-pr
    participant GitHub as GitHub PR
    participant Jira as Jira

    PR->>Workflow: pull_request event
    Workflow->>Wait: Start and await terminal CI result
    CI-->>Wait: success or failure
    Note over Wait: allowed-conclusions includes failure
    Wait->>Verify: Release dispatch
    Verify->>GitHub: Post or update sticky report
    Verify->>Jira: Post or update task comment
Loading

Sequence diagram for idempotent verify-pr rerun reporting

sequenceDiagram
    participant Verify as verify-pr rerun
    participant PR as GitHub PR
    participant Jira as Jira task

    Verify->>PR: Find report for same commit SHA
    PR-->>Verify: Existing report comment
    Verify->>PR: Edit report in place
    Verify->>Jira: Update single task comment
    Jira-->>Verify: One comment retained
Loading

Flow diagram for CI result reporting

flowchart LR
    Start[Qualifying PR] --> Checks[python-tests completes]
    Checks --> Wait[wait-for-checks releases]
    Wait --> Verify[verify-pr runs]
    Verify --> Report[Report CI status]
    Report --> Pass[CI PASS / Overall WARN]
    Report --> Fail[CI FAIL / Overall FAIL]
Loading

File-Level Changes

Change Details Files
Documents the complete TC-6192 CI-gated E2E acceptance flow and its evidence.
  • Describes qualification requirements, upstream-repository/OIDC setup, and the wait-for-checks to verify-pr dispatch sequence.
  • Records successful and failing CI runs, including workflow run identifiers, report outcomes, and automatic Jira sub-task creation.
  • Confirms PR/Jira reporting and idempotent updates on rerunning the same commit.
  • Explains that CI failure is reported as data rather than blocking dispatch, and documents expected denied egress behavior.
  • Notes the interim Jira token attribution and identifies disposable acceptance artifacts slated for removal.
fullsend.md

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 1 issue

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

## Individual Comments

### Comment 1
<location path="fullsend.md" line_range="340" />
<code_context>
+comment is authored by **Marco Rizzi** (it would be the Service Account under the
+SA token — TC-6191, on hold).
+
+**Results — all four acceptance criteria proven:**
+
+| Acceptance criterion | Result |
</code_context>
<issue_to_address>
**nitpick:** The subsection claims that all four acceptance criteria are proven, but the results table contains five separate criteria: dispatch, reporting to both surfaces, passing CI, failing CI, and rerun idempotency. This makes the acceptance evidence internally inconsistent and leaves readers unsure whether one row is extra or one criterion was omitted from the stated count.

**Suggested fix:** Change the heading to state “all five acceptance criteria proven,” or consolidate the rows so they match the intended four-criterion count.

```suggestion
**Results — all five acceptance criteria proven:**
```
</issue_to_address>

Sourcery assessment

Approved.


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

Comment thread fullsend.md Outdated
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 15, 2026

Copy link
Copy Markdown

🤖 Finished Verify Pr · ✅ Success · Started 4:28 PM UTC · Completed 4:37 PM UTC

Commit: 2a912ef · View workflow run →

Runtime: claude · Model: claude-opus-4-8 · Effort: high · Cost: $3.45

@fullsend-ai-review

Copy link
Copy Markdown

[sdlc-workflow/verify-pr] Re: @sourcery-ai[bot] review — Classified as nit — minor wording/consistency observation (the subsection heading says "all four acceptance criteria proven" while the results table lists five rows); it does not affect correctness. No sub-task created.

@fullsend-ai-review

Copy link
Copy Markdown

Verification Report for TC-6192 (commit 2a912ef)

Check Result Details
Review Feedback PASS 2 items classified (1 inline nit + 1 review-body nit from sourcery-ai[bot]); no code change requests, no sub-tasks created
Root-Cause Investigation N/A No sub-tasks created; nothing to investigate
Scope Containment PASS Only fullsend.md changed — the file the task directs extending (§Acceptance run)
Diff Size PASS +44 / -0 across 1 file; proportionate for a documentation-evidence task
Commit Traceability PASS Sole commit 2a912ef references TC-6192 ("Implements TC-6192")
Sensitive Patterns PASS No secrets/keys/tokens in added lines; diff is prose documentation
CI Status WARN CI status could not be retrieved in sandbox mode (no gh CLI / no network egress)
Acceptance Criteria PASS 5 of 5 criteria documented with concrete evidence (run IDs, commit SHAs, outcomes)
Test Quality N/A No test files in the diff; Eval Quality: N/A
Test Change Classification N/A No test files added/modified/deleted
Verification Commands N/A None specified; no eval-infrastructure changes

Overall: WARN

All intent, security, and acceptance checks pass. Acceptance Criteria: 5 of 5 documented with concrete evidence (CI-pass run 3271577, CI-fail run 64b818c, reports on both surfaces, and idempotency on re-run). CI Status is WARN only because the live CI conclusion cannot be fetched inside the read-only sandbox (no gh CLI / no network egress) — it is not an observed failure. Review feedback is a single Sourcery nitpick (heading says "four" acceptance criteria while the results table lists five rows), classified as a nit; it is a cosmetic wording inconsistency requiring no sub-task. No secrets, no out-of-scope changes, no test regressions. This report is informational — a human reviewer decides whether to merge.


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

The acceptance results table lists five criteria; the lead-in sentence
said "four". Corrects the count to match (Sourcery nit surfaced by the
verify-pr WARN on PR #301).

Implements TC-6192

Assisted-by: Claude Code
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 15, 2026

Copy link
Copy Markdown

🤖 Finished Verify Pr · ✅ Success · Started 4:42 PM UTC · Completed 4:50 PM UTC

Commit: fb82d2f · View workflow run →

Runtime: claude · Model: claude-opus-4-8 · Effort: high · Cost: $3.98

@fullsend-ai-review

Copy link
Copy Markdown

Verification Report for TC-6192 (commit fb82d2f)

Check Result Details
Review Feedback PASS 2 items classified (1 inline nit + 1 review-body nit from sourcery-ai[bot]); no code change requests, no sub-tasks. Both already classified on a prior run; the "four -> five" wording nit was addressed by commit fb82d2f.
Root-Cause Investigation N/A No sub-tasks created; nothing to investigate
Scope Containment PASS Only fullsend.md changed -- the documentation-evidence target the task directs (Acceptance run)
Diff Size PASS +44 / -0 across 1 file; proportionate for a documentation-evidence task
Commit Traceability PASS Both commits (2a912ef, fb82d2f) reference TC-6192 ("Implements TC-6192")
Sensitive Patterns PASS No secrets/keys/tokens in added lines; diff is prose documentation
CI Status WARN CI status could not be retrieved in sandbox mode (no gh CLI / no network egress)
Acceptance Criteria PASS 5 of 5 criteria documented with concrete evidence (run IDs, commit SHAs, outcomes)
Test Quality N/A No test files in the diff; Eval Quality: N/A
Test Change Classification N/A No test files added/modified/deleted
Verification Commands N/A None specified; no eval-infrastructure changes

Overall: WARN

All intent, security, and acceptance checks pass. Acceptance Criteria: 5 of 5 documented with concrete evidence (CI-pass run 3271577, CI-fail run 64b818c, reports on both surfaces, and idempotency on re-run of the same head). CI Status is WARN only because the live CI conclusion cannot be fetched inside the read-only sandbox (no gh CLI / no network egress) -- it is not an observed failure. Review feedback is a single Sourcery wording nitpick (heading said "four" acceptance criteria while the results table lists five rows), classified as a nit and already addressed by commit fb82d2f; no sub-task required. No secrets, no out-of-scope changes, no test regressions. This is a re-run on a new head (fb82d2f); the prior report on commit 2a912ef is preserved and this fresh commit-scoped report is posted for fb82d2f. This report is informational -- a human reviewer decides whether to merge.


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

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 16, 2026

Copy link
Copy Markdown

🤖 Finished Verify Pr · ✅ Success · Started 7:24 AM UTC · Completed 7:32 AM UTC

Commit: 45e618b · View workflow run →

Runtime: claude · Model: claude-opus-4-8 · Effort: high · Cost: $3.65

@fullsend-ai-review

Copy link
Copy Markdown

Verification Report for TC-6192 (commit 45e618b)

Check Result Details
Review Feedback PASS 2 items classified (1 inline nit + 1 review-body nit from sourcery-ai[bot]); no code change requests, no sub-tasks created. Both already classified on prior runs.
Root-Cause Investigation N/A No sub-tasks created; nothing to investigate.
Scope Containment PASS Only fullsend.md changed - the task-implied target (Implementation Notes direct extending fullsend.md section Acceptance run).
Diff Size PASS +49 / -0 across 1 file; proportionate for a documentation-evidence append.
Commit Traceability WARN 2 of 3 commits reference TC-6192; commit 45e618b (vendor-limitation note) carries no Jira reference.
Sensitive Patterns PASS No secrets/credentials/keys in added lines; token mentions are descriptive prose, numerics are CI run IDs / commit SHAs.
CI Status WARN CI status could not be fetched inside the sandbox (no gh CLI / no network egress); recorded as unknown/pending per the pending -> WARN rule.
Acceptance Criteria WARN 5 of 5 criteria documented as proven in the added section "E2E acceptance via CI dispatch (TC-6192)"; verification is indirect (recorded acceptance evidence, not independently re-executed in-sandbox).
Test Quality N/A No test files in the diff. Repetitive Test Detection: N/A; Test Documentation: N/A; Eval Quality: N/A.
Test Change Classification N/A No test files modified, added, or deleted.
Verification Commands N/A No verification commands in the task; PR touches no run-evals infrastructure (Check 3b skipped).

Overall: WARN

Two checks WARN, none FAIL -> Overall WARN (informational). Commit Traceability: commit 45e618b (vendor Jira-table limitation note) has no TC-6192 reference - 2/3 commits reference the task. CI Status: could not be fetched inside the sandbox (no gh CLI / no network egress) and is recorded as unknown/pending - not a failure. Acceptance Criteria: all five criteria are documented as proven in the new fullsend.md section "E2E acceptance via CI dispatch (TC-6192)" with concrete workflow-run IDs and commit SHAs; verification is necessarily indirect since this is recorded acceptance evidence for a CI-gated path that cannot be re-executed in-sandbox. Review feedback contains only nits (four/five wording, from sourcery-ai[bot], already classified and addressed) - no code change requests, no sub-tasks created. This report is informational; a human reviewer decides whether to merge.


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

@mrizzi
mrizzi merged commit 60dffa2 into verify-pr-fullsend Sep 16, 2026
17 checks passed
mrizzi added a commit that referenced this pull request Sep 16, 2026
The acceptance results table lists five criteria; the lead-in sentence
said "four". Corrects the count to match (Sourcery nit surfaced by the
verify-pr WARN on PR #301).

Implements TC-6192

Assisted-by: Claude Code
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mrizzi
mrizzi deleted the TC-6192 branch September 16, 2026 07:34
mrizzi added a commit that referenced this pull request Sep 16, 2026
In the CI-dispatched (sandbox) verify-pr path the CI Status check had no
data — no gh CLI or egress in the sandbox — so it degraded to WARN
"CI status could not be retrieved" (PR #301, TC-6192). Extend the
split-trust prefetch so the pre_script fetches the PR head-SHA CI
check-run outcomes on the trusted runner and embeds them in the sandbox
bundle; correctness.md Check 1 reads them in sandbox mode and keeps the
`gh` on-demand path for interactive mode.

- pre-verify-pr.sh: prefetch repos/<repo>/commits/<sha>/check-runs into
  check-runs.json, reduced to name/status/conclusion/details_url
- pre_verify_pr.py: build_github_bundle embeds github.check_runs
  (defaults to []); _github_from_dir reads check-runs.json
- verify-pr-input.schema.json: add required github.check_runs (github is
  additionalProperties:false, so the new key must be declared)
- correctness.md: Check 1 sandbox-mode branch reads pre-fetched
  check-runs; 1b notes failure logs are unavailable in the sandbox
- dispatch-template.md, SKILL.md Step 0.7: document github.check_runs
- test_pre_verify_pr.py: cover check_runs in the bundle and transform

E2E re-verification on a live dispatched PR (PASS on green, FAIL on red)
is deferred to a CI run.

Implements TC-6257

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Assisted-by: Claude Code
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