fix(rules): stop rendering the skills paragraph's markup as text
verify-and-publish / gate (push) Successful in 16m6s
verify-and-publish / publish (push) Has been skipped

`skillsText` is written into the page with `set:html`, because its copy
carries a `<code>.agents/skills/</code>`. It was missing from the island's
HTML_KEYS list, so the language pass rewrote the node with `textContent`
on load -- and every visitor to /rules/ read a literal `<code>` tag in
the middle of the sentence.

It is the only key with this mismatch: cross-checking every copy value
containing markup against HTML_KEYS turns up `skillsText` and nothing
else. Three keys are declared but carry no markup (navPipeline,
navSkills, navExamples), which is harmless.

Also teaches rendered-text-diff.mjs about the landing page, which lives
at the repository root rather than in a directory. It was requesting
/index/index.html and diffing against a 404, which reported a clean four
spans. With the path fixed the landing page really is clean, 36 of 36.

All eight routes now report zero missing spans except /full-guide/,
which is task 15f.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Marcos Paulo
2026-09-05 23:53:14 +00:00
parent a1eb1e79ea
commit a97c2a4034
2 changed files with 12 additions and 3 deletions
@@ -403,8 +403,13 @@ fix(api): scope session query</code></pre>
select('[data-skill]', id, 'skill');
}
// Keys whose copy carries markup, so the swap must write innerHTML.
// `skillsText` was missing while the markup renders it with `set:html`:
// the island rewrote it as text on load and every visitor saw a literal
// `<code>.agents/skills/</code>` in the paragraph.
const HTML_KEYS = {
heroTitle: 1,
skillsText: 1,
pipelineTitle: 1,
skillsTitle: 1,
ratchetTitle: 1,