Repository navigation
feat(source-control): add the pull-request evidence posting step #11391
Description
Parent
Refs #8651. Evidence-verification plan: Brief and acceptance criteria at #11364 (comment); Design and Plan comments are on #11364.
Depends on
Outcome
/source-control:pull-request evidence upserts one marker comment holding the run's text summary and a link to the retained capture artifact, after a leak scan.
Demo: run /skill-quality:check pull-request; the refused-file, second-head-edit and no-artifact cases pass.
Plan (phase S5a)
Satisfies: AC8
Size Small-Medium. Depends on: S3 (#11387) (publishable list). Plugin: source-control. Design: Contracts C6, T9.
skills/pull-requestgainsevidence(newreference/evidence.md): one marker comment linking the retained capture artifact (pr-capture-<pr>-<head>, expiry stated) plus the run's text summary. Where no CI capture exists, the comment carries the text summary and says media was not uploaded. The comment body is scanned with the same literal values and patterns before posting; a hit posts nothing. Upsert: list the PR's issue comments withgh api, find the marker, edit that comment by id (PATCH repos/{owner}/{repo}/issues/comments/{id}), else create. Moves the text and artifact-link parts ofplugins/playwright/skills/demo-video/reference/posting.mdhere. Updateplugins/source-control/skills/pull-request/reference/create.md:389Visual evidence (stale "no upload option").- Run budget: at most 2 runs per eval case, 1 rerun after a fix; stop on the first usage-limit error.
- Sanity Check: eval "file not in publishable list → refused"; eval "second head → existing marker comment edited by id, not a second comment"; eval "no artifact → text summary,
media not uploaded";/skill-quality:check pull-requestPASS.
Design excerpt
- source-control:
/source-control:pull-request evidenceposts one marker comment (local
gh --attach; CI fromsource-control-babysit-mergeafter PASS, before enqueue); create.md's
Visual evidence updated; playwright demo-video'sreference/posting.mdmoves here, demo-video
calls it.
components:
schemas:
PostEvidence: # C6, /source-control:pull-request evidence
type: object
required: [pr, head_sha]
properties:
pr: {type: integer}
head_sha: {type: string}
summary: {type: string} # text summary; no files uploaded (AC10)
artifact_url: {type: [string, "null"]} # CI: pr-capture-<pr>-<head> link
retention_days: {type: [integer, "null"]}
marker: {const: "<!-- evidence-verification -->"}/source-control:pull-request evidence <pr> [--artifact-url <url>] [--summary <file>]: one
marker comment upserted by comment id; links the retained capture artifact; uploads no files
(attachments have no retention period, AC10).
Acceptance criteria
Brief criteria this slice satisfies:
- AC8: A passing PR carries one comment linking redacted evidence; account and usage lines never appear in uploaded captures.
Done when:
- Sanity Check passes: eval "file not in publishable list → refused"; eval "second head → existing marker comment edited by id, not a second comment"; eval "no artifact → text summary,
media not uploaded";/skill-quality:check pull-requestPASS. - The comment is upserted by comment id (
PATCH repos/{owner}/{repo}/issues/comments/{id}), found by the marker<!-- evidence-verification --> - A scan hit on the comment body posts nothing
- The stale "no upload option" line in
create.mdVisual evidence is updated without adding a media upload path - The plugin's version and CHANGELOG are bumped per the repository's release convention
-
ci-statusis green on the PR head
Owner decision Q12 (2026-10-30)
Q12 answered by the owner: "the end approved artifacts should be gh --attach on the PR (collapsed, accordion sections) - clean/tidy (format might change over time)". In scope here: after a pass, one marker comment posted with gh pr comment --attach (images and video, publishable captures only), each acceptance criterion or entry point in its own collapsed <details> section, upserted by the marker. The comment layout comes from a template file the skill reads, not from inline text, so the format can change by editing the template. Retention (AC10) applies to CI artifacts and run directories; the PR attachments are the approved record.
🤖 Generated with Claude Code
Activity
github-actions commentedon Oct 30, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Known
Flags: none
Blocked by: none
#11391 (comment)
This decision settles the open questions. The work is to add an
evidencestep to the pull-request skill. It posts one comment after the verifier passes, with attached captures in collapsed sections laid out by a template. It also needs thecreate.mdline updated. #11387 doesn't appear among the open issues, so I treated it as not blocking.Automated triage, applied by the lanes App.
melodic-automation-lanes commentedon Oct 30, 2026
Not admitted to the issue lane: its title or body names a charge (retention), which needs an owner decision. Admission takes the issue once each of those is met, when intake triages it again (
.github/actions/resolve-config/admission-rules.json).melodic-automation-lanes commentedon Oct 30, 2026
The latest triage verdict holds nothing: the issue is at
status: ready.kyle-sexton commentedon Oct 31, 2026
Decision 2026-10-31 (owner: keep PRs clean, edit in place, post only after validation): one evidence comment per PR, posted only after the verifier passes, from an identity that posts nothing else on the PR, updated in place with
gh pr comment --edit-last --create-if-none --attach. First task: test that--edit-lastaccepts--attach; if it does not, delete and repost so the PR still carries one comment. Video is attached only once every frame passes the masking check (#11387).melodic-automation-lanes commentedon Oct 31, 2026
Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.
Intended outcome:
/source-control:pull-request evidenceupserts one marker comment per PR, after verifier pass and a leak scan, attaching publishable media withgh pr comment --edit-last --create-if-none --attachin collapsed details sections laid out by a template file.Related work
Open questions
RECOMMENDED: Yes: attach media per Q12 and the 2026-10-31 comment, and reword the issue's 'uploads no files' lines (Outcome, Design, AC10 note). Basis: judgment
RECOMMENDED: Use --edit-last --create-if-none --attach with delete-and-repost fallback, and keep the marker <!-- evidence-verification --> as a guard against editing a foreign comment. Basis: judgment
RECOMMENDED: Yes: update create.md:389 to point at the evidence step as the attach path and drop the 'without adding a media upload path' clause. Basis: plugins/source-control/skills/pull-request/reference/create.md:389
Sources read
To answer, post a comment that starts with this line:
Automated refinement by the lanes App. Answer with a comment whose first line is
**Decision recorded.**.kyle-sexton commentedon Nov 1, 2026
Decision recorded. The owner's 2026-10-31 decision (#11391 (comment)) and Q12 (#11364 (comment)) answer the triage and refinement questions:
gh pr comment --attach.gh pr comment --edit-last --create-if-none --attach, with delete-and-repost as the fallback.create.mdline points at the evidence step as the attach path.Where the body disagrees, this replaces it: done-when item 2 (upsert by comment id with
PATCH), the "edited by id" wording of the item 1 eval, done-when item 4's "without adding a media upload path", and the Outcome and Design excerpt lines that say no files are uploaded.gh pr comment --edit-last --create-if-none --attach, only after the verifier passes, attaching publishable captures in collapsed<details>sections laid out by a template file the skill readsghrejects--attachwith--edit-last, the step deletes its earlier evidence comment and posts a new one, so the PR carries one evidence commentcreate.mdVisual evidence points at the evidence step as the attach pathgithub-actions commentedon Nov 1, 2026
github-actions commentedon Nov 1, 2026