@furongjun1999/dsh-memory 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +572 -465
- package/docs/README.md +1 -0
- package/docs/eval/DSH/346/227/245/345/277/227/347/264/242/345/274/225v2_/345/217/202/350/200/203dsh-TUI_v1.0.md +248 -0
- package/docs/eval/DSH/346/227/245/345/277/227/347/264/242/345/274/225/346/225/210/346/236/234/351/252/214/350/257/201_v1.0.md +209 -0
- package/docs/eval/DSH/347/253/257/347/274/272/351/231/267/344/270/223/351/241/271_v1.0.md +254 -0
- package/docs/eval/P1b2_/350/257/273/351/235/242/344/273/243/351/231/205/344/277/256/345/244/215_v1.0.md +124 -0
- package/docs/eval/bench_lingshu_self/bench_self.py +140 -0
- package/docs/eval/bench_lingshu_self/self_bench_result.json +404 -0
- package/docs/eval/bench_lingshu_self//347/201/265/346/236/242/350/207/252/345/272/223/347/253/257/345/210/260/347/253/257/346/243/200/347/264/242/345/256/236/346/265/213_v1.0.md +38 -0
- package/docs/eval//344/270/215/345/217/257/351/235/240/346/200/247/350/220/275/345/234/260_P0_v1.0.md +185 -0
- package/docs/eval//345/217/221/345/270/20306_/344/270/200/351/224/256/351/205/215/347/275/256/344/270/216DSH0172_v1.0.md +171 -0
- package/docs/eval//346/225/205/351/232/234/346/263/250/345/205/245/345/256/236/346/265/213_v1.0.md +422 -0
- package/docs/eval//347/253/257/345/210/260/347/253/257LoCoMoQA/345/220/214/345/217/243/345/276/204/345/257/271/347/205/247_v1.0.md +100 -0
- package/docs/eval//347/253/257/345/210/260/347/253/257/345/271/262/346/211/260/346/261/240/350/257/204/346/265/213_/347/241/256/345/256/232/346/200/247/350/243/201/345/206/263vsLLM_judge_v1.1.md +197 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v1.md +156 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v10.md +210 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v11.md +227 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v12.md +203 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v13.md +233 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v14.md +191 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v15.md +213 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v16.md +214 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v17.md +199 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v18.md +183 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v19.md +207 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v2.md +156 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v3.md +152 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v4.md +128 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v5.md +114 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v6.md +192 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v7.md +187 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v8.md +207 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v9.md +203 -0
- package/docs/hive//345/256/211/345/205/250/345/256/241/350/256/241/345/256/236/351/224/232_v0.1.md +202 -0
- package/docs/hive//350/234/202/345/267/242/345/217/214/345/256/236/344/276/213/344/272/222/351/252/214_/350/256/276/350/256/241/345/256/232/347/250/277.md +19 -3
- package/docs/images/lingshu-moonlight-covenant-poster-preview.jpg +0 -0
- package/docs/images/lingshu-moonlight-covenant-poster.png +0 -0
- package/docs/mdcg//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +40 -40
- package/docs/theory//344/270/215/345/217/257/351/235/240/345/256/232/347/220/206/344/270/216/345/244/261/346/225/210/344/274/230/345/205/210/346/241/206/346/236/266_v0.3.md +365 -0
- package/docs//344/270/215/345/217/257/351/235/240/346/200/247/347/220/206/350/256/272_v0.1.md +343 -0
- package/dsh/cordis-patch-profile-web.example.yml +35 -0
- package/lib/bridge.d.ts +9 -0
- package/lib/bridge.js +35 -0
- package/lib/cli.d.ts +3 -0
- package/lib/cli.js +66 -0
- package/lib/index.js +7 -1
- package/lib/init.d.ts +88 -0
- package/lib/init.js +287 -0
- package/lib/lib/roleplay_web.js +530 -443
- package/lib/lib/token_store.d.ts +7 -1
- package/lib/lib/token_store.js +12 -3
- package/md_cg/audit.py +12 -1
- package/md_cg/backfill.py +16 -15
- package/md_cg/backfill_bucket_zh.py +35 -0
- package/md_cg/bench_e2e_judge.py +532 -0
- package/md_cg/bench_e2e_locomo_qa.py +368 -0
- package/md_cg/bench_e2e_qa.py +256 -0
- package/md_cg/branches.py +18 -2
- package/md_cg/ccgc.py +3 -2
- package/md_cg/chain.py +19 -4
- package/md_cg/consolidate.py +7 -6
- package/md_cg/crosscheck.py +4 -3
- package/md_cg/crypto.py +439 -437
- package/md_cg/datapath.py +395 -335
- package/md_cg/evidence.py +8 -3
- package/md_cg/export.py +3 -1
- package/md_cg/forgetting.py +2 -2
- package/md_cg/fsutil.py +48 -0
- package/md_cg/hotcache.py +255 -238
- package/md_cg/interop.py +161 -22
- package/md_cg/judgment_manifest.py +177 -0
- package/md_cg/links.py +655 -622
- package/md_cg/mcp_server.py +282 -31
- package/md_cg/mdcg.py +702 -126
- package/md_cg/mdcos.py +454 -68
- package/md_cg/mreview/govern.py +5 -4
- package/md_cg/postings.py +4 -2
- package/md_cg/readcache.py +76 -18
- package/md_cg/reconcile.py +228 -0
- package/md_cg/review_cli.py +215 -0
- package/md_cg/routing.py +28 -0
- package/md_cg/run_tests.py +211 -0
- package/md_cg/scrub.py +862 -852
- package/md_cg/security.py +385 -275
- package/md_cg/selfreport.py +3 -2
- package/md_cg/signer.py +565 -562
- package/md_cg/sources.py +3 -2
- package/md_cg/stg.py +6 -0
- package/md_cg/sustain.py +1168 -1138
- package/md_cg/test_access_hints.py +147 -0
- package/md_cg/test_branch_discard_tombstone.py +136 -0
- package/md_cg/test_branches.py +259 -249
- package/md_cg/test_chain_read_isolate.py +168 -0
- package/md_cg/test_datapath_device_name.py +203 -0
- package/md_cg/test_emit_negtail_cache.py +156 -0
- package/md_cg/test_en_pipeline.py +186 -166
- package/md_cg/test_govern_directread.py +421 -0
- package/md_cg/test_i32_hotcache_env_key.py +218 -0
- package/md_cg/test_identity_attribution.py +228 -147
- package/md_cg/test_index_crossprocess_reload.py +301 -0
- package/md_cg/test_index_durability.py +238 -224
- package/md_cg/test_interop.py +4 -2
- package/md_cg/test_interop_judgment.py +228 -0
- package/md_cg/test_issue39_utf8_stdio.py +273 -0
- package/md_cg/test_links_concurrent_write.py +188 -0
- package/md_cg/test_merge_upsert.py +168 -0
- package/md_cg/test_n123_derive_expiry_chain.py +205 -0
- package/md_cg/test_n130_verify_falsified_protect.py +185 -0
- package/md_cg/test_n131_merge_gate.py +205 -0
- package/md_cg/test_none_id_write_guard.py +165 -0
- package/md_cg/test_p1x_ref_root.py +160 -0
- package/md_cg/test_p27_docindex.py +774 -765
- package/md_cg/test_p2_mcp.py +3 -0
- package/md_cg/test_p32_backfill.py +304 -298
- package/md_cg/test_p39_verify_flow.py +90 -50
- package/md_cg/test_p47_session_view.py +60 -25
- package/md_cg/test_propose_tail_index.py +157 -0
- package/md_cg/test_read_scope_b27.py +277 -0
- package/md_cg/test_readcache_default_on.py +168 -0
- package/md_cg/test_readcache_precise_inval.py +270 -0
- package/md_cg/test_readcache_prodpath.py +55 -7
- package/md_cg/test_reconcile_v0.py +294 -0
- package/md_cg/test_retr_s1.py +6 -2
- package/md_cg/test_retr_s1b.py +67 -0
- package/md_cg/test_retr_s7.py +8 -0
- package/md_cg/test_retr_s9_entity_ctx.py +181 -175
- package/md_cg/test_retr_score_once.py +208 -0
- package/md_cg/test_review_cli_attribution.py +177 -0
- package/md_cg/test_review_cli_visibility.py +235 -0
- package/md_cg/test_review_onepass.py +170 -0
- package/md_cg/test_rrf_graph_seed_cache.py +154 -0
- package/md_cg/test_security_audit.py +155 -0
- package/md_cg/test_security_audit_b26.py +161 -0
- package/md_cg/test_security_audit_v21.py +250 -0
- package/md_cg/test_semantic_canonical.py +255 -241
- package/md_cg/test_session_isolation.py +168 -0
- package/md_cg/test_snapshot_autoclose.py +187 -0
- package/md_cg/test_tail_watermark_race.py +208 -0
- package/md_cg/test_tenant_env_override_warn.py +139 -0
- package/md_cg/test_tenant_registry_corrupt_warn.py +151 -0
- package/md_cg/test_v14_fixes.py +415 -397
- package/md_cg/test_verify_dirty_reconcile.py +157 -0
- package/md_cg/theory.py +276 -273
- package/md_cg/tokens.py +734 -677
- package/md_cg/units.py +3 -2
- package/md_cg/vision_evidence.py +4 -3
- package/md_cg/whitebox_kb/wisdom/code_solidified.json +6195 -6195
- package/md_cg/whitebox_kb/wisdom/multilang_ir.py +128 -124
- package/md_cg/writepipe.py +554 -550
- package/package.json +11 -2
- package/src/bridge.ts +434 -401
- package/src/cli.ts +65 -0
- package/src/index.ts +526 -518
- package/src/init.ts +347 -0
- package/src/lib/roleplay_web.ts +1019 -932
- package/src/lib/token_store.ts +202 -192
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# 缺陷挖掘报告 · 自主迭代 v18(compiler 三轮深挖·三圈第三站)
|
|
2
|
+
|
|
3
|
+
- **日期**:2026-09-26(批次 55)
|
|
4
|
+
- **范围**(生效条件):第 18 轮 = compiler 域三轮深挖第三站,四区复核(legacy / recent / frontend / backend)共 **29 条目**(confirmed 29 / rejected 0)→ 跨区重复冗余 **13 条**(知足崩溃三区 ×3、N98/N99/v3 N7 各三区 ×3、N102 族/语义漂移族/残面族/测试基建族各两区 ×4)→ 独立条目 **16**(独立新发现 **6** = 本轮新编号 **N148-N153**〔high 3 / medium 3,其中 N148/N149 当场修复〕+ legacy 复测 **10** = 8 个开口缺陷族 + 2 条结案/台账记录条)→ 本轮修复 **4 个补丁**(闭 4 项缺陷:N148 / N149 为新发现首修,v3 N4 / N102 为历轮留档首修——全 Python 面、全 compiler 域,零 Rust/TS 改动)→ 遗留 **12 个开口**(high 1 / medium 10 / low 1,含本报告补账 1 项)+rejected 0
|
|
5
|
+
- **编号口径**:v17 用至 N147(v17.md:5 核实「v16 用至 N140,本轮自 N141 续编」、其最大号 N147),本轮新发现自 **N148 续编**。**材料三区临时编号冲突及本报告会话统一裁决**(如实记录):①修复结果与守卫文件名锚定的保留原名——**N148**(术曰/问曰步骤号溢出,守卫 test_parser_n148_stepnum_overflow.py)与 **N149**(VM 资源防线,backend 区暂编,守卫 test_vm_resource_guard.py、修复结果第 4 项 verified_by 自述「test_vm_resource_guard(N149 前项修复)」);②材料留档未修清单已以其编号记录的保留——**N150**(.pbc 反序列化信任边界,backend 区暂编)与 **N151**(F4 查表化上限误伤,recent 区暂编);③冲突暂编顺延重编——三区同报的知足崩溃(recent 区暂编 N149 / frontend 区暂编 N148 / backend 区暂编 N148,与①②锚定号冲突)→ **N152**;条件空间赋值切换旁路及同族三形态(recent 区暂编 N150 + frontend 区暂编 N149/N150/N151,与②锚定号冲突,材料留档清单已并为一族)→ **N153**(族合并 1 编号,逐形态差异在第三节保留)。全部重编在第三节逐项标注原暂编号,非暗改。
|
|
6
|
+
- **材料账目遗漏补账声明**(本报告会话第一手核实):三区 confirmed 的知足崩溃条目(compiler.py:193,recent/frontend 报 high、backend 报 medium)在材料的修复清单与留档未修清单中**均未收录**——本会话读核现行 compiler/compiler.py:193 `threshold = float(val)` 裸调在位、对照 DE 分支 :180-184 有 try/except 转 SyntaxError(不对称确认),并以哑输入探针实跑实证开口(vm 入口 ESCAPED ValueError / api 入口 success=True,见第三节)——按裁决编 **N152** 补入第五节遗留清单(high),非修复项、非已闭项。
|
|
7
|
+
- **回归**:`python -X utf8 scripts/run_tests.py --jobs 4` 全量——**本会话实跑,`===== SUMMARY 211/211 通过,5 跳过(依赖缺失/平台不符) =====`,真实退出码 0**(211 = v17 终态 204 + 本轮 4 个新守卫文件:test_parser_n148_stepnum_overflow / test_parser_n4_semicolon_scope / test_vm_resource_guard / test_compile_entry_n102_recursion,各计 1;v17 增量的 test_orch.py [N] 段已并入原文件计数,与材料门禁口径一致);**四个新守卫本会话逐一实跑全绿**(16/16、16/16、7/7、4/4,第四节);**双后端等价套件补跑通过**(`python -X utf8 -m swarm.tests.test_rust_codegen` → 14 passed, 0 failed,EXIT=0——F3 触及 condition_vm.py 属 SEMANTICS.md §5 双后端契约面,全量尾部未展开故单独补跑确认;cargo 本机不可用,其独立形态⑨按套件自身环境声明跳过,如实标注);**npm test 未运行**(TS 面零改动——`git status --porcelain` 证实 src/ 未动);**npm run gate**(本会话实跑×2,第四节)——报告落盘前 VERDICT=PASS(R4=24/24 临界);报告落盘并修正上一稿隐私命中后复跑:**R1/R2/R3(隐私门禁)全 PASS,R4 命中=1 为本报告文件自身待登记**(untracked 25>24,git add 登记后即恢复,处置归编排会话)。
|
|
8
|
+
- **行号口径**:材料缺陷/修复行号为上游复核/修复会话时点快照;本会话对 4 项修复落点与留档开口项逐一读核,行号微漂处双标——F3 `_check_mul_scale` 材料口径 :110-148 → **读核现行 :106-142**(功能一致)、`__init__.py` 导出材料口径 :42,61,64 → **读核现行 :42(import)/ :61(\_\_all\_\_)两处命中**(:64 未命中,\_\_all__ 为单行多项形态);api.py strict 消费点材料口径 :211/:376 → **读核现行 :221/:386**(F4 在 :143 插入窄捕使后续行号 +10);其余修复落点读核与材料口径吻合(N148 修后转换点 :452/:509、api 窄捕 :143-153、compiler 窄捕 :259-268、compiler.py ZHIZU :193,第二节逐项双标,以读核为准)。
|
|
9
|
+
- **结构口径**(CCG 六要素):功能名(标题)/ 生效条件(范围与口径行)/ 子功能(第二~五节)/ 执行与验证方式(第四节:实跑命令与结果)/ 不适用条件(第七节:跳过与未运行项)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 一、执行摘要
|
|
14
|
+
|
|
15
|
+
本轮为 compiler 域三轮深挖第三站:四区复核 29 条目(rejected 0),跨区去重后 16 独立条目(新发现 6 + legacy 复测 10),4 补丁闭合 4 项,遗留 12 开口(含本报告补账 1 项)。四个主题:
|
|
16
|
+
|
|
17
|
+
1. **数值解析崩溃族收尾(N148 当场修)+ 材料账目遗漏补账(N152 开口实证)**:N148——术曰/问曰步骤号 `int(float(value))` 裸调,≥309 位数字字面量(float(str)=inf 后 int(inf) 抛 OverflowError)与词法毒 token NUMBER('.')(ValueError)双形态击穿 api/compiler 双官方编译主入口,CLI/pbc/analyzer/debugger 同径传导——修复两转换点各包 try/except 转结构化「非法数值」语法错误(对齐第 11 轮 F1 裸 float 族防护模式与报错文案),守卫 16/16。**同族的知足分支(N152)本轮未修**:三区复核同报(约束表自带示例原句『知足 验证单元』即触发),但材料修复/留档双清单均遗漏——本报告会话读核 + 探针实证开口后补账(compiler.py:193 裸 `float(val)`、DE 分支 :180-184 有防护,两分支不对称;VM 编译入口全使用方 compile_to_bytecode/pbc.compile_to_pbc/analyzer/debugger 均无兜底传导)。
|
|
18
|
+
2. **VM 沙箱资源防线(N149 当场修,本轮最重新发现)**:max_steps 只限步数不限单步工作量与分配——大数平方循环在防线内 90 秒级挂起、单条 MUL『字符串×大整数』一次申请 19.5GiB 成功 / int64 上限量级 MemoryError 裸上抛,「步数上限防死循环」对恶意 .pbc(serialize 三行即可合成,.pbc 是分发/实例格式)实质无效。修复三面:MUL 结果规模守卫(申请发生前拒绝)、墙钟预算(默认 10s,可关)、MemoryError 结构化转 VMResourceError——红守卫先证旧码 0/6 绿再修后 6/6 绿,常驻守卫 7/7。
|
|
19
|
+
3. **两处 legacy 首修兑现(compiler 域历轮欠账)**:v3 N4——条件 then/else 体与函数体『;』续接的第二条语句静默泄漏顶层恒执行(语义反转零诊断,「仅条件成立才执行」漂移为恒执行),三处单语句分叉点改调循环体既有 `_parse_statement_or_block` 并配套『;』同局限接(词法不产 NEWLINE,行界以行号差判定),SEMANTICS.md §2 同步补记 + test_loop_compile ⑧按其注释预授权还原为执行断言;N102——超长算术链/深嵌套 RecursionError 裸穿透双编译主入口(约 500 运算符一行输入即崩),两入口 parse_tokens 各包窄捕获转结构化报错,崩溃→报错、正常输入零改动。
|
|
20
|
+
4. **留档复测重点对照(任务纪律:v3.md 与 v11.md 第五节逐项对照现状)+ 留档 12 开口**:v11 第五节 17 开口中 N102(本轮 F4)与 v3 N4(本轮 F2)两开口闭合,其余逐项复核维持开口无一虚闭(N98 产物 NameError 面 / N99+N105 两入口语义相反 / v3 N7 strict 死配置 / N95+N97+N96 残面 / N103+N106 表达式语义面 / v3 N14 多术曰覆盖 / v3 N5+N104 / 测试基建族——本会话读核+探针在位性确认);新发现留档 4 项(N150 .pbc 反序列化 / N151 F4 误伤信任操作数 / N152 知足崩溃〔补账〕/ N153 0.15 静态上限旁路族七形态);backend 区另实证 v3 已修 7 项(N3/N6/N8/N11/N12/N13/N15)复测无现患(结案记录条,不占缺陷数)。
|
|
21
|
+
|
|
22
|
+
**对输入口径的核验**:输入称「四区复核 confirmed 29 条 + 4 修复 + 留档未修 11 条」。本会话以 `git status --porcelain` / `git diff --numstat` + 四区落点读核核对:改动面 = **六个修复源文件**(compiler/parser.py +63/-17〔F1+F2〕、compiler/condition_vm.py +93/-10〔F3〕、compiler/pbc.py +9/-5〔F3〕、compiler/\_\_init\_\_.py +2/-2〔F3〕、compiler/api.py +12/-2〔F4〕、compiler/compiler.py +10/-2〔F4〕)+ **SEMANTICS.md +6/-0**(F2 §2 补记)+ **test_loop_compile.py +26/-3**(F2 ⑧预授权还原)+ **四份新守卫**(untracked,133/135/151/95 行)——与四项修复一一对应,无越域改动。条目账目:29 confirmed(legacy 7 / recent 5 / frontend 7 / backend 10)− 跨区冗余 13 条 = 16 独立条目 = 6 独立新发现 + 10 legacy 复测条(8 开口族 + 2 结案/台账记录条);材料留档 11 条 + 本报告补账 N152 = 12 开口,与第三/五节状态联动无多无少;rejected 四区数组均为空(0 条证伪)。四项修复由上游修复会话完成,本报告会话未修改任何源文件,仅读核 + 探针/守卫/门禁实跑。**需明示的口径偏差**:材料遗留账目与四区 confirmed 的差额(知足崩溃三区确认却双清单无着落)已按第一手证据补账为 N152,非材料转述。
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 二、修复清单(4 项,逐项 where / 缺陷面 / 修复 / 攻击前后对比 / 守卫)
|
|
27
|
+
|
|
28
|
+
### F1(N148,high,本轮新发现当场修)术曰/问曰步骤号 int(float()) 裸调:≥309 位字面量 OverflowError / 毒 token NUMBER('.') ValueError 击穿双官方编译主入口
|
|
29
|
+
|
|
30
|
+
- **where**:材料口径 `compiler/parser.py` 原 :441(_parse_shuyue_block 步骤号转换)与原 :486(_parse_wenyue_block 同型),**修后两转换点读核现行 :452 与 :509**(本会话 `grep -n "step_num = int(float"` 精确命中 :452/:509);两函数生效条件契约注释 :420/:474 同步补记「ValueError/OverflowError 时向 errors 记『L{line}:C{col} 非法数值』、消费该 token 并 continue(N148 修复)」。对照:词法放行面 compiler/lexer.py:461-463(float(str) 成功即发 NUMBER,309 位零词法错);compiler/compiler.py:259(先 parse 后 :260 才查词法错,VM 入口被毒 token 击穿的时序前提)。守卫 `compiler/tests/test_parser_n148_stepnum_overflow.py`(新文件,133 行)。
|
|
31
|
+
- **缺陷面**:步骤号转换 `int(float(value))` 裸调无防护——①≥309 位数字字面量使 float(str)=inf(词法层 float() 成功零错误放行),int(inf) 抛 OverflowError;②词法毒 token NUMBER('.') 使 float('.') 抛 ValueError。api 入口(词法门禁拦住 '.' 形态但拦不住 inf 形态)与 VM 入口(compiler.py:259 先 parse 后查词法错,两形态均裸崩)双官方编译主入口均被击穿,沿 CLI cmd_compile(cli/\_\_init\_\_.py 读码直调无兜底)/pbc/analyzer/debugger 传导。攻击向量:任何可提交编译源码者零前置触发——『术曰:』+9×309+『。道 术一。』双入口崩,『术曰:.。』VM 入口崩。
|
|
32
|
+
- **修复**:两处裸转换各包一层 `try: int(float(...)) except (ValueError, OverflowError):`——异常时向 self.errors 记结构化语法错误(文案对齐第 11 轮 F1 裸 float 族既有防护与「非法数值」报错先例),消费该毒 token 后 continue(NUMBER 必被消费,防死循环);合法路径逐字未动。仅 parser.py 一个文件(+63/-17 为 F1+F2 合计,git diff --numstat 可证),未 commit。
|
|
33
|
+
- **攻击前后对比**:修复前(红探针实跑,测毕已删)——『术曰:』+9×309+『。』→ api.compile_source ESCAPED OverflowError(词法零错);『术曰:.。』→ compiler.compile_source ESCAPED ValueError;308 位与『术曰:1。』对照 success=True。修复后(本会话守卫绿态实跑佐证)——同攻击源双入口均不抛异常、返回 success=False/ok=False + errors=[「L1:C… 非法数值: '…'」];CLI cmd_compile 对攻击文件退出码 1 + 结构化错误无栈崩;pbc.compile_to_pbc 两形态均 ok=False 结构化报错。
|
|
34
|
+
- **守卫**:`compiler/tests/test_parser_n148_stepnum_overflow.py`(16 项断言):①309 位 OverflowError 族(api 术曰块/问曰块 + vm 入口不抛异常且报结构化「非法数值」);②词法毒 NUMBER('.') ValueError 族(vm 术曰块/问曰块不抛异常且 ok=False,api 同源词法门禁早退仍 success=False);③同输入双轮稳定报错;④合法输入基线(1/多步骤、308 位、3.5 步骤号、问曰块、vm 产物非 None)仍编译成功。红绿证据(材料口径):修前 9 FAIL exit=1(崩溃项全红、合法项预绿)→ 修后 16/16 exit=0。**本会话实跑:`python -X utf8 -m compiler.tests.test_parser_n148_stepnum_overflow` → 「=== N148 步骤号崩溃族守卫: 16/16 通过 ===」EXIT=0**。
|
|
35
|
+
- **verified_by**:①修前红探针复现 ask 证据逐点吻合(材料口径,测毕已删);②守卫修前 9 FAIL exit=1 → 修后 16/16 exit=0(材料红证口径;**修后绿态本会话实跑一致**);③黄金基线:修前 16 模块(14 个 compiler/tests + swarm test_rust_codegen/test_rust_swarm,python -m 逐个跑)全 exit=0 留基线 → 修后重跑全 exit=0 → 归一化毫秒耗时与 swarm_err_ 随机目录名两类环境噪声后 diff 为空——逐位一致(材料口径;同代码双跑复现同类噪声证非修复引入);④传导面实测:CLI main() exit 1 无栈崩、pbc.compile_to_pbc ok=False、analyzer.analyze_source no-crash(材料口径);⑤`python -c "ast.parse(compiler/parser.py)"` 语法过(材料口径)。临时探针与基线目录测毕已清理,本机绝对路径未写入任何产出。
|
|
36
|
+
|
|
37
|
+
### F2(v3 N4,medium,v3 首报→v11 留档维持→本轮首修;compiler 域历轮欠账)条件/函数体『;』续接泄漏顶层:条件执行语义静默反转为恒执行
|
|
38
|
+
|
|
39
|
+
- **where**:材料口径 `compiler/parser.py` 三处单语句分叉点原 :560/:567(_parse_condition then/else 体)与原 :625(_parse_func_def 函数体),**修后读核现行 :595 / :602 / :663**(三处均改调 `self._parse_statement_or_block()`,生效条件注释 :575/:624 含「N4 修复 2026-09-26」描述);配套同局限接在 `_parse_statement_or_block` 内(**读核现行 :706-711**:「N4 配套(2026-09-26):『;』只在本行续接——词法不产 NEWLINE token……行界以分隔符与后随 token 的行号差判定;行尾『;』不把下一行吞进块」+ `if (self.current_token and self.current_token.line != _sep_line): break`);SEMANTICS.md §2 :67-71 同步补记 N4 同局限接语义(+6 行,git numstat 可证);test_loop_compile.py ⑧按其注释预授权还原为执行断言(+26/-3)。循环体 :620 既有正确实现未动。**行号微漂如实记录**:_parse_statement_or_block 函数头生效条件注释(:676)仍为旧行为描述(未含同局限接 break 分支),同局限接语义以函数内行注释 :706-711 与 SEMANTICS.md §2 为准——注释陈化非行为缺陷。
|
|
40
|
+
- **缺陷面**:同分隔符两套语义——循环体用 `_parse_statement_or_block`(『。终止/;续接』正确实现),而条件 then/else 体与函数体用 `_parse_single_statement` 单语句解析,『;』续接的第二条语句从条件体/函数体泄漏为**顶层无条件执行**:『若 X 则 A;B。』的 B 恒执行(语义反转零诊断)、『定义 f():A;B。』的 B 同泄漏。攻击向量:『若 X 则 A;B。』『定义 f():A;B。』书写即触发,api/VM 双入口假成功零诊断。
|
|
41
|
+
- **修复**:①三处 `self._parse_single_statement()` → `self._parse_statement_or_block()`(与循环体同一分隔符语义,对齐 SEMANTICS.md §2 既有契约「循环体/条件体若要写多条语句,用分号」);②续接分支补同局限接——词法不产 NEWLINE token(lexer.py:253-258 仅推进行号),『;』后随 token 行号≠分隔符行号即块终止不消费(防『定义 f():…;⏎结果 = f(4)』后续顶层行被吞——该形态为 func/rust_codegen 测试语料既有合法输入,无此配套则 3 模块 17 例回归,修复材料实测捕获后加配套转绿);③SEMANTICS.md §2 补记 + 两函数生效条件注释同步;④test_loop_compile.py ⑧按其注释预授权还原(原注:「待步骤号语法支持补齐后可还原为执行断言(trust==0.2)」——N4 修复即该语法补齐)。本 ask 工作树含并行修复员改动(condition_vm/api/pbc 等),未触未改。
|
|
42
|
+
- **攻击前后对比**:修复前(红探针实跑)——『若 甲 大于 0,则 德 0.1;德 0.2。』then=单语句、顶层 2 条、api success=True 零诊断,产物 accumulate_trust(0.2) 缩进 0 格(顶层恒执行),VM 字节码 [JUMP_IF_FALSE 6, DE 0.1, JUMP 6, DE 0.2](DE 0.2 跳出门控恒执行)。修复后——then/else/函数体=Block[2]、顶层各 1 条,api 产物两处调用均缩进 4 格(if 体内),VM 字节码 [JUMP_IF_FALSE, DE 0.1, DE 0.2, JUMP](两 DE 同受门控);『。』终止不变(『若 X 则 A。B。』的 B 仍在顶层,缺陷①不回归)——条件执行语义不再被静默反转。
|
|
43
|
+
- **守卫**:`compiler/tests/test_parser_n4_semicolon_scope.py`(新文件,135 行,16 项):①then 体两语句+不泄漏顶层+零诊断;②else 体/函数体同语义;③循环体 Block[2] 对照+单语句形态原样返回+『。』终止不回归;④双入口产物语义(api 两调用均缩进;vm 字节码两 DE 在 JUMP_IF_FALSE/JUMP 之间);⑤步骤号边界(『;』后步骤号仍终止块)。红绿证据(材料口径):修前 8 FAIL exit=1(③⑤无回归项预绿)→ 修后 16/16 exit=0。**本会话实跑:`python -X utf8 -m compiler.tests.test_parser_n4_semicolon_scope` → 「=== N4 『;』续接作用域守卫: 16/16 通过 ===」EXIT=0**(⑤a 步骤号边界不回归项输出在位)。
|
|
44
|
+
- **verified_by**:①修前红探针复现 AST 形态/产物缩进/VM 字节码三面(材料口径,测毕已删);②守卫修前 8 FAIL → 修后 16/16(材料红证口径;**修后绿态本会话实跑一致**);③黄金基线:修前 17 模块(16 compiler/tests——含上轮新增 test_parser_n148——+ swarm 两套件)全 exit=0 → 修后全 exit=0 → diff(滤除毫秒耗时与 swarm_err_ 随机目录名)后唯一语义差异即 test_loop_compile ⑧预授权还原,其余逐位一致(材料口径);④中途实测捕获朴素改法回归(func_compile 3/10、loop ⑧、rust_codegen fact/multifn——均源于『;⏎』行尾形态),加同局限接配套后 17/17 全绿(材料口径);⑤本会话补跑 `python -X utf8 -m swarm.tests.test_rust_codegen` → 14 passed, 0 failed EXIT=0(双后端等价在含 F2 parser 改动的现行树上成立,佐证配套完整性)。临时探针与基线目录测毕已删。
|
|
45
|
+
|
|
46
|
+
### F3(N149,high,本轮新发现当场修;backend 区暂编 N149 保留)VM 沙箱资源防线:max_steps 限步数不限单步工作量——恶意 .pbc 防线内挂起 90 秒级 / 单步申请 19.5GiB 成功 / MemoryError 裸上抛
|
|
47
|
+
|
|
48
|
+
- **where**:材料口径 `compiler/condition_vm.py`(run 防线原 :122-125、_exec MUL 原 :266-268、run docstring :118 自述「步数上限防死循环」),**修后读核现行**:VMResourceError 类 :82-92、加固常量 :99-103(VM_MAX_INT_BITS=1<<16 / VM_MAX_SEQ_REPEAT=1<<24 / VM_DEFAULT_WALL_SECONDS=10.0)、_check_mul_scale **:106-142(材料口径 :110-148,微漂以读核为准)**、run 防线 :175-216(墙钟 :191-192/:198-199、MemoryError 转 VMResourceError("memory") :213-215)、_exec MUL 接线 :350(`_check_mul_scale(a, b) # N149:规模越界即拒(申请不发生)`)+ compiler/pbc.py:138-151(run_pbc 显式携带墙钟预算,缺省取 VM 默认传入)+ compiler/\_\_init\_\_.py:42/:61(导出 VMResourceError——材料口径 :64 未命中 grep,\_\_all__ 单行多项形态,以读核为准)。守卫 `compiler/tests/test_vm_resource_guard.py`(新文件,151 行)。
|
|
49
|
+
- **缺陷面**:VM 沙箱唯一资源防线 max_steps 只限步数、不限单步工作量与分配——①大数平方循环(int64 起点甲=甲*甲,34 组 LOAD/LOAD/MUL/STORE=138 条指令)在 max_steps=100000 防线内实测 90.3 秒挂起(平方序列单步代价指数增长);②单条 MUL『字符串×大整数』实测一次申请 19.5GiB 成功('a'\*20971520000,3.0s)、int64 上限量级申请 0.01s MemoryError 未捕获裸上抛;③condition_vm.py:266-268(缺陷时点)MUL `a * b` 无操作数界限;④pbc.py run_pbc 无资源约束直接执行任意 .pbc。攻击向量:serialize 三行即可合成恶意 .pbc(分发/实例格式,第三方文件属预期输入类),受害者 `pc run evil.pbc` / `pc debug evil.pbc` / run_pbc()/debug_pbc() 即挂起或 OOM 崩溃,零权限零特殊环境。
|
|
50
|
+
- **修复**:最小修复三面——①**MUL 结果规模守卫**:_check_mul_scale 在乘法执行**前**估算规模(int 看操作数 bit_length 之和 > VM_MAX_INT_BITS=2^16、str/list/tuple×int 看 len×abs(n) > VM_MAX_SEQ_REPEAT=2^24 即抛 VMResourceError("mul_scale")——申请不发生;float 参与不拦保持既有行为);②**墙钟预算**:run() 新参 max_wall_seconds(默认 10.0,传 None/0 关闭),每步 time.monotonic() 检查,超限抛 VMResourceError("wall");③**MemoryError 结构化**:run 循环捕 MemoryError 转 VMResourceError("memory")(含 ip/op 定位,保留异常链)。run docstring 同步改写(修掉对恶意 .pbc 不实的声明);步数上限 RecursionError 既有契约原样保留;pbc.run_pbc 新参缺省取 VM 默认并显式传入;\_\_init\_\_.py 导出 VMResourceError。
|
|
51
|
+
- **攻击前后对比**:修复前(红守卫实测,旧码 0/6 绿)——恶意 .pbc 大数平方循环 → 子进程 25s 超时仍挂起无任何结构化终止(本轮有界复证;90.3s 全量实测出自上轮确认清单,本轮未重跑——如实标注);单条 MUL 字符串×2^62 → MemoryError 裸上抛(4EiB 申请面);CLI run 同为挂起面;run() 无墙钟参数。修复后(6/6 绿)——同一恶意 .pbc → VMResourceError("mul_scale") 毫秒级拒绝(64512+64512 位 > 65536 位上限);str×2^62 → mul_scale 拒绝(申请不发生);MemoryError 注入 → VMResourceError("memory");0.3s 墙钟死循环 → VMResourceError("wall")(实测 0.313s);CLI run 0.05s exit=1 带 VMResourceError 结构化拒绝;CLI debug 面:debug_pbc 结构性循环盲(debugger.py:43 调试器自维 ip 不回读 vm.ip + 1000 快照帽,属既有设计非 N149 面),其单步分配面由 _exec 级 MUL 守卫覆盖(evil_strmul 经 debug_pbc 得 VMResourceError mul_scale)。
|
|
52
|
+
- **守卫**:红守卫先证旧码红(系统临时目录 6 案:A str×2^62 经 run_pbc、B 平方循环带墙钟参、B2 平方循环纯默认参、C 注入 MemoryError、D 自跳死循环墙钟、E serialize 三行合成恶意 .pbc 端到端;逐案子进程+25s 超时防挂死)——旧码 0/6 绿(MemoryError 直通×2、挂起>25s×2、墙钟参数缺失×2),修后 6/6 绿;已落地常驻回归 `compiler/tests/test_vm_resource_guard.py`(7 案:①②③④对应四攻击面+⑤合法 MUL 逐位锚+⑥加固参数量级锚+⑦RecursionError 既有契约),对旧码 stash 三修复文件后跑红(exit=1),修后 7/7 通过;实验临时目录已清理(0 残留,材料口径)。**本会话实跑:`python -X utf8 -m compiler.tests.test_vm_resource_guard` → 「=== N149 VM 资源加固测试: 7/7 通过 ===」EXIT=0**(⑤合法 MUL 逐位不变 [56088, '甲甲甲', 10.0]、⑥量级锚 65536/16777216/10.0、⑦步数契约不变——输出在位)。
|
|
53
|
+
- **verified_by**:①黄金基线:合法输入 battery(compile_source+run×6 源、assemble、.pbc 全链路 compile_to_pbc/save/load/serialize 往返/run_pbc/debug_pbc/VMDebugger、RecursionError 契约、合法算术 123×456 等)修前修后 diff 逐字节为空,并在含并发 parser.py 改动的当前树上 stash A/B 复证仍逐位一致(材料口径);②既有测试:14 个 compiler 套件+4 模块 demo 修后全部 exit=0 且输出与修前一致(仅归一化 mkdtemp 随机目录名与毫秒计时两处机器噪声;材料口径;**本会话全量 211/211 与四守卫绿态佐证一致**);③非本人回归如实归因(材料口径,均经 stash 本人三文件 A/B 双向验证与本人改动无关;其 parser.py 在途缺陷已随 sibling F1/F2 完工消失——本会话全量 211/211 含 test_loop_compile/test_func_compile PASS 佐证已消失);④90.3s/19.5GiB 原始数值未重跑(耗时过长,如实沿用上轮口径),本轮以 25s 有界挂起复证旧码红(材料口径);⑤**本会话补跑 `python -X utf8 -m swarm.tests.test_rust_codegen` → 14 passed, 0 failed EXIT=0**(condition_vm.py 属 SEMANTICS §5 双后端契约面,资源加固为 Python 侧新增防线非语言语义变更,双后端等价不受扰)。全程未 git commit。
|
|
54
|
+
|
|
55
|
+
### F4(N102,medium,legacy 编号·v11 留档维持→本轮首修;compiler 域历轮欠账)超长算术链/深嵌套 RecursionError 裸穿透双编译主入口
|
|
56
|
+
|
|
57
|
+
- **where**:材料口径 `compiler/api.py:143`(compile_source 内 parse_tokens 裸调,**修后读核现行 :143-153 窄捕在位**:`try: ast = parse_tokens(tokens, syntax_errors) except RecursionError:` → ast=None + errors 记「递归深度超限(RecursionError):表达式/嵌套过深——请拆短算术链或降低嵌套层级」+「窄捕获:只拦 RecursionError,不掩盖其他异常」注释)+ `compiler/compiler.py:259`(**修后读核现行 :259-268 同型窄捕在位**,生效条件注释 :253 同步);病灶机理 parser.py 右递归(_parse_binary_tail→_parse_expression 相互递归);新增常驻守卫 `compiler/tests/test_compile_entry_n102_recursion.py`(新文件,95 行);CLI 无需改动(cli/\_\_init\_\_.py cmd_compile 经既有失败路径打出「编译失败」+exit=1)。
|
|
58
|
+
- **缺陷面**:约 500 运算符的一行输入(『甲 = 1』+『加1』×500+『。』)使 parser 右递归触解释器深度上限——RecursionError 未捕获直穿 api.compile_source(不返回 CompileResult)与 compiler.compile_source,api/cli 均无兜底;资源耗尽/DoS 面,零前置触发。
|
|
59
|
+
- **修复**:两官方编译主入口的 parse_tokens 各包一层**窄** try/except RecursionError——转记结构化错误并沿各入口既有错误契约返回(api 侧 success=False + errors、CompileResult 契约 ast=None 提前返回;compiler 侧 (None, {ok:False, errors, warnings:[]}));只拦 RecursionError 不掩盖其他异常;正常输入零改动(纯「崩溃→报错」转换)。
|
|
60
|
+
- **攻击前后对比**:修复前(红守卫实测,旧码 1/4 绿,唯合法链绿)——api.compile_source 500 链 → RecursionError 裸穿透;compiler.compile_source 同源同崩;CLI compile → exit=1 带 Traceback(stderr 含 RecursionError)。修复后(4/4 绿)——同输入 api 侧 → CompileResult(success=False, errors=[「递归深度超限(RecursionError)…」]) 不抛异常;compiler 侧 → (None, ok=False, errors 同文);CLI → exit=1、无 Traceback、stdout「❌ 编译失败」;合法 50 运算符链双入口照常 success=True/ok=True 不受影响。
|
|
61
|
+
- **守卫**:红守卫先证旧码红(临时 4 案:A api 入口 500 链、B 字节码入口 500 链、C CLI compile 子进程探针、D 合法 50 链基线锚)旧码 1/4 绿(A/B RecursionError 裸穿透、C Traceback)→ 修后 4/4 绿;已落地常驻回归 `compiler/tests/test_compile_entry_n102_recursion.py`(①api 结构化拒绝②字节码入口结构化拒绝③CLI exit=1 无 Traceback④合法链不误伤),对旧码 stash api.py+compiler.py 后跑红 1/4(①②③ ✘ 与缺陷形态一致)→ 修后 4/4;实验临时目录已清理(0 残留,材料口径)。**本会话实跑:`python -X utf8 -m compiler.tests.test_compile_entry_n102_recursion` → 「=== N102 编译入口递归守卫: 4/4 通过 ===」EXIT=0**(②字节码入口结构化拒绝、③CLI exit=1 traceback=no、④合法链双入口不受影响——输出在位)。
|
|
62
|
+
- **verified_by**:①黄金基线:双入口合法输入 battery(6 源 × api.compile_source strict True/False 五字段+产物 md5/长度/verdict、compiler.compile_source 的 ok/errors/pbc serialize md5、validate_source、quick_compile)修前(stash 隔离 N102 两文件)修后 diff 逐字节为空(材料口径);②既有套件:5 模块 demo(含 compiler.api)+14 既有套件修前修后各 19/19 exit=0 且输出 diff 仅归一化「耗时: X.Xms」两行机器噪声后为空(材料口径);③终检 sweep(材料口径):test_compile_entry_n102_recursion 4/4、test_vm_resource_guard 7/7、sibling 套件 test_parser_n148 16/16、test_parser_n4 16/16、swarm test_rust_swarm 22/22、test_swarm_condition_space 13/13、test_rust_codegen 14/14(**除红证外本会话实跑一致**:四守卫 16/16·16/16·7/7·4/4 + rust_codegen 14/14 + 全量 211/211);④归因说明(材料口径):同仓并发修复员在途改动(parser.py/SEMANTICS.md/test_loop_compile.py 非本人文件),本修复仅触 api.py/compiler.py+新增测试,基线经 stash 精确隔离采集;⑤全程未 git commit,未写入本机绝对路径到仓内产出。
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 三、发现明细(四区 confirmed 29 / rejected 0;去重后 16 独立条目 = 新发现 6 + legacy 复测 10)
|
|
67
|
+
|
|
68
|
+
以下每项「证据要点」为上游复核/修复会话的读码+实跑(材料原文;攻击复现均在系统临时目录/哑数据环境,测毕清理);标注★者本报告会话另做了现行代码读核或哑输入探针/守卫实跑。legacy 项标注原轮次与复测轮数;本轮新发现 N148-N153 的编号裁决见头部「编号口径」行(逐项标注原暂编号)。
|
|
69
|
+
|
|
70
|
+
### 新发现 6 项(N148-N153;★=本轮已修并经本会话守卫实跑,或本会话探针/读核实证)
|
|
71
|
+
|
|
72
|
+
| #(原暂编号) | where(读核现行行号) | 严重度 | 问题摘要 | 证据要点 | 状态 |
|
|
73
|
+
|---|------|--------|----------|----------|------|
|
|
74
|
+
| N148(recent 区 N148 保留)★ | compiler/parser.py:452/:509(修后;缺陷时点 :441/:486) | **high** | 术曰/问曰步骤号 int(float(value)) 裸调:≥309 位字面量(float=inf 后 int(inf))OverflowError、毒 token NUMBER('.') ValueError,双官方编译主入口崩溃(api 入口词法门禁拦不住 inf 形态;VM 入口先 parse 后查词法错两形态均裸崩),沿 CLI/pbc/analyzer/debugger 传导 | 上游实测(临时区,测毕清理):float('9'\*400)=inf、api 309 位 CRASH OverflowError / 308 位 success=True;vm_compile 309 位 CRASH;『术曰:.。』api 词法门禁早退 success=False / vm CRASH ValueError;词法 309 位 errors=[]。本会话读核:修后转换点 :452/:509 包 try/except (ValueError, OverflowError) 在位、报错文案对齐 F1 先例 | **已修**(F1,本会话守卫实跑 16/16) |
|
|
75
|
+
| N149(backend 区 N149 保留)★ | compiler/condition_vm.py:82-92/:99-103/:106-142/:175-216/:350 + pbc.py:138-151 + \_\_init\_\_.py:42/:61 | **high** | VM 沙箱唯一资源防线 max_steps 只限步数不限单步工作量与分配:大数平方循环防线内 90.3s 挂起、单条 MUL 一次申请 19.5GiB 成功 / MemoryError 裸上抛——run docstring 自述「步数上限防死循环」对恶意 .pbc 实质无效(.pbc 为分发格式,serialize 三行即可合成) | 上游实测(临时区,测毕清理):34 次平方循环 90.3s(max_steps=100000 防线内);'a'\*20971520000 3.0s 成功分配 19.5GiB;'a'\*10\*\*13 MemoryError 0.01s 未捕获上抛;MUL `a*b` 无界限;run_pbc 无资源约束。本会话读核:VMResourceError/常量/_check_mul_scale/run 墙钟+MemoryError/MUL 接线/run_pbc 墙钟/导出全部在位(_check_mul_scale 现行 :106-142 与材料 :110-148 微漂) | **已修**(F3,本会话守卫实跑 7/7 + rust_codegen 14/14) |
|
|
76
|
+
| N150(backend 区 N150 保留) | compiler/pbc.py:63-109(本会话读核在位;F3 仅改 :138-151 run_pbc,deserialize 未动) | medium | .pbc 反序列化信任边界缺失:deserialize 除 tag 枚举一处显式校验(:107)外对 op 名/长度前缀/UTF-8 全部直读零校验零异常收敛;损坏/恶意 .pbc 使 IndexError/struct.error/UnicodeDecodeError/KeyError/TypeError 原样穿透至 CLI 原始 traceback;截断短串更被静默接受(零诊断);JUMP 参数 None 致 VM 内 TypeError | 上游 9 类文件逐一实测(临时区,测毕清理):trunc_tag→IndexError @pbc.py:71;short_int→struct.error(候选记 IndexError,实为 struct.error——同为穿透,类型偏差如实记录);bad_utf8→UnicodeDecodeError @:69;unknown_op→反序列化成功、run_pbc KeyError @:144;jump_none→TypeError @condition_vm.py:122;trunc_str→反序列化「成功」静默接受截断短串;CLI run/debug 端到端原始 traceback;bad_tag→ValueError(唯一显式校验) | 留档(结构化错误收敛非语义决策、低风险红守卫现成,本轮 4 修复名额已满转 deferred;建议与 N149 同域 pbc/condition_vm 面同批搭车,见第五节) |
|
|
77
|
+
| N151(recent 区 N151 保留) | compiler/name_checker.py:830-831 + :834-856(本会话读核在位) | medium | F4 查表化上限误伤信任语义操作数:_check_literal 对一切指令数值操作数(isinstance(value,float) 即调)调 _check_weight_cap,未限定「止 情感权重」阈值语义——德(信任累积)与知足(信任达标阈值)操作数被当情感权重拦截:伴侣空间「知足 0.7」(=信任阈值原值)双入口被拒、「德 0.2」被拒;工作空间「德 0.1」被 0.05 上限拒(F4 修复引入的假阳性正确性破坏)——CONDITION_SPACE_RULES 自述伴侣 min_trust 0.7 却连信任阈值 0.7 都无法表达 | 上游双入口实测:『若条件空间为伴侣,则知足 0.7。』api/vm 均拒(「情感权重不可超过 0.15,当前值: 0.7」);『若条件空间为工作,则德 0.1。』均 False(0.05);『若条件空间为伴侣,则德 0.2。』均 False;对照无空间『德 0.1。』『知足 0.7。』均过;『若条件空间为工作,则止 情感权重 于 0.05。』正常通过(上限本义面无回归)。本会话读核::830-831 无指令上下文限定在位、:834-856 表驱动注释含「默认不拦截」钉死口径 | 留档(德/知足信任操作数是否受情感权重上限约束属语义表决策,需语义侧拍板后修,见第五节) |
|
|
78
|
+
| N152(三区暂编 recent N149 / frontend N148 / backend N148,冲突顺延重编;**材料双清单遗漏,本报告补账**)★ | compiler/compiler.py:193(本会话读核在位) | **high**(recent/frontend 报 high、backend 报 medium,取两区 high 口径) | 知足(ZHIZU)非数值操作数裸 float() 未捕获 ValueError 逃逸 VM 编译主入口:同函数 DE 分支(:180-184)有 try/except 转 SyntaxError「名实不符」,ZHIZU 分支无防护——约束表 name_checker.py:386-392 明文 operand_types=["identifier"]、example='知足 验证单元',**约束表自带示例原句即触发崩溃**;compile_source 只捕 SyntaxError(:269-273),ValueError 一路穿透 compile_to_bytecode/pbc.compile_to_pbc/analyzer/debugger;同一源码经 api 入口却 success=True(双入口结论分裂) | 上游三区独立实测:vm_compile(『知足 验证单元。』)→CRASH ValueError could not convert string to float: '验证单元'(CLI compile-pbc 端到端原始 traceback 末帧 compiler.py:193);『知足 甲。』『知足 "abc"。』同崩;api 同源 success=True 产物行 `_runtime.satisfied("甲")`;对照『德 甲。』vm ok=False 名实不符(两分支不对称确认);『知足 0.7。』vm ok=True。**本报告会话第一手探针实跑(哑输入,即写即弃)**:`compile_source('知足 验证单元。')` → ESCAPED ValueError could not convert string to float: '验证单元';api 同源 success=True errors=[];读核 compiler.py:193 裸 `threshold = float(val)` 在位、DE 分支 :180-184 try/except 在位(不对称确认)、compile_to_pbc(pbc.py:127-135)无异常收敛。git log compiler/ 末笔 fa9602ec(第 11 轮)非回归 | **开口——材料修复清单与留档清单均未收录,本报告读核+探针实证后补账入第五节(建议下一轮优先速收候选:对称包 try/except 转 SyntaxError 一处即修)** |
|
|
79
|
+
| N153(recent 区暂编 N150 + frontend 区暂编 N149/N150/N151,冲突顺延族合并;材料留档清单已并为一族) | compiler/name_checker.py:884-905 + :866-881 + :574-579 + :808-831(本会话读核在位) | medium | 0.15 静态上限旁路族(七形态两向):①赋值切换静态联动只认直名/字符串字面量(:897-904),变量间接/拼串/若体切换三形态双入口过审且 VM 运行时真切到「伴侣」(:903 注释自称「VM 无对应静态规则」——实为 condition_vm.py:212-213 STORE_NAME 对任意求值后真值调 _switch_condition_space,注释与实现矛盾);②条件形态引号「若 条件空间 为 \"伴侣\"」整段跳过(:873 只认 right.type==IDENTIFIER)——0.15 上限对 0.9 静默失效,而赋值形态已认字符串字面量(两形态不对称);③「不为」(op=="!=")也被套伴侣约束误拒合法程序;④_check_loop(:574-579)不调切换检测,「当 条件空间 为 伴侣 执行」循环形态零拦截且运行期真进伴侣空间执行;⑤赋值字符串形态「情感权重 = \"0.9\"」零拦截(第 11 轮缺陷 22 修复只覆盖「止」指令字符串操作数);⑥「信任值 = \"0.9\"」过审后 VM STORE_NAME 无类型检查直写信任寄存器,下一次比较即 TypeError 从 ConditionVM.run 逃逸(run 仅捕获 VMHalt) | 上游实测(临时区,测毕清理):D0 直连对照双入口均拒;D1 变量间接 api success=True + vm 运行时空间=伴侣;D2 拼串(PUSH '伴'+PUSH '侣'+ADD+STORE_NAME)运行时空间=伴侣;D3 若体切换同过;引号形态 api success=True errors=[] warnings=[](去引号同源被拒);「不为」AST 实测 op='!=' 误拒;循环形态 api success=True + ConditionVM 运行(trust=0.8)空间=伴侣 halt=halt 上限全程未触发;「情感权重 = \"0.9\"」api 过审(数值形态被拒);「信任值 = \"0.9\"」vm ok=True 后 run 抛 TypeError '>' not supported。本会话读核::866-881 只认 IDENTIFIER right、:884 生效条件注释+:897-904 直名/字符串+ :903「VM 无对应静态规则」矛盾注释、:574-579 _check_loop 无切换联动、:830-831 number 分支限定——全部在位 | 留档(需先统一「静态切换检测 vs VM 运行时切换」模型再修——半修致口径进一步分裂,整族专项,见第五节大设计决策项) |
|
|
80
|
+
|
|
81
|
+
### legacy 复测 10 项(8 开口族 + 2 结案/台账记录条;多区独立复核互为佐证——N98/N99/v3 N7 各三区、N102 族/语义漂移族/残面族/测试基建族各两区)
|
|
82
|
+
|
|
83
|
+
| # | where(缺陷时点) | 严重度 | 问题摘要(原轮次→复测轮数) | 证据要点 | 状态 |
|
|
84
|
+
|---|------|--------|----------|----------|------|
|
|
85
|
+
| N98(+v8 N64 残面) | compiler/codegen.py:490-491 + api.py:319-326(本会话读核 :490-491 在位) | medium | 【v8 N64 首报→v11 留档→本轮第 3 次复测维持开口】产物 NameError 面:条件表达式标识符经 _gen_expression 裸名直译入产物(`self._write(expr.name)`),比较双方在产物中从未定义;终裁只 compile() 验语法(api.py:317-318 注释自认「合法产物仅运行期 NameError 不受影响」)——success=True 产物一执行即 NameError;旗舰自测(api.py 原句)即触发,修复必翻红;'x = None。' 把 DSL 名静默漂移为 Python None;SEMANTICS.md:108-111 §5.1「产物依赖不存在的 protocol_runtime 不可运行」声明与实测不符(产物头部 try-import 带 except 兜底+内嵌运行时类,自含可运行直至用户段 NameError)——文档口径需随本条更新 | 三区复测一致:旗舰条件句 success=True+verdict passed=True/0.85、产物 `if 条件空间 == 伴侣:` 双裸名、模块级 exec→NameError: name '条件空间' is not defined;CLI 编译成功即写盘交付,产物消费方一跑即崩。本会话读核 codegen.py:490-491 裸名直译在位。v11 分诊维持:最小修=codegen.generate 末尾 ast 自由变量检查回流,但旗舰样例必翻红需先决策 | 留档(改动面大故缓,见第五节) |
|
|
86
|
+
| N99+N105 | compiler/name_checker.py:322-328 + compiler/compiler.py:179-185 + condition_vm.py:293-301(本会话读核+探针在位) | medium | 【v11 留档→本轮第 2 次复测维持开口】两入口语义相反:同包两个 compile_source(api 返回 CompileResult 走 codegen 产物 / compiler 返回 (code,dict) 走 VM 字节码)对同一源码结论相反至少三例——①『德 累积信任值。』api success=True 产物把标识符变字符串入信任累积(DE 约束表 :322-328 operand_types 含 identifier、example 即此句)/ VM 拒(:180-185 float 拦截名实不符);②『返回 1。』api success=False('return' outside function)/ VM ok=True 且顶层 RETURN=合法程序结束;③算术链值分歧(api 左结合 16.0 / VM 右结合 44.0)——两入口对同一约束表各取一半,二者必有一错 | 三区复测一致。**本报告会话第一手探针实跑(哑输入)**:vm_compile('德 累积信任值。') → ok=False errors=[「L1 德 的操作数必须是数值,得到 '累积信任值'(名实不符)」];api.compile_source 同源 success=True errors=[]——分裂现状第一手证实。本会话读核 DE 约束表 :322-328 example 在位 | 留档(统一口径需约束表 example 与旗舰自测回归联动的语义专项;SEMANTICS.md §5.1 需随裁决更新,见第五节) |
|
|
87
|
+
| v3 N7 | compiler/api.py:27(compile_source :100-197 全程无消费点)+ cli/\_\_init\_\_.py:37-38,126-129(本会话 grep+读核在位) | medium | 【v3 首报→v11 留档→本轮第 3 次复测维持开口】strict 纯死配置:CompileOptions.strict 在 api.compile_source 全程零消费点,CLI --strict/--no-strict 假开关(help 宣称「警告视为错误」);同包 compiler.py:265 真消费但语义是「name_errors 是否拦截」——开关有效性因入口而异。validate_source(api.py 透传 strict)作 CI 预检同被绕过 | 三区复测一致:strict=True/False 输出三元组/五字段逐项完全相同(带警告源码两态亦同);grep 全包消费点:api 仅 :27 定义/:210 注释/:221 validate_source 透传/:386 自测(材料口径 :211/:376,因 F4 插入 +10 行下移——本会话 grep 现行 :27/:210/:221/:386,compile_source 函数体零读取实锤)。修法二选一(接通注意 CLI default=True 接通后带警告源码默认翻红需回归;或如实改 help 移除死开关)均属契约决策 | 留档(契约决策 deferred,见第五节) |
|
|
88
|
+
| N95+N97(+N96 残面) | compiler/lexer.py:393-410 + name_checker.py:759-770(本会话读核在位) | medium | 【v11 留档→本轮第 2 次复测维持开口】「且/或/非」吞并族:CJK 断开前瞻集合仅(大于/等于/小于/于)+「条件空间」后定向断「为/不为」,且/或/非 均不在断开集合——无空格书写整串吞并成单 IDENTIFIER,api 假成功(最多 warning)、VM 执行即 NameError;带空格同语义反被语法错误拒,同一语义两种写法结论相反。N96 残面:默认空间 0.9 放行 vs 工作空间 0.3 被 0.05 拒——表驱动钉死语义矛盾,属处置决策留档非缺陷 | 三区复测一致:『若条件空间为伴侣且宁静…』api success=True 仅 warning、VM 执行 NameError 名实不符'伴侣且宁静';『若条件空间非伴侣…』api success=True 零错误零警告(词法实测整串单 token);带空格对照 success=False。本会话读核 lexer.py:390-410 在位——:390-392 注释自证设计张力:「乘/加/为/且…不在此断开——运算词内嵌于名词是合法标识符(『阶乘』『加权』),全量前瞻会把它们切碎」(全局断开会把『道 或然路径。』等合法名词操作数改为报错)——最小修(入断开集)有黄金基线张力,需定向断开或名实校验诊断的设计决策 | 留档(设计张力 deferred,见第五节) |
|
|
89
|
+
| N103+N106(N102 已拆出本轮修复) | compiler/parser.py 右递归链 + lexer.py:433-466(本会话读核在位) | medium | 【v11 留档→本轮第 2 次复测维持开口(N102 除外——本轮 F4 已修)】表达式语义面:①N103 算术链右结合静默错值——『甲 = 1 减 2 加 3。』VM 字节码右结合得 -4.0(正确 2.0)/ api 产物直译恰为 2.0——静默错译且两后端结论分叉;『甲 = 10。甲 = 甲 减 2 减 3。』vm 甲=11.0(常规 5.0);②N106 科学计数法静默截值——'1e5' 被 _read_number(无 e/E 支持)截为 NUMBER(1)+IDENTIFIER(e5),值静默错 10 万倍 success=True;VM 发 (DE, 1.0) ok=True;api 产物 `accumulate_trust(1.0, "e5")` 把 e5 拆成第二参数亦为错译;③下划线分隔数两形态词法分叉结论相反(N106 同族新形态):'x = 1_000。' 切 NUMBER(1)+ID(_000) 产物 x=1.0 静默错值 / CJK 毗邻形 '1_000' 成单 IDENTIFIER、float=1000.0 数值反而正确 | 三区复测一致(含下划线两形态实跑:token 流 [ID(x),EQUALS,NUMBER(1),ID(_000),PERIOD] 产物 x=1.0 success=True;上限拒绝实测「当前值: 1000.0」)。本会话读核 _read_number :433-466 无 e/E 在位。结合性与数字字面量格式属语言规范语义决策(SEMANTICS.md 未定义),N102 崩溃面已单列本轮修复 | 留档(语义决策 deferred,见第五节) |
|
|
90
|
+
| v3 N14(v3 N4 已拆出本轮修复) | compiler/codegen.py:451 | medium | 【v3 首报→v11 留档→本轮第 2 次复测维持开口】多术曰块每块恒生成 def protocol_procedure():(固定名)同名互相覆盖,前块静默死代码,success=True 静默丢语义(产物 :155 与 :161 两个同名 def、footer 仅一次调用) | 三区复测一致(def_count=2 success=True)。修法=块序号后缀命名或重名记错(footer 调用点联动)——codegen 专项,建议与 N98 修复同批 | 留档(见第五节) |
|
|
91
|
+
| v3 N5+N104(+v8 N64 残面报错定位退化 + N105 残面) | compiler/lexer.py:480-493(本会话读核在位) | medium | 【v3 N5 首报→v11 留档→本轮第 2 次复测维持开口】字符串诊断面:①到 EOF(非换行)未闭合零诊断且其后源码被吞进字符串字面量假成功(tokenize errors=[]、api success=True 静默把未闭合串编入产物);②未闭合字符串吞换行后行号漂移(换行形态已记错——:482-484 已修项在位——但其后 token 全 line=1 不递增);③v8 N64 残面:_py_name 未补挂赋值目标,'class = 5。' 仅以粗粒度「产物不可编译: SyntaxError (line 153)」被终验拒(精确报错定位退化);④N105 残面:顶层 return 两后端分歧(api 拒 / VM 合法程序结束) | 三区复测一致:EOF 形态 tokenize errors=[] 零诊断、api success=True;换行形态 errors=['L1:C7 字符串未闭合'] 但第二行内容仍 line 1;'class = 5。' 粗粒度拒;『返回 5。』api success=False / vm ok=True code=[PUSH_CONST 5.0,RETURN]。修法均为一行级对称报错/记账,与 N103+N106 同域可搭车 | 留档(见第五节) |
|
|
92
|
+
| 测试基建族+api 契约 low 族(v3 N16/N17/N18/N19/N20 + v3 N9/N10) | compiler/tests/test_func_compile.py:92-95 + test_loop_compile.py:63,75,100 + test_pbc.py:19-20 + test_full_pipeline.py:189 + test_compiler_c2.py:87 + api.py:170-175,202-203 | low | 【v3 首报→v11 留档→本轮第 2 次复测维持开口】①套件静默跳过洞 4 处(被测源编译失败时用例无声消失、套件仍全绿 exit 0——monkeypatch 注入三点独立复现);②test_pbc 往返清单含 VM 不存在的操作码 PUSH/STORE(真名 PUSH_CONST/STORE_NAME,serialize 对字符串 op 不校验);③test_full_pipeline.py:189 双析取被前文 checks 蕴含恒真;④test_compiler_c2.py:87 文案与源码不符(「5>4 真」vs 源码「若 4 大于 3」);⑤FakeBridge 建议计算后零消费(llm_suggestions 赋值后无读取点);⑥validate_source「仅校验(不生成代码)」实为全流水线(validate_source('class = 5。') 报「产物不可编译」证明实跑了 codegen+终裁) | 两区复测一致(读码逐字核实五处位置 + 注入实测)。修法均为一行级记账/对称报错,v11「宜早修/顺手清账」建议维持——不直接攻击面,测试可信度与接口契约面,会掩盖未来回归 | 留档(随手批次清账,见第五节) |
|
|
93
|
+
| 结案记录条(backend 区复测,不占缺陷数) | compiler/api.py:319-326 + codegen.py:362-372/:492-497/:507-512/:543-553 + lexer/parser | — | 【v3 已修 7 项复测结案·无现患】v3 N3(毒 token——parse_source 返回结构化错误不崩)/ v3 N6(伴侣上限无空格失效——无空格/带空格双形态均被 0.15 上限拒)/ v3 N8(终裁橡皮图章——产物 compile() 终验在位 + test_verdict_product_compile 15/15)/ v3 N11(字符串注入——json.dumps 转义在位)/ v3 N12(五类节点静默丢弃——while/def/return 真实生成 success=True)/ v3 N13(表达式行 # 注释——未支持类型改记 error)/ v3 N15(footer 未定义调用——无术曰产物不再调用 protocol_procedure) | backend 区逐项实跑/读码复测全部证实已修在位(其中 v3 N12 首轮用自构造源码因语法不合误判失败、改用测试套件合法形态后证实——如实记录);附代码生成逃逸专项负结果:白名单逐路径读码核查(操作数/字符串字面量均经 json.dumps 转义、_py_name 守函数名),未发现新的可注入构造(核查方式=白名单路径读码+上轮构造复测,未做穷举 fuzz——如实标注)。基线:14 套测试套件逐个 python 运行全部 exit=0 | 复测结案(不占缺陷数) |
|
|
94
|
+
| 台账记录条(recent 区 v11 第五节留档复测,不占缺陷数) | docs/eval/缺陷挖掘_自主迭代_v11.md:166 | — | 【v11 第五节开口现状逐项对照·任务纪律复测重点】N98/N99/v3 N7/N96 残面/N106/N102/N103/v3 N14 八项逐项实跑——修复前状态全部维持开口、与留档口径一致无一已修(其中 N102/v3 N4 本轮 F4/F2 修复后闭合);另实证 N106 同族新形态:下划线分隔数两形态词法分叉(已并入 N103+N106 条)。阴性抽查:grep generate_code 全 compiler/ 仅 codegen.py 定义处零生产调用方(候选声明成立)。基线:六守卫(test_parser_n3_numeric 16/16、test_name_checker_space_assign 16/16、test_parser_weight_value_forms 17/17、test_weight_cap_string_missing 21/21、test_verdict_product_compile 15/15、test_defect_regression 18/18)全绿——本批发现均在第 11 轮修复后基线上成立。未复测项如实转述:N95/N97/v3 N4/N5/N16/N17 及七项复核备注本轮未实跑,状态以 v11 留档为准 | recent 区逐项实跑记录(旗舰条件句/双入口/strict 五字段/无空间 0.9/1e5/下划线/RecursionError/右结合/双术曰)。阴性抽查与基线数字为上游会话第一手,本报告会话未重跑(如实区分);其「N102 维持开口」结论为修复前状态,F4 修后已闭 | 复测台账(不占缺陷数;其中 v3 N4/N102 转已修) |
|
|
95
|
+
|
|
96
|
+
### 证伪/剔除(rejected)
|
|
97
|
+
|
|
98
|
+
四区复核 rejected 数组均为空——**本轮 0 条证伪**(与 v15 的 2 条、v16/v17 的 0 条一致,本轮同样无证伪项,如实记录)。已修剔除:无新剔除项——backend 区结案记录条(v3 已修 7 项)与 recent 区台账记录条(v11 第五节复测)均为复测性质记录,不占缺陷数、不另立剔除项;历轮已修清单(第 11 轮 compiler 二轮 5 修:数值解析崩溃族/条件空间赋值绕过/权重形态绕过/查表上限/终裁 compile 终验——黄金基线逐位一致法)未再报,第 3 轮 compiler 深挖 5 修亦未再报。
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 四、验证(门禁结果)
|
|
103
|
+
|
|
104
|
+
以下「本会话实跑」均为本报告写作会话在仓库根目录实际运行(第一手命令与输出);「材料口径」为上游复核/修复会话已跑、本会话未重跑(如实区分):
|
|
105
|
+
|
|
106
|
+
| 命令 | 结果 | 来源 |
|
|
107
|
+
|------|------|------|
|
|
108
|
+
| `python -X utf8 scripts/run_tests.py --jobs 4`(全量) | `===== SUMMARY 211/211 通过,5 跳过(依赖缺失/平台不符) =====`——**本会话实跑,真实退出码 0**;211 = v17 终态 204 + 本轮 4 个新守卫文件(各计 1),与材料门禁口径逐字一致(尾部含 hive/swarm 各套件 PASS) | **本会话实跑** |
|
|
109
|
+
| `python -X utf8 -m compiler.tests.test_parser_n148_stepnum_overflow` | 「=== N148 步骤号崩溃族守卫: 16/16 通过 ===」EXIT=0——与材料修后 16/16 一致(材料红证修前 9 FAIL exit=1,本会话未重跑红证,守卫未回退) | **本会话实跑** |
|
|
110
|
+
| `python -X utf8 -m compiler.tests.test_parser_n4_semicolon_scope` | 「=== N4 『;』续接作用域守卫: 16/16 通过 ===」EXIT=0——与材料修后 16/16 一致(材料红证修前 8 FAIL) | **本会话实跑** |
|
|
111
|
+
| `python -X utf8 -m compiler.tests.test_vm_resource_guard` | 「=== N149 VM 资源加固测试: 7/7 通过 ===」EXIT=0——含⑤合法 MUL 逐位不变锚、⑥加固参数量级锚(65536/16777216/10.0)、⑦RecursionError 既有契约;与材料修后 7/7 一致(材料红证旧码 0/6 绿) | **本会话实跑** |
|
|
112
|
+
| `python -X utf8 -m compiler.tests.test_compile_entry_n102_recursion` | 「=== N102 编译入口递归守卫: 4/4 通过 ===」EXIT=0——含②字节码入口结构化拒绝、③CLI exit=1 无 Traceback、④合法链不误伤;与材料修后 4/4 一致(材料红证旧码 1/4 绿) | **本会话实跑** |
|
|
113
|
+
| `python -X utf8 -m swarm.tests.test_rust_codegen` | 14 passed, 0 failed,EXIT=0——**本会话补跑**:F3 触及 condition_vm.py 属 SEMANTICS.md §5 双后端契约面,双后端等价在含全部四修复的现行树上成立;cargo 本机不可用,其独立形态⑨按套件自身环境声明跳过(诚实边界) | **本会话实跑** |
|
|
114
|
+
| 哑输入探针(`python -X utf8 -c` 即写即弃,无文件无副作用) | ①`compile_source('知足 验证单元。')`(VM 入口)→ ESCAPED `ValueError: could not convert string to float: '验证单元'`——**N152 开口第一手实证**;api 同源 success=True errors=[](双入口分裂);②vm_compile('德 累积信任值。') → ok=False 名实不符 / api success=True——N99 分裂现状第一手证实 | **本会话实跑** |
|
|
115
|
+
| `npm run gate` | **两跑如实记录**:①报告落盘前实跑——`VERDICT=PASS`、FAIL 规则数=0、R1/R2/R3/R4 全 PASS(`R4 非追踪=24,允许=24`,4 个新守卫 untracked 在允许面内)、受管 md 链接 `OK=228 BROKEN=0`、工作区索引一致(追踪 1979 件)、纪律渲染 9/9——与材料「npm run gate:通过」口径一致;②报告文件落盘并修正隐私命中后复跑——**R1 `凭据/密钥面;文件面=0 内容面=0` PASS、R2 私有数据面 PASS、R3 隐私文本 PASS(上一稿打回的隐私门禁项,修正稿实跑通过)**;R4 `非追踪件面 命中=1;非追踪=25,允许=24` FAIL——唯一命中件为本报告文件自身(`git status --porcelain` 核实:untracked 五件=四守卫+本报告,落盘前 24=24 临界、落盘后 +1 超限),属产出文件待登记的结构性状态而非内容违规,git add 登记后即恢复;登记/提交按纪律归编排会话裁决,本会话未擅自 git add/commit | **本会话实跑×2** |
|
|
116
|
+
| `git diff --numstat` + `git status --porcelain` + `git log --oneline -3 -- compiler/` | 改动面 = 六修复源文件(parser.py +63/-17、condition_vm.py +93/-10、pbc.py +9/-5、\_\_init\_\_.py +2/-2、api.py +12/-2、compiler.py +10/-2)+ SEMANTICS.md +6/-0 + test_loop_compile.py +26/-3 + 四 untracked 守卫(133/135/151/95 行)——与四项修复一一对应;compiler/ 末笔提交 fa9602ec(第 11 轮批次 43)——「批次 48-54 未触 compiler/、近期无 compiler 产品代码改动」口径证实,本轮全部改动为未提交工作树状态 | **本会话实跑** |
|
|
117
|
+
| npm test | **未运行**——TS 面零改动(git status 证实 src/ 未动),与材料口径一致 | 双方一致 |
|
|
118
|
+
|
|
119
|
+
**上游会话已运行、本会话未重跑的验证**(材料原文,如实区分):四项修复的全部红证(修前各一跑,红绿数字见第二节各守卫行——红证需旧码回退,守卫未回退不可重跑);F1 的黄金基线(16 模块归一化 diff 为空)与传导面实测(CLI/pbc/analyzer);F2 的黄金基线(17 模块 diff 唯一语义差异=⑧预授权还原)与朴素改法回归捕获;F3 的合法输入 battery 逐字节 diff(含 stash A/B 双向复证)与 14 套件+4 demo 一致性、6 案红守卫临时目录;F4 的双入口 battery 逐字节 diff(stash 隔离采集)与 19/19 套件 sweep;四区复核全部攻击复现(309 位/毒 token/90.3s 挂起/19.5GiB/9 类 .pbc/旁路族七形态/静默跳过注入等形态,均哑数据临时环境,测毕清理);recent 区六守卫基线数字与阴性抽查。
|
|
120
|
+
|
|
121
|
+
**git 工作树核对**(本会话 `git status --porcelain` / `git diff --numstat`):见上表末行——六源文件 + SEMANTICS.md + test_loop_compile.py + 四常驻守卫,与四项修复一一对应,无越域改动、无未声明触点。未做任何 commit。
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 五、遗留清单(12 个开口:high 1 / medium 10 / low 1;rejected 0)
|
|
126
|
+
|
|
127
|
+
### 留档项(12 项 = 材料留档 11 条 + 本报告补账 N152;★=本会话读核/探针在位性确认)
|
|
128
|
+
|
|
129
|
+
| # | where | 严重度 | 问题 | 留档理由 / 处置建议 |
|
|
130
|
+
|---|------|--------|------|----------------------|
|
|
131
|
+
| **N152**★(补账项——材料双清单遗漏,三区 confirmed) | compiler/compiler.py:193(对照 DE 分支 :180-184) | **high** | 知足非数值操作数裸 float() ValueError 逃逸 VM 编译主入口:约束表自带示例原句『知足 验证单元』即触发;compile_to_bytecode/pbc/analyzer/debugger 全使用方无兜底传导;api 入口同源 success=True 双入口分裂 | **下一轮优先速收候选**:对称包 try/except (TypeError, ValueError) 转 SyntaxError「知足 的操作数必须是数值」(与 DE 分支 :180-184 同款,一处即修、低风险);红守卫现成(『知足 验证单元。』vm 入口须结构化拒绝而非崩溃);连带评估『知足 inf。』操作数变 (inf,1) 的语义面(上游实测在案) |
|
|
132
|
+
| N98(+v8 N64 残面)★ | compiler/codegen.py:490-491 + api.py:319-326 | medium | 产物 NameError 面:条件表达式标识符裸名直译,终裁只验语法,success=True 产物一执行即 NameError;旗舰自测原句即触发;'x = None。' 语义漂移;SEMANTICS.md §5.1「产物不可运行」声明与实测不符需随本条更新 | 多轮留账(v8 N64 残面/v11/v17/v18 四轮维持);修复需产物侧内建名机制设计决策+旗舰自测回归先决策,非小修——**大设计决策项**;v3 N14(多术曰覆盖,下条)建议同批 |
|
|
133
|
+
| N99+N105★ | compiler/name_checker.py:322-328 + compiler/compiler.py:179-185 + condition_vm.py:293-301 | medium | 两入口语义相反(德标识符操作数/顶层 return/算术链结合性三例):约束表 example 原句即触发,契约不可信 | 统一口径需约束表 example 与旗舰自测回归联动的**语义专项**(确认清单在案:第三例算术链 api=16.0/VM=44.0);SEMANTICS.md §5.1 需随裁决更新——**大设计决策项** |
|
|
134
|
+
| v3 N7★ | compiler/api.py:27 + cli/\_\_init\_\_.py:37-38,126-129 | medium | strict 死配置:api.compile_source 全程零消费点,CLI --strict/--no-strict 假开关;compiler.py:265 真消费但语义不同——开关有效性因入口而异 | 二选一修法均属契约决策(接通则带警告源码默认翻红需回归套件;移除则破坏 CLI 契约)——**契约决策 deferred 待拍板** |
|
|
135
|
+
| v3 N14 | compiler/codegen.py:451 | medium | 多术曰块每块恒生成 def protocol_procedure(): 同名互相覆盖,前块静默死代码 | 块序号后缀命名或重名记错需联动 footer 调用点,codegen 专项——建议与 N98 修复同批 |
|
|
136
|
+
| N103+N106 | compiler/parser.py 右递归链 + lexer.py:433-466 | medium | 算术链右结合静默错值(api=2.0/VM=-4.0 两后端分叉)、'1e5' 截为 1.0 错十万倍、下划线数两形态词法分叉结论相反 | 结合性与数字字面量格式属**语言规范语义决策**(SEMANTICS.md 未定义);N102 崩溃面已本轮修复,语义面待拍板 |
|
|
137
|
+
| N95+N97(+N96 残面)★ | compiler/lexer.py:393-410 | medium | 「且/或/非」吞并族:无空格书写整串吞成单 IDENTIFIER,api 假成功、VM 执行 NameError;带空格同语义反被拒——同一语义两种写法结论相反;N96 残面(默认放行 0.9 vs 工作 0.3 被 0.05 拒)同属语义表矛盾 | **设计张力 deferred**:lexer.py:390-392 注释自证——运算词内嵌于名词是合法标识符(「阶乘」「加权」),全局断开会把含这些字素的合法名词操作数改为报错;需定向断开或名实校验诊断的设计决策后再修 |
|
|
138
|
+
| N153(0.15 静态上限旁路族)★ | compiler/name_checker.py:884,866-881,574-579,808-831 + condition_vm.py:210-213 | medium | 七形态两向使核心安全约束静态检查可旁路或误报:变量间接/拼串/若体切换/引号形态/「不为」误拒/循环形态/字符串赋值(+信任值字符串 TypeError 面) | 需先统一「静态切换检测 vs VM 运行时切换(condition_vm.py:212-213 与 name_checker.py:903 注释矛盾)」模型——半修致口径进一步分裂,**整族大设计决策专项**(第 11 轮 F2 已修直名/字符串赋值直写形态,本族为其旁路残面) |
|
|
139
|
+
| N151(F4 查表化误伤)★ | compiler/name_checker.py:830-831 + :834-856 | medium | 德/知足信任语义操作数被当情感权重拦截(伴侣空间「知足 0.7」=信任阈值原值被拒、工作空间「德 0.1」被拒)——第 11 轮 F4 查表化修复引入的假阳性正确性破坏 | 德/知足信任操作数是否受情感权重上限约束属**语义表决策**,需语义侧拍板后修(CONDITION_SPACE_RULES 自述 min_trust 0.7 却连阈值 0.7 无法表达) |
|
|
140
|
+
| N150(.pbc 反序列化) | compiler/pbc.py:63-109 | medium | 信任边界缺失:除 tag 枚举一处显式校验外全零校验,损坏/恶意 .pbc 使 IndexError/struct.error/UnicodeDecodeError/KeyError/TypeError 原始 traceback 穿透 CLI,截断短串被静默接受 | 结构化错误收敛**非语义决策、低风险红守卫现成**(9 类文件实测清单在案)——因本轮 4 修复名额已满转 deferred;建议与 N152(同域 compiler.py 编译入口崩溃面)及 N149 已修面(condition_vm/pbc 同域)同批搭车 |
|
|
141
|
+
| v3 N5+N104 | compiler/lexer.py:480-493 | medium | 字符串诊断面:到 EOF 未闭合零诊断且其后源码被吞假成功、吞换行后行号漂移(换行报错已修、行号递增未修);连带 v8 N64 残面(报错定位粗粒度退化)与 N105 残面(顶层 return 两后端分歧——已并入 N99+N105 条口径) | 一行级对称报错(EOF 分支追加「字符串未闭合」、消费换行时 line+=1)——与目标 5 同域诊断小修,槽位满转 deferred 可搭车 |
|
|
142
|
+
| 测试基建族+api 契约 low 族(v3 N16/N17/N18/N19/N20/N9/N10) | compiler/tests/test_func_compile.py:92-95 + test_loop_compile.py:63,75,100 + test_pbc.py:19-20 + test_full_pipeline.py:189 + test_compiler_c2.py:87 + api.py:170-175,202-203 | low | 套件静默跳过洞 4 处、伪造操作码 PUSH/STORE、恒真断言、文案不符、FakeBridge 建议零消费、validate_source 名不副实 | 修法均为一行级记账/对称报错,**随手批次清账**(v11 口径维持) |
|
|
143
|
+
|
|
144
|
+
### 大设计决策项处置建议(分诊汇总)
|
|
145
|
+
|
|
146
|
+
**优先级建议**(据材料处置线索汇总):
|
|
147
|
+
1. **下一轮速收批次(修复方向明确、低风险、守卫现成)**:**N152 知足对称防护(最优先——high 且一处即修,DE 分支同款模板 :180-184 在位)** → N150 .pbc 反序列化结构化收敛(9 类实测清单=现成红守卫用例)→ v3 N5+N104 字符串 EOF/行号(一行级对称报错)→ 测试基建 low 族(一行级记账,单轮可全清)。四项可单轮清空,建议按「编译入口崩溃族(N152)→ .pbc 输入信任族(N150)→ 诊断面(N5/N104)→ 测试记账族」分批。
|
|
148
|
+
2. **需先设计决策后代码(v8.md:175 先例口径)**:N99+N105 两入口语义统一(德标识符操作数/顶层 return/结合性三例裁决——约束表 example 与旗舰自测回归联动);N153 静态切换 vs 运行时切换模型统一(七形态整族,第 11 轮 F2 的旁路残面);N151 德/知足信任操作数是否受情感权重上限约束(语义表拍板);N103+N106 结合性与数字字面量格式(语言规范补入 SEMANTICS.md);N95+N97 断开集合设计张力(定向断开 vs 名实校验诊断);v3 N7 strict 契约二选一;N98+N14 产物侧内建名机制+多术曰命名(codegen 专项同批)。
|
|
149
|
+
3. **交叠提示**:N152 与 N150 同属「编译/执行入口对恶意或畸形输入的收敛」域(compiler.py 编译入口 / pbc.py 反序列化入口),宜同轮搭车;N151 与 N153 同属 0.15 上限语义表(CONDITION_SPACE_RULES),宜同一专项内拍板;N98 与 v3 N14 同为 codegen 产物面专项;N99 第三例(结合性)与 N103 同根——两入口统一口径时一并裁决,避免半修。
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 六、纪律合规声明
|
|
154
|
+
|
|
155
|
+
1. **定位先读索引**:本报告写作前已读 WORKSPACE_INDEX.md(按职责定位 compiler/ =「中文(术数)编译器——词法→语法→名实校验→白名单代码生成→验证终裁 + 结构性沙箱」,关键入口 api.py · SEMANTICS.md)与 compiler/SEMANTICS.md 全文(§1 内建名/§2 语句块边界〔含 N4 同局限接补记〕/§3 知足早退语义/§5 双后端契约),未做全盘浏览。
|
|
156
|
+
2. **结论引证**:所有修复与缺陷均引 path:line(材料口径为上游会话时点快照行号;本会话对 4 项修复落点逐一读核,行号微漂处双标——F3 _check_mul_scale 材料 :110-148 读核现行 :106-142、\_\_init\_\_.py 导出材料 :42,61,64 读核现行 :42/:61 两处命中、api.py strict 消费点材料 :211/:376 现行 :221/:386(F4 插入 +10 行下移)、F2 的 _parse_statement_or_block 函数头注释 :676 未含同局限接分支(行为以 :706-711 行注释与 SEMANTICS.md §2 为准)——以读核值为准);第三节证据要点摘自任务输入的四区复核材料(上游会话读码+实跑);第四节九项守卫/门禁/探针/git 核对为本会话第一手命令与输出;留档开口项在位性读核(codegen.py:490-491、compiler.py:193 与 :180-184 不对称、name_checker.py:866-881/:884-905/:574-579/:830-831/:834-856、pbc.py:63-109、lexer.py:390-410/:433-466、api.py strict 四消费点)与材料「在位/开口」结论一致(N152/N99 另有第一手哑输入探针实证)。
|
|
157
|
+
3. **编号续编与冲突裁决声明**:v17 用至 N147(v17.md:5 核实),本轮自 N148 续编。材料三区临时编号冲突由本报告会话统一裁决:守卫文件名/修复材料自述锚定的 N148(术曰,recent 区)/N149(VM 资源,backend 区)保留;材料留档清单已以其编号记录的 N150(pbc,backend 区)/N151(F4 误伤,recent 区)保留;三区同报的知足崩溃(recent N149/frontend N148/backend N148)顺延重编 **N152**;赋值切换旁路及同族三形态(recent N150+frontend N149/N150/N151,材料留档已并族)顺延族编 **N153**——全部重编在第三节逐项标注原暂编号,非暗改。
|
|
158
|
+
4. **材料账目遗漏如实补账**:知足崩溃条目三区 confirmed 却不在材料修复清单与留档清单——本报告未将其升格为已修、未伪造其缺失,而是第一手读核(compiler.py:193 裸 float 与 DE 分支防护不对称在位)+ 哑输入探针实证(vm 入口 ESCAPED ValueError / api success=True)后编 N152 补入第五节遗留清单并显式标注「材料双清单遗漏,本报告补账」。
|
|
159
|
+
5. **安全测试纪律合规**:材料全部攻击复现均在系统临时目录/哑数据环境(309 位字面量/毒 token/9 类 .pbc/旁路族七形态/静默跳过 monkeypatch 注入等形态,测毕清理,材料逐项声明,本报告照录);四个新守卫自带 tempfile 临时环境+finally 清理(材料口径);本报告会话仅运行守卫与门禁(自含临时环境)、读码与两条哑输入即写即弃探针(无文件无副作用),未触任何真实凭据/数据根、未修改任何源文件、未做任何攻击性复现。
|
|
160
|
+
6. **已修项勿重复报**:第 3 轮(compiler 深挖 5 修)与第 11 轮(compiler 二轮 5 修:数值解析崩溃族/条件空间赋值绕过/权重形态绕过/查表上限/终裁 compile 终验——黄金基线逐位一致法)已修清单未再报;backend 区结案记录条(v3 已修 7 项:N3/N6/N8/N11/N12/N13/N15)复测无现患计入第三节记录条,不占缺陷数;本轮 4 修中 N148/N149 为本轮新发现首修、v3 N4/N102 为历轮留档首修(v11 第五节开口转闭),均非重复修复;N152 与第 11 轮 F1 数值解析崩溃族同族但不同转换点(:193 ZHIZU vs F1 的 parser 裸 float 族),F1 防护不含此点(材料确认清单核实)故非重复报。
|
|
161
|
+
7. **如实记录**:四区 rejected 数组均为空(0 条证伪)如实声明;90.3s/19.5GiB 原始数值未重跑(耗时过长,沿用上轮口径、本轮以 25s 有界挂起复证)如实标注;N150 的 short_int 实为 struct.error(候选记 IndexError)与 trunc_str 静默接受(比候选记录更隐蔽)两处类型偏差照录;v3 N12 复测首轮误判改用合法形态后证实的流程曲折如实留痕;recent 区台账「N102 维持开口」为修复前状态(F4 修后已闭)如实注明;材料口径与本会话实跑一致处逐项注明一致、不一致处(行号微漂 4 处、:676 注释陈化)双标以读核为准——无一升格、无一虚闭。
|
|
162
|
+
8. **隐私脱敏**:全文只写仓库相对路径;材料的本机绝对路径(上游临时探针所在的系统临时区目录、用户目录形态)一律转录为「系统临时目录/临时区/临时探针」等占位描述,本声明句自身亦不转录任何路径形态(上一稿因脱敏说明句自含盘符路径形态被隐私门禁打回,本稿已修——如实留痕);哑输入探针用的『验证单元』『累积信任值』为仓库测试语料自带示例名(约束表 example 原句),非任何真实凭据;无任何 key/token/密钥字面量;gate 输出中的本机渲染落点路径不转录。
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 七、跳过项及原因
|
|
167
|
+
|
|
168
|
+
- **npm test 未运行**:TS 面零改动(本会话 `git status --porcelain` 证实 src/ 与 test/ 未动,改动面仅 compiler/ 的 python 件、SEMANTICS.md、test_loop_compile.py 与四守卫)——材料与本会话口径一致。
|
|
169
|
+
- **swarm cargo test 未单独运行**:Rust 面零改动(git status 证实 swarm/ 与 rust/ 未动;F3 对 condition_vm.py 的资源加固为 Python 侧新增防线,非 SEMANTICS §5「内建名或语义」契约变更);双后端等价以本会话补跑 `python -X utf8 -m swarm.tests.test_rust_codegen` → 14 passed, 0 failed EXIT=0 佐证(全量 211/211 亦含该套件 PASS);cargo 本机不可用,套件独立形态⑨按其自身环境声明跳过——诚实边界如实标注。
|
|
170
|
+
- **四项修复的守卫红证未重跑**:红证需旧码回退(F1/F2 守卫修前跑、F3 stash 三修复文件、F4 stash 两文件),多轮未提交改动的工作树上反复回退风险大于收益——以红绿数字材料口径(第二节各 verified_by 行:9 FAIL→16/16、8 FAIL→16/16、0/6 绿→6/6 绿→7/7、1/4 绿→4/4)+ 本会话四守卫绿态实跑 + 落点读核 + 全量 211/211 替代佐证,如实标注。
|
|
171
|
+
- **四区复核的攻击复现未在本会话重跑**:全部动态复现(309 位 OverflowError/毒 token ValueError/90.3s 挂起/19.5GiB 分配/9 类损坏 .pbc/旁路族七形态双入口实测/静默跳过 monkeypatch 注入/旗舰样例 exec NameError 等)为上游会话在临时环境执行且逐项声明清理(第三节证据要点来源均标注为材料原文);本会话以落点读核 + 两条哑输入探针(N152/N99 现状裁决所需)+ 六组守卫/门禁实跑替代,未重跑任何攻击场景。
|
|
172
|
+
- **N149 的 90.3s 挂起与 19.5GiB 分配全量实测未重跑**:耗时过长且占用内存过大——上游已实测在案(材料口径),本轮修复验证以 25s 有界挂起复证旧码红 + 修后毫秒级结构化拒绝替代,如实区分「复证」与「全量复测」。
|
|
173
|
+
- **v17 轮 hive 域遗留项不在本轮范围**:本轮为 compiler 域三圈第三站,hive 域 13 开口(v17 第五节)与 swarm 密钥面 N143 等 rust 项维持原留档口径,未在本轮复核(范围生效条件限定)。
|
|
174
|
+
- **12 项留档未修**:分诊与处置建议见第五节(速收批次 4 项 + 设计决策批次 7 族 + low 清账 1 族);本报告会话为报告撰写会话,不做修复。
|
|
175
|
+
- **gate 复跑的 R4 命中=1 未在本会话消化**:唯一命中件为本报告文件自身(untracked 非追踪 25>24,写报告前 24=24 临界 PASS)——登记(git add)即恢复,但按纪律「commit 需任务方指令」且 v17 先例不擅自登记,处置归编排会话提交前裁决;隐私门禁 R1/R2/R3 修正稿实跑全 PASS(上一稿打回项已闭)。
|
|
176
|
+
- **上一稿隐私门禁命中与修正留痕**:命中点为第六节第 8 条脱敏声明句自含盘符路径形态(为说明脱敏而转录了路径本身的自指失误)——本稿已改为纯占位描述并经形态扫描(盘符/用户目录/敏感文件名模式)零命中 + gate R3 实跑 PASS 双重复核。
|
|
177
|
+
- **git 未提交**:commit 需任务方指令;工作树保持六源文件补丁 + SEMANTICS.md + test_loop_compile.py 增改 + 四常驻守卫新增 + 本报告文件原状。
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
*报告依据:任务输入的第 18 轮材料(四区复核 29 confirmed / 0 rejected 明细及证据〔legacy 7 / recent 5 / frontend 7 / backend 10,三区临时编号冲突与知足条目双清单遗漏原文〕、四项修复的 where/缺陷面/修复/攻击前后对比/守卫/verified_by、留档未修 11 条、门禁结果);本报告会话的第一手核验:WORKSPACE_INDEX.md 与 compiler/SEMANTICS.md 读核、四项修复落盘读核(现行行号锚点:parser.py :452/:509 步骤号窄捕+:595/:602/:663 块解析+:677-718 同局限接、condition_vm.py :82-92/:99-103/:106-142/:175-216/:350 资源防线、pbc.py :138-151 墙钟、\_\_init\_\_.py :42/:61 导出、api.py :143-153 与 compiler.py :259-268 递归窄捕,均带 N148/N4/N149/N102 病灶注释)、留档开口项在位性读核(codegen.py:490-491、compiler.py:193/:180-184、name_checker.py:866-881/:884-905/:574-579/:830-856、pbc.py:63-109、lexer.py:390-410/:433-466、api.py :27/:210/:221/:386)、两条哑输入探针(N152 ESCAPED ValueError / N99 双入口分裂——开口现状第一手实证)、六组守卫/门禁实跑全绿(16/16、16/16、7/7、4/4、rust_codegen 14/14、全量 211/211 通过 5 跳过真实退出码 0)、npm run gate 实跑 PASS(R4 非追踪=24 允许=24、链接 228 全可达、索引 1979 件、渲染 9/9)、git 工作树核对(numstat 与四修复对应 + 末笔 fa9602ec 佐证批次 48-54 未触 compiler/)、报告脱敏复查。*
|
|
182
|
+
|
|
183
|
+
*自查双清单:①材料覆盖——四区 29 条目全部入文(legacy 7 / recent 5 / frontend 7 / backend 10;rejected 0 如实声明),跨区冗余 13 条合并说明(知足三区、N98/N99/v3 N7 各三区、四族两区),去重后 16 独立条目 = 新发现 6(N148-N153,三区冲突编号统一裁决并逐项标注原暂编号;high 3 / medium 3)+ legacy 复测 10(8 开口族 + 结案/台账记录条 2,均标注原轮次与复测轮数),数目吻合;材料留档 11 条 + 补账 N152 = 12 开口与第三/五节联动无多无少;4 补丁逐项六要素齐全(where 双标/缺陷面/修复/攻击前后对比/守卫/verified_by)且修复与状态联动(N148/N149/v3 N4/N102 转已修);任务留档复测重点(v3.md 与 v11.md 第五节逐项对照 + 已知较重欠账三件)全部有结论(执行摘要主题 4:N102/v3 N4 已闭、N98/N99/v3 N7 读核+探针维持开口、其余族在位性确认);门禁四项(python 211/211 通过 / rust_codegen 14/14 补跑 / npm test 未运行 / gate 两跑如实记录——落盘前 PASS、修正稿复跑 R1/R2/R3 隐私门禁全 PASS 而 R4 命中=1 为本报告文件待登记)与跳过原因一一对应;材料与本会话一致处逐项注明一致、不一致处(行号微漂、:676 注释陈化、N152 账目遗漏)双标以读核/实跑为准。②纪律——全部结论引 path:line 或注明材料来源,本会话第一手实跑命令与输出在第四节(全量 211/211 真实退出码 0、四守卫绿态数字、rust_codegen 14/14、gate 两跑结论、两条哑输入探针、git numstat/log、修复落点+留档项读核),未跑项(npm test/cargo/守卫红证/四区攻击复现/90.3s 全量复测/提交后 gate)无一冒充为已跑;新发现续编 N148-N153 与三区冲突裁决、N152 材料账目遗漏补账均显式声明而非暗改;行号微漂双标以读核为准;历轮已修清单(第 3 轮 5 修、第 11 轮 5 修、v3 已修 7 项)无一重复报,N152 与第 11 轮 F1 同族不同点已辨析;全文无本机绝对路径(上一稿隐私命中已修——脱敏声明句自含盘符路径形态的自指失误,本稿改纯占位描述并经形态扫描零命中 + gate R3 实跑 PASS 复核)、无真实凭据字面量(探针用名为仓库约束表示例原句),本会话未 commit、未触真实令牌库/数据根、未修改任何源文件、探针即写即弃。*
|