docs: show the production evidence verification loop - #12
Merged
Merged
Conversation
Adds a 5-second, 90 KB GIF to the top of the README: the public npm verifier run against a real production receipt, printing a locally computed VALID with the signed policy → authorization → decision → settlement → artifact/certificate chain visible. Cut from the demo recording rather than staged. The segment chosen is the one that makes the argument on its own — chapter "3 THE PROOF", whose terminal header reads "your machine — no CertifiedData account, no login, no source checkout". No terminal output was recreated or fabricated. Sizing: 720x405, 10 fps, 64-colour palette, 5.0s, 92,300 bytes. Under the 100 KB target with the terminal still legible — every binding line and both full sha256 digests remain readable, which was the constraint that mattered more than shaving off another 20 KB. Generated with a dev-only static ffmpeg in a temp directory; nothing was added to this package's dependencies. Not shipped to installers. package.json `files` is an allowlist (dist/, README.md, LICENSE), so docs/media/ is excluded without adding an ignore rule that might later catch runtime files. Confirmed with `npm pack --dry-run`: 47 files, 37.5 kB, no docs/ and no GIF. The README therefore references the asset by absolute raw.githubusercontent.com URL, since a relative path would render on GitHub but break on npmjs.com. The surrounding copy states what the signature establishes — issuance, immutability since, and which policy/authorization/decision/artifact/settlement were bound at signing time — and explicitly what it does not: that the policy was good, that any control worked, or that anyone is compliant with anything. Also notes that the recording uses the short `npx @certifieddata/verify …` form while the README's copy-paste command uses the longer one, because `verify` is a cmd.exe built-in and the short form exits 1 silently on Windows. No package, runtime or cryptography changes. 98 tests pass. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the missing lightweight proof asset to the top of the README.
What it shows
A 5-second loop of the public npm verifier run against a real production receipt: the command, a locally computed
✓ VALID, and the signed policy → authorization → decision → settlement → artifact/certificate chain.Cut from the demo recording rather than staged. I inspected the video and chose chapter "3 THE PROOF", whose terminal header reads "your machine — no CertifiedData account, no login, no source checkout" — it makes the argument without narration. No terminal output was recreated or fabricated.
Sizing
palettegen/paletteuseUnder the 100 KB target with the terminal still legible. I extracted a frame from the finished GIF and checked it: every binding line and both full sha256 digests are readable. That was the constraint that mattered more than shaving another 20 KB.
Generated with a dev-only static ffmpeg in a temp directory — nothing added to this package's dependencies, and no generation tooling committed.
Not shipped to installers
package.jsonfilesis an allowlist —["dist/", "!dist/**/*.test.*", "README.md", "LICENSE"]— sodocs/media/is excluded automatically. No new ignore rule was needed, which avoids introducing one that could later catch runtime files.Confirmed rather than assumed:
Because the asset is not in the tarball, the README references it by absolute
raw.githubusercontent.comURL. A relative path would render on GitHub and break on npmjs.com.Copy
States what the signature establishes — issuance, immutability since, and which policy, authorization, decision, artifact and settlement were bound at signing — and explicitly what it does not: that the policy was good, that any control was effective, or that anyone is compliant with any regulation.
One thing worth flagging: the recording uses the short
npx @certifieddata/verify …form, while the README's copy-paste command uses the longernpx --package @certifieddata/verify cd-verify …. That is deliberate —verifyis a cmd.exe built-in, so the short form exits 1 silently on Windows (the same trap #7 fixed). The README now says so rather than leaving the difference unexplained.Verification
npm test— 98 passed, 0 failednpm pack --dry-run— GIF absent from tarballgit status— onlyREADME.mdanddocs/; no package, runtime or cryptography changes🤖 Generated with Claude Code