From 43951f0b857971798625c2b0666a7f785e7a318b Mon Sep 17 00:00:00 2001 From: Daniel W Liu <117604131+LTKers@users.noreply.github.com> Date: Tue, 1 Sep 2026 20:55:36 -0400 Subject: [PATCH] feat(ci): ship the one benchmark input that was not committed, and guard the rest docs/bench/allocator.md's live row - parse 2.0 allocs/msg at 574 B, books 0.9 - was measured on captures/live-poly.feedlog. /captures/ is gitignored as "large, regenerated". The file has never been in the repo. So that row worked perfectly for anyone with this working tree and could not be reproduced by anyone else. Every command in the doc runs, the numbers come out exactly as printed, and none of it is checkable from a clone. It is the only figure in docs/bench/ in that state, against a README rule that a figure is either measured on a committed capture or labelled as not yet measured. It was neither. The capture is 85 KB gzipped and now sits beside the other six in docs/bench/, with the gunzip-and-replay command in the doc. It reproduces the row exactly: 877 records, parse 2.0/msg 574 B/msg, books 0.9/msg. scripts/check_bench_inputs.py runs in CI and fails if any doc under docs/bench/ names a .feedlog that git does not track. Angle-bracket metavariables are excluded, since `basis xvenue-lead ` names an argument rather than a file - the first version of the check flagged exactly that and was wrong to. This class of defect cannot be caught by running the benchmark. Running it is what makes it look fine. The only question that finds it is whether the input ships, which is why this is a script and not a habit. Audited the other allocator figures against fresh runs while here, and they are exact: synthetic 724,298 records at parse 1.0/msg, 56 B/msg, books 0.5/msg. --- .github/workflows/ci.yml | 6 +++ docs/bench/allocator.md | 20 ++++++-- docs/bench/live-poly-60s.feedlog.gz | Bin 0 -> 85003 bytes scripts/check_bench_inputs.py | 72 ++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 docs/bench/live-poly-60s.feedlog.gz create mode 100755 scripts/check_bench_inputs.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f3e00c5..1de0949 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,6 +20,12 @@ jobs: - name: Physical design (levelization) run: ./scripts/levelize.py src + - name: Benchmark inputs are committed + # A benchmark whose input is gitignored works perfectly for its + # author and for nobody else, and running it proves nothing - + # the only way to catch it is to ask whether the input ships. + run: python3 scripts/check_bench_inputs.py + - name: Contracts script unit tests # Pure parsing and date arithmetic only. The network half is not # exercised here on purpose: a CI job that needs Polymarket to be diff --git a/docs/bench/allocator.md b/docs/bench/allocator.md index c329276..e5c7734 100644 --- a/docs/bench/allocator.md +++ b/docs/bench/allocator.md @@ -20,9 +20,23 @@ cmake --build build-bde -j ``` That synthetic session is 724,298 records (124 MB) in real wire formats. -The live capture referenced below is a 60 s Polymarket market-channel -recording (877 records) used for allocation profiles only; it is too short -for stable timing percentiles. +The live capture referenced below is the committed 60 s Polymarket +market-channel recording in this directory, 877 records. It is used for +allocation profiles only: it is too short for stable timing, and the +pipeline figures below all come from the synthetic session instead. + +``` +gunzip -c docs/bench/live-poly-60s.feedlog.gz > /tmp/live-poly-60s.feedlog +./build/src/basis replay /tmp/live-poly-60s.feedlog \ + --config configs/contracts.toml --alloc count +``` + +It was not committed until 2026-09-01, which made the live row here the +one figure in docs/bench/ that nobody could check. `/captures/` is +gitignored as large and regenerable, and this file was sitting in it, so +the row was measured on an input that shipped no copy of itself. The +repo's rule is that a figure is either measured on a committed capture or +labelled as not yet measured, and this was neither. 85 KB gzipped. Modes, all via the same binary: diff --git a/docs/bench/live-poly-60s.feedlog.gz b/docs/bench/live-poly-60s.feedlog.gz new file mode 100644 index 0000000000000000000000000000000000000000..02ec550a81cb85a82298ea55f198f4edc6cd0416 GIT binary patch literal 85003 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 V7@|QpVHKr(j-sb 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 !Vhy_EeU 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

vwgLAThttNtZ4tetduT4StJxDJ_o} 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 literal 0 HcmV?d00001 diff --git a/scripts/check_bench_inputs.py b/scripts/check_bench_inputs.py new file mode 100755 index 0000000..25f5e6a --- /dev/null +++ b/scripts/check_bench_inputs.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +"""Fail if a doc under docs/bench/ names an input that is not committed. + +The rule this enforces is the repo's own, from the README: a figure is +either measured on a committed capture or it is labelled as not yet +measured. There was one exception and nobody noticed, because the +exception is invisible from inside a working tree - `/captures/` is +gitignored, the file sat there, every command ran fine, and the row it +produced could not be reproduced by anyone who cloned the repo. + +That is the failure mode worth guarding: a benchmark that works perfectly +for its author and for nobody else. It cannot be caught by running the +benchmark, only by asking whether its input ships. + + scripts/check_bench_inputs.py +""" + +import pathlib +import re +import subprocess +import sys + +ROOT = pathlib.Path(__file__).resolve().parent.parent + +# Paths that are meant to be produced, not shipped: scratch files a command +# in the doc generates first. Referencing one is correct. +GENERATED = re.compile(r"^(/tmp/|out\.|.*\bmktemp\b)") + + +def tracked_files(): + out = subprocess.run(["git", "ls-files"], cwd=ROOT, capture_output=True, + text=True, check=True).stdout + return set(out.split()) + + +def main(): + tracked = tracked_files() + failures = 0 + checked = 0 + + for doc in sorted((ROOT / "docs" / "bench").glob("*.md")): + text = doc.read_text(encoding="utf-8") + # Angle brackets mark a usage metavariable - `basis xvenue-lead + # ` names an argument, not a file. Strip those + # first so the check does not demand that a placeholder ship. + prose = re.sub(r"<[^<>\n]*\.feedlog(?:\.gz)?>", "", text) + # Any path ending in .feedlog or .feedlog.gz that the prose names. + for ref in sorted(set(re.findall(r"[\w./-]+\.feedlog(?:\.gz)?", prose))): + if GENERATED.match(ref): + continue + checked += 1 + # A doc may name either the .gz that ships or the file a reader + # gunzips it into; the .gz is what has to be tracked. + gz = ref if ref.endswith(".gz") else ref + ".gz" + candidates = {ref, gz, + f"docs/bench/{pathlib.PurePath(gz).name}"} + if candidates & tracked: + continue + print(f" {doc.relative_to(ROOT)} references {ref}, " + f"which is not committed") + failures += 1 + + print(f"\n{checked} capture references across docs/bench/") + if failures: + print(f"FAIL: {failures} reference(s) to inputs that do not ship") + return 1 + print("ok: every referenced capture is committed") + return 0 + + +if __name__ == "__main__": + sys.exit(main())