The manifest
Every pack ships with a manifest.json. It is the proof behind "verified visuals", and the first place to look when a card is wrong.
This is Shipseal's own manifest for v0.0.6, abridged to one file and three facts. The values are real: that release genuinely contained seven commits, and each ref is a command you can run to check it.
{
"shipseal": "0.0.6",
"event": { "kind": "release", "tag": "v0.0.6" },
"generatedAt": "2026-09-11T18:38:21.221Z",
"brand": { "name": "Shipseal", "theme": "dark", "source": ".shipseal/brand.json" },
"copy": { "mode": "deterministic" },
"files": [
{ "path": "release-hero-og.png", "template": "release-hero", "format": "og",
"width": 1200, "height": 630, "bytes": 30236, "sha256": "bd3ae015..." }
],
"facts": {
"release.version": { "value": "0.0.6", "source": "git",
"ref": "git tag v0.0.6", "fetchedAt": "2026-09-11T18:38:21.159Z" },
"release.commitCount": { "value": 7, "source": "git",
"ref": "git rev-list --count v0.0.5..v0.0.6", "fetchedAt": "2026-09-11T18:38:21.159Z" },
"project.repo": { "value": "akii09/shipseal", "source": "git",
"ref": "git remote get-url origin", "fetchedAt": "2026-09-11T18:38:21.213Z" }
},
"computed": {},
"warnings": [],
"missing": []
}The last three were empty on that run: nothing was derived, nothing overflowed and no fact was absent. Their shapes are below.
Reading it
factsholds every value that came from somewhere, with the exact reference. A wrong number is always a source problem, so start here.computedholds values code derived from facts, such as a percent change, and names the inputs:"bench.metrics[0].percent": { "value": 79, "computedFrom": ["bench.metrics[0].before", "bench.metrics[0].after"] }warningsholds fit warnings. Nothing is ever clipped silently:{ "type": "fit-warning", "template": "release-hero", "format": "x", "slot": "headline", "action": "truncated" }missingexplains why an element is absent. A missing fact hides an element, it never becomes a placeholder:{ "template": "release-hero", "fact": "project.npmPackage", "effect": "cta hidden" }
Why numbers never come from a model
When the optional LLM is enabled it receives facts with every number replaced by a placeholder. Its output is then scanned for digits, and any digit that did not come from a placeholder is rejected. After a couple of retries Shipseal falls back to deterministic copy and logs a warning.
The model writes words. Code writes numbers. That split is the whole reason the manifest can be trusted.