packs

Check what shipped, per build shape.

A pack is a self-contained bundle of pure-reading verifiers over files on disk - no transport, no mocks. poststruct ships the family's check profile: each pack knows the head and routing sins one build shape reliably produces, and each carries a permanent negative test.

The packs, live

Eleven SPEC v1 check-profile packs under packs/public/, each a declarative verifier over files on disk. Lint the manifest grammar with npx packstruct lint packs/; run a pack through the audit lane with poststruct lint-packs --deep.

packwhat it verifiesverdict
eyes-referencethe eye companion
every og/twitter image a baked page declares must be real pixels the scrapers see
PASS
prestruct-shapesthe engine's own contract
the SSR marker on every app mount, one deploy-id across the tree, og:url in step with rel=canonical, no shell placeholder surviving the inject pass
PASS
freestruct-shapesthe docs layer's contract
one build hash across the tree and on every cache-bust param, no head tag doubled by a rebuild, canonicals absolute on one origin, the 404 noindex contract
PASS
eyestruct-shapesan eyestruct-shaped lab's .eyes canon tree
ledger honesty, dangling rows, the manifest pin + route matrix, verdict coverage, receipt provenance
PASS
jekyll-shapesthe Jekyll ecosystem shape
excerpt-as-description via jekyll-seo-tag, head tags doubled by hand meta, hreflang links pointing at unbuilt language siblings
PASS
wp-seo-shapesthe WordPress ecosystem shape
an SEO plugin and a theme both emitting head SEO so description / og:title / the JSON-LD graph ship twice, attachment pages inheriting the front canonical
PASS
astro-shapesa site baked by Astro
the head and routing sins the Astro build shape reliably produces
PASS
eleventy-shapesa site baked by Eleventy
the URL and collection sins the 11ty build shape reliably produces
PASS
gatsby-shapesa site baked by Gatsby
the head and indexing sins the Gatsby build shape reliably produces
PASS
hugo-shapesa site baked by Hugo
the head and taxonomy sins the Hugo build shape reliably produces
PASS
shopify-liquid-shapesa Shopify storefront via Liquid
the head and pagination sins the Liquid render reliably produces
PASS

Each pack ships a permanent negative test: a good bake comes clean, every bad bake hits exactly its expected id, and an absent tree dockets BOUNDED rather than a fabricated pass. The ledger rides packs/eye-ledger.json.

The verdict taxonomy

Every scenario lands in exactly one of four buckets. Adoption is explicit - a new verdict only enters the ledger through a reviewed commit, never a silent rebuild.

REFUSED

The surface said no, cleanly, with its named code. A regression here is loud, not quiet.

BOUNDED

The damage was contained to a documented limit - a byte cap, a fixture lifespan. Bounds live in the ledger, not in prose.

PASSED

The safe path works end to end: checks, gates, roundtrips.

FAILED

A check that should have caught the bad bake did not. A new FAILED or the regression of any recorded row fails CI.

Running the lane

The audit lane reads each pack's declared checks over the tree. Exit 0 on green, 1 on findings.

# run every pack over the repo
npm run packs

# manifest + entry + id-census grammar (packstruct)
npm run lint:packs

# conformance audit against the family runner shape
npm run conform:packs