AA b18: build-warning gating and link guards — deferred tasks#
aa-b18-build-warning-gating-dv_ClaOp50Max_MMv1r1p0_2026m09d11_12h55.claude/effort-levelBackground#
On 2026m08d03 a directory-name case mismatch between git’s index and the
working tree was found: source/FF and source/license/JoLi in git,
source/ff and source/license/joli on disk. macOS is case-insensitive, so
every local build resolved fine; the case-sensitive deploy server published the
git spelling, and 563 :doc: references pointing at the lowercase paths
died silently. The FeedbackFlow section and the Jonah License page were both
unreachable at the URL the whole site linked to.
Two things let it survive for months:
Nothing compared git’s view of a path with the disk’s. Fixed — see
scripts/check-paths.py(Check A), wired intomake lint.Nothing reads Sphinx’s warnings.
SPHINXOPTSis empty, so an unresolvable:doc:warns and then renders as href-less plain text while the build stays green. NOT fixed — that is the k5 task below.
Cause 2 is the deeper one. Cause 1 produced this bug; cause 2 is why any silent-reference bug can ship. The guard added in that session covers three reference classes; warning gating would cover everything Sphinx itself sees.
Task list#
k |
s |
Task |
Notes |
|---|---|---|---|
k5 |
s9 |
Test the ``_redirects`` splat rules immediately after the first deploy. |
The 12 rules added on 2026m08d03 are the first use of ``:splat``
syntax in that file. If Cloudflare Pages does not handle it as
expected, the old capitalised URLs 404 instead of 301 — a StayVS
regression (published URLs revoked, not redirected). Curl each and
expect 301: |
k5 |
s3 |
Turn on Sphinx warning gating (``-W –keep-going``) in CI. |
This is the root-cause fix that the 2026m08d03 session deliberately
staged behind the case repair — gating first would have meant 620
unresolved- |
k4 |
s3 |
Triage the 890-warning backlog far enough to make ``-W`` viable. |
Full build 2026m08d03 (all 1291 docs): |
k3 |
s2 |
Decide what to do about the 32 ``unknown document`` warnings in HELL. |
All 32 sit in frozen MockupModel archives and append-only llogs, pointing
at pages that have since moved. A link that was correct when written is
arguably correct as history, and editing it would falsify the record
— so |
k3 |
s2 |
Fix the missing FF postfix includes in ``source/faq/index.rst``. |
Lines 740 and 742 include
|
k3 |
s1 |
Watch the PROBATIONARY TELES path-segment clause. |
Added 2026m08d03 to TELES Renaming Policy — Mechanical Identifier Migrations. It lets ONE sweep llog with a complete manifest replace the per-file migration reports that the policy normally requires. LLoL’s instruction: there is virtually no experience with sweeps of this kind, so it must be watched and revoked if used too much. Frequency of use is itself the warning sign. Review after the next path-segment migration, or after 6 months, whichever comes first. |
k4 |
s3 |
A public download button points at a PDF that was never committed. |
|
k2 |
s1 |
Confirm or correct the assessor nick ``ClaOp50Max``. |
|
k2 |
s1 |
Extend ``check-paths`` coverage. |
Known gaps, stated in |
Guard-rail learned the hard way (2026m08d03)#
Recorded here because it will otherwise be re-learned:
A clean ``make check-paths`` run is necessary but NOT sufficient after a bulk
sweep. Findings inside source/matheology/hell/ are reported but do not
fail, and that exemption — meant to protect frozen history — happily hid 12
stale toctree entries and one :doc: ref that the sweep itself had just
broken in hell/mm/b/14/index.rst. Only make html surfaced them.
After any bulk path change, run both:
python3 scripts/check-paths.py --strict-hell # no finding may name a swept path
make html # inspect the new warnings
This is now condition 4 and 5 of the probationary clause in TELES Renaming Policy — Mechanical Identifier Migrations.
See also#
AnyAims (AA) Registry — AA registry (parent)
LLog — Path-case drift on the deploy server, and a consistent guard against silent link death — diagnosis, independent check of the incoming brief, EDEN analysis
TELES Sweep Manifest — path-case migration of 2026m08d03 (Double Caps in prose, lowercase in paths) — execution, full file manifest, appended corrections
TELES Renaming Policy — Mechanical Identifier Migrations — the probationary path-segment clause
AHA/linting.md— whatcheck-pathscovers and what it does not