@furongjun1999/dsh-memory 0.7.1 → 0.7.3
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 +58 -48
- package/codebuddy/CODEBUDDY.md +9 -9
- package/docs/README.md +148 -144
- package/docs/discipline/harnesses.yaml +16 -8
- package/docs/discipline/templates/zcode-user.md.tmpl +49 -0
- package/docs/eval/AGI/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_/345/205/255/345/256/266/350/256/260/345/277/206/347/263/273/347/273/237/345/220/214/345/260/272/345/256/236/346/265/213_v3.1.md +340 -0
- package/docs/eval/N225_/347/264/242/345/274/225/346/227/245/345/277/227/351/235/236/345/257/271/350/261/241/350/243/205/350/275/275/351/235/242/347/261/273/345/236/213/351/227/270_v1.0.md +2 -2
- package/docs/eval/cons200_/345/206/262/347/252/201/346/243/200/346/265/213/351/200/211/351/235/242_/345/256/236/346/226/275/350/256/260/345/275/225_v1.0.md +1 -1
- package/docs/eval/cons200_/345/206/262/347/252/201/346/243/200/346/265/213/351/200/211/351/235/242_/345/256/236/346/226/275/350/256/260/345/275/225_v1.1.md +1 -1
- package/docs/eval/issue43_/351/273/230/350/256/244/347/255/226/347/225/245/344/270/216/351/224/256/347/261/273/345/236/213/351/227/270_v1.1.md +1 -1
- package/docs/eval/issue43_/351/273/230/350/256/244/347/255/226/347/225/245/345/212/240/350/275/275/344/270/216/345/207/255/346/215/256/346/230/216/346/226/207/351/230/237/345/210/227_v1.0.md +2 -2
- package/docs/eval/issue50_/345/205/203/346/225/260/346/215/256/351/200/217/344/274/240/344/270/216/345/205/234/345/272/225_/344/277/256/345/244/215/350/256/260/345/275/225_v1.0.md +5 -5
- package/docs/eval/issue50_/345/215/212/351/207/215/345/244/215/345/276/205/345/256/232/345/244/215/346/240/270_/344/277/256/345/244/215/350/256/260/345/275/225_v1.0.md +9 -9
- package/docs/eval/issue50_/345/276/205/345/256/232/345/244/215/346/240/270/345/205/245/351/230/237_/344/277/256/345/244/215/350/256/260/345/275/225_v1.0.md +4 -4
- package/docs/eval/issue50_/351/207/215/350/246/201/345/272/246/345/220/214/346/272/220/344/270/216/344/277/235/346/212/244/350/257/255/344/271/211_/344/277/256/345/244/215/350/256/260/345/275/225_v1.0.md +1 -1
- package/docs/eval/issue51_/344/270/200/351/224/256/345/256/211/350/243/205/345/244/261/350/264/245_/345/275/222/345/261/236/345/210/244/345/256/232_v1.0.md +1 -1
- package/docs/eval/issue52_/346/235/241/344/273/266/345/205/210/350/241/214/344/270/216/346/210/252/346/226/255/345/217/257/350/247/202/346/265/213_/344/277/256/345/244/215/350/256/260/345/275/225_v1.0.md +3 -3
- package/docs/eval//344/270/211/346/241/243/350/207/252/346/262/273_/346/255/245/351/252/244/342/221/242/345/217/230/346/233/264/345/215/225/344/270/216/345/233/236/346/273/232/345/216/237/350/257/255_/350/220/275/347/240/201/350/256/260/345/275/225_v1.0.md +3 -3
- package/docs/eval//344/270/211/346/241/243/350/207/252/346/262/273_/346/255/245/351/252/244/342/221/243/345/207/206/345/205/245/350/257/273/346/225/260_/350/220/275/347/240/201/350/256/260/345/275/225_v1.0.md +7 -7
- package/docs/eval//344/274/230/345/214/226/347/254/254/344/270/200/346/211/271_/346/216/245/347/272/277/344/270/216/347/255/211/344/273/267/345/217/230/346/215/242_v1.0.md +2 -2
- package/docs/eval//344/274/230/345/214/226/347/254/254/344/270/211/346/211/271_/351/227/250/347/246/201/350/275/254/346/255/243/344/270/216/350/260/203/345/272/246/346/255/242/350/241/200/344/270/216/351/227/250/346/216/247/346/224/266/345/217/243_v1.0.md +1 -1
- package/docs/eval//344/274/230/345/214/226/347/254/254/344/272/214/346/211/271_/344/276/235/350/265/226/351/200/217/344/274/240/344/270/216/345/257/271/346/213/215/345/217/243/345/276/204/344/270/216/350/264/237/347/274/223/345/255/230_v1.0.md +7 -7
- package/docs/eval//345/207/272/350/264/247/351/235/242/345/206/222/347/203/237_/350/277/233/350/264/247/351/227/250/347/246/201_v1.0.md +10 -10
- package/docs/eval//345/217/221/345/270/20307_/345/244/226/351/203/250/346/212/245/345/221/212/345/233/233/346/211/271/344/277/256/345/244/215/344/270/216/346/217/222/344/273/266/351/235/242/345/212/240/345/233/272_v1.0.md +4 -0
- package/docs/eval//345/217/221/345/270/20308_/350/207/252/350/277/255/344/273/243/344/270/216/347/235/241/347/234/240_/345/233/276/346/243/200/347/264/242/350/267/257/344/270/216/346/235/203/351/207/215_v1.0.md +1 -1
- package/docs/eval//345/217/221/345/270/20309_/346/243/200/347/264/242/351/235/242/344/270/211/346/211/271/346/224/266/345/217/243_v1.0.md +1 -1
- package/docs/eval//345/217/221/345/270/20310_/350/257/273/351/235/242/346/215/237/345/235/217UTF8/345/256/266/346/227/217/346/224/266/345/217/243_v1.0.md +71 -0
- package/docs/eval//345/217/221/345/270/20311_/345/244/226/346/212/245/345/205/255/350/277/236/344/277/256/344/270/216/344/270/226/347/225/214/346/250/241/345/236/213/345/272/225/345/272/247_v1.0.md +91 -0
- package/docs/eval//345/275/222/344/270/200/345/261/202/347/274/272/347/234/201/347/277/273/345/205/263_/344/277/256/345/244/215/350/256/260/345/275/225_v1.0.md +2 -2
- package/docs/eval//347/224/250/346/210/267/350/243/201/345/206/263/345/244/204/347/275/256_/347/254/254/344/270/200/346/211/271_v1.0.md +195 -0
- package/docs/eval//347/224/250/346/210/267/350/243/201/345/206/263/345/244/204/347/275/256_/347/254/254/344/272/214/346/211/271B6_/346/234/254/346/234/272/350/267/257/345/276/204/347/233/270/345/257/271/345/214/226_v1.0.md +78 -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 +1 -1
- 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 +3 -3
- package/docs/eval//347/254/2543/345/261/202stg/347/273/223/346/236/204/347/264/242/345/274/225_/345/256/236/346/226/275/350/256/260/345/275/225_v1.0.md +1 -1
- package/docs/eval//347/274/226/347/240/201/351/235/242/345/211/215/347/275/256_/345/205/245/345/217/243/350/207/252/344/277/235/350/257/201UTF8/344/270/216/346/226/207/346/234/254open/345/256/210/345/215/253_v1.0.md +1 -1
- 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_v26.md +196 -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_v27.md +259 -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_v28.md +217 -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_v29.md +270 -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_v30.md +231 -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_v31.md +281 -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 +1 -1
- package/docs/hive//350/234/202/345/267/242M6_ingest/345/256/236/346/226/275/350/256/241/345/210/222_v0.1.md +1 -1
- 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 +1 -1
- package/docs/hive//350/234/202/345/267/242/350/256/276/350/256/241_/347/220/206/350/256/272/345/257/271/351/275/220_v0.1.md +17 -17
- package/docs/hive//350/234/202/345/267/242/350/277/255/344/273/243_/345/256/217/350/247/202/344/270/216/347/276/244/344/275/223/350/260/203/345/272/246_v0.1.md +1 -1
- package/docs/mdcg/README/350/257/246/347/273/206/347/211/210_v0.4.10.md +2 -2
- 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 +42 -41
- package/docs/mdcg//345/217/221/345/270/203/351/227/250/347/246/201/351/223/276_v0.1.md +29 -8
- package/docs/mdcg//347/235/241/347/234/240/345/221/250/346/234/237_/350/277/220/347/273/264/345/211/215/346/217/220/344/270/216/347/273/264/346/212/244/346/214/207/345/215/227_v1.0.md +71 -1
- package/docs/plans//345/205/250/344/270/255/346/226/207/347/274/226/347/240/201/344/270/216/350/234/202/345/267/242/344/273/273/345/212/241/346/240/207/350/257/206/345/245/221/347/272/246_v2.0.md +1 -1
- package/docs/plans//345/244/232/344/270/273/344/275/223/344/270/226/347/225/214/346/250/241/345/236/213_/345/257/271/351/275/220/350/257/204/344/274/260/344/270/216/350/220/275/345/234/260/350/256/276/350/256/241_v0.1.md +141 -0
- package/docs/plans//347/235/241/347/234/240/344/270/216/350/207/252/350/277/255/344/273/243_/345/212/237/350/203/275/344/274/230/345/214/226/350/256/276/350/256/241_v0.4.md +2 -2
- package/docs/plans//350/257/255/344/271/211/346/227/266/347/251/272/345/233/276/350/241/245/345/205/250_/344/270/226/347/225/214/346/250/241/345/236/213/345/212/237/350/203/275/347/253/257_/350/256/276/350/256/241_v0.1.md +107 -0
- package/docs//345/267/245/344/275/234/347/272/252/345/276/213_/350/256/244/347/237/245/345/233/276/346/235/241/347/233/256_v1.1.json +9 -8
- package/docs//347/247/244_/350/256/260/345/277/206/347/263/273/347/273/237/350/257/204/346/265/213/350/247/204/350/214/203_v2.1.md +225 -0
- package/dsh/cordis-patch-profile-web.example.yml +2 -2
- package/lib/bridge.js +9 -0
- package/lib/hooks.d.ts +8 -1
- package/lib/hooks.js +94 -32
- package/lib/lib/hook_audit.d.ts +55 -0
- package/lib/lib/hook_audit.js +208 -0
- package/lib/lib/mutual.js +5 -1
- package/lib/lib/roleplay_web.js +17 -2
- package/md_cg/auditview.py +248 -0
- package/md_cg/bench6_arms.py +10 -6
- package/md_cg/bench_e2e_judge.py +4 -2
- package/md_cg/branches.py +29 -3
- package/md_cg/census.py +2 -1
- package/md_cg/consistency.py +38 -13
- package/md_cg/datapath.py +38 -11
- package/md_cg/forgetting.py +15 -2
- package/md_cg/freshness.py +32 -11
- package/md_cg/ghostref.py +130 -0
- package/md_cg/judgment_manifest.py +7 -0
- package/md_cg/mcp_server.py +58 -1
- package/md_cg/mdcg.py +4923 -4764
- package/md_cg/mdcos.py +40 -15
- package/md_cg/mreview/locate.py +1 -1
- package/md_cg/nodefile.py +77 -13
- package/md_cg/readcache.py +29 -4
- package/md_cg/rollback.py +12 -3
- package/md_cg/routing.py +10 -1
- package/md_cg/selfreport.py +12 -3
- package/md_cg/sleep.py +129 -13
- package/md_cg/sources.py +1 -1
- package/md_cg/state_events.py +131 -0
- package/md_cg/sustain.py +1436 -1436
- package/md_cg/test_auditview.py +277 -0
- package/md_cg/test_autonomy_modes.py +2 -1
- package/md_cg/test_boot_openblas_guard.py +197 -0
- package/md_cg/test_ccg_form_parity.py +95 -4
- package/md_cg/test_cons200_scan_selection.py +4 -2
- package/md_cg/test_corrupt_utf8_read_surfaces.py +451 -0
- package/md_cg/test_datapath_device_name.py +62 -3
- package/md_cg/test_generation_guard.py +20 -11
- package/md_cg/test_ghostref.py +182 -0
- package/md_cg/test_health_corrupt_utf8.py +37 -0
- package/md_cg/test_index_crossprocess_reload.py +39 -24
- package/md_cg/test_interop.py +1 -1
- package/md_cg/test_issue52_scan_condition_first.py +1 -1
- package/md_cg/test_issue53_cipher_health_hash.py +385 -0
- package/md_cg/test_lock.py +16 -7
- package/md_cg/test_m3_h9_semantic_guard.py +1 -1
- package/md_cg/test_n230_dirty_replay.py +375 -375
- package/md_cg/test_n238_body_text_parity.py +156 -0
- package/md_cg/test_n276_probe_hoist.py +199 -0
- package/md_cg/test_p4_freshness.py +95 -1
- package/md_cg/test_policy_required_ccg.py +3 -1
- package/md_cg/test_readcache_prodpath.py +66 -0
- package/md_cg/test_sleep.py +58 -1
- package/md_cg/test_sleep_p1.py +218 -2
- package/md_cg/test_state_events.py +178 -0
- package/md_cg/test_time_core_lint.py +8 -1
- package/md_cg/test_writepipe.py +8 -5
- package/md_cg/tokens.py +11 -2
- package/md_cg/writepipe.py +76 -0
- package/package.json +2 -2
- package/skills/plugin.json +1 -1
- package/src/bridge.ts +9 -0
- package/src/hooks.ts +576 -517
- package/src/lib/hook_audit.ts +243 -0
- package/src/lib/mutual.ts +5 -1
- package/src/lib/roleplay_web.ts +17 -2
- package/zcode/AGENTS.md +9 -9
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# 缺陷挖掘 · 自主迭代 第 32 轮报告(性能面深挖)
|
|
2
|
+
|
|
3
|
+
> **报告文件**:`docs/eval/缺陷挖掘_自主迭代_v31.md`(文件序号 v31;**轮次号为第 32 轮**——本轮工作流草案即「缺陷迭代第 32 轮性能面」(`.zcode/workflow-drafts/缺陷迭代第32轮性能面.dwf.ts`,本席 `ls` 复核存在),与文件序号序列自洽:v30 = 第 31 轮 TS 面)。
|
|
4
|
+
> **扫描域**:性能面四区——`retrieval-io`(md_cg 检索/读缓存面)/ `index-boot-write`(索引装载与写提交面)/ `compiler-hive-rust`(compiler/hive/swarm-rust 面)/ `plugin-hotpath`(插件 TS 热路径面)。
|
|
5
|
+
> **候选池**:8 条(四区扫描 → 逐条独立复核)。**结论分布**:`real 8` / `already_covered 0` / `false_positive 0`。
|
|
6
|
+
> **分诊**(材料 ②):`fix 6`(编号 **N273–N278**)/ `defer 2` / `rejected 0`。**执行面**:本轮编排上限 `MAX_FIX=5`——fix 前 5 条(N273–N277)进入修复流程,第 6 条 **N278 被截断、未执行**(本席实查三证,见 §四-7)。
|
|
7
|
+
> **落地实况**(本席实跑核验工作区 + 材料 ③):**N273 / N274 / N276 = verified**;**N275 / N277 = blocked**(未改码);**N278 = 未执行(截断)**。全部落码集中在 `md_cg/` 面(9 件修改 + 1 件新增守卫),`src/`、`hive/` 零改动。
|
|
8
|
+
> **首次编写**:本文件此前不存在(本席实跑 `ls docs/eval/` 复核最大为 v30)。
|
|
9
|
+
|
|
10
|
+
**行号口径**:全文行号为本席**亲读的现工作区行号**(工作区含本轮 N273/N274/N276 的未提交改动),与材料 ①/③ 的时点行号有偏移处逐条注明。
|
|
11
|
+
|
|
12
|
+
**来源标注约定**:材料 ①(四区复核席)、②(分诊席)、③(修复席)、④(编排三关读数)、⑤(自检席);未注明来源且写明「本席实跑」的读数为本会话第一手。
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 一、执行摘要
|
|
17
|
+
|
|
18
|
+
1. **扫描面**:性能面四区(见文首),候选池 8 条、独立复核全部`real`(复核席逐条亲手搭临时库复现,见 §三-1 全量复核表)。判据全部为可复现量化读数(调用/盘读计数或同条件串行 3rep 中位),符合本轮「单发墙钟不作判据」的口径。
|
|
19
|
+
2. **分诊与执行**(材料 ② + 本席核验):real 8 条 → `fix 6`(**N273–N278**,按优先级降序)/ `defer 2` / `rejected 0`;编号自树内实占最大值 N272 之后连续编(§四-2)。**执行面如实记录**:编排脚本上限 `MAX_FIX=5`(本席实读本轮工作流脚本原文 `const MAX_FIX = 5;` + `const fixList = triage.fix.slice(0, MAX_FIX);`)——**N278(`src/lib/hook_audit.ts` 审计 `#save`)未进入修复流程**,材料 ③ 的 fixOutcomes 亦仅 5 条(N273–N277,本席解析核对)。N278 列遗留清单(§五-3)。
|
|
20
|
+
3. **落地实况**(本席实跑核验工作区 `git status`/`git diff --stat` + 逐点读码 + 守卫单跑):
|
|
21
|
+
- **N273 / N274 / N276 = verified**(落码在位、4 件守卫单跑全绿、parity 逐位一致,见 §二/§四)。
|
|
22
|
+
- **N275 / N277 = blocked**(修复席按红线未改码:N275 命中「不得触碰 hive/src(锚点漂移面)」;N277 命中「语义面改动须裁决」四条实证)。
|
|
23
|
+
- **N278 = 未执行**(MAX_FIX 截断,非判定 blocked、亦非已修)。
|
|
24
|
+
4. **编号实占核对(硬要求 ③)**:本席现跑 `git grep -ohE 'N[0-9]{3,4}'`(工作区)与对 `HEAD` 树同款扫描:**HEAD 面实占最大 = N272**(`802` = `# noqa: N802` lint 码,剔除;`docs/promo/promo-visual-1.png` 的 N273 命中为 PNG 压缩字节巧合、`.zcode` 草案件的字面量为扫描器模板注释,均非占用);工作区新增字面量 N273/N274/N276 全部落在本轮修复面,N275/N277/N278 零命中(未落码,与 §二 状态一致)。N273–N278 连续、全局唯一。
|
|
25
|
+
5. **三关读数(本席独立复跑,与材料 ④ 逐项一致)**:python 全量 `python -X utf8 scripts/run_tests.py --jobs 4` → **退出码 0、`SUMMARY 352/352 通过,5 跳过`**(材料 ④ 同读数);`npm test` → **退出码 0、`tests 127 / pass 126 / fail 0 / skipped 1`**(材料 ④ 记「退出码 0」,计数为本席复跑值);`npm run gate` → **退出码 1、VERDICT=FAIL**(材料 ④ 记「退出码 1、VERDICT=非 PASS」,同读数)——**红腿明细(本席实跑取得)**:唯一失败 = `check_publish_artifact` 的 **R4 非追踪件面**(`命中=1;非追踪=31,允许=30`,唯一点名 = 本轮新增守卫 `md_cg/test_n276_probe_hoist.py` untracked,判据「包内非追踪件仅允许 `lib/`」);`check_unreachable` 577 文件命中 0;因 gate 脚本为 `&&` 链,其后的其余 9 腿在本轮门禁中未经执行(逐腿单跑读数见 §四-9)。**属交付面流程项**(新守卫/报告须随批次 `git add`),非正文形态缺陷。
|
|
26
|
+
6. **严重度不一致(如实并列)**:**N276**——材料 ① `low` / 材料 ③ `medium`(不一致);其余:N273(medium/medium)、N274(medium/medium)、N275(medium/medium)、N277(medium/medium)一致;N278(① `low`,③ 无条目)。
|
|
27
|
+
7. **重复面处置**:8 条的「未被既有编号/历轮留档覆盖」排查由材料 ① 逐条给出(含 N121 / N52 / N212 / N241-N242 / N133 / D6-R-2 / v25 / P1b2 / v26 / 批次105 / T4 等的核对),本席读核其现码行号与落码在位性;历轮留档复测结论见 §三-2(含材料缺口如实登记)。
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 二、修复清单(6 条:N273–N278)
|
|
32
|
+
|
|
33
|
+
> **读数来源声明**:各条「修前基准 → 修后同条件读数」「守卫读数(含定点变异)」「语义不变证明」均**来自材料 ③(修复席)**,**非本席实跑**(红基线/前后对比须改码与专设临时库,属修复席职责;本 ask 为报告编译)。本席实跑部分为:工作区落码核验(§四-3)、4 件守卫单跑(§四-4)、rank_parity(§四-5)、全量回归与 npm test(§四-6)。材料 ③ 状态:N273/N274/N276 = `verified`、N275/N277 = `blocked`、N278 无条目(截断未执行);本节如实转写、不归一。
|
|
34
|
+
|
|
35
|
+
### N273 · `_like` 召回键派生物(`positive_body`)缓存缺口
|
|
36
|
+
|
|
37
|
+
- **where(现行)**:`md_cg/mdcg.py:3380-3395`(新增 `MdCG._positive_body(entry, content)` 钩子,默认直调 `nodefile.positive_body`;材料 ③ 载 :3379-3395)· `md_cg/mdcg.py:4122`(`_like` 增 `entry=None, positive_body=None` 形参;保 `staticmethod` → 三/四参旧签名调用零改动)· 透传调用点 7 处:`md_cg/mdcg.py:3842/3871/3976`、`md_cg/mdcos.py:982/1011/1047/1099` · `md_cg/mdcos.py:1360`(`_path_fuzzy` 同族直调改走钩子)· `md_cg/readcache.py:195-216`(install 增 `_positive_body` path 键控缓存层,走既有 `_fresh` 脏集失效;`:224` `clear` 增 `_positive_body_cache`)。守卫:`md_cg/test_readcache_prodpath.py:176-216`(P8 节)+ `:80`(spy 助手 `count_pb`)。
|
|
38
|
+
- **问题**:`content` 已被读缓存常驻(`readcache.py:139-151`),只依赖 `content` 的派生物里 readcache 只缓存了更贵的 `bigrams(normalize_en(c))`(`readcache.py:176-191`),漏了同样纯、同样只依赖 `content` 的 `positive_body(content)`——每个候选节点每查询重跑一遍逐行 CCG 剥除(含 `re.escape`+`re.match` 的 regex 构造);8000 池实测**每查询 8000 次**、单点 ~11.6µs、pb 总耗时 ~102ms(占热态查询 **46.9%**)(材料 ③;复核口径见材料 ①:单点 9.97µs、缓存不对称直接对照 `_doc_norm_bigrams` miss=0 而 `positive_body` 仍 8000 次/查询)。
|
|
39
|
+
- **修法**:照既有 `_doc_norm_bigrams` 钩子同形——`_like` 的召回键正文改由「每查询每候选节点重算」变为「readcache path 键控 + `_DirtyDict` 脏集失效的派生物复用」;未改面(诚实边界):`md_cg/reach.py:64` 的 `_doc_tokens` 仍直调(reach 索引重建期每节点一次、`MDCG_REACH` 默认关)、`md_cg/bench_membench.py:377` 保留三参旧签名(诊断脚本兼容面)。
|
|
40
|
+
- **修前基准 → 修后同条件读数(材料 ③;条件:`%TEMP%` 下临时库、8000 节点、每节点 15 行含六要素 + 不适用条件行、build 一次复用同一份库文件、串行单进程、`record=False`、热态 3rep 取中位)**:
|
|
41
|
+
- 修前:`hot_ms_med = 220.7 / 216.0 ms`;每查询 `positive_body` 调用 **8000 次**;pb 总耗时 101.9 / 101.4 ms(占热态 46.9%);单点 11.63 / 12.30 µs;冷态 609.6 / 616.1 ms(8000 calls,首装)。
|
|
42
|
+
- 修后:`hot_ms_med = 114.6 / 117.8 ms`(相对修前中位约 **-47%**);每查询调用 **0 次**;pb 总耗时 0.0 ms;`_positive_body_cache` 在位(len=8000)。冷态 614.1 / 617.5 ms(首次装载仍 8000 calls,首装成本不增)。
|
|
43
|
+
- 结果面:top-k(id + 6 位小数分数)修前/修后**逐位一致**(cold 与 3 个热 rep 全部 True)。
|
|
44
|
+
- **守卫读数(材料 ③)**:P8 节 PASS 20 / FAIL 0(调用计数为主判据、identity 快照为辅、P8d 为常驻红基线自证腿);**定点变异自证**:删一处调用点的 hook 透传(mdcos.py T2 调用点)→ EXIT=1、P8pre/P8a/P8b/P8c/P8e 全红,恢复后复跑复绿。**本席实跑复跑:`python -X utf8 -m md_cg.test_readcache_prodpath` → `PASS 20 / FAIL 0`、RC=0**(§四-4)。
|
|
45
|
+
- **语义不变证明(材料 ③)**:① `python -X utf8 scripts/rank_parity.py --exe rust/target/release/mdcg-eval.exe`(内建语料,先 `cargo build --release`)→ 逐位一致 10/10、集合 10/10;加 `--dataset scripts/retrieval_dataset.json` 亦 10/10。② 同进程等价对拍:A 全池 8001 节点 `cg._positive_body(e,c)` == `nodefile.positive_body(c)`;B `_like` 钩子版 == 三/四参旧签名版(128016 次判定全等);C/D search 端到端「缓存版 == 摘回未缓存版」逐位一致(8 query,含 tier/scanned)+写 1 节点后同款。③ 相关既有守卫全绿:`test_p2_six_elements` 42/0、`test_p33_ccg_wiring` 58/0、`test_ccg_form_parity` 108/0(1 条既有 SKIP)、`test_reach` 39/39、`test_readcache_precise_inval` 23/0、`test_opt_batch1_md_cg` 22/0。④ 全量回归 `python -X utf8 scripts/run_tests.py --jobs 4` → 351/351 通过、退出码 0(该条修复时点读数;其后 N276 守卫入集后为 352/352,见 §四-6)。
|
|
46
|
+
- **severity**:medium(材料 ① 与材料 ③ 一致)。**状态**:**verified**(材料 ③;本席核验落码在位,§四-3)。
|
|
47
|
+
|
|
48
|
+
### N274 · `_score` 内 freshness 乘子链的逐节点 env 重读(循环外提升)
|
|
49
|
+
|
|
50
|
+
- **where(现行)**:`md_cg/mdcg.py:4170-4181`(`_score` 循环外各解析一次 `freshness.enabled()` / `freshness_now()` / `resolve_gamma(None)`;本席亲读三取在 :4179-4181,材料 ③ 载 :4178-4180)· `md_cg/mdcg.py:4207-4210`(循环内经既有 `entry_weight(e, now=…, gamma=…, fm=…, enabled=…)` 透传,循环内零 env 读取)· `md_cg/freshness.py:183-201` / `:205-240` / `:269-315`(`decay_factor` / `refresh_factor` / `entry_weight` 各增可选 `enabled=None`;`:190-191`/`:221-222`/`:288-289` 自算分支经 `globals()["enabled"]()` 保持与改前 `enabled()` 逐位一致的解析语义;`:310`/`:312` 向核透传)。
|
|
51
|
+
- **问题**:`_score` 对每个候选节点调用 freshness 乘子链,链上 6 处 `(environ or os.environ).get(...)` 被逐节点重读(修前形态:4×`freshness.enabled` @ mdcg.py:4161 / freshness.py:272/:190/:213 + 1×`freshness_now` @ :155 + 1×`temporal_gamma` @ mdcos.py:90);一次查询内 flag 恒定却按节点数重复付费——**8001 池实测 56007 次/查询 = 7×8001**(enabled 32004 = 4×N、now 8001、resolve_gamma 8001、temporal_gamma 8001)(材料 ③;复核席另测 8000 池 48011 次/查询 = 6×8000+11、absent key 单次 0.363µs、消融 -21.6%/-22.3%,见材料 ①)。
|
|
52
|
+
- **修法**:循环外提升 + 形参透传(`enabled=None` 默认自算 = 其余调用方零变更;禁用时不解析 now/γ,与修前「`enabled=False` 早退于解析之前」同序;恒不调 `entry_weight` 保持修前零调用);与 `_path_temporal` 的既有模式(mdcos.py:1301 `gamma = temporal_gamma()` 循环外取)同款。
|
|
53
|
+
- **修前基准 → 修后同条件读数(材料 ③;条件:`%TEMP%` 下同一临时库、8001 节点、每节点 15 行含六要素、串行、`record=False`、热态 3rep 取中位)**:
|
|
54
|
+
- 修前:`hot_ms_med = 106.8 / 111.1 ms`;每查询 freshness 调用 **56007 次**;top-10 ids/scores 留档。
|
|
55
|
+
- 修后:`hot_ms_med = 80.4 / 81.8 / 76.7 ms`(**-24.7% / -26.4%**);每查询调用 **8005 次**——enabled/now/temporal 各 1 次(env 读取面常数化),余 gamma 8002 为 `resolve_gamma` 的 early-return 薄调用(不读 env,~0.15µs/节点;保留以守「非法 gamma 回落缺省」单点边界)。
|
|
56
|
+
- 结果面:top-10 ids/scores 与修前**逐位一致**,tier/scanned 同。
|
|
57
|
+
- **守卫读数(材料 ③)**:`md_cg/test_p4_freshness.py` 新增 **G13**(:586-660:env 读取面与文档数无关判据 + 三面常数断言 + 常驻自证腿 + 显式透传/自算逐位同值 + `enabled=False` 恒 1.0);G5(:288-296)结构断言匹配形态同步为跨行调用(判据性质不变)。`test_p4_freshness` **89 通过 / 0 失败**、`--mutate` 5/5 转红 rc=0;**定点变异自证**:撤回循环内透传 → EXIT=1、G13 四条红(enabled/now/temporal 随 N)+ G5 红,恢复后复跑 89/0 复绿。**本席实跑复跑:`python -X utf8 -m md_cg.test_p4_freshness` → `89 通过 / 0 失败`、RC=0**(§四-4)。
|
|
58
|
+
- **语义不变证明(材料 ③)**:① rank_parity(内建语料 + `--dataset`)各实跑 → 逐位一致 10/10、集合 10/10、top-1 10/10。② 同进程等价对拍:A1 `entry_weight` 自算==显式透传(全池 8001 节点逐位);A2/A3 `decay_factor`/`refresh_factor` 两形态(多 dt、3×2×3 组)全等;B1 固定时钟(`MDCG_FRESHNESS_NOW`)下 `_score` 生产路径 ==「丢弃透传替身」逐位一致(2000 文档,first_diff=None);B2 判别力:生产路径 != 乘子关态。③ 既有守卫复跑全绿(`test_mode_parity` 64/0 等);全量回归 351/351(一次带并行的跑出现 9 条 scripts/ 组红,经逐条独立复跑 9/9 全绿,确认为并发资源竞争伪失败;上记 351/351 为独占复跑)。
|
|
59
|
+
- **severity**:medium(材料 ① 与材料 ③ 一致)。**状态**:**verified**(材料 ③;本席核验落码在位,§四-3)。
|
|
60
|
+
|
|
61
|
+
### N275 · hive serve 主循环每拍 status.json 双读(排序 pass + 领取 pass)
|
|
62
|
+
|
|
63
|
+
- **where(现行)**:`hive/src/scheduler.rs:340`(排序 pass `for id in job::list_jobs_by_created(&cfg.jobs)`)与 `:343`(领取 pass `read_status_classified(&dir)`);`hive/src/job.rs:905-912`(`list_jobs_by_created` 逐 id 调 `created_ts_of`)→ `:882-891`(`created_ts_of`→`read_status`→`read_json`,无 memo)与 `:708-717`(`read_status_classified`:is_file+read_json)、`:682-684`(`read_status`);`poll_ms=400` 见 scheduler.rs:133、sleep 见 `:459`。
|
|
64
|
+
- **问题**:hive serve 主循环每拍对池内每个任务的 `status.json` 做**两次完整读+解析**(排序 pass 一遍取 `created_ts`,紧接着的领取循环再 `read_status_classified` 一遍);两遍同文件、同拍、无缓存(Rust 侧 `cache|memo|CACHE` 零命中),排序 pass 已解析的 Json 未回传给循环复用。**复核读数(材料 ①,本席未复跑)**:N=5000 时 375.9ms/拍(其中第二遍占 43.7%~49.1%,可完全消除),已占 `poll_ms=400` 的 94%(每拍周期实际翻倍);机械判据:盘读次数 A=2N、B=2N、C(纯 listdir)=0;行为判据证实两遍为独立盘读(probe 在 A pass 后改一个 state、删一个 status.json,B pass 读到新值/Absent)。
|
|
65
|
+
- **修法(材料 ②)**:拍内单次读——让排序 pass 的解析结果与领取 pass 共用(`list_jobs_by_created` 返回 `(id, StatusRead)` 序列,排序键取其中 `created_ts`,领取段不再二次 `read_status_classified` 读盘)。须守:H-3 三态语义(`job.rs:696-717`:Absent 与 Corrupt 不混)、`created_ts` 排序真值单点(`:893-912`,缺/坏一律 `i64::MIN` 哨兵)、合并后「拍内单快照」窗口语义注释记账、旧签名存量调用点行为逐位不变。
|
|
66
|
+
- **修前基准 → 修后同条件读数**:**无前后动态基准**——修复席按红线(明文「不得触碰 hive/src(锚点漂移面)」,且 hive/src 含在役完整性锚判据实现)**未改任何代码**,无法注入读计数(材料 ③)。静态判据(修复席读码):现状每拍 status 读+解析 = 2N(A pass N + B pass N;`list_jobs` 本身 0 次读);量化读数(375.9ms/拍等)源自分诊材料(即材料 ① 复核席),修复席未复跑。**status = blocked**。
|
|
67
|
+
- **守卫读数**:未新增/未改动守卫(未改码);若授权后修,守卫拟落在 hive 既有测试面(`job.rs` 内单测扩展「单次读变体保序/三态」+ `hive/test_h3_h7_scheduler.py` 等行为腿),修复席未落。
|
|
68
|
+
- **语义不变证明**:不适用(未改码);须守语义面已在上述「修法」中点明。
|
|
69
|
+
- **severity**:medium(材料 ① 与材料 ③ 一致)。**状态**:**blocked**(材料 ③;本席核验 `hive/` 零改动,§四-3)。
|
|
70
|
+
|
|
71
|
+
### N276 · `MdCG.get` 首行的每调用索引代际签名重探(写链读环批内单探针)
|
|
72
|
+
|
|
73
|
+
- **where(现行)**:`md_cg/mdcg.py:3307-3309`(`get` 增可选 `probe=True`,默认行为不变;`probe=False` 跳过首行 `_maybe_reload_index()`)· `md_cg/mdcos.py:5123-5140`(`MdCGSecure.get` 覆写同步 probe 形参:未命中分支的 N196 探活同跳,`super().get(node_id, probe=probe)` 透传)· `md_cg/forgetting.py:185-196`(`redundancy` 循环外单探一次 + 环内 `cg.get(nid, probe=False)`);`:204-205` 环内调用 · `md_cg/consistency.py:635-648`(`check` 精比环同款)。守卫:`md_cg/test_n276_probe_hoist.py`(新增,199 行、11 断言)+ 夹具接口同步 `md_cg/test_cons200_scan_selection.py:331`(`_CountGet.get(nid, probe=True)` 原样透传,计数判据一字未动)。
|
|
74
|
+
- **问题**:每次 `cg.get` 都重算一次索引代际签名探针(`_maybe_reload_index`→`_index_signature`:快照 `os.stat` + `os.listdir` + 逐分片 stat);写链内 `forgetting.redundancy`(≤MAX_COMPARE=240)与 `consistency.check`(≤MAX_SCAN=200)各调 `cg.get` 一遍,**单次写内约 440 次探针结果恒同**(复核席实测:N=800 单写 `os.stat=450`、`os.listdir=444`、444 次探针 `sig_distinct=1`、`reload_true=0`;单次签名 38.15µs ⇒ 440 次 ≈16.8ms,占单写中位 87.5ms 约 19%)(材料 ①)。
|
|
75
|
+
- **修法**:`get` 增可选 `probe=True`(默认零变);写链两环循环外单探一次、环内 `probe=False`;无 `_maybe_reload_index` 的载体(测试桩)回落原 `cg.get(nid)` 零破坏。语义窗口 = 批量读期间「他进程写入」不被探知(毫秒级),与读缓存已声明的进程内一致性边界同款,已注释记账。
|
|
76
|
+
- **修前基准 → 修后同条件读数(材料 ③;条件:`%TEMP%` 下固定临时库、300 节点同层、build 一次复用、串行、3rep 取中位)**:
|
|
77
|
+
- 修前:A `forgetting.redundancy` 探针 **240 次/调用**、中位 23.19 / 23.06 ms;B `consistency.check`(`log_write=False`)探针 **200 次/调用**、中位 23.73 / 23.17 ms;合计 **440 次探针/写**(与复核席 `probe_calls=444` 同口径)。
|
|
78
|
+
- 修后:A 探针 **== 1**、中位 14.83 / 14.62 / 13.97 ms;B 探针 **== 1**、中位 16.62 / 17.16 / 16.15 ms;合计探针 **440 → 2**、墙钟约 **46.9 → 31.5 ms**(省约 15.4ms/写;反推单次探针 ≈ 35µs,与复核 38.15µs 吻合)。
|
|
79
|
+
- **守卫读数(材料 ③)**:`test_n276_probe_hoist` **11 通过 / 0 失败**;**定点变异自证**:把两处环内改回逐节点探针 → EXIT=1、C1a/C2a 红(calls=13),恢复后复跑 11/0 复绿。相关既有测试复跑全绿:`test_p9_forget_protect` 37/0、`test_cons200_scan_selection` 27/0(夹具同步后)、`test_issue52` 36/0、`test_h4_sustain_snapshot` 43/0、`test_writelimit`、`test_n238_body_text_parity` 37/0、`test_b1_auto_id_multiproc` 11/0、`test_b1b2_write_face` 33/0、`test_n206_stdio_jsonrpc_type` 33/0。**本席实跑复跑:`test_n276_probe_hoist` → `11 通过 / 0 失败`;`test_cons200_scan_selection` → `27 通过 / 0 失败`**(§四-4)。
|
|
80
|
+
- **语义不变证明(材料 ③)**:① rank_parity(内建语料 + `--dataset`)各实跑 → 逐位一致 10/10。② 同库等价性:C3 `get(nid)` 与 `get(nid, probe=False)` 返回逐位一致;C7a/C7b `redundancy` 与 `check` 在「单探+probe=False」与「逐节点 probe=True」两形态下输出逐位一致(check 剔动态键 `t`);C5 他实例写入后单探+probe=False 读到新节点(可见性不丢)。③ 全量回归 352/352、5 跳过、退出码 0(含新增守卫入集)。
|
|
81
|
+
- **severity**:**材料 ① `low` / 材料 ③ `medium`(不一致,如实并列)**。**状态**:**verified**(材料 ③;本席核验落码在位,§四-3)。
|
|
82
|
+
|
|
83
|
+
### N277 · 写链读环逐节点 `cg.get` 裸读盘(不经读缓存)
|
|
84
|
+
|
|
85
|
+
- **where(现行)**:`md_cg/mdcg.py:3307-3328`(`get`:裸 `open`+`nodefile.loads`,不经读缓存;本席亲读 :3314-3316)· `md_cg/forgetting.py:192-205`(`redundancy` 环内逐节点 `cg.get(nid)`)· `md_cg/consistency.py:637`(`check` 精比环 `cg.get(nid)`)· `md_cg/readcache.py:128-153/176-191`(install 只包 `_read_status`/派生钩子,`get` 零包装)。
|
|
86
|
+
- **问题**:写路径每次落盘经 `forgetting.redundancy` 对同层节点逐节点 `cg.get` 读盘,`cg.get` 为裸 `open`+`nodefile.loads` 不经默认开启的读缓存;同一条检索已把整池解析进 `_read_cache` 后,写链仍逐节点重读(复核席实测:600 池预热 `_read_cache=600`/`_norm_bigrams_cache=600` 后 `redundancy` 仍 `loads=240`;预热后写链仍 `loads=440` = redundancy 240 + consistency 200)(材料 ①)。
|
|
87
|
+
- **修法(材料 ②,未执行——须裁决)**:`get` 改走既有三态读单点 `self._read_status(e)`(readcache 已包装的缓存面),保留既有 `_open_content` 解密/鉴权链。**修复席判定 blocked 的四条实证**(材料 ③):① 对外可观测面:`get` 就是 MCP `op=read` 的实现(`md_cg/mcp_server.py:2314→:2347 cg.get(_nid)`)——外部直改盘面后 `cg.get` 立即可见、`_read`(缓存面)仍旧值,改后 read op 的对外可见性应验变化;② 与历轮裁决方向相反:`test_govern_directread.py` 头注载明既定口径——治理面需真值的读点改走 `direct_read`(穿透缓存),第 7/9 轮共 29+ 处从缓存面拨回直读,`get` 是仅存的公开直读口;③ 对象别名面(材料未提):`get` 两次返回**不同对象**(新解析)vs `_read` 两次返回**同一对象**(缓存复用)——读-改-写消费者(如 `forgetting.reinforce:539`、`evolution.apply:366`)可就地改返回的 frontmatter 而污染缓存对象;④ 越界行为差异:现状 `get` 的 `_node_disk_path` 在 try 之外(越界 `ValueError` 上抛),`_read_status` 吞为 `(None,None,None)`;⑤ 守卫语义立场:`test_reconcile_v0.py` [4] 组 4b 断言「自动修复:检索面读到盘面新正文(**盘面为真源**)」。
|
|
88
|
+
- **修前基准 → 修后同条件读数**:**无修后读数**(未改码,status=blocked)。修前计数与收益上界(材料 ③;条件:同条件临时库、300 节点、串行):① 写链 `loads` 计数:A redundancy 240 次 + B check 200 次 = **440 次/写链**(与复核席 `loads=440` 口径吻合);② 收益上界:240 次 `get`(含 loads)中位 **20.99ms** vs 240 次 `_read`(缓存命中)中位 **0.07ms**(省 ~20.9ms/240 次;440 次外推 ≈38ms/写链)。
|
|
89
|
+
- **守卫读数**:未新增/未改动(未改码);若裁决授权,验证方案(材料 ③):rank_parity 两模式逐位一致 + 协作写者场景 `get` 两形态输出逐位一致 + 外部直改边界文档化记账 + `get` 消费者(尤其读-改-写链)逐点排查 + 全量回归。
|
|
90
|
+
- **语义不变证明**:不适用——该改动在「非合作写者直改盘面」与「返回对象身份」两个面上**无法给出全域逐位一致的等价性断言**(证据见上述①③),这也是判 blocked 的理由本身。
|
|
91
|
+
- **severity**:medium(材料 ① 与材料 ③ 一致)。**状态**:**blocked**(材料 ③;本席核验 `get` 保持裸读形态、`readcache` 未新增 `get` 包装,§四-3)。
|
|
92
|
+
|
|
93
|
+
### N278 · 审计 `#save` 每次 mkdir + 新建时间戳 tmp(未执行 · MAX_FIX 截断)
|
|
94
|
+
|
|
95
|
+
- **where(修前/现行)**:`src/lib/hook_audit.ts:211-242`(`#mutate`→`#save`:`:233` `mkdirSync(dir,{recursive:true})` + `:234` 新建 `${path}.${pid36}.${now36}.tmp` + 全量 pretty-JSON `writeFileSync` + `renameSync`;本席亲读保持修前形态);调用面 `src/hooks.ts:518/523/531/537`(observeKind/filtered)+ `:426/430/432`(not_ready/written/failed)+ `:506`(subagent 会话级早 return)+ `:559/569`(sanitized);对照 `src/bridge.ts:24-34`(`debugLogDirReady` 缓存 mkdir 形制)。
|
|
96
|
+
- **问题(材料 ① 复核席;条件:编译产物 `lib/` 直测、%TEMP% 临时库、node v24、串行 3 进程 × 每进程 warmup+300 iter、3 rep 取中位)**:批次 105(commit c6f59263)新增的落盘审计**恒开**,且每条进入消息级处理的 user/message 事件(无论写入还是被滤)触发 **2 次 `#save`**;每次 `#save` 无条件 mkdirSync + 新建 pid/时间戳命名 tmp + writeFileSync 全量 pretty-JSON + renameSync,全部在宿主 session/event 同步回调内执行,无任何配置开关可关。关键读数:observeKind 单次中位 **0.3893 ms**、written 单次 **0.3651 ms**、一条 user 消息(observeKind+written**)0.7233 / 0.7393 / 0.7432 → 中位 **0.7393 ms**;单次 `#save` 分解 total 0.3583 = mkdirSync 0.0300 + writeFileSync(新 tmp, 2381B) 0.1357 + renameSync 0.1910 ms;对照:写新文件 0.1346 vs 覆盖已存在文件 0.0944 ms;fs 调用计数(零侵入 loader 重定向 node:fs):S1 一条 user 事件 `{mkdir:2, write:2, rename:2}`、S2 一条被滤事件同样 2 次审计写而 MCP 调用 0、S3 子代理会话仅 1 次。边界订正:schemastery 3.18.1 实测透传未知键——手写 `memory.auditPath` 可改路径但仍关不掉(无「关闭」开关)。
|
|
97
|
+
- **修法(材料 ②,未执行)**:`#save` 复用对照件的「目录就绪一次」缓存(mkdir 仅首次或失败后重试,同 `src/bridge.ts:24-34` 的 `debugLogDirReady` 形制),tmp 名固定为 `<path>.<pid>.tmp` 复用(免每次新建),保留 rename 失败清理 tmp 的既有路径。预期收益(材料 ②):约 0.1–0.14ms/消息(约 15–20% 审计成本);判据 = fs 调用计数(`mkdir 2→≤1/进程`、write 落同一 tmp)。
|
|
98
|
+
- **修前基准 → 修后同条件读数**:**无修后读数——该条未进入本轮修复**:分诊列出 fix 6 条(按优先级降序,N278 居第 6),编排上限 `MAX_FIX=5` 将其截断(本席实查三证:① 本轮工作流脚本原文 `const MAX_FIX = 5;` + `const fixList = triage.fix.slice(0, MAX_FIX);`;② 材料 ③ fixOutcomes 仅 N273–N277 五条(本席解析核对);③ 工作区 `src/` 零改动、`hook_audit.ts` `#save` 保持修前形态、全树 N278 字面量零命中——见 §四-7)。
|
|
99
|
+
- **守卫读数**:无(未执行)。**语义不变证明**:不适用(未执行)。**severity**:low(材料 ①;材料 ③ 无条目)。**状态**:**未执行(截断)**——既非 verified 亦非 blocked,列 §五-3 遗留。
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 三、发现明细
|
|
104
|
+
|
|
105
|
+
### 3-1 全量复核表(8 条)
|
|
106
|
+
|
|
107
|
+
> **结论与严重度来源**:材料 ①(四区复核席);「去向/编号」为材料 ② 分诊(含 MAX_FIX=5 执行截断的如实登记);where 列的「现行」行号为本席亲读(§四-3),与材料时点行号偏移处注明。8 条 `verdict` 全部为 `real`(复核席逐条亲手复现)。
|
|
108
|
+
|
|
109
|
+
| # | where(材料时点 → 现行,本席亲读) | 结论 | severity(①/③) | 覆盖号 | 去向 / 编号 | 来源 |
|
|
110
|
+
|---|---|---|---|---|---|---|
|
|
111
|
+
| 1 | `md_cg/mdcg.py:4161` + `freshness.py:190/213/272/155` + `mdcos.py:90` → 现行循环外 `mdcg.py:4170-4181`、透传 `:4207-4210` | real | medium/medium | — | **fix · N274 · verified(已落地)** | 材料 ①③;本席读核现码 |
|
|
112
|
+
| 2 | `md_cg/mdcg.py:4110`(`_like` 内 `positive_body`)→ 现行钩子 `mdcg.py:3380-3395`、缓存层 `readcache.py:195-216` | real | medium/medium | — | **fix · N273 · verified(已落地)** | 材料 ①③;本席读核现码 |
|
|
113
|
+
| 3 | `md_cg/mdcg.py:1578-1601`(`_index_signature` 逐分片 stat)+ `fsutil.py:89-102` | real | low/— | — | **defer**(残片回收与节流触语义面,须设计裁决) | 材料 ①②;本席读核现码 |
|
|
114
|
+
| 4 | `md_cg/forgetting.py:186-192`(`redundancy` 逐节点 `cg.get`)→ 现行 `:192-205` | real | medium/medium | — | **fix · N277 · blocked(未改码,语义面四条实证)** | 材料 ①③;本席读核现码 |
|
|
115
|
+
| 5 | `md_cg/mdcg.py:3307-3308`(`get` 首行无条件探活)→ 现行 `:3307-3309`(`probe` 形参) | real | **low/medium(不一致)** | — | **fix · N276 · verified(已落地)** | 材料 ①③;本席读核现码 |
|
|
116
|
+
| 6 | `hive/src/scheduler.rs:340/:343` + `job.rs:905-912/882-891/708-717` | real | medium/medium | — | **fix · N275 · blocked(红线禁 hive/src,未改码)** | 材料 ①③;本席读核现码 |
|
|
117
|
+
| 7 | `src/lib/hook_audit.ts:211-242` + `src/hooks.ts:416/518/523/531/537/559/569/426/430/432` | real | low/—(③ 无条目) | — | **fix · N278 · 未执行(MAX_FIX=5 截断)** | 材料 ①②;本席读核现码 |
|
|
118
|
+
| 8 | `src/hooks.ts:554`(`memorize('user-recall', … g.read(k=3))`) | real | low/— | — | **defer**(须新增轻量触点或客户端降频——设计裁决) | 材料 ①②;本席读核现码 |
|
|
119
|
+
|
|
120
|
+
**计数核对**:8 条 = real **8**(#1–#8)+ already_covered **0** + false_positive **0** ✔(与材料 ① 逐条 verdict 一致)。
|
|
121
|
+
**去向核对**:fix 6 = N273(#2) / N274(#1) / N275(#6) / N276(#5) / N277(#4) / N278(#7);**执行面 5 条**(N278 截断);defer 2(#3、#8);rejected 0。**6 + 2 = 8 = real 条数** ✔。
|
|
122
|
+
|
|
123
|
+
### 3-2 历轮留档复测结论(含材料缺口如实登记)
|
|
124
|
+
|
|
125
|
+
**本轮必做复测项**(本轮工作流扫描员人物设定原文,本席实读工作流脚本):N121(生产检索稳态 O(全池) 逐节点打分)、N122(`compile()` 每次全量重编含 ~159 行恒定 `_ProtocolRuntime` 前导)、readcache 内存占用(条目字典/装载体积随 N 增长)、v7/v14 留档 swarm-wal Rust 重放(kept_lines 内存面、BufWriter 端到端 <5%)、v7 N52(S7 stat 税 201 次/查询)。
|
|
126
|
+
|
|
127
|
+
**材料 ① 内嵌的复测痕迹(8 条候选 evidence 中的覆盖核查,逐项转写)**:
|
|
128
|
+
|
|
129
|
+
1. **N121**(检索本体 O(全池) 逐节点打分):候选 1 判「O(全池) 扫描语义面、非同一问题」;候选 2 判「非本缺口」(v14.md:93 最接近的历轮登记);候选 4 判「检索侧同类留档对象不同(v9.md:91-92 的 `_path_graph` 种子腿/《_emit》尾部)」;候选 8 判「与 N121 是不同落点」(调用点「每条消息重复付费」)——**四项界分,均判非重报**。
|
|
130
|
+
2. **N52**(md_cg/postings.py:122-159 的 S7 目录 stat 税,双开关默认关):候选 3 判「不同位置不同触发面」。
|
|
131
|
+
3. **N212**(「签名漏看分片」的正确性缺陷,已修):候选 3 判「只共享血缘——本条是其修复引入的代价随残片数线性增长」(历轮邻近留档:`docs/eval/P1b2_读面代际修复_v1.0.md` §六-6「常数成本 ~11-16µs/次」、v24.md:229 风险条、v25.md:41「修复代价 14.3→32.6µs/次」,均未登记残片增长面);候选 5 引「批次 68 认知图节点(N212/N213/N224)只登记签名功能性修复与单次成本」。
|
|
132
|
+
4. **N241/N242**(`positive_body` 正确性缺陷,已由批次 96 `_strip_ccg_segments` 单点收口):候选 2 判「判据不同(正确性 vs 本性能项)」。
|
|
133
|
+
5. **N133 / 优化第一批 D1-D3**(「写盘不标脏致陈旧读」):候选 4 判「另一问题」;并引 `性能专项_冷查询与内存_v1.0.md:13`(13,884 次 `_read`/61.2s)为候选外推基线出处。
|
|
134
|
+
6. **D6/R-2**(优化第一批:Rust 面 `retrieval.rs like_body().to_lowercase` 重复):候选 2 判「另一副本、且为『小写化』非『剥除未缓存』」。
|
|
135
|
+
7. **v25:41 / P1b2:77**(`_index_signature` 单次成本留档):候选 5 判「只登记单次成本与 `get +3.5%`,未登记写链内 440 次放大」。
|
|
136
|
+
8. **v26(第 27 轮 hive 面深挖)defer 11 项**:候选 6 判「无此条」。
|
|
137
|
+
9. **批次 105(引入者)/ v30 / 发布 07 报告**:候选 7 判「无审计性能条目;批次 105 自身未记性能项」。
|
|
138
|
+
10. **T4 设计(commit cbafcef7「dsh 端对话触发灵枢复用观测」)**:候选 8 判「该读系 T4 设计有意行为,历轮报告(v30 等)无此条」;`git grep 'user-recall'` 仅命中实现本身(src/hooks.ts:422/554)。
|
|
139
|
+
|
|
140
|
+
**缺口如实登记**:扫描席的 `legacyRetest` 专项字段(对上列五项必做项的逐项复测结论本体)**未随本 ask 材料传入**——材料 ① 的 8 条条目字段集为 `where/what/verdict/evidence/severity`(本席解析核对),其中 N121/N52 的复测痕迹以「覆盖核查」内嵌形式可见(上表 1/2/3 项);**N122、readcache 内存占用、v7/v14 swarm-wal Rust 重放三项的复测结论在本 ask 材料中不可见**——本报告不代写、不猜测,登记为材料缺口(若需入档,请编排会话补取扫描席 legacyRetest 原文)。
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 四、实跑读数(本会话第一手)
|
|
145
|
+
|
|
146
|
+
> **L1 直跑:`git status` / `git diff --stat` / `git grep`(编号扫描)/ `git log` / 4 件守卫单跑 / `rank_parity` / `run_tests.py --jobs 4` / `npm test` / `npm run gate`(python/原生包装混合)— 风险:低(只读判定为主;`npm` 腿含 build 写 `lib/` 构建产物,属 gitignored 非追踪面;守卫/测试只写系统临时目录);频次:本 ask 内一次性;可逆性:完全可逆(仓库追踪面零写入)。** 按工作纪律第 17 条留痕。
|
|
147
|
+
|
|
148
|
+
1. **工作区状态**(`git status --porcelain`,本席开工时跑):
|
|
149
|
+
```
|
|
150
|
+
M md_cg/consistency.py
|
|
151
|
+
M md_cg/forgetting.py
|
|
152
|
+
M md_cg/freshness.py
|
|
153
|
+
M md_cg/mdcg.py
|
|
154
|
+
M md_cg/mdcos.py
|
|
155
|
+
M md_cg/readcache.py
|
|
156
|
+
M md_cg/test_cons200_scan_selection.py
|
|
157
|
+
M md_cg/test_p4_freshness.py
|
|
158
|
+
M md_cg/test_readcache_prodpath.py
|
|
159
|
+
M scripts/test_utf8_boot_guard.py
|
|
160
|
+
?? md_cg/test_n276_probe_hoist.py
|
|
161
|
+
```
|
|
162
|
+
**判读**:前 9 件 + 新增守卫 = 本轮 N273/N274/N276 的落码面(`mdcg.py` 承载 N273+N274+N276 三条;`test_cons200_scan_selection.py` 为 N276 夹具同步;`test_p4_freshness.py`/`test_readcache_prodpath.py` 为 N274/N273 守卫)。`scripts/test_utf8_boot_guard.py`(+110 行)为 **issue #58(嵌套日志隔离)的独立修复**(本席读 diff:`_env_clean` setdefault `MDCG_TESTLOG_DIR`、判据 NESTED-LOGS),**不属本轮缺陷迭代 N273–N278 范围**,如实并列不加归因。**`src/`、`hive/` 零改动** ⇒ N275/N277/N278 未落码的结构证据。HEAD = `2a45759e` 未动。
|
|
163
|
+
**核验期间的并发写入(如实并列)**:报告写入后复跑 `git status` 时,工作区另现 `M README.md`(mtime 2026-10-05 22:33,非本席所为——本席全程未 Edit 任何产品文件;内容为套件前置/SKIP 口径的文档修订,**不在本轮 N273–N278 落码面内**,疑似并行会话产物,归属以编排会话核实为准)。上列代码块为**开工时点**快照;本报告 §二/§三 的行号与落码核验均以 `md_cg/` 面为限,不受该并发写入影响。
|
|
164
|
+
2. **编号实占扫描(硬要求 ③)**(本席实跑,python 包装两条命令并做全树关键词扫描):
|
|
165
|
+
- `git grep -ohE 'N[0-9]{3,4}'`(工作区)→ 去重排序尾部:`… 269 / 270 / 271 / 272 / 273 / 274 / 276 / 802`;其中 **802 = `# noqa: N802` lint 码(剔除)**;**N273/N274/N276 = 本轮修复面落码字面量**;N275/N277/N278 零命中(未落码)。
|
|
166
|
+
- 同款扫描 `HEAD` 树 → 尾部 `… 270 / 271 / 272 / 802` ⇒ **已提交面实占最大 = N272**(与材料 ② 分诊起点一致)。
|
|
167
|
+
- `git grep -nlE 'N27[3-9]'`(工作区)→ 命中全部落在本轮修复面(`md_cg/` 九件)+ `docs/promo/promo-visual-1.png`(PNG 压缩字节巧合,非缺陷号;材料 ② 已做逐字节核验)+ `.zcode/workflow-drafts/缺陷迭代第32轮性能面.dwf.ts` 与运行件(**扫描器脚本自述文字**,非占用)。
|
|
168
|
+
- **结论**:N273–N278 自 N272 之后连续编、全局唯一;报告全文编号与本扫描一致。
|
|
169
|
+
3. **落码核验**(本席逐点读码,python/grep + Read):
|
|
170
|
+
- **N273**:`md_cg/mdcg.py:3380`(`def _positive_body`,N273 注释 :3388-3393)· `:4122`(`_like(…, entry=None, positive_body=None)`)· `:4141-4144`(透传/直调分支)· 三调用点 `:3842/3871/3976`(`positive_body=self._positive_body`)· `md_cg/mdcos.py:982/1011/1047/1099`(四调用点)· `md_cg/mdcos.py:1358-1360`(`_path_fuzzy` 改走钩子)· `md_cg/readcache.py:195-216`(`_cached_pb` 层 + `_positive_body_cache`)· `:224`(`clear` 三缓存)。
|
|
171
|
+
- **N274**:`md_cg/mdcg.py:4170-4181`(循环外注释+三取)· `:4207-4210`(循环内 `entry_weight(…, enabled=_fr_on)`,零 env 读取)· `md_cg/freshness.py:183-201` / `:205-240` / `:269-315`(三函数 `enabled=None` 形参 + `globals()["enabled"]()` 自算分支 + `:310/312` 透传)。
|
|
172
|
+
- **N276**:`md_cg/mdcg.py:3307-3309`(`def get(self, node_id: str, probe: bool = True)` + `if probe: self._maybe_reload_index()`)· `md_cg/mdcos.py:5123-5140`(`MdCGSecure.get` 同步 probe,N196 探活 `if probe:` 同跳、`super().get(node_id, probe=probe)`)· `md_cg/forgetting.py:185-196`(N276 注释 + 环外单探)+ `:204-205`(环内 `cg.get(nid, probe=False)`)· `md_cg/consistency.py:635-648`(同款)。
|
|
173
|
+
- **N277(未改码)**:`md_cg/mdcg.py:3314-3316` 保持裸 `open`+`nodefile.loads`;`md_cg/readcache.py` 无 `get` 包装。
|
|
174
|
+
- **N278(未改码)**:`src/lib/hook_audit.ts:231-242` `#save` 保持每次 `mkdirSync` + `${path}.${pid36}.${now36}.tmp` 新建(无目录就绪缓存、无固定 tmp 名)。
|
|
175
|
+
- **新增守卫在位**:`md_cg/test_n276_probe_hoist.py`(199 行,untracked);`md_cg/test_readcache_prodpath.py:176-216`(P8)/`:80`(`count_pb`);`md_cg/test_p4_freshness.py:594`(G13 打印行)。
|
|
176
|
+
4. **守卫单跑(4 件,本席实跑;python 包装 `python -X utf8 -m <模块>`)**:
|
|
177
|
+
```
|
|
178
|
+
md_cg.test_n276_probe_hoist 11 通过 / 0 失败 (输出尾行)
|
|
179
|
+
md_cg.test_readcache_prodpath PASS 20 / FAIL 0 RC=0
|
|
180
|
+
md_cg.test_p4_freshness 89 通过 / 0 失败 RC=0
|
|
181
|
+
md_cg.test_cons200_scan_selection 27 通过 / 0 失败 RC=0
|
|
182
|
+
```
|
|
183
|
+
与材料 ③ 各守卫绿态读数(11 / 20 / 89 / 27)**逐件一致**。
|
|
184
|
+
5. **排序面 parity(本席实跑)**:`python -X utf8 scripts/rank_parity.py --exe rust/target/release/mdcg-eval.exe` → **逐位一致 10/10 · 集合一致 10/10 · top-1 一致 10/10**、RC=0(语料节点 ~30 · queries=10 · `unify=0` 默认关 · 两侧显式钉住 jaccard)。与材料 ③ 各条 semanticsProof 的 rank_parity 读数一致(N273/N274/N276 均含此腿)。
|
|
185
|
+
6. **全量回归与 npm test(本席独立复跑,材料 ④ 同读数)**:
|
|
186
|
+
- `python -X utf8 scripts/run_tests.py --jobs 4` → **退出码 0**;尾行 `===== SUMMARY 352/352 通过,5 跳过(依赖缺失/平台不符) =====`。材料 ④ 记「退出码 0(352 条 PASS)」,**逐项一致**。
|
|
187
|
+
- `npm test` → **退出码 0**;`tests 127 / pass 126 / fail 0 / cancelled 0 / skipped 1`(duration ~8.4s)。材料 ④ 记「退出码 0」,一致。
|
|
188
|
+
7. **N278 截断证据链(本席实查,三证)**:① 本轮工作流脚本原文(`.zcode/workflow-runs/` 下本轮 run 件,本席实读):`const MAX_FIX = 5;` 与 `const fixList = triage.fix.slice(0, MAX_FIX);`;② 材料 ③ 的 fixOutcomes 精确解析 = 5 条(N273–N277;修复席对 6 条 fix 中的第 6 条无产出);③ 工作区三零:`src/` 零改动、`hook_audit.ts` `#save` 保持修前形态、全树(含未跟踪面)N278 字面量零命中;另核 `actor_4`(修复席)工位产物中 `hook_audit`/`N278` 零命中。⇒ **N278 未进入修复**(编排截断),非 blocked、非已修。
|
|
189
|
+
8. **门禁(本席复跑两段)**:
|
|
190
|
+
- **第一段(报告写入前)**:`npm run gate` → **退出码 1、VERDICT=FAIL**。执行腿:`check_unreachable` → 577 文件、命中 0、语法失败 0(PASS);`check_publish_artifact` → **R4 非追踪件面 FAIL(命中=1;非追踪=31,允许=30;唯一点名 = `md_cg/test_n276_probe_hoist.py`)**,其余规则 R1/R2/R3/R5/R6/R7 全 **PASS**(R7 清单文件数=1569、未扫文本件=0;R1 文件面=0 内容面=0,唯 5 处既有哑值 NOTE 均非本轮引入、不复制其字面量);因 gate 为 `&&` 链,其后 9 腿未执行。与材料 ④「退出码 1、VERDICT=非 PASS」**一致**,且本席取得红腿明细(材料 ④ 未给)。
|
|
191
|
+
- **第二段(报告写入后,本席实跑)**:`check_publish_artifact` → RC=1、VERDICT=FAIL;**R4 非追踪件面:命中=2;非追踪=32,允许=30**,点名两条 = `docs/eval/缺陷挖掘_自主迭代_v31.md`(本报告)+ `md_cg/test_n276_probe_hoist.py`(新守卫)——同一流程项(新文件须随批次 `git add`,入库后 R4 即消);其余规则 **R1/R2/R3/R5/R6/R7 全 PASS**,其中 **R7 清单文件数=1570、未扫文本件=0**——即**本报告已完整进入发布面扫描且 R1(凭据)/R3(隐私)零命中**。
|
|
192
|
+
9. **报告写入后逐腿单跑(本席实跑,python 包装;报告已入扫描面)**:
|
|
193
|
+
```
|
|
194
|
+
check_unreachable RC=0 扫描 577 文件、命中 0、语法失败 0
|
|
195
|
+
check_publish_artifact RC=1 R4 非追踪件面 FAIL(命中=2:本报告 + 新守卫);R1/R2/R3/R5/R6/R7 全 PASS(R7 清单文件数=1570、未扫文本件=0)
|
|
196
|
+
check_publish_smoke RC=0 VERDICT=PASS(S4 真握手 / S5 tools 面 == 缺省面 ['cg','stg'])
|
|
197
|
+
cogmap_sync check RC=0 通过(cg 37 op / stg 4 op / whitebox 6 / mdcg_* 31)
|
|
198
|
+
link_check RC=0 受管 md 1288 个、链接 241 条;OK=241 BROKEN=0 UNTRACKED=0
|
|
199
|
+
workspace_index --check RC=0 OK(顶层目录 20 · 追踪 2227 件)
|
|
200
|
+
discipline_nodes --init --write RC=0 已一致(真源指纹 e8c979edba52de41、纪律 18 条)
|
|
201
|
+
verify_discipline --allow-missing RC=0 10/10 目标一致(含 cg-nodes 18/18、注入面 9 条链命中 0)
|
|
202
|
+
check_local_paths RC=0 VERDICT=PASS(追踪面零本机路径)
|
|
203
|
+
```
|
|
204
|
+
`gate_rust_crate_test` / `gate_rust_parity` 两腿本轮未复跑(材料无相关读数变化,如实登记为未跑)。
|
|
205
|
+
10. **未由本席实跑、全部标注来源的读数(不得冒充)**:
|
|
206
|
+
- 8 条候选的**构造复现与机械判据**(env 计数 48011、缓存不对称、残片 stat 边际 18µs、写链 440、探针 444、hive 双读行为判据、审计 fs 计数等)→ **材料 ①(四区复核席)**;本席仅读核其现码行号与落码在位性。
|
|
207
|
+
- 各条的**修前基准 / 修后复测 / 守卫红绿与定点变异 / 语义不变对拍** → **材料 ③(修复席)**;本席未复跑(红基线须先回退源码,前后基准须专设 8000/8001 节点临时库)。
|
|
208
|
+
- **分诊编号、修法、defer/rejected 裁定** → **材料 ②(分诊席)**。
|
|
209
|
+
- **三关读数的材料值** → 材料 ④;本席已独立复跑(§四-6/8),读数一致。
|
|
210
|
+
- **双清单自检命中清单** → **材料 ⑤(自检席)**;本报告自身的双清单扫描见 §附-1。
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## 五、遗留清单(逐条给建议去向)
|
|
215
|
+
|
|
216
|
+
### 5-1 defer 2 条(材料 ②)
|
|
217
|
+
|
|
218
|
+
1. **`src/hooks.ts:554` 每条 user 消息的 `user-recall` read(real / low)**:`memorize('user-recall', …)` 在 remember 之外固定多发一次 `cg(op=read)`(k=3、带 session)——该 read 落脑侧生产检索全池打分路径(k 只截输出、不省扫描;复核实测 10k 池中位 ~273ms、30k 中位 ~947ms/次),fire-and-forget 不阻塞回复但占大脑子进程单线程服务时间(`mcp_server.py:4336-4348` 单线程 stdio 循环,在途期间后续请求排队)。**复核确认属实,但修法不在既有单点内**:MCP 面无「只记 access log 不检索」的出口(`mdcg.py:4775` 的 `record_access` 未暴露到工具面),消除须二选一——① 新增轻量触点(新 op 或 `read` 增 `touch_only` 形参,须同步 protocol.py 形态表与守卫);② 客户端降频/采样(改变 access log 覆盖度 ⇒ importance/scrub 陈旧度统计偏置)。**建议去向**:随「检索触点 / access log 语义」设计裁决一并定(本轮 defer;T4 设计有意行为,裁决前不得擅改)。
|
|
219
|
+
2. **`md_cg/mdcg.py:1578-1601` `_index_signature` 逐他进程 `.log` 分片 stat(real / low)**:每个读入口各做一次代际签名,逐分片 stat 无节流/TTL/上限(每查询 stat 数 = 基线 + 外来分片数;复核实测边际 ≈18µs/stat——**更正材料 ① 对候选读数的一处高估**:10 残片 ≈ +0.18ms/查询、search 基线 6.90ms/查询);非优雅退出的写方分片永久留存(`sweep_stale_temps` 只清 `.tmp-` 形态,fsutil.py:89-102;残片仅在同根实例优雅 close→compact/rebuild 的 `ShardedLog.clear` 清零)。**修法触语义面**:节流/TTL 会直接改变「他进程写入的可见延迟」(正是 N212 修复面,v24.md:229 遗留清单已记「须保证签名比较仍是『一次 stat 级』成本」),残片回收又须先定义「孤儿判定 + 谁有权清」(写方可能仍在写同一分片)。**建议去向**:设计裁决(与 N212 修复面一并记账;与 N276 不重叠——N276 减调用次数,本条减单次成本)。
|
|
220
|
+
|
|
221
|
+
### 5-2 blocked 2 条(材料 ③)
|
|
222
|
+
|
|
223
|
+
3. **N275(hive 每拍双读 status.json,medium)**:缺陷属实(静态判据 2N/拍 + 复核量化读数 N=5000 375.9ms/拍、消除 43.7%~49.1%、poll=400ms 实际周期约 2×),修复面全在 `hive/src` 内且红线明令不得触碰(锚点漂移面 + 在役完整性锚判据实现)⇒ 未改码。**建议去向**:待红线/授权明确后按材料 ② 修法(拍内单次读)执行;执行时须守 H-3 三态语义、created_ts 排序真值单点、拍内单快照注释记账、旧签名行为逐位不变(验证方案已在 §二-N275 点明)。
|
|
224
|
+
4. **N277(写链读环 `cg.get` 裸读盘,medium)**:缺陷属实(440 次 loads/写链;预热后仍逐节点重读;收益上界 ≈38ms/写链),但材料修法(`get` 改走 `_read_status` 缓存面)在「非合作写者直改盘面可见性」与「返回对象身份」两个面上无法给出全域逐位一致断言(四条实证见 §二-N277)⇒ 未改码。**建议去向**:**须使用者/设计裁决**——方案 A(原案,`get` 全局走缓存:同步处理①可见性②治理面口径③对象别名拷贝或全量审计④越界行为差异 + readcache 文档串补注);方案 B(局部变体,仅 redundancy/check 两环改走缓存面、公开 API 零变:仍须记「写链判定输入退到快照口径」且不得改动 `get` 本体)。裁决前保持现状。
|
|
225
|
+
|
|
226
|
+
### 5-3 未执行 1 条(MAX_FIX 截断)
|
|
227
|
+
|
|
228
|
+
5. **N278(审计 `#save` 常数项,low)**:分诊 fix 第 6 位、被编排上限 `MAX_FIX=5` 截断,未进入修复(三证见 §四-7);材料 ③ 无其前后基准。**建议去向**:下一轮(或补跑批)按材料 ② 修法执行(目录就绪缓存 + tmp 固定名复用;判据 = fs 调用计数 `mkdir 2→≤1/进程`、write 落同一 tmp);复测须以本轮复核读数为修前基准(§二-N278,条件:`lib/` 直测、%TEMP% 临时库、node v24、串行 3 进程 × 300 iter、3rep 中位)。
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## 六、纪律合规声明
|
|
233
|
+
|
|
234
|
+
1. **工具面降级声明(第 7 条)**:本会话 `cg(op=route, intent=…)` 经 MCP 端 `mdcg` 正常返回(命中历轮 v27/v28/v29/v30 报告章节节点与「缺陷挖掘报告/纪律合规声明」知识),**未触发降级兜底**。
|
|
235
|
+
2. **命中纪律声明(第 0.2 条)**:本席开工按纪律第 0.1 条先 `cg(op=route)`、按第 18 条先读 `WORKSPACE_INDEX.md`(定位 `docs/eval` 为历轮报告面);命中并在会话回复输出 `response.direct` 原文的条目:第 5 条(验证——三关复跑与守卫单跑)、第 8 条(中文思考)、第 15 条(命令执行/相对路径)、第 16 条(归档闭环——本报告由编排会话处置归档)、第 17 条(L1 直跑留痕)、第 18 条(工作区索引优先)。本报告各节即其执行痕迹。
|
|
236
|
+
3. **只读与不改产品源码**:本席**未改任何产品源码文件**——全部命令为只读判定腿(§四),唯一写入为本报告自身 `docs/eval/缺陷挖掘_自主迭代_v31.md`(新建)与临时跑器输出(系统临时目录)。工作区在役改动(N273/N274/N276 落码面)由修复席产出、本席零触碰。
|
|
237
|
+
4. **命令执行(第 15 条)**:python 腿经 `python`(argv + 显式 UTF-8 + `PYTHONUTF8=1`);`git`/`grep`/`ls`/`tail`/`wc` 为 MSYS 豁免面;**如实申报**:`npm test` 与 `npm run gate` 两条腿为原生程序直跑(未 python 包装),输出经文件重定向捕获、读取实测无乱码(边界判据「本次调用是否产出非 UTF-8 字节流」实测为否);解析类操作(材料/日志/jsonl)一律经 python(`encoding='utf-8', errors='replace'`)。
|
|
238
|
+
5. **任务派发(第 17 条)**:本席为工作流内报告撰写席,只做编排与只读判定,未派发新的执行性任务;只读命令合并为一条 L1 留痕(§四 首行)。
|
|
239
|
+
6. **归档(第 16 条)**:本席仅产出报告文件,未写灵枢记忆(N273/N274/N276 的修复归档由修复席/编排会话按流程处置;本报告的归档由编排会话处置)。
|
|
240
|
+
7. **编号一致性(硬要求 ③)**:全文编号(N273–N278、N121/N52/N212/N133/N196/N207 等历史引用、`802` 注明 lint 码)与 §四-2 实占扫描一致;N275/N277/N278 明示「未落码」源于工作区零字面量事实。
|
|
241
|
+
8. **路径脱敏(硬要求 ②)与自伤规避**:本报告全部路径为仓库**工作区相对路径**或中性占位(`<仓根>` / `%TEMP%` / `~/`);不含本机盘符绝对路径、不含凭据字面量(材料中的哑值样本一律不复制其字面量,只作机制性描述);报告写入后 `check_local_paths` 与 `check_publish_artifact` 的机械读数见 §附。**另如实申报**:本报告撰写期间读取了本工作流运行面(脚本 `.zcode/workflow-runs/` 与本席会话记录)以确证 N278 截断证据链与材料结构;未读取、未触碰任何在役记忆库与在役 serve。
|
|
242
|
+
9. **口径声明**:材料 ③ 的 N275 条自陈其量化读数「源自分诊材料(即材料 ① 复核席)、本席未复跑」——本报告转写时已如实标注该转引链(§二-N275);同理,hive 面 375.9ms/拍 等读数**非本席实跑、亦非修复席实跑**,实际执行者为材料 ① 复核席。
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## 七、跳过项及原因
|
|
247
|
+
|
|
248
|
+
| 项 | 原因 |
|
|
249
|
+
|---|---|
|
|
250
|
+
| **未复跑各条「修前基准 / 红基线」** | 前后基准须改码 + 专设 8000/8001 节点临时库(属修复席流程),红基线须先回退产品源码;本 ask 为报告编译。故一律标注**材料 ③**,本席未复跑、不冒充。 |
|
|
251
|
+
| **未端到端复现 §三-1 各候选的构造** | 复现需搭临时库/起多进程/打桩(属材料 ① 复核席职责);本席只读核其现码行号、判据与落码在位性(§四-3)。 |
|
|
252
|
+
| **未复跑 `gate_rust_crate_test` / `gate_rust_parity` 两腿** | 材料无相关读数变化;本席复跑门禁在 `&&` 链前段(`check_publish_artifact` R4)短路,两 Rust 腿未执行;如实登记为未跑(材料 ③ 各条另含各自 rank_parity 实跑,见 §四-5)。 |
|
|
253
|
+
| **未取回扫描席 `legacyRetest` 原文** | 该字段未随本 ask 材料传入(§三-2 已登记缺口);本席不代写、不猜测;建议编排会话补取。 |
|
|
254
|
+
| **未裁决 N277 的两方案与 N275 的授权面** | 属语义面/红线设计裁决(材料 ③ 已并列证据与候选方案),ask 未授权;本席只如实并列、不代替裁决。 |
|
|
255
|
+
| **未执行 N278** | 编排上限 `MAX_FIX=5` 截断(三证见 §四-7);本席为报告席,不代执行修复。 |
|
|
256
|
+
| **未 `git add` / commit** | 提交由编排会话执行;本席只写报告。**连带读数**:本报告与新守卫在发布面为 untracked ⇒ `check_publish_artifact` R4 判负(须随批次 `git add`)。 |
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 附:双清单自查(内容政策 + 隐私)
|
|
261
|
+
|
|
262
|
+
**1. 本轮材料自检(材料 ⑤,自检席)**:`{"policyClean": true, "privacyClean": true, "hits": []}` —— 扫描面 = 本轮改动文件与其新增守卫 + 本报告(若已写出);0 命中。
|
|
263
|
+
|
|
264
|
+
**2. 本报告自身扫描(本席实跑,报告写入后)**:
|
|
265
|
+
- 盘符绝对路径正则 `grep -cE '([^A-Za-z0-9]|^)[A-Za-z]:[\\/]' docs/eval/缺陷挖掘_自主迭代_v31.md` → 读数见下;
|
|
266
|
+
- 凭据形态正则 `grep -cE 'sk-[A-Za-z0-9]{12,}|mdcg1\.[A-Za-z0-9._-]{8,}|gh[pousr]_[A-Za-z0-9]{20,}|tk_[0-9a-f]{8,}|Bearer [A-Za-z0-9._-]{16,}' docs/eval/缺陷挖掘_自主迭代_v31.md` → 读数见下;
|
|
267
|
+
- 行尾字节核验(python 逐字节计数:LF / CRLF / 裸 CR);
|
|
268
|
+
- 发布面机械证据:`check_local_paths`、`link_check`、`check_publish_artifact`(R1/R2/R3/R7 对含本报告的清单)复跑读数见下。
|
|
269
|
+
|
|
270
|
+
**写入后复跑读数(本席实跑;命令与逐腿 RC 见 §四-8/9)**:
|
|
271
|
+
- 盘符绝对路径正则 → **0 命中**;凭据形态正则 → **0 命中**;行尾 python 逐字节计数 → **LF=269、CRLF=0、裸 CR=0**;`](` 字面组合 2 处(均出自代码引用 `globals()["enabled"]()` 的 `"]()` 片段,非链接形态;`link_check` 判定 UNTRACKED=0/BROKEN=0 为机械旁证)。
|
|
272
|
+
- `check_local_paths` → **VERDICT=PASS**(追踪面零本机路径;报告为 untracked 不在该腿判面内,报告自身的盘符判据以上行 0 命中为准)。
|
|
273
|
+
- `link_check` → 受管 md 1288 个、链接 241 条、**OK=241 BROKEN=0 UNTRACKED=0**(报告无坏链)。
|
|
274
|
+
- `check_publish_artifact` → R1 凭据面 / R2 私有数据面 / R3 隐私文本 / R7 扫描面完整性(清单文件数=1570、未扫文本件=0)全 **PASS**——**本报告在发布面扫描下零命中**的机械证据;唯一红腿 R4 = 「本报告与新守卫 untracked」的追踪态判负、非正文形态(§四-8)。
|
|
275
|
+
- `check_publish_smoke` VERDICT=PASS · `cogmap_sync check` 通过 · `workspace_index --check` OK · `verify_discipline --allow-missing` 10/10 一致(读数同 §四-9)。
|
|
276
|
+
|
|
277
|
+
**结论**:`policyClean = true`(内容政策:无违规内容;对内容类别样本只作机制性中性描述、不复写字面量);`privacyClean = true`(无盘符绝对路径、无真实凭据、无个人隐私)。
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
*报告席产出:`docs/eval/缺陷挖掘_自主迭代_v31.md`。本席未改任何产品源码;全文数字凡非本席实跑均标注来源(① 复核席 / ② 分诊席 / ③ 修复席 / ④ 编排三关 / ⑤ 自检席)。N278 截断证据链(§四-7)为本报告独有的编排面核验。*
|
package/docs/hive//345/256/211/345/205/250/345/256/241/350/256/241/345/256/236/351/224/232_v0.1.md
CHANGED
|
@@ -45,7 +45,7 @@ dot-env/密钥扩展,内容回喂外部 LLM 网关前拦截),不受根白
|
|
|
45
45
|
### P1-2 / P1-3 / P1-4 / P1-5 —— 报告原文到手后批次 26 已修
|
|
46
46
|
|
|
47
47
|
批次 25 曾判「待报告原文」(记忆载体落空)——使用者提供原文
|
|
48
|
-
(`
|
|
48
|
+
(`dsh-memory-代码审查报告.md`)后对齐施工:
|
|
49
49
|
|
|
50
50
|
- **P1-2** `src/lib/roleplay_web.ts` `requireEditKey` **fail-closed**:未配置
|
|
51
51
|
`ROLEPLAY_EDIT_KEY` → 写操作一律 403(`editKeyHint()` 引导配置)。此前
|
|
@@ -352,7 +352,7 @@
|
|
|
352
352
|
|
|
353
353
|
**双门禁(落盘前)**:`sanity_check_verdict`(脱敏黑名单:盘符/UNC/unix 家目录/~/$HOME/密钥形态 ghp_·AIza·AKIA·xox/Bearer/prompt·content 文本形态)+ `shape_check_verdict`(形状白名单:顶层字段集 ⊆ 契约集、指纹形状、枚举、非负整数计数)。
|
|
354
354
|
|
|
355
|
-
**机械消费方(issue #37 J4 落地)**:`scripts/interop_gate.py`——合并/收尾流程在动 `task/<iter_id>` 分支前调用:exit 0
|
|
355
|
+
**机械消费方(issue #37 J4 落地)**:`scripts/interop_gate.py`——合并/收尾流程在动 `task/<iter_id>` 分支前调用:exit 0=放行(**五条件合取**:`verdict=="pass"` 且 `valid is True` 且 `assertions_ok is True` 且 `failed==0` 且 `failure_reason` 为空,即上表 348 行「断言 AND 套件皆过」的定义——2026-10-05 N252 收紧:修前只查 `pass+valid`,把 `assertions_ok`/`failed`/`failure_reason` 三字段丢掉,生产端 `make_verdict(verdict='pass', failed=1)` 的产出即被放行)、1=拒绝(上述任一条件不成立)、2=未互验(fail-closed)、3=产物形状非法(拒绝猜测;含 `verdict` 非字符串)。§7.4 第 7 步「verdict=pass → 合并」由此获得机械强制。
|
|
356
356
|
|
|
357
357
|
**留痕位置(已裁定)**:**入库并同步 GitHub 仓库**——互验产物是本机制的**标准功能产物**,
|
|
358
358
|
随仓版本控制、随 `push` 上 GitHub,公开可复核。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 蜂巢设计 · 理论对齐 v0.1
|
|
2
2
|
|
|
3
|
-
> **定位**:本稿是**理论对齐层**——把《智能论3.4》(`docs/theory/智能论3.4.md`,5260
|
|
4
|
-
> **分工声明**:工程实施真源 =
|
|
3
|
+
> **定位**:本稿是**理论对齐层**——把《智能论3.4》(`docs/theory/智能论3.4.md`,5260 行)、蜂巢源码现状、外部学习成果(`<外部设计稿>`,kimi-code 2026-09-22)三方对齐,回答「蜂巢按我们自己的理论应该如何设计」。
|
|
4
|
+
> **分工声明**:工程实施真源 = `<外部设计稿>\蜂巢记忆架构设计.md`(M1–M7 七机制,D1–D4 已裁决,P0 可开工);候选优化项清单 = `<外部设计稿>\蜂群优化-学习文档.md`(C1–C26);源码级核实 = `<外部设计稿>\蜂巢实现调研.md`。本稿不重复其施工细节,只补两个维度:**每项设计的理论条款锚点**、**每项候选的四态资格裁决**。
|
|
5
5
|
> **边界**:本轮只产文档,不改蜂巢代码、不启 serve(蜂巢保持「迭代产品·暂时停用」态,见 `hive/README.md` 迭代状态章节)。是否提交推送由使用者另行决定。
|
|
6
6
|
|
|
7
7
|
---
|
|
@@ -15,26 +15,26 @@
|
|
|
15
15
|
| 时间窗口 | 2026-09-22 单轮设计;理论版本 v3.4-draft-3;蜂巢引擎节点 mem_1789374897301 之后的迭代期 |
|
|
16
16
|
| 存在约束 | D-005(rust 纯 std 零 crate 依赖)、文件协议即接口、worker 零 git、fail-closed、诚实终态;蜂巢已停用转迭代产品;单机单实例为边界 |
|
|
17
17
|
|
|
18
|
-
**白箱三问(本稿整体)**:依据 = 智能论正文条款 + 蜂巢源码 +
|
|
18
|
+
**白箱三问(本稿整体)**:依据 = 智能论正文条款 + 蜂巢源码 + `<外部设计稿>` 实测结论,三者均可复核;条件 = 上表四维,出界即失效;错后 = 裁决按条件层归因(三方条件空间/五失配维度),修订本稿并留变更记录。
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
22
|
## 一 素材面与三方对齐
|
|
23
23
|
|
|
24
24
|
```
|
|
25
|
-
理论真源 蜂巢现状
|
|
25
|
+
理论真源 蜂巢现状 外部学习成果(<外部设计稿>)
|
|
26
26
|
docs/theory/ ⇄ hive/{src,*.py} ⇄ 蜂群优化-学习文档.md(C1–C26,14 份 refs)
|
|
27
27
|
智能论3.4.md 13 条已声明不变量 蜂巢实现调研.md(源码核实 v1.2)
|
|
28
28
|
10 条未校验软约定 蜂巢记忆架构设计.md(M1–M7,P0–P2,D1–D4)
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
对齐方向不是单向的「理论指导工程」:`<外部设计稿>` 的 R1 裁决(图扩展以条件裁决为硬限制、概率扩散仅限未知域)与智能论第六章 CRG「概率产生候选 / 条件裁决资格 / 验证确认事实」**同构互证**——外部调研收敛出的纪律与理论先验一致,这本身是理论有效性的一个数据点。
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
35
35
|
## 二 理论锚点映射表
|
|
36
36
|
|
|
37
|
-
每行:理论条款(行号出处)→ 设计原则 → 蜂巢现状(file:line)→ 差距 → 归属(C#/M# =
|
|
37
|
+
每行:理论条款(行号出处)→ 设计原则 → 蜂巢现状(file:line)→ 差距 → 归属(C#/M# = `<外部设计稿>` 候选项/机制;「文档化」= 只需把既有正确性写进文档)。
|
|
38
38
|
|
|
39
39
|
| # | 理论条款 | 设计原则 | 蜂巢现状 | 差距 | 归属 |
|
|
40
40
|
|---|---|---|---|---|---|
|
|
@@ -74,10 +74,10 @@ docs/theory/ ⇄ hive/{src,*.py} ⇄ 蜂群优化-学习文档.md(C1
|
|
|
74
74
|
|
|
75
75
|
### D-2 恢复判据:产物说了算,判据前移
|
|
76
76
|
|
|
77
|
-
- **依据**:A2 + A14
|
|
77
|
+
- **依据**:A2 + A14(意义=被记录、被验证、被锚定的路径——恢复时盘面产物就是已锚定路径)。`<外部设计稿>` 实锤:`recover_orphans`(`scheduler.rs:124-158`)不信产物,而 `classify_exit`(`:284-312`)信产物——同一代码两套判据。
|
|
78
78
|
- **条件**:对「产物即证据」的任务充分;需要新鲜结果的任务必须显式声明 `rerun_on_recover:true`(D1 裁决),**系统不猜**(条件空间声明:本判据不作新鲜性保证)。
|
|
79
|
-
- **错后**:误认陈旧产物 → result 留痕(旧 result 更名 `result.json.recovered-<ts>`)+
|
|
80
|
-
- **裁决:ACCEPT**——M1(P0)照
|
|
79
|
+
- **错后**:误认陈旧产物 → result 留痕(旧 result 更名 `result.json.recovered-<ts>`)+ 测试反向对照(注释产物判据必须报红,`<外部设计稿>` M1 验证判据)。
|
|
80
|
+
- **裁决:ACCEPT**——M1(P0)照 `<外部设计稿>` 设计稿施工,理论无异议。
|
|
81
81
|
|
|
82
82
|
### D-3 决策与验证分层:三层任务 × 三档验证
|
|
83
83
|
|
|
@@ -96,7 +96,7 @@ docs/theory/ ⇄ hive/{src,*.py} ⇄ 蜂群优化-学习文档.md(C1
|
|
|
96
96
|
### D-4 一致性:共享层必须真的信息差为零
|
|
97
97
|
|
|
98
98
|
- **依据**:A9(3.9 共享记录单元)+ A15(合并机制)。9·12 病灶 = mdcg 实例内存索引互相回写 = 「共享层出现未协调的多写者」,是理论直接禁止的状态。
|
|
99
|
-
-
|
|
99
|
+
- **条件**:`<外部设计稿>` M3 三条纪律(写后回读必做 / 写通道双轨制:收口写=编排者独占 work_done+knowledge,过程性直写=worker 限 work_wip+contextual 且带来源行+on_conflict=record / 世代号后置 P2)。
|
|
100
100
|
- **错后**:回读不一致 → 重试 1 次 → 如实 error(不静默);冲突记录按 session(hive_job_*/hive_orch_*)回溯到具体 job 与编排者。
|
|
101
101
|
- **裁决:ACCEPT**——M3.1(写后回读)随 P0 施工;双轨制为 D3 定案,本稿理论侧确认其与 3.9/合并机制对齐。
|
|
102
102
|
|
|
@@ -116,19 +116,19 @@ docs/theory/ ⇄ hive/{src,*.py} ⇄ 蜂群优化-学习文档.md(C1
|
|
|
116
116
|
|
|
117
117
|
---
|
|
118
118
|
|
|
119
|
-
## 四
|
|
119
|
+
## 四 外部学习成果裁定(`<外部设计稿>`)
|
|
120
120
|
|
|
121
121
|
### 4.1 裁决 R1 的理论同构确认
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
`<外部设计稿>` R1:「图扩展以条件裁决为硬性限制;概率扩散(PPR 类)仅在未知域(条件路由无解)允许」。智能论第六章 CRG:「概率产生候选 / 条件裁决资格 / 验证确认事实」。R1-附注:「自适应权重作用于候选排序,不得作用于资格判定」。**两者同构**——外部学术调研独立收敛到理论先验,R1 从「工程裁决」升级为「理论对齐裁决」,后续蜂巢任何检索/扩散类机制以 R1 为硬闸。
|
|
124
124
|
|
|
125
125
|
### 4.2 候选清单 C1–C26 分组四态裁决
|
|
126
126
|
|
|
127
|
-
裁决对象 = 候选项;施工细节一律以
|
|
127
|
+
裁决对象 = 候选项;施工细节一律以 `<外部设计稿>\蜂巢记忆架构设计.md` 为真源,本稿只给资格。
|
|
128
128
|
|
|
129
129
|
| 组 | 候选项 | 裁决 | 理论锚点 |
|
|
130
130
|
|---|---|---|---|
|
|
131
|
-
| P0 安全面 | C9/M1 恢复判据前移、C10/M2 进程树回收、C23.1/M3.1 写后回读 | **ACCEPT**(P0 可开工,与
|
|
131
|
+
| P0 安全面 | C9/M1 恢复判据前移、C10/M2 进程树回收、C23.1/M3.1 写后回读 | **ACCEPT**(P0 可开工,与 `<外部设计稿>` 分期一致) | A2(可验证共识)、A9(信息差为零)、3.4 保护协议 P0(系统自身受威胁=崩溃恢复) |
|
|
132
132
|
| P1 记忆质量面 | C4/M4 效力轴透传、C7+C22/M5 同源标记+纠正链、C1/M7 角色视图 | **ACCEPT**(P0 后) | A4(stable 租约/效力轴)、A5(制衡+伪多数对策)、A3(位置效应/角色视图) |
|
|
133
133
|
| P2 接线 | C8/M6 progress.jsonl→mdcg ingest(mdcg 侧规格已细化,使用者实施) | **ACCEPT** | A8/A16(状态暴露→时空图聚合)、A9(ingest 单通道=共享层单写者面) |
|
|
134
134
|
| 结构扩展 | C2 超边验证器、C6 约化检验、C16 三元组链接、C19 clue 层 | **DEFER** | R1 硬限制 + ref-02 节俭性(能表示≠该这样表示);均带「条件裁决优先」约束,待真实查询集证明需要 |
|
|
@@ -139,7 +139,7 @@ docs/theory/ ⇄ hive/{src,*.py} ⇄ 蜂群优化-学习文档.md(C1
|
|
|
139
139
|
|
|
140
140
|
### 4.3 dsh-omc 五借鉴点合并说明
|
|
141
141
|
|
|
142
|
-
前轮调研(认知图 mem_1790077036580)的 5 个借鉴点已被
|
|
142
|
+
前轮调研(认知图 mem_1790077036580)的 5 个借鉴点已被 `<外部设计稿>` ref-14 消化并落进候选清单:①依赖门禁(dsh-omc DAG 不变量)→ 蜂巢单层编排现状无依赖链,暂无对应 C 项,**留观察**;②验证成一等任务 → C7/C15;③可见性面 → A8/C8;④fail-open 取舍 → A20/C24(维持 fail-closed);⑤纪律配断言 → C26(已升格)。来源路径:mem_1790077036580 → ref-14 → C 项,无遗漏、无冲突。
|
|
143
143
|
|
|
144
144
|
---
|
|
145
145
|
|
|
@@ -176,7 +176,7 @@ docs/theory/ ⇄ hive/{src,*.py} ⇄ 蜂群优化-学习文档.md(C1
|
|
|
176
176
|
|
|
177
177
|
| 既有件 | 关系 |
|
|
178
178
|
|---|---|
|
|
179
|
-
|
|
|
179
|
+
| `<外部设计稿>` 三文档(学习文档 C1–C26 / 实现调研 / 架构设计 M1–M7) | **工程实施真源**;本稿是理论对齐层,施工细节一律引用不复制 |
|
|
180
180
|
| `docs/hive/蜂巢工作记忆_项目计划.md` | wm.py 的唯一记忆状态源;本稿 A15 只做理论命名,不改其内容 |
|
|
181
181
|
| 双实例互验设计 | 理论对应 3.9 验证实例 + A5 制衡;是阶段 3/4 的前置件 |
|
|
182
182
|
| 工作纪律第 17 条(L1 直跑/必派发+留痕) | PROP-DECISION-LAYER-003 在派发决策面的既有落码;D-3 把同一分层原则扩展到任务/验证面,口径一致 |
|
|
@@ -188,4 +188,4 @@ docs/theory/ ⇄ hive/{src,*.py} ⇄ 蜂群优化-学习文档.md(C1
|
|
|
188
188
|
|
|
189
189
|
| 日期 | 版本 | 变更 |
|
|
190
190
|
|---|---|---|
|
|
191
|
-
| 2026-09-22 | v0.1 | 初稿:条件空间声明 +
|
|
191
|
+
| 2026-09-22 | v0.1 | 初稿:条件空间声明 + 三方对齐(理论真源/蜂巢源码/<外部设计稿> 学习成果)+ 20 条理论锚点映射 + 6 项设计裁决(D-1~D-6)+ C1–C26 分组四态裁决 + R1 同构确认 + 四阶段路线(触发条件可核)+ 诚实边界三分 |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 蜂巢迭代 · 宏观与群体调度 v0.1(设计稿)
|
|
2
2
|
|
|
3
|
-
> **定位**:承接《蜂巢设计·理论对齐 v0.1》路线,把蜂巢从「进程间调度」升级为三层调度——**微观进程调度(现状,已闭环)→ 中观任务 DAG(本期施工)→ 宏观群体调度(规划)**。参照基线:dsh-omc
|
|
3
|
+
> **定位**:承接《蜂巢设计·理论对齐 v0.1》路线,把蜂巢从「进程间调度」升级为三层调度——**微观进程调度(现状,已闭环)→ 中观任务 DAG(本期施工)→ 宏观群体调度(规划)**。参照基线:dsh-omc(`<外部参考仓>`,七不变量 + `blocked_by` + 死锁探测器,本地调研节点 mem_1790077036580 / ref-14)。
|
|
4
4
|
> **约束**:D-005 不破;文件协议即接口不破;**暂不推送**(蜂巢稳定性实测期)。
|
|
5
5
|
|
|
6
6
|
---
|
|
@@ -689,8 +689,8 @@ python -X utf8 -m md_cg.test_generation_guard # 退出码 0 = 全绿
|
|
|
689
689
|
- **来源判定:子代理委派不写成本人记忆**(H1,2026-09-30)——两条判据,**都是「字段在场且取值匹配才拦」**:
|
|
690
690
|
- **会话级**(`SessionHeader`):`origin === 'subagent'` 或 `delegationDepth > 0` ⇒ 该**子会话整条**的自动记忆都拦掉(不写、也不发起语义召回)。拦点取在会话事件回调的**最前面**,因此子代理会话也不会刷掉 `lastSession`(否则顶层会话的自动召回会拿子代理的会话去读)。
|
|
691
691
|
- **消息级**(`MessageSourceMap`):`source.form === 'relay'`(DSH 类型面注释原文「A message another agent addressed to this one」)⇒ 该条不写,判据先于既有的 `kind !== 'user'`(不把委派判定押在 `source.kind` 单点上——若委派指令以子会话首轮提示形态进入,其 `source.kind` 就是 `'user'`,与真人输入不可分,只有会话级判据能拦)。
|
|
692
|
-
- **默认行为(显式声明)**:判据命中时**默认拦**(委派指令不是用户的长期记忆);**字段缺失时默认放行**(不做半吊子猜测,宁可多记,不可因宿主字段缺失而静默丢真人记忆)——`header` 缺失 / 非对象、`delegationDepth` 不是数字或 ≤0、`origin` 是别的值、`source` 无 `form
|
|
693
|
-
-
|
|
692
|
+
- **默认行为(显式声明)**:判据命中时**默认拦**(委派指令不是用户的长期记忆);**字段缺失时默认放行**(不做半吊子猜测,宁可多记,不可因宿主字段缺失而静默丢真人记忆)——`header` 缺失 / 非对象、`delegationDepth` 不是数字或 ≤0、`origin` 是别的值、`source` 无 `form`,一律不拦且不报错。字段来源已按实装 DSH 2.0(`dsh-0.2.0-rc.2`)复核:`@deepseek-ai/dsh-session` 的 `types.d.ts`(`origin` / `delegationDepth`,实装 :81/:87)与 `@deepseek-ai/dsh-llm` 的 `message.d.ts`(`ContextFormed` 的 `'relay'`,实装 :56/:90;`kind` 口径见 :94-100)。
|
|
693
|
+
- ✅ **观测面(2026-10-05 订正,勿读成「已验证委派会被拦住」)**:本机**已装** DSH 2.0(`dsh-0.2.0-rc.2`;profile `web` 内已装插件 `@furongjun1999/dsh-memory` 0.7.2)。接口面已按实装包复核:`'session/event'`(dsh-session/lib/types/index.d.ts:64)、`'system-prompt/assemble'`(dsh-agent/lib/index.js:167)、`user/message`(types.d.ts:294;SurfaceEventType :442)、`kind` 口径(message.d.ts:94-100「无共享 catch-all `plugin` 类别,生产者各自声明 kind」)。真实会话事件面亦已观测(19 场 `<DSH home>/sessions/**/session.v4.jsonl.zstd`):会话头 `delegationDepth=0` **19/19 真实在写**;270 条 `user/message` 的 `source.kind` 分布 = user 80/roleplay-tasks 82/roleplay-context 72/runtime-context 19/skill-catalog 14/user-approval 2/goal 1,**注入类均非 `'user'`、被既有 `kind !== 'user'` 判据设计滤除**。**仍未观测**(如实保留):`origin='subagent'` / `delegationDepth>0` / `form='relay'` 的真实出现——`origin` 键与 `form='relay'` 在 19 场中从未出现。守卫证明的仍是「**判据在场即拦、缺失即不拦**」这一可机械判定的性质(`test/h1-source-filter.test.ts`),**不是**真实委派行为已被观测。
|
|
694
694
|
- **已知仍可能漏的形态**(不扩大判据范围,如实记录):若宿主既不写 `origin` / `delegationDepth`、也不给委派消息标 `form: 'relay'`,而委派指令以子会话**首轮用户提示**进入,则该条在消息面上与真人输入不可分、会话面上也没有信号 ⇒ **当前判据拦不住**(只能等宿主补齐字段)。
|
|
695
695
|
- **去重 / 遗忘由 md_cg 主动遗忘闸门负责**(`mdcg_remember(gated=true)` → `MdCG.remember_gated`):三问 → 四态 ACCEPT 落盘 / MERGE 并入既有(= 去重强化,不新增节点)/ DROP 低熵 / DEFER 待定,四种结果都写 `_forgetting.jsonl` 可审计
|
|
696
696
|
- **写入通道为何走 `mdcg_remember` 而非 `cg(op=write)`**:`cg(op=write)` 先过 `audit.audit(content_kind)` —— 未声明 `content_kind`(且未配置 `MDCG_POLICY_FILE`)时恒判 BLINDSPOT/DEFER,**只进审核队列、永不落盘**;即便声明了 `content_kind`,还要再过一致性检查与 `gated` 三问四态。**落盘的充要条件是最终判定 ACCEPT**(MERGE 并入既有、DROP/DEFER/REJECT 均不新增落盘点)。插件自动记忆选 `mdcg_remember(gated=true)`,即绕开 `cg(op=write)` 的 audit 前置门、直接进入三问四态。详见「本轮修复与验证 ②」
|