背景
SPEC §7 的核心目标是:每个 session 只先读 .memory/MEMORY.md,该文件保持轻量,主要放顶层指针;详细内容通过 topic sub-index 和单个 asset 按需加载。
但当前 conformance/validate 口径要求每个 local asset 都必须直接出现在 MEMORY.md。这和 L1 只作为轻量入口的设计目标冲突。
问题
如果所有 asset 都必须直接写进 MEMORY.md,大 store 会重新退回到一个大索引文件:
- L1 token 预算难以稳定维持在 600-900 tokens。
index/<topic>.md 的 L2 价值被削弱。
- 多 topic asset 可能在多个位置出现,后续“哪条索引记录是权威入口”不清楚。
这不是简单测试口径问题,而是 SPEC 对“reachable”和“directly listed”的语义没有分开。
建议
把 conformance/validate 规则改成:
每个 asset 必须从 MEMORY.md 出发,在最多 2 跳内可达。
允许路径:L1 -> L3,或 L1 -> L2 -> L3。
同时补充两个字段或规则:
primary_topic:每个 asset 有一个主 topic,用于唯一归档和统计。
tags:允许多 topic 检索,但不是唯一权威入口。
校验上可以拆成:
E-IDX-coverage:asset 从 L1 不可达。
W-IDX-duplicate-entry:同一 asset 在多个索引处重复出现,但未声明主 topic。
参考
SPEC.md §7.0:MEMORY.md 不包含所有 memory,只包含顶层指针。
SPEC.md §7.1:每个 asset 从 L1 最多 2 跳可达。
cli/engram/conformance.py:INV-I1 当前要求 every local asset is referenced by MEMORY.md。
背景
SPEC §7 的核心目标是:每个 session 只先读
.memory/MEMORY.md,该文件保持轻量,主要放顶层指针;详细内容通过 topic sub-index 和单个 asset 按需加载。但当前 conformance/validate 口径要求每个 local asset 都必须直接出现在
MEMORY.md。这和 L1 只作为轻量入口的设计目标冲突。问题
如果所有 asset 都必须直接写进
MEMORY.md,大 store 会重新退回到一个大索引文件:index/<topic>.md的 L2 价值被削弱。这不是简单测试口径问题,而是 SPEC 对“reachable”和“directly listed”的语义没有分开。
建议
把 conformance/validate 规则改成:
同时补充两个字段或规则:
primary_topic:每个 asset 有一个主 topic,用于唯一归档和统计。tags:允许多 topic 检索,但不是唯一权威入口。校验上可以拆成:
E-IDX-coverage:asset 从 L1 不可达。W-IDX-duplicate-entry:同一 asset 在多个索引处重复出现,但未声明主 topic。参考
SPEC.md§7.0:MEMORY.md不包含所有 memory,只包含顶层指针。SPEC.md§7.1:每个 asset 从 L1 最多 2 跳可达。cli/engram/conformance.py:INV-I1当前要求 every local asset is referenced by MEMORY.md。