Every hero-ring anchor href resolves to a live GitHub Pages URL under BASEURL=/AMS. All 15 letters (α β γ δ ε ζ η θ ι κ λ μ ν ξ π) return HTTP 200 on Pages after redeploy.
Single source of truth — URL paths live in a new CONCEPT_PATHS const keyed by Greek letter. Adding or moving a concept doc requires editing exactly one line in this file.
String /concepts/ does not appear anywhere in docs/assets/js/colibri-hero.js (not in code, not in comments). Grep-enforceable.
All other hero behavior is preserved: 15 entries in the CONCEPTS array, axis labels, tooltip markup, polar placement math, keyboard nav (Arrow/Home/End/Escape), per-letter enter/float animation delays, aria-label format, role="tooltip", encodeURIComponent not needed (paths are plain ASCII segments).
BASEURL resolution unchanged — still reads document.querySelector('meta[name="cb-baseurl"]')?.content || ''.
Index-dir URLs end with trailing slash — α → 2-plugin/, ν → 4-additions/ (directory indexes). Jekyll serves these via index.html. Other letters end with .html.
No external dependencies added. File stays a self-contained IIFE with zero imports.
No change to docs/index.md, _config.yml, CSS, other JS, or any concept doc.
Test plan
Post-edit grep grep -n "/concepts/" docs/assets/js/colibri-hero.js returns zero hits.