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.