v5.9.1 — vault-path hygiene: check-no-hardcoded-vault-path gate
PATCH. A new CI gate prevents absolute vault-path literals from re-entering the codebase, paired with a prose lock of the runtime-resolve convention in `AGENTS.md`. No behavior changes; no new runtime code; gate count 21→22.
Added
`check-no-hardcoded-vault-path` gate — 22nd gate in `check-all.sh` (`034a846`). Fails if any non-test tracked file embeds an absolute `…/Library/CloudStorage/…` path literal or the retired pre-V5-3 vault root name `…/Obsidian/AgentMemory` as a path component. Shell tilde/variable expansions (`~/Library/CloudStorage`, `$HOME/Library/CloudStorage`) and placeholder notation (`<…>`, `…`) are allowed. Fourteen unit tests. Gate row added to CI-Gates.md.
Internal
`AGENTS.md` — `§ Vault-path convention — resolve, don't recall` (`306cbf0`). New subsection under Conventions: canonical resolver (`harness_memory.vault_path()`), `$MEMORY_VAULT_PATH` escape hatch, and the "why" (machine-specific path segments become silently stale across installs). Running-the-checks paragraph updated to list the 22nd gate.
Full changelog: CHANGELOG.md