Citing a Wiki Page
A canonical_id is a 26-character ULID. It is assigned when the page is
first saved (the structural-spine save filter auto-injects it) and stays
with the page across every rename. Slugs are routes; canonical_ids are
identity.
When to use this runbook
Whenever you write a wiki citation that another process or another
session might read.
Context
The structural index maintains a `page_canonical_ids` table that maps
canonical_id → current_slug, plus a `page_slug_history` audit trail of
every previous slug. This is why `/api/pages/by-id/{canonical_id}`
always works even after a rename — the index resolves through the
mapping table.
Walkthrough
For human-facing links in prose, slugs are fine — the SPA redirects.
For machine-readable identity, only canonical_ids will do. The
frontmatter `steps` are the lookup procedure.
Pitfalls
The frontmatter `pitfalls` are the recurring failure modes. The most
expensive is caching slug→canonical_id mappings in long-lived agent
memory: when a page renames, the cached slug is wrong forever.