Skill: Publish Evidence
The orchestrator owns this verdict and human-verification step. It derives the
verdict from completed evidence; publishing makes that verdict inspectable and
never reruns a test.
Declare the verdict
Passed: every claim has an observable assertion in the completed test run.
Failed: an assertion disproves at least one expected outcome.
Incomplete: requirements, tooling, or evidence are missing. A skip is always
Incomplete, never Passed.
- Prose, screenshots, and recordings do not decide the verdict.
Make every claim auditable
- Show the test name and verdict, each claim's assertion evidence, the relevant
test artifacts, the source test run, and the reproduction command.
- Publish one compact sticky comment linking to a report with a section for every
claimed test. The report must show assertion evidence and original records.
When the review app is not configured, keep those sections in the comment.
If a claim has no inspectable evidence, report the PR
Incomplete.
- Write the
<!-- test-evidence --> marker. The publisher recognizes old sticky
markers only to update comments created before the migration.
Publish the PR head
Run checks on the final PR head after any rebase or cherry-pick. Test runs are
bound to a commit SHA, so history rewrites require rerunning and republishing.
After a multi-test run, publish the complete selection together:
pnpm evals:e2e --publish --pr <n> --all
# Or select runs explicitly; repeat --test-run for each claimed run.
pnpm evals:e2e --publish --pr <n> --test-run <dir|name> --test-run <dir|name>
--all selects stored runs matching the current PR head. Include a DocShot
receipt with --docshot <image.png.review.json>. It must match that commit too.
Names and captions provide the default report; --title and repeatable --gap
are optional context. No separate report-writing step is required.
Publication reads recorded evidence. It never runs tests, captures images, or
judges pending visual claims. If visual judging is needed, use the existing
pnpm --dir evals evidence:judge -- --test-run <dir|name> command explicitly.
Pending judgments remain visible and make the evidence Incomplete.
Set OPENWORK_REVIEW_URL and BLOB_READ_WRITE_TOKEN to publish to the private
review app. Setup is documented in apps/review/README.md. Upload errors must
be reported as publication failures, independently of the test verdict; report
publication is not a required CI check or a release dependency.
- Omitting
--test-run selects the most recent run. Prefer explicit selection
or --all when making claims about several tests.
- Publication updates the compact comment with the complete selected report.
Confirm its commit and included tests. Reference images make no pass/fail claim.
- A successful publisher exit means published, not tests passed. Derive the PR
verdict from recorded results and gaps. Failed and incomplete reports are
useful evidence and can be published.
- Single-run legacy publication remains available without the review app.
Stacked PRs
- Inspect
gh pr view <n> --json baseRefName,headRefName,headRefOid before
merging. A merged base can retarget the stack and recreate commits with new
SHAs, orphaning their evidence.
- Check for stray commits with
git log --oneline <branch> ^origin/dev. If the
stack is wrong, cherry-pick only the intended commits onto current dev, then
rerun and republish every check.
Refuse misleading evidence
- Never use
--force to hide a SHA mismatch. Re-run the spec on the PR head.
- Use
--force only to deliberately publish historical or red test evidence. The
output is annotated; call the exception out explicitly. Red tapes are valid
human-verification artifacts and should be published when they explain a
Failed or Incomplete verdict.
- Screenshots are attached with
gh pr comment --attach (gh ≥ 2.99). Without it
the publisher still posts verdicts with a no-screenshots note.
1---2name: publish-evidence3description: Publish test evidence, publish all test runs, update PR verification, audit red evidence, prove a PR, or declare a PR verdict. Use after @openwork/testkit runs.4---5
6# Skill: Publish Evidence
7
8The orchestrator owns this verdict and human-verification step. It derives the
9verdict from completed evidence; publishing makes that verdict inspectable and
10never reruns a test.
11
12## Declare the verdict
13
14- `Passed`: every claim has an observable assertion in the completed test run.
15- `Failed`: an assertion disproves at least one expected outcome.
16- `Incomplete`: requirements, tooling, or evidence are missing. A skip is always
17 `Incomplete`, never `Passed`.
18- Prose, screenshots, and recordings do not decide the verdict.
19
20## Make every claim auditable
21
22- Show the test name and verdict, each claim's assertion evidence, the relevant
23 test artifacts, the source test run, and the reproduction command.
24- Publish one compact sticky comment linking to a report with a section for every
25 claimed test. The report must show assertion evidence and original records.
26 When the review app is not configured, keep those sections in the comment.
27 If a claim has no inspectable evidence, report the PR `Incomplete`.
28- Write the `<!-- test-evidence -->` marker. The publisher recognizes old sticky
29 markers only to update comments created before the migration.
30
31## Publish the PR head
32
33Run checks on the final PR head after any rebase or cherry-pick. Test runs are
34bound to a commit SHA, so history rewrites require rerunning and republishing.
35After a multi-test run, publish the complete selection together:
36
37```bash
38pnpm evals:e2e --publish --pr <n> --all
39# Or select runs explicitly; repeat --test-run for each claimed run.
40pnpm evals:e2e --publish --pr <n> --test-run <dir|name> --test-run <dir|name>
41```
42
43`--all` selects stored runs matching the current PR head. Include a DocShot
44receipt with `--docshot <image.png.review.json>`. It must match that commit too.
45Names and captions provide the default report; `--title` and repeatable `--gap`
46are optional context. No separate report-writing step is required.
47
48Publication reads recorded evidence. It never runs tests, captures images, or
49judges pending visual claims. If visual judging is needed, use the existing
50`pnpm --dir evals evidence:judge -- --test-run <dir|name>` command explicitly.
51Pending judgments remain visible and make the evidence `Incomplete`.
52
53Set `OPENWORK_REVIEW_URL` and `BLOB_READ_WRITE_TOKEN` to publish to the private
54review app. Setup is documented in `apps/review/README.md`. Upload errors must
55be reported as publication failures, independently of the test verdict; report
56publication is not a required CI check or a release dependency.
57
58- Omitting `--test-run` selects the most recent run. Prefer explicit selection
59 or `--all` when making claims about several tests.
60- Publication updates the compact comment with the complete selected report.
61 Confirm its commit and included tests. Reference images make no pass/fail claim.
62- A successful publisher exit means published, not tests passed. Derive the PR
63 verdict from recorded results and gaps. Failed and incomplete reports are
64 useful evidence and can be published.
65- Single-run legacy publication remains available without the review app.
66
67## Stacked PRs
68
69- Inspect `gh pr view <n> --json baseRefName,headRefName,headRefOid` before
70 merging. A merged base can retarget the stack and recreate commits with new
71 SHAs, orphaning their evidence.
72- Check for stray commits with `git log --oneline <branch> ^origin/dev`. If the
73 stack is wrong, cherry-pick only the intended commits onto current `dev`, then
74 rerun and republish every check.
75
76## Refuse misleading evidence
77
78- Never use `--force` to hide a SHA mismatch. Re-run the spec on the PR head.
79- Use `--force` only to deliberately publish historical or red test evidence. The
80 output is annotated; call the exception out explicitly. Red tapes are valid
81 human-verification artifacts and should be published when they explain a
82 `Failed` or `Incomplete` verdict.
83- Screenshots are attached with `gh pr comment --attach` (gh ≥ 2.99). Without it
84 the publisher still posts verdicts with a no-screenshots note.