Adds a reports section to the OpenStream spec so its claims rest on a
reproducible measurement rather than an assertion. Each report is a run of
the envelope over a defined corpus on real hardware: proof that
decompression restores every byte, that an incompressible input costs only
the framing overhead, that a compressible one saves what it claims against
the complete wire size, and how long each codec takes.
- docs/openstream/reports/ holds a machine-readable <id>.json (canonical,
with a versioned schema) and a rendered <id>.md per report, plus a README
on the shape and on submitting one. The seed report is nixamp 0.17.1 over
the synthetic corpus, labelled synthetic so no one reads a padded-fixture
number as production.
- The site renders them at /docs/openstream/reports (index) and
/docs/openstream/reports/<id> (one report), under the dynamic /docs/[slug]
tree so the reports routes never shadow a spec's own doc page. A small
lib/reports.ts reads the JSON at build time; REPORTED_SPECS keeps the
route surface explicit. sitemap includes the index and every report.
- The spec doc gains a Benchmark reports section linking there, and repeats
the honest caveats: OpenStream frames Zstandard and gzip rather than being
a new algorithm, synthetic padding flatters a codec, an efficient real
feed saves little, and round-trip exactness is the one pass/fail.
The report format is produced by `nixamp compression benchmark` (in the
nixamp repo); a release runs it and commits the two files here.
Claude-Session: https://claude.ai/code/session_01MxNif5tsYq4LczgG7aE8Jp
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
OpenStream is the wire format nixamp uses to relay a channel or a file
between two servers: a framed stream of blocks, each compressed with an
established codec or stored verbatim, each carrying the length and SHA-256
of the bytes it stands for, ending in a marker that says the stream
finished rather than dropped. It is a framing envelope, not a compression
algorithm, and it is deliberately product-neutral: nixamp is the reference
implementation, the format carries any byte stream.
The doc gives the byte layout (16-byte stream header, 48-byte frames, both
big-endian), the mode set, the validation order, cross-language test
vectors, the negotiation, the source/channel boundary, recovery semantics,
and a conformance checklist. Published at /docs/openstream via the same
DOC_SLUGS path as every other spec; no README change, matching how
OpenJob/OpenResume (#148) landed.
Claude-Session: https://claude.ai/code/session_01MxNif5tsYq4LczgG7aE8Jp
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>