TL;DR: the temporal tools (get_timeline, get_cochange_context) return empty on indexed symbols because the indexed repos carry only embed_complete and replay_watermark episodes, never git_commit episodes. The bi-temporal graph is a prominent capability, so the absence of commit-replay episodes by default is worth surfacing. Likely works-as-designed, filing as an enhancement.
Environment
- memtrace 0.6.0, darwin-arm64
- engine in remote mode on 127.0.0.1:50051
- repos
repo-e, repo-d, repo-a, all indexed
Repro
get_timeline(repo_id=repo-e,
scope_path=extract_fields,
file_path=scripts/regression/test_regression.py)
-> {"found": false, "total_versions": 0,
"_note": "No timeline entries for this scope_path/file_path."}
get_repository_stats(repo_id=repo-d) -> last_episode_type: "replay_watermark"
get_repository_stats(repo_id=repo-a) -> last_episode_type: "embed_complete"
get_repository_stats(repo_id=repo-e) -> last_episode_type: "embed_complete"
No repo in the set reports a git_commit episode, so symbol history has nothing to traverse; for the same reason, cochange queries have nothing to traverse and get_cochange_context comes back empty too.
Expected (or: what the docs imply)
The docs describe git_commit episodes as real-commit history that every symbol ties to via valid_at / invalid_at timestamps tracing back to those episodes, which a user could reasonably read as a promise that get_timeline returns commit-level history after indexing.
Actual
The default index path produces embed_complete / replay_watermark episodes (index runs), not git_commit replay. Temporal queries return empty until something populates commit episodes, and nothing in the standard index flow appears to do so.
Ask
- Document whether git-commit episode replay is opt-in, and what command or flag triggers it.
- If it is meant to populate on index, this is a bug rather than an enhancement, and the repro above is the reproduction.
Either way, surfacing "0 git_commit episodes; temporal history unavailable" in get_timeline instead of a bare found: false would tell the user it is a coverage state, not a missing symbol.
TL;DR: the temporal tools (
get_timeline,get_cochange_context) return empty on indexed symbols because the indexed repos carry onlyembed_completeandreplay_watermarkepisodes, nevergit_commitepisodes. The bi-temporal graph is a prominent capability, so the absence of commit-replay episodes by default is worth surfacing. Likely works-as-designed, filing as an enhancement.Environment
repo-e,repo-d,repo-a, all indexedRepro
No repo in the set reports a
git_commitepisode, so symbol history has nothing to traverse; for the same reason, cochange queries have nothing to traverse andget_cochange_contextcomes back empty too.Expected (or: what the docs imply)
The docs describe git_commit episodes as real-commit history that every symbol ties to via
valid_at/invalid_attimestamps tracing back to those episodes, which a user could reasonably read as a promise thatget_timelinereturns commit-level history after indexing.Actual
The default index path produces
embed_complete/replay_watermarkepisodes (index runs), notgit_commitreplay. Temporal queries return empty until something populates commit episodes, and nothing in the standard index flow appears to do so.Ask
Either way, surfacing "0 git_commit episodes; temporal history unavailable" in
get_timelineinstead of a barefound: falsewould tell the user it is a coverage state, not a missing symbol.