feat/fidelity-round #134

Closed
peterswimm wants to merge 2 commits from feat/fidelity-round into main
Owner

Scope

Testing

Impact Statement

  • Existing features:
  • Public APIs / contracts:
  • Schemas:
  • Data / artifacts:
  • Integrations:
  • Mappings:
  • Backward compatibility:

Docs

<!-- BEGIN ORG-POLICY (managed by .spel/bin/forge-policy-sync.sh — do not hand-edit; source: core.contributor_review_policy, policy_key=org_contributor_review) --> ## Scope <!-- One major feature or closely-related family only. Note any unrelated work split into a separate PR. --> ## Testing <!-- What tests were added/updated? If this is docs-only and skips behavior tests, say why. --> ## Impact Statement - Existing features: - Public APIs / contracts: - Schemas: - Data / artifacts: - Integrations: - Mappings: - Backward compatibility: <!-- "No expected impact" is fine per line above, but only after actually considering it. --> ## Docs <!-- Updated docs/examples/schemas/migration notes if the public contract changed? --> <!-- END ORG-POLICY -->
fix(theme): self-host DM Mono — the site loaded it nowhere
Some checks failed
PR policy check / policy-gate (pull_request) Successful in 0s
Security Scans / Gitleaks secret scan (pull_request) Successful in 29s
Security Scans / Trivy filesystem scan (pull_request) Successful in 33s
Test Generator / lint-workflows (pull_request) Successful in 24s
Test Generator / lint-prose (pull_request) Successful in 18s
Test Generator / test (pull_request) Failing after 52s
UDG dist drift gate / dist/ matches dtcg + udg sources (pull_request) Successful in 20s
Copy coverage / Design copy reaching rendered HTML (pull_request) Failing after 27s
9d4443252c
Every mono label on toilville.com names 'DM Mono' — eyebrows, breadcrumbs,
form labels, the footer, fourteen blocks in all — and nothing loaded it:
theme.json declared the family with no fontFace, and neither theme nor plugin
enqueues fonts. Production would have shown Courier New throughout.

Nobody saw it because the preview harness pulled Sora and DM Mono from Google
Fonts, so every render showed the real face. The harness now loads exactly what
the theme loads — @font-face rules built from theme.json's fontFace entries,
served from the theme's own files — so a preview can no longer flatter
production. A family with no fontFace gets none there either.

DM Mono 300/400/500 are vendored from google/fonts (SIL OFL 1.1, licence
alongside), named like the theme's Sora files. This implements the brand's
existing typography spec — DM Mono is the documented mono face — rather than
choosing a new one. (An earlier commit of mine declared the family without a
face on the theory that it only served five footer labels; the gate below found
fourteen blocks.)

New gate: every web font a block's CSS names must be loaded by a theme.json
fontFace, and every fontFace must point at a file that exists. Verified red:
without the faces it lists 'dm mono' against all fourteen blocks.
feat(toilville): ship the pages — full-width bands, theme delivery, routed links
Some checks failed
PR policy check / policy-gate (pull_request) Successful in 0s
Security Scans / Gitleaks secret scan (pull_request) Successful in 35s
Security Scans / Trivy filesystem scan (pull_request) Successful in 37s
Test Generator / lint-workflows (pull_request) Successful in 23s
Test Generator / lint-prose (pull_request) Successful in 19s
Test Generator / test (pull_request) Failing after 52s
UDG dist drift gate / dist/ matches dtcg + udg sources (pull_request) Successful in 15s
Copy coverage / Design copy reaching rendered HTML (pull_request) Failing after 25s
f5d74ba50e
This round started as "post the new renders for ville" and became making the
site shippable. Full-length renders exposed what the cropped sign-off set, and a
harness that flattered production, could not.

Nothing delivered the pages. The generated patterns stopped at wp-preview/: no
template used them and neither theme nor plugin registered them. The live front
page was front-page.html — placeholder hero-home/products-grid defaults, a
query loop, a newsletter band. build_surfaces now also writes each pattern into
toilville-fse/patterns/ (auto-registered by header) and a template per page:
front-page.html and page-{rituals,spelwork,news,contact}.html, each header +
pattern + footer. Drift-gated like every artifact; new gate
test_every_generated_page_ships_in_the_theme, verified red.

Every band would have been 760px wide. The theme's contentSize is 760px, each
pattern wraps its page in a constrained <main>, and no band was aligned. Bands
are now align:full and <main> is alignfull; new gate
test_band_blocks_are_full_width, verified red. The harness applies WordPress's
real constrained layout instead of an invented 1160px column, and its
get_block_wrapper_attributes shim emits style, id and the align class — it had
dropped `style`, so every grid rendered three across.

Fidelity: Home's product cards are back (regressed in my 6b35fdd); Spelwork in
Spelwork blue, docs tags that repeat read as categories, four across, a stats
panel, cool tones; closing bands for Rituals (it had none) and Spelwork, and a
link instead of a signup form on Home; News gets a hero; its doubled "→ →" are
gone; the Latest head row is inline; "Who we are" is one panel with a founder
sidebar; the terminal and console captions sit in their bands.

Links: the canvas navigates by hash routes (#rituals, #contact); the site is
five pages. All eleven now map to real pages, and in-page links land — the
converter pins each section id to its heading (header.anchor, declared in the
vocabulary) and the client carries it onto the band.

New check in copy_coverage: doubled decorations, verified red on the News
links. The attribute gate understands supports-derived attributes.

297 passed, 0 skipped; copy coverage 100% x 5 with every check clean; just
check green.
peterswimm closed this pull request 2026-09-12 19:34:57 +00:00
Some checks failed
PR policy check / policy-gate (pull_request) Successful in 0s
Security Scans / Gitleaks secret scan (pull_request) Successful in 35s
Security Scans / Trivy filesystem scan (pull_request) Successful in 37s
Test Generator / lint-workflows (pull_request) Successful in 23s
Test Generator / lint-prose (pull_request) Successful in 19s
Test Generator / test (pull_request) Failing after 52s
UDG dist drift gate / dist/ matches dtcg + udg sources (pull_request) Successful in 15s
Copy coverage / Design copy reaching rendered HTML (pull_request) Failing after 25s

Pull request closed

Sign in to join this conversation.
No description provided.