Ship Your Trace as a Paper Artifact — Rerunnable by Construction
2026-09-05 · 2 min read

Part 7 quarantined the flake. Part 8 closes the series: paper-grade packaging. pulse experiment pins the run (variable, versions, timestamp, trace hashes); pulse bundle emits a self-contained artifact dir; pulse verify replays it and checks the score reproduces exactly. Reviewers run one command instead of assembling three.
Pin the experiment
uv run pulse experiment --corpus corpus --out /tmp/expdemo2 --variable model=trial
variable=model=trial n=10 mean=99.0 -> /tmp/expdemo2
The manifest carries the rest — pulse version, timestamp, and a sha256 per trace:
{
"variable": "model=trial",
"pulse_version": "0.1.0",
"traces": [
{
"path": "20260905_124136_5eba1d.py",
"sha256": "51956df0be95022307588056badd0dce42873a1284c53cd87d88290e039c794d"
}
]
}
Ten traces pinned by hash. A reviewer with the same corpus reruns the sweep and compares manifests instead of trusting prose.
Bundle and verify
uv run pulse bundle corpus/cost-unit-test.py --out /tmp/artdemo
uv run pulse verify /tmp/artdemo/cost-unit-test.artifact
/tmp/artdemo/cost-unit-test.artifact
replays, score reproduces: replay exit=0 score=100 pinned=100
The artifact dir holds the trace, its sidecar, a run-manifest (tool versions, hashes, redaction receipt). Verify replays dry-run and rescores: score=100 pinned=100 — the number reproduces ±0, or the artifact is broken and says so.
Why this is the last post, not the first
Every earlier post in this series produced something a reviewer could challenge — a leaderboard, a verdict, a bill. The artifact is the envelope all of it ships in. Papers without rerunnable artifacts are decoration; traces without pinned manifests are anecdotes. Eight posts, one loop: capture → score → corpus → compare → export → attribute → quarantine → ship.
The series ends here. The gym stays open.
Written from the workshop — rerunnable by construction, or it didn’t happen.