2026-05-08 14:52:28 UTC build@214422e Real audit slice
The page below describes its own deploy. Every claim it makes is demonstrated inline.
Surface stratt.run · version 0.2.0
Build fingerprint
Canonical Blake3 of the build descriptor (surface, version, git sha,
built-at) for the value above, blake3:e80d3a888711b57699d10710b4263944945eeaf7b0675fe9033d8fb734a974e9.
Same algorithm 14 canonical-serialisation test vectors (TV-01 through
TV-14) pin in packages/fingerprint/tests/vectors.ts.
Click the hex to select it, or
email it.
Slice summary
- What is this
- Prompt engineering infrastructure for teams whose AI-mediated decisions need to be auditable the way their code is.
- Who deployed it
-
CI build at commit
214422e, signed by an ephemeral Ed25519 keypair. The public key is embedded in the token; the audit-viewer verifies against it directly. - When
2026-05-08 14:52:28 UTC- Verifiable
- Yes. Same canonical pipeline ships in @stratt/cli (14 test vectors, blake3-wasm pinned at 2.1.5).
| Time | Actor | Kind | Description | Hash |
|---|---|---|---|---|
2026-05-08 14:52:28 UTC | ci | Build | Astro static bundle for stratt.run@0.2.0. | blake3:e80d3a8…a974e9 |
2026-05-08 14:52:28 UTC | vercel | Deploy | Commit 214422e pushed to main. | blake3:84cd868…37ca58 |
2026-05-08 14:52:28 UTC | you | Demo | Edit the slug below. The canonical Blake3 recomputes in your browser, deterministically. {
"council": "pathfinder",
"kind": "task",
"scope": "stratt.run",
"slug": "verify-deploy-provenance",
"version": "0.1.0"
}
With JS off, run Default slug Computed | blake3:6836695…c792b5 |
2026-05-08 14:52:28 UTC | stratt.run | Audit | Open the signed token. The audit-viewer verifies Ed25519 against the embedded public key. | blake3:828a5a9…871405 |
2026-05-08 14:52:28 UTC | you | Install | Add the CLI and run it on any unit. Same canonical pipeline as the demo above. bun add @stratt/cli
Then |
Cryptographic detail
Cryptographic detail
Canonical pipeline
Parse → strip the fingerprint field, remove nulls
recursively → NFC-normalise every string → sort keys in UTF-16
code unit order → compact JSON → UTF-8 → Blake3. The build hash blake3:e80d3a888711b57699d10710b4263944945eeaf7b0675fe9033d8fb734a974e9 is one example; the
demo unit produces blake3:6836695dd710d292567c9bb3ac3a36262cca7b76ffc3b54b31e3bf7270c792b5 by the same
steps. 14 canonical-serialisation test vectors (TV-01 through
TV-14) pin the algorithm.
Implementation pins
blake3-wasm is fixed at 2.1.5; the
v3.0.0 release shipped an async API break. The browser path
uses @noble/hashes/blake3 over the same canonical
bytes. Ed25519 via @noble/curves, SHA-512 via @noble/hashes/sha2. The page ships ≤ 25 KiB of
client JS (the bundle at /landing.js) plus Vercel
Analytics; no other third-party.
Audit token
eyJwYXlsb2FkIjp7InNlc3Npb25JZCI6ImRlbW8tcHJvY3VyZW1lbnQtZXZhbHVhdGlvbiIsImlzc3VlZEF0IjoiMjAyNi0wNS0wOFQxNDo1MjoyOC4zNDhaIiwiZXZlbnRzIjpbeyJzZXNzaW9uSWQiOiJkZW1vLXByb2N1cmVtZW50LWV2YWx1YXRpb24iLCJldmVudElkIjoiZXZ0LTAxIiwic3RyYXQiOiJzdHJhdHQ6Ly9kZXYvdGFzay9yZXZpZXctcHVsbC1yZXF1ZXN0QDEuMC4wIiwiYmxha2UzIjoiYmxha2UzOjA0NmZkMjA1NWQxNGU3ZTM0OThkMDBmYzMyNDgyYzJiNmJlOTlkMzk0MzgwM2E2Zjc2NDkwNmI0YTczZTQzMzQiLCJhY3RvciI6IldBVE5FWS0wMiIsImtpbmQiOiJwdWJsaXNoIiwidHMiOiIyMDI2LTA1LTA4VDE0OjUyOjI4LjM0OFoifSx7InNlc3Npb25JZCI6ImRlbW8tcHJvY3VyZW1lbnQtZXZhbHVhdGlvbiIsImV2ZW50SWQiOiJldnQtMDIiLCJzdHJhdCI6InN0cmF0dDovL2Rldi9jaGFpbi9zb2wtMS1ib290QDEuMC4wIiwiYmxha2UzIjoiYmxha2UzOjc0MmRmN2VjZjhhM2ZlODg2NGJkMjM3OTVkMjQ4ZmY4Mzk4NjU2N2FiMzM2Y2VjOGMwMGQ3NzM3MTM4YWQ0MTQiLCJhY3RvciI6IldBVE5FWS0wMSIsImtpbmQiOiJnYXRlIiwidHMiOiIyMDI2LTA1LTA4VDE0OjUyOjI4LjM0OFoifV19LCJzaWciOiJmS1pLMmNpR0ItYzB2LVl4OVg0RkUyUEtNWFRoWWtVTEJlZFFRRE0wOG41ZExFNmwwRGhPeExHNXZtb2VtQWltdTVaMFhwVlJoNjN5TG84LVU5RVlCUSIsInB1YmxpY0tleSI6Ik5rSGVTX2tEMC1qdk53aXZPblVWMHAyN2xQU3NDUEs2ZFdHYjhKNE5Gc3MiLCJraWQiOiJzdHJhdHQucnVuL2RlbW8tZXBoZW1lcmFsIiwiZXhwIjoiMjAyNi0xMS0wNFQxNDo1MjoyOC4zNjBaIn0
Verify locally
Decode the token (base64url JSON envelope, embedding the public
key). Re-canonicalise the payload by the steps above. Check the
Ed25519 signature. Reference implementation: @stratt/signature.verifyToken. The audit-viewer at /inspect/<token> runs exactly this check in
the browser, no orchestrator round-trip.