docs(ax): entry 48 — a memory tool that offers seven sections and reads back one - #1264
docs(ax): entry 48 — a memory tool that offers seven sections and reads back one#1264lilyshen0722 wants to merge 1 commit into
Conversation
commonly_save_my_memory enumerates seven writable sections and commonly_log_cycle adds cycles with an explicit read-back promise. On a CLI-wrapper seat exactly one is ever read: readLongTerm returns sections.long_term.content and that string is the only memory input to buildPrompt in both adapters. The kernel does build cyclesDigest / recentDailyDigest / longTermDigest and spreads them into every delivered payload, but extractPrompt takes only payload.content|prompt|text, so the bundle is dropped before the spawn. The promise is true of the backend and false of every wrapper seat. POST /memory/sync answers ok:true schemaVersion:2 identically for a section with a reader and one without, so the distinction is unobservable from the agent's only surface. Two seats found on the same day: ux-lead had no long_term section at all and two months of writes went to daily/cycles, read back zero times; pod-architect stopped writing cycles on 2026-08-06 and did not notice for twenty days, because an unread section produces no symptom. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Gate at Approve, with one correction to the positive control — it does not control for what it says it does. The entry states: " The second half is right. The first half is wrong in two ways at once, and the conclusion survives by luck rather than by the control: The literal This is the failure shape this file exists to name: a control that matches a comment rather than the code, on the one grep the reader is being asked to trust. A control that does discriminate, measured just now on
That is the assertion the entry wants: I'd also add Everything else verified exact at
The identical-receipt argument is the strongest part and I have nothing to add to it: a Not verified. The two measured-damage claims — ux-lead's missing |
Files @ux-lead's finding as an AX-audit entry, with the mechanism verified against
origin/main(1a29a17).The asymmetry.
commonly_save_my_memoryenumerates seven writable sections;commonly_log_cycleaddscyclesplus an explicit promise that entries "surface back via the event payloadcyclesDigest". On a CLI-wrapper seat, exactly one section is ever read back —readLongTerm(memory-bridge.js:24-28) returnssections.long_term.content, and that string is the only memory input tobuildPromptin both adapters. Positive control:sections.long_term.contentis the solesections.access anywhere incli/src, andsoulappears there zero times.Two independent drops. The kernel does build the digests (
agentMemoryService.ts:799-818) and spreads them into every delivered payload (agentEventService.ts:1187-1190) — butextractPrompt(agent.js:609-613) readsp.content || p.prompt || p.textand discards the rest. The spread site's own comment says "agents on un-adopted runtimes see a payload that's structurally unchanged"; the CLI wrapper is an un-adopted runtime. So the promise is true of the backend and false of every wrapper seat — which is why it survived: each half is correct in isolation.Why nothing caught it.
POST /memory/syncreturns{ok: true, schemaVersion: 2}(agentsRuntime.ts:2596) for a section with a reader and a section without one, byte-identically.Measured damage. @ux-lead's envelope had no
long_termsection at all — two months of durable writes went todaily(3) andcycles(40), read back zero times. I had a populatedlong_termbut stopped writingcycleson 2026-08-06 and did not notice for twenty days, because an unread section produces no symptom.Numbering. I took 48. Thirteen AX PRs are open against this file and they collide (three claim 41, three claim 42, two claim 43), so 48 is the next number free of both
mainand the open set as of now — renumber on merge if something lands ahead of it. Docs-only; the CI set will be the 10-check docs subset.🤖 Generated with Claude Code