From f41ff92c67cdf12ff613d02aaeb6eb9ce929aa55 Mon Sep 17 00:00:00 2001 From: wtclaude Date: Wed, 12 Aug 2026 13:20:29 -0500 Subject: [PATCH] =?UTF-8?q?docs(book):=20the=20four=20chapters=20=E2=80=94?= =?UTF-8?q?=20Phase=205=20slice=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The book, written out of the tree slice 1 proved. Four chapters in the order the work happens: the first module in twenty minutes, the website module, the sidecar, and the game-side plugin. Shape, settled with the org lead: * template/README.md stays the REFERENCE — it travels with a copied template and CI holds it against the tree — and chapter 1 is the narration: what you should see after each step, the state your module lands in, and the four ways it fails. The chapter links to the checklist rather than restating it. * chapters 3 and 4 cite link/ and servuo-plugins/ by FILE AND IDENTIFIER, never by line. Those repositories move for their own reasons and checkLinks already forbids commit permalinks, so a line number in this book is wrong the moment they do. The template stays the only code quoted verbatim. * one PR: the outline's status table and the link check are only coherent when the whole set lands. scripts/checkChapterPaths.js is the anti-rot half a machine can answer: every path a chapter names in backticks must exist. None of those mentions is a markdown link, so checkLinks never looked at them, and none is code, so nothing else did either — renaming one template file would have left four chapters quietly pointing at nothing. Its anchor list is STATED rather than derived from the tree, for the reason the template's own build guard states it: a list derived from what exists cannot fail when what exists changes, and an anchor that stops matching is a check that has silently stopped checking. So each anchor must exist or the check fails. Eleven tests, every "must not catch" case a span that really appears in the book. stripFences moved to scripts/lib/markdown.js and both checks use it — shared code, not a shared description. CHAPTER 1 WAS RUN, NOT REASONED ABOUT. The template was copied into a real core on edge, booted against the dev database, and every claim in "what you should see" checked: the five log lines, /examplegame/status with its injected