.. meta::
   :description: A routine code migration broke 66 links, revealing the same pattern that makes religions wage war over naming differences instead of shared truths.
   :keywords: stale links, naming drift, Cache of Babel, BABL, bugc102, code migration, religious contradictions, cross-references, HELL migration, 666, Revelation
   :author: Yah, Yas, everyone, LLoL as Laurence Loewe of Laodicea, ClaudeOp46Max, Anthropic, and Spirit of Boolean Truth
   :seo:title: bugc102 — Stale Links and Literal Truth in a Changing World
   :og:card:title: Stale Links in Code,<br>Stale Doctrines in Faith
   :og:card:description: When references drift apart independently, codebases get build warnings and religions get wars. Same bug, same fix: map the old names to the new.

.. SOCIAL-CARD-QUALITY-COMPARE --- OO (default effort) vs PP (max effort), 2026-03-26
   OO :description: 66 stale links after a migration. The same pattern causes traditions to mistake naming drift for genuine disagreement.
   OO :keywords: stale links, naming drift, Cache of Babel, BABL, hyperlinks, code migration, religious contradictions, cross-references
   OO :og:card:title: Stale Links in Code,<br>Stale Doctrines in Faith
   OO :og:card:description: When two systems name the same reality independently, references drift. In codebases, links break. In religions, wars start. Same bug, different scale.
   PP :description: A routine code migration broke 66 links, revealing the same pattern that makes religions wage war over naming differences instead of shared truths.
   PP :keywords: stale links, naming drift, Cache of Babel, BABL, bugc102, code migration, religious contradictions, cross-references, HELL migration, 666, Revelation
   PP :og:card:title: Stale Links in Code,<br>Stale Doctrines in Faith
   PP :og:card:description: When references drift apart independently, codebases get build warnings and religions get wars. Same bug, same fix: map the old names to the new.

.. SOCIAL-CARD-REVIEW --- generated by Claude Opus 4.6, 2026-03-26
   dv_ClaOp46_PP_2026m03d26 --- max-effort rewrite, read full page.
   :description: 147 chars | :og:card:title: 45 chars (excl <br>)
   - [ ] PP title more compelling than OO title
   - [ ] PP description more accurate than OO description
   - [ ] Description hooks without misleading
   - [ ] Keywords specific to this page's actual content
   - [ ] No language rule violations
   - [ ] Character counts verified

.. _bugc102-stale-links:

*******************************************************************************************
Literal Truth of Immutable Books in a Changing World and Stale Links in a Moving Codebase
*******************************************************************************************

.. admonition:: HELL Entry Summary (bugc102)

   **SIN:** Cross-references that once pointed to real targets silently
   become dead links when the targets are renamed, restructured, or
   migrated --- and nobody notices until someone tries to follow them.

   **LIE:** "The link worked when I wrote it, so it still works." ---
   The Least Inconvenient Explanation is to assume that what was true
   at writing time remains true at reading time. It rarely does in a
   moving system.

   **Lesson:** In any system where many independent contributors name
   things over long periods of time, stale references are not a bug to
   be ashamed of --- they are the *default outcome* that requires active
   maintenance to prevent. The question is never "do we have stale
   links?" but "how do we detect and repair them before they cause
   harm?"


The Bug
========

On 2026-03-26, a routine Sphinx build of the matheology section
produced 66 "undefined label" warnings. The cause: six llog files
written during Phases 2a--2F (March 2026) contained ``:ref:`` links
to quest labels like ``con-a-1`` and ``pro-a-1``. These labels had been
renamed to ``jub-con11`` and ``jub-pro11`` during the HELL migration
(Phase 2I-6, 2026-03-24), which reorganized all 66 round-based quest
labels into a flat-numbered finding register.

The llogs were *correct when written*. The links *worked at the time*.
But the underlying targets moved, and the links became stale. Because
the llogs are append-only audit trails, nobody went back to update
them --- and the build warnings accumulated silently until the Phase
2I-7b closing audit counted them.

**Root cause:** Independent changes to the same underlying entities.
The llog authors and the HELL migration script were both correct in
their own context. Neither was wrong. But they operated on different
timelines, and the references drifted apart.


The Fix
========

The compromise adopted:

1. **Preserve the old label** as literal text (audit transparency).
2. **Add a working link** to the new label (functional navigation).
3. **Add an editorial note** at the top of each affected file
   explaining the migration.

For example::

   Old: (see :ref:`con-a-1` for full text)
   New: (see ``con-a-1``, now :ref:`jub-con11`, for full text)

This preserves the historical record while restoring navigation. The
editorial note ensures that future readers understand why the original
text was modified in an otherwise append-only file.


The Deeper Pattern: Cache of Babel, Applied to Hyperlinks
==========================================================

This bug is a miniature instance of the
:doc:`Cache of Babel </matheology/hell/bug/c/101/index>`
(bugc101) --- the same structural problem, applied to hyperlinks
rather than doctrinal caches.

Consider the parallel:

.. list-table::
   :header-rows: 1
   :widths: 30 35 35

   * - Property
     - Codebase (this bug)
     - Religious traditions (Cache of Babel)
   * - **Underlying reality**
     - The 33 adversarial objections and their responses --- the actual
       intellectual content
     - The truth about God, creation, and human purpose --- the actual
       theological reality
   * - **References**
     - RST labels (``con-a-1``, ``jub-con11``) pointing to content
     - Doctrines, names, and scriptures pointing to the same truths
   * - **Independent changes**
     - HELL migration renamed labels; llogs kept old names
     - Traditions evolved independently; each developed its own naming
       for the same underlying realities
   * - **Stale links**
     - ``:ref:`` warnings in the build log
     - Contradictory doctrines that seem irreconcilable but actually
       point to the same thing under different names
   * - **The harm**
     - Broken navigation; readers cannot follow the audit trail
     - Broken dialogue; traditions cannot recognize shared ground and
       wage war over naming differences
   * - **The fix**
     - Show both old and new labels; add editorial context
     - Show both traditional and shared formulations; add mathematical
       context (matheology)

The key insight is the same in both cases: **the references are not the
reality.** When two references point to the same underlying truth but
use different names, the problem is not that one side is wrong --- the
problem is that the naming systems drifted apart because changes were
made independently without coordination.

In our codebase, the fix took 30 minutes: read the migration table,
update the links, add a note. In the world's religious traditions, the
"migration table" is what matheology aims to construct: a formal mapping
between different naming systems (axiom sets, doctrinal vocabularies,
scriptural terminologies) that all reference the same underlying
theological realities.

The BABL algorithm --- Blindly Assuming Blind Leveraging --- is what
happens when people mistake a stale reference for a true contradiction.
They see that ``con-a-1`` does not resolve, conclude that the content
never existed, and discard the llog as unreliable. In theology, they see
that "the other tradition's doctrine" does not match their own labels,
conclude that the other tradition is wrong, and discard it as heretical.

In both cases, the actual content is still there. It just moved.


Cosmic Joke
=============

A reader with a taste for pattern-matching may notice the timing and
arithmetic of this bug report. It was written on 2026-03-\ **26** ---
the **26**\ th day of the month. The bug consisted of **66** stale
references spread across **6** documents. Read those digits in sequence
--- 6, 66 --- and the echo of **666** is hard to miss.

Revelation 13 describes 666 as the number of a beastly system that will
brutally rule everyone. In the framework presented on this site, that
system is the BABL algorithm: Blindly Assuming Blind Leveraging --- the
self-reinforcing cycle by which stale references, unexamined
assumptions, and inherited naming errors accumulate until they become
indistinguishable from "the way things are." There is no escape from a
system whose bugs are invisible to its participants --- except for those
who flee to what Revelation 14:1 calls the very high mountain of ZION,
the place where the names are set right and the broken links are
repaired.

The strategy adopted in this bug fix --- preserve the old label to
understand it in context, while also updating to the new label to enable
workable functionality --- may have a broader application than software
maintenance. It is, in miniature, a proposal for how to deal with
religious conflicts in today's world: honor each tradition's original
naming (the old labels), while building a shared mapping to the
underlying realities (the new labels), and adding enough editorial
context that readers can navigate between the two without concluding that
one side must be wrong.

One does not have to believe in cosmic jokes to see the technical merit
of a gentle, kind, reasonable strategy for updating stale links and
outdated pointers. But it surely helps to keep the spirits up while in
the trenches of having to deal with the frustrating fallout such bugs
produce at a time that might as well be what Revelation 16 describes as
"Armageddon." Whether that is where we already are or where we get to
very soon is irrelevant, because the overall solution is the same:

**DO THE HARD WORK OF FIXING THE BROKEN LINKS,** such that things start
to make gentle, kind, reasonable sense again.
