Repository navigation
feat(pr-pipeline): add the verify-capture key and verdict evidence metrics #11385
Copy link
Copy link
Closed
Copy link
Labels
agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.Fully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.Triaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Description
Parent
Refs #8651. Evidence-verification plan: Brief and acceptance criteria at #11364 (comment); Design and Plan comments are on #11364.
Depends on
- none
Outcome
docs/conventions/pr-pipeline.yaml carries merge.verify-capture, and every per-head verdict records an evidence block (capture: no-app until a capture exists).
Demo: run the write-verdict test; the no-app, blocked and local_loop cases pass.
Plan (phase S6)
Satisfies: AC10, AC11, AC5
Size Small-Medium. Depends on: none. Files: docs/conventions/pr-pipeline.yaml, docs/conventions/pr-pipeline/pr-pipeline.schema.json, docs/conventions/pr-pipeline/README.md, .github/scripts/pr-verify/write-verdict.mjs (+ test). Design: C7, C8, T11.
merge.verify-capture(appunset,retention-days: 30); schema and README "Verifier verdict" row.write-verdict.mjs:evidenceblock; with no capture summary file →capture: no-app;local_loopparsed from the trusted PR text'sEvidence loop: k/3line as data.- Sanity Check:
node --test .github/scripts/pr-verify/write-verdict.test.mjsexits 0 withno-app,blocked, andlocal_loopcases; CIcheck-plugins/schema validation passes.
Design excerpt
- PR pipeline (
.github/workflows/pr-verify.yml,write-verdict.mjs,prompt.md,
docs/conventions/pr-pipeline.yaml+ schema + README):merge.verify-capturekey,capture
job, judge jobs read the capture artifact as untrusted data,verdict.jsonevidenceblock.
components:
schemas:
PipelineKey: # C7, docs/conventions/pr-pipeline.yaml merge.verify-capture
type: object
properties:
app: {type: string} # unset: skip, verdict notes "no app check ran"
retention-days: {type: integer, minimum: 1, maximum: 90, default: 30}
VerdictEvidence: # C8, verdict.json "evidence" (write-verdict.mjs)
type: object
properties:
capture: {enum: [ran, skipped, blocked, not-applicable, no-app]}
reason: {type: [string, "null"]}
capture_count: {type: integer}
features: {type: array, items: {type: string}}
local_loop: {type: [integer, "null"]} # from PR body "Evidence loop: k/3", as data; self-reported by the authorAcceptance criteria
Brief criteria this slice satisfies:
- AC10: Every evidence artifact has a retention period.
- AC11: Verdict, evidence-loop count and capture count are recorded per PR.
- AC5: If a capture cannot run (blocked, or no usable driver), the verdict records why and does not fail the PR.
Done when:
- Sanity Check passes:
node --test .github/scripts/pr-verify/write-verdict.test.mjsexits 0 withno-app,blocked, andlocal_loopcases; CIcheck-plugins/schema validation passes. - Schema and README "Verifier verdict" row updated
-
local_loopis parsed as data from the trusted PR text, and a missing line givesnull -
ci-statusis green on the PR head
🤖 Generated with Claude Code
Metadata
Metadata
Assignees
Labels
agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.Fully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.Triaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Type
Fields
No fields configured for Feature.
Activity
github-actions commentedon Oct 30, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Small
Complexity: Low
Uncertainty: Known
Flags: none
Blocked by: none
Understood: add a
merge.verify-capturekey (retention 30 days) to the PR pipeline config, with schema and README updates. Also havewrite-verdict.mjsrecord anevidenceblock in each verdict:capture: no-appwhen there is no capture summary, andlocal_loopparsed as data from theEvidence loop: k/3line. The issue states the outcome, the files involved and a runnable check. I found no open duplicate and nothing missing.Automated triage, applied by the lanes App.
github-actions commentedon Oct 30, 2026
github-actions commentedon Oct 30, 2026
melodic-automation-lanes commentedon Oct 31, 2026
The work-resolve-issue run that
agent-readystarted failed or was cancelled before it reported, or it stopped or the token broker refused it because its workflow files differ from main's. work-unblock removed and addedagent-readyback to start a fresh run on main's workflow files. If this run ends the same way, it re-fires the issue again, waiting longer each time.github-actions commentedon Oct 31, 2026