Skip to content

Commit ef60b2b

Browse files
committed
feat(runtime): add partitioned derived indexes
1 parent 78982b3 commit ef60b2b

26 files changed

Lines changed: 4007 additions & 84 deletions

‎README.md‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,28 @@ devcodex status
388388

389389
旧的 no-args `profile_load`、`memory_session_read` 和 `memory_summary_read` 仍保留兼容性,但不再是推荐默认路径,也不能单独证明相关上下文已经完整加载。`config.local.json` 仍只有在用户或项目明确指定时才读取。
390390

391+
## 运行态派生索引(未发布)
392+
393+
当前源码为持续增长的 memory、运行态台账投影和报告目录增加
394+
`DomainDerivedIndexV1`:Markdown/文件仍是唯一真相源,内容寻址 partition、immutable
395+
manifest 和原子 `current.json` pointer 只负责加速。索引位于
396+
`<active-root>/.runtime-state/derived-indexes/v1/`;损坏、陈旧、锁竞争或出现未登记
397+
报告时自动回退现有 parser/path-stat 路径,查询本身不写文件。
398+
399+
- 现有 `memory_status`、`memory_summary_query`、`memory_session_query` 名称、输入、
400+
排序与字段不变,只增加 `indexReceipt/coverage`;受管 memory writer 成功后刷新
401+
current/month/day byte-range 分区。
402+
- `status/doctor` 优先读取 compact runtime-state current projection;显式
403+
`check-runtime-state --write-index` 继续保留 legacy
404+
`.runtime-state/runtime-state-index.json`,并同时提交新分区。
405+
- 报告工作流默认只查询 allowlisted roots 下的 `primary-report` metadata;evidence、
406+
artifact、generated copy 和 unknown 默认排除,正文只在选定 pointer 后有界读取。
407+
- `npm run benchmark:runtime-indexes -- --root <active-root>` 使用 3 个独立进程、
408+
每项 5 次预热和 30 次测量。当前真实快照 W1/W3/W4 总读取量分别减少
409+
91.45% / 90.76% / 98.98%,W2 精确 session 减少 76.32%,公共投影零差异;
410+
token telemetry 不可见,因此这些结果只声明 bytes/latency 收益,不冒充 token
411+
实测。
412+
391413
## 项目侧执行链性能与稳定回滚(v1.15.3)
392414

393415
当前源码把 task index、Context computation reuse、changed-scope validation、Profile section、Skill bundle 与 ProjectKnowledge snapshot 统一纳入 `ExecutionOptimizationStateV2`。派生索引/cache/snapshot 只负责加速,损坏、过期或关闭时不会成为第二真相源。

‎changelogs/unreleased.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
66
## 当前未发布实现候选
77

8+
- **运行态产物分层存储与索引**:新增内容寻址 partition / immutable manifest / 原子 pointer 公共契约,以及 memory、runtime-state、report 三个 domain adapter;旧 Markdown/files 与 reader 保持,stale/corrupt 自动回退且 query 零写入。memory 10 Tools 不变,仅 additive `indexReceipt/coverage`;status/doctor 使用 compact projection;report 只扫描 allowlisted roots、默认 primary metadata 并按 pointer lazy hydrate。真实 3 进程 ×(5 warmup + 30 measurement)benchmark 的 W1/W3/W4 总读取量减少 91.45% / 90.76% / 98.98%,W2 减少 76.32%,公共投影 mismatch=0;token telemetry 不可见,结论仅声明 bytes/latency。
89
- **Workflow completion Shadow**:新增唯一 completion reducer、九类 owner receipt adapter、受管且原子回读的 task input、bounded derived state、两阶段 report/memory commit sidecar、memory read-time digest 复验、stable task selector、risk ledger、`task verify/risk` 与 `status/doctor/trace --completion`;四类生产假绿和反向身份均 fail closed。
910
- **规范吸纳结构化执行与防复现闭环**:新增 `AbsorptionCandidateMatrixV1`、`LayeredAbsorptionDecisionV1`、read-only `plan-absorption-candidates` planner 与包分发清单;`spec-absorption`、V96、residual-absorption 和 repair-prevention 测试覆盖 ownerless / consumerless / validationRoute 缺失负例,防止项目独有建议、未绑定消费者建议或只写文档的半吸纳再次进入 ready。
1011
- **需求/技术方案候选审查内化**:新增 `CandidateReviewBundleV1`、`RequiredCandidateEvidenceGate` 与 `test:candidate-review-bundle`,要求 CP1 候选暴露 `RQMatrix / DomainRealityMatrix / ClaimEvidenceMatrix / EscapeAbsorptionQueue`,CP2 候选暴露 `TDMatrix / BlockerSnapshot / ClaimEvidenceMatrix`;同步 CP gate、plan-review、复审清单、报告与 validation manifest,防止缺矩阵、陈旧证据、软确认绕过和 open blocker。

‎index.js‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ const CLAUDE_SOURCES = [
7575
*/
7676
const CLAUDE_MCP_RUNTIME_SCRIPT_DEPS = Object.freeze([
7777
'scripts/lib/cp-digest.js',
78-
'scripts/lib/host-parity-scorecard.js'
78+
'scripts/lib/host-parity-scorecard.js',
79+
'scripts/lib/derived-index-contract.js',
80+
'scripts/lib/memory-index.js'
7981
])
8082

8183
const CODEX_SOURCES = [

‎instructions/15-memory.instructions.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ version: 1.15.3
5151

5252
记忆读取必须进入当前 `ContextReadPlanV2`(兼容 `ContextReadPlanV1`),并通过 `MemoryContextQueryGate` 执行有界查询;“文件是真相源”不等于“先读完整文件”。
5353

54+
现有 memory MCP query 可在 source metadata 和 pointer/manifest 校验通过时读取
55+
`<active-root>/.runtime-state/derived-indexes/v1/memory/**` 的派生分区。canonical
56+
daily/SUMMARY 仍是唯一真相源:受管 writer 在文件提交后刷新索引;索引缺失、
57+
陈旧、损坏或锁竞争时回退既有 parser;query/fallback 均零写入。允许 additive
58+
`indexReceipt/coverage`,不得改变旧字段、排序和错误语义;byte-range 或截断结果
59+
不得升级为完整正文已验证。
60+
5461
| 场景 | 读取范围 | 执行顺序 |
5562
|------|---------|---------|
5663
| **命名续接 · 首步** | 完整消息为 `继续<任务名>任务` / `继续 <任务名>` 时调用 `memory_task_resolve(name, project?)`;只返回有界 identity/session/CP metadata | 先于通用 resume 查询 |

0 commit comments

Comments
 (0)