From 329791c9e95907e1fb9da60cc4f0ddc8c2f8c823 Mon Sep 17 00:00:00 2001
From: Speculator55005 <50082482+fas89@users.noreply.github.com>
Date: Tue, 15 Sep 2026 06:32:43 +0200
Subject: [PATCH 1/2] docs: a link gate that reads what ships, and the last GCP
project id
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Four things, and the first is the one that matters.
THE ARTIFACT GATE. Every link gate here read SOURCE MARKDOWN: the bundled
links-check plugin filters candidates on /\.md(?:[?#]|$)/ and so sees about 861
of ~1331 internal links; base-prefix-check greps `](/…)`; lychee-source runs over
docs/**.md. None can see the bytes that deploy. Measured on 92925e5: a
one-character typo in the config.ts navbar (`/why` -> `/whyy`) leaves
`npm run docs:build` exiting 0 while shipping 424 dead references across 212 of
the 213 rendered pages. scripts/check-dist-links.mjs walks
docs/.vuepress/dist/**.html instead — 219 pages, 107,738 absolute references,
474 distinct targets on this build, with the census printed, because "passed"
with no numbers is indistinguishable from "inspected nothing".
Its canaries run IN-PROCESS before every scan rather than as a separate step, a
separate step being deletable while the gate keeps reporting green, and there are
floors on pages, references and distinct targets. That machinery earned its keep
immediately: the first version's fixture contained only `` elements, so
dropping `src` from the extractor moved the counts by 219 of 107,738 — under
every floor — and the gate printed "Clean" while no asset reference in dist was
checked. Reproduced, then closed: the fixture now carries a resolving ``
and a failing `',
+ 'must resolve — index',
+ 'must resolve — pretty',
+ 'must NOT resolve — missing file',
+ 'must NOT resolve — missing base prefix',
+ '
<a href="/canary_base/not-a-real-link.html">in a code sample</a>',
+ '',
+ '