Skip to content

backdraft 0.9.0

Choose a tag to compare

@spencerbraun spencerbraun released this 28 Aug 13:23
· 65 commits to main since this release

A week on the reader's side: the recipient gets a command instead of a procedure, search stops hiding what it cut, and a formula renders as a formula.

  • backdraft verify — the check the recipient can make. Hand it the .backdraft.html or the .backdraft.json and it runs the whole of spec/artifact.md § Checking an artifact: every snippet rehashed against the sha256 recorded beside it, every token checked against the anchor it names, summary recounted from claims. That tier needs nothing but the file, which is the point — it is the check someone who was emailed the artifact can still make. Run it inside the project the document was bound in and it also re-resolves every citation against the registry, so a source that moved since shows up rather than going unnoticed. Read-only: no session, no minting, because an audit must not make its subject citable. It found a real bug on the way in — the spec and every artifact's embedded legend said the token's hash must prefix the anchor's, which is false for every drifted citation by construction, and implemented as written would have called every drifted artifact forged. Both statements corrected.
  • search reports the size of the answer, not the size of the page. --limit defaults to 20 and a capped run said 20 results whether twenty matched or two hundred did. It now says 20 of 56 results and closes with the exact widening command, shell-quoted. An uncapped run prints what it always printed, byte for byte.
  • Math renders. LaTeX written the ordinary way — $...$, $$...$$, \(...\), \[...\] — becomes MathML in the artifact behind the new [math] extra: static markup the browser lays out itself, so the artifact stays one file with no script and no font to fetch. Currency ($250 per unit, $1.2M) is never mistaken for a formula, and neither are shell variables in code. Without the extra a formula renders verbatim rather than wrong, and render now says so and names the install, so an artifact of raw TeX cannot pass for one of typeset math.
  • A verifier's skip says why it skipped. overlap: pass 13, skip 4 named four unchecked citations without saying whether that was benign; the reasons now print under the method, grouped. That matters more, not less, for checks that never gate.
  • The registry export is a specified format. backdraft export has written backdraft/registry-v1 since v0 — a version string promising a specification that did not exist. spec/registry.md joins tokens, chunking and artifact as normative prose, pinned by a test that fails in both directions, so an undocumented key and a documented-but-absent one are equally a failure.
  • Fixes. snake_case_name is no longer rewritten to snake<em>case</em>name by the renderer — intraword _ is not a delimiter, per CommonMark. verify's help no longer prints markdown asterisks at the terminal, and its exit code no longer decides by reading the wording of its own report.

1274 tests.