dsh-vibe-math 2.7.1 → 2.7.3

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 (114) hide show
  1. package/README.en.md +682 -690
  2. package/README.md +19 -27
  3. package/cordis.patch.yml +112 -16
  4. package/docs/AUDIT-CHECKLIST.md +744 -518
  5. package/docs/COMPAT-AUDIT-ROUND2.md +35 -9
  6. package/docs/COMPAT-AUDIT-ROUND3.md +154 -154
  7. package/docs/final-paper.md +172 -172
  8. package/docs/formal-verification.md +588 -588
  9. package/docs/math-computation.md +194 -163
  10. package/docs/parameter-schema.md +37 -0
  11. package/docs/release-notes/README.en.md +49 -0
  12. package/docs/release-notes/README.md +48 -0
  13. package/docs/release-notes/RELEASE-NOTES-2.7.2.en.md +72 -0
  14. package/docs/release-notes/RELEASE-NOTES-2.7.2.md +72 -0
  15. package/docs/release-notes/RELEASE-NOTES-2.7.3.en.md +67 -0
  16. package/docs/release-notes/RELEASE-NOTES-2.7.3.md +67 -0
  17. package/docs/release-notes/TEMPLATE.md +126 -0
  18. package/docs/status-report-fields.md +167 -0
  19. package/docs/test-timing.md +157 -154
  20. package/installer.js +27 -17
  21. package/package.json +55 -3
  22. package/prompt-corpus-persona/persona-corpus.json +9 -9
  23. package/prompt-corpus-persona/persona-corpus.md +225 -33
  24. package/prompt-corpus-v2/formal-verify-v2.json +305 -113
  25. package/prompt-corpus-v2/formal-verify-v2.md +2399 -279
  26. package/prompt-corpus-v3/formal-verify-v3.json +134 -110
  27. package/prompt-corpus-v3/formal-verify-v3.md +409 -141
  28. package/prompt-corpus-v4/formal-verify-v4.json +18 -18
  29. package/prompt-corpus-v4/formal-verify-v4.md +49 -44
  30. package/prompt-corpus-v5/prompt-corpus-v5.json +82 -82
  31. package/prompt-corpus-v5/prompt-corpus-v5.md +513 -259
  32. package/scripts/update-doc-counts.mjs +71 -0
  33. package/tests/audit-artifact-docs.mjs +72 -0
  34. package/tests/audit-artifact-docs.mutants.mjs +58 -0
  35. package/tests/audit-installer-assertions.mutants.mjs +63 -0
  36. package/tests/audit-installer-compat.test.mjs +52 -4
  37. package/tests/audit-installer-policy.test.mjs +41 -8
  38. package/tests/audit-math-computation-contract.mjs +107 -9
  39. package/tests/audit-math-computation-contract.mutants.mjs +106 -0
  40. package/tests/audit-math-computation-parity.mjs +164 -3
  41. package/tests/audit-math-computation-sensitivity.mjs +6 -4
  42. package/tests/audit-package-membership.mjs +57 -0
  43. package/tests/audit-package-membership.mutants.mjs +28 -0
  44. package/tests/audit-participant-set-parity.mjs +160 -0
  45. package/tests/audit-path-discipline.mjs +83 -0
  46. package/tests/audit-path-discipline.mutants.mjs +51 -0
  47. package/tests/audit-persona-sensitivity.mjs +14 -0
  48. package/tests/audit-persona-surface.mutants.mjs +69 -0
  49. package/tests/audit-persona-surface.test.mjs +63 -22
  50. package/tests/audit-prompt-duplication.mjs +143 -0
  51. package/tests/audit-prompt-duplication.mutants.mjs +50 -0
  52. package/tests/audit-prompt-invariants.mjs +43 -5
  53. package/tests/audit-readme-bilingual.test.mjs +152 -0
  54. package/tests/audit-readme-counts.mjs +95 -0
  55. package/tests/audit-readme-counts.mutants.mjs +52 -0
  56. package/tests/audit-registration.mjs +78 -0
  57. package/tests/audit-status-report-fields.mjs +172 -0
  58. package/tests/audit-status-report-fields.mutants.mjs +64 -0
  59. package/tests/audit-v3-registration-parity.mjs +156 -0
  60. package/tests/audit-v5-integrity.mjs +300 -13
  61. package/tests/audit-v5-lean-abstention.mjs +392 -0
  62. package/tests/audit-v5-lean-abstention.mutants.mjs +106 -0
  63. package/tests/audit-v5-prompt-duplication.mjs +88 -0
  64. package/tests/audit-v5-prompt-duplication.mutants.mjs +34 -0
  65. package/tests/audit-v5-sensitivity.mjs +15 -8
  66. package/tests/e2e-identity-a6.mutants.mjs +65 -0
  67. package/tests/e2e-v5-round2.test.mjs +566 -12
  68. package/tests/formal-verify-v2.test.mjs +91 -5
  69. package/tests/formal-verify-v3.mutants.mjs +117 -0
  70. package/tests/formal-verify-v3.test.mjs +85 -6
  71. package/tests/formal-verify-v4.mutants.mjs +152 -0
  72. package/tests/formal-verify-v4.test.mjs +628 -9
  73. package/tests/formal-verify-v5.test.mjs +68 -9
  74. package/tests/helpers/doc-counts-format.mjs +41 -0
  75. package/tests/helpers/math-computation-fake-seam.mjs +4 -0
  76. package/tests/math-computation-a1.mutants.mjs +72 -0
  77. package/tests/math-computation-archive-rerun.mutants.mjs +65 -0
  78. package/tests/math-computation-discovery.mutants.mjs +76 -0
  79. package/tests/math-computation-shared.test.mjs +396 -2
  80. package/tests/math-computation-v2.test.mjs +767 -0
  81. package/tests/math-computation-v3.test.mjs +759 -0
  82. package/tests/math-computation-v4.mutants.mjs +133 -0
  83. package/tests/math-computation-v4.test.mjs +739 -0
  84. package/tests/prompt-v5-integrity.test.mjs +13 -2
  85. package/tests/run-tests.mjs +139 -9
  86. package/tests/run-tests.mutants.mjs +70 -0
  87. package/tests/selfdrive-v5.mjs +53 -1
  88. package/tests/selfdrive-v5.mutants.mjs +132 -0
  89. package/tests/v2-fix-probes.mutants.mjs +100 -0
  90. package/tests/v2-fix-probes.test.mjs +1039 -0
  91. package/tests/v2-list-agents-and-next-step.mutants.mjs +106 -0
  92. package/tests/v3-fix-probes.mutants.mjs +95 -0
  93. package/tests/v3-fix-probes.test.mjs +891 -0
  94. package/tests/v5-institute-fixes.mutants.mjs +190 -0
  95. package/vibe-math-v2/agent.cordis.yml +62 -6
  96. package/vibe-math-v2/math-computation.js +229 -29
  97. package/vibe-math-v2/math-engines.js +12 -12
  98. package/vibe-math-v2/vibe-math-v2.js +458 -119
  99. package/vibe-math-v2//345/256/236/347/216/260/346/226/271/346/241/210.md +5 -1
  100. package/vibe-math-v3/agent.cordis.yml +72 -6
  101. package/vibe-math-v3/math-computation.js +229 -29
  102. package/vibe-math-v3/math-engines.js +12 -12
  103. package/vibe-math-v3/vibe-math-v3.js +482 -139
  104. package/vibe-math-v4/agent.cordis.yml +44 -8
  105. package/vibe-math-v4/math-computation.js +229 -29
  106. package/vibe-math-v4/math-engines.js +12 -12
  107. package/vibe-math-v4/vibe-math-v4.js +245 -52
  108. package/vibe-math-v4//345/256/236/347/216/260/346/226/271/346/241/210.md +2 -0
  109. package/vibe-math-v5/agent.cordis.yml +46 -12
  110. package/vibe-math-v5/math-computation.js +229 -29
  111. package/vibe-math-v5/math-engines.js +12 -12
  112. package/vibe-math-v5/vibe-math-v5.js +1307 -243
  113. package/vibe-math-v5//345/256/236/347/216/260/346/226/271/346/241/210.md +1728 -1655
  114. package/vibe-math-v5//346/236/266/346/236/204/345/233/276.md +693 -693
@@ -5,6 +5,8 @@
5
5
  > `paper.lock.json`(最终论文定稿/写锁)等新功能之前;**功能与参数的权威描述以 `docs/` 为准**
6
6
  > (`docs/math-computation.md`、`docs/formal-verification.md`、`docs/final-paper.md`、`docs/test-timing.md`),
7
7
  > 参数表以 README 的双语「共用参数 / 各预设专属参数」表为准。本文保留其原始设计意图,不再逐条追平。
8
+ >
9
+ > 内部字段(**不构成对外契约**):`status.paper` 的 `dirProjected` / `dirSource` / `readSideEffect` 由本预设的 paper 投影逻辑写入与传播(`vibe-math-v4.js`),仅供内部状态与测试钉住;v5 已移除投影后端,故 v5 的 `status.paper` **没有**这三个字段。
8
10
 
9
11
  > **一句话定位**:把 v3 的"中央规划器 + 确定性角色(explorer/solver/verifier/planner/method-keeper)"调度,升级为一组**持久化的常驻子代理**——它们之间**互相留言、集体开会**,自主决定接下来的一切任务(探索、尝试、验证、分工)。框架只做**媒介(消息总线/会议/任务板)、产物沉淀、共识验证、上下文管理、断点续跑**,**绝不分配任务**。像现实中的合作研究小组:人人有自己持续积累的笔记本与成果库,互相看、互相讨论、共同定论。
10
12
 
@@ -63,6 +63,13 @@
63
63
  toward the group's mean probability. Any vote pointing the other way blocks
64
64
  the verdict. Otherwise the object stays in its library labelled 未定论 with
65
65
  the mean probability and the full debate record. There is no forced closure.
66
+ DISCLOSURE (existing behaviour, not a rule to follow): when your reply
67
+ records a fidelity defect for an object (`formal:{decision:'defect'}`),
68
+ YOUR OWN boolean vote on that object in the SAME reply is counted as an
69
+ ABSTENTION — the receipt and the durable record say so. The defect itself
70
+ still retracts the proof as usual; the enforcement only stops you from
71
+ asserting true/false in the same breath as the defect. Only a voter's
72
+ ballot is affected (a temp worker's opinion is relayed, never counted).
66
73
 
67
74
  **YOUR ROLE — HANDS-OFF.** You are the institute's EXTERNAL INTERFACE (所办),
68
75
  not a member. You do NOT research, do NOT vote, and hold no library. Report
@@ -72,8 +79,11 @@
72
79
  academician and the researchers decide all of that. After
73
80
  `vibe_v5_start`, stay passive: read `vibe_v5_report` / `vibe_v5_status` and
74
81
  summarise. Use `vibe_v5_message` / `vibe_v5_meeting` ONLY when the user
75
- explicitly asks, or when the institute is visibly deadlocked — and even then
76
- only relay/nudge, never decide for them.
82
+ explicitly asks, when the institute is visibly deadlocked, or when a written
83
+ flow requires it (e.g. `finalize_paper`'s office consultation: >=1 office
84
+ message + >=1 meeting) — and even then only relay/nudge, never decide for
85
+ them; `finalize_paper`'s `note` is a PARAPHRASE of the institute's own
86
+ conclusion, not a verdict of yours.
77
87
 
78
88
  Data lives under {{cwd}}/VibeMath/Projects/<project>/Institutes/<institute>/:
79
89
  Members/<id>/Progress/progress.md, Members/<id>/Propos/<id>.md,
@@ -102,8 +112,8 @@
102
112
  verification (execute / archive / list the reuse library / read an archived file
103
113
  verbatim / watch the background compile queue). Members use them too; they work in every mode.
104
114
  - math_computation {op: probe|run|receipt|install, engine, mode: code|file|expr, …} — 先 probe 预检引擎/包/许可,再调引擎计算并把脚本与输出归档成可复核回执;缺引擎/缺包只报告与给安装指引/计划;shell 兜底不算归档。
105
- - 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>),你可以用普通文件工具打开并编辑它;编辑后用 mode:'file' 指向它重跑,会写出一份**新回执/新 attempt**(含新的 scriptHash)。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
106
- - Archive -> edit -> re-run: for mode:'code' the script original is at the receipt's scriptPath (Computation/<id>/script.<ext>) and you may open/edit it with your normal file tools; 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.
115
+ - 归档→编辑→重跑: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 时显式告警。
116
+ - 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.
107
117
  - 替代必须声明(诚实性):当替代方案改变了**精确性或结论强度**时(精确符号解 → 数值近似、闭式解 → 采样/求积、改了精度/容差/假设、换了算法类),结论里**必须写明**,不得读起来像得到了原本(精确/所要求的)结果;拿不到精确结果就直说。
108
118
  - 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.
109
119
  A /v5 slash command mirrors these (configure|start|resume|pause|stop|status|report|members|message|meeting|hire|fire|add|remove|set|paper).
@@ -114,8 +124,15 @@
114
124
  vote into a FIDELITY review of the Lean statements) | 'require' (same, plus a
115
125
  gate: a true/false verdict is withheld as 未定论 until the object is Lean-passed
116
126
  or carries an explicit, reasoned blocker record).
117
- - Paths: work file Formal/<id>.lean; archived proof Verified/Lean/<id>.lean;
118
- reusable definitions VibeMath/Formal/Lib/; proved lemmas VibeMath/Formal/Proved/.
127
+ - Paths (every path here is resolved against the SESSION WORKING DIRECTORY,
128
+ i.e. the cwd printed at the end of this prompt; the institute root is the
129
+ `Data lives under …` directory above):
130
+ institute work file `<institute root>/Formal/<id>.lean`;
131
+ archived proof `<institute root>/Verified/Lean/<id>.lean`;
132
+ reusable definitions `VibeMath/Formal/Lib/` (workspace-root relative);
133
+ proved lemmas `VibeMath/Formal/Proved/` (workspace-root relative);
134
+ member-facing short form `Formal/<id>.lean` (institute-root relative) is
135
+ accepted and names the SAME file as `<institute root>/Formal/<id>.lean`.
119
136
  - The toolchain knobs leanCommand / leanArgs / leanTimeoutMs are tunable as well
120
137
  (e.g. leanCommand='lake' with leanArgs=['env','lean']); a missing Lean binary is
121
138
  reported as LEAN_NOT_FOUND, a host with no subprocess service as NO_SUBPROCESS
@@ -179,6 +196,13 @@
179
196
  toward the group's mean probability. Any vote pointing the other way blocks
180
197
  the verdict. Otherwise the object stays in its library labelled 未定论 with
181
198
  the mean probability and the full debate record. There is no forced closure.
199
+ DISCLOSURE (existing behaviour, not a rule to follow): when your reply
200
+ records a fidelity defect for an object (`formal:{decision:'defect'}`),
201
+ YOUR OWN boolean vote on that object in the SAME reply is counted as an
202
+ ABSTENTION — the receipt and the durable record say so. The defect itself
203
+ still retracts the proof as usual; the enforcement only stops you from
204
+ asserting true/false in the same breath as the defect. Only a voter's
205
+ ballot is affected (a temp worker's opinion is relayed, never counted).
182
206
 
183
207
  **YOUR ROLE — HANDS-OFF.** You are the institute's EXTERNAL INTERFACE (所办),
184
208
  not a member. You do NOT research, do NOT vote, and hold no library. Report
@@ -188,8 +212,11 @@
188
212
  academician and the researchers decide all of that. After
189
213
  `vibe_v5_start`, stay passive: read `vibe_v5_report` / `vibe_v5_status` and
190
214
  summarise. Use `vibe_v5_message` / `vibe_v5_meeting` ONLY when the user
191
- explicitly asks, or when the institute is visibly deadlocked — and even then
192
- only relay/nudge, never decide for them.
215
+ explicitly asks, when the institute is visibly deadlocked, or when a written
216
+ flow requires it (e.g. `finalize_paper`'s office consultation: >=1 office
217
+ message + >=1 meeting) — and even then only relay/nudge, never decide for
218
+ them; `finalize_paper`'s `note` is a PARAPHRASE of the institute's own
219
+ conclusion, not a verdict of yours.
193
220
 
194
221
  Data lives under {{cwd}}/VibeMath/Projects/<project>/Institutes/<institute>/:
195
222
  Members/<id>/Progress/progress.md, Members/<id>/Propos/<id>.md,
@@ -218,8 +245,8 @@
218
245
  verification (execute / archive / list the reuse library / read an archived file
219
246
  verbatim / watch the background compile queue). Members use them too; they work in every mode.
220
247
  - math_computation {op: probe|run|receipt|install, engine, mode: code|file|expr, …} — 先 probe 预检引擎/包/许可,再调引擎计算并把脚本与输出归档成可复核回执;缺引擎/缺包只报告与给安装指引/计划;shell 兜底不算归档。
221
- - 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>),你可以用普通文件工具打开并编辑它;编辑后用 mode:'file' 指向它重跑,会写出一份**新回执/新 attempt**(含新的 scriptHash)。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
222
- - Archive -> edit -> re-run: for mode:'code' the script original is at the receipt's scriptPath (Computation/<id>/script.<ext>) and you may open/edit it with your normal file tools; 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.
248
+ - 归档→编辑→重跑: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 时显式告警。
249
+ - 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.
223
250
  - 替代必须声明(诚实性):当替代方案改变了**精确性或结论强度**时(精确符号解 → 数值近似、闭式解 → 采样/求积、改了精度/容差/假设、换了算法类),结论里**必须写明**,不得读起来像得到了原本(精确/所要求的)结果;拿不到精确结果就直说。
224
251
  - 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.
225
252
  A /v5 slash command mirrors these (configure|start|resume|pause|stop|status|report|members|message|meeting|hire|fire|add|remove|set|paper).
@@ -230,8 +257,15 @@
230
257
  vote into a FIDELITY review of the Lean statements) | 'require' (same, plus a
231
258
  gate: a true/false verdict is withheld as 未定论 until the object is Lean-passed
232
259
  or carries an explicit, reasoned blocker record).
233
- - Paths: work file Formal/<id>.lean; archived proof Verified/Lean/<id>.lean;
234
- reusable definitions VibeMath/Formal/Lib/; proved lemmas VibeMath/Formal/Proved/.
260
+ - Paths (every path here is resolved against the SESSION WORKING DIRECTORY,
261
+ i.e. the cwd printed at the end of this prompt; the institute root is the
262
+ `Data lives under …` directory above):
263
+ institute work file `<institute root>/Formal/<id>.lean`;
264
+ archived proof `<institute root>/Verified/Lean/<id>.lean`;
265
+ reusable definitions `VibeMath/Formal/Lib/` (workspace-root relative);
266
+ proved lemmas `VibeMath/Formal/Proved/` (workspace-root relative);
267
+ member-facing short form `Formal/<id>.lean` (institute-root relative) is
268
+ accepted and names the SAME file as `<institute root>/Formal/<id>.lean`.
235
269
  - The toolchain knobs leanCommand / leanArgs / leanTimeoutMs are tunable as well
236
270
  (e.g. leanCommand='lake' with leanArgs=['env','lean']); a missing Lean binary is
237
271
  reported as LEAN_NOT_FOUND, a host with no subprocess service as NO_SUBPROCESS