Your CI is green. Nothing was produced.
A job that exits 0 and made nothing should turn your build red.
A job that finished the work and then crashed in rm -rf tmp/ should not.
No other CI gate makes that distinction, because they all read the exit code.
$ node team/run-all.mjs gates/*.json --out dashboard.html > video-render PASS > image-batch SILENT_FAILURE > nightly-scraper FALSE_FAILURE dashboard: dashboard.html 3 gates, 1 failing
A single self-contained HTML file. No server, no dependencies. Attach it to a build, mail it, open it anywhere. It draws the trend, not just today — each artifact gets a sparkline of its last runs, so a slow decay is visible before it trips anything.
ProveDone: 1 of 3 gates failing ✅ video-render — PASS ❌ image-batch — SILENT_FAILURE — out/img (12 files, expected >= 45) ⚠️ nightly-scraper — FALSE_FAILURE
Slack and Discord are detected from the URL. A notification failure never fails your build — alerting is a side channel, not a dependency, and it has its own timeout.
- name: Build run: npm ci && npm run build # Don't trust the build's exit 0. Look at what it produced. - uses: ./provedone/team with: gates: gates/*.json webhook: ${{ secrets.PROVEDONE_WEBHOOK }}
The dashboard is uploaded as a build artifact automatically, so a red run always has the evidence attached. Nothing from your inputs reaches the shell as code.
Already bought the $19? Email your receipt for code UPGRADE130 —
$130 off, so you pay only the difference.
12 months of updates and priority on issues you report. MIT, so legal review is a
non-event. 30-day refund. No form, no questions.