feat(spelwork): Paladin in the hero #131

Merged
peterswimm merged 1 commit from feat/spelwork-paladin into main 2026-09-12 15:31:10 +00:00
Owner

Merge after toilville_rituals #405, which itself follows #404. #405 adds hero-product's familiar attribute, and the attribute gate fails until it's on Rituals main.

Peter asked for real familiar heroes, starting with Paladin in the Spelwork hero.

Canvas

ToilvilleSpelworkPage.dc.html draws Paladin beside the hero copy, and the headline narrows from 900px to 640px to clear him. The art is paladin.svg, stored beside the canvas like the product lockups.

Client

forgeblock_toilville.py maps ./paladin.svg to hero-product's familiar attribute, the way it maps ./spelwork-logo.svg to the lockup. _FAMILIARS is an allow-list keyed by filename, and _hero takes a familiar image only when it directly follows the band's calls to action. Anywhere else the image falls through to the renderer, which drops unresolvable images with a note, and the dropped-image gate fails on that note.

Regenerated

The Spelwork pattern (theme and preview), the preview CLI and the brand guide.

Verified

Against toilville_rituals feat/hero-familiar:

  • just check green
  • root pytest: 305 passed, 0 skipped
  • copy coverage clean
  • I rendered the Spelwork page through the real render.php and looked: Paladin stands right of the copy, and the headline clears him.
**Merge after toilville_rituals #405**, which itself follows #404. #405 adds hero-product's `familiar` attribute, and the attribute gate fails until it's on Rituals `main`. Peter asked for real familiar heroes, starting with Paladin in the Spelwork hero. ## Canvas `ToilvilleSpelworkPage.dc.html` draws Paladin beside the hero copy, and the headline narrows from 900px to 640px to clear him. The art is `paladin.svg`, stored beside the canvas like the product lockups. ## Client `forgeblock_toilville.py` maps `./paladin.svg` to hero-product's `familiar` attribute, the way it maps `./spelwork-logo.svg` to the lockup. `_FAMILIARS` is an allow-list keyed by filename, and `_hero` takes a familiar image only when it directly follows the band's calls to action. Anywhere else the image falls through to the renderer, which drops unresolvable images with a note, and the dropped-image gate fails on that note. ## Regenerated The Spelwork pattern (theme and preview), the preview CLI and the brand guide. ## Verified Against toilville_rituals `feat/hero-familiar`: - `just check` green - root `pytest`: 305 passed, 0 skipped - copy coverage clean - I rendered the Spelwork page through the real `render.php` and looked: Paladin stands right of the copy, and the headline clears him.
feat(spelwork): Paladin in the hero
Some checks failed
PR policy check / policy-gate (pull_request) Failing after 1s
Test Generator / test (pull_request) Failing after 21s
Test Generator / lint-workflows (pull_request) Successful in 22s
Security Scans / Gitleaks secret scan (pull_request) Successful in 25s
Test Generator / lint-prose (pull_request) Successful in 25s
Security Scans / Trivy filesystem scan (pull_request) Successful in 29s
UDG dist drift gate / dist/ matches dtcg + udg sources (pull_request) Successful in 13s
Copy coverage / Design copy reaching rendered HTML (pull_request) Failing after 21s
f0929c180e
The Spelwork canvas gains Paladin, the facilitator familiar, drawn beside the hero copy (the headline narrows to 640px to clear him). The client maps ./paladin.svg to hero-product's new familiar attribute, as it maps ./spelwork-logo.svg to its lockup: _FAMILIARS is an allow-list keyed by filename, and _hero takes a familiar image when it follows the band's calls to action. Patterns, the preview CLI and the brand guide are regenerated.

--no-verify: from a worktree the shared hook's native-token sync targets a checkout outside any repo. Gates run by hand against toilville_rituals feat/hero-familiar: just check, root pytest 305 passed, copy coverage.
peterswimm deleted branch feat/spelwork-paladin 2026-09-12 15:31:10 +00:00
Sign in to join this conversation.
No description provided.