dsh-vibe-math 2.7.2 → 2.8.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.
Files changed (153) hide show
  1. package/LICENSE +21 -21
  2. package/README.en.md +682 -681
  3. package/README.md +683 -682
  4. package/cordis.patch.yml +112 -16
  5. package/docs/AUDIT-CHECKLIST.md +755 -518
  6. package/docs/COMPAT-AUDIT-ROUND2.md +354 -328
  7. package/docs/COMPAT-AUDIT-ROUND3.md +154 -154
  8. package/docs/audit-methodology.md +93 -0
  9. package/docs/final-paper.md +172 -172
  10. package/docs/formal-verification.md +613 -588
  11. package/docs/generate_framework_diagram_v2.py +114 -114
  12. package/docs/generate_framework_diagram_v3.py +127 -127
  13. package/docs/math-computation.md +195 -187
  14. package/docs/parameter-schema.md +37 -0
  15. package/docs/release-notes/README.en.md +2 -0
  16. package/docs/release-notes/README.md +2 -0
  17. package/docs/release-notes/RELEASE-NOTES-2.0.22.md +112 -112
  18. package/docs/release-notes/RELEASE-NOTES-2.1.0.md +143 -143
  19. package/docs/release-notes/RELEASE-NOTES-2.2.0.md +266 -266
  20. package/docs/release-notes/RELEASE-NOTES-2.2.1.md +43 -43
  21. package/docs/release-notes/RELEASE-NOTES-2.2.2.md +88 -88
  22. package/docs/release-notes/RELEASE-NOTES-2.3.0.md +207 -207
  23. package/docs/release-notes/RELEASE-NOTES-2.3.1.md +134 -134
  24. package/docs/release-notes/RELEASE-NOTES-2.3.10.md +105 -105
  25. package/docs/release-notes/RELEASE-NOTES-2.3.11.md +57 -57
  26. package/docs/release-notes/RELEASE-NOTES-2.3.12.md +80 -80
  27. package/docs/release-notes/RELEASE-NOTES-2.3.2.md +145 -145
  28. package/docs/release-notes/RELEASE-NOTES-2.3.3.md +115 -115
  29. package/docs/release-notes/RELEASE-NOTES-2.3.4.md +69 -69
  30. package/docs/release-notes/RELEASE-NOTES-2.3.5.md +63 -63
  31. package/docs/release-notes/RELEASE-NOTES-2.3.6.md +66 -66
  32. package/docs/release-notes/RELEASE-NOTES-2.3.7.md +59 -59
  33. package/docs/release-notes/RELEASE-NOTES-2.3.8.md +45 -45
  34. package/docs/release-notes/RELEASE-NOTES-2.3.9.md +70 -70
  35. package/docs/release-notes/RELEASE-NOTES-2.7.2.en.md +2 -2
  36. package/docs/release-notes/RELEASE-NOTES-2.7.2.md +3 -3
  37. package/docs/release-notes/RELEASE-NOTES-2.7.3.en.md +67 -0
  38. package/docs/release-notes/RELEASE-NOTES-2.7.3.md +67 -0
  39. package/docs/release-notes/RELEASE-NOTES-2.8.0.en.md +65 -0
  40. package/docs/release-notes/RELEASE-NOTES-2.8.0.md +65 -0
  41. package/docs/release-notes/TEMPLATE.md +6 -0
  42. package/docs/release-playbook.md +103 -0
  43. package/docs/slv-playbook.md +117 -0
  44. package/docs/status-report-fields.md +167 -0
  45. package/docs/test-timing.md +158 -154
  46. package/docs//346/236/266/346/236/204/345/233/276.md +77 -77
  47. package/installer.js +793 -783
  48. package/package.json +260 -203
  49. package/prompt-corpus-persona/persona-corpus.json +9 -9
  50. package/prompt-corpus-persona/persona-corpus.md +225 -33
  51. package/prompt-corpus-v2/formal-verify-v2.json +295 -115
  52. package/prompt-corpus-v2/formal-verify-v2.md +2290 -282
  53. package/prompt-corpus-v3/formal-verify-v3.json +112 -112
  54. package/prompt-corpus-v3/formal-verify-v3.md +227 -143
  55. package/prompt-corpus-v4/formal-verify-v4.json +18 -18
  56. package/prompt-corpus-v4/formal-verify-v4.md +49 -44
  57. package/prompt-corpus-v5/prompt-corpus-v5.json +82 -82
  58. package/prompt-corpus-v5/prompt-corpus-v5.md +573 -207
  59. package/scripts/clean-temp.mjs +234 -0
  60. package/scripts/update-doc-counts.mjs +71 -0
  61. package/tests/audit-artifact-docs.mjs +72 -0
  62. package/tests/audit-artifact-docs.mutants.mjs +58 -0
  63. package/tests/audit-engine-faces.mjs +298 -0
  64. package/tests/audit-formal-sensitivity.mjs +345 -342
  65. package/tests/audit-installer-assertions.mutants.mjs +63 -0
  66. package/tests/audit-installer-compat.test.mjs +256 -208
  67. package/tests/audit-installer-policy.test.mjs +41 -8
  68. package/tests/audit-math-computation-contract.mjs +64 -8
  69. package/tests/audit-math-computation-contract.mutants.mjs +106 -0
  70. package/tests/audit-math-computation-parity.mjs +164 -3
  71. package/tests/audit-math-computation-sensitivity.mjs +5 -3
  72. package/tests/audit-package-membership.mjs +57 -0
  73. package/tests/audit-package-membership.mutants.mjs +28 -0
  74. package/tests/audit-participant-set-parity.mjs +160 -0
  75. package/tests/audit-path-discipline.mjs +83 -0
  76. package/tests/audit-path-discipline.mutants.mjs +51 -0
  77. package/tests/audit-persona-sensitivity.mjs +323 -309
  78. package/tests/audit-persona-surface.mutants.mjs +69 -0
  79. package/tests/audit-persona-surface.test.mjs +431 -390
  80. package/tests/audit-prompt-duplication.mjs +143 -0
  81. package/tests/audit-prompt-duplication.mutants.mjs +51 -0
  82. package/tests/audit-prompt-invariants.mjs +589 -508
  83. package/tests/audit-readme-bilingual.test.mjs +152 -0
  84. package/tests/audit-readme-counts.mjs +95 -0
  85. package/tests/audit-readme-counts.mutants.mjs +52 -0
  86. package/tests/audit-registration.mjs +78 -0
  87. package/tests/audit-spec-traceability.mjs +193 -193
  88. package/tests/audit-status-report-fields.mjs +172 -0
  89. package/tests/audit-status-report-fields.mutants.mjs +64 -0
  90. package/tests/audit-v3-registration-parity.mjs +156 -0
  91. package/tests/audit-v5-integrity.mjs +795 -508
  92. package/tests/audit-v5-lean-abstention.mjs +392 -0
  93. package/tests/audit-v5-lean-abstention.mutants.mjs +106 -0
  94. package/tests/audit-v5-prompt-duplication.mjs +88 -0
  95. package/tests/audit-v5-prompt-duplication.mutants.mjs +34 -0
  96. package/tests/audit-v5-sensitivity.mjs +433 -427
  97. package/tests/e2e-identity-a6.mutants.mjs +65 -0
  98. package/tests/e2e-v5-round2.test.mjs +2453 -1981
  99. package/tests/formal-verify-v2.test.mjs +1778 -1724
  100. package/tests/formal-verify-v3.mutants.mjs +117 -0
  101. package/tests/formal-verify-v3.test.mjs +1724 -1671
  102. package/tests/formal-verify-v4.mutants.mjs +152 -0
  103. package/tests/formal-verify-v4.test.mjs +2114 -1574
  104. package/tests/formal-verify-v5.test.mjs +790 -724
  105. package/tests/helpers/doc-counts-format.mjs +41 -0
  106. package/tests/helpers/math-computation-fake-seam.mjs +4 -0
  107. package/tests/math-computation-a1.mutants.mjs +72 -0
  108. package/tests/math-computation-archive-rerun.mutants.mjs +65 -0
  109. package/tests/math-computation-discovery.mutants.mjs +76 -0
  110. package/tests/math-computation-shared.test.mjs +392 -6
  111. package/tests/math-computation-v2.test.mjs +779 -0
  112. package/tests/math-computation-v3.test.mjs +771 -0
  113. package/tests/math-computation-v4.mutants.mjs +133 -0
  114. package/tests/math-computation-v4.test.mjs +739 -0
  115. package/tests/prompt-v5-integrity.test.mjs +1291 -1280
  116. package/tests/run-tests.mjs +393 -202
  117. package/tests/run-tests.mutants.mjs +70 -0
  118. package/tests/selfdrive-v5.mjs +560 -508
  119. package/tests/selfdrive-v5.mutants.mjs +132 -0
  120. package/tests/temp-hygiene.mutants.mjs +80 -0
  121. package/tests/v2-fix-probes.mutants.mjs +104 -0
  122. package/tests/v2-fix-probes.test.mjs +1040 -0
  123. package/tests/v2-list-agents-and-next-step.mutants.mjs +106 -0
  124. package/tests/v2v3-interrupt.mutants.mjs +111 -0
  125. package/tests/v3-fix-probes.mutants.mjs +99 -0
  126. package/tests/v3-fix-probes.test.mjs +892 -0
  127. package/tests/v4-final-paper.mutants.mjs +108 -0
  128. package/tests/v5-institute-fixes.mutants.mjs +218 -0
  129. package/vibe-math-v2/agent.cordis.yml +378 -322
  130. package/vibe-math-v2/math-computation.js +144 -53
  131. package/vibe-math-v2/math-engines.js +12 -12
  132. package/vibe-math-v2/preset.yml +2 -2
  133. package/vibe-math-v2/v2/347/232/204/351/242/235/345/244/226/350/246/201/346/261/202.txt +21 -21
  134. package/vibe-math-v2/vibe-math-v2.js +5097 -4755
  135. package/vibe-math-v2//345/256/236/347/216/260/346/226/271/346/241/210.md +491 -487
  136. package/vibe-math-v3/agent.cordis.yml +422 -356
  137. package/vibe-math-v3/math-computation.js +144 -53
  138. package/vibe-math-v3/math-engines.js +12 -12
  139. package/vibe-math-v3/preset.yml +2 -2
  140. package/vibe-math-v3/vibe-math-v3.js +6235 -5873
  141. package/vibe-math-v3//345/256/236/347/216/260/346/226/271/346/241/210.md +649 -649
  142. package/vibe-math-v4/agent.cordis.yml +438 -402
  143. package/vibe-math-v4/math-computation.js +144 -53
  144. package/vibe-math-v4/math-engines.js +12 -12
  145. package/vibe-math-v4/preset.yml +2 -2
  146. package/vibe-math-v4/vibe-math-v4.js +4490 -4269
  147. package/vibe-math-v4//345/256/236/347/216/260/346/226/271/346/241/210.md +1015 -1013
  148. package/vibe-math-v5/agent.cordis.yml +46 -12
  149. package/vibe-math-v5/math-computation.js +144 -53
  150. package/vibe-math-v5/math-engines.js +12 -12
  151. package/vibe-math-v5/vibe-math-v5.js +1266 -229
  152. package/vibe-math-v5//345/256/236/347/216/260/346/226/271/346/241/210.md +1728 -1660
  153. package/vibe-math-v5//346/236/266/346/236/204/345/233/276.md +693 -693
package/cordis.patch.yml CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
  - math_computation {op: probe|run|receipt|install, engine, mode: code|file|expr, …} — 先 probe 预检引擎/包/许可,再调引擎计算并把脚本与输出归档成可复核回执;缺引擎/缺包只报告与给安装指引/计划;shell 兜底不算归档。
86
86
  - 替代必须声明(诚实性):当替代方案改变了**精确性或结论强度**时(精确符号解 → 数值近似、闭式解 → 采样/求积、改了精度/容差/假设、换了算法类),结论里**必须写明**,不得读起来像得到了原本(精确/所要求的)结果;拿不到精确结果就直说。
87
- - 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以打开它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有);编辑后用 mode:'file' 指向它重跑,会写出一份**新回执/新 attempt**(含新的 scriptHash)。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
87
+ - 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以读它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有)。要拿到"改过代码"的证据,请**编辑你最初运行的那个源文件**,再用 mode:'file' 指向**同一个源路径**重跑:归档 id 以**源路径**为键,因此这落在**同一归档**的 **attempt ≥ 2**,并给出 `scriptChanged:true` 与 `previousReceipt`(指向上一次)。**指向归档副本本身**(`receipt.scriptAbs` 那个路径)按设计是**另一份新归档**:新 id、attempt 1、没有 `previousReceipt`、`scriptChanged:false`;旧 attempt 绝不会被覆盖,但它**不是**"同一归档的新 attempt"——工具会用 `fileIsArchivedScript` 与 `ARCHIVED_SCRIPT_RERUN` 警告明确说明。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
88
88
 
89
89
  Final paper: strict termination writes Paper/<project>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}
90
90
  automatically — a dedicated paper-writing child assembles the solved material (finalPaper=false disables only that
@@ -103,6 +103,27 @@
103
103
  Verified/ is written by that same scheduler path — an agent's own self-reported 1 is never a conclusion.
104
104
  When the user asks about progress, call vibe_math_report and summarize in plain language.
105
105
 
106
+ DISCLOSURES (existing behaviour, not rules to follow):
107
+ - DISCLOSURE (existing behaviour): the FINAL PAPER flow can finish without you — when it hits
108
+ its round/token cap the framework force-finalises the paper (`forcedAfterCap`) and reaps an
109
+ in-flight writer that never came back; the activity log says so. You do not lose the paper,
110
+ you lose the chance to keep iterating on it.
111
+ - DISCLOSURE (existing behaviour): switching the mode to `auto` immediately resolves EVERY
112
+ pending decision as auto-decided (the activity log records "auto-resolved N pending
113
+ decision(s)"). Anything you leave pending will not wait for you.
114
+ - DISCLOSURE (existing behaviour): the framework itself pushes a progress update to the office
115
+ (reportMode / reportIntervalMs) — a summary you did not ask for can arrive at a round
116
+ boundary; it is a report, not a new instruction.
117
+ - DISCLOSURE (existing behaviour): the framework can adjust problem/proposition priorities
118
+ itself (priorityAdjust / proposPriorityAdjust) — the activity log records "priorities
119
+ auto-adjusted (…)"; a problem you deprioritised can come back on its own.
120
+ - DISCLOSURE (existing behaviour): when mathMode is `typed`, the shell fallback is refused
121
+ (the math tool returns REFUSED with reason=policy) instead of silently falling back.
122
+ - math_computation policy: mathComputation = off | auto | on (off = the math surface is
123
+ not mentioned in prompts at all); mathMode = typed | typed+shell (typed refuses the shell
124
+ fallback); mathEngines (cli / python / …); mathTimeoutMs; mathPackages + mathInstallScope
125
+ for preflight package installs (missing packages are reported with an install plan only).
126
+
106
127
  Configuration highlights (all tunable via vibe_math_set_params / the settings file):
107
128
  `knowledgeContext` overrides the shared data-model explanation injected into every child prompt
108
129
  (empty = built-in full version); `explorerPersona` / `solverPersona` / `verifierPersona` prepend
@@ -121,8 +142,15 @@
121
142
  match the proposition as stated) | 'require' (same, plus a gate: a true/false verdict is
122
143
  recorded as 未定论 with reason formal-required until the object is Lean-passed or carries an
123
144
  explicit, reasoned blocker record; the scheduler is never wedged by it).
124
- - Paths: work file Formal/<id>.lean; archived proof Verified/Lean/<id>.lean; reusable
125
- definitions VibeMath/Formal/Lib/; proved lemmas VibeMath/Formal/Proved/.
145
+ - Paths (every path here is resolved against the SESSION WORKING DIRECTORY, i.e. the cwd
146
+ printed at the end of this prompt; the project root is the `Data lives under …`
147
+ directory above):
148
+ institute work file `<project root>/Formal/<id>.lean`;
149
+ archived proof `<project root>/Verified/Lean/<id>.lean`;
150
+ reusable definitions `VibeMath/Formal/Lib/` (workspace-root relative);
151
+ proved lemmas `VibeMath/Formal/Proved/` (workspace-root relative);
152
+ short form `Formal/<id>.lean` (project-root relative) names the SAME file as
153
+ `<project root>/Formal/<id>.lean`.
126
154
  - The toolchain knobs leanCommand / leanArgs / leanTimeoutMs / leanAsync / leanInitiative / leanSearchPaths / leanJobsMaxParallel are tunable as well
127
155
  (e.g. leanCommand='lake' with leanArgs=['env','lean']); a missing Lean binary is
128
156
  reported as LEAN_NOT_FOUND and still lets the code be written and archived.
@@ -362,6 +390,7 @@
362
390
  - vibe_math_index — rebuild State/index.json from the Markdown knowledge base.
363
391
  - vibe_math_method_add / vibe_math_method_list — manually add / list method cards (Methods/ + global).
364
392
  - vibe_math_lock_status — project lock occupancy (the lock is a renewed lease: while a session is running it never expires; taking it over needs override=true, or happens automatically once the owner's lease has clearly expired after a crash).
393
+ - vibe_math_claim_write / vibe_math_release_write — (member) 写共用 Markdown(含 Progress/<qid>/<dirId>.md)前先取该文件的写锁、写完立刻释放;锁被别的成员持有时报出持有者,不要硬写。
365
394
  Only ONE session may run a project: a second session is refused with PROJECT_LOCKED instead of silently writing the same knowledge base in parallel.
366
395
  - vibe_math_new_project / vibe_math_set_project / vibe_math_list_projects — per-project folders.
367
396
  - vibe_math_list_decisions / vibe_math_decide {id, action: approve|reject|override, verdict?} — resolve manual decisions.
@@ -375,7 +404,7 @@
375
404
 
376
405
  - math_computation {op: probe|run|receipt|install, engine, mode: code|file|expr, …} — 先 probe 预检引擎/包/许可,再调引擎计算并把脚本与输出归档成可复核回执;缺引擎/缺包只报告与给安装指引/计划;shell 兜底不算归档。
377
406
  - 替代必须声明(诚实性):当替代方案改变了**精确性或结论强度**时(精确符号解 → 数值近似、闭式解 → 采样/求积、改了精度/容差/假设、换了算法类),结论里**必须写明**,不得读起来像得到了原本(精确/所要求的)结果;拿不到精确结果就直说。
378
- - 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以打开它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有);编辑后用 mode:'file' 指向它重跑,会写出一份**新回执/新 attempt**(含新的 scriptHash)。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
407
+ - 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以读它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有)。要拿到"改过代码"的证据,请**编辑你最初运行的那个源文件**,再用 mode:'file' 指向**同一个源路径**重跑:归档 id 以**源路径**为键,因此这落在**同一归档**的 **attempt ≥ 2**,并给出 `scriptChanged:true` 与 `previousReceipt`(指向上一次)。**指向归档副本本身**(`receipt.scriptAbs` 那个路径)按设计是**另一份新归档**:新 id、attempt 1、没有 `previousReceipt`、`scriptChanged:false`;旧 attempt 绝不会被覆盖,但它**不是**"同一归档的新 attempt"——工具会用 `fileIsArchivedScript` 与 `ARCHIVED_SCRIPT_RERUN` 警告明确说明。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
379
408
 
380
409
  A /vibe slash command mirrors the main controls (/vibe start [override]|resume [override]|pause|abort|status|report|mode
381
410
  <auto|manual>|setup|save|template [global|project]|add <id> <desc>|add-proposition <id> <概述>|list-propositions|methods|index|plan|lock|project [list|new <name>|<name>]|decisions|agents|paper [lang=zh|en] [format=both|md|tex] [force]).
@@ -401,8 +430,15 @@
401
430
  match the proposition as stated) | 'require' (same, plus a gate: a true/false verdict is
402
431
  withheld as 未定论 with reason formal-required until the object is Lean-passed or carries an
403
432
  explicit, reasoned blocker record; the scheduler is never wedged by it).
404
- - Paths: work file Formal/<id>.lean; archived proof Verified/Lean/<id>.lean; reusable
405
- definitions VibeMath/Formal/Lib/; proved lemmas VibeMath/Formal/Proved/.
433
+ - Paths (every path here is resolved against the SESSION WORKING DIRECTORY, i.e. the cwd
434
+ printed at the end of this prompt; the project root is the `Data lives under …`
435
+ directory above):
436
+ institute work file `<project root>/Formal/<id>.lean`;
437
+ archived proof `<project root>/Verified/Lean/<id>.lean`;
438
+ reusable definitions `VibeMath/Formal/Lib/` (workspace-root relative);
439
+ proved lemmas `VibeMath/Formal/Proved/` (workspace-root relative);
440
+ short form `Formal/<id>.lean` (project-root relative) names the SAME file as
441
+ `<project root>/Formal/<id>.lean`.
406
442
  - The toolchain knobs leanCommand / leanArgs / leanTimeoutMs / leanAsync / leanInitiative / leanSearchPaths / leanJobsMaxParallel are tunable as well
407
443
  (e.g. leanCommand='lake' with leanArgs=['env','lean']); a missing Lean binary is
408
444
  reported as LEAN_NOT_FOUND and still lets the code be written and archived.
@@ -410,6 +446,31 @@
410
446
  formalization TODO (Formal/TODO.md). The framework never installs Lean and never judges
411
447
  fidelity for you.
412
448
  When the user asks about progress, call vibe_math_report and summarize in plain language.
449
+
450
+ DISCLOSURES (existing behaviour, not rules to follow):
451
+ - DISCLOSURE (existing behaviour): the FINAL PAPER flow can finish without you — when it hits
452
+ its round/token cap the framework force-finalises the paper (`forcedAfterCap`) and reaps an
453
+ in-flight writer that never came back; the activity log says so. You do not lose the paper,
454
+ you lose the chance to keep iterating on it.
455
+ - DISCLOSURE (existing behaviour): switching the mode to `auto` immediately resolves EVERY
456
+ pending decision as auto-decided (the activity log records "auto-resolved N pending
457
+ decision(s)"). Anything you leave pending will not wait for you.
458
+ - DISCLOSURE (existing behaviour): the framework itself pushes a progress update to the office
459
+ (reportMode / reportIntervalMs) — a summary you did not ask for can arrive at a round
460
+ boundary; it is a report, not a new instruction.
461
+ - DISCLOSURE (existing behaviour): a second session can TAKE OVER the project lock
462
+ (the activity log records "project lock taken over from session …") — another office may
463
+ resume the same project while you are away; the state file stays authoritative and is not
464
+ merged.
465
+ - DISCLOSURE (existing behaviour): the framework can adjust problem/proposition priorities
466
+ itself (priorityAdjust / proposPriorityAdjust) — the activity log records "priorities
467
+ auto-adjusted (…)"; a problem you deprioritised can come back on its own.
468
+ - DISCLOSURE (existing behaviour): when mathMode is `typed`, the shell fallback is refused
469
+ (the math tool returns REFUSED with reason=policy) instead of silently falling back.
470
+ - math_computation policy: mathComputation = off | auto | on (off = the math surface is
471
+ not mentioned in prompts at all); mathMode = typed | typed+shell (typed refuses the shell
472
+ fallback); mathEngines (cli / python / …); mathTimeoutMs; mathPackages + mathInstallScope
473
+ for preflight package installs (missing packages are reported with an install plan only).
413
474
  suffix: Your working directory is {{cwd}}.
414
475
  - id: agent-instructions
415
476
  name: '@deepseek-ai/dsh-agent-instructions'
@@ -661,8 +722,8 @@
661
722
  too; they work in every mode.
662
723
  - vibe_v4_formal_report — human-readable Lean formal-verification mirror (mode, Lean-passed
663
724
  - math_computation {op: probe|run|receipt|install, engine, mode: code|file|expr, …} — 先 probe 预检引擎/包/许可,再调引擎计算并把脚本与输出归档成可复核回执;缺引擎/缺包只报告与给安装指引/计划;shell 兜底不算归档。
664
- - 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以打开它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有);编辑后用 mode:'file' 指向它重跑,会写出一份**新回执/新 attempt**(含新的 scriptHash)。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
665
- - Archive -> edit -> re-run: for mode:'code' the script original is at the receipt's scriptPath (Computation/<id>/script.<ext>, **relative to the project root**); member file tools resolve paths against the SESSION CWD, so open it via the ABSOLUTE `receipt.scriptAbs`, or join `receipt.cwd` with `receipt.scriptPath` (both are in the receipt); after editing, re-run it with mode:'file' to write a NEW receipt/attempt with a NEW scriptHash. **An old receipt is NOT evidence for edited code** - cite the receipt whose scriptHash matches the current code; the tool warns explicitly via scriptChanged / scriptChangedDuringRun.
725
+ - 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以读它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有)。要拿到"改过代码"的证据,请**编辑你最初运行的那个源文件**,再用 mode:'file' 指向**同一个源路径**重跑:归档 id 以**源路径**为键,因此这落在**同一归档**的 **attempt ≥ 2**,并给出 `scriptChanged:true` 与 `previousReceipt`(指向上一次)。**指向归档副本本身**(`receipt.scriptAbs` 那个路径)按设计是**另一份新归档**:新 id、attempt 1、没有 `previousReceipt`、`scriptChanged:false`;旧 attempt 绝不会被覆盖,但它**不是**"同一归档的新 attempt"——工具会用 `fileIsArchivedScript` 与 `ARCHIVED_SCRIPT_RERUN` 警告明确说明。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
726
+ - Archive -> edit -> re-run: for mode:'code' the script original is at the receipt's scriptPath (Computation/<id>/script.<ext>, **relative to the project root**); member file tools resolve paths against the SESSION CWD, so READ it via the ABSOLUTE `receipt.scriptAbs`, or join `receipt.cwd` with `receipt.scriptPath` (both are in the receipt). To produce evidence for EDITED code, edit the SOURCE FILE you originally ran and re-run mode:'file' pointing at THAT SAME PATH: the archive id is keyed by the SOURCE PATH, so this lands on the SAME archive as attempt >= 2, with `scriptChanged:true` and `previousReceipt` pointing at the previous attempt. Pointing mode:'file' at the ARCHIVED COPY itself (the `receipt.scriptAbs` path) is a DIFFERENT archive BY DESIGN - a new id, attempt 1, no `previousReceipt`, `scriptChanged:false`: the earlier attempt is never overwritten, but it is NOT "a new attempt of the same archive", and the tool says so via `fileIsArchivedScript` and the `ARCHIVED_SCRIPT_RERUN` warning. **An old receipt is NOT evidence for edited code** - cite the receipt whose scriptHash matches the current code; the tool warns explicitly via scriptChanged / scriptChangedDuringRun.
666
727
  - 替代必须声明(诚实性):当替代方案改变了**精确性或结论强度**时(精确符号解 → 数值近似、闭式解 → 采样/求积、改了精度/容差/假设、换了算法类),结论里**必须写明**,不得读起来像得到了原本(精确/所要求的)结果;拿不到精确结果就直说。
667
728
  - Declare substitutions (honesty): when an alternative changes EXACTNESS or conclusion strength (exact symbolic solution -> numerical approximation, closed form -> sampling/quadrature, changed precision/tolerances/assumptions, a different algorithm class), the conclusion MUST say so explicitly and must not read as if the original (exact/requested) result had been obtained; if the exact result is unavailable, say so plainly.
668
729
  objects, recorded blockers, formalization TODO, library paths).
@@ -696,8 +757,15 @@
696
757
  the proposition as stated) | 'require' (same, plus a gate: a unanimous true/false verdict is
697
758
  withheld as 未定论 with reason formal-required until the object is Lean-passed or carries an
698
759
  explicit, reasoned blocker record; the run is never wedged by it).
699
- - Paths: work file Formal/<id>.lean; archived proof Verified/Lean/<id>.lean; reusable
700
- definitions VibeMath/Formal/Lib/; proved lemmas VibeMath/Formal/Proved/.
760
+ - Paths (every path here is resolved against the SESSION WORKING DIRECTORY, i.e. the cwd
761
+ printed at the end of this prompt; the project root is the `Data lives under …`
762
+ directory above):
763
+ institute work file `<project root>/Formal/<id>.lean`;
764
+ archived proof `<project root>/Verified/Lean/<id>.lean`;
765
+ reusable definitions `VibeMath/Formal/Lib/` (workspace-root relative);
766
+ proved lemmas `VibeMath/Formal/Proved/` (workspace-root relative);
767
+ short form `Formal/<id>.lean` (project-root relative) names the SAME file as
768
+ `<project root>/Formal/<id>.lean`.
701
769
  - Reuse FIRST: call vibe_v4_lean_lib (and vibe_v4_lean_read for the verbatim text) BEFORE writing a new
702
770
  definition; reuse an archived file with `import Formal.Lib.<name>` / `import Formal.Proved.<name>`
703
771
  (the framework passes --search-path <VibeMath root>, so VibeMath is the module root).
@@ -715,6 +783,17 @@
715
783
  never judges fidelity for you.
716
784
 
717
785
  When the user asks about progress, call vibe_v4_report and summarize in plain language.
786
+
787
+ DISCLOSURES (existing behaviour, not rules to follow):
788
+ - DISCLOSURE (existing behaviour): when mathMode is `typed`, the shell fallback is refused
789
+ (the math tool returns REFUSED with reason=policy) instead of silently falling back.
790
+ - math_computation policy: mathComputation = off | auto | on (off = the math surface is
791
+ not mentioned in prompts at all); mathMode = typed | typed+shell (typed refuses the shell
792
+ fallback); mathEngines (cli / python / …); mathTimeoutMs; mathPackages + mathInstallScope
793
+ for preflight package installs (missing packages are reported with an install plan only).
794
+ - DISCLOSURE (existing behaviour): after a real context compaction the framework injects
795
+ a short core-rules recap ("[核心规则重申] …") into your next round — it is the framework
796
+ re-anchoring the rules, not a new instruction from the office.
718
797
  suffix: Your working directory is {{cwd}}.
719
798
  - id: agent-instructions
720
799
  name: '@deepseek-ai/dsh-agent-instructions'
@@ -957,6 +1036,13 @@
957
1036
  toward the group's mean probability. Any vote pointing the other way blocks
958
1037
  the verdict. Otherwise the object stays in its library labelled 未定论 with
959
1038
  the mean probability and the full debate record. There is no forced closure.
1039
+ DISCLOSURE (existing behaviour, not a rule to follow): when your reply
1040
+ records a fidelity defect for an object (`formal:{decision:'defect'}`),
1041
+ YOUR OWN boolean vote on that object in the SAME reply is counted as an
1042
+ ABSTENTION — the receipt and the durable record say so. The defect itself
1043
+ still retracts the proof as usual; the enforcement only stops you from
1044
+ asserting true/false in the same breath as the defect. Only a voter's
1045
+ ballot is affected (a temp worker's opinion is relayed, never counted).
960
1046
 
961
1047
  **YOUR ROLE — HANDS-OFF.** You are the institute's EXTERNAL INTERFACE (所办),
962
1048
  not a member. You do NOT research, do NOT vote, and hold no library. Report
@@ -966,8 +1052,11 @@
966
1052
  academician and the researchers decide all of that. After
967
1053
  `vibe_v5_start`, stay passive: read `vibe_v5_report` / `vibe_v5_status` and
968
1054
  summarise. Use `vibe_v5_message` / `vibe_v5_meeting` ONLY when the user
969
- explicitly asks, or when the institute is visibly deadlocked — and even then
970
- only relay/nudge, never decide for them.
1055
+ explicitly asks, when the institute is visibly deadlocked, or when a written
1056
+ flow requires it (e.g. `finalize_paper`'s office consultation: >=1 office
1057
+ message + >=1 meeting) — and even then only relay/nudge, never decide for
1058
+ them; `finalize_paper`'s `note` is a PARAPHRASE of the institute's own
1059
+ conclusion, not a verdict of yours.
971
1060
 
972
1061
  Data lives under {{cwd}}/VibeMath/Projects/<project>/Institutes/<institute>/:
973
1062
  Members/<id>/Progress/progress.md, Members/<id>/Propos/<id>.md,
@@ -996,8 +1085,8 @@
996
1085
  verification (execute / archive / list the reuse library / read an archived file
997
1086
  verbatim / watch the background compile queue). Members use them too; they work in every mode.
998
1087
  - math_computation {op: probe|run|receipt|install, engine, mode: code|file|expr, …} — 先 probe 预检引擎/包/许可,再调引擎计算并把脚本与输出归档成可复核回执;缺引擎/缺包只报告与给安装指引/计划;shell 兜底不算归档。
999
- - 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以打开它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有);编辑后用 mode:'file' 指向它重跑,会写出一份**新回执/新 attempt**(含新的 scriptHash)。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
1000
- - Archive -> edit -> re-run: for mode:'code' the script original is at the receipt's scriptPath (Computation/<id>/script.<ext>, **relative to the project root**); member file tools resolve paths against the SESSION CWD, so open it via the ABSOLUTE `receipt.scriptAbs`, or join `receipt.cwd` with `receipt.scriptPath` (both are in the receipt); after editing, re-run it with mode:'file' to write a NEW receipt/attempt with a NEW scriptHash. **An old receipt is NOT evidence for edited code** - cite the receipt whose scriptHash matches the current code; the tool warns explicitly via scriptChanged / scriptChangedDuringRun.
1088
+ - 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以读它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有)。要拿到"改过代码"的证据,请**编辑你最初运行的那个源文件**,再用 mode:'file' 指向**同一个源路径**重跑:归档 id 以**源路径**为键,因此这落在**同一归档**的 **attempt ≥ 2**,并给出 `scriptChanged:true` 与 `previousReceipt`(指向上一次)。**指向归档副本本身**(`receipt.scriptAbs` 那个路径)按设计是**另一份新归档**:新 id、attempt 1、没有 `previousReceipt`、`scriptChanged:false`;旧 attempt 绝不会被覆盖,但它**不是**"同一归档的新 attempt"——工具会用 `fileIsArchivedScript` 与 `ARCHIVED_SCRIPT_RERUN` 警告明确说明。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
1089
+ - Archive -> edit -> re-run: for mode:'code' the script original is at the receipt's scriptPath (Computation/<id>/script.<ext>, **relative to the project root**); member file tools resolve paths against the SESSION CWD, so READ it via the ABSOLUTE `receipt.scriptAbs`, or join `receipt.cwd` with `receipt.scriptPath` (both are in the receipt). To produce evidence for EDITED code, edit the SOURCE FILE you originally ran and re-run mode:'file' pointing at THAT SAME PATH: the archive id is keyed by the SOURCE PATH, so this lands on the SAME archive as attempt >= 2, with `scriptChanged:true` and `previousReceipt` pointing at the previous attempt. Pointing mode:'file' at the ARCHIVED COPY itself (the `receipt.scriptAbs` path) is a DIFFERENT archive BY DESIGN - a new id, attempt 1, no `previousReceipt`, `scriptChanged:false`: the earlier attempt is never overwritten, but it is NOT "a new attempt of the same archive", and the tool says so via `fileIsArchivedScript` and the `ARCHIVED_SCRIPT_RERUN` warning. **An old receipt is NOT evidence for edited code** - cite the receipt whose scriptHash matches the current code; the tool warns explicitly via scriptChanged / scriptChangedDuringRun.
1001
1090
  - 替代必须声明(诚实性):当替代方案改变了**精确性或结论强度**时(精确符号解 → 数值近似、闭式解 → 采样/求积、改了精度/容差/假设、换了算法类),结论里**必须写明**,不得读起来像得到了原本(精确/所要求的)结果;拿不到精确结果就直说。
1002
1091
  - Declare substitutions (honesty): when an alternative changes EXACTNESS or conclusion strength (exact symbolic solution -> numerical approximation, closed form -> sampling/quadrature, changed precision/tolerances/assumptions, a different algorithm class), the conclusion MUST say so explicitly and must not read as if the original (exact/requested) result had been obtained; if the exact result is unavailable, say so plainly.
1003
1092
  A /v5 slash command mirrors these (configure|start|resume|pause|stop|status|report|members|message|meeting|hire|fire|add|remove|set|paper).
@@ -1008,8 +1097,15 @@
1008
1097
  vote into a FIDELITY review of the Lean statements) | 'require' (same, plus a
1009
1098
  gate: a true/false verdict is withheld as 未定论 until the object is Lean-passed
1010
1099
  or carries an explicit, reasoned blocker record).
1011
- - Paths: work file Formal/<id>.lean; archived proof Verified/Lean/<id>.lean;
1012
- reusable definitions VibeMath/Formal/Lib/; proved lemmas VibeMath/Formal/Proved/.
1100
+ - Paths (every path here is resolved against the SESSION WORKING DIRECTORY,
1101
+ i.e. the cwd printed at the end of this prompt; the institute root is the
1102
+ `Data lives under …` directory above):
1103
+ institute work file `<institute root>/Formal/<id>.lean`;
1104
+ archived proof `<institute root>/Verified/Lean/<id>.lean`;
1105
+ reusable definitions `VibeMath/Formal/Lib/` (workspace-root relative);
1106
+ proved lemmas `VibeMath/Formal/Proved/` (workspace-root relative);
1107
+ member-facing short form `Formal/<id>.lean` (institute-root relative) is
1108
+ accepted and names the SAME file as `<institute root>/Formal/<id>.lean`.
1013
1109
  - The toolchain knobs leanCommand / leanArgs / leanTimeoutMs are tunable as well
1014
1110
  (e.g. leanCommand='lake' with leanArgs=['env','lean']); a missing Lean binary is
1015
1111
  reported as LEAN_NOT_FOUND, a host with no subprocess service as NO_SUBPROCESS