@furongjun1999/dsh-memory 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +572 -465
- package/docs/README.md +1 -0
- package/docs/eval/DSH/346/227/245/345/277/227/347/264/242/345/274/225v2_/345/217/202/350/200/203dsh-TUI_v1.0.md +248 -0
- package/docs/eval/DSH/346/227/245/345/277/227/347/264/242/345/274/225/346/225/210/346/236/234/351/252/214/350/257/201_v1.0.md +209 -0
- package/docs/eval/DSH/347/253/257/347/274/272/351/231/267/344/270/223/351/241/271_v1.0.md +254 -0
- package/docs/eval/P1b2_/350/257/273/351/235/242/344/273/243/351/231/205/344/277/256/345/244/215_v1.0.md +124 -0
- package/docs/eval/bench_lingshu_self/bench_self.py +140 -0
- package/docs/eval/bench_lingshu_self/self_bench_result.json +404 -0
- package/docs/eval/bench_lingshu_self//347/201/265/346/236/242/350/207/252/345/272/223/347/253/257/345/210/260/347/253/257/346/243/200/347/264/242/345/256/236/346/265/213_v1.0.md +38 -0
- package/docs/eval//344/270/215/345/217/257/351/235/240/346/200/247/350/220/275/345/234/260_P0_v1.0.md +185 -0
- package/docs/eval//345/217/221/345/270/20306_/344/270/200/351/224/256/351/205/215/347/275/256/344/270/216DSH0172_v1.0.md +171 -0
- package/docs/eval//346/225/205/351/232/234/346/263/250/345/205/245/345/256/236/346/265/213_v1.0.md +422 -0
- package/docs/eval//347/253/257/345/210/260/347/253/257LoCoMoQA/345/220/214/345/217/243/345/276/204/345/257/271/347/205/247_v1.0.md +100 -0
- package/docs/eval//347/253/257/345/210/260/347/253/257/345/271/262/346/211/260/346/261/240/350/257/204/346/265/213_/347/241/256/345/256/232/346/200/247/350/243/201/345/206/263vsLLM_judge_v1.1.md +197 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v1.md +156 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v10.md +210 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v11.md +227 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v12.md +203 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v13.md +233 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v14.md +191 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v15.md +213 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v16.md +214 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v17.md +199 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v18.md +183 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v19.md +207 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v2.md +156 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v3.md +152 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v4.md +128 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v5.md +114 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v6.md +192 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v7.md +187 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v8.md +207 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v9.md +203 -0
- package/docs/hive//345/256/211/345/205/250/345/256/241/350/256/241/345/256/236/351/224/232_v0.1.md +202 -0
- package/docs/hive//350/234/202/345/267/242/345/217/214/345/256/236/344/276/213/344/272/222/351/252/214_/350/256/276/350/256/241/345/256/232/347/250/277.md +19 -3
- package/docs/images/lingshu-moonlight-covenant-poster-preview.jpg +0 -0
- package/docs/images/lingshu-moonlight-covenant-poster.png +0 -0
- package/docs/mdcg//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +40 -40
- package/docs/theory//344/270/215/345/217/257/351/235/240/345/256/232/347/220/206/344/270/216/345/244/261/346/225/210/344/274/230/345/205/210/346/241/206/346/236/266_v0.3.md +365 -0
- package/docs//344/270/215/345/217/257/351/235/240/346/200/247/347/220/206/350/256/272_v0.1.md +343 -0
- package/dsh/cordis-patch-profile-web.example.yml +35 -0
- package/lib/bridge.d.ts +9 -0
- package/lib/bridge.js +35 -0
- package/lib/cli.d.ts +3 -0
- package/lib/cli.js +66 -0
- package/lib/index.js +7 -1
- package/lib/init.d.ts +88 -0
- package/lib/init.js +287 -0
- package/lib/lib/roleplay_web.js +530 -443
- package/lib/lib/token_store.d.ts +7 -1
- package/lib/lib/token_store.js +12 -3
- package/md_cg/audit.py +12 -1
- package/md_cg/backfill.py +16 -15
- package/md_cg/backfill_bucket_zh.py +35 -0
- package/md_cg/bench_e2e_judge.py +532 -0
- package/md_cg/bench_e2e_locomo_qa.py +368 -0
- package/md_cg/bench_e2e_qa.py +256 -0
- package/md_cg/branches.py +18 -2
- package/md_cg/ccgc.py +3 -2
- package/md_cg/chain.py +19 -4
- package/md_cg/consolidate.py +7 -6
- package/md_cg/crosscheck.py +4 -3
- package/md_cg/crypto.py +439 -437
- package/md_cg/datapath.py +395 -335
- package/md_cg/evidence.py +8 -3
- package/md_cg/export.py +3 -1
- package/md_cg/forgetting.py +2 -2
- package/md_cg/fsutil.py +48 -0
- package/md_cg/hotcache.py +255 -238
- package/md_cg/interop.py +161 -22
- package/md_cg/judgment_manifest.py +177 -0
- package/md_cg/links.py +655 -622
- package/md_cg/mcp_server.py +282 -31
- package/md_cg/mdcg.py +702 -126
- package/md_cg/mdcos.py +454 -68
- package/md_cg/mreview/govern.py +5 -4
- package/md_cg/postings.py +4 -2
- package/md_cg/readcache.py +76 -18
- package/md_cg/reconcile.py +228 -0
- package/md_cg/review_cli.py +215 -0
- package/md_cg/routing.py +28 -0
- package/md_cg/run_tests.py +211 -0
- package/md_cg/scrub.py +862 -852
- package/md_cg/security.py +385 -275
- package/md_cg/selfreport.py +3 -2
- package/md_cg/signer.py +565 -562
- package/md_cg/sources.py +3 -2
- package/md_cg/stg.py +6 -0
- package/md_cg/sustain.py +1168 -1138
- package/md_cg/test_access_hints.py +147 -0
- package/md_cg/test_branch_discard_tombstone.py +136 -0
- package/md_cg/test_branches.py +259 -249
- package/md_cg/test_chain_read_isolate.py +168 -0
- package/md_cg/test_datapath_device_name.py +203 -0
- package/md_cg/test_emit_negtail_cache.py +156 -0
- package/md_cg/test_en_pipeline.py +186 -166
- package/md_cg/test_govern_directread.py +421 -0
- package/md_cg/test_i32_hotcache_env_key.py +218 -0
- package/md_cg/test_identity_attribution.py +228 -147
- package/md_cg/test_index_crossprocess_reload.py +301 -0
- package/md_cg/test_index_durability.py +238 -224
- package/md_cg/test_interop.py +4 -2
- package/md_cg/test_interop_judgment.py +228 -0
- package/md_cg/test_issue39_utf8_stdio.py +273 -0
- package/md_cg/test_links_concurrent_write.py +188 -0
- package/md_cg/test_merge_upsert.py +168 -0
- package/md_cg/test_n123_derive_expiry_chain.py +205 -0
- package/md_cg/test_n130_verify_falsified_protect.py +185 -0
- package/md_cg/test_n131_merge_gate.py +205 -0
- package/md_cg/test_none_id_write_guard.py +165 -0
- package/md_cg/test_p1x_ref_root.py +160 -0
- package/md_cg/test_p27_docindex.py +774 -765
- package/md_cg/test_p2_mcp.py +3 -0
- package/md_cg/test_p32_backfill.py +304 -298
- package/md_cg/test_p39_verify_flow.py +90 -50
- package/md_cg/test_p47_session_view.py +60 -25
- package/md_cg/test_propose_tail_index.py +157 -0
- package/md_cg/test_read_scope_b27.py +277 -0
- package/md_cg/test_readcache_default_on.py +168 -0
- package/md_cg/test_readcache_precise_inval.py +270 -0
- package/md_cg/test_readcache_prodpath.py +55 -7
- package/md_cg/test_reconcile_v0.py +294 -0
- package/md_cg/test_retr_s1.py +6 -2
- package/md_cg/test_retr_s1b.py +67 -0
- package/md_cg/test_retr_s7.py +8 -0
- package/md_cg/test_retr_s9_entity_ctx.py +181 -175
- package/md_cg/test_retr_score_once.py +208 -0
- package/md_cg/test_review_cli_attribution.py +177 -0
- package/md_cg/test_review_cli_visibility.py +235 -0
- package/md_cg/test_review_onepass.py +170 -0
- package/md_cg/test_rrf_graph_seed_cache.py +154 -0
- package/md_cg/test_security_audit.py +155 -0
- package/md_cg/test_security_audit_b26.py +161 -0
- package/md_cg/test_security_audit_v21.py +250 -0
- package/md_cg/test_semantic_canonical.py +255 -241
- package/md_cg/test_session_isolation.py +168 -0
- package/md_cg/test_snapshot_autoclose.py +187 -0
- package/md_cg/test_tail_watermark_race.py +208 -0
- package/md_cg/test_tenant_env_override_warn.py +139 -0
- package/md_cg/test_tenant_registry_corrupt_warn.py +151 -0
- package/md_cg/test_v14_fixes.py +415 -397
- package/md_cg/test_verify_dirty_reconcile.py +157 -0
- package/md_cg/theory.py +276 -273
- package/md_cg/tokens.py +734 -677
- package/md_cg/units.py +3 -2
- package/md_cg/vision_evidence.py +4 -3
- package/md_cg/whitebox_kb/wisdom/code_solidified.json +6195 -6195
- package/md_cg/whitebox_kb/wisdom/multilang_ir.py +128 -124
- package/md_cg/writepipe.py +554 -550
- package/package.json +11 -2
- package/src/bridge.ts +434 -401
- package/src/cli.ts +65 -0
- package/src/index.ts +526 -518
- package/src/init.ts +347 -0
- package/src/lib/roleplay_web.ts +1019 -932
- package/src/lib/token_store.ts +202 -192
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# 缺陷挖掘报告 · 自主迭代 v14(性能二轮)
|
|
2
|
+
|
|
3
|
+
- **日期**:2026-09-25
|
|
4
|
+
- **范围**(生效条件):第 14 轮 = 性能二轮,三区复核(swarm-wal / mdcg-retr / runtime-new)共 **13 条目**(confirmed 13 / rejected 0——三区 rejected 均为空;confirmed 内含 1 条「证伪结论复核成立」项,如实归入第三节证伪小节单列)→ 无跨区重复,独立缺陷 **13 项**(本轮新发现 3 项 **N120-N122**:high 1 / low 2;legacy 复测 10 项:v7 N51 / N52 / N57 / N58 / N59、v7 N57 内存面细分〔无独立编号〕、v9 留档两项〔v7 负层残余① `_emit` 尾部 / v7 N50 残腿 get 种子〕、v12 N109、v12 原子化证伪确认项)→ 本轮修复 **5 个补丁**(1 high + 4 low),全闭 5 项 → 遗留 **8 个开口**(留档 7:medium 2 / low 5 + 证伪结案 1)
|
|
5
|
+
- **编号口径**:本轮新发现沿历轮 N 口径续编 **N120-N122**(v13 用至 N119,v13.md:4 编号口径行核实);材料 confirmed 的 origin=new 条目未携带编号,由本报告会话统一续编并在第三节逐项标注。legacy 项沿用原轮次号——本报告会话经 grep 核实:v7.md:88(N51)/ :89(N52)/ :104(N57)/ :105(N58)/ :106(N59)、v9.md:91(v7 负层残余① `_emit` 尾部裸 open ×3)/ :92(v7 N50 残腿 get 种子裸 open)、v12.md:89(N109)。
|
|
6
|
+
- **回归**:`python -X utf8 scripts/run_tests.py --jobs 4` 全量——**本会话实跑 `194/194 通过、5 跳过(依赖缺失/平台不符)`,真实退出码 0**(与材料门禁口径逐字一致);**swarm cargo test 未运行**(Rust 面零改动——本会话 `git status` 证实 swarm/ 与 rust/ 无改动,与材料口径一致);**npm test 未运行**(TS 面零改动——git status 证实 src/ 与 TS 测试未动);**npm run gate 失败**——**本会话第一手复现**:exit 1,`[FAIL] R4 非追踪件面 命中=4;非追踪=28,允许=24`(4 份新守卫 md_cg/test_*.py 未 git add;R4 规则=包内非追踪件仅允许 lib/ 前缀,scripts/check_publish_artifact.py:45/:431-435),链路停于 check_publish_artifact——与材料口径一致(untracked 时序性,编排会话提交守卫后复跑裁决,见第四节)。
|
|
7
|
+
- **行号口径**:材料缺陷行号为缺陷时点(修复前)快照行号;本轮 md_cg/mdcg.py、md_cg/mdcos.py、md_cg/readcache.py、hive/hive_mcp/mcp_server.py 四文件修复使行号漂移(mdcg.py +76/-11、mdcos.py +60/-15、readcache.py +48/-14、mcp_server.py +48/-7,本会话 git numstat 核实),材料口径 where 与本会话读核现行行号并列注明、以现行读核为准(第二节逐项双标);swarm/rust_runtime/src/swarm.rs 本轮零改动,其行号材料口径 = 现行。
|
|
8
|
+
- **结构口径**(CCG 六要素):功能名(标题)/ 生效条件(范围与口径行)/ 子功能(第二~五节)/ 执行与验证方式(第四节:实跑命令与结果)/ 不适用条件(第七节:跳过与未运行项)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 一、执行摘要
|
|
13
|
+
|
|
14
|
+
本轮为性能二轮:三区复核 13 条目全部 confirmed(rejected 0;其中 1 条为 v12 原子化「担心性能回退」的证伪复核成立项,非缺陷,结案),13 独立缺陷,5 补丁全闭 5 项,留档 8 开口。四个主题:
|
|
15
|
+
|
|
16
|
+
1. **读缓存失效粒度从整池代际到脏集精确(1 修 high,本轮唯一 high)**:新发现 N120——readcache 命中哨兵取全局单调 write_gen(整池共用一个代际值),任意一次单节点写使**全部**缓存条目同时 miss,下一条查询全池重装(open+parse 全部 N 个节点):10k 池写读交替实测 41.9× 退化(1732.4ms vs 稳态 41.3ms)、线性于 N(10k/20k/30k → 1732/3515/5230ms),生产暴露面经读码核实(mcp_server 读 op=read 与写 op=write 同一常驻实例)——F1 以 `_DirtyDict` 脏集簿记(path_gen 精确 + broad_gen 兜底)把失效粒度细化到 path,写谁失效谁:10k 写读交替 **35.8×**(1677.6→46.6ms,loads 10002→1)、生产写提交边界形态 **37.3×**、30k 规模 **23.8×**(5229.8→219.6ms),稳态不变(43.7→44-73ms 噪声内)。
|
|
17
|
+
2. **轮询与检索重复劳动四项历轮留档清账(4 修 low,全为「每次重复付费」形态)**:v7 N58(orch._poll 每次轮询全量重读+重解析 status.json 与 result.json 全文,8 子任务/210KB 实测 2.67ms/轮、随产物大小与轮询次数双线性)F2 以 (mtime_ns,size) 签名解析缓存短路——三档产物(50K/200K/800K content)修后均 ~0.37ms 恒定(2.3×/6.3×/25.5×),与产物大小解耦;v7 N51(T2/T3 打分截断后又对 picked 重打,500/1100≈45% 冗余)F3 照基类 P2-4 模板补 scored 透传——T3/T2 打分文档量 1100→600(**-45%**),并同修基类 reach 分支两处形态错误(MDCG_REACH=1 原生 KeyError: 1,stash 取证);v9 留档 get 种子腿(search_rrf 图路 ≤5 种子经 MdCG.get 裸 open,每查询固定 ≤5 次盘读)F4 改走 `self._read` 并入读缓存——Q2 增量 5→0;v9 留档 `_emit` 尾部(covered_neg[:3] 裸 open,每查询恒 ≤3 次盘读)F5 同款改走 `self._read`——Q2 增量 3→0,且顺带收紧 P2-20 边界闸(裸拼路径是绕闸面)。
|
|
18
|
+
3. **swarm-wal Rust 域复核:两项 medium 留档 + 一项证伪结案(如实记录)**:v7 N57(恢复链同一行解析 2 次+HMAC 验签 3 次、无截断/压缩,重启成本随累计事件数线性无界——本轮实测 50k 行 replay 662.50ms、斜率 13.25µs/行严格线性、pass2 重复劳动 ≈42%、常驻 2.08× 文件/峰值 3.08×)与 v12 N109(幂等重入 watermarks/gossip/health 三审计面归零——ACK 行 payload 自带 {round,seq} 即重建信息源却未消费)确认在位,均因「重放结构重构类、收益 ~2× 非数量级 / 风险高」留档;kept_lines 内存面(一行 drop 改动)与 v7 N59(BufWriter,端到端 <5%)留档为下轮优先候选;**v12 原子化(tmp+fsync+rename)与 corrupt 归档的性能回退疑虑经同进程 A/B 复测证伪成立**(新路径 254.37ms vs 旧 258.51ms,-1.6% 噪声内;归档为 rename 元数据操作与体积无关)——结案。
|
|
19
|
+
4. **新性能面留档(3 项 low)**:N121(生产检索稳态仍是 O(全池) 逐节点遍历打分——读缓存只除 IO 未除 CPU 扫描,30k 稳态 209.7ms、30k/10k 耗时 5.1×;S1 门控/S7 倒排候选层默认关且 S7 仅接基类,候选集来源改变属检索语义面改动)、v7 N52 复测在位(S7 stat 税 201 次/查询、4.56ms/200 目录)、N122(第 11 轮验证终裁 compile() 每次全量重编含 ~159 行恒定 `_ProtocolRuntime` 前导的产物,占小程序编译总耗时 79-96%,A/B 三重证实)。
|
|
20
|
+
|
|
21
|
+
**对输入口径的核验**:输入称「三区 confirmed 13(swarm-wal 5 + mdcg-retr 6 + runtime-new 2)、rejected 0 → 5 修复 → 留档未修 8 条」。本会话以 `git status --porcelain` / `git diff --numstat` + 五处落点读核核对:改动面 = **四个修复源文件**(md_cg/mdcg.py +76/-11〔F1+F3 相邻+ F5〕、md_cg/readcache.py +48/-14〔F1〕、hive/hive_mcp/mcp_server.py +48/-7〔F2〕、md_cg/mdcos.py +60/-15〔F3+F4〕)+ **五份新守卫**(md_cg/test_readcache_precise_inval.py、hive/test_orch_poll_cache.py、md_cg/test_retr_score_once.py、md_cg/test_rrf_graph_seed_cache.py、md_cg/test_emit_negtail_cache.py,均未跟踪新文件)——与五项修复一一对应;另 `md_cg/whitebox_kb/wisdom/code_solidified.json`(+1/-2)为 v10-v13 报告已注明的先前会话遗留工作区变更,非本轮触点。三区无跨区重复(每条目对象互异),13 条目 = 13 独立缺陷;5 补丁全闭 5 项,13 − 5 = 8 开口,与材料留档 8 条逐条对应、无多无少(其中 1 条为证伪结案非待修缺陷)。
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 二、修复清单(5 项,逐项 where / 问题 / 修复 / 前后基准 / 守卫)
|
|
26
|
+
|
|
27
|
+
### F1(N120,high)读缓存脏集精确失效:单节点写不再整池重装
|
|
28
|
+
|
|
29
|
+
- **where**:材料口径 `md_cg/readcache.py:70-76`(`_cached` 代际相等校验)+ `md_cg/mdcg.py:817-820`(`_DirtyDict._bump`);现行(本会话读核)——`md_cg/mdcg.py:801-900`(`_DirtyDict`::836-837 `path_gen`/`broad_gen` 簿记、:842-848 `_note`、:860-877 `clear(broad)` 双语义,:814-830 第 14 轮注释块)· `md_cg/mdcg.py:1226-1231`(rebuild_index 收尾 `clear(broad=True)`)· `md_cg/readcache.py:80-100`(`_fresh` 按 path 判新鲜)、:102-110(`_cached`)、:119-130(`_cached_nb` 派生物同款);守卫落新增 `md_cg/test_readcache_precise_inval.py`(23 断言)。
|
|
30
|
+
- **问题**:本轮新发现 N120(high)——读缓存代际哨兵整池失效:`_cached` 命中条件为 `hit[0]==gen`(整池共用一个全局 write_gen),`_DirtyDict` 每次变更 write_gen+1 → **任意一次单节点写使全部缓存条目同时 miss**,下一条查询全池重装(open+parse 全部 N 个节点)——写读交替负载 O(每写×全池)。复核实测(10k 节点临时库、串行、nodefile.loads 模块级计数):稳态 loads=0/41.3ms → 每 rep add 1 节点后同查询 loads=10001+/耗时 3rep 中位 1732.4ms(41.9× 退化)→ 复稳 loads=0;规模扩展 10k/20k/30k 写后首查 1732.4/3514.5/5229.8ms(30k/10k=3.02×,线性于 N)。生产暴露面读码核实:mcp_server.py 读路径 op=read→cg.recall/cg.search 与写路径 op=write→default_pipeline().execute→writepipe cg.add 同一常驻实例。
|
|
31
|
+
- **修复**:① `_DirtyDict.__setitem__` 标脏时若值为带非空 path 的 entry(所有节点文件写路径统一收口——add/_stage/_sync_index/_sync_edge_entry/mdcos merge 等)记 `path_gen[path]=write_gen`;tombstone(None)/无 path 可辨值及 delitem/pop/popitem/setdefault/update 记 `broad_gen`(保守整池失效,与旧整代际口径等价)。② readcache 命中条件改为「`path_gen.get(p,0) ≤ 缓存时 write_gen` 且 `broad_gen ≤ 缓存时 write_gen`」——写谁失效谁,其余条目原对象复用;非 _DirtyDict 形态回落旧整代际相等校验(防御不变)。③ `clear()` 双语义:flush 收尾(缺省)只推进 write_gen 不失效——生产写路径每次写后 `writepipe._commit_visibility→flush`,clear 若整池失效会使精确失效在生产恒不生效;rebuild_index 收尾 `clear(broad=True)` 推进 broad_gen 整池兜底——ccgc/crosscheck/backfill 等「直写文件+rebuild 收尾」写方不经 _dirty 标脏,靠它对读缓存可见(此为全量套件首轮跑出的 7 测试回归之根因,修复会话经 stash 实验归因后修复并入守卫 G8/G6h)。write_gen 单调语义与既有 P7b 口径不变。
|
|
32
|
+
- **前后基准**(测量条件:10k 节点临时库〔tempfile.mkdtemp,测毕清理〕,MdCGOS 默认读缓存态,**串行每段 3rep 取中位**,nodefile.loads 模块级计数,命令 `python <临时脚本> 10000`、仓库根 cwd、脚本已删——修复前后同脚本同条件各跑一遍):【wr 写读交替】修复前 1677.6ms/loads=10002(全池重装)→ 修复后 46.6ms/loads=1(只重装被写节点)=**35.8×**;【wr_flush 生产写提交边界(add+flush)】1713.6ms/loads=10005 → 46.9ms/loads=1 =**37.3×**;【steady 热缓存稳态】43.7ms/loads=0 → 45.3-69.1ms/loads=0(稳态不变、噪声内);【resteady】46.3→46.2ms/loads=0。30k 规模复测(修复后):steady 212.0ms、wr 219.6ms/loads=1(复核口径修复前 5229.8ms → **23.8×**,与预期 ~25× 吻合)——线性于 N 的整池重装开销消除,写后首查回稳态量级。
|
|
33
|
+
- **守卫**:`md_cg/test_readcache_precise_inval.py`(调用计数/复杂度断言形态,40 节点临时库):G1 add 1 节点后同查询 loads≤2(旧 loads=41 全池 → 红);G2 add+flush 后 loads≤2(旧 loads=43 → 红);G4 邻居条目 identity 不变;G7 派生物缓存旧条目零重算;G6a-h `_DirtyDict` 簿记直断(path_gen/broad_gen/clear 双语义/write_gen 单调);G3 覆写后不陈旧、G5 删除保守整池失效、G8 直写+rebuild 收尾写方缓存可见性(回归锁定)。材料红证:旧代码 PASS 10/FAIL 5,修复后 23/0。**本会话实跑:`python -X utf8 -m md_cg.test_readcache_precise_inval` → 「结果:PASS 23 / FAIL 0」EXIT=0**。
|
|
34
|
+
- **verified_by(材料口径,本会话未重跑的细项如实标注)**:① 守卫红→绿(上游会话实跑);② 基准(串行 3rep 中位、修复前后同脚本同条件、10k 另加最终形态复跑与 30k 规模复跑、临时脚本已删);③ 全量套件 `python scripts/run_tests.py --jobs 4` → 190/190(含 7 个中途回归测试:test_ccgc 84/0、test_p32_backfill 59/0、test_p33 58/0、test_p34 51/0、test_p35 47/0、test_p36 34/0、test_p37 42/0 与读缓存三件套 12/10/18——回归归因经 stash 实验);④ 工程守卫 cogmap_sync check / workspace_index --check 通过。**未做项(材料如实声明)**:scrub._apply_offset / forgetting.reinforce / compact_access 三处写盘不标 _dirty 的既有陈旧缺口在新旧两口径下行为等价(都不失效),未动、建议另行留档(见第五节附加观察)。
|
|
35
|
+
|
|
36
|
+
### F2(v7 N58,low)orch._poll 解析缓存短路:轮询不再随产物大小线性付费
|
|
37
|
+
|
|
38
|
+
- **where**:材料口径缺陷位于 `hive/orch.py:464`(cards 逐子任务)→ `hive/hive_mcp/mcp_server.py:248/:260`(_read_status/_result_view 全量 json.load);修复落点(本会话读核现行)`hive/hive_mcp/mcp_server.py:243-255`(`_PARSE_CACHE` 模块级 + 上限 256)、:259-274(`_cached_json` (mtime_ns,size) 签名短路)、:278-284(`_read_status` 命中返回浅拷贝)、:287-290(`_load_json_file` 原语)、:294-315(`_result_view` 浅拷贝上派生截断/挂键)——orch._poll→_card(orch.py:335/:348,本会话读核在位)与 MCP 面 _t_poll 共用同一真源两读函数,修复落在真源层;守卫落新增 `hive/test_orch_poll_cache.py`(12 断言)。
|
|
39
|
+
- **问题**:v7 留档 N58(v7.md:105)七轮未修——每次轮询对全部子任务全量重读+json.load status.json 与 result.json 全文(含 content/tool_trace 全量解析后仅截 200 字卡片头),无 mtime/size 短路。复核实测(8 子任务=DEFAULT_MAX_SUBTASKS 上限、result.json 210KB、串行 7rep 中位):_poll({}) 2.67ms/次(每子任务 0.33ms,全量重解析 ~1.68MB JSON);对照仅 os.stat 16 个未变更文件 0.233ms,比值 11.5×;线性放大证实:content 50K/200K/800K → 0.98/2.67/10.13ms,随产物大小近似线性、随轮询次数线性累积。severity=low 合理:绝对量 ms 级,但 poll 为编排等待循环的重复动作。
|
|
40
|
+
- **修复**:新增模块级解析缓存(path → (st_mtime_ns, st_size, parsed),有界 256 条超限整体清空防长驻累积):stat 签名未变 → 复用已解析值零重读;变更(worker 重写 status/result 必产生新 mtime,含同字节数改写)/删除(stat 失败摘除缓存项走原读路径)按签名失配重解析;解析异常不缓存、原样外抛。`_read_status` 命中时返回浅拷贝(_t_poll 会往 st 上挂 result,不污染缓存);`_result_view` 在解析值浅拷贝上做截断/挂键派生(缓存基底不被破坏;非 dict 病态 result.json 不拷贝,后续 r.get 抛 AttributeError 与旧口径同形)。输出/卡片字段逐位不变(守卫 C0b/C5/C6/C7 与既有 test_orch/smoke_test 验证)。
|
|
41
|
+
- **前后基准**(测量条件:8 子任务 × status.json+result.json 临时库,**串行 7rep 取中位**,预热后测 _poll({}),临时脚本测完已删,与缺陷报告同口径):【50K content】0.857ms → 0.370ms(**2.3×**);【200K/195KB——缺陷报告 210KB 档】2.351ms(复核口径 2.67ms) → 0.374ms(**6.3×**);【800K/781KB】9.573ms → 0.376ms(**25.5×**)。修复前随产物大小线性(0.86/2.35/9.57ms,复现复核口径 0.98/2.67/10.13ms);修复后三档均 ~0.37ms 恒定(与产物大小解耦,贴近 stat-only 下界 0.23ms)——未变更轮询重解析量归零(守卫实测 opens 12→0),随轮询次数的线性累积消除。
|
|
42
|
+
- **守卫**:`hive/test_orch_poll_cache.py`(调用计数/复杂度断言,6 子任务临时库,builtins.open 打桩只计 status/result 读):C0 冷启全量读 opens==2N+卡片字段正确;C1 未变更连续 3 次轮询 opens==0(旧每轮 2N → 红);C2 同字节数改写(只动 mtime)被识别且仅该文件重解析 opens≤2(旧整轮 2N → 红);C3 running→done 状态迁移即时可见;C4 删 result.json 不复活陈旧缓存;C5 full=True 全文与盘面逐位一致;C6 _read_status 每次返回独立 dict;C7 截断派生不破坏缓存基底/不存在任务返回 None。材料红证:旧代码 PASS 9/FAIL 3(C1a/C2b/C3b)、修复后 12/12 全绿(期间抓出守卫自证 BUG:首版签名比较 `hit[0]==sig` 为 int==tuple 恒 False,守卫红后定位修正)。**本会话实跑:`python -X utf8 -m hive.test_orch_poll_cache` → 「结果:PASS 12 / FAIL 0」EXIT=0**。
|
|
43
|
+
- **verified_by(材料口径)**:① 守卫红→绿;② 基准(三档产物、串行 7rep 中位、修复前后同脚本同条件);③ 既有测试 `run_tests.py hive --jobs 4` → 12/12、真实 serve 环路 `python -m hive.hive_mcp.smoke_test` → 21 pass/0 fail(spawn/poll 走真实改后读函数)、全量 191/191(时点值,最终形态见第四节 194/194);未提交 git(按纪律)。
|
|
44
|
+
|
|
45
|
+
### F3(v7 N51,low)try_stage 补 scored 透传:T2/T3 不再打分截断后重打
|
|
46
|
+
|
|
47
|
+
- **where**:材料口径 `md_cg/mdcos.py:800-807`(try_stage 无 scored 形参)+ `:887`(T3 对 picked 重打);现行(本会话读核)——`md_cg/mdcos.py:800-813`(try_stage 补 scored=None 形参,P2-4 回移注释)、:815-829(`_prescored` 按 node_id 键表回填 (card,score) 原对)、:869-877(reach 腿透传)、:898-905(T2 hits 腿透传)、:911-921(T3 picked 腿不再重打);相邻同源修复 `md_cg/mdcg.py:2588-2601`(基类 reach 分支 `_smap` 形态修正,注释标「MDCG_REACH=1 实测 KeyError: 1 崩,stash 取证 HEAD 原生在位」);守卫落新增 `md_cg/test_retr_score_once.py`(20 断言)。
|
|
48
|
+
- **问题**:v7 留档 N51(v7.md:88)七轮未修——生产 MdCGOS.search 的 try_stage 无 scored 形参:T2 先 _score(hits) 供截断、截断后 try_stage 又对 ≤500 条完整重算;T3 兜底 _score(docs_all)+_score(picked) 双跑(基类 try_stage 已有 scored 形参——mdcg.py P2-4 批次 31 先例——未回移生产覆写)。复核实测(600 节点临时库、无交集查询、串行、_score 计数包装):tier=T3_global_scan、_score 恰 4 调、per-call docs=[0,0,600,500]、共打分 1100 文档——与 v9.md:111 留档逐位一致,500/1100≈45% 打分工作量可省(GLOBAL_CAP=500)。
|
|
49
|
+
- **修复**:① 生产 try_stage 照基类 P2-4 模板补 scored=None 形参:T2 hits 腿、T3 picked 腿、reach hits_r 腿均把 cut_by_relevance 前算好的打分结果经 `_prescored` 透传;_score 单次 search 内纯函数(守卫 P1a 逐笔复算证明),透传不改任何分值与输出。② 相邻原生缺陷同修:基类 reach 分支旧 P2-4 模板对 scored 的 card dict 调 pooling.doc_key(形参须 (entry,fm,content) 三元组)且自组 (doc,score) 对(_emit 排序键 x[0]["frontmatter"] 崩)——MDCG_REACH=1 + 命中集非空即 KeyError: 1;修正为按 card["id"](≡doc_key(doc)[0])建 (card,score) 原对键表按 hits_r 序取回,生产 _prescored 同口径。
|
|
50
|
+
- **前后基准**(测量条件:600 节点临时库〔tempfile.mkdtemp,测毕清理〕、**串行 3rep**、_score 实例属性包装计数,与缺陷报告/v9.md:111 同口径,命令 `python <临时脚本>`、仓库根 cwd、脚本已删):【T3 无交集查询】修复前 _score 恰 4 调、per-call docs=[0,0,600,500]、共 1100 文档 → 修复后 2 调 [0,600]、共 600 文档(**-45%**,500 冗余文档归零;tier=T3_global_scan/scanned=600/results=20 均不变);【T2 有交集查询(额外发现同形)】修复前 2 调 [600,500]=1100 → 修复后 1 调 [600]=600(-45%,tier=T2_global_like 不变)。打分为检索主热点(批次 21 实测 _score 占 88% 面),每查询省 500 文档打分在万级池按 GLOBAL_CAP 同比。
|
|
51
|
+
- **守卫**:`md_cg/test_retr_score_once.py`(调用计数/复杂度断言,600 节点临时库):T3 段 _score 调用数==2、per-call==[0,600]、共 600(旧 4/[0,0,600,500]/1100 → 红);T2 段调用数==1、共 600(旧 2/1100 → 红);tier/scanned/结果规模不变;P1a 纯度(每笔 (docs→scored) 复算 _score 逐位相等——透传≡现算直接证据;期间抓出并修正守卫自身记录被 _emit 原地排序污染的问题);D1 确定性(同查询两轮 id 序与分值逐位一致);R 段 reach 腿(MDCG_REACH=1)生产/基类均不再 KeyError 且打分 ≤2 调。材料红证:旧代码缺陷项 10 红(T3×6+T2×4),修复后 20/20 全绿。**本会话实跑:`python -X utf8 -m md_cg.test_retr_score_once` → 「结果:PASS 20 / FAIL 0」EXIT=0**。
|
|
52
|
+
- **verified_by(材料口径)**:① 守卫红→绿;② 基准(600 节点/串行 3rep/修复前后同脚本同条件);③ 相邻缺陷取证:git stash mdcos.py 后 HEAD 上 MDCG_REACH=1 + MdCG.search('蜂群调度') 实测 KeyError: 1,修复后基类/生产 reach 腿均正常出结果(**本会话未重跑该 stash 复现**——多轮未提交改动不宜整体回退,以现行 :2588-2601 修复注释读核 + R 段守卫绿态替代佐证,如实标注);④ 既有测试:`run_tests.py -k retr` → 12/12、`-k reach` → 3/3、`-k p43` → 1/1、`test_p0` → 25/0、全量 192/192(时点值);cogmap_sync/workspace_index 守卫通过。
|
|
53
|
+
|
|
54
|
+
### F4(v9 留档 v7 N50 残腿,low)search_rrf 图路种子读并入读缓存:每查询固定 ≤5 次盘读归零
|
|
55
|
+
|
|
56
|
+
- **where**:材料口径 `md_cg/mdcos.py:979`(_path_graph 种子 self.get)+ `md_cg/mdcg.py:2134-2138`(get 裸 open);现行(本会话读核)——`md_cg/mdcos.py:1010-1026`(种子腿:by_id 命中时改走 `self._read(e_seed)`,不含时回落 `self.get(n["id"])` 保旧口径)、:1031(边目标读原 self._read 不动——同形对照);守卫落新增 `md_cg/test_rrf_graph_seed_cache.py`(7 断言)。
|
|
57
|
+
- **问题**:v9 留档复测在位(v9.md:92,复核材料标注 v9/v13 留档复测口径;v13.md 本身区域为 scripts/TS 未含该条,档位锚以 v9.md 为准——本会话 grep 核实)——种子读从 `self.get(n["id"])`(mdcg.py get 裸 open+nodefile.loads,不在 readcache.install 包装面——install 只包 cg._read),search_rrf 默认 paths 含 graph → 每查询固定 ≤5 次盘读(graph 零产出也在边循环前发生)。复核实测(40 带 tags/edges 节点临时库、串行):Q1 loads=45(词法 40+种子 5)、Q2 增量恰 5、MdCGOS.get 计数 Q1=5/Q2=5、两查询结果 ids 逐位一致——与 v9.md:92 留档一致,未修。
|
|
58
|
+
- **修复**:种子读改走 `self._read(by_id[n["id"]])`:①种子来自 lexical(entries/_candidates 派生,MdCGSecure._candidates 已过 _readable),绕过 get 的读隔离门无损失,图路扩展产物本由 MdCGSecure.search_rrf 终态二次过滤兜底;②种子只需 frontmatter 的 edges(content 不解封不用);③by_id 不含(fm.id≠文件名等形态外)回落 get,逐字保旧口径(冷路径正确性优先);④边目标读不动——同形对照。结果 ids/分值不变。
|
|
59
|
+
- **前后基准**(测量条件:40 带 tags/edges 节点临时库〔tempfile.mkdtemp,测毕清理〕、**串行 3rep**、nodefile.loads 模块级计数 + MdCGOS.get 实例计数,与 v9.md:92 留档同口径,命令 `python <临时脚本>`、仓库根 cwd、已删):【Q1 首查】修复前 loads=45(词法 40+种子 get 5)、get=5 → 修复后 loads=40、get=0(种子命中词法阶段已装好的缓存);【Q2 同查询】修复前增量恒 5、get=5、~1.2ms → 修复后增量 0、get=0、~0.5ms——默认配置(paths 含 graph)每查询固定 ≤5 次盘读归零,两查询结果 ids 逐位一致(修复前后均一致,不改输出)。
|
|
60
|
+
- **守卫**:`md_cg/test_rrf_graph_seed_cache.py`(调用计数断言,40+1 节点临时库含 tags/edges/幽灵目标):S1 热缓存后同查询 loads 增量==0(旧恒 5 → 红);S2 同查询 get 调用==0(旧恒 5 → 红);S3 图路功能在位(词法零命中的 ghost 节点经种子边一跳进入结果 + meta.paths 四路计数在位,防静默关路);S4 两轮 ids 逐位一致;S5 读缓存开/关(MDCG_READ_CACHE=1/0)同库同查询 ids 逐位一致。材料红证:旧代码红 2 项(S1a/S2a),修复后 7/7 全绿。**本会话实跑:`python -X utf8 -m md_cg.test_rrf_graph_seed_cache` → 「结果:PASS 7 / FAIL 0」EXIT=0**。
|
|
61
|
+
- **verified_by(材料口径)**:① 守卫红→绿;② 基准(40 节点/串行 3rep/修复前后同脚本同条件);③ 既有测试:`run_tests.py -k rrf` → 1/1、`test_i28_hotcache_prodpath` → 8 项全绿、`test_mdstore_search_parity` → 5/0、`test_interop` → 14 passed、全量 193/193(时点值);cogmap_sync/workspace_index 守卫通过。
|
|
62
|
+
|
|
63
|
+
### F5(v9 留档 v7 负层残余①,low)_emit 尾部负层条目读并入读缓存:每查询恒 ≤3 次盘读归零
|
|
64
|
+
|
|
65
|
+
- **where**:材料口径 `md_cg/mdcg.py:2917-2923`(covered_neg[:3] 裸 open+loads);现行(本会话读核)——`md_cg/mdcg.py:2976-2986`(尾部改走 `self._read(nc)`,:2978-2985 第 14 轮注释);守卫落新增 `md_cg/test_emit_negtail_cache.py`(7 断言)。
|
|
66
|
+
- **问题**:v9 留档复测在位(v9.md:91 残余①)——_emit 尾部「把被负记忆覆盖的查询也作为结果条目返回」对 covered_neg[:3] 直接 open+loads(不经 _read 不入读缓存),每条命中负层的查询恒 ≤3 次盘读。复核实测(60 knowledge+8 rejected 临时库、串行、loads 计数):Q1 loads=71(全池 60+负层扫描 8+尾部 3)、Q2 同查询增量恰 3、结果含 rejected/r0-r2 前 3 条、scanned=60、tier=T3_global_scan——与 v9.md 留档逐位一致,未修。
|
|
67
|
+
- **修复**:尾部逐条读改走 `self._read(nc)`:①install 只包 cg._read,裸读不在缓存包装面——改走 _read 后入读缓存,每查询恒 ≤3 次盘读归零;②_read 同款 `_node_disk_path` 边界闸(P2-20:索引被污染时不得绕过统一校验读 root 外文件——**旧裸拼路径是绕闸面,改后收紧**);③OSError→(None,None) 与旧 except OSError: continue 同义,ValueError 异常面两者同形(均外抛);④负层写路径(add/add_rejected→_stage 标脏带 path)在 F1 脏集精确失效面内——覆写负层节点后尾部条目即时见新内容(守卫 E5 验证)。结果 ids/meta 口径(covered_neg/tier/scanned/rejected 前 3 条)逐位不变。
|
|
68
|
+
- **前后基准**(测量条件:60 knowledge + 8 rejected 临时库〔tempfile.mkdtemp,测毕清理〕、**串行 3rep**、nodefile.loads 模块级计数,与 v9 留档同口径,命令 `python <临时脚本>`、仓库根 cwd、已删):【Q1 首查】修复前 loads=71(T3 全池 60+负层扫描 8+尾部 3)→ 修复后 68(尾部 3 条命中负层扫描已装缓存);【Q2 同查询】修复前增量恒 3、~0.9ms → 修复后增量 0、~0.75ms;【口径不变】tier=T3_global_scan、scanned=60、covered_neg=8、结果含 rejected/r0-r2 前 3 条、两轮 ids 逐位一致(修复前后均一致)。
|
|
69
|
+
- **守卫**:`md_cg/test_emit_negtail_cache.py`(调用计数断言,60+8 节点临时库,查询词仅存于 rejected 层):E1 热缓存后同查询 loads 增量==0(旧恒 3 → 红);E0/E2 首查口径复现与功能在位(covered_neg=8、tier=T3、scanned=60、rejected 前 3 条逐位在结果——非静默关路);E3 两轮 ids 逐位一致;E4 读缓存开/关同库同查询 ids 逐位一致;E5 覆写 r0 后尾部条目见新内容(脏集精确失效联动不陈旧)。材料红证:旧代码红 1 项(E1a),修复后 7/7 全绿。**本会话实跑:`python -X utf8 -m md_cg.test_emit_negtail_cache` → 「结果:PASS 7 / FAIL 0」EXIT=0**。
|
|
70
|
+
- **verified_by(材料口径)**:① 守卫红→绿;② 基准(60+8 节点/串行 3rep/修复前后同脚本同条件);③ 既有测试:`test_retr_s5` → 17/0、`test_retr_score_once` → 20/0、`test_readcache_prodpath` → 12/0、`test_readcache_default_on` → 10/0、`test_p1x_ref_root` → 10/0、全量 194/194(时点值,与本会话最终全量一致);cogmap_sync/workspace_index 守卫通过。**同域残余项如实声明(材料原文)**:S5 抑制块(_emit 内 neg_coverage[:10] 裸读)同形存在,但受 MDCG_RETRIEVAL_PIPELINE=1 门控(默认关,不在默认路径),未在本项范围内动——留档待另项(见第五节附加观察)。
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 三、发现明细(三区 confirmed 13 / rejected 0)
|
|
75
|
+
|
|
76
|
+
以下每项「证据要点」为上游复核/修复会话的读码+实跑(材料原文;性能复现均在系统临时目录/临时 crate/临时库,串行多 rep 取中位,测毕清理);标注★者本报告会话另做了现行代码读核(修复项)或历轮报告 grep 核实(编号归属)。legacy 项沿用原轮次号;origin=new 者的 N120-N122 为本报告会话续编(v13 用至 N119,v13.md:4)。**三区 rejected 均为空数组——本轮无证伪/剔除条目进入 rejected;confirmed 内含 1 条「证伪结论复核成立」项(v12 原子化),按其性质归入本节末证伪小节单列,如实记录。**
|
|
77
|
+
|
|
78
|
+
### swarm-wal 区(5 confirmed:4 legacy + 1 证伪复核;0 rejected)
|
|
79
|
+
|
|
80
|
+
| # | where(缺陷时点) | 严重度 | 问题摘要 | 证据要点 | 状态 |
|
|
81
|
+
|---|------|--------|----------|----------|------|
|
|
82
|
+
| v7 N57★ | swarm/rust_runtime/src/swarm.rs:468-537 | medium | 【留档复测·在位】WAL 恢复链路同一行被解析 2 次+HMAC 验签 3 次(pass1 :468-482 / pass2 :487-537 / aggregate_report :1306-1316 第三遍),pass2 纯重复 pass1 已验的行;且无截断/压缩(grep set_len/truncate/compact 零命中),每次恢复另经 :821→:562→:578-599 全量重写同体积前缀——重启成本随累计事件数线性无界 | 实测(临时 crate=HEAD 拷贝+注入 bench 子模块,`cargo test --release --no-default-features -- --test-threads=1` 串行 3rep 中位,合成真 HMAC WAL):2k/10k/50k 行(561KB/2.82MB/14.26MB,行均 285B)→ replay 26.75/132.42/662.50ms,斜率 13.37/13.24/13.25µs/行,行数×5 → 耗时 4.95×/5.00× 严格线性;50k 分解:读盘 4.87ms + 两遍解析 235.62ms + 三遍 HMAC 424.21ms;pass2 重复劳动 ≈259ms ≈ replay 的 42%(与 v7 留档 42% 逐字吻合);恢复重写再 +254ms | 留档(medium——收益 ~2× 非数量级,重放结构重构类,两遍扫描是 v0.6.1 前缀正确性载体须保语义) |
|
|
83
|
+
| v12 N109★ | swarm/rust_runtime/src/swarm.rs:517-518 | medium | 【留档复测·在位】幂等重入三审计面归零:replay_wal 只重建 acks 集合(:517-518),watermarks(:776)/gossip_sent(:771)/round_outcomes(:769) 均从空表起,全完成重入早退(:801-818)直接传空表——ACK 行 payload 自带 {"round","seq"}(:1044-1045)即重建信息源却未消费,违背「watermarks 单调递增/幂等聚合」契约 | 读码铁证:WalReplay 结构体 :402-418 根本没有 watermarks/gossip_sent/round_outcomes 三字段;run_swarm 三表全部 HashMap::new() 起步;早退在 open_wal_for_run 与 spawn 之前直接 return。实测(合成 4 轮已完成 WAL,run_swarm 早退路径,串行):watermarks_empty=true / gossip_received_empty=true / health_empty=true,而 acks=12 / global_seq=12 / events=25 全保留——与 v12 留档真实端到端复跑逐字同象。本会话读核现行 :402-419 结构体三字段确不在位(未修) | 留档(medium——重放结构重构类,收益为审计面重建〔正确性为主〕非数量级性能收益) |
|
|
84
|
+
| v7 N57 内存面细分★ | swarm/rust_runtime/src/swarm.rs:536 | low | 【留档复测·在位】(v7 N57「~3× 常驻」面的独立细分,无独立编号)恢复期内存多副本常驻 + kept_lines 重写后不释放:raw(:455)+kept_lines(:536)+events payload(:434)+inboxes 载荷(:523-531) 同时在内存;run_swarm :761 replay 结构活到函数尾,kept_lines 在 :821 一次性重写消费后仍常驻整个续跑期 | 读码::761 let replay 活到函数尾,grep drop(replay/kept) 零命中,早退路径 kept_lines 重建后根本不被消费。实测(50k+1 行=14,264,799B,replay_wal 返回后逐分件求和,串行):kept 全量 14,264,799B + event payload 4,682,350B + Event slab 7,600,152B(50001×152B,size_of 实测)+ inbox payload 3,121,470B = 常驻 29.67MB(2.08× 文件),峰值 ~43.93MB(3.08×)——「3× 常驻」措辞略夸(常驻 ~2×、峰值 ~3×),浪费在位 | 留档(low——一行 drop 改动低风险,建议随 N57 重放重构同轮处理,本轮名额让位于高频×明显项) |
|
|
85
|
+
| v7 N59★ | swarm/rust_runtime/src/swarm.rs:1118-1121 | low | 【留档复测·在位】WAL 写路径裸 File 无用户态缓冲:每事件行一次 write_all 直 syscall(:1118),:1121 flush 对 File 是 no-op(std File 无用户态缓冲),与 :1103-1104 纪律注释语义不符;BufWriter 仅 :624 实例 stdin | 实测(微基准 200 轮×25 行×202B 行,串行 3rep 中位):bare+轮末sync 90.28ms vs buf8k+轮末sync 76.20ms → 写阶段 -15.6%(v7 留档 -9.9% 同向略优);bare 无sync 13.38ms vs buf8k 无sync 1.29ms → 10.4×(v7 留档 11× 吻合);fsync 占写阶段 85%(v7 留档 85% 逐字吻合)——fsync 主导、BufWriter 只修 syscall 面,端到端占比 <5% | 留档(low——端到端 <5% 不达标且须与 fsync/rename 崩溃语义统一设计〔v12 留档口径〕,修复风险高于收益) |
|
|
86
|
+
| v12 原子化证伪复核★ | swarm/rust_runtime/src/swarm.rs:578-619 | low | 【证伪结论复核成立——非待修缺陷,结案】v12 原子化(tmp+fsync+rename)与 corrupt 归档未引入性能回退:担心面为 rename/fsync 开销与归档整卷拷贝 | 实测(50k+1 kept_lines 同进程 A/B,旧臂为 d49e2a8^ swarm.rs:734-751 逐字复刻,串行 3rep 中位):新原子路径 [254.37,254.81,254.17] 中位 254.37ms vs 旧就地重写 [261.14,258.51,257.06] 中位 258.51ms,delta -1.6%(新路径更快,噪声内;v12 留档差 <1% 同象);分量:纯写体积 245.77ms,fsync+rename 增量 8.60ms(3.4%<5% 阈值);corrupt 归档实测 73KB 级 0.219ms vs 14.26MB 0.224ms——与体积无关(rename 元数据操作),确认非整卷拷贝 | **证伪确认,结案**(恢复重写的真实成本是全量重写本身 ~254ms@50k,归入 N57 的无界线性问题) |
|
|
87
|
+
|
|
88
|
+
### mdcg-retr 区(6 confirmed:1 new 修复 + 1 new 留档 + 4 legacy;0 rejected)
|
|
89
|
+
|
|
90
|
+
| # | where(缺陷时点) | 严重度 | 问题摘要 | 证据要点 | 状态 |
|
|
91
|
+
|---|------|--------|----------|----------|------|
|
|
92
|
+
| N120★ | md_cg/readcache.py:70-76(_cached 代际相等校验)+ md_cg/mdcg.py:817-820(_DirtyDict 每次变更 write_gen+1) | high | 【新发现→本轮修复】读缓存代际哨兵整池失效:任意一次单节点写(write_gen+1)使全部缓存条目同时 miss,下一条查询全池重装(open+parse 全部 N 个节点)——写读交替负载 O(每写×全池),万级+规模不成比例开销(详 F1) | 实测(10k 节点临时库,合成中文语料,串行,nodefile.loads 模块级计数):稳态 loads=0/41.3ms(3rep 中位)→ 每 rep add 1 节点后同查询 loads=10001+/3rep 中位 1732.4ms(41.9× 退化)→ 复稳 loads=0;规模扩展 10k/20k/30k 写后首查 1732.4/3514.5/5229.8ms(30k/10k=3.02×,线性于 N);生产暴露面读码核实(mcp_server 读 op=read 与写 op=write 同一常驻实例) | **已修**(F1) |
|
|
93
|
+
| N121 | md_cg/mdcos.py:866-887(缺陷时点;现行经 F3 漂移至 :892-921 一带) | low | 【新发现·留档】生产检索稳态查询仍是 O(全池) 逐节点遍历打分(读缓存只除 IO 未除 CPU 扫描),S1 门控/S7 倒排候选层默认关且 S7 仅接基类 MdCG.search——稳态耗时随库规模线性放大 | 读码:docs_all=self._read_many(entries)(全候选集)→ _like 全池遍历 → _score 全池打分;总开关默认关(MDCG_RETRIEVAL_PIPELINE 未设≠'1' 时恒等);S7 仅基类。实测(10k/20k/30k 临时库,同查询稳态,预热 2+串行 3rep 中位):41.3/134.4/209.7ms,30k/10k 耗时 5.1×(节点 3×,超线性但本机 Windows 抖动大);14k 真实库外推 ~60-100ms/查可用 | 留档(low——候选集来源改变属检索语义面改动,待专项设计) |
|
|
94
|
+
| v9 留档 _emit 尾部★ | md_cg/mdcg.py:2917-2923(现行经 F5 修复于 :2976-2986) | low | 【v9 留档复测·在位→本轮修复】_emit 尾部对 covered_neg[:3] 直接 open+loads(不经 _read 不入读缓存),每条命中负层的查询恒 ≤3 次盘读;负层主面 IO 已被第 7 轮读缓存覆盖(残余项)(详 F5) | 复核实测(60 knowledge+8 rejected 临时库,串行,loads 计数):Q1 loads=71(全池 60+负层扫描 8+尾部 3)、Q2 同查询增量恰 3、结果含 rejected/r0-r2 前 3 条、tier=T3_global_scan——与 v9.md:91 留档逐位一致 | **已修**(F5) |
|
|
95
|
+
| v9 留档 v7 N50 残腿★ | md_cg/mdcos.py:979(_path_graph 种子 self.get)+ md_cg/mdcg.py:2134-2138(get 裸 open;现行经 F4 修复于 mdcos.py:1010-1026) | low | 【v9 留档复测·在位→本轮修复】search_rrf 图路 ≤5 个种子经 MdCG.get 裸 open+parse(get 不走 _read 读缓存包装),每查询固定 ≤5 次盘读(graph 零产出也在边循环前发生)(详 F4) | 复核实测(40 带 tags/edges 节点临时库,串行):Q1 loads=45(词法 40+种子 5)、Q2 增量恰 5、get 计数 Q1=5/Q2=5、两查询结果 ids 逐位一致——与 v9.md:92 留档一致 | **已修**(F4) |
|
|
96
|
+
| v7 N51★ | md_cg/mdcos.py:800-807(缺陷时点;现行经 F3 修复于 :800-829 透传面) | low | 【v7 留档复测·在位→本轮修复】生产 MdCGOS.search 的 T2/T3 阶段对 docs_all 打分截断后又对 picked 重打(基类 try_stage 已有 scored 形参可透传,mdcg.py:2477 P2-4 先例未回移生产覆写)(详 F3) | 复核实测(600 节点临时库、无交集查询、串行、_score 计数包装):tier=T3_global_scan、_score 恰 4 调、per-call docs=[0,0,600,500]、共打分 1100 文档——与 v9.md:111 留档逐位一致;500/1100≈45% 打分工作量可省 | **已修**(F3) |
|
|
97
|
+
| v7 N52 | md_cg/postings.py:122-159(stale_reason 逐目录/逐文件 stat;本轮零改动,行号现行) | low | 【v7 留档复测·在位】发布表快照指纹校验每查询对全部节点目录逐个 os.stat(O(目录数+1),无 TTL/折叠),S7 启用者每查询恒付 stat 税;触发面窄(PIPELINE+GATE_S7 双开关默认关,且仅基类 MdCG.search 接 S7) | 读码:postings.py:143-145 对 want 目录逐个 _mtime_ns、:154-156 根级文件逐个、:157 index_mtime,无 TTL/折叠;mdcos.py 零 postings 引用。实测(200 目录/1000 节点临时库,双开关开、postings.build 真快照 nodes=1000/postings=33277、基类 MdCG.search、_mtime_ns 计数、串行):S7 on 每查询恰 201 次 stat(3 查询 [201,201,201])、S7 off 对照 0 次;stale_reason 单独 5rep 中位 4.56ms ≈22.8µs/目录(本机较 v7 口径 26.7µs/目录稍快) | 留档(low——触发面窄且 TTL 会引入陈旧窗口〔staleness 判定语义变化〕,收益限少数启用者) |
|
|
98
|
+
|
|
99
|
+
### runtime-new 区(2 confirmed:1 new 留档 + 1 legacy;0 rejected)
|
|
100
|
+
|
|
101
|
+
| # | where(缺陷时点) | 严重度 | 问题摘要 | 证据要点 | 状态 |
|
|
102
|
+
|---|------|--------|----------|----------|------|
|
|
103
|
+
| N122★ | compiler/api.py:319(本会话读核现行 :319-320 在位) | low | 【新发现·留档】第 11 轮验证终裁 compile() 每次全量重编产物——产物含 ~159 行恒定 _ProtocolRuntime 前导(codegen.py:145 起)每次编译重复重编,占小程序编译总耗时 79-96%,读码+相位分解+A/B 三重证实 | ①读码在位:errors 为空即 compile(result.code,"<协议产物>","exec"),产物前导恒定不变(实测空源码产物 159 行);②相位分解(compiler/tests/test_full_pipeline.py TEST_CASES 全 8 例,临时目录脚本串行 7rep 中位,Python 3.12.10/Win10):verdict 相位 474-587µs/例、占比 78.8-96.1%;③A/B 复现(HEAD bb33750 vs git worktree fa9602e^,同脚本同机):8 例合计 4.54ms vs 0.60ms,差值 3.94ms ≈ verdict 相位独立实测 4.10ms;④规模 N=100/200/400/800 各相位全线性,无超线性 | 留档(low——绝对量 0.5ms/次、入口为 CLI/validate_source 交互频度,「高频×明显」不成立) |
|
|
104
|
+
| v7 N58★ | hive/orch.py:464(缺陷时点;现行修复面 hive/hive_mcp/mcp_server.py:243-315) | low | 【v7 留档复测·在位→本轮修复】v7 留档「orch._poll 重复解析」七轮未修:每次轮询对全部子任务全量重读+json.load status.json 与 result.json 全文(含 content/tool_trace 全量解析后仅截 200 字卡片头),无 mtime/size 短路(详 F2) | 复核实测(临时 jobs 目录 8 子任务、result.json 210KB、串行 7rep 中位):_poll({}) 中位 2.67ms/次(全量重解析 ~1.68MB JSON);对照仅 os.stat 16 个未变更文件 0.233ms,比值 11.5×;线性放大:content 50K/200K/800K → 0.98/2.67/10.13ms | **已修**(F2) |
|
|
105
|
+
|
|
106
|
+
### 证伪/剔除小节(本轮 1 条;三区 rejected 数组均为空,如实记录)
|
|
107
|
+
|
|
108
|
+
- **v12 原子化与 corrupt 归档的性能回退疑虑——证伪复核成立(结案)**:见 swarm-wal 区末行。担心的 rename/fsync 开销实测 3.4%(<5% 阈值)且新原子路径整体更快(-1.6%,噪声内);担心的归档整卷拷贝实测与体积无关(73KB 0.219ms vs 14.26MB 0.224ms,rename 元数据操作)。**无需动作**;恢复重写的真实成本是全量重写本身(~254ms@50k),归入 v7 N57 的无界线性问题。除该项外,三区 rejected 均为空——本轮无其他证伪/剔除条目。
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 四、验证(门禁结果)
|
|
113
|
+
|
|
114
|
+
以下「本报告会话实跑」均为本报告写作会话在仓库根目录实际运行(第一手);「材料口径」为复核/修复/门禁会话已跑、本会话未重跑(如实区分):
|
|
115
|
+
|
|
116
|
+
| 命令 | 结果 | 来源 |
|
|
117
|
+
|------|------|------|
|
|
118
|
+
| `python -X utf8 scripts/run_tests.py --jobs 4`(全量) | `===== SUMMARY 194/194 通过,5 跳过(依赖缺失/平台不符) =====`,**真实退出码 0**——尾部 PASS 含 hive 守卫与 swarm.tests.test_rust_swarm,与材料门禁口径逐字一致。备注:本会话首次以后台方式启动时 shell 重定向变量未展开、**套件零测试执行即中止**(非测试失败),随后以正确路径重跑得上述结果——如实记录 | **本会话实跑** |
|
|
119
|
+
| `python -X utf8 -m md_cg.test_readcache_precise_inval` | 「结果:PASS 23 / FAIL 0」EXIT=0——与材料修后 23/0 一致;材料红证修前 PASS 10/FAIL 5(本会话未重跑红证) | **本会话实跑** |
|
|
120
|
+
| `python -X utf8 -m hive.test_orch_poll_cache` | 「结果:PASS 12 / FAIL 0」EXIT=0——与材料修后 12/12 一致;材料红证修前 PASS 9/FAIL 3(C1a/C2b/C3b) | **本会话实跑** |
|
|
121
|
+
| `python -X utf8 -m md_cg.test_retr_score_once` | 「结果:PASS 20 / FAIL 0」EXIT=0——与材料修后 20/20 一致;材料红证修前缺陷项 10 红(T3×6+T2×4) | **本会话实跑** |
|
|
122
|
+
| `python -X utf8 -m md_cg.test_rrf_graph_seed_cache` | 「结果:PASS 7 / FAIL 0」EXIT=0——与材料修后 7/7 一致;材料红证修前红 2 项(S1a/S2a) | **本会话实跑** |
|
|
123
|
+
| `python -X utf8 -m md_cg.test_emit_negtail_cache` | 「结果:PASS 7 / FAIL 0」EXIT=0——与材料修后 7/7 一致;材料红证修前红 1 项(E1a) | **本会话实跑** |
|
|
124
|
+
| `npm run gate` | **失败(第一手复现)**:exit 1,`[FAIL] R4 非追踪件面 命中=4;非追踪=28,允许=24`——命中清单为 4 份未 git add 的新守卫(md_cg/test_emit_negtail_cache.py、test_readcache_precise_inval.py、test_retr_score_once.py、test_rrf_graph_seed_cache.py);链路停于 check_publish_artifact(其后的 cogmap_sync/link_check/workspace_index/verify_discipline 未到达)。R4 规则语义本会话读核:包文件集(npm pack --dry-run,1381 件)减 git 追踪面的非追踪件仅允许 lib/ 前缀(scripts/check_publish_artifact.py:45/:431-435)——hive/test_orch_poll_cache.py 不在 npm 包文件集故未命中。**性质判定**:与材料口径一致——untracked 时序性(守卫文件提交后即入追踪面,R4 应转绿),裁决归编排会话提交前;本会话不 commit 故未验证提交后形态,如实标注 | **本会话实跑**(与材料一致) |
|
|
125
|
+
| swarm cargo test | **未运行**——Rust 面零改动(本会话 git status 证实 swarm/ 与 rust/ 无改动,改动面仅 md_cg/hive 的 python 件),与材料口径一致 | 双方一致 |
|
|
126
|
+
| npm test | **未运行**——TS 面零改动(git status 证实 src/ 与 TS 测试未动),与材料口径一致 | 双方一致 |
|
|
127
|
+
|
|
128
|
+
**上游会话已运行、本会话未重跑的验证**(材料原文,如实区分):五项修复的守卫红证(修前各一跑,红绿数字见第二节各守卫行);五项基准的前后臂(测量条件均已在第二节逐项标注——串行 3-7 rep 取中位、临时库/临时 crate、计数包装口径、临时脚本测毕清理);F1 的 stash 归因实验(暂存修复后 test_ccgc/test_p35 在修复前树全过 → 判定 7 测试回归为修复引入,根因 ccgc/crosscheck/backfill 直写+rebuild_index 收尾依赖);F2 的真实 serve 环路(smoke_test 21 pass/0 fail);F3 的相邻缺陷 stash 取证(HEAD 上 MDCG_REACH=1 实测 KeyError: 1);F3/F4/F5 的专项回归(-k retr 12/12、-k reach 3/3、-k p43 1/1、test_p0 25/0、-k rrf 1/1、test_i28_hotcache_prodpath 8 项、test_mdstore_search_parity 5/0、test_interop 14、test_retr_s5 17/0、test_p1x_ref_root 10/0 等);工程守卫 cogmap_sync check / workspace_index --check(F1/F3/F4/F5 时点通过——本会话未重跑,因 gate 链在 R4 提前停止未到达这两环);三区复核全部性能复现(第二节/第三节所列数字)。
|
|
129
|
+
|
|
130
|
+
**git 工作树核对**(本会话 `git status --porcelain` / `git diff --numstat` + 五处落点读核):改动面 = **四个修复源文件**(md_cg/mdcg.py +76/-11〔F1 _DirtyDict+rebuild 收尾 / F3 基类 reach 同修 / F5 尾部〕、md_cg/readcache.py +48/-14〔F1〕、hive/hive_mcp/mcp_server.py +48/-7〔F2〕、md_cg/mdcos.py +60/-15〔F3+F4〕)+ **五份新守卫**(md_cg/test_readcache_precise_inval.py、hive/test_orch_poll_cache.py、md_cg/test_retr_score_once.py、md_cg/test_rrf_graph_seed_cache.py、md_cg/test_emit_negtail_cache.py,均未跟踪新文件)——与五项修复一一对应。另有 `md_cg/whitebox_kb/wisdom/code_solidified.json`(+1/-2)为 v10-v13 报告已注明的先前会话遗留工作区变更,非本轮触点。未做任何 commit。
|
|
131
|
+
|
|
132
|
+
**测量条件汇总(性能纪律)**:材料全部性能数字均为同机同环境**串行**测量(禁并行测量,#30 教训)、每项 ≥3 rep 取中位(3/5/7 rep 不等,逐项标注)、注明数据规模(节点数/WAL 行数/字节数/子任务数)与命令形态(临时脚本、仓库根 cwd、临时目录/临时 crate/临时库、测毕清理);本会话未重跑任何性能基准(以五守卫绿态 + 全量回归 + 修复落盘读核替代佐证,如实标注);本会话唯一批量运行 `run_tests.py --jobs 4` 为功能门禁(与材料门禁命令同形),非性能测量。
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 五、遗留清单(8 个开口:留档 7——medium 2 / low 5 + 证伪结案 1)
|
|
137
|
+
|
|
138
|
+
### 留档项(7 项,材料「留档未修」清单)
|
|
139
|
+
|
|
140
|
+
| # | where(缺陷时点) | 严重度 | 问题 | 留档理由 / 处置线索(材料口径) |
|
|
141
|
+
|---|------|------|------|------------------------------|
|
|
142
|
+
| v7 N57 | swarm/rust_runtime/src/swarm.rs:468-537 | medium | WAL 恢复链路同一行被解析 2 次+HMAC 验签 3 次,无截断/压缩,重启成本随累计事件数线性无界 | 收益 ~2×(replay 斜率 ~13→~7µs/行)非数量级门槛(分诊标准③);两遍扫描是 v0.6.1 前缀正确性载体(:460-466 注释),重构须保语义 |
|
|
143
|
+
| v12 N109 | swarm/rust_runtime/src/swarm.rs:517-518 | medium | 幂等重入三审计面归零(watermarks/gossip_sent/round_outcomes 从空表起,ACK payload 自带 round/seq 未消费) | 重放结构重构类(分诊标准③点名项),收益为审计面重建(正确性为主)非数量级性能收益;与 N57 同函数域,建议合并一轮处理 |
|
|
144
|
+
| v7 N57 内存面细分 | swarm/rust_runtime/src/swarm.rs:536 | low | 恢复期内存多副本常驻+kept_lines 重写后不释放(常驻 ~2.08× 文件、峰值 ~3.08×@50k) | 一行 drop 改动低风险,但与 N57/N109 同函数域(swarm.rs 恢复路径)——建议随重放结构重构同轮处理,**下轮优先候选** |
|
|
145
|
+
| v7 N59 | swarm/rust_runtime/src/swarm.rs:1118-1121 | low | WAL 写路径裸 File 无用户态缓冲(flush 对 File 是 no-op 与纪律注释语义不符) | 写阶段 ~10-15%、端到端 <5% 不达标且须与 fsync/rename 崩溃语义统一设计(v12 留档口径),修复风险高于收益 |
|
|
146
|
+
| N121 | md_cg/mdcos.py:866-887(缺陷时点;现行 :892-921 一带) | low | 生产检索稳态 O(全池) 逐节点遍历打分,稳态耗时随库规模线性放大(30k 稳态 ~210ms) | S7 倒排候选层接生产 MdCGOS.search(或 S1 门控默认化)可降为 O(命中集),但候选集来源改变属检索语义面改动(标准②不满足),留档待专项设计 |
|
|
147
|
+
| v7 N52 | md_cg/postings.py:122-159 | low | S7 stat 税(每查询 201 次 stat、~4.6ms/200 目录) | 触发面窄(双开关默认关)且 TTL 会引入陈旧窗口(staleness 判定语义变化),收益限少数启用者 |
|
|
148
|
+
| N122 | compiler/api.py:319 | low | 验证终裁 compile() 每次全量重编含 ~159 行恒定前导的产物(占小程序编译 79-96%) | 绝对量 0.5→0.1ms/次、入口为 CLI/validate_source 交互频度,「高频×明显」不成立(分诊标准①不足);修法清晰(恒定前导外提或按 hash 记忆化),宜顺带收 |
|
|
149
|
+
|
|
150
|
+
### 证伪结案(1 项)
|
|
151
|
+
|
|
152
|
+
| # | where | 结论 |
|
|
153
|
+
|---|------|------|
|
|
154
|
+
| v12 原子化证伪复核 | swarm/rust_runtime/src/swarm.rs:578-619 | **证伪确认,结案**——tmp+fsync+rename 原子化与 corrupt 归档未引入性能回退(fsync+rename 增量 3.4%、整体 -1.6% 噪声内;归档为 rename 元数据操作与体积无关);恢复重写的真实成本是全量重写本身,归入 N57 |
|
|
155
|
+
|
|
156
|
+
### 附加观察(修复会话声明、未入材料 8 条计数——如实转录)
|
|
157
|
+
|
|
158
|
+
- **S5 抑制块同形残余**(F5 声明):_emit 内 neg_coverage[:10] 裸读与已修尾部同形,受 MDCG_RETRIEVAL_PIPELINE=1 门控(默认关,不在默认路径),留档待另项。
|
|
159
|
+
- **三处写盘不标 _dirty 的既有陈旧缺口**(F1 声明):scrub._apply_offset / forgetting.reinforce / compact_access 在新旧两失效口径下行为等价(都不失效),未动,建议另行留档。
|
|
160
|
+
|
|
161
|
+
**优先级建议**(据材料处置线索汇总):swarm.rs 恢复路径三项(N57/N109/内存面细分)同函数域,建议一轮合并重构(pass1 缓存解析与验签结果供 pass2 复用 + ACK payload 重建水位 + 重写后 drop kept_lines——F5 式「同域合并」先例);N59 须与该轮 fsync/BufWriter 崩溃语义统一设计;N121 待检索语义专项(S7 接生产入口可与 v7 N52 一轮配齐,v7.md:156 先例口径);N122 修复极简(前导外提/记忆化)可任意一轮顺带收;附加观察两项随各自域下轮盘点。
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 六、纪律合规声明
|
|
166
|
+
|
|
167
|
+
1. **定位先读索引**:本报告写作前已读 WORKSPACE_INDEX.md(按职责定位 md_cg/ 为「灵枢大脑——记忆系统本体」、hive/ 为「蜂巢并发引擎——worker 池调度」、swarm/ 为「蜂群运行时——.pbc 确定性实例 + WAL-HMAC」、compiler/ 为「中文(术数)编译器」、docs/eval 为历轮报告所在),未做全盘浏览。
|
|
168
|
+
2. **结论引证**:所有修复与缺陷均引 path:line(材料口径为缺陷时点快照行号;四文件修复后行号漂移处另注本会话读核现行行号——如 F1 材料称 readcache.py:70-76/_DirtyDict :817-820、读核实为现行 _DirtyDict mdcg.py:801-900〔簿记 :836-848、clear(broad) :860-877〕+ rebuild 收尾 :1226-1231 + _fresh readcache.py:80-100,F5 材料称 mdcg.py:2917-2923、读核实为现行 :2976-2986,以读核值为准);第三节证据要点摘自任务输入的三区复核材料(上游会话读码+实跑);第四节「本报告会话实跑」九项为第一手命令与输出(全量回归、五守卫绿态、npm run gate 失败现场与 R4 规则读核、git 核对),材料口径与未跑项均如实标注来源,无一冒充;留档缺陷抽查读核(swarm.rs :402-419 WalReplay 三字段不在位/:517-519/:1044-1045、compiler/api.py:319-320、orch.py:335/:348/:464)与材料「在位」结论一致。
|
|
169
|
+
3. **编号续编声明**:材料 confirmed 的 origin=new 条目未携带编号,本报告会话按历轮 N 口径续编 N120-N122(v13 用至 N119,v13.md:4 编号口径行核实);legacy 项编号经 v7.md:88/:89/:104/:105/:106、v9.md:91/:92、v12.md:89 grep 核实。v7 N57 内存面细分(swarm.rs:536)在 v7.md:104 N57 的「~3× 常驻」范围内、材料单列复核条目——本报告按「N57 内存面细分(无独立编号)」记,不新编号不冒称独立缺陷史。v9 留档 get 种子项:v13.md 区域为 scripts/TS 未含该条(本会话通读核实),档位锚以 v9.md:92 为准、材料标注的「v9/v13 留档复测」口径照录。
|
|
170
|
+
4. **性能测量纪律合规**:材料全部基准为同环境**串行**、每项 ≥3 rep 取中位(逐项标注 3/5/7 rep)、注明数据规模(节点数/WAL 行数与字节/产物大小/子任务数)与命令形态、基准用临时目录/临时 crate/临时库且测毕清理、无并行测量(#30 教训合规);本会话未重跑性能基准(守卫绿态 + 全量回归 + 读核佐证,第四节如实标注);本会话 `run_tests.py --jobs 4` 为功能门禁非性能测量;本机绝对路径不写入任何产出(见第 6 条)。
|
|
171
|
+
5. **已修项不重复报**:第 7 轮已修面(读缓存默认开 28.3×/propose 增量 19×/重开快照 25.7×/merge 定向 68×/review 治理 15.5×)未再报——本轮 N120 是第 7 轮读缓存**之上的失效粒度缺陷**(哨兵口径问题,非读缓存本身),新立项非重复;第 9 轮已修面(治理面 direct_read/verify _dirty/branches tombstone/水位 EOF/links 互斥)未再报;第 12 轮已修 WAL 原子化不再报——只报其「性能回退疑虑」的证伪复核结案;v9.md:81/:114 已剔除形态(负层全读原形态/N50 重复 open 税原形态)未再报——本轮只报其留档残腿(v9.md:91/:92 在档)。三区 rejected 为空,confirmed 内的证伪项如实归第三节证伪小节,未冒充缺陷计数。
|
|
172
|
+
6. **隐私脱敏**:全文只写仓库相对路径;材料与本会话输出的本机绝对路径(用户目录、系统临时区路径、盘符根)一律转录为「仓库根/系统临时目录/临时双 cwd」等占位描述;无任何 key/token/密钥字面量;gate 输出摘录中的 NOTE 条目为仓库内既有哑凭据文件名的守卫备注(非本轮产物、非真实凭据)。定稿前经机械扫描复查(盘符/用户目录/凭据字面量形态零命中,见下方自查)。
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 七、跳过项及原因
|
|
177
|
+
|
|
178
|
+
- **swarm cargo test 未运行**:Rust 面零改动(本会话 git status 证实 swarm/ 与 rust/ 无改动,改动面仅 md_cg/hive 的 python 件)——材料与本会话口径一致;后续 N57/N109/N59 处置 swarm.rs 时须补跑(v7.md:130 先例口径)。
|
|
179
|
+
- **npm test 未运行**:TS 面零改动(git status 证实 src/ 与 TS 测试未动)——材料与本会话口径一致。
|
|
180
|
+
- **npm run gate 的 R4 失败未在本会话消除**:根因是 4 份新守卫文件未 git add(untracked 时序性);消除需 commit/add——commit 需任务方指令且裁决归编排会话(材料口径「编排会话提交前裁决」),本会话不 commit,故未验证提交后 gate 转绿形态,如实标注。gate 链因 R4 提前停止,cogmap_sync/link_check/workspace_index/verify_discipline 四环本会话未到达(材料口径 F1/F3/F4/F5 时点通过)。
|
|
181
|
+
- **守卫红证未在本会话重跑**:上游修复会话已跑且逐项留痕(修前红/修后绿数字见第二节各守卫行);本会话重跑需回退工作树(多轮改动未提交、无法整体回退),风险大于收益——以修复落盘读核 + 修后绿态实跑 + 全量回归替代佐证,如实标注。
|
|
182
|
+
- **全部性能基准未在本会话重跑**:上游复核/修复会话已按串行多 rep 中位口径实测并逐项声明清理(第二节/第三节数字来源均标注为材料原文);本会话未重跑 10k/30k 写读交替、50k 行 WAL bench、200 轮微基准、verdict 相位分解、800K 产物轮询等场景。
|
|
183
|
+
- **F3 相邻缺陷的 KeyError 崩溃复现未在本会话重跑**:stash 回退取证为上游会话执行(多轮未提交改动不宜整体回退);以现行 mdcg.py:2588-2601 修复注释读核 + 守卫 R 段(MDCG_REACH=1)绿态覆盖。
|
|
184
|
+
- **F1 的 7 测试回归 stash 归因实验未重跑**:上游会话已做(暂存修复后 test_ccgc/test_p35 在修复前树全过);以守卫 G8/G6h(直写+rebuild 收尾可见性)绿态 + 全量 194/194 锁定。
|
|
185
|
+
- **git 未提交**:commit 需任务方指令;工作树保持四源文件补丁 + 五守卫新增原状(及一件 v10-v13 已注明归属的先前会话 wisdom json 变更)。
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
*报告依据:任务输入的第 14 轮材料(三区复核 13 confirmed / 0 rejected 明细及证据〔swarm-wal 5 / mdcg-retr 6 / runtime-new 2〕、五项修复的 where/问题/修复/前后基准/守卫/verified_by、留档未修 8 条、门禁结果);本报告会话的五处修复落盘读核(现行行号锚点与材料吻合,均带「缺陷迭代第 14 轮」注释)、五守卫绿态实跑(23/12/20/7/7 全绿)、全量回归实跑(194/194 通过、5 跳过,真实退出码 0)、npm run gate 失败第一手复现(R4 命中清单与规则语义读核)、legacy 编号历轮报告 grep 核实(v7.md/v9.md/v12.md/v13.md)、留档缺陷在位性抽查读核(swarm.rs/compiler/api.py/orch.py)、git 工作树核对(numstat 与五修复一一对应 + 一件先前遗留 json)、报告脱敏机械扫描。*
|
|
190
|
+
|
|
191
|
+
*自查双清单:①材料覆盖——三区 13 条目全部入文(confirmed 13:swarm-wal 5 / mdcg-retr 6 / runtime-new 2;rejected 0 如实记录,confirmed 内 1 条证伪复核成立项归第三节证伪小节单列),13 独立缺陷(新 N120-N122 共 3:high 1/low 2 + legacy 10 项)数目吻合,5 补丁逐项五要素齐全(where/问题/修复/前后基准/守卫)且每项带测量条件(规模/次数/串行/临时库清理),全闭 5 项、13 − 5 = 8 开口(留档 7 + 证伪结案 1)与材料留档 8 条逐条对应无多无少,附加观察 2 条(S5 抑制块残余/三处不标脏写盘)如实转录并注明不入计数,legacy 项全部标注原轮次(编号经 v7/v9/v12/v13 报告 grep 核实),门禁四项(python 通过/cargo 未运行/npm test 未运行/gate 失败)与跳过原因一一对应,材料与本会话不一致处(首次后台启动重定向失败零测试执行——重跑后 194/194 一致;gate R4 失败本会话第一手复现并读核规则语义)如实记录;②纪律——全部结论引 path:line 或注明材料来源,九项第一手实跑命令与输出在第四节(全量回归真实退出码、五守卫、gate 失败现场、R4 规则读核、git numstat 与五落点读核、留档项抽查),未跑项(cargo/npm test/守卫红证/性能基准/stash 取证/提交后 gate)无一冒充为已跑,新发现续编编号(N120-N122)与 N57 内存面细分的口径显式声明而非暗改,四文件行号漂移逐项双标以读核为准,全文无本机绝对路径、无 key/凭据字面量(机械扫描盘符/用户目录/凭据字面量形态零命中),本会话未 commit、未触碰真实数据根。*
|