@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
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# 发布 v0.7.4:世界模型(语义时空图)功能端三批落地 + DSH 会话归因治本
|
|
2
|
+
|
|
3
|
+
> 版本 0.7.4 | 提交 `d718f593`(本报告与版本递增为其后一笔)| 2026-10-06
|
|
4
|
+
> 前版 v0.7.3(外报六连修与世界模型底座)| 定位:「把世界模型,也就是语义时空图的地基打好」(使用者 2026-10-06)
|
|
5
|
+
> 下一版 0.8.0=与对外完整身体库 `FuRongJun-1999/lingshu` 组合、端到端可用
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 一、本版范围(v0.7.3 → v0.7.4 共五笔)
|
|
10
|
+
|
|
11
|
+
| 提交 | 内容 |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `c1e18a08` | 语义时空图补全·世界模型功能端 设计 v0.1(六签收点已获批准) |
|
|
14
|
+
| `37267750` | **P1** 状态事件抽取器 v4(消歧口径)+对拍答案卷三率读数(批次112) |
|
|
15
|
+
| `b3543272` | **B** DSH 会话归因治本:插件运行期会话注入写归因面(批次113) |
|
|
16
|
+
| `3f67b214` | **P2** 槽位投影(state_slots)+ stg 第五 op `state_chain`(批次114) |
|
|
17
|
+
| `d718f593` | **P3** 写侧记账口 `cg(op=state_event)` +《秤》5.1 账本完整性探针(批次115) |
|
|
18
|
+
|
|
19
|
+
## 二、世界模型功能端:事件是源、槽位是投影
|
|
20
|
+
|
|
21
|
+
### P1 · 状态事件抽取器 v4(真实语料跑道)
|
|
22
|
+
|
|
23
|
+
- 纯标准库、确定性(同输入跨目录逐字节一致)、零记忆库写入;`--out` 强制仓外 fail-closed。
|
|
24
|
+
- 24 条字面锚规则覆盖 11 槽位;三层消歧:**用户侧声明优先**(真源)、非事实三类标记(玩笑/元层/回忆转述)、内容实指时点(搬迁锚定首现轮而非词形首现)。
|
|
25
|
+
- 对拍答案卷三率:**漏 1 / 误 0 / 错 1(分母 25)**;与 v3 基线五项读数逐位对齐。
|
|
26
|
+
- 未覆盖清单如实单列(形态 / 发色与瞳色 / 米饭——裁定句在语料外或属元层撤回),不计入三率。
|
|
27
|
+
|
|
28
|
+
### P2 · 槽位寄存器投影 + stg 第五 op
|
|
29
|
+
|
|
30
|
+
- `md_cg/state_slots.py`:投影=**查询时从 append-only 台账现算**(零落盘零缓存、不建第二真源);字段表=设计稿 §3 逐字(现值/退役/区间/变迁史/档位/备择/盲区);撤回判据取 payload 不取 kind 标签;孤立撤回不编造起端。
|
|
31
|
+
- `stg(op=state_chain)`:第五 op,flag `MDCG_STG_STATE` **默认关**(与 INDEX/QUALIFY 同纪律);关臂返回 disabled 体(不抛、不静默);返回体沿 issue #52 截断可观测口径。
|
|
32
|
+
- 守卫 71 断言(A–J 含 MCP 接线面)+定点变异;**四 op 语义零改动**(AST 级核验)。
|
|
33
|
+
- 真实语料读数:25 事件 → **11 槽位**(9 active + 2 退役:名字=孤立撤回、房贷=3 条变迁史 1123→1477);撤回后复活(记忆特性 613→1475)正确;追加即变(无缓存)。
|
|
34
|
+
|
|
35
|
+
### P3 · 写侧记账口 +《秤》5.1 账本探针
|
|
36
|
+
|
|
37
|
+
- `cg(op=state_event)`:五元事件 append——权限**双闸**(映射既有 `write` 词,不给令牌面引入新 op 词)+显式 `require_write`(台账直写盘面绕过库层写闸的缺口补齐);`actor` 恒取令牌(防伪造);kind 空串归 None;fail-closed 抛错原样上抛。
|
|
38
|
+
- `scripts/probe_c_ledger_integrity.py`(《秤》v2.1 §5.1 口径):三读数——**事件覆盖缺口率 / 无账可辨率(不编造不反推)/ 变迁史可查率**;隔离 root、确定性、`--out` 仓外 fail-closed。
|
|
39
|
+
- 真实语料读数(鲸娘 25 事件 × 14 槽位清单):**缺口 3/14**(形态/发色瞳色/米饭=P1 已知边界)、**无账可辨 5/5**、**变迁史可查 11/11**。
|
|
40
|
+
- 文档:`docs/mdcg/世界模型功能端_使用与运维_v1.0.md`(全链/开关/授权/边界/复跑命令)。
|
|
41
|
+
|
|
42
|
+
### 全链贯通
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
记账 cg(op=state_event) → 台账 _state_events.jsonl(append-only)
|
|
46
|
+
→ 投影 state_slots(查询时现算) → 查询 stg(op=state_chain) → CLI 只读入口 → 《秤》5.1 探针
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## 三、DSH 会话归因治本(B)
|
|
50
|
+
|
|
51
|
+
- **双链根因**:启动脚本按目录 mtime 猜会话(DSH 只更新文件 mtime ⇒ 永久选旧会话)+ md_cg `_declared_session` 环境权威否决请求级声明(env > 声明 > 进程身份)。
|
|
52
|
+
- **治本**:启动脚本去掉猜测(保留清空与校验根);插件把**运行期会话注入写归因调用**——只注入写归因面(`mdcg_remember` + `cg(op=write)`),读面视图过滤/op 特化语义一律不动;未观测落 `unassigned` 显式占位。
|
|
53
|
+
- **真机端到端验收**:重启后经浏览器让 agent 直调记忆写入,读回 `session` = **当前会话真实 id**(非旧猜测桶、非随机值)。
|
|
54
|
+
- 冻结守卫逐字未动;一处实现偏离经 owner 裁定(实例级观测门,真机单实例与字面逐位等价)。
|
|
55
|
+
|
|
56
|
+
## 四、工程面
|
|
57
|
+
|
|
58
|
+
- 门禁数字(本机全量亲跑):守卫 71/71+47/47、python 全量 354/354、npm test 134/0/1、gate 11 腿 PASS。
|
|
59
|
+
- `cogmap` op 计数锚重挂:**cg 38 op / stg 5 op**;`tokens.ALL_OPS` 三处同步守卫与 M4-8 抛错白名单两处**连带适配**(判定力保持)。
|
|
60
|
+
- 教训入库:**R4「包内非追踪件」的设计意图=逼新文件入库**(判别实验:unstage→红点名新文件、add→复绿)——发布批契约须显式允许 `git add`。
|
|
61
|
+
|
|
62
|
+
### 补 · 退役纪律修复(批次116,`9d26266d`,发布前并入)
|
|
63
|
+
|
|
64
|
+
外部 6 家横测(《秤》5.2 退役纪律探针)实测「灵枢退役泄漏」;编排侧第一手复现:archived 节点的 frontmatter 与索引值均正确落档,但读面从未接线过滤(`lifecycle.py:42` 的承诺此前是空头)。本批:
|
|
65
|
+
|
|
66
|
+
- **判据单点** `lifecycle.is_archived`(缺键/非法→active,fail-open 零迁移不误剔);
|
|
67
|
+
- **消费面接线**:`MdCGOS._candidates`(cg 读面单点)、`stg._scan_one`(stg 面单点)、`session_recall` 四段(notes/goals/tasks/unresolved——会话续接注入面,含先过滤后截断与 total 计数口径);
|
|
68
|
+
- **口径**:只剔 archived(converged/demoted 是降权轴,不误剔);审计/显式直读/管理查询面/恢复不受限(「退役不删除」的另一半);
|
|
69
|
+
- **守卫** 36 断言(R1–R4,含图/链扩散锐化腿;独立复核七条字节级变异逐条钉红)+ **探针** `scripts/probe_d_retirement_discipline.py`(《秤》5.2 口径四读数:leak 0/2、adoption 2/2、v1_residue 2/2、wrong_falsified 0/1;两跑逐字节一致);
|
|
70
|
+
- 边界如实(基类 `MdCG.search`/causal chain/subgraph/rust 内核另立裁定——运维文档 §5 逐项列明)。
|
|
71
|
+
|
|
72
|
+
修复后复跑(编排侧亲跑):守卫 36/36、python 全量 **355/355**、npm 134/0/1、gate **VERDICT=PASS**。
|
|
73
|
+
|
|
74
|
+
## 五、边界与如实声明
|
|
75
|
+
|
|
76
|
+
- `alternatives`/`blindspots`:结构在场、**恒为空**(判定口径后置,不臆造)。
|
|
77
|
+
- 生成器级「无账强答」率**未测**——本批探针只测账本面可辨性(需评测判官跑道)。
|
|
78
|
+
- P1 三槽位未覆盖(形态/发色瞳色/米饭)如实单列,不粉饰。
|
|
79
|
+
- `test_mode_parity` 一次**不可复现偶发红**留档(含四条排除实验与三处复跑读数),门禁轮未复现。
|
|
80
|
+
|
|
81
|
+
## 六、发布三关(发布时点实测)
|
|
82
|
+
|
|
83
|
+
| 关 | 读数 |
|
|
84
|
+
|---|---|
|
|
85
|
+
| 本机门禁 | `npm run gate` **VERDICT=PASS**(11 腿,rc=0) |
|
|
86
|
+
| E 盘空沙箱 | **VERDICT=PASS**(rc=0):空沙箱真装真握手——出货清单 1580 条目含 utf8_boot.py → `npm install` 装好 → 真启动 MCP 握手 `serverInfo.version=0.7.4`、`tools=[cg, stg]`;沙箱保留供复核 |
|
|
87
|
+
| Linux 容器双栈 | **栈一 45 pass / 0 fail**(rust:bookworm `linux_verify.sh full`,含 12 项断言判别力自证与 smoke 22/0);**栈二 135 tests / pass 132 / fail 0 / skipped 3**(node:22-bookworm TS 套件) |
|
|
88
|
+
| registry 回验 | 发布后执行 `check_publish_artifact --registry 0.7.4`(编排侧回验并回填) |
|
|
89
|
+
|
|
90
|
+
## 七、复跑命令(中性占位路径)
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# 守卫与全量
|
|
94
|
+
python -X utf8 -m md_cg.test_state_slots # 71 断言
|
|
95
|
+
python -X utf8 -m md_cg.test_state_event_op # 47 断言
|
|
96
|
+
python -X utf8 scripts/run_tests.py --jobs 4
|
|
97
|
+
|
|
98
|
+
# 《秤》5.1 账本探针(--out 须仓外)
|
|
99
|
+
python -X utf8 scripts/probe_c_ledger_integrity.py \
|
|
100
|
+
--events %TEMP%/state_events.jsonl --expect-slots 住所,房贷,名字 [--out %TEMP%/probe_c_out]
|
|
101
|
+
|
|
102
|
+
# 写口与查询面 CLI(只读)
|
|
103
|
+
python -X utf8 -m md_cg.state_slots --status
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
*本报告 v1.0 · 2026-10-06 · 编排侧编制,独立复核与编排侧亲跑读数收录*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 归一层缺省翻关(UNIFY-DEFAULT-OFF)修复记录 v1.0
|
|
2
2
|
|
|
3
3
|
> **日期**:2026-09-30 | **缺陷号**:UNIFY-DEFAULT-OFF | **契约**:动态工作流 `dwfrun-e8eabeba-…` 的 `args.contract`(`defect=UNIFY-DEFAULT-OFF`)——**验收条款原文见 §七.1**
|
|
4
|
-
>
|
|
4
|
+
> **被测面**:`<仓根>` **工作树(未提交)**——12 个已修改跟踪件(`README.md`、`docs/hive/检索算法口径对照_v0.1.md`、`md_cg/bench_e2e_locomo_qa.py`、`md_cg/mdcg.py`、`md_cg/mdcos.py`、`md_cg/semantic/unify.py`、`md_cg/test_en_pipeline.py`、`md_cg/test_rank_parity_score_mode.py`、`md_cg/test_semantic_canonical.py`、`md_cg/test_unify_scope.py`、`rust/src/atoms.rs`、`scripts/rank_parity.py`)+ 2 个未跟踪项(`.zcode/`、新守卫 `md_cg/test_unify_default_off.py`)
|
|
5
5
|
> **证据分级**(本报告不越界陈述):
|
|
6
6
|
> - **§一、§三**=本次读码实读(行号以本次读码为准,**每处同时标明 `git HEAD`(修前)与工作树(修后)两个行号**);§一.2 与 §三.1 各附实跑命令原文。
|
|
7
7
|
> - **§二**=工作流复现腿采集的修前现场(11 条腿,逐条标出「谁跑的」);**本报告未重跑修前态**。其中「HEAD 判据字面量」「HEAD↔现行逐位等价」「修前非 `"0"/"1"` 取值」「修前断言判别力」四点由本报告直接复核,见 §一.2、§四.6、§四.13、§四.11。
|
|
@@ -145,7 +145,7 @@ $ git diff HEAD -- md_cg/semantic/unify.py | grep -E "^@@"
|
|
|
145
145
|
|
|
146
146
|
## 四、验证数字(本次会话实跑)
|
|
147
147
|
|
|
148
|
-
> 全部命令在
|
|
148
|
+
> 全部命令在 `<仓根>`(工作树)执行;标【副本】者在一个**字节保真临时副本**执行——副本 = `git ls-files` 2109 件逐文件字节拷贝 + 未跟踪的新守卫 1 件,位于 `%TEMP%\unifyoff_report`。副本内建库/建 target 均落临时目录,**工作区在全部实验前后 `git status --short` 逐行相同**(12 M + `.zcode/` + `md_cg/test_unify_default_off.py`)。
|
|
149
149
|
|
|
150
150
|
### 4.1 新守卫正向
|
|
151
151
|
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# 用户裁决处置 · 第一批 报告(A1 / A3 / A4 / A6 / A8)
|
|
2
|
+
|
|
3
|
+
> **报告文件**:`docs/eval/用户裁决处置_第一批_v1.0.md`。**日期**:2026-10-05。
|
|
4
|
+
> **本批性质**:**使用者裁决的处置**——A1/A3/A4/A6/A8 五项均由使用者逐条裁决方向(含 2026-10-05 的两条明示裁决:「测试文件是检验系统稳定性的支柱」→ A6 收件、「加规则」→ A8 忽略面),修复席落地实现并各配行为守卫;本席负责复核、实跑核对与编译成本报告。**不是缺陷迭代轮**(无候选池/分诊/编号续编流程,编号仅 A4 定点使用 N263)。
|
|
5
|
+
> **改动面**:工作区未提交 = 10 件修改 + 2 件新增守卫(`git status --porcelain` 本席实跑,见 §三);全部为「弱判据 → 强判据 / 误伤面 → 精确面」方向,无一处放宽。
|
|
6
|
+
> **读数来源声明**:本报告数字分两级——「**本席实跑**」(本次会话当场执行的命令与读数,逐条列于 §三)与「**材料所载**」(材料 ① 五项处置读数/材料 ② 全量回归与九腿门禁/材料 ③ 双清单自检;逐处标注来源编号)。凡材料所载而本席未复跑者一律标注,不冒充实跑。
|
|
7
|
+
> **行号口径**:全文行号为**本席亲读的现工作区行号**(工作区含本批未提交改动);与材料 ① 所载行号有零星尾行差异处随文注明。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 一、执行摘要
|
|
12
|
+
|
|
13
|
+
**本批是使用者裁决的处置(不是缺陷迭代轮)**:五项处置逐条为——
|
|
14
|
+
|
|
15
|
+
1. **A1 · `link_check` 代码跨度感知**(使用者裁决的修法方向:只排除代码跨度、判据不动)——链接扫描前经单点 `_strip_code_spans(text)` 把围栏代码块与行内代码(反引号跨度)内字符**等长置空格**(换行与偏移不变),①② 不再计入 BROKEN、③④ 判据未动。守卫 9 passed / 0 failed / 0 skipped(**本席实跑**);红基线以 `--impl head` 方式**本席实跑复现**(4 passed / 4 failed / 1 skipped,RC=1,① ② 被判 BROKEN、counts=(1,0,4,0))。
|
|
16
|
+
2. **A3 · 「不适用条件」两函数收口剥除单点**——`has_non_applicable` 改判 `ccg_mark_present`;`positive_body` 与 `consistency._body_text` 共用新剥除算法单点 `_strip_ccg_segments`(无冒号形态的**值行**不再残留进召回键)。守卫 `test_ccg_form_parity` PASS=109 / FAIL=0 / SKIP=0(**本席实跑**,含 ⑦节红基线自证腿 PASS)。
|
|
17
|
+
3. **A4 · 蜂群容错测试恒真断言修(编号 N263)**——旧断言在**设计内恒为空**的 WAL 重放 health 面断言 `all([])`(恒真、守护力为零);判据收成单点 `health_full_marks`(**面非空 ∧ 逐项满分**,空输入不再算通过)、断言移到故障跑的在线含值报告(实测 6×1.0),并常驻三条定点变异自证腿。测试 12 passed / 0 failed(**本席实跑**)。
|
|
18
|
+
4. **A6 · `test/` 收集面与判据面同步**(使用者裁决:测试文件是检验系统稳定性的支柱)——`run_tests` 新增 test 组(**具名裁决清单** 2 件)、`judgment_manifest.PATTERNS` 双副本各加两条精确名冻结。**本席实跑**:`--check-coverage` verdict=PASS(missing=[]);收集面共 341 目标(六组);test 组 2/2 通过。
|
|
19
|
+
5. **A8 · `.zcode/` 忽略面**(使用者裁决:加规则)——根 `.gitignore:129` 新增 `/.zcode/`,两处内嵌忽略面原位未动;新建行为守卫 `scripts/test_ignore_face.py` 把「该忽略面被覆盖」与「入库件不得被忽略」两个方向都钉死。守卫 19 passed / 0 failed / 0 skipped(**本席实跑**);`git status` 不再见未跟踪 `.zcode/`、`git add -A -n` 输出零 `.zcode/` 路径(**本席实跑**复核)。
|
|
20
|
+
|
|
21
|
+
**另有两条全局读数(本席实跑)**:
|
|
22
|
+
|
|
23
|
+
- **全量回归** `python -X utf8 scripts/run_tests.py --jobs 4` → **336/336 通过、5 跳过(依赖缺失/平台不符)、RC=0**(与材料 ② 一致)。
|
|
24
|
+
- **九腿门禁**(`package.json:89` 的 `scripts.gate` 链)**逐腿实跑全部 rc=0**:check_unreachable / check_publish_artifact(VERDICT=PASS)/ check_publish_smoke(VERDICT=PASS)/ cogmap_sync check / link_check / workspace_index --check / verify_discipline --allow-missing(10/10 目标一致)/ gate_rust_crate_test / gate_rust_parity。串联 `npm run gate` 未跑——逐腿全绿逻辑蕴含串联 rc=0,且避免二次真打包(见 §四)。
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 二、处置明细
|
|
29
|
+
|
|
30
|
+
### A1 · `link_check` 代码跨度感知(围栏块 + 行内代码不计入 BROKEN)
|
|
31
|
+
|
|
32
|
+
- **where(现工作区行号,本席亲读)**:
|
|
33
|
+
- `scripts/link_check.py:25-26`——模块文档串补一条口径(「围栏代码块与行内代码内的文本先经 `_strip_code_spans` 置空……代码里写出的链接形态是示例不是引用」);
|
|
34
|
+
- `:73-128` 单点段:`_FENCE_OPEN :75`、`_BACKTICK_RUN :76`、`_code_span_ranges :80-90`、`_strip_code_spans :94-128`(注释 `:93`);
|
|
35
|
+
- `:144`——scan 内 `LINK.finditer(_strip_code_spans(text))` 前置调用;
|
|
36
|
+
- 新增守卫 `scripts/test_link_check_fence_aware.py`(278 行;断言主体 `:227-248`、L6 红基线自证腿 `:250-271`)。
|
|
37
|
+
- **改动前(缺陷面)**:`LINK` 整文捕获(`:38`),围栏代码块内与行内代码(反引号跨度)里写出的「方括号标注紧跟圆括号路径」形态与真链接一视同仁,目标不存在即判 BROKEN——**本仓实测自伤一次**(报告正文写出该形态即令 gate 链红)。**本席实跑核对 HEAD 版**(`git show HEAD:scripts/link_check.py`):`_strip_code_spans` 不存在。
|
|
38
|
+
- **改动后**:扫描面前置单点——围栏开闭按 CommonMark 从紧口径(同定界符、不短于开启者、无信息串),行内反引号跨度按**同长度**成对(长度不等者视为代码内容、继续找闭合);代码跨度内字符等长置空格,**报出行号仍是源文件真实行号**。判据(围栏外真链接判 broken / 真可达)未动。
|
|
39
|
+
- **守卫红基线 → 绿态**:
|
|
40
|
+
- **红(本席实跑复现)**:`python -X utf8 scripts/test_link_check_fence_aware.py --impl head` → **4 passed / 4 failed / 1 skipped,RC=1**:L1 ① 围栏内两锚被判 BROKEN、L2 ② 行内被判 BROKEN、L4 counts=(1,0,4,0)、L5 rc=1。与材料 ① 所载「4 passed / 4 failed,EXIT=1」一致(本席实测多 1 skipped——L6 腿在 `--impl` 显式指定下按设计跳过)。
|
|
41
|
+
- **绿(本席实跑)**:`python -X utf8 scripts/test_link_check_fence_aware.py` → **9 passed / 0 failed / 0 skipped,RC=0**。关键腿:L3 ③ 围栏外真断链仍计入恰一条;L3b ③ 报出行号=17=源文件真实行号;L4 ④ 计数恰 OK=1/ALLOWED=0/BROKEN=1/UNTRACKED=0;L5 判据未放宽(BROKEN 恰 1 条且退出码=1);L6 红基线自证 PASS(HEAD 版仍误判 ① ②——本改动提交后该腿自动转 SKIP)。
|
|
42
|
+
- **旁证(本席实跑)**:`python -X utf8 scripts/link_check.py` → 扫描受管 md **1284 个**、判定链接 239 条、OK=239 / ALLOWED=0 / BROKEN=0 / UNTRACKED=0、RC=0。
|
|
43
|
+
- 材料 ① 另载两项(本席未复跑,来源标注):只读对拍(HEAD 版 exec 进内存 vs 新版本逐项相同)、全仓全量 run_tests(本席以全量回归 336/336 覆盖,见 §三)。
|
|
44
|
+
- **未放宽**:③ 围栏外真断链与 ④ 真可达的判据本身未动(L3/L3b/L4/L5 本席实跑为证);只把「示例」排除出扫描面。
|
|
45
|
+
|
|
46
|
+
### A3 · 「不适用条件」两函数 → 剥除算法单点
|
|
47
|
+
|
|
48
|
+
- **where(现工作区行号,本席亲读)**:
|
|
49
|
+
- `md_cg/nodefile.py:406-444`(注释 `:405`)——新增剥除算法单点 `_strip_ccg_segments`:行内带值只剥该行;裸标题连同其后首个非空、非标题行(=该字段值行)一并剥;紧接的下一个标题不算值(不吞下一要素);判据一律走 `_ccg_heading_rest`(缩进标题与二级标题不构成「已声明」)。*材料 ① 载 `:406-439`,本席以现工作区亲读 `:406-444` 为准(差在函数尾行)。*
|
|
50
|
+
- `:503-516`——`has_non_applicable` 委托 `ccg_mark_present`(`:516` 为委托行;`:519-520` 是 NEG_FIELD 常量注释);
|
|
51
|
+
- `:524-540`——`positive_body` 委托 `_strip_ccg_segments(content, (NEG_FIELD,))`(`:540` 为委托行);
|
|
52
|
+
- `md_cg/consistency.py:255-275`——`_body_text` 改为委托同一单点(`:275`),删掉第二份循环;
|
|
53
|
+
- `md_cg/test_ccg_form_parity.py:67-85`(`_load_head_nodefile` 红基线助手)、`:216-269`(第 ⑦ 节:两函数 × 两形态同权 + 红基线自证)。
|
|
54
|
+
- **改动前(缺陷面)**:`has_non_applicable` 只认两种带冒号字面量(`# 不适用条件:` / `# 不适用条件:`),无冒号形态(`# 不适用条件` + 换行 + 值行)被判「没声明」;`positive_body` 只剥标题行 ⇒ 无冒号的值行(内容本体)残留正文 ⇒ **反例词面进召回键**(消费点 `MdCG._like` 实测命中)。同一条正文写不写冒号给出两种结论,与「冒号可有可无」的单点定案(N238 已收 consistency 侧)分叉。
|
|
55
|
+
- **改动后**:两函数与 `consistency._body_text` 全部复用单点(**六要素口径一份循环**);判据不放宽——空正文 / 行内提及 / 缩进标题 / 二级标题仍判 False,普通句子不被误剥。
|
|
56
|
+
- **守卫红基线 → 绿态**:
|
|
57
|
+
- **红(材料 ① 载)**:`python -X utf8 -m md_cg.test_ccg_form_parity`(工作树==HEAD 现码)→ **PASS=102 / FAIL=7 / SKIP=0,EXIT=1**;7 条红全落新增 ⑦ 节:①has_non_applicable 与单点同判失败(无冒号 False、混形态 False)②无冒号形态通体判 True 失败(旧码把真声明判成没声明)③positive_body 两形态结论不一致(无冒号得到残留值行的结果)④无冒号值行未剥净 ⑤与 `consistency._body_text` 不同口径 ⑥消费点 `_like` 把无冒号反例词当召回键。**整跑红基线本席未复跑**(需回退源码),但同一红基线在守卫内有**常驻自证腿**(见下)。
|
|
58
|
+
- **绿(本席实跑)**:`python -X utf8 -m md_cg.test_ccg_form_parity` → **PASS=109 / FAIL=0 / SKIP=0,RC=0**;⑦节全绿 + **⑦红基线自证腿 PASS**——本席实跑输出原文:「HEAD 版判 has_non_applicable=False、positive_body 残留值行=True」。
|
|
59
|
+
- 材料 ① 另载(本席未复跑,来源标注):test_n238_body_text_parity 37/0、test_p33_ccg_wiring 58/0、test_p6_consolidate 82/0、test_p2_six_elements 42/0、test_h4_sustain_snapshot 43/0、test_ccgc 87/0、`run_tests.py md_cg -k ccg --jobs 4` 5/5、消费面端到端探针(临时根、仓外)。**本席以全量回归覆盖上述全部套件**(336/336 含 md_cg 组 244 件)。
|
|
60
|
+
- **未放宽**:见「改动后」;⑦节 L 段「带冒号 True / 空正文 False / 行内提及 False」「普通句子不误伤」「裸标题后紧跟另一标题不吞下一要素」均本席实跑 PASS。
|
|
61
|
+
|
|
62
|
+
### A4 · 蜂群容错恒真断言修(编号 N263)
|
|
63
|
+
|
|
64
|
+
- **where(现工作区行号,本席亲读)**:
|
|
65
|
+
- `swarm/tests/test_swarm_fault.py:35-48`——新增 `health_full_marks` 判据单点(面非空 ∧ 逐项 |score−1|<1e-9;`:44-45` 为 N263 编号说明)。*材料 ① 载 `:35-47`,现工作区为 `:35-48`(差在 return 折行)。*
|
|
66
|
+
- `:88-94`——N263 注释 + 故障跑 stdout 落**文件**(非 PIPE,避开杀实例期间的管道缓冲死锁);
|
|
67
|
+
- `:116-117`——读回故障跑报告 + 「蜂群完成」断言;
|
|
68
|
+
- `:134-153`——在线含值臂断言 + N263 定点变异自证两条 check。*材料 ① 载 `:134-152`,现为 `:134-153`。*
|
|
69
|
+
- **改动前(缺陷面)**:**本席实跑核对 HEAD 版**(`git show HEAD:swarm/tests/test_swarm_fault.py`)——`HEAD:107-110` 旧断言 `all(abs(h["score"]-1.0)<1e-9 for h in rr_b["report"]["health"].values())` 读的是 **WAL 重放面** `rr_b["report"]["health"]`,而该面**设计内恒为空对象**(逐轮终态质量未持久化进 WAL;参与性重建会伪造 success_rate,G5「不伪造终态」纪律)⇒ `all([])==True` **恒真、守护力为零**;且它想验的「重试成功即透明」真值臂(故障跑的**在线**报告)被丢进 DEVNULL。
|
|
70
|
+
- **改动后**:判据收成单点 `health_full_marks`(**空输入不再算通过**);故障跑在线报告**落盘**并按其同 `run_swarm` 的末行 JSON 口径解析后断言(实测 6×1.0);N263 编号说明写入源码注释;三条定点变异自证腿(空面/None 判红、掉分面判红、满分面判绿)随每次执行常驻。
|
|
71
|
+
- **守卫红基线 → 绿态**:
|
|
72
|
+
- **红(材料 ① 载,本席未复跑)**:① 编号实占核对 `git grep -ohE 'N[0-9]{3,4}'` → 树内最大 N262(N802 为 ruff lint 码 `# noqa: N802`,已排除),N263 未占用 ⇒ 续编;② 从 HEAD:107 机械抽取断言谓词(同一 harness)→ 空 health 面=True(**恒真坐实**)、满分面=True、掉分面=False;③ 首跑(已加非空守卫、仍读重放面)→ `[✘] 健康评分满分……— {}`(实测重放 health 面**就是空对象**);④ 真值臂探针(临时根):在线基线 6×1.0、故障注入在线报告 6×1.0、WAL 重放 {}。**本席已独立复核**:HEAD:107-110 旧断言原文(`git show` 实跑)+ N263 在源码注释与全树编号扫描中的唯一性。
|
|
73
|
+
- **绿(本席实跑)**:`python -X utf8 -m swarm.tests.test_swarm_fault` → **12 passed / 0 failed,RC=0**。现场读数原文摘录:强杀 2 个实例子进程、蜂群完成(退出码 0)、WAL 全验签通过(60055 条 / bad=0)、故障跑在线报告 health 面 **6×1.0**、N263 变异自证两条腿 ✓(空面=False / None=False;掉分面=False / 满分面=True)、六实例终态与基线一致、gossip 水位一致。
|
|
74
|
+
- 材料 ① 另载(本席未复跑):端到端定点变异注入(json.loads 钩子把测试解析到的 health score 改 0.5 后 runpy 跑同一文件 → 11 passed / 1 failed、退出码 1——断言确能红、非平凡真)。
|
|
75
|
+
- **未放宽**:满分为真值臂;空面由「蒙混通过」改为「判红」;WAL 重放面不动(G5「不伪造终态」)。
|
|
76
|
+
|
|
77
|
+
### A6 · `test/` 收集面与判据面同步
|
|
78
|
+
|
|
79
|
+
- **where(现工作区行号,本席亲读)**:
|
|
80
|
+
- `scripts/run_tests.py:15`(docstring 测试面补 test/ 行)、`:52-69`(**TEST_DIR_TESTS 具名裁决清单** + 不收件理由注释;常量行 `:69`)、`:89-91`(`_discovered_files` 收 test/)、`:116-121`(`_discover` 新增 test 组,**直跑**——test 顶层名与 stdlib `test` 包冲突不可 `-m`)、`:230`(help 增 test)、`:238`(`_known` 六组);
|
|
81
|
+
- `scripts/judgment_manifest.py:44-48`(PATTERNS 两条**精确名**冻结 + 注释;条目 `:47-48`);
|
|
82
|
+
- `md_cg/judgment_manifest.py:59-62`(出货包侧双副本逐字同步;条目 `:61-62`);
|
|
83
|
+
- 守卫 `scripts/test_judgment_manifest.py:180-205`(第 [5] 节 7 条断言)+ 收件 `test/hive_exec_test.py`、`test/hive_wm_test.py`。
|
|
84
|
+
- **改动前(失明面)**:**本席实跑核对**——`git show HEAD:scripts/run_tests.py`:无 `TEST_DIR_TESTS`、`_known` 为五组;HEAD 版收集面 338 目标、`grep -c '^test'`=0(材料 ① 载)⇒ 落在 test/ 的可运行测试**无 runner 收养**、判据面也不冻结。
|
|
85
|
+
- **改动后**:收集面只收**具名裁决清单**(两件:零外部依赖、裸 clone 可跑、绿态 6/6 与 10/10);PATTERNS 双副本各加两条精确名(fnmatch 无通配=只认这两件);两者漏一即被覆盖守卫 [1]/[5] 节抓住。**不收的 26 件**连同理由写在常量注释里:chaos_injection 套件(退 0/1 契约完整但**当前实跑退 1**,见 §四-3)、mock_mcp.py(会挂住)、orchestrator_memory.py(恒退 0 无断言)、locomo 两件(硬编码 + 外部数据集 + 无退出码判据)、chaos 三个支撑模块。
|
|
86
|
+
- **守卫红基线 → 绿态**:
|
|
87
|
+
- **红(材料 ① 载,本席未复跑)**:① 失明红基线 `--list` 338、test 计数 0;② 中间红 `--check-coverage` → `FAIL, missing=[test/hive_exec_test.py, test/hive_wm_test.py]`、EXIT=1;③ 清点期实红 `test/chaos_injection/run_all.py` → EXIT=1(REGISTRY DRIFT;FI-M04 陈旧基线,用例侧、非被测对象缺陷)。
|
|
88
|
+
- **绿(本席实跑)**:`python -X utf8 scripts/judgment_manifest.py --check-coverage` → **verdict=PASS,missing=[]**(file_count=343;分组含 scripts/test_*.py=25、test/hive_exec_test.py=1、test/hive_wm_test.py=1);`python -X utf8 -m md_cg.judgment_manifest --check-coverage`(**包内副本腿**)→ **verdict=PASS**(两侧 groups 同源);`python -X utf8 scripts/run_tests.py --list` → **共 341 个**(md_cg 244 / hive 30 / scripts 25 / compiler 22 / swarm 18 / **test 2**);`python -X utf8 scripts/run_tests.py test` → **2/2 通过**、RC=0;`python -X utf8 scripts/test_judgment_manifest.py` → **27 通过 / 0 失败**([5] 节 7 条全 PASS,含「PATTERNS 双副本逐字一致」「两侧分组计数同源」);全量回归 336/336 含 test 两件。
|
|
89
|
+
- 材料 ① 另载(本席未复跑):判定力自证(把 PATTERNS 一条改坏 ⇒ 守卫退 1(25 通过 / 2 失败),随后原字节还原、字节一致=True)——该变异会临时改写追踪件,受「不改动产品源码」边界本席不复跑。
|
|
90
|
+
- **数值演进说明**:材料 ①(A6)载「收集面 340、scripts 组 24」为 **A8 新守卫入库前快照**;现为 341 / 25——差 1 即 A8 新增 `scripts/test_ignore_face.py`(本席实跑确认)。
|
|
91
|
+
- **未放宽**:只收裁决清单(未裁决件不得进判据面);`--verify` 缺参 fail-closed 腿、弱化必红腿、在役文件零写入腿均本席实跑 PASS。
|
|
92
|
+
|
|
93
|
+
### A8 · `.zcode/` 忽略面 + 行为守卫
|
|
94
|
+
|
|
95
|
+
- **where(现工作区行号,本席亲读)**:根 `.gitignore:124-129`(注释 `:124-128`、规则行 **`:129` = `/.zcode/`**)+新增守卫 `scripts/test_ignore_face.py`(137 行;L1 `:93-101`、L2 `:103-106`、L3 `:108-110`、L4 `:112-130`)。
|
|
96
|
+
- **改动前(暴露面)**:`.zcode/` 顶层 10 件本机工具产物(会话计划/探针/复核草稿/工作流定义与运行记录/提交信息模板,正文含本机路径字面量)**零忽略规则覆盖**——`git status` 见 `?? .zcode/`、`git add -A` 会整包带上(此前全靠收尾时逐文件显式 add 的纪律在挡,属纪律而非机制)。
|
|
97
|
+
- **改动后**:`/.zcode/` 自顶层收起;其下 `workflow-drafts/` 与 `workflow-runs/` 的内嵌 `.gitignore`(各为 `*`)**原位未动**、忽略效果不变(无解忽略、无新建件进追踪面)。
|
|
98
|
+
- **守卫断言面**:L1 规则面 ×6 合成路径 + 来源断言(匹配来源 = 根 `.gitignore` 的 `/.zcode/`);L2 修复意图(`git add -A -n` 输出零 `.zcode/` 路径);L3 两处内嵌忽略面仍生效;L4 通用不变量(**入库件零命中忽略规则** / `.zcode/` 零追踪件 / 未跟踪项逐项点名)。
|
|
99
|
+
- **守卫红基线 → 绿态**:
|
|
100
|
+
- **红(材料 ① 载,本席未复跑)**:`git status --porcelain` → `?? .zcode/`;`git check-ignore -v` 对 plans/review 件无匹配(exit=1);`git add -A -n` 输出含 10 条 `.zcode/` 路径(与清点 10 件逐条吻合);先写后跑守卫(新规则未加)→ **5 passed / 14 failed,EXIT=1**。
|
|
101
|
+
- **绿(本席实跑)**:`python -X utf8 scripts/test_ignore_face.py` → **19 passed / 0 failed / 0 skipped,RC=0**(L1 六面 + 来源断言全 PASS、L2 零路径、L3 两内嵌面生效、L4 三不变量:入库件零命中 / 零追踪件 / 逐项点名 0 件未忽略);`git check-ignore -v .zcode/plans/x.md` → `.gitignore:129:/.zcode/`(rc=0,报出匹配来源);`git status --porcelain` → **不再出现未跟踪 `.zcode/`**(仅本批正常 M/?? 条目,见 §三);`git ls-files .zcode` = **0 件**。
|
|
102
|
+
- 材料 ① 另载(本席未复跑):定向变异自证(把根规则改错锚 ⇒ 5 passed / 14 failed、EXIT=1;原字节还原后复跑 19/0);兼容性细节(顶收后 `check-ignore -v` 把草稿 `.dwf.ts` 的匹配归到**根规则**——两处内嵌文件原位未改、忽略效果不变)。两条 rust 门禁腿材料标「未跑」——**本席实跑已补**(§三)。
|
|
103
|
+
- **未放宽**:两个方向(该忽略面被覆盖 / 入库件不得被忽略)都被 L1/L4 钉死;本席实跑 L4「入库件零命中忽略规则」PASS。
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 三、实跑读数(本席,均为只读判定腿)
|
|
108
|
+
|
|
109
|
+
> **L1 直跑:`git status / git diff / git show / git check-ignore`、五项守卫、`run_tests`(--list / 单组 / 全量)、九腿门禁逐腿 — 风险:低;频次:本 ask 内一次性;可逆性:完全可逆(无产品源码写入;副作用边界见 §三-4)。** 按工作纪律第 17 条留痕。
|
|
110
|
+
|
|
111
|
+
**1) 五项守卫绿态 + 红基线(本席实跑一览)**:
|
|
112
|
+
|
|
113
|
+
| 命令 | 本席实跑读数 | 材料 ① 对照 |
|
|
114
|
+
|---|---|---|
|
|
115
|
+
| `python -X utf8 scripts/test_link_check_fence_aware.py` | **9 passed / 0 failed / 0 skipped,RC=0** | 一致 |
|
|
116
|
+
| `python -X utf8 scripts/test_link_check_fence_aware.py --impl head`(红基线) | **4 passed / 4 failed / 1 skipped,RC=1**(① ② 被判 BROKEN;counts=(1,0,4,0)) | 一致(材料载 4/4;本席多 1 skipped=L6 设计内跳过) |
|
|
117
|
+
| `python -X utf8 -m md_cg.test_ccg_form_parity` | **PASS=109 / FAIL=0 / SKIP=0,RC=0**(含 ⑦红基线自证 PASS) | 一致 |
|
|
118
|
+
| `python -X utf8 -m swarm.tests.test_swarm_fault` | **12 passed / 0 failed,RC=0**(含 N263 变异自证 2 腿、health 面 6×1.0) | 一致 |
|
|
119
|
+
| `python -X utf8 scripts/judgment_manifest.py --check-coverage` | **verdict=PASS,missing=[],file_count=343,RC=0** | 一致 |
|
|
120
|
+
| `python -X utf8 -m md_cg.judgment_manifest --check-coverage`(包内副本腿) | **verdict=PASS,RC=0** | 一致 |
|
|
121
|
+
| `python -X utf8 scripts/test_ignore_face.py` | **19 passed / 0 failed / 0 skipped,RC=0** | 一致 |
|
|
122
|
+
| `python -X utf8 scripts/test_judgment_manifest.py` | **27 通过 / 0 失败,RC=0**([5] 节 7 条全 PASS) | —(材料载正常态未给总数;其变异实验 25/2 与 27 自洽) |
|
|
123
|
+
|
|
124
|
+
**2) 收集面 / 全量回归(本席实跑)**:
|
|
125
|
+
|
|
126
|
+
| 命令 | 本席实跑读数 | 材料对照 |
|
|
127
|
+
|---|---|---|
|
|
128
|
+
| `python -X utf8 scripts/run_tests.py --list` | **共 341 个**:md_cg 244 / hive 30 / scripts 25 / compiler 22 / swarm 18 / test 2 | 材料 ①(A6)载 340 = A8 守卫入库前;差 1 即新增 `scripts/test_ignore_face.py` |
|
|
129
|
+
| `python -X utf8 scripts/run_tests.py test` | **2/2 通过,RC=0** | 一致(材料 ① A6) |
|
|
130
|
+
| `python -X utf8 scripts/run_tests.py --jobs 4` | **336/336 通过、5 跳过,RC=0**;5 条跳过 = 2 条负载敏感 bench(`_SERIAL_ONLY`,并行下设计内跳过)+ 3 条本地数据依赖(白箱库 / md 语料真源缺失) | 一致(材料 ②「336 条 PASS」) |
|
|
131
|
+
| `python -X utf8 scripts/link_check.py` | 受管 md **1284** 个、判定链接 239 条、OK=239 / ALLOWED=0 / BROKEN=0 / UNTRACKED=0,RC=0 | 一致(材料 ① A1) |
|
|
132
|
+
|
|
133
|
+
**3) 九腿门禁逐腿(本席实跑,`package.json:89` 链序)**:
|
|
134
|
+
|
|
135
|
+
| # | 腿 | 本席实跑读数 |
|
|
136
|
+
|---|---|---|
|
|
137
|
+
| 1 | `python -X utf8 scripts/check_unreachable.py` | rc=0;`unreachable 扫描:567 文件,命中 0,语法失败 0` |
|
|
138
|
+
| 2 | `python -X utf8 scripts/check_publish_artifact.py` | rc=0;清单 1559 件;R1–R7 全 PASS(R4 非追踪件面 28/28 允许;R7 未扫文本件=0);`VERDICT=PASS` |
|
|
139
|
+
| 3 | `python -X utf8 scripts/check_publish_smoke.py` | rc=0;真打包 → 空沙箱真装 → 真握手(serverInfo name/version 与包内一致、tools=cg/stg);`VERDICT=PASS`;沙箱跑完已清理 |
|
|
140
|
+
| 4 | `python -X utf8 scripts/cogmap_sync.py check` | rc=0;`cogmap check: 通过(cg 37 op / stg 4 op / whitebox 6 action / mdcg_* 31 个)` |
|
|
141
|
+
| 5 | `python -X utf8 scripts/link_check.py` | rc=0;`结论:全部相对链接可达` |
|
|
142
|
+
| 6 | `python -X utf8 scripts/workspace_index.py --check` | rc=0;`[OK] 工作区索引与仓库一致(顶层目录 20 · 追踪 2200 件)` |
|
|
143
|
+
| 7 | `python -X utf8 scripts/verify_discipline.py --allow-missing` | rc=0;`结论:10/10 目标一致`(1 条 SKIP=codebuddy-local 未生成、1 条 SKIP=cg-nodes 未提供认知图 root,均设计内) |
|
|
144
|
+
| 8 | `python -X utf8 scripts/gate_rust_crate_test.py` | rc=0;`cargo test rc=0:33 passed / 0 failed`;计入通过数 1 |
|
|
145
|
+
| 9 | `python -X utf8 scripts/gate_rust_parity.py` | rc=0;`rank_parity rc=0——两侧同口径逐位一致`(10/10 逐位一致);计入通过数 1 |
|
|
146
|
+
|
|
147
|
+
⇒ **九腿全绿、逐腿 rc=0**,与材料 ②「九腿门禁:退出码 0、VERDICT=PASS」一致;其中第 2/3 腿含 `VERDICT=PASS` 字样。
|
|
148
|
+
|
|
149
|
+
**4) 工作区状态与副作用边界(本席实跑)**:
|
|
150
|
+
|
|
151
|
+
- `git status --porcelain`(报告写入前):**10 件 M + 2 件 `??`**,逐字为:`.gitignore`、`md_cg/consistency.py`、`md_cg/judgment_manifest.py`、`md_cg/nodefile.py`、`md_cg/test_ccg_form_parity.py`、`scripts/judgment_manifest.py`、`scripts/link_check.py`、`scripts/run_tests.py`、`scripts/test_judgment_manifest.py`、`swarm/tests/test_swarm_fault.py`(M);`scripts/test_ignore_face.py`、`scripts/test_link_check_fence_aware.py`(??)。**无 `?? .zcode/`**(A8 生效)。
|
|
152
|
+
- 本批 `git diff -U0`:**新增行 357 行**;三类形态扫描(盘符绝对路径 / 路径字面量 / 凭据前缀)**全部 0 命中**(本席实跑)。
|
|
153
|
+
- 副作用边界:smoke 腿的 `npm pack` 会触达 `prepare` 面(构建产物 `lib/`——`git ls-files lib` = 0 件、被忽略,不入 git 面);其真装/真启动全部在系统临时目录沙箱内(本席实跑输出「沙箱已清理」),**绝不读写使用者的真实记忆库**(脚本 docstring 自述,本席读核)。实跑前后 `git status --porcelain` 逐字一致。
|
|
154
|
+
- **行尾/BOM(本席逐文件统计,12 件)**:`.gitignore` 129 CRLF / 0 LF;`md_cg/consistency.py` 0 CRLF / 944 LF;`md_cg/judgment_manifest.py` 182 CRLF;`md_cg/nodefile.py` 776 CRLF;`md_cg/test_ccg_form_parity.py` 279 CRLF;`scripts/judgment_manifest.py` 158 CRLF;`scripts/link_check.py` 0/191 LF;`scripts/run_tests.py` 0/290 LF;`scripts/test_judgment_manifest.py` 212 CRLF;`swarm/tests/test_swarm_fault.py` 0/164 LF;`scripts/test_ignore_face.py` 0/137 LF;`scripts/test_link_check_fence_aware.py` 0/278 LF——**无混行、无 BOM**(与材料 ① 逐文件吻合:`md_cg/*` 全 CRLF、`link_check.py` 与两守卫 LF、`.gitignore` 129/129 CRLF)。
|
|
155
|
+
- **HEAD 版旧形态核对(本席实跑 `git show`)**:`link_check.py` 无 `_strip_code_spans`;`run_tests.py` 无 `TEST_DIR_TESTS`(`_known` 五组);`swarm/tests/test_swarm_fault.py:107-110` 为旧断言原文——三项缺陷面均成立。
|
|
156
|
+
|
|
157
|
+
**5) 遗留项复核(本席实跑)**:`python -X utf8 test/chaos_injection/run_all.py -k M04` → 观测=fail / 登记=pass、`REGISTRY DRIFT`、EXIT 1(读码 FAIL「with self._lock 出现 5 次」+ 动态腿全绿)——确认 §四-3 登记的「用例侧陈旧基线」属实(该套件仍按本批裁决**不收**进收集面)。
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 四、遗留与未覆盖
|
|
162
|
+
|
|
163
|
+
1. **本席未复跑项(均标注材料来源,不冒充)**:
|
|
164
|
+
- 各条**整跑红基线**:A3(PASS=102 / FAIL=7)、A4(恒真抽取与首跑、真值臂探针)、A6(失明/中间红基线、chaos 实红)、A8(`?? .zcode/`、check-ignore 无匹配、`git add -A -n` 10 条、5/14)——整跑红基线须先把产品源码/规则回退到 HEAD 版,ask 明令「不得改动任何产品源码文件」。**可自动复现的红基线腿本席已实跑覆盖**:A1 `--impl head`(守卫自带物化 HEAD 副本,不改源码)、A3 ⑦红基线自证腿、A1 L6 自证腿、A4 N263 变异自证腿、A6 [5] 节常驻腿。
|
|
165
|
+
- 各「改坏再还原」变异实验:A6 的 PATTERNS 改坏、A8 的规则改错锚——会临时改写追踪件,超出「不改动产品源码」边界。
|
|
166
|
+
- A4 的端到端定点变异注入(json.loads 钩子)、A3 的消费面端到端探针、A1 的只读对拍——需构造实验面/注入字节,材料已载读数;本席以守卫内常驻自证腿 + 全量回归覆盖其等效面。
|
|
167
|
+
- 串联 `npm run gate`——逐腿已全部实跑 rc=0,串联为同一命令序列的重复执行(逻辑蕴含串联 rc=0);且避免二次真打包。
|
|
168
|
+
2. **材料 ① 各条自标「未跑」项,本席补跑覆盖情况**:A1 标「未跑全仓全量套件」→ 本席全量回归已覆盖(336/336);A3 标「未跑 md_cg 全量 244 文件」→ 本席全量回归已覆盖;A8 标「未跑两条 rust 门禁腿」→ 本席实跑两腿 rc=0。其余材料自标「未跑」项(A1 全仓 CI 面、A4 长稳/跨机)不在本席可达范围,保留。
|
|
169
|
+
3. **本批遗留(材料所载、非本批处置范围,如实登记)**:
|
|
170
|
+
- `test/chaos_injection` 套件**当前实红**(`run_all.py` EXIT=1,REGISTRY DRIFT)——FI-M04 读码代理断言「`md_cg/sustain.py` 的 `with self._lock:` 恰 4 处」陈旧于 9db1bcb7 新增的 sleeps 记账面(该提交已同步主守卫 `test_h4_sustain_snapshot` 的 G0 契约 4→5,**漏同步 chaos 套件这份副本**);其动态腿全绿 ⇒ **用例侧陈旧基线、非被测对象缺陷**。处置路径:待**另件**同步登记后再收进收集面(届时连同 PATTERNS 追加)。按「不得放宽任何守卫判据」,本批无权就地改其判据。**本席实跑复核**(`python -X utf8 test/chaos_injection/run_all.py -k M04`)→ 观测=fail / 登记=pass、`REGISTRY DRIFT … EXIT 1`,读码 FAIL 原文「with self._lock 出现 5 次」与六条动态腿全绿,与材料所载逐项一致。
|
|
171
|
+
- 材料 ③ 双清单中「既存·非本轮引入」的全部命中(测试机路径、本机仓库路径、本机工具目录等)——登记不处置,见 §五。
|
|
172
|
+
4. **提交状态**:本批全部改动**未提交**(10 M + 2 ??);两件新守卫 untracked,**须随批次入库才在 CI 生效**。本报告自身为新增未跟踪文件(`docs/eval/用户裁决处置_第一批_v1.0.md`)。
|
|
173
|
+
5. **范围外**:未在活 serve / 活认知图上做端到端;未跑需要网络的上游 registry 面;报告自身未提交入库。
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 五、双清单自查
|
|
178
|
+
|
|
179
|
+
**材料 ③(自检席)所载**:`policyClean=true`、`privacyClean=false`;命中 10 组,**首条为本轮引入、其余既存**——逐条登记(改述,不复制任何命中字面量):
|
|
180
|
+
|
|
181
|
+
1. **`scripts/run_tests.py:66`(本轮引入)**——新增注释行当时含 POSIX 形态的作者测试机绝对路径字面量(与仓内发布门禁 R3 的远程沙箱路径判据**同形**,见 `scripts/check_publish_artifact.py:143`),处置建议:改写为描述性措辞后再提交。**本席实跑复核:不复现**——现工作区该行为描述性措辞(「硬编码测试机绝对路径(POSIX 形态,不写字面)」),且本批 `git diff -U0` 全部 357 新增行三类形态扫描 **0 命中**。
|
|
182
|
+
2. **既存·非本轮引入(登记)**:`test/locomo_independent_eval.py:28`、`test/locomo_jaccard_probe.py:26`、`docs/eval/第三方验证报告_LoCoMo_灵枢_.md:4` 硬编码同族测试机路径(后一文件实测不在 npm 出货清单);`hive/interop/` 三份 note 含**作者用户名下的本机工具目录**路径(R3 `LOCAL_PATH_USER` 同形;`hive/` 不在出货清单);`hive/src/exec.rs:95`、`hive/src/scheduler.rs:494`、`hive/README.md`、`md_cg/sources.py`、`docs/hive/蜂巢设计_理论对齐_v0.1.md:3-4` 等(约 22 行 / 6 文件)含**作者机器项目目录**路径(R3 `LOCAL_PATH_PROGRAM` 同族);`docs/eval/` 下约 15 件 + 9 件含**本机仓库绝对路径**(两种书写形态;npm 出货清单内含此类文本件约 28 件,而仓内 R3 目标集不含该形态故门禁判绿——若要收口须另案);`docs/eval/issue50_半重复待定复核_修复记录_v1.0.md:62` 含**本机临时目录**绝对路径;`dsh/cordis-patch-profile-web.example.yml:58-59` 示例配置含本机 home 路径值。
|
|
183
|
+
3. **夹具/示例类盘符命中**(全仓候选约 262 条的主体 = 测试夹具/占位/示例/转义假阳性)与**既有令牌/隐私形态命中**(测试夹具假令牌、假私钥头、提交短哈希截断、标准测试样例值)——逐类复核判定**无需处置**,登记。
|
|
184
|
+
4. **`.zcode/workflow-drafts/用户裁决处置第一批A1A3A4A6A8.dwf.ts:141-142`**——命中系本任务清单文本**自身**的形态描述(非真实路径/密钥);属**入库面外**(`.zcode/` 本轮已由 `/.zcode/` 顶收,不入公开仓)。
|
|
185
|
+
|
|
186
|
+
**本席实跑(报告自身 + 改动面)**:
|
|
187
|
+
|
|
188
|
+
- 本报告自身扫描(三类形态计数:盘符绝对路径 / 路径字面量 / 凭据前缀;扫描命令本身为正则计数,**本报告正文不复制任何命中串**)→ **全部 0 命中**;人工复核无真实姓名/手机号/住址等个人隐私。
|
|
189
|
+
- 本批改动面(`git diff -U0` 新增 357 行 + 两件新增守卫全文)→ 三类形态 **0 命中**。
|
|
190
|
+
- 行尾/BOM:12 件统计见 §三-4(无混行、无 BOM)。
|
|
191
|
+
- 结论:`policyClean=true`(无违规内容);`privacyClean`:**改动面与报告面 true**;工作区全量面 false(材料 ③ 既存命中,非本轮引入,登记待另案)。
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
*报告席产出:`docs/eval/用户裁决处置_第一批_v1.0.md`。本席未改任何产品源码;唯一写入为本报告自身。全文数字凡非本席实跑均标注来源(材料 ① 五项处置读数 / 材料 ② 全量回归与九腿门禁 / 材料 ③ 双清单自检)。*
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# 用户裁决处置 · 第二批 B6:公开面本机路径全面相对化 v1.0
|
|
2
|
+
|
|
3
|
+
> **本批范围**:B6(使用者裁定原文:「B6 用户名不用改 本机路径改成相对路径,且把使用相对路径这个要求写入到工程规范」)。
|
|
4
|
+
> 同批的 A2/A5 已随批次 97 提交、A7 调研结论已交付(不统一两腿口径);B7/B8 仍排队。
|
|
5
|
+
> **一句话**:仓库追踪面(= GitHub 公开面)不再含任何本机目录结构路径;判据从「约定」升为「规范 + 机器门禁」。
|
|
6
|
+
|
|
7
|
+
## 一、清点(口径三次修正,以终稿为准)
|
|
8
|
+
|
|
9
|
+
| 轮次 | 口径 | 结果 | 问题 |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| 初扫 | 逐字节 grep 盘符形态 | 虚高 | 字节级正则把 URL(`s://…`)与转义序列误收;中文文件名被 `git ls-files` 转义引号致 `open` 全失败(docs/ 整体静默跳过) |
|
|
12
|
+
| 修正 | `git ls-files -z` 取原始路径 + 负前瞻排 `://` + 二进制探测跳过 | 270 命中 | esc 形态(双反斜杠)被 M/E 两个扫描器重复计数(`\\` 在正则里是单反斜杠——两扫描器实为同一判据面),总数约 2× 虚高 |
|
|
13
|
+
| 终稿 | 改写器计数为准(`[\\/]{1,2}` 双形态感知,逐处一次) | **本机路径 120 处 / 47 文件** | —— |
|
|
14
|
+
|
|
15
|
+
**保留面**(有意不动,逐条复核):合成夹具(`X:/custom`、`G:/fake`、`C:/Windows/win.ini`、`D:/proj`、`D:/old`、`E:/new`、`C:/Users/test/evil` 等)、通用通例(`C:/Program Files/Git/work` = Git for Windows 标准改写行为、`C:\Windows\System32`)、占位写法(`d:/.../dsh-memory` 等带省略号形态)、转义/正则噪声(`d:\r\n` 类片段)、对抗性探针载荷(`C:\we"ird…`、`p:\evil\x`)。
|
|
16
|
+
|
|
17
|
+
## 二、改写(机械 112 处 + 手改 8 处 = 120 处)
|
|
18
|
+
|
|
19
|
+
改写规则(长前缀优先,双形态感知,字节级写回仅动命中片段):
|
|
20
|
+
|
|
21
|
+
| 原形态 | 新形态 |
|
|
22
|
+
|---|---|
|
|
23
|
+
| 本仓机器路径(各处含 `hive/jobs`、`rust`、`data/policy.json` 等变体) | `<仓根>\…` |
|
|
24
|
+
| 旧机 `Program Files/2_ai` 形态(dsh-memory / AEIS 库根) | `<仓根>` / `<在役库根>` |
|
|
25
|
+
| 在役库根与 AEIS 工程根 | `<在役库根>` / `<AEIS 工程根>` |
|
|
26
|
+
| 外部设计稿目录(三件设计文档所在层) | `<外部设计稿>\<文档名>` |
|
|
27
|
+
| 外部基准目录(因果分析基准) | `<外部基准目录>\因果分析基准_v1.0` |
|
|
28
|
+
| DSH 本机 home | `%USERPROFILE%\.dsh`(标准写法;原为盘符+h`dsh-home`) |
|
|
29
|
+
| E 盘空沙箱 | `<空沙箱>\test\smoke` |
|
|
30
|
+
| 用户临时目录 | `%TEMP%\…` |
|
|
31
|
+
| 用户 `.mdcg` / `.dsh` 目录 | `~/.mdcg/…`、`~/.dsh/…` |
|
|
32
|
+
| 安装面读数(docker.exe 路径) | `<Program Files>\Docker\…` |
|
|
33
|
+
|
|
34
|
+
**手改 8 处**(语义敏感,逐一读上下文后改):
|
|
35
|
+
- `md_cg/bench_e2e_judge.py`:数据根默认从写死本机路径改为 `<仓根父目录>/test/e2e_judge` + `MDCG_E2E_JUDGE_ROOT` 覆盖(同机行为等价,异机可移植);
|
|
36
|
+
- `md_cg/test_conformance.py` / `md_cg/test_mr_m1.py`:真源集成面改 `MDCG_CONFORMANCE_ROOT` 显式指认(缺省 SKIP,原「真源存在才跑」语义保留);
|
|
37
|
+
- `hive/src/exec.rs` / `hive/src/scheduler.rs` / `md_cg/sources.py` / `hive/README.md`:缺陷出处注释由盘符路径改写为「外部设计稿 + 条款号」。
|
|
38
|
+
|
|
39
|
+
## 三、工程规范写入(纪律真源第 15 条)
|
|
40
|
+
|
|
41
|
+
- 真源 `docs/工作纪律_认知图条目_v1.1.json` 第 15 条(`discipline_python_exec`,本已含「全仓路径一律 UTF-8」)扩入:**公开面文本路径一律写相对路径(仓内相对 / `~/`、`%TEMP%`、`<仓根>` 等中性占位),本机绝对路径不得进入追踪面,判据 `scripts/check_local_paths.py`**——`content`、`execution.how`、`response.direct` 三处同步,触发面新增「书写文档/引用路径」。
|
|
42
|
+
- `render_discipline.py --all --write` 重渲染 8 端产物;工作区外用户级指针件指纹同步(`134dd7e6…` → `e8c979edba52de41`,temp→copy2 写入、原文件留备份)。
|
|
43
|
+
- `verify_discipline.py` 全量:**10/10 目标一致**(含认知图投影 18/18)。
|
|
44
|
+
|
|
45
|
+
## 四、守卫(新增第 11 道门禁腿)
|
|
46
|
+
|
|
47
|
+
`scripts/check_local_paths.py`——**追踪面本机路径门禁**(`git ls-files` 全量 = GitHub 公开面;
|
|
48
|
+
npm 面由 `check_publish_artifact.py` 的 R3 规则另守,两道互补——R3 只覆盖发布清单内的件,hive/ 等非发布目录不在其内):
|
|
49
|
+
|
|
50
|
+
- 判据 8 族(机器实有前缀):本仓机器父级 / AI 目录族 / 旧机 Program Files / DSH 本机 home / E 盘沙箱 / 用户实名目录 / 用户目录子面(AppData、.dsh、.mdcg)/ 安装面读数;
|
|
51
|
+
- 合成夹具与通用通例**不在判据面**(避免平凡红);规则字面量与样例一律拼接构造(防「守卫扫到自己」),`--selftest` 断言正样例 11 项全命中、负样例 17 项零命中、自身源码零命中;
|
|
52
|
+
- 退出码 0/1/2(2=环境错误 fail-closed)。
|
|
53
|
+
- **判别力自证**(注入探针→必红→回退):注入 `<盘符>\program` 探针行 → `rc=1` 并点名 `docs/README.md:148 [本仓机器父级]`;回退后 `rc=0`、`git status` 干净。
|
|
54
|
+
- 接线:`package.json` gate 链尾追加第 11 腿(位序有意在链尾——smoke 腿 C2 位序断言与 rust 腿链尾复跑通道不受影响);CI `publish-artifact-check.yml` 增自检 + 扫描两步(触发面增 `scripts/check_local_paths.py` 与 `hive/**`);`docs/mdcg/发布门禁链_v0.1.md` 同步 10→11 条腿。
|
|
55
|
+
|
|
56
|
+
## 五、验证读数(本会话亲跑)
|
|
57
|
+
|
|
58
|
+
| 项 | 读数 |
|
|
59
|
+
|---|---|
|
|
60
|
+
| python 全量回归 | **338/338 通过**,5 跳过(依赖缺失/平台不符) |
|
|
61
|
+
| 门禁 11 腿(`npm run gate`) | **rc=0**;第 11 腿在链尾实跑 `VERDICT=PASS` |
|
|
62
|
+
| 纪律校验 | 10/10 目标一致(含 zcode-user 指针件);认知图投影 18/18 |
|
|
63
|
+
| cogmap / link_check / unreachable | 全通过(受管 md 1285 个、链接 239 条可达、扫描 570 文件 0 命中) |
|
|
64
|
+
| 追踪面复扫(守卫) | 零本机路径(`VERDICT=PASS`) |
|
|
65
|
+
| 改写后 diff | 58 文件 +190/−163(无整文件重写、无 EOL 翻面) |
|
|
66
|
+
|
|
67
|
+
## 六、诚实边界与保留决定
|
|
68
|
+
|
|
69
|
+
- **用户名面**:按使用者裁定「用户名不用改」——真实人名/用户名本身不匿名化;只把**机器目录结构**(盘符+父目录层)改写为中性形态(家目录折叠为 `~` 属标准写法,不算匿名化)。
|
|
70
|
+
- **`.npmignore` 两条排除保留**(原排除理由=含本机路径):路径已清洗,但**发布面不变更**——如需入包另行裁决;第三方交付物按「原样保留」原则未动其内容。注释已同步说明。
|
|
71
|
+
- **第三方报告**(`docs/eval/第三方验证报告_*.md`)扫描 0 命中,未触碰。
|
|
72
|
+
- 本报告全部示例为占位形态,无本机绝对路径、无凭据字面量(守卫复扫 0 命中);内容政策+隐私双清单已过。
|
|
73
|
+
- A7(两腿口径统一)结论:**不统一**(腿①缺 cargo/manifest 时 SKIP 且明确「SKIP ≠ 通过」、腿②缺产物自动构建且头部已有论证);B7 三档自治 / B8 N203 id 契约仍排队。
|
|
74
|
+
|
|
75
|
+
## 七、待办
|
|
76
|
+
|
|
77
|
+
- 推送:批次 96(`10c1de52`)+ 批次 97(`1aee4391`)+ 本批(批次 98)三笔一并推送(使用者已授权「完成后一起推送」)。
|
|
78
|
+
- 后续可选:`MDCG_CONFORMANCE_ROOT` / `MDCG_E2E_JUDGE_ROOT` 两个新 env 写进对应文档的配置面(当前已在脚本 docstring/提示语内说明)。
|
|
@@ -90,7 +90,7 @@ python -X utf8 -m md_cg.bench_e2e_locomo_qa # QA 500
|
|
|
90
90
|
# 检索四组对照:§2 数字由 dialog_zh 池 + zh_queries/questions500 双查询面直算(本报告数据根)
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
产物:`<数据根>\test\e2e_judge\results\locomo_qa_*.json`(QA 逐题)、
|
|
94
94
|
`upstream/zh_turns.json`(5882 turn 中文)、`upstream/zh_queries.json`(500 问句中文)、
|
|
95
95
|
`upstream/answers_map.json`(上游 gold,1976/1976)。评测器:`md_cg/bench_e2e_locomo_qa.py`。
|
|
96
96
|
|
|
@@ -166,13 +166,13 @@ id 前缀 `x_`(字典序排在 gold 之后——平局兜底**偏向 gold**,
|
|
|
166
166
|
## 7 · 复现
|
|
167
167
|
|
|
168
168
|
```bash
|
|
169
|
-
# 前置:DEEPSEEK_API_KEY;数据根默认
|
|
169
|
+
# 前置:DEEPSEEK_API_KEY;数据根默认 <数据根>\test\e2e_judge(--data-root 可改)
|
|
170
170
|
# 主口径(MDCG_UNIFY_QUERY=0;归一开对照去掉该前缀即可)
|
|
171
171
|
MDCG_UNIFY_QUERY=0 python -X utf8 -m md_cg.bench_e2e_judge --quick # 冒烟(确定性两臂)
|
|
172
172
|
MDCG_UNIFY_QUERY=0 python -X utf8 -m md_cg.bench_e2e_judge --skip-llm # 全量确定性矩阵
|
|
173
173
|
MDCG_UNIFY_QUERY=0 python -X utf8 -m md_cg.bench_e2e_judge --arms llm # LLM 裁决臂 ×2 轮
|
|
174
174
|
MDCG_UNIFY_QUERY=0 python -X utf8 -m md_cg.bench_e2e_qa # QA 端到端
|
|
175
|
-
# gold 答案映射(上游对齐,500/500
|
|
175
|
+
# gold 答案映射(上游对齐,500/500):<数据根>\test\e2e_judge\upstream\answers_map.json
|
|
176
176
|
```
|
|
177
177
|
|
|
178
178
|
产物:`results/summary_*.json`(三臂指标+LLM 逐题)、`results/qa_*.json`(QA 逐题)、
|
|
@@ -193,5 +193,5 @@ MDCG_UNIFY_QUERY=0 python -X utf8 -m md_cg.bench_e2e_qa # QA 端
|
|
|
193
193
|
---
|
|
194
194
|
|
|
195
195
|
*评测器:`md_cg/bench_e2e_judge.py`(三臂裁决)· `md_cg/bench_e2e_qa.py`(QA 层)。
|
|
196
|
-
|
|
196
|
+
数据根:`<数据根>\test\e2e_judge`(池缓存 / LLM 缓存 / 结果与逐题明细)。
|
|
197
197
|
v1.0(2026-09-23 归一开态)已被 v1.1 双态复核取代;v1.0 数字保留于 §4 对照列。*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 第 3 层 stg 结构索引(装载期内存倒排+写路径增量维护 · 条件资格首验 · 回退可观测)——实施记录 v1.0
|
|
2
2
|
|
|
3
|
-
**日期**:2026-10-03 |
|
|
3
|
+
**日期**:2026-10-03 | **被测面**:`<仓根>` 工作树(未提交——3 个已跟踪文件被改+2 个新增文件;git status 实列 3 M+3 ??,第三个 ?? 为宿主目录 `.zcode/`,见文末 git 面)| **基线**:HEAD `0d3a0ab2`(`git rev-parse HEAD` 实跑核实)
|
|
4
4
|
|
|
5
5
|
**关联**:
|
|
6
6
|
- 设计稿 `docs/plans/stg条件化与结构索引_设计_v0.1.md`(本次随批修订,含 2026-10-03 使用者签收记录)——本批为其 **§三「第 3 层设计」** 的落地;
|
|
@@ -192,7 +192,7 @@ stdio reconfigure(避免被 import 时产生进程级 stdio 副作用)。
|
|
|
192
192
|
| A12 | 父进程 clean env + `sys.stdout.reconfigure(encoding='utf-8')`,分两态派生子进程 | 仅 reconfigure:父 `stdout.encoding=utf-8` 但子进程 `utf8_mode=0 / getpreferredencoding=cp936 / stdout=gbk / env 两个皆 None`;再加 `os.environ['PYTHONUTF8']='1'`+`['PYTHONIOENCODING']='utf-8'`:子进程 `utf8_mode=1 / utf-8 / utf-8` ⇒ **reconfigure 只覆盖本进程三条流、不传播到后代;env 才传播** —— 这就是契约④与助手「无论走哪条路都置 env」的实测依据 | Python stdio/env 语义 | 【采集】 |
|
|
193
193
|
| A13 | 清空两 env、`MDCG_ROOT=临时库根`,`python -m md_cg.mcp_server` 喂 initialize/tools/list | rc=3、stdout 0 B;stderr 451 B **令牌闸 fail-closed**(`[mdcg-mcp] 令牌校验失败:令牌不存在… 拒绝启动(fail-closed)`)⇒ 该入口的 stdio E2E 在临时根上**未取得本人实跑读数**(诚实缺失);其守卫存在性由 A9 与 `--show-config` 代跑支撑。带 `-X utf8` 对照同样 rc=3、stderr 逐字节相同(非编码差异) | `md_cg/mcp_server.py` main() 起的令牌闸 | 【采集】(复现=false) |
|
|
194
194
|
| A13′ | **前置更正(第 2 版新增)**:同一入口为什么在别处是 rc=0——用伪造字面量 `MDCG_TOKEN=<dummy>`(不抄录任何真实凭据)+同一临时根实跑;再把 `MDCG_*` 一并清空重跑同一命令 | 带失效 `MDCG_TOKEN`:rc=3、stdout 0 B、stderr 同形(`令牌校验失败:令牌格式非法(应为 mdcg1.<role>.<token_id>.<secret>)…拒绝启动(fail-closed)`);`MDCG_*` 清空后:rc=0、`serverInfo.name=mdcg-mcp` ⇒ **A13 的失败根因是「会话 env 里带着失效 `MDCG_TOKEN` 而那次只清了两 env」**,三个读数(A13 / E2E-MDCG / 复核)是**三种前置**而非同一前置下的矛盾(完整对照见 §5.1 前置对齐) | `md_cg/mcp_server.py` main() 起的令牌闸 | 【本次】 |
|
|
195
|
-
| A14 | 全部实验树来自 `git archive HEAD` 解包到系统临时目录;探针写在 `%TEMP%` | 临时根 `%TEMP%\lingshu_repro_A`(2 076 件、`utf8_boot.py present? False` 证明是修前树);实验前后 `git status --porcelain` 逐字一致(批内读数 14 M + 5 ??;**注**:本报告作者本次读为 14 M + 6 ??,差额即本报告文件本身)⇒ 未编辑工作区、未触碰在役数据根、未重建/重启 hive serve、未 `git add/commit/push` |
|
|
195
|
+
| A14 | 全部实验树来自 `git archive HEAD` 解包到系统临时目录;探针写在 `%TEMP%` | 临时根 `%TEMP%\lingshu_repro_A`(2 076 件、`utf8_boot.py present? False` 证明是修前树);实验前后 `git status --porcelain` 逐字一致(批内读数 14 M + 5 ??;**注**:本报告作者本次读为 14 M + 6 ??,差额即本报告文件本身)⇒ 未编辑工作区、未触碰在役数据根、未重建/重启 hive serve、未 `git add/commit/push` | `<仓根>` @ `174cd25f…` | 【采集】【本次】我另建的 HEAD 物化树同判(`utf8_boot.py` 不在) |
|
|
196
196
|
|
|
197
197
|
### 2.2 B 侧修前现场
|
|
198
198
|
|