test(pipeline): gate how much design copy reaches rendered HTML #117
No reviewers
Labels
No labels
priority
P1
priority
P2
priority
P3
priority
P4
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Toilville/toilville-design!117
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/pipeline-gates"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The check that caught the most real bugs this cycle — and the one I kept running by hand. Three failures it found that nothing else did:
<span>was reordered, so the sentence read wrongNone of these break a build. The page renders, the layout looks right, and the words are missing.
It measures rendered HTML, not the pattern
Block attributes live inside the block comment, so grepping the pattern finds copy that never reaches a reader — and
wish-formrenders labels its attributes never carry, so the pattern under-reports too. Each block's realrender.phpruns through the existingrender_pattern.phpharness.Signal, not noise
Normalisation compares words, not typography — curly quotes, em dashes and entities are not copy differences. Decorative affixes are stripped for the same reason: a link reading
Open discussions →renders the arrow as a separatearia-hiddenspan. Counting that as a miss buried the real ones — four such false positives were hiding one genuine drop.Floors are a ratchet
Raise them as coverage improves; never lower one to make a red build green — that is the bug leaving through the door it came in.
Floors sit ~2 text nodes under measured: an ordinary copy edit doesn't flap the build, a dropped section (which takes many nodes with it) is caught at once.
Verified red: removing the
_contact_formmatcher — the original bug — drops contact to 85.7% and fails the gate.It actually runs
New CI job checks out both repos and installs
php-cli. The design sources live here, the blocks'render.phplives in Toilville_Rituals, and neither repo's CI had both. It fails rather than skips on a missing prerequisite, for the same reason as the other gates in #116.Two genuine misses remain
Both structural — the blocks cannot express what the design asks.
spelworkis missing "Talk to a human" (the CTA band has room for one button, the design has two) andcontactis missing "Work email" (the label is hard-coded). Fixed in toilville_rituals#375; the client side follows once that lands.https://claude.ai/code/session_01Kbzfscp4w5enUrZxMnDt78