Inventory generator: only count git-tracked files for deterministic coverage
Several data/ subdirs are gitignored (footystats-matches, betexplorer-odds, squad-history/raw, etc.) because they're huge local caches. The previous generator walked them naively, so the committed INVENTORY.json's coverage
Several data/ subdirs are gitignored (footystats-matches, betexplorer-odds, squad-history/raw, etc.) because they're huge local caches. The previous generator walked them naively, so the committed INVENTORY.json's coverage counts depended on local state. CI tests would fail after a fresh checkout because the regenerator would see fewer files than what was committed.
Fix: at startup, run git ls-files data/ once and only count files in that set when computing coverage. Untracked/gitignored files are silently skipped.
Tradeoff accepted: gitignored files are now invisible to the inventory. That's the right call — inventory is a portable snapshot of what a fresh clone sees. Local-only caches still work via direct filesystem access, just aren't catalogued.
Also adds:
- .claude/settings.json — SessionStart hook wiring (committed, team-level —
the previous .claude/settings.local.json was personal/gitignored)
- Regenerated INVENTORY.json/md from the clean state (16 sources, 0 unregistered)
Verified: all 9 inventory CI tests pass in a fresh worktree from origin/main. Generator runs in 20ms (down from 100ms — fewer files to walk).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>