Validation
Run the shipped Core validators and interpret their release and consumer checks.
- Owner
- Foundry Core
- Source
core/docs/VALIDATION.md- Ref
v0.1.21- Policy
- release-bound
Component pins for v0.2.5
| Component | Role | Version |
|---|---|---|
| core | runtime | v0.1.21 |
| theme-shield | theme | v0.1.15 |
| starter | reference | v0.1.3 |
| docs | reference | v0.1.4 |
| distribution | tooling | v0.3.3 |
| restricted-component-1 | consumer-reference | v0.1.10 |
| restricted-component-2 | consumer-reference | v1.1.21 |
Critical Verification Path
Phase 4 defines one default safety path for this repo:
node scripts/foundry-doctor.js
That runs the core validation stack:
validate-block-contract.jsvalidate-block-governance.jsvalidate-content-kits.jsvalidate-compatibility-fixtures.jsvalidate-feature-flags.jsvalidate-shell-contract.jsvalidate-runtime-contracts.js
For a local browser pass over the compatibility fixtures, run:
node scripts/foundry-doctor.js --browser-smoke
That delegates to validate-compatibility-fixtures.js --browser-smoke, which
uses Safari WebDriver on macOS plus a lightweight mock Pagefind index to check
the highest-risk interactive fixture flows.
When the browser environment must be present rather than skipped, require it explicitly:
node scripts/foundry-doctor.js --browser-smoke --require-browser
The compatibility fixture step materializes five representative downstream
consumers inside /tmp, runs Foundry Doctor in site mode against each one, and
then performs rendered-output assertions against the built HTML for each
baseline:
- current-site baseline
- older-site baseline
- search-heavy site
- article-heavy site
- property-retreat site
Those assertions deliberately check for shared runtime markers such as shell
chrome, search UI mounts, language alternates, article-shell markup,
property-media tab/lightbox scaffolding, and the absence of templating leaks
like ZgotmplZ.
The browser lane requires:
- macOS with Safari available
Enable Remote Automationturned on in Safari’s Develop menu, orsafaridriver --enablerun once by the local user- a local environment allowed to talk to
localhost, since Safari WebDriver and the fixture file server both run locally
When a change also affects a consuming site, run doctor against that site too:
node scripts/foundry-doctor.js --site /absolute/path/to/site
That adds:
- site block-usage validation
go.modbootstrap check for a valid local site bootstrap mode:- locked-materialized site mode via
./.foundry/modules/... - live sibling-repo framework-dev mode
- locked-materialized site mode via
hugo --renderToMemorysmoke build
For proof consumers or sites with reviewed local framework shadows, include the drift audits:
node scripts/foundry-doctor.js \
--site /absolute/path/to/site \
--include-drift-audits
If the site already has allowlists in .planning/, doctor picks them up
automatically. Use --strict-warnings when Hugo warnings should fail the run.
Regression Review Checklist
Use this checklist before treating framework work as complete.
Any Core Contract Change
- Run
node scripts/foundry-doctor.js - Confirm the changed docs still describe the current contract surface
- If manifests or starter templates changed, confirm content-kit render smoke is still green
Block, Template, Or Schema Change
- Run core doctor
- If the change adds, removes, renames, or reclassifies a block, confirm the family assignment and any justified proof-gap entries in
data/foundry/block-family-manifest.jsonanddata/foundry/block-governance.json - Run doctor against at least one representative consuming site
- Confirm field names match across:
- block template expectations
- schema/docs
- starter content-kit templates
Flow System, Theme Interaction, Or CSS Token Change
- Run core doctor
- Run doctor against a Shield-based consumer site
- Review [SITE-BOOTSTRAP.md](https://github.com/jerrybroughton/likestyle-foundry-core/blob/v0.1.21/docs/</Users/gb/Library/Mobile Documents/com
appleCloudDocs/Documents/CodexProjects/likestyle-foundry-core/docs/SITE-BOOTSTRAP.md>) rules for:- dark-section text contrast
- alternating-row overrides
- CSS load order
- stats counter constraints
Shell Contract Or Shared Chrome Change
- Run core doctor
- Run doctor with
--include-drift-auditsagainst the proof consumer or any downstream repo with reviewed shell overrides - Confirm allowlists still match reality before accepting new shadows
Pack, Page Type, Composition, Content Kit, Or Scaffold Change
- Run core doctor
- Render or scaffold at least one affected starter path
- Run doctor against a consuming site if the change is already adopted downstream
CI Safety Bar
GitHub Actions now runs two validation jobs:
- Ubuntu core validation:
node scripts/foundry-doctor.js
- macOS browser parity:
node scripts/foundry-doctor.js --browser-smoke --require-browser
That keeps the local safety path and the CI gate aligned while making browser availability a real requirement in the macOS lane instead of a skip.
Because doctor now renders real Hugo fixture sites and the browser lane uses Safari WebDriver, CI also needs:
- Go 1.22 or later for Hugo module resolution
- Hugo Extended
0.160.1or later - a macOS runner with Safari available
safaridriver --enablebefore the browser parity step