Fix prebuild source mutation

The website prebuild script (`website/scripts/extract-docs-data.ts`) has a hidden side effect: `updateDynamicMdxValues()` rewrites tracked MDX source files, replacing `{/* ana:dynamic ... */}` markers with computed values. This causes silent dirty state on every build, guaranteed rebase conflicts on docs-touching branches, and maintains a redundant data path — every value hardcoded into MDX source already exists as a runtime function in `website/lib/docs-data/`. Separately, three generated files in `public/` (llms.txt, llms-full.txt, search-index.json) are tracked in git despite being regenerated by every prebuild run, compounding the same rebase-conflict problem.

verdict PASSscore 16 / 16findings 7 (1 risk · 3 debt · 3 obs)duration 1h 10mrejection cycles 0shipped May 15, 2026surface website

Pipeline timeline

Intent to proven code in 1h 10m across Think, Plan, Build, and Verify.

Think
1m
Plan
25m
Build
12m
Verify
6m

Assertion ledger

16 claims, each independently verified. Showing 8 — show all →

IDSaysMatcher
A001The prebuild no longer rewrites tracked MDX source filesverifiedok
A002No MDX files contain ana:dynamic markers after the fixverifiedok
A003A shared values module defines all 9 dynamic value keys in one placeverifiedok
A004The shared values module maps all 9 keys including median timingsverifiedok
A005The tag resolution function replaces DocsStat tags with computed valuesverifiedok
A006The DocsStat component renders as an inline span elementverifiedok
A007The DocsStat component reads from the shared values module, not its own mapverifiedok
A008The component is registered in the MDX components mapverifiedok

Findings 7 total

debtwebsite/components/docs/content/DocsStat.tsxclosed
DocsStat component recalculates all 9 values on every render — no caching
obswebsite/lib/docs-data/docsStatValues.tsmonitor
2 of 9 value keys (skillCount, findings) defined but unused in any MDX file
riskwebsite/components/docs/content/DocsStat.tsxclosed
Misspelled DocsStat value key silently renders raw key string — no build-time validation
debtwebsite/scripts/extract-docs-data.tsclosed
Prebuild inlines a fresh stripJsx copy instead of importing the lib version — duplication persists
obsclosed
Spec called for skillCount in skills.mdx heading and findings in using-ana-learn description; builder simplified to static text instead
+2more findings

Integrity seal

scopesha256:d83321b08adcf...
contractsha256:448e22eaeefd8...
plansha256:cebbbc612bb67...
specsha256:a462aef87a878...
build-reportsha256:5196229da2462...
build-datasha256:f7918fa3fe759...
verify-reportsha256:a5dc1d0b2b377...
verify-datasha256:1de118a8cd145...
audit cmd$ ana proof audit fix-prebuild-source-mutation   → all hashes match