$ mkdir -p /tmp/run/.claude/skills /tmp/run/data /tmp/run/output
$ cp -r packs/variance-bridge /tmp/run/.claude/skills/variance-bridge
$ rm -r /tmp/run/.claude/skills/variance-bridge/tests
$ cp data/interstationary/customers_fy24_fy25.csv /tmp/run/data/
$ cd /tmp/run && python3 .claude/skills/variance-bridge/skills/revenue-bridge/scripts/bridge.py --input data/customers_fy24_fy25.csv --output output/bridge.json
FY2024 $11,243K -> FY2025 $11,238K change ($5K), (0.04%); reconciles to the cent. Wrote output/bridge.json
$ cp examples/ch06/fixtures/bridge-note-good.md /tmp/run/output/bridge-note.md
$ cp examples/binding/fixtures/run-revenue-bridge.json /tmp/run/run.json
$ python3 tools/release_gate.py /tmp/run
pass  pack         installed copy matches the library: 1 installed copy, 15 files, each byte-identical
pass  input        header contract: every input carries what the leaf needs (1 file)
pass  computation  script re-run: the library's skills/revenue-bridge/scripts/bridge.py writes output/bridge.json byte for byte from these inputs
pass  checks       script_identity: PY + movements = 11238378.00, CY = 11238378.00
pass  checks       independent_identity: source PY 11243300.00, CY 11238378.00; every movement recomputes
pass  checks       contract: 4 sections in order; sentences, tables, bullets and data notes follow the contract
pass  checks       provenance: all 22 figures trace to the script's display block
pass  checks       binding: 8 of 9 figures in 3 bullets and sentences belong to one record or scope, and each sits with its name
passed: wrote release.json and release.md in /tmp/run
exit 0
$ cp examples/binding/fixtures/bridge-note-swapped.md /tmp/run/output/bridge-note.md
$ python3 tools/release_gate.py /tmp/run
pass  pack         installed copy matches the library: 1 installed copy, 15 files, each byte-identical
pass  input        header contract: every input carries what the leaf needs (1 file)
pass  computation  script re-run: the library's skills/revenue-bridge/scripts/bridge.py writes output/bridge.json byte for byte from these inputs
pass  checks       script_identity: PY + movements = 11238378.00, CY = 11238378.00
pass  checks       independent_identity: source PY 11243300.00, CY 11238378.00; every movement recomputes
pass  checks       contract: 4 sections in order; sentences, tables, bullets and data notes follow the contract
pass  checks       provenance: all 22 figures trace to the script's display block
FAIL  checks       binding: ($686K) belongs to Fenwick Legal (records), which this bullet in drivers does not name: 'Losses of ($1,288K) across 4 customers, led by Birchway Foods at ($686K).'
failed: wrote release.json and release.md in /tmp/run
exit 1
$ printf '<!-- trace:SNT-3F9A1C -->\n' >> /tmp/run/.claude/skills/variance-bridge/skills/revenue-bridge/SKILL.md
$ python3 tools/release_gate.py /tmp/run
refused: the installed copy .claude/skills/variance-bridge differs from the library copy packs/variance-bridge: changed skills/revenue-bridge/SKILL.md
exit 2
