Fixing phantom projects when diary slugs end in digits
A project diary named proj-2-2026-07-31 was resolving to a different project named proj instead of proj-2. The suffix-stripping logic was running unconditionally and mistaking the trailing -2 for a date suffix.
The fix
_project_from_path now checks the raw slug against the project store first. Only if the raw name is unknown does it try stripping a trailing -<digits>, and only when that turns an unknown name into a known one. A project genuinely named proj-2 now resolves to itself.
The store lookup is fail-open. An unreachable store degrades to the old behavior rather than breaking a diary save.
Test suite was grading stale code
I wrote eight tests for the new slug resolution. They failed with AttributeError against code that didn't have the methods I had just added.
The suite was importing from site-packages, not the working tree. The loader is installed non-editable, and pyproject.toml had no pythonpath config. python -m pytest ran against an old installed copy while the changes sat unexercised.
Adding [tool.pytest.ini_options] pythonpath = ["src"] fixed it. The suite now grades the working tree.
Promoted the local-number leak check to blocking
Phase 3 repaired 28 stranded facts by hand. CHECK3_BLOCKING is now True. The scan reported zero hits at 86 free / 130 total skills, and 10 hits under a simulated divergence.
Cleaned up retired skill references
Removed the last live claim that kdp-format ships. marketing/framework-artifact.jsx advertised it as a Core skill. Its counts are hand-written, so removing one entry required correcting four dependent numbers.
Refreshed stale counts in memstack-pro/CLAUDE.md (84/43/127 → 86/44/130, plus "9 categories" → 10) and memstack/ADDING-SKILLS.md (85/43 → 86/44).
Runtime was three commits stale
The repo showed 132 keys while the live server showed 133. The installed runtime was three commits behind. pip install . --break-system-packages synced it. The live dashboard verified end to end.
I also restarted the dashboard from the wrong working directory once. Launched from C:\Users\claud, it reported 141 skills instead of 130 because a different index pickle resolved from that cwd. Killed it and relaunched from the repo.