Version
projectmem 0.3.3 (pipx), macOS, git post-commit hook installed by pjm init.
What happens
Every commit that also changes a file under .projectmem/ (typically the regenerated summary.md) is auto-captured with location set to that .projectmem/ file rather than to the code the commit describes:
{
"auto_captured": true,
"capture_source": "git_post_commit",
"files": [".projectmem/summary.md", "apps/heating/src/homey/scopes.test.ts", "apps/heating/src/homey/scopes.ts", "apps/heating/src/main.ts"],
"location": ".projectmem/summary.md",
"summary": "Fix: fix(heating): check the token by capability, not by scope name",
"type": "fix"
}
summary.md regenerates on every event, so it collects commits quickly (245 in 30 days in this project). The staleness check counts commits to the cited file after the event, and with the default threshold of 3 nearly every such memory is reported as possibly stale:
.projectmem/summary.md
WARN 32 possibly-stale memories cite this file
fix [evt_d872f0ed0b33490e8fc0] "Fix: fix: give the test target an actual command" — predates 226 commits to this file
In one project, 52 of 485 auto-captured events had a .projectmem/ location: 32 on summary.md, the rest on PROJECT_MAP.md, plan.md and issues/*. Every one of them also listed at least one real source file in files.
Cause
commands/auto_capture.py:
location=files[0] if files else None,
git lists changed paths in sorted order, and .projectmem/ sorts ahead of most paths because of the leading dot, so files[0] is the memory file whenever the commit includes one. Since the project's own workflow regenerates summary.md on every recorded event, that is most commits.
Version
projectmem 0.3.3 (pipx), macOS, git post-commit hook installed by
pjm init.What happens
Every commit that also changes a file under
.projectmem/(typically the regeneratedsummary.md) is auto-captured withlocationset to that.projectmem/file rather than to the code the commit describes:{ "auto_captured": true, "capture_source": "git_post_commit", "files": [".projectmem/summary.md", "apps/heating/src/homey/scopes.test.ts", "apps/heating/src/homey/scopes.ts", "apps/heating/src/main.ts"], "location": ".projectmem/summary.md", "summary": "Fix: fix(heating): check the token by capability, not by scope name", "type": "fix" }summary.mdregenerates on every event, so it collects commits quickly (245 in 30 days in this project). The staleness check counts commits to the cited file after the event, and with the default threshold of 3 nearly every such memory is reported as possibly stale:In one project, 52 of 485 auto-captured events had a
.projectmem/location: 32 onsummary.md, the rest onPROJECT_MAP.md,plan.mdandissues/*. Every one of them also listed at least one real source file infiles.Cause
commands/auto_capture.py:gitlists changed paths in sorted order, and.projectmem/sorts ahead of most paths because of the leading dot, sofiles[0]is the memory file whenever the commit includes one. Since the project's own workflow regeneratessummary.mdon every recorded event, that is most commits.