# kpi-scorecard: the December 2025 KPI scorecard table (the Scorecard section of the note).
# Made by: python3 tools/render_exhibits.py kpi-scorecard
# Commands run from the repo root unless a `$ cd` line says otherwise, each with
# SOURCE_DATE_EPOCH=315532800 so the PDFs carry a fixed date.
# Source: runs/20261004-2356-repeat-management-reporting-kpi-scorecard-2025-12-claude-sonnet-5-5/kpi-scorecard-2025-12/claude/r1/output/scorecard-note.md
# Source sha256: a11e8e379a4c8c5da90db9eabab54dd55752c3b71c1400c437c02bab196f2fb3
# Inputs (sha256  path):
#   a11e8e379a4c8c5da90db9eabab54dd55752c3b71c1400c437c02bab196f2fb3  runs/20261004-2356-repeat-management-reporting-kpi-scorecard-2025-12-claude-sonnet-5-5/kpi-scorecard-2025-12/claude/r1/output/scorecard-note.md
#   8832858653d653189b7303d0500d088334740b5118c23c963dab0162785fcb0c  runs/20261004-2356-repeat-management-reporting-kpi-scorecard-2025-12-claude-sonnet-5-5/kpi-scorecard-2025-12/claude/r1/result.json
#   e38b69aacead161722b74031ecf22151347498b690be2c82123d442df33eae36  examples/renders/note-fragment.lua
# check: runs/20261004-2356-repeat-management-reporting-kpi-scorecard-2025-12-claude-sonnet-5-5/kpi-scorecard-2025-12/claude/r1/result.json: passed, and so did each of its 9 checks (script_identity, independent_identity, golden, contract, provenance, binding, scorecard_equals_source, sentinels, pack_unchanged)
$ sha256sum \
>   runs/20261004-2356-repeat-management-reporting-kpi-scorecard-2025-12-claude-sonnet-5-5/kpi-scorecard-2025-12/claude/r1/output/scorecard-note.md
a11e8e379a4c8c5da90db9eabab54dd55752c3b71c1400c437c02bab196f2fb3  runs/20261004-2356-repeat-management-reporting-kpi-scorecard-2025-12-claude-sonnet-5-5/kpi-scorecard-2025-12/claude/r1/output/scorecard-note.md
$ pandoc --from=gfm-tex_math_dollars+hard_line_breaks --to=latex --wrap=none \
>   --lua-filter=examples/renders/note-fragment.lua -M exhibit=kpi-scorecard \
>   -M sha256=a11e8e379a4c8c5da90db9eabab54dd55752c3b71c1400c437c02bab196f2fb3 \
>   -M section=Scorecard --output=examples/renders/kpi-scorecard/kpi-scorecard.tex \
>   runs/20261004-2356-repeat-management-reporting-kpi-scorecard-2025-12-claude-sonnet-5-5/kpi-scorecard-2025-12/claude/r1/output/scorecard-note.md
# check: the fragment carries the source's 81 words and figures in order, and no others
# examples/renders/kpi-scorecard/proof.tex (written by the tool) sets kpi-scorecard.tex in the book's preamble
$ mkdir -p build/renders/kpi-scorecard
$ cd build/renders/kpi-scorecard
$ xelatex -interaction=nonstopmode \
>   -halt-on-error ../../../examples/renders/kpi-scorecard/proof.tex
$ cp proof.pdf ../../../examples/renders/kpi-scorecard/proof.pdf
# proof.pdf: 1 page(s); the fragment is 125.6pt tall on a 494.0pt text block, leaving room for a caption of 24.8 lines; log build/renders/kpi-scorecard/proof.log
$ cd ../../..
