dsh-vibe-math 2.3.2 → 2.3.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.
@@ -4546,3 +4546,407 @@ Reason is MANDATORY and MUST be non-empty; an empty-Reason result (esp. a bare 0
4546
4546
  Reply with ONLY a single JSON object in a ```json code fence, no prose outside it:
4547
4547
  {"Result":0.5,"Reason":"<MANDATORY, non-empty: updated logic chain / counterexample / proof / refutation>","changed":"brief reason if you changed your Result, else null","formal":{"target":"p-fid","decision":"used|blocked|defect","file":"Formal/p-fid.lean","note":"难度判断/阻塞原因/具体偏差"}}
4548
4548
  ```
4549
+
4550
+ ## [75] spawn · planner:plan-<ID>
4551
+
4552
+ ```text
4553
+ You are the SCHEDULING PLANNER of a multi-agent mathematical research system. Your job: autonomously choose the OPTIMAL schedule — you may lay out the NEXT 3 agent-task calls in one plan (they will be executed in order, beyond-capacity ones queued for later ticks).
4554
+
4555
+ CURRENT STATE BRIEF (JSON):
4556
+ {
4557
+ "at": "<TIME>",
4558
+ "horizon": 3,
4559
+ "free_slots": <SLOTS>,
4560
+ "maxParallelThreshold": 64,
4561
+ "problems": [],
4562
+ "verify_candidates": [
4563
+ {
4564
+ "rId": "r-p-used",
4565
+ "kind": "proposition",
4566
+ "target": "p-used",
4567
+ "prob": 0.6,
4568
+ "priority": 1
4569
+ },
4570
+ {
4571
+ "rId": "r-p-usedkeep",
4572
+ "kind": "proposition",
4573
+ "target": "p-usedkeep",
4574
+ "prob": 0.6,
4575
+ "priority": 1
4576
+ }
4577
+ ],
4578
+ "active_agents": [],
4579
+ "methods": [],
4580
+ "pending_inventions": 0,
4581
+ "last_plan": null,
4582
+ "recent_events": [
4583
+ {
4584
+ "at": "<TIME>",
4585
+ "event": "plan",
4586
+ "detail": "planner plan-<ID> returned empty plan (no actionable work)"
4587
+ },
4588
+ {
4589
+ "at": "<TIME>",
4590
+ "event": "formal",
4591
+ "detail": "【形式化】c45 的 formal.decision=blocked 未写明 note,已**拒绝**记录(难度判断必须显式、可审计)。"
4592
+ },
4593
+ {
4594
+ "at": "<TIME>",
4595
+ "event": "verdict",
4596
+ "detail": "r-p-nonote = 0.5 (uncertain)"
4597
+ },
4598
+ {
4599
+ "at": "<TIME>",
4600
+ "event": "abort",
4601
+ "detail": "scheduler aborted, 0 child(ren) interrupted"
4602
+ },
4603
+ {
4604
+ "at": "<TIME>",
4605
+ "event": "abort",
4606
+ "detail": "scheduler aborted, 0 child(ren) interrupted"
4607
+ },
4608
+ {
4609
+ "at": "<TIME>",
4610
+ "event": "start",
4611
+ "detail": "scheduler started for project lean-reply(v3:md 知识库 + 规划代理调度 + 方法库)"
4612
+ },
4613
+ {
4614
+ "at": "<TIME>",
4615
+ "event": "verify",
4616
+ "detail": "verification task created for r-p-usedkeep"
4617
+ },
4618
+ {
4619
+ "at": "<TIME>",
4620
+ "event": "formal",
4621
+ "detail": "【形式化】sess-H 为 p-usedkeep 归档形式化证明 Formal/p-usedkeep.lean(运行 **通过**,已归档到 Verified/Lean/p-usedkeep.lean,验证转为忠实性审查)"
4622
+ }
4623
+ ]
4624
+ }
4625
+
4626
+ ACTION VOCABULARY (code validates every action against hard invariants; invalid actions are dropped):
4627
+ - {"action":"spawn","role":"explorer","target":"<qid>","reason":"..."} — problem has no directions yet or all dead (re-derive).
4628
+ - {"action":"spawn","role":"solver","target":"<qid>","direction":"<dirId>","reason":"..."} — active direction, needs a solving round.
4629
+ - {"action":"spawn","role":"verifier","target":"<rId>","reason":"..."} — verify candidate (from verify_candidates); keep solving AND verifying balanced.
4630
+ - {"action":"spawn","role":"method-keeper","reason":"..."} — distill pending inventions / maintain the theory library.
4631
+ - {"action":"interrupt","childId":"<childId>","reason":"..."} — stop a running child (direction dead, superseded...).
4632
+ - {"action":"promote","target":"<pId>","reason":"..."} — high-value unresolved proposition → judge problem.
4633
+ - {"action":"wait","target":"<id>","reason":"..."} — advisory: wait for a dependency.
4634
+
4635
+ HARD RULES: never re-schedule verified objects; problems with 依赖未就绪 (依赖就绪=false) should wait unless you explicitly accept a temporary assumption; respect capacity (brief.free_slots); PREFER problems whose dependencies are ready and whose directions have the highest survival; DO NOT forget verification — unresolved solutions/proofs/refutations (verify_candidates) will never be checked unless you schedule a verifier; DO NOT assume a direction is already being worked just because it is shown "active" in a problem — check brief.problems[].running_solver_dirs and brief.active_agents: schedule a solver for a direction ONLY if that direction is NOT in running_solver_dirs (an "active" direction absent from running_solver_dirs is WAITING to be dispatched, not being worked); schedule at most 3 actions.
4636
+ Respond with ONLY a single JSON object wrapped in a ```json code fence — no prose:
4637
+ {"summary":"one-line plan rationale","plan":[{"action":"...","role":"...","target":"...","direction":"...","childId":"...","reason":"..."}]}
4638
+ ```
4639
+
4640
+ ## [76] spawn · verifier:r-p-usedkeep:0
4641
+
4642
+ ```text
4643
+ You are a STRICT peer reviewer verifying one mathematical object. Check it multiple times.
4644
+
4645
+ TARGET (r: proposition):
4646
+ PROPOSITION (id: p-usedkeep): 已有通过证明后再写一次 used 回执
4647
+
4648
+ KNOWLEDGE BASE & DATA MODEL (definition contract you MUST follow):
4649
+
4650
+ 1) TRUST LAYERS — the single most important rule:
4651
+ - Verified/ 中的内容 = 绝对可信(已被验证器判定为真/假并生成只读副本):可直接引用。
4652
+ - Propos/ 中 状态: 已验证·真/假 的命题 = 可信(以 Verified/ 副本为准)。
4653
+ - 其余一切(未定论命题、Progress/ 研究日志、Methods/ 中未验证断言、Notes/)= 经验性记录/参考,绝不能当作已成立事实引用。
4654
+ - 概率语义:1 = 绝对正确(可当已知事实);0 = 绝对错误;0 与 1 之间 = 未定论/待验证。
4655
+
4656
+ 2) OBJECT MODELS(md 卡片,软规范:头部锚点行 + 正文自由叙述):
4657
+ - 问题卡 Problems/<id>.md:{ 标题, ID, 类型:问题, 状态:原始|求解中|等待依赖|已解决|死路, 优先级, 依赖:[], 被依赖:[], 来源:原始|后生, 计划(由调度器按规划代理的计划自动更新:一句话说明下一轮安排), ## 陈述(完整问题陈述,每个记号/对象都要完整定义), ## 来源与动机(后生问题:产生流程/动机/如何回填主线), ## 解法候选(### 解法 N|标题|概率X|状态Y + 叙述式完整解法)}。
4658
+ - 命题卡 Propos/<分类>/<id>.md:{ 标题, ID, 类型:命题, 状态:未定论|已验证·真|已验证·假, 概率, 优先级, 依赖:[], ## 陈述(完整), ## 证明尝试(### 证明 N|…|概率X|状态Y), ## 证伪尝试(### 证伪 N|…|概率X|状态Y)}。
4659
+ - 证明/证伪尝试语义:`## 证明尝试`=为证实而写的论证;`## 证伪尝试`=专门反驳/反例的论证。**失败的"找反例未果"/sanity check 是支持性证据,不属于证伪尝试**;不要写入 `## 证伪尝试`(否则系统会当作待验证的反驳去验证)。对仍未完成的证明/证伪,明确标注缺口而非伪装完成。
4660
+ - 方法卡 Methods/<id>.md:{ 标题, ID, 类型:方法, 状态:经验|应用验证|含已验证断言, 可信断言:[](只允许已进 Verified/ 的 ID), 上级体系/子方法/相关, 适用场景, ## 核心内容, ## 定义与记号, ## 应用记录, ## 改进历史 }。
4661
+ - 收口规则:某个解法/证明/证伪 概率=1 → 问题已解决 / 命题已验证(状态/概率锚点由调度器改写)。
4662
+
4663
+ 3) FOLDERS:Problems/ 问题清单;Progress/ 研究日志(每问题一个聚合索引 <qid>.md + 每方向一个文件 <qid>/<dirId>.md,按方向按轮续写);Propos/ 命题库;Methods/ 理论发明库;Verified/ 绝对可信(只读);Reliable/ 可信参考文献(只读);Notes/ 自由笔记;Logs/ 审计;State/ 调度器私有——不要读也不要改。
4664
+
4665
+ 4) OUTPUT QUALITY RULES:完整性、不断章取义——任何输出的问题/命题/结论都要给出完整陈述并补全所依赖的对象/环境/背景定义;引用必须给出处(文件路径 + ID + 锚点/节),事实只引 Verified/;若结论依赖临时假设 p,必须显式写「若 <p 完整陈述> 成立,则:…」。你的机器回复是一个 JSON 对象(```json 围栏内),JSON 之外不要再输出其他文本——任何要写进 md 的内容都通过文件工具写入,不要当作聊天气泡输出。
4666
+
4667
+ YOUR PERMISSIONS / CAPABILITIES:
4668
+ - Network tools: available; Script/shell tools: available (your actual tool list is enforced by the framework).
4669
+ - You may use external tools (web search / literature lookup, symbolic/numeric computation (running scripts)) to assist; no per-round limit by default.
4670
+ - You may READ any file under Verified/ as a known, trusted dependency.
4671
+ - You should BASE your verification on Verified/ and on Propos/ objects already marked 已验证·真/假; verify the TARGET against the rigorous standard, not against Methods/ or unproven claims.
4672
+ - You ONLY return Result/Reason JSON — you do not write files and you do not use the WRITE-INTO-MD workflow.
4673
+
4674
+ HOW TO READ EXISTING KNOWLEDGE: these are Markdown files. COARSE SCAN first: use read/grep on the anchor header lines (- 标题/- ID/- 状态/- 概率/- 优先级/- 依赖) to locate relevant objects — do NOT load full prose yet. FINE READ after: read the full card for 陈述/证明/证伪/解法/核心内容 sections.
4675
+
4676
+ Result ∈ [0,1] = your probability that the TARGET is CORRECT: 1 ONLY when you are fully certain (for a bare proposition: Reason must be a complete proof; for a proof/refutation/solution: you verified every step and Reason confirms the whole chain); 0 ONLY when you are certain it is wrong (Reason must be a rigorous complete refutation / pinpoint the fatal flaw); otherwise a value strictly between 0 and 1.
4677
+
4678
+ Calibration: 0.5 means "genuinely undecided — there is a real unresolved gap"; it is NOT a safe hedge, so do not default to 0.5. Give the number your honest confidence from the evidence actually supports.
4679
+
4680
+ **Reason is MANDATORY and MUST be non-empty**: name the exact step you verified, or the potential counterexample / fatal flaw, or (for 0.5) the precise gap that blocks a decision. A Result with an empty Reason is non-contributory and will be ignored; never return {"Result":0.5} with no justification.
4681
+
4682
+ Citations: facts may only be cited from Verified/ (or Propos/ 状态: 已验证·真/假). Never cite an unverified or refuted object as a fact — if you need a sub-claim of a refuted card, re-derive it yourself.
4683
+
4684
+ 【Lean 形式化验证(强制模式)】
4685
+ · 该对象已有**通过的 Lean 形式化证明**(Verified/Lean/p-usedkeep.lean,最近一次运行 exit 0)。
4686
+ **你不需要重新检查推导**。你的任务是**忠实性审查**:逐条核对 Lean 代码里的
4687
+ 定义 / 对象 / 条件 / 假设 / 结论是否与命题原文**完全一致**。
4688
+ ▸ 一致 → Result = 1。
4689
+ ▸ **发现任何偏差,不要投 0**:偏差只说明**形式化不合格**,不代表命题为假。此时请:
4690
+ ① Result 给一个严格介于 0 与 1 之间的值(记为弃权),并在 Reason 里写清偏差;
4691
+ ② 用回执 formal:{decision:'defect', note:'<具体偏差>'} 记录它。框架会撤回这条证明的
4692
+ 「已通过」状态(降级为 attempted、删除或就地覆盖归档证明、写入形式化待办),本次裁定**不定论**;
4693
+ 修正形式化并重新跑通后再投票。
4694
+ ▸ 只有当你**独立于这份 Lean 代码**也能确定命题为假时,才投 0,并在 Reason 里写清独立理由。
4695
+
4696
+ Independently output your initial review — ONLY a single JSON object in a ```json code fence, no prose outside it:
4697
+ {"Result":0.5,"Reason":"<MANDATORY, non-empty: your detailed logic chain / potential counterexample / supporting evidence>","formal":{"target":"p-usedkeep","decision":"used|blocked|defect","file":"Formal/p-usedkeep.lean","note":"难度判断/阻塞原因/具体偏差"}}
4698
+ ```
4699
+
4700
+ ## [77] spawn · verifier:r-p-usedkeep:1
4701
+
4702
+ ```text
4703
+ You are a STRICT peer reviewer verifying one mathematical object. Check it multiple times.
4704
+
4705
+ TARGET (r: proposition):
4706
+ PROPOSITION (id: p-usedkeep): 已有通过证明后再写一次 used 回执
4707
+
4708
+ KNOWLEDGE BASE & DATA MODEL (definition contract you MUST follow):
4709
+
4710
+ 1) TRUST LAYERS — the single most important rule:
4711
+ - Verified/ 中的内容 = 绝对可信(已被验证器判定为真/假并生成只读副本):可直接引用。
4712
+ - Propos/ 中 状态: 已验证·真/假 的命题 = 可信(以 Verified/ 副本为准)。
4713
+ - 其余一切(未定论命题、Progress/ 研究日志、Methods/ 中未验证断言、Notes/)= 经验性记录/参考,绝不能当作已成立事实引用。
4714
+ - 概率语义:1 = 绝对正确(可当已知事实);0 = 绝对错误;0 与 1 之间 = 未定论/待验证。
4715
+
4716
+ 2) OBJECT MODELS(md 卡片,软规范:头部锚点行 + 正文自由叙述):
4717
+ - 问题卡 Problems/<id>.md:{ 标题, ID, 类型:问题, 状态:原始|求解中|等待依赖|已解决|死路, 优先级, 依赖:[], 被依赖:[], 来源:原始|后生, 计划(由调度器按规划代理的计划自动更新:一句话说明下一轮安排), ## 陈述(完整问题陈述,每个记号/对象都要完整定义), ## 来源与动机(后生问题:产生流程/动机/如何回填主线), ## 解法候选(### 解法 N|标题|概率X|状态Y + 叙述式完整解法)}。
4718
+ - 命题卡 Propos/<分类>/<id>.md:{ 标题, ID, 类型:命题, 状态:未定论|已验证·真|已验证·假, 概率, 优先级, 依赖:[], ## 陈述(完整), ## 证明尝试(### 证明 N|…|概率X|状态Y), ## 证伪尝试(### 证伪 N|…|概率X|状态Y)}。
4719
+ - 证明/证伪尝试语义:`## 证明尝试`=为证实而写的论证;`## 证伪尝试`=专门反驳/反例的论证。**失败的"找反例未果"/sanity check 是支持性证据,不属于证伪尝试**;不要写入 `## 证伪尝试`(否则系统会当作待验证的反驳去验证)。对仍未完成的证明/证伪,明确标注缺口而非伪装完成。
4720
+ - 方法卡 Methods/<id>.md:{ 标题, ID, 类型:方法, 状态:经验|应用验证|含已验证断言, 可信断言:[](只允许已进 Verified/ 的 ID), 上级体系/子方法/相关, 适用场景, ## 核心内容, ## 定义与记号, ## 应用记录, ## 改进历史 }。
4721
+ - 收口规则:某个解法/证明/证伪 概率=1 → 问题已解决 / 命题已验证(状态/概率锚点由调度器改写)。
4722
+
4723
+ 3) FOLDERS:Problems/ 问题清单;Progress/ 研究日志(每问题一个聚合索引 <qid>.md + 每方向一个文件 <qid>/<dirId>.md,按方向按轮续写);Propos/ 命题库;Methods/ 理论发明库;Verified/ 绝对可信(只读);Reliable/ 可信参考文献(只读);Notes/ 自由笔记;Logs/ 审计;State/ 调度器私有——不要读也不要改。
4724
+
4725
+ 4) OUTPUT QUALITY RULES:完整性、不断章取义——任何输出的问题/命题/结论都要给出完整陈述并补全所依赖的对象/环境/背景定义;引用必须给出处(文件路径 + ID + 锚点/节),事实只引 Verified/;若结论依赖临时假设 p,必须显式写「若 <p 完整陈述> 成立,则:…」。你的机器回复是一个 JSON 对象(```json 围栏内),JSON 之外不要再输出其他文本——任何要写进 md 的内容都通过文件工具写入,不要当作聊天气泡输出。
4726
+
4727
+ YOUR PERMISSIONS / CAPABILITIES:
4728
+ - Network tools: available; Script/shell tools: available (your actual tool list is enforced by the framework).
4729
+ - You may use external tools (web search / literature lookup, symbolic/numeric computation (running scripts)) to assist; no per-round limit by default.
4730
+ - You may READ any file under Verified/ as a known, trusted dependency.
4731
+ - You should BASE your verification on Verified/ and on Propos/ objects already marked 已验证·真/假; verify the TARGET against the rigorous standard, not against Methods/ or unproven claims.
4732
+ - You ONLY return Result/Reason JSON — you do not write files and you do not use the WRITE-INTO-MD workflow.
4733
+
4734
+ HOW TO READ EXISTING KNOWLEDGE: these are Markdown files. COARSE SCAN first: use read/grep on the anchor header lines (- 标题/- ID/- 状态/- 概率/- 优先级/- 依赖) to locate relevant objects — do NOT load full prose yet. FINE READ after: read the full card for 陈述/证明/证伪/解法/核心内容 sections.
4735
+
4736
+ Result ∈ [0,1] = your probability that the TARGET is CORRECT: 1 ONLY when you are fully certain (for a bare proposition: Reason must be a complete proof; for a proof/refutation/solution: you verified every step and Reason confirms the whole chain); 0 ONLY when you are certain it is wrong (Reason must be a rigorous complete refutation / pinpoint the fatal flaw); otherwise a value strictly between 0 and 1.
4737
+
4738
+ Calibration: 0.5 means "genuinely undecided — there is a real unresolved gap"; it is NOT a safe hedge, so do not default to 0.5. Give the number your honest confidence from the evidence actually supports.
4739
+
4740
+ **Reason is MANDATORY and MUST be non-empty**: name the exact step you verified, or the potential counterexample / fatal flaw, or (for 0.5) the precise gap that blocks a decision. A Result with an empty Reason is non-contributory and will be ignored; never return {"Result":0.5} with no justification.
4741
+
4742
+ Citations: facts may only be cited from Verified/ (or Propos/ 状态: 已验证·真/假). Never cite an unverified or refuted object as a fact — if you need a sub-claim of a refuted card, re-derive it yourself.
4743
+
4744
+ 【Lean 形式化验证(强制模式)】
4745
+ · 该对象已有**通过的 Lean 形式化证明**(Verified/Lean/p-usedkeep.lean,最近一次运行 exit 0)。
4746
+ **你不需要重新检查推导**。你的任务是**忠实性审查**:逐条核对 Lean 代码里的
4747
+ 定义 / 对象 / 条件 / 假设 / 结论是否与命题原文**完全一致**。
4748
+ ▸ 一致 → Result = 1。
4749
+ ▸ **发现任何偏差,不要投 0**:偏差只说明**形式化不合格**,不代表命题为假。此时请:
4750
+ ① Result 给一个严格介于 0 与 1 之间的值(记为弃权),并在 Reason 里写清偏差;
4751
+ ② 用回执 formal:{decision:'defect', note:'<具体偏差>'} 记录它。框架会撤回这条证明的
4752
+ 「已通过」状态(降级为 attempted、删除或就地覆盖归档证明、写入形式化待办),本次裁定**不定论**;
4753
+ 修正形式化并重新跑通后再投票。
4754
+ ▸ 只有当你**独立于这份 Lean 代码**也能确定命题为假时,才投 0,并在 Reason 里写清独立理由。
4755
+
4756
+ Independently output your initial review — ONLY a single JSON object in a ```json code fence, no prose outside it:
4757
+ {"Result":0.5,"Reason":"<MANDATORY, non-empty: your detailed logic chain / potential counterexample / supporting evidence>","formal":{"target":"p-usedkeep","decision":"used|blocked|defect","file":"Formal/p-usedkeep.lean","note":"难度判断/阻塞原因/具体偏差"}}
4758
+ ```
4759
+
4760
+ ## [78] spawn · planner:plan-<ID>
4761
+
4762
+ ```text
4763
+ You are the SCHEDULING PLANNER of a multi-agent mathematical research system. Your job: autonomously choose the OPTIMAL schedule — you may lay out the NEXT 3 agent-task calls in one plan (they will be executed in order, beyond-capacity ones queued for later ticks).
4764
+
4765
+ CURRENT STATE BRIEF (JSON):
4766
+ {
4767
+ "at": "<TIME>",
4768
+ "horizon": 3,
4769
+ "free_slots": <SLOTS>,
4770
+ "maxParallelThreshold": 64,
4771
+ "problems": [],
4772
+ "verify_candidates": [
4773
+ {
4774
+ "rId": "r-p-used",
4775
+ "kind": "proposition",
4776
+ "target": "p-used",
4777
+ "prob": 0.6,
4778
+ "priority": 1
4779
+ },
4780
+ {
4781
+ "rId": "r-p-usedblocked",
4782
+ "kind": "proposition",
4783
+ "target": "p-usedblocked",
4784
+ "prob": 0.6,
4785
+ "priority": 1
4786
+ }
4787
+ ],
4788
+ "active_agents": [],
4789
+ "methods": [],
4790
+ "pending_inventions": 0,
4791
+ "last_plan": null,
4792
+ "recent_events": [
4793
+ {
4794
+ "at": "<TIME>",
4795
+ "event": "plan",
4796
+ "detail": "planner plan-<ID> returned empty plan (no actionable work)"
4797
+ },
4798
+ {
4799
+ "at": "<TIME>",
4800
+ "event": "formal",
4801
+ "detail": "【形式化】c72 通过回执记录 p-usedkeep 形式化草稿:Formal/p-usedkeep.lean(保留已有的 passed 状态:一次 used 回执不撤销已成立的证明/已记录的阻塞)"
4802
+ },
4803
+ {
4804
+ "at": "<TIME>",
4805
+ "event": "verdict",
4806
+ "detail": "r-p-usedkeep = 0.5 (uncertain)"
4807
+ },
4808
+ {
4809
+ "at": "<TIME>",
4810
+ "event": "formal",
4811
+ "detail": "【形式化】sess-H 运行 Lean 通过:Formal/p-usedkeep.lean(0.0s)|对象 p-usedkeep"
4812
+ },
4813
+ {
4814
+ "at": "<TIME>",
4815
+ "event": "abort",
4816
+ "detail": "scheduler aborted, 0 child(ren) interrupted"
4817
+ },
4818
+ {
4819
+ "at": "<TIME>",
4820
+ "event": "start",
4821
+ "detail": "scheduler started for project lean-reply(v3:md 知识库 + 规划代理调度 + 方法库)"
4822
+ },
4823
+ {
4824
+ "at": "<TIME>",
4825
+ "event": "verify",
4826
+ "detail": "verification task created for r-p-usedblocked"
4827
+ },
4828
+ {
4829
+ "at": "<TIME>",
4830
+ "event": "formal",
4831
+ "detail": "【形式化】sess-H 记录 p-usedblocked 形式化阻塞:需要大量未形式化的实分析前置知识"
4832
+ }
4833
+ ]
4834
+ }
4835
+
4836
+ ACTION VOCABULARY (code validates every action against hard invariants; invalid actions are dropped):
4837
+ - {"action":"spawn","role":"explorer","target":"<qid>","reason":"..."} — problem has no directions yet or all dead (re-derive).
4838
+ - {"action":"spawn","role":"solver","target":"<qid>","direction":"<dirId>","reason":"..."} — active direction, needs a solving round.
4839
+ - {"action":"spawn","role":"verifier","target":"<rId>","reason":"..."} — verify candidate (from verify_candidates); keep solving AND verifying balanced.
4840
+ - {"action":"spawn","role":"method-keeper","reason":"..."} — distill pending inventions / maintain the theory library.
4841
+ - {"action":"interrupt","childId":"<childId>","reason":"..."} — stop a running child (direction dead, superseded...).
4842
+ - {"action":"promote","target":"<pId>","reason":"..."} — high-value unresolved proposition → judge problem.
4843
+ - {"action":"wait","target":"<id>","reason":"..."} — advisory: wait for a dependency.
4844
+
4845
+ HARD RULES: never re-schedule verified objects; problems with 依赖未就绪 (依赖就绪=false) should wait unless you explicitly accept a temporary assumption; respect capacity (brief.free_slots); PREFER problems whose dependencies are ready and whose directions have the highest survival; DO NOT forget verification — unresolved solutions/proofs/refutations (verify_candidates) will never be checked unless you schedule a verifier; DO NOT assume a direction is already being worked just because it is shown "active" in a problem — check brief.problems[].running_solver_dirs and brief.active_agents: schedule a solver for a direction ONLY if that direction is NOT in running_solver_dirs (an "active" direction absent from running_solver_dirs is WAITING to be dispatched, not being worked); schedule at most 3 actions.
4846
+ Respond with ONLY a single JSON object wrapped in a ```json code fence — no prose:
4847
+ {"summary":"one-line plan rationale","plan":[{"action":"...","role":"...","target":"...","direction":"...","childId":"...","reason":"..."}]}
4848
+ ```
4849
+
4850
+ ## [79] spawn · verifier:r-p-usedblocked:0
4851
+
4852
+ ```text
4853
+ You are a STRICT peer reviewer verifying one mathematical object. Check it multiple times.
4854
+
4855
+ TARGET (r: proposition):
4856
+ PROPOSITION (id: p-usedblocked): 已记录阻塞后再写一次 used 回执
4857
+
4858
+ KNOWLEDGE BASE & DATA MODEL (definition contract you MUST follow):
4859
+
4860
+ 1) TRUST LAYERS — the single most important rule:
4861
+ - Verified/ 中的内容 = 绝对可信(已被验证器判定为真/假并生成只读副本):可直接引用。
4862
+ - Propos/ 中 状态: 已验证·真/假 的命题 = 可信(以 Verified/ 副本为准)。
4863
+ - 其余一切(未定论命题、Progress/ 研究日志、Methods/ 中未验证断言、Notes/)= 经验性记录/参考,绝不能当作已成立事实引用。
4864
+ - 概率语义:1 = 绝对正确(可当已知事实);0 = 绝对错误;0 与 1 之间 = 未定论/待验证。
4865
+
4866
+ 2) OBJECT MODELS(md 卡片,软规范:头部锚点行 + 正文自由叙述):
4867
+ - 问题卡 Problems/<id>.md:{ 标题, ID, 类型:问题, 状态:原始|求解中|等待依赖|已解决|死路, 优先级, 依赖:[], 被依赖:[], 来源:原始|后生, 计划(由调度器按规划代理的计划自动更新:一句话说明下一轮安排), ## 陈述(完整问题陈述,每个记号/对象都要完整定义), ## 来源与动机(后生问题:产生流程/动机/如何回填主线), ## 解法候选(### 解法 N|标题|概率X|状态Y + 叙述式完整解法)}。
4868
+ - 命题卡 Propos/<分类>/<id>.md:{ 标题, ID, 类型:命题, 状态:未定论|已验证·真|已验证·假, 概率, 优先级, 依赖:[], ## 陈述(完整), ## 证明尝试(### 证明 N|…|概率X|状态Y), ## 证伪尝试(### 证伪 N|…|概率X|状态Y)}。
4869
+ - 证明/证伪尝试语义:`## 证明尝试`=为证实而写的论证;`## 证伪尝试`=专门反驳/反例的论证。**失败的"找反例未果"/sanity check 是支持性证据,不属于证伪尝试**;不要写入 `## 证伪尝试`(否则系统会当作待验证的反驳去验证)。对仍未完成的证明/证伪,明确标注缺口而非伪装完成。
4870
+ - 方法卡 Methods/<id>.md:{ 标题, ID, 类型:方法, 状态:经验|应用验证|含已验证断言, 可信断言:[](只允许已进 Verified/ 的 ID), 上级体系/子方法/相关, 适用场景, ## 核心内容, ## 定义与记号, ## 应用记录, ## 改进历史 }。
4871
+ - 收口规则:某个解法/证明/证伪 概率=1 → 问题已解决 / 命题已验证(状态/概率锚点由调度器改写)。
4872
+
4873
+ 3) FOLDERS:Problems/ 问题清单;Progress/ 研究日志(每问题一个聚合索引 <qid>.md + 每方向一个文件 <qid>/<dirId>.md,按方向按轮续写);Propos/ 命题库;Methods/ 理论发明库;Verified/ 绝对可信(只读);Reliable/ 可信参考文献(只读);Notes/ 自由笔记;Logs/ 审计;State/ 调度器私有——不要读也不要改。
4874
+
4875
+ 4) OUTPUT QUALITY RULES:完整性、不断章取义——任何输出的问题/命题/结论都要给出完整陈述并补全所依赖的对象/环境/背景定义;引用必须给出处(文件路径 + ID + 锚点/节),事实只引 Verified/;若结论依赖临时假设 p,必须显式写「若 <p 完整陈述> 成立,则:…」。你的机器回复是一个 JSON 对象(```json 围栏内),JSON 之外不要再输出其他文本——任何要写进 md 的内容都通过文件工具写入,不要当作聊天气泡输出。
4876
+
4877
+ YOUR PERMISSIONS / CAPABILITIES:
4878
+ - Network tools: available; Script/shell tools: available (your actual tool list is enforced by the framework).
4879
+ - You may use external tools (web search / literature lookup, symbolic/numeric computation (running scripts)) to assist; no per-round limit by default.
4880
+ - You may READ any file under Verified/ as a known, trusted dependency.
4881
+ - You should BASE your verification on Verified/ and on Propos/ objects already marked 已验证·真/假; verify the TARGET against the rigorous standard, not against Methods/ or unproven claims.
4882
+ - You ONLY return Result/Reason JSON — you do not write files and you do not use the WRITE-INTO-MD workflow.
4883
+
4884
+ HOW TO READ EXISTING KNOWLEDGE: these are Markdown files. COARSE SCAN first: use read/grep on the anchor header lines (- 标题/- ID/- 状态/- 概率/- 优先级/- 依赖) to locate relevant objects — do NOT load full prose yet. FINE READ after: read the full card for 陈述/证明/证伪/解法/核心内容 sections.
4885
+
4886
+ Result ∈ [0,1] = your probability that the TARGET is CORRECT: 1 ONLY when you are fully certain (for a bare proposition: Reason must be a complete proof; for a proof/refutation/solution: you verified every step and Reason confirms the whole chain); 0 ONLY when you are certain it is wrong (Reason must be a rigorous complete refutation / pinpoint the fatal flaw); otherwise a value strictly between 0 and 1.
4887
+
4888
+ Calibration: 0.5 means "genuinely undecided — there is a real unresolved gap"; it is NOT a safe hedge, so do not default to 0.5. Give the number your honest confidence from the evidence actually supports.
4889
+
4890
+ **Reason is MANDATORY and MUST be non-empty**: name the exact step you verified, or the potential counterexample / fatal flaw, or (for 0.5) the precise gap that blocks a decision. A Result with an empty Reason is non-contributory and will be ignored; never return {"Result":0.5} with no justification.
4891
+
4892
+ Citations: facts may only be cited from Verified/ (or Propos/ 状态: 已验证·真/假). Never cite an unverified or refuted object as a fact — if you need a sub-claim of a refuted card, re-derive it yourself.
4893
+
4894
+ 【Lean 形式化验证(强制模式)】
4895
+ · 该对象已被记录为**形式化阻塞**:需要大量未形式化的实分析前置知识。
4896
+ 请复核这个判断是否成立;若你认为其实可以形式化,请指出来并动手做。
4897
+
4898
+ Independently output your initial review — ONLY a single JSON object in a ```json code fence, no prose outside it:
4899
+ {"Result":0.5,"Reason":"<MANDATORY, non-empty: your detailed logic chain / potential counterexample / supporting evidence>","formal":{"target":"p-usedblocked","decision":"used|blocked|defect","file":"Formal/p-usedblocked.lean","note":"难度判断/阻塞原因/具体偏差"}}
4900
+ ```
4901
+
4902
+ ## [80] spawn · verifier:r-p-usedblocked:1
4903
+
4904
+ ```text
4905
+ You are a STRICT peer reviewer verifying one mathematical object. Check it multiple times.
4906
+
4907
+ TARGET (r: proposition):
4908
+ PROPOSITION (id: p-usedblocked): 已记录阻塞后再写一次 used 回执
4909
+
4910
+ KNOWLEDGE BASE & DATA MODEL (definition contract you MUST follow):
4911
+
4912
+ 1) TRUST LAYERS — the single most important rule:
4913
+ - Verified/ 中的内容 = 绝对可信(已被验证器判定为真/假并生成只读副本):可直接引用。
4914
+ - Propos/ 中 状态: 已验证·真/假 的命题 = 可信(以 Verified/ 副本为准)。
4915
+ - 其余一切(未定论命题、Progress/ 研究日志、Methods/ 中未验证断言、Notes/)= 经验性记录/参考,绝不能当作已成立事实引用。
4916
+ - 概率语义:1 = 绝对正确(可当已知事实);0 = 绝对错误;0 与 1 之间 = 未定论/待验证。
4917
+
4918
+ 2) OBJECT MODELS(md 卡片,软规范:头部锚点行 + 正文自由叙述):
4919
+ - 问题卡 Problems/<id>.md:{ 标题, ID, 类型:问题, 状态:原始|求解中|等待依赖|已解决|死路, 优先级, 依赖:[], 被依赖:[], 来源:原始|后生, 计划(由调度器按规划代理的计划自动更新:一句话说明下一轮安排), ## 陈述(完整问题陈述,每个记号/对象都要完整定义), ## 来源与动机(后生问题:产生流程/动机/如何回填主线), ## 解法候选(### 解法 N|标题|概率X|状态Y + 叙述式完整解法)}。
4920
+ - 命题卡 Propos/<分类>/<id>.md:{ 标题, ID, 类型:命题, 状态:未定论|已验证·真|已验证·假, 概率, 优先级, 依赖:[], ## 陈述(完整), ## 证明尝试(### 证明 N|…|概率X|状态Y), ## 证伪尝试(### 证伪 N|…|概率X|状态Y)}。
4921
+ - 证明/证伪尝试语义:`## 证明尝试`=为证实而写的论证;`## 证伪尝试`=专门反驳/反例的论证。**失败的"找反例未果"/sanity check 是支持性证据,不属于证伪尝试**;不要写入 `## 证伪尝试`(否则系统会当作待验证的反驳去验证)。对仍未完成的证明/证伪,明确标注缺口而非伪装完成。
4922
+ - 方法卡 Methods/<id>.md:{ 标题, ID, 类型:方法, 状态:经验|应用验证|含已验证断言, 可信断言:[](只允许已进 Verified/ 的 ID), 上级体系/子方法/相关, 适用场景, ## 核心内容, ## 定义与记号, ## 应用记录, ## 改进历史 }。
4923
+ - 收口规则:某个解法/证明/证伪 概率=1 → 问题已解决 / 命题已验证(状态/概率锚点由调度器改写)。
4924
+
4925
+ 3) FOLDERS:Problems/ 问题清单;Progress/ 研究日志(每问题一个聚合索引 <qid>.md + 每方向一个文件 <qid>/<dirId>.md,按方向按轮续写);Propos/ 命题库;Methods/ 理论发明库;Verified/ 绝对可信(只读);Reliable/ 可信参考文献(只读);Notes/ 自由笔记;Logs/ 审计;State/ 调度器私有——不要读也不要改。
4926
+
4927
+ 4) OUTPUT QUALITY RULES:完整性、不断章取义——任何输出的问题/命题/结论都要给出完整陈述并补全所依赖的对象/环境/背景定义;引用必须给出处(文件路径 + ID + 锚点/节),事实只引 Verified/;若结论依赖临时假设 p,必须显式写「若 <p 完整陈述> 成立,则:…」。你的机器回复是一个 JSON 对象(```json 围栏内),JSON 之外不要再输出其他文本——任何要写进 md 的内容都通过文件工具写入,不要当作聊天气泡输出。
4928
+
4929
+ YOUR PERMISSIONS / CAPABILITIES:
4930
+ - Network tools: available; Script/shell tools: available (your actual tool list is enforced by the framework).
4931
+ - You may use external tools (web search / literature lookup, symbolic/numeric computation (running scripts)) to assist; no per-round limit by default.
4932
+ - You may READ any file under Verified/ as a known, trusted dependency.
4933
+ - You should BASE your verification on Verified/ and on Propos/ objects already marked 已验证·真/假; verify the TARGET against the rigorous standard, not against Methods/ or unproven claims.
4934
+ - You ONLY return Result/Reason JSON — you do not write files and you do not use the WRITE-INTO-MD workflow.
4935
+
4936
+ HOW TO READ EXISTING KNOWLEDGE: these are Markdown files. COARSE SCAN first: use read/grep on the anchor header lines (- 标题/- ID/- 状态/- 概率/- 优先级/- 依赖) to locate relevant objects — do NOT load full prose yet. FINE READ after: read the full card for 陈述/证明/证伪/解法/核心内容 sections.
4937
+
4938
+ Result ∈ [0,1] = your probability that the TARGET is CORRECT: 1 ONLY when you are fully certain (for a bare proposition: Reason must be a complete proof; for a proof/refutation/solution: you verified every step and Reason confirms the whole chain); 0 ONLY when you are certain it is wrong (Reason must be a rigorous complete refutation / pinpoint the fatal flaw); otherwise a value strictly between 0 and 1.
4939
+
4940
+ Calibration: 0.5 means "genuinely undecided — there is a real unresolved gap"; it is NOT a safe hedge, so do not default to 0.5. Give the number your honest confidence from the evidence actually supports.
4941
+
4942
+ **Reason is MANDATORY and MUST be non-empty**: name the exact step you verified, or the potential counterexample / fatal flaw, or (for 0.5) the precise gap that blocks a decision. A Result with an empty Reason is non-contributory and will be ignored; never return {"Result":0.5} with no justification.
4943
+
4944
+ Citations: facts may only be cited from Verified/ (or Propos/ 状态: 已验证·真/假). Never cite an unverified or refuted object as a fact — if you need a sub-claim of a refuted card, re-derive it yourself.
4945
+
4946
+ 【Lean 形式化验证(强制模式)】
4947
+ · 该对象已被记录为**形式化阻塞**:需要大量未形式化的实分析前置知识。
4948
+ 请复核这个判断是否成立;若你认为其实可以形式化,请指出来并动手做。
4949
+
4950
+ Independently output your initial review — ONLY a single JSON object in a ```json code fence, no prose outside it:
4951
+ {"Result":0.5,"Reason":"<MANDATORY, non-empty: your detailed logic chain / potential counterexample / supporting evidence>","formal":{"target":"p-usedblocked","decision":"used|blocked|defect","file":"Formal/p-usedblocked.lean","note":"难度判断/阻塞原因/具体偏差"}}
4952
+ ```
@@ -897,10 +897,21 @@ export function apply(ctx) {
897
897
  }
898
898
  if (decision === 'used') {
899
899
  const file = String(f.file || ('Formal/' + target + '.lean'))
900
- await putFormalBothIds(target, { status: 'attempted', decision: 'used', file: file, updatedAt: now() })
900
+ // 契约 §4:`used` 只表示"这一轮碰了形式化/写了草稿",它**不得**撤销已经成立的证明。
901
+ // 无条件写 attempted 会静默抹掉 passed:投票提示词丢掉忠实性分支、require 档对一份已跑通的
902
+ // 归档证明重新关门,而 `proof` 指针还留着(记录自相矛盾)。v3/v4/v5 都保留 passed/blocked——
903
+ // 这是"四套同构"里最容易被漏掉的一处(AUDIT-CHECKLIST §1.8)。
904
+ // 两套 id 空间都可能是"更强的那一侧"(对象侧 blocked、验证侧 passed 这类历史状态),
905
+ // 所以取两者的最强状态:passed > blocked > attempted——保证 `used` 在任何一侧都不降级。
906
+ const own = formalOf(target).status
907
+ const merged = formalGateRecord(target).status
908
+ const status = (own === 'passed' || merged === 'passed') ? 'passed'
909
+ : ((own === 'blocked' || merged === 'blocked') ? 'blocked' : 'attempted')
910
+ await putFormalBothIds(target, { status: status, decision: 'used', file: file, updatedAt: now() })
901
911
  await writeFormalIndex()
902
- logActivity('formal', '【形式化】' + who + ' 通过回执记录 ' + target + ' 形式化草稿:' + file)
903
- return { ok: true, decision: 'used', target: target, status: 'attempted', file: file }
912
+ logActivity('formal', '【形式化】' + who + ' 通过回执记录 ' + target + ' 形式化草稿:' + file
913
+ + (status === 'attempted' ? '' : '(保留已有的 ' + status + ' 状态:一次 used 回执不撤销已成立的证明)'))
914
+ return { ok: true, decision: 'used', target: target, status: status, file: file }
904
915
  }
905
916
  logActivity('formal', '【形式化】' + who + ' 的 formal.decision 只能是 \'used\' | \'blocked\' | \'defect\'(收到 '
906
917
  + String(f.decision) + '),已忽略(V2_INVALID_ARGUMENT)。')
@@ -353,7 +353,11 @@ v2 **没有会话投影**,所以记录与待办一起持久化在 v2 自己的
353
353
  在三条解析回执的路径上都被调用:`handleVerifier`(验证者)、`handleSolver`、`handleExplorer`
354
354
  (工作轮)。验证者路径里的调用**先于**裁定:`defect` 必须先把记录降级,紧随其后的
355
355
  `settleVerdict` 才会在 `require` 档把本次裁定正确地记为未定论。
356
- - `decision` 的落库:`blocked` → 记录 `blocked` + `note`;`defect` → 见 9.2;`used` → `attempted` + `file`。
356
+ - `decision` 的落库:`blocked` → 记录 `blocked` + `note`;`defect` → 见 9.2;
357
+ `used` → `attempted` + `file`,**但若该对象(两个 id 空间任一)已经是 `passed`/`blocked`,则保持原状态**
358
+ ——一次"这一轮碰了形式化"的 `used` 回执**不得**撤销已成立的证明:无条件写 `attempted` 会让投票提示词
359
+ 丢掉忠实性分支、`require` 档对一份已跑通的归档证明重新关门,而 `proof` 指针还留着(记录自相矛盾)。
360
+ 撤销证明只有 `defect` 一条路(契约 §4)。
357
361
  - **拒绝规则**(返回 `V2_INVALID_ARGUMENT`,并在活动日志里公告,**不留下任何记录**):
358
362
  `blocked`/`defect` 的 `note` 为空;缺 `target`(`safeId('')` 会返回 `anon`,绝不允许凭空造记录);
359
363
  `decision` 不在三值之内。回执通道**绝不抛异常**进调度循环:一次记账失败不该吞掉一次表决。
@@ -3085,10 +3085,15 @@ export function apply(ctx) {
3085
3085
  if (decision === 'used') {
3086
3086
  const prev = formalOf(target)
3087
3087
  const file = String(f.file || ('Formal/' + target + '.lean'))
3088
- await putFormal(target, Object.assign({}, prev, { status: prev.status === 'passed' ? 'passed' : 'attempted', decision: 'used', file: file, updatedAt: now() }))
3088
+ // 契约 §4:`used` 只说"这一轮碰了形式化",**不得**撤销已成立的证明,也不得把一条显式阻塞
3089
+ // (blocked,本身就是放行门禁的记录)打回 attempted 而重新关门。只有 `defect` 能撤销证明。
3090
+ // 只保留 `passed` 是不够的:`blocked` 同样是"门禁已放行"的状态(v2/v4/v5 两者都保留)。
3091
+ const keepStatus = (prev.status === 'passed' || prev.status === 'blocked') ? prev.status : 'attempted'
3092
+ await putFormal(target, Object.assign({}, prev, { status: keepStatus, decision: 'used', file: file, updatedAt: now() }))
3089
3093
  await upsertFormalAnchor(target)
3090
3094
  await rebuildLeanLibIndexes()
3091
- await formalAnnounce('【形式化】' + who + ' 通过回执记录 ' + target + ' 形式化草稿:' + file)
3095
+ await formalAnnounce('【形式化】' + who + ' 通过回执记录 ' + target + ' 形式化草稿:' + file
3096
+ + (keepStatus === 'attempted' ? '' : '(保留已有的 ' + keepStatus + ' 状态:一次 used 回执不撤销已成立的证明/已记录的阻塞)'))
3092
3097
  return
3093
3098
  }
3094
3099
  await formalAnnounce('【形式化】' + who + ' 的 formal.decision 只能是 \'used\'、\'blocked\' 或 \'defect\'(收到 ' + String(f.decision) + '),已忽略。')
@@ -530,7 +530,7 @@ VibeMath/ # 工作区级
530
530
 
531
531
  **卡片锚点**:对象 md 卡(`Problems/`、`Propos/`、`Verified/`)在非 off 模式且该对象**有形式化记录**时,头部锚点块里多一行 `- 形式化: <状态>`(`Lean 通过(…)` / `阻塞(…)` / `已尝试未通过`),位置紧随 `- 概率:`(无概率锚点时紧随 `- 状态:`),不影响调度器只读头部锚点的既有解析。锚点用**文本级插入/替换**维护(不整卡重写),因此代理按"直接写 md"协议写进卡片的正文不会被抹掉;off 模式或状态为 `none` 时不写这一行。
532
532
 
533
- **回执通道**(契约 §6.3):非 `off` 模式下,验证回执的 JSON 契约里带 `"formal":{...}`(由 `handleVerifier` 处理),solver / explorer / 重派生提示词的**回执说明**里也给出同一字段(`handleSolver` / `handleExplorer` 通过 `absorbFormalFromReply` 接受顶层 `formal` 与 `meta.formal` 两种写法)。因此代理即使一次 Lean 工具都没调用,也能留下显式、可审计的难度判断;`decision='blocked'` 而 `note` 为空一律**拒绝记录**并公告,`decision='used'` 只记 `attempted`(不足以打开 require 门禁)。
533
+ **回执通道**(契约 §6.3):非 `off` 模式下,验证回执的 JSON 契约里带 `"formal":{...}`(由 `handleVerifier` 处理),solver / explorer / 重派生提示词的**回执说明**里也给出同一字段(`handleSolver` / `handleExplorer` 通过 `absorbFormalFromReply` 接受顶层 `formal` 与 `meta.formal` 两种写法)。因此代理即使一次 Lean 工具都没调用,也能留下显式、可审计的难度判断;`decision='blocked'` 而 `note` 为空一律**拒绝记录**并公告,`decision='used'` 只记 `attempted`(不足以打开 require 门禁)——但**若该对象已是 `passed`/`blocked` 则保持原状**:一次"这一轮碰了形式化"的 `used` 回执不得撤销已成立的证明(撤销只有 `defect` 一条路,契约 §4)。
534
534
 
535
535
  **门禁落点**(契约 §8 要求唯一收口点,不散落):
536
536
  - 判定入口:`settleVerdict`(辩论/评审裁定,在**改对象之前**拦下)与 `processStatusUpdates`(自报概率 1 的第二条"宣告定论"入口);
@@ -773,12 +773,12 @@ else await closeVerify(vs,allTrue)
773
773
 
774
774
  | 事件 | 迁移 |
775
775
  |---|---|
776
- | `lean_run` 成功/失败 | → `attempted`(记录运行结果;`passed`/`blocked` 不被红运行降级) |
776
+ | `lean_run` 成功/失败 | → `attempted`(记录运行结果;`passed`/`blocked` 不被红运行降级,也**不被随手运行撤销**) |
777
777
  | `lean_archive{kind:'proof'}` + 该文件最近一次运行 `ok` | → `passed`,写 `Verified/Lean/<id>.lean` |
778
- | `lean_archive{kind:'proof'}` + 红运行 | → `attempted`(**不**写 `Verified/Lean/`) |
778
+ | `lean_archive{kind:'proof'}` + 红运行 | → `attempted`(**不**写 `Verified/Lean/`),并**撤回**旧的归档证明(工作文件刚被新代码覆盖,旧证明已不对应任何代码) |
779
779
  | `lean_archive{kind:'blocked', note}` | → `blocked`(`note` 空 → 拒绝) |
780
780
  | 回执里 `formal:{target, decision:'blocked', note}` | → `blocked`(`note` 空则仅记日志、不建记录) |
781
- | 回执里 `formal:{target, decision:'used', file}` | → `attempted`(记录文件) |
781
+ | 回执里 `formal:{target, decision:'used', file}` | → `attempted`(记录文件);**已是 `passed`/`blocked` 则保持原状**——只有 `defect` 能撤销证明(契约 §4) |
782
782
 
783
783
  **状态存储**:v4 没有会话日志投影,故 `formal` 记录**用自己的持久化机制**
784
784
  `State/formal.json`(`{records:{<id>:…}, todo:[…]}`),由 `saveAll()` 一起写、`loadAll()` 一起读,
@@ -1136,7 +1136,11 @@ Progress/,不要从头再来",**不得**复用 `【入职首轮】` 与"你
1136
1136
  - 重新 `lean_archive kind='proof'` 但**运行未通过**时,`proof` 指针必须一并清空:工作文件已经被
1137
1137
  这次失败的代码覆盖,旧指针指向的文件不再是该对象的证明(否则 `Formal/Index.md` 会同时报告
1138
1138
  「运行 fail」和一条归档证明路径);
1139
- - 只有表决者**独立于这份 Lean 代码**也能确定命题为假时才投 0。
1139
+ - 只有表决者**独立于这份 Lean 代码**也能确定命题为假时才投 0;
1140
+ - **`decision='used'` 不得撤销已成立的证明**:`used` 只表示"这一轮碰了形式化/写了草稿",若该对象已经是
1141
+ `passed`/`blocked` 就保持原状态(`proof` 与归档文件都不动)。撤销证明只有 `defect` 一条路;
1142
+ 无条件写 `attempted` 会让审查对象从忠实性退回"推导是否正确"、`require` 档对一份已跑通的证明重新关门
1143
+ (契约 §4;v2 曾经就是这样,四套现已一致)。
1140
1144
 
1141
1145
  **提示词硬要求(契约 §6,四套一致)**:注入文本里的工具名**一律全称**
1142
1146
  (`vibe_v5_lean_*`;缩写 `lean_archive` 不是注册名,代理照抄就调用了一个不存在的工具);