Problem
template/settings.json references git:github.com/jo-inc/pi-mem, so pi resolves it to HEAD of main (f324d0c). That HEAD carries dba718e, which injects the memory block as a trailing {role:"system"} message.
pi-agent-core's convertToLlm() handles user | assistant | toolResult | custom | bashExecution | branchSummary | compactionSummary and filters everything else — there is no case "system". So the injected memory message is silently dropped before the model ever sees it.
Net effect: the memory_* tools still read/write disk, but the automatic per-turn context injection (MEMORY.md, daily log, scratchpad) never reaches the narrator. For a narrative game where continuity is the point, memory is effectively dead weight until the issue is noticed. No error, no crash — just silent forgetting.
Root cause
Upstream pi-mem bug, tracked at:
PR #6 is open and unmerged as of writing, so main is still broken.
Interim fix
Pin the template to a known-good source. clawdia-lobster/pi-mem@v1.0.4 tracks upstream with PR #6 applied:
"packages": [
"git:github.com/clawdia-lobster/pi-mem@v1.0.4"
]
Once jo-inc/pi-mem#6 merges upstream, the pin can revert to git:github.com/jo-inc/pi-mem (or pin to the upstream tag).
Problem
template/settings.jsonreferencesgit:github.com/jo-inc/pi-mem, so pi resolves it toHEADofmain(f324d0c). That HEAD carriesdba718e, which injects the memory block as a trailing{role:"system"}message.pi-agent-core's
convertToLlm()handlesuser | assistant | toolResult | custom | bashExecution | branchSummary | compactionSummaryand filters everything else — there is nocase "system". So the injected memory message is silently dropped before the model ever sees it.Net effect: the
memory_*tools still read/write disk, but the automatic per-turn context injection (MEMORY.md, daily log, scratchpad) never reaches the narrator. For a narrative game where continuity is the point, memory is effectively dead weight until the issue is noticed. No error, no crash — just silent forgetting.Root cause
Upstream pi-mem bug, tracked at:
role:"user"wrapped in<pi-mem-injected>PR #6 is open and unmerged as of writing, so
mainis still broken.Interim fix
Pin the template to a known-good source.
clawdia-lobster/pi-mem@v1.0.4tracks upstream with PR #6 applied:Once jo-inc/pi-mem#6 merges upstream, the pin can revert to
git:github.com/jo-inc/pi-mem(or pin to the upstream tag).