[#47] tools/report: researcher-grade PDF report generator #51
No reviewers
Labels
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Winnie/bankwars!51
Loading…
Reference in a new issue
No description provided.
Delete branch "47-report"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What changed
Adds
tools/report/, the researcher-grade PDF report pipeline for issue #47 — the release-blocker report Robert can hand to a professional researcher. Consumes the structured iteration log (iterations.json, schema initerlog.gofrom #46/#48), git history, and live Forgejo issue data, and renders a reproducible PDF.The PDF
--notestamp (e.g. synthetic-data warning).g*7919 + len(preset)); and the 13 punishing presets transcribed frombench.go benchPresets().No fabricated numbers, ever
Every figure derives from exactly three machine-readable sources:
iterations.json,git log, and the Forgejo API. Unknown values render as "—"; schema failures are reported in the validation table and flagged as voiding the findings.Zero dependencies
Pure Python standard library. The PDF is written by the vendored
bwpdf.py(PDF 1.4, flate streams, standard 14 fonts, ruled tables, footers, metadata). No pip, no installs; python3.8+ runs it anywhere.Verification (no bench run was executed)
testdata/iterations.sample.json, 2 schema-valid synthetic records with real git SHAs for linkage testing): 12 pages,%PDF-1.4magic, 24,647 chars extracted via pypdf, all expected tokens present; fixture numbers spot-checked in extracted text (e.g. record-2 duel wins 13/47/13/13); rendered pages inspected visually.iterations.json=[]): degrades gracefully to a 6-page report stating "no records".--all-records: 15 pages with full detail for both records.Usage
Full docs in
tools/report/README.md.