Environment: v0.10.2, Windows 11, daemon mode, --mode full.
Symptom
index_status(verbose=true) returns git.head_sha (and branch info) read from the live repository, not from the indexed generation. Sequence observed:
- Index built at generation T0 (HEAD =
dbbec50…).
- New commit
34d6c6f… lands; the watcher has not yet reindexed — node count and graph content are still T0, and check_index_coverage still reports metadata.generation = T0.
index_status(verbose=true) already reports head_sha = 34d6c6f….
A freshness poll keyed on head_sha therefore declares "index up to date" while the graph is stale. Also mildly surprising: non-verbose index_status omits the git block entirely, so the same poll silently compares against an empty field forever.
Suggestion
Expose the indexed generation's commit alongside the live one — e.g. git.head_sha (live) + git.indexed_sha (what the graph was built from; coverage already exposes metadata.generation as a timestamp). That gives clients a truthful staleness signal: indexed_sha != head_sha ⇒ stale.
Environment: v0.10.2, Windows 11, daemon mode,
--mode full.Symptom
index_status(verbose=true)returnsgit.head_sha(and branch info) read from the live repository, not from the indexed generation. Sequence observed:dbbec50…).34d6c6f…lands; the watcher has not yet reindexed — node count and graph content are still T0, andcheck_index_coveragestill reportsmetadata.generation= T0.index_status(verbose=true)already reportshead_sha=34d6c6f….A freshness poll keyed on
head_shatherefore declares "index up to date" while the graph is stale. Also mildly surprising: non-verboseindex_statusomits thegitblock entirely, so the same poll silently compares against an empty field forever.Suggestion
Expose the indexed generation's commit alongside the live one — e.g.
git.head_sha(live) +git.indexed_sha(what the graph was built from; coverage already exposesmetadata.generationas a timestamp). That gives clients a truthful staleness signal:indexed_sha != head_sha⇒ stale.