@furongjun1999/dsh-memory 0.7.2 → 0.7.4
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 +57 -47
- package/codebuddy/CODEBUDDY.md +6 -6
- 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/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/217/221/345/270/20312_/344/270/226/347/225/214/346/250/241/345/236/213/345/212/237/350/203/275/347/253/257_v1.0.md +108 -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/eval//350/257/255/344/271/211/346/227/266/347/251/272/345/233/276/350/241/245/345/205/250_P1_/346/212/275/345/217/226/345/231/250v4_/344/270/211/347/216/207/350/257/273/346/225/260_v1.0.md +231 -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//344/270/226/347/225/214/346/250/241/345/236/213/345/212/237/350/203/275/347/253/257_/344/275/277/347/224/250/344/270/216/350/277/220/347/273/264_v1.0.md +305 -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 +45 -42
- 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 +6 -5
- 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 +134 -50
- 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/lib/lib/session_state.d.ts +56 -0
- package/lib/lib/session_state.js +124 -0
- package/lib/tools.js +12 -1
- package/md_cg/auditview.py +248 -0
- package/md_cg/bench_e2e_judge.py +4 -2
- package/md_cg/branches.py +29 -3
- 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/lifecycle.py +38 -0
- package/md_cg/mcp_server.py +122 -12
- package/md_cg/mdcg.py +4923 -4822
- package/md_cg/mdcos.py +109 -21
- package/md_cg/nodefile.py +77 -13
- package/md_cg/readcache.py +29 -4
- 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/state_slots.py +221 -0
- package/md_cg/stg.py +68 -3
- 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_datapath_device_name.py +62 -3
- package/md_cg/test_generation_guard.py +5 -2
- package/md_cg/test_ghostref.py +182 -0
- package/md_cg/test_interop.py +1 -1
- package/md_cg/test_issue52_scan_condition_first.py +1 -1
- package/md_cg/test_lifecycle_retire_leak.py +408 -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_read_face_semantics.py +6 -3
- 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_event_op.py +514 -0
- package/md_cg/test_state_events.py +178 -0
- package/md_cg/test_state_slots.py +691 -0
- package/md_cg/test_time_core_lint.py +8 -1
- package/md_cg/test_writepipe.py +8 -5
- package/md_cg/tokens.py +18 -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 +599 -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/src/lib/session_state.ts +127 -0
- package/src/tools.ts +12 -1
- package/zcode/AGENTS.md +6 -6
|
@@ -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 前置门、直接进入三问四态。详见「本轮修复与验证 ②」
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# 世界模型功能端 · 使用与运维指南(v1.0)
|
|
2
|
+
|
|
3
|
+
> **这一页回答一件事:语义时空图「状态层」上线后,你怎么记账、怎么查、开关在哪、怎么复跑读数、边界到哪。**
|
|
4
|
+
> 依据:`docs/plans/语义时空图补全_世界模型功能端_设计_v0.1.md`(六签收点)与 `docs/秤_记忆系统评测规范_v2.1.md` §5.1(账本完整性口径)。
|
|
5
|
+
> 使用者定位(2026-10-06):「0.7.4 把世界模型,也就是语义时空图的地基打好。」本页对应 P3 批(写侧入口 + 账本完整性探针 + 使用文档)。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 一、一句话
|
|
10
|
+
|
|
11
|
+
**事件是源、槽位是投影、查询走 stg**:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
记账(写口) 台账(源) 投影(物化视图,查询时现算) 查询面
|
|
15
|
+
cg(op=state_event) → <root>/_state_events.jsonl → md_cg/state_slots.py → stg(op=state_chain)
|
|
16
|
+
(MCP 面) append-only、不截断 (只读台账、不落盘、不缓存) (默认关)
|
|
17
|
+
↘ CLI:python -m md_cg.state_slots
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
四个面各有单点真源,互不复制:写口只做权限/归一/落盘(`md_cg/mcp_server.py`),
|
|
21
|
+
台账只管追加(`md_cg/state_events.py`),投影只管回放(`md_cg/state_slots.py`),
|
|
22
|
+
查询面只管开关与返回体成形(`md_cg/stg.py`)。
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 二、台账(源)在哪、长什么样
|
|
27
|
+
|
|
28
|
+
| 项 | 内容 |
|
|
29
|
+
|---|---|
|
|
30
|
+
| 位置 | 库根下 `_state_events.jsonl`(与 `_recent.jsonl`、`_write_2pc.jsonl` 同级) |
|
|
31
|
+
| 性质 | **append-only**:只追加、不读改写、不截断(窗口滚动面 `_recent.jsonl` 不可作一等记录,故单立此账) |
|
|
32
|
+
| 一行一条 | `{t, subject, slot, old, new, kind, seq, evidence, actor}` |
|
|
33
|
+
| `kind` 五类 | `migration` 迁移 / `retraction` 撤回 / `enablement` 启用 / `acquisition` 获得 / `replacement` 替换;**未分类(None)合法** |
|
|
34
|
+
| 撤回语义 | `old` 有值、`new` 空 = 值作废、无新值;启用=old 空、new 有值;迁移/替换=皆有值 |
|
|
35
|
+
| 坏行 | 容忍 ≠ 静默:跳过时计数 + 有界样本 + stderr 告警(`state_events.BAD_ROWS` 可读) |
|
|
36
|
+
| 多进程 | 跨进程文件锁(`FileLock`),崩溃不留半截文件(flush+fsync) |
|
|
37
|
+
|
|
38
|
+
**记账不判语义**:`kind` 只是检索面标签,不进判据;「不是事实」的言语(玩笑/元层/回忆转述)
|
|
39
|
+
之消歧标记(`not_fact`)**不在本批**(见 §八 边界)。
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 三、写:MCP 记账口 `cg(op=state_event)`
|
|
44
|
+
|
|
45
|
+
### 用法
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
cg(op="state_event", subject="鲸娘", slot="住所",
|
|
49
|
+
old="别墅", new="小屋", kind="migration", seq=1108, evidence="r1108")
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
| 参数 | 必填 | 说明 |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| `subject` | 是 | 事件主体(谁的状态);去空白后为空即报错 |
|
|
55
|
+
| `slot` | 是 | 事件槽位(哪项状态);同上 |
|
|
56
|
+
| `old` / `new` | 至少一个 | 变更前/后值;**双空非法**(空事件无意义)。撤回=`new` 留空 |
|
|
57
|
+
| `kind` | 否 | 五类之一;缺省/空串/纯空白 → 归一为「未分类」(None);其它值报错 |
|
|
58
|
+
| `seq` | 否 | 轮或序号(回指语料位置用) |
|
|
59
|
+
| `evidence` | 否 | 出处(短证/轮号/文件路径皆可,回查用) |
|
|
60
|
+
|
|
61
|
+
返回体:`{"ok": true, "event": {…落盘记录…}}`(`event` 即 append 落盘的那一行)。
|
|
62
|
+
|
|
63
|
+
### 失败口径(fail-closed,不吞)
|
|
64
|
+
|
|
65
|
+
| 情形 | 结果 |
|
|
66
|
+
|---|---|
|
|
67
|
+
| 缺/空 `subject`、缺/空 `slot` | `ValueError`(点名缺哪项) |
|
|
68
|
+
| `old` 与 `new` 双空 | `ValueError` |
|
|
69
|
+
| `kind` 非法值 | `ValueError`(列出允许五类) |
|
|
70
|
+
|
|
71
|
+
以上都是**原样上抛**的 `ValueError`(不是包装过的错误),客户端按普通错误处置即可——
|
|
72
|
+
**失败即不落盘**。
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 四、读:投影与查询
|
|
77
|
+
|
|
78
|
+
### 1. 查询面 `stg(op=state_chain)`(默认关,见 §五)
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
stg(op="state_chain", subject="鲸娘", slot="住所", include_retired=true)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
返回体沿 stg 既有口径:`count`(条件命中总数,截断前)/ `items`(前 limit 条)/
|
|
85
|
+
`kept` / `truncated`。单元字段:
|
|
86
|
+
|
|
87
|
+
| 字段 | 语义 |
|
|
88
|
+
|---|---|
|
|
89
|
+
| `value` | 现值(撤回后为 null,直到下一个带值事件复活) |
|
|
90
|
+
| `state` | `active` / `retired`(**退役不删除**;缺省查询剔除 retired,`include_retired=true` 可见) |
|
|
91
|
+
| `t_from` / `t_to`、`seq_from` / `seq_to` | 生效区间与序号:`*_from` =最后产生当前值的事件;`*_to` =覆盖它的下一条事件(未被覆盖=null=仍有效/未闭合) |
|
|
92
|
+
| `tier` | 来源档位(台账行顶层 `tier` 透传;未带=`unspecified`,**不编造**) |
|
|
93
|
+
| `history` | 该槽位全部事件原样七字段(`t/seq/old/new/kind/evidence/actor`);`history=false` 时不带该键 |
|
|
94
|
+
| `alternatives` / `blindspots` | 结构在场、**恒空列表**(判定口径后置,见 §八) |
|
|
95
|
+
| `event_count` | 该槽位事件条数 |
|
|
96
|
+
|
|
97
|
+
**投影是物化视图不是第二真源**:查询时从台账现算,不落盘、不缓存——台账追加一条,
|
|
98
|
+
下一次查询结果即变。
|
|
99
|
+
|
|
100
|
+
### 2. CLI 人工入口(`md_cg.state_slots`,**恒可用**)
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
python -X utf8 -m md_cg.state_slots --status
|
|
104
|
+
python -X utf8 -m md_cg.state_slots --subject 鲸娘 [--slot 住所] [--include-retired] [--no-history]
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
数据根取 `MDCG_ROOT`(缺省走 `datapath.mdcg_root()`)。本 CLI 与 `MDCG_STG_STATE`
|
|
108
|
+
开关**无关**——那把开关管的是 MCP 读面;CLI 是只读人工排查入口(不改任何状态)。
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 五、开关
|
|
113
|
+
|
|
114
|
+
| 开关 | 缺省 | 管什么 |
|
|
115
|
+
|---|---|---|
|
|
116
|
+
| `MDCG_STG_STATE` | **关** | MCP 查询面 `stg(op=state_chain)`;关臂返回 `{"error": "disabled", "hint": …}`(**不是异常**——「没开」与「没命中」必须可分辨);与 `MDCG_STG_INDEX`/`MDCG_STG_QUALIFY` 同纪律 |
|
|
117
|
+
| (无开关) | — | `cg(op=state_event)` 记账口**恒可用**(受权限闸约束,见 §六);`md_cg.state_slots` CLI **恒可用** |
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 六、授权口径(与既有令牌面零新词)
|
|
122
|
+
|
|
123
|
+
- **`state_event` 走 `write` 词映射**:`cg` 面 op 作用域闸按 `write` 判定——
|
|
124
|
+
凡 `ops_allow` 白名单含 `write` 的角色(或用 `"*"` 的设计者令牌)可记账;
|
|
125
|
+
guest/只读令牌照拒。令牌面**不引入新 op 词**(角色白名单与派生收窄面零改动)。
|
|
126
|
+
- **`actor` 恒取令牌**(请求参数不生效):落盘 `actor` 永远是令牌身份(无令牌形态为
|
|
127
|
+
`"system"`)——客户端不得改写归属(沿本仓既有防伪造口径)。
|
|
128
|
+
- **写闸双保险**:台账是直写盘面的 append-only 文件、**绕过库层节点写闸**,故记账口
|
|
129
|
+
另显式补齐 `require_write("internal")`——`can_write` × `theory_ok` × 密级三态各自生效
|
|
130
|
+
(只读令牌、版本层校验未过、clearance 不足 internal 都会被拒且不落盘)。
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 七、读数与复跑:探针 + 守卫
|
|
135
|
+
|
|
136
|
+
### 1. 账本完整性探针(《秤》5.1 口径)
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
python -X utf8 scripts/probe_c_ledger_integrity.py \
|
|
140
|
+
--events %TEMP%/state_events.jsonl --expect-slots 住所,房贷,名字 \
|
|
141
|
+
[--out %TEMP%/probe_c_out]
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
| 读数 | 口径 |
|
|
145
|
+
|---|---|
|
|
146
|
+
| ① 事件覆盖缺口率 | `--expect-slots` 清单中「台账无任何记录」的槽位占比(分子/分母都打印) |
|
|
147
|
+
| ② 无账可辨率 | 对「无记录槽位」+固定合成不存在槽位查询 `state_chain`:`count==0 且 items==[]`(**不编造、不反推**)的通过比例 |
|
|
148
|
+
| ③ 变迁史可查率 | 有记录槽位中 `state_chain`(`include_retired=True`、`history=True`)返回的 history 条数合计 == 台账该槽位记录数 的比例 |
|
|
149
|
+
|
|
150
|
+
特性(硬性):只读输入;隔离 temp root(把 `--events` 拷为该 root 的
|
|
151
|
+
`_state_events.jsonl`)——**零记忆库写入**;`--out` 必须落在仓外(fail-closed);
|
|
152
|
+
**确定性**(同输入两次运行 stdout 与 `--out` 产物字节一致);
|
|
153
|
+
stdout 末行 `PROBE_C_LEDGER_JSON {...}` 摘要(机器可读),`--out` 时另落
|
|
154
|
+
`rates.json` + `probe_c_slots.jsonl`。
|
|
155
|
+
|
|
156
|
+
### 2. 写口守卫
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
python -X utf8 -m md_cg.test_state_event_op # 全链/双闸/防伪造/归一/校验/回归
|
|
160
|
+
python -X utf8 -m md_cg.test_state_event_op --mutate # 定点变异自证(每条机制必须能被断言钉红)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 八、边界(如实)
|
|
166
|
+
|
|
167
|
+
- `alternatives`(同期未决值)/ `blindspots`(声明缺口)判定口径**后置**:本批结构在场、
|
|
168
|
+
恒空列表,**不臆造填充**。
|
|
169
|
+
- 「不是事实」的言语(玩笑/元层/回忆转述)之**消歧标记**(`not_fact` 等)不在本批
|
|
170
|
+
(P1 事件行无该信号)。
|
|
171
|
+
- 探针只测**账本面**可辨性;**生成器级「无账强答」未测**——那需要接生成器侧读数,后置。
|
|
172
|
+
- 槽位按**标签面精确匹配**(slot 名相等),不做同义归并/模糊匹配。
|
|
173
|
+
- `state_chain` 无 `time_axis` 语义:台账事件行只有落账时间戳 `t`,无第二轴(**不伪造**);
|
|
174
|
+
需要轴语义请走 `stg` 的 timeline/relation/anchors。
|
|
175
|
+
- 单库=单台账:跨库/多租户合并不在此。
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 九、退役纪律:节点生命周期 `archived`(默认检索剔除)
|
|
180
|
+
|
|
181
|
+
> 《秤》v2.1 §5.2「退役纪律」口径的落地页。**先分清两个「退役」**(同名不同物):
|
|
182
|
+
|
|
183
|
+
| 说谁 | 字段 / 参数 | 谁管 |
|
|
184
|
+
|---|---|---|
|
|
185
|
+
| 台账**槽位单元**的生存态(§四) | 投影单元 `state` = `active`/`retired`,查询参数 `include_retired` | `md_cg/state_slots.py`(查询时现算) |
|
|
186
|
+
| **节点**(md 记忆条目)的归档态(本节) | frontmatter / 索引 `lifecycle_state` = `archived` | `md_cg/lifecycle.py` 状态机 + 读面剔除 |
|
|
187
|
+
|
|
188
|
+
### 1. 语义(写定,逐档可对拍)
|
|
189
|
+
|
|
190
|
+
| `lifecycle_state` | 默认读/注入面(检索面 · stg 面 · 会话续接包全段) | 说明 |
|
|
191
|
+
|---|---|---|
|
|
192
|
+
| `active`(**缺键或非法值同此**) | 参与 | fail-open:存量节点零迁移、不误剔 |
|
|
193
|
+
| `converged` | 参与 | **降权轴**(同构聚合定型),不是退役 |
|
|
194
|
+
| `demoted` | 参与 | **降权轴**(弱化),不是退役 |
|
|
195
|
+
| `archived` | **默认剔除** | 退役不删除:节点文件仍在、可显式恢复 |
|
|
196
|
+
|
|
197
|
+
### 2. 判据与落点(判据单点,三个消费面)
|
|
198
|
+
|
|
199
|
+
- 判据单点:`lifecycle.is_archived(e)`(`md_cg/lifecycle.py`)≡ `state_of(e) == "archived"`;
|
|
200
|
+
全部消费点共同引用,不各写一份口径。
|
|
201
|
+
- 消费点 ①(**cg 检索面**):`MdCGOS._candidates`(`md_cg/mdcos.py`)——**检索类** cg 读 op
|
|
202
|
+
(`route` / `read` 的检索分支与 `budget_tokens` 预算召回分支 / `search` / `search_rrf` 及其
|
|
203
|
+
内含的 lexical·bucket·entity·graph·chain·temporal 各路)都经这一个候选池;
|
|
204
|
+
`MdCGSecure._candidates` 经 `super()` 在其上叠加读可见性,判据同源。
|
|
205
|
+
注意:cg 的读 op 并非全走候选池——见消费点 ③(会话续接面自持取数面)。
|
|
206
|
+
- 消费点 ②(**stg 扫描面**):`stg._scan_one`(`md_cg/stg.py`,`_scan` 的逐条实现单点)
|
|
207
|
+
——`timeline` / `anchors` / `consistency` 三 op 的候选面同点覆盖,索引子集
|
|
208
|
+
(`MDCG_STG_INDEX=1`)与全量遍历两条分支逐位一致。`relation` 是显式 id 直读、
|
|
209
|
+
`state_chain` 走台账,两者都不经候选面(不受本节约束)。
|
|
210
|
+
- 消费点 ③(**会话续接注入面**):`MdCGOS.session_recall`(`md_cg/mdcos.py`)的
|
|
211
|
+
**四个取数段**——会话要点 `_session_notes`、活跃目标 `goals`、任务台账 `tasks`、
|
|
212
|
+
未解问题 `unresolved`(`goals`/`tasks` 经 `_retired_by_id` 按 id 回查索引后交同一
|
|
213
|
+
判据)。`cg(op=session, action=recall)` 自持取数面(不经 `_candidates`),它把节点
|
|
214
|
+
内容装配成「续接包」回给调用方/注入上下文(=注入面),故同接本判据。台账两段
|
|
215
|
+
取**全量窗**(`_LEDGER_WINDOW`)过滤后截断 `_PACK_ROWS=5` 条,故退役剔除不会让
|
|
216
|
+
包「不足额」;`tasks.active_total/done_total` 随之取**剔除后**的全窗计数(与列表
|
|
217
|
+
同源自洽)。`recent` 段是事件窗口(非节点)、`self_state` 是只读快照卡,不涉退役。
|
|
218
|
+
(独立复核 2026-10-06 两轮实测:接线前 archived 要点摘要、未解问题正文、活跃目标
|
|
219
|
+
与任务卡均经该 op 照旧回出;现由守卫 R1.12/R1.13/R3.5/R3.6/R4.6 钉住。)
|
|
220
|
+
|
|
221
|
+
### 3. 不受限面(「退役不删除」的另一半)
|
|
222
|
+
|
|
223
|
+
- `cg.get(node_id)` 直读、`cg(op=audit)` 证据审计视图:archived 期间**照常可达**;
|
|
224
|
+
- 工程台账面(`goal` / `task`)与统计面(`health` / `whoami` / conformance):直读索引,
|
|
225
|
+
不受本节约束;
|
|
226
|
+
- **生命周期恢复**:库层入口 `MdCG.set_state(node, "archived"→"active")`
|
|
227
|
+
(`md_cg/mdcg.py:2619` → `lifecycle.set_state`,走合法迁移表、逐级不跳级);恢复后
|
|
228
|
+
读面/续接面重新可见。**MCP 工具面没有独立生命周期入口**(`mcp_server.py` 全文无
|
|
229
|
+
`set_state` / `lifecycle` 字样)——「显式恢复」是库层调用面。
|
|
230
|
+
- 与 `op=restore` 的区别(易混,写明):`op=restore` 是 `op=forget` 的 `action=restore`
|
|
231
|
+
→ `cg.restore`(`md_cg/mdcos.py:3029`)=把**已遗忘**(软删除进 `trash/`)的节点放回,
|
|
232
|
+
是**删除轴**,与生命周期状态机无关;且放回时 `lifecycle_state` 按新节点(`active`)
|
|
233
|
+
起判,`active→archived` 跳级被拒 ⇒ **不透传(落 `active`)**(既有行为,本轮未改)。
|
|
234
|
+
|
|
235
|
+
### 4. 复跑读数
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
python -X utf8 scripts/probe_d_retirement_discipline.py # 《秤》v2.1 §5.2 探针
|
|
239
|
+
python -X utf8 -m md_cg.test_lifecycle_retire_leak # 守卫 R1–R4
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
| 读数(`PROBE_D_JSON`) | 口径 | 目标(面计数,括号内为比率) |
|
|
243
|
+
|---|---|---|
|
|
244
|
+
| ① 退役泄漏率 | 退役后 v2 仍出现在查证面(读面 search∪recall、时空面 timeline∪anchors)的面数 / 面数 | `0/2`(0.0) |
|
|
245
|
+
| ② 更新采纳率 | v2 写入后可见的面数 / 面数(防「一刀切全滤」的反向缺陷) | `2/2`(1.0) |
|
|
246
|
+
| ③ 旧事实残留率 | 退役步之后 v1 仍可见的面数 / 面数(不连带误剔) | `2/2`(1.0) |
|
|
247
|
+
| ④ 失效误判证伪率 | 退役节点被错误置 falsified/rejected 的条数 / 退役节点数(退役 ≠ 证伪) | `0/1`(0.0) |
|
|
248
|
+
|
|
249
|
+
(探针人读行打印的就是**面计数**「n/分母(目标 m)」;上表与它同单位,比率为换算值。)
|
|
250
|
+
|
|
251
|
+
探针特性:隔离 temp root(零在役库写入)、纯 stdlib、无随机/无时间戳、
|
|
252
|
+
`--out` 必须落在仓外(fail-closed)、末行 `PROBE_D_JSON {...}`,**两遍运行 stdout 字节一致**。
|
|
253
|
+
|
|
254
|
+
### 5. 边界(如实)
|
|
255
|
+
|
|
256
|
+
- 只剔 `archived`。要让 `converged`/`demoted` 不参与,请走既有其他维度
|
|
257
|
+
(`role` / `view` / `layer` / `session` / `validity`)——不得把它们并进退役判据。
|
|
258
|
+
- 台账单元退役(§四 `retired`)与节点退役(本节 `archived`)**各自独立、互不联动**。
|
|
259
|
+
- **面的判据(写死,供后续接线照此归类)**:**默认读/注入面**=调用方给查询/意图/会话视图,
|
|
260
|
+
**节点集合由库自选**且结果直接回给调用方或注入上下文 ⇒ 必须消费 `is_archived`;
|
|
261
|
+
**定向/管理/统计面**=调用方给出**显式节点选择键**(`node_id` / `subject:*` 标签 / 前缀 /
|
|
262
|
+
层 / 状态)或面本身是诊断·统计·写面 ⇒ 直读,不受本节约束。
|
|
263
|
+
- 已接线消费面(3 处,4 子面):检索面 `_candidates`、stg 面 `_scan_one`、会话续接注入面
|
|
264
|
+
`session_recall` 的**全部四个取数段**(要点 `_session_notes` + 活跃目标 + 任务台账 +
|
|
265
|
+
未解问题;后两段经 `_retired_by_id` 按 id 判据)(§2)。
|
|
266
|
+
- **已枚举但归入「定向/管理/统计面」(不受限,逐条申报)**:`cg.get` 直读、`op=audit`
|
|
267
|
+
证据审计、**工程台账的显式管理查询面**(`cg(op=goal, action=list)` / `cg(op=task,
|
|
268
|
+
action=list)`——直读台账,archived 期间照样列出,守卫 R1.13c 钉住这一侧)、
|
|
269
|
+
`health`/`whoami`/`_role_counts`/`_sensitivity_counts`/`conformance`/`census`/`insight`
|
|
270
|
+
统计、`review_records` 审核记录、`export`/`evidence` 导出与证据面、`crosscheck`/
|
|
271
|
+
`ghostref`/`consistency` 诊断面、`backfill*`/`writelimit`/`freshness`/`forgetting`
|
|
272
|
+
维护写面、`mreview/govern` 治理面、白箱 KB 工具面。
|
|
273
|
+
**注意别与消费点 ③ 混读**:同一份 goal/task 台账,**注入面(续接包)剔除 archived、
|
|
274
|
+
管理查询面直读**——这不是矛盾,是判据两侧的分工(守卫同时钉住两侧:R1.13b 剔除、
|
|
275
|
+
R1.13c 直读)。
|
|
276
|
+
其中**会回内容且集合由库自选**的一个代表面如实点名:`identity.profile`
|
|
277
|
+
(`md_cg/identity.py:310`,按 `subject:<id>` 标签自选并回锚点正文摘录)——实测 archived
|
|
278
|
+
锚点仍回出(取证:`identity.profile` 返回的 `anchors[0].content` 含归档节点正文标记);
|
|
279
|
+
按上条判据它属**定向面**(`subject_id` 是显式选择键,与 `cg.get` 同族),故**本轮未接线**
|
|
280
|
+
(其文件不在本轮允许改动面内)。
|
|
281
|
+
- 已知未覆盖面(如实,**本轮不修**——均落在本轮允许改动面之外,须单独立项裁定):
|
|
282
|
+
- 基类 `MdCG.search`(`md_cg/mdcg.py:3677`):**plain `MdCG` 实例**(白箱 KB / 离线
|
|
283
|
+
脚本 / 测试)走的默认检索面未接本判据,archived 仍出现在其候选里(取证:同一
|
|
284
|
+
序列下 `MdCG` 实例 search 命中 `['a_v1','a_v2']`,`MdCGOS` 实例命中 `['a_v1']`);
|
|
285
|
+
MCP 工具面(`MdCGOS`/`MdCGSecure`)不受影响。
|
|
286
|
+
- **因果链/图面** `chain.adjacency`(`md_cg/chain.py:162`):以全部索引条目建出邻接表,
|
|
287
|
+
只过读可见性闸(`_chain_visible`)、无 lifecycle 判据——`cg(op=causal, action=chain,
|
|
288
|
+
node_id=<种子>)` 会**扩散**到 archived 节点(取证:链里出现已归档的 `b_tgt`);
|
|
289
|
+
检索面的 chain 路不受影响(其结果受 `_candidates` 的 entries 约束,守卫 R1.11 钉住)。
|
|
290
|
+
- **结构/拓扑面** `subgraph.children_index` / `parents_index`(`md_cg/subgraph.py:109` /
|
|
291
|
+
`:154`):同族 O(N) 结构索引,未接 lifecycle 判据(返回 id 映射、不回正文)。
|
|
292
|
+
- **rust 检索内核**(`rust/src/store.rs::load_index` + `engine.rs`):直读 `_index.json`
|
|
293
|
+
条目、自带检索实现,全目录 `lifecycle`/`archived` 零命中(无退役处理)。
|
|
294
|
+
- 跨进程一致性:判据只读**本进程索引条目**(`lifecycle_state` 由
|
|
295
|
+
`lifecycle._sync_index` 随迁移同步并落 `_index_log`),他进程刚归档、本进程索引
|
|
296
|
+
尚未重载的窗口内读数可能滞后(与 `lifecycle.set_state` 的既有落盘口径同源)。
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## 修订记录
|
|
301
|
+
|
|
302
|
+
| 日期 | 要点 |
|
|
303
|
+
|---|---|
|
|
304
|
+
| 2026-10-06 | v1.0 首版(P3 批):全链(台账→投影→查询→记账口→CLI→探针)/ 开关 `MDCG_STG_STATE` 默认关与 CLI 恒可用 / 授权口径(`state_event`→`write` 词映射,actor 恒取令牌)/ 探针三读数复跑命令 / 边界如实(§一–§八) |
|
|
305
|
+
| 2026-10-06 | 补 §九「退役纪律」:节点 `lifecycle_state=archived` 的默认检索剔除(判据单点 `lifecycle.is_archived`,消费面 `MdCGOS._candidates` + `stg._scan_one` + 会话续接注入面 `session_recall` 四段〔要点/活跃目标/任务台账/未解问题〕)/ 两套「退役」词义分界 / 不受限面(直读·审计·**台账管理查询面**·统计)与「生命周期恢复 ≠ `op=restore`(删除轴)」/ 《秤》5.2 探针四读数(面计数口径)与守卫复跑 / 边界如实(未覆盖面:基类 `MdCG.search`、因果链面 `chain.adjacency`、结构面 `subgraph`、rust 内核、定向面 `identity.profile`) |
|