Most bot screenshots are not proof.
If the receipt hides the stop, invalidation, confidence, skip reason, or paper/live status, this GitHub Action fails the build.
It validates JSON, JSONL, NDJSON, and CSV receipts with no dependencies.
For trade receipts:
- asset and BUY/SELL/LONG/SHORT or a trade state
- entry
- stop or invalidation
- target
- confidence from 0 to 100
- explicit paper/live execution mode
- exit and outcome/P&L when the receipt is closed
For no-trade receipts (WAIT, AVOID, EXPIRED, DATA STALE, RISK BLOCKED, SKIP):
- the asset
- confidence
- why the bot stayed out
- data freshness or timestamp
name: Audit bot receipts
on:
pull_request:
push:
jobs:
receipt-gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: HugoRS00/setup-receipt-gate@v1
with:
path: receipts/scanner_receipts.jsonl
require-closed-outcomes: "true"The action writes a state mix and pass/fail count to the GitHub job summary. Failed rows appear as file annotations.
node receipt-gate.mjs path/to/receipts.jsonlUse RECEIPT_GATE_REQUIRE_CLOSED=false to skip exit/outcome checks while a receipt set is still open.
A bot that traded and a bot that refused a bad setup should both leave evidence.
The gate is derived from the public TradingWizard AI Trading Scanner Challenge, where losses and paper status stay in the dataset instead of disappearing from the marketing. The product behind that proof loop lets traders deploy bots by asset and inspect why they acted or waited: https://tradingwizard.ai/bots
This action is a disclosure check, not a performance score. It does not predict returns, verify fills, or make a trading recommendation.
MIT