dsh-vibe-math 2.4.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.en.md +53 -14
  2. package/README.md +54 -14
  3. package/cordis.patch.yml +54 -17
  4. package/docs/AUDIT-CHECKLIST.md +26 -7
  5. package/docs/COMPAT-AUDIT-ROUND3.md +16 -1
  6. package/docs/final-paper.md +171 -0
  7. package/docs/release-notes/RELEASE-NOTES-2.5.0.md +173 -0
  8. package/docs/release-notes/RELEASE-NOTES-2.6.0.md +268 -0
  9. package/docs/test-timing.md +77 -40
  10. package/installer.js +225 -45
  11. package/package.json +6 -3
  12. package/preset-declaration.js +38 -7
  13. package/prompt-corpus-persona/persona-corpus.json +13 -13
  14. package/prompt-corpus-persona/persona-corpus.md +113 -39
  15. package/prompt-corpus-v2/formal-verify-v2.json +128 -92
  16. package/prompt-corpus-v2/formal-verify-v2.md +380 -142
  17. package/prompt-corpus-v3/formal-verify-v3.json +117 -81
  18. package/prompt-corpus-v3/formal-verify-v3.md +693 -1189
  19. package/prompt-corpus-v4/formal-verify-v4.json +38 -8
  20. package/prompt-corpus-v4/formal-verify-v4.md +157 -25
  21. package/prompt-corpus-v5/prompt-corpus-v5.json +17 -17
  22. package/prompt-corpus-v5/prompt-corpus-v5.md +32 -26
  23. package/tests/audit-installer-compat.test.mjs +70 -4
  24. package/tests/audit-installer-policy.test.mjs +229 -4
  25. package/tests/audit-persona-sensitivity.mjs +68 -8
  26. package/tests/audit-persona-surface.test.mjs +21 -8
  27. package/tests/audit-v5-sensitivity.mjs +47 -6
  28. package/tests/e2e-v5-round2.test.mjs +825 -1
  29. package/tests/formal-verify-v2.test.mjs +57 -2
  30. package/tests/formal-verify-v3.test.mjs +67 -2
  31. package/tests/formal-verify-v4.test.mjs +120 -4
  32. package/tests/prompt-v5-integrity.test.mjs +9 -3
  33. package/tests/run-tests.mjs +104 -23
  34. package/tests/selfdrive-v5.mjs +55 -4
  35. package/vibe-math-v2/agent.cordis.yml +20 -4
  36. package/vibe-math-v2/vibe-math-v2.js +1318 -106
  37. package/vibe-math-v2//345/256/236/347/216/260/346/226/271/346/241/210.md +20 -4
  38. package/vibe-math-v3/agent.cordis.yml +36 -14
  39. package/vibe-math-v3/vibe-math-v3.js +1348 -179
  40. package/vibe-math-v3//345/256/236/347/216/260/346/226/271/346/241/210.md +3 -3
  41. package/vibe-math-v4/agent.cordis.yml +36 -8
  42. package/vibe-math-v4/vibe-math-v4.js +1195 -57
  43. package/vibe-math-v4//345/256/236/347/216/260/346/226/271/346/241/210.md +91 -9
  44. package/vibe-math-v5/agent.cordis.yml +16 -8
  45. package/vibe-math-v5/vibe-math-v5.js +1628 -112
  46. package/vibe-math-v5//345/256/236/347/216/260/346/226/271/346/241/210.md +143 -41
@@ -6,7 +6,7 @@
6
6
  ## vibe-math-v2
7
7
 
8
8
  - 注册工具数:**25**
9
- - 斜杠命令 hint:`start|resume|pause|abort|status|report|mode <auto|manual>|setup|save|template [global|project]|add <id> <desc>|add-proposition <id> <概述>|list-propositions|project [list|new <name>|<name>]|decisions|agents`
9
+ - 斜杠命令 hint:`start|resume|pause|abort|status|report|mode <auto|manual>|setup|save|template [global|project]|add <id> <desc>|add-proposition <id> <概述>|list-propositions|project [list|new <name>|<name>]|decisions|agents|paper [lang=zh|en] [format=both|md|tex] [force]`
10
10
 
11
11
  ### config.prefix
12
12
 
@@ -28,7 +28,7 @@ programmatically runs explorer (direction setting) → per-direction solvers (ag
28
28
  - vibe_math_status / vibe_math_report — read scheduler status / full progress report (report also writes Progress_Logs/report.json).
29
29
  - vibe_math_pause / vibe_math_abort — pause / abort (abort interrupts all children).
30
30
  - vibe_math_set_mode {mode: manual|auto} — switch manual / auto control.
31
- - vibe_math_set_params {...} — tune any parameter (see vibe_math_setup for the full schema; e.g. reportMode file|push|both, promoteValueThreshold, verdictMode flat|forced, formalVerify off|encourage|require).
31
+ - vibe_math_set_params {...} — tune any parameter (see vibe_math_setup for the full schema; e.g. reportMode file|push|both, promoteValueThreshold, verdictMode flat|forced, formalVerify off|encourage|require, finalPaper true|false, paperFormat both|md|tex, paperLanguage zh|en, paperCompilePdf true|false, paperLatexCommand <engine>).
32
32
  - vibe_math_setup / vibe_math_save_settings / vibe_math_template — guided configuration / persist defaults / generate template.
33
33
  - vibe_math_new_project / vibe_math_set_project / vibe_math_list_projects — per-project folders.
34
34
  - vibe_math_list_decisions / vibe_math_decide {id, action: approve|reject|override, verdict?} — resolve manual decisions.
@@ -37,13 +37,21 @@ programmatically runs explorer (direction setting) → per-direction solvers (ag
37
37
  verification (execute / archive / list the reuse library). The scheduler's child agents
38
38
  use them too; they work in every mode.
39
39
 
40
- A /vibe slash command mirrors the main controls. Data lives under {{cwd}}/VibeMath/Projects/<project>/
40
+ Final paper: strict termination writes Paper/<project>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}
41
+ automatically — a dedicated paper-writing child assembles the solved material (finalPaper=false disables only that
42
+ automatic run). /vibe paper [lang=zh|en] [format=both|md|tex] [force] writes or rewrites it by hand. md/tex follow
43
+ paperFormat; a PDF is produced only when a LaTeX engine is detected and paperCompilePdf is true.
44
+ A /vibe slash command mirrors the main controls (/vibe start|resume|pause|abort|status|report|mode <auto|manual>|setup|save|template [global|project]|add <id> <desc>|add-proposition <id> <概述>|list-propositions|project [list|new <name>|<name>]|decisions|agents|paper [lang=zh|en] [format=both|md|tex] [force]).
45
+ Data lives under {{cwd}}/VibeMath/Projects/<project>/
41
46
  (qs/qs.json, Propos/<分类>_Propos.json, Reliable/, Verified/, Verification_logs/, Progress_Logs/, VibeMath_State/)
42
47
  and survives restarts via vibe_math_resume.
43
48
 
44
49
  Key rules to remember when reporting: a problem is "solved" when one of its solutions reaches
45
50
  正确概率 = 1; a proposition reaches 布尔估计 = 1/0 when a proof/refutation in its lists reaches
46
51
  正确概率 = 1; Propos propositions with 价值/关键性 ≥ promoteValueThreshold auto-promote to qs.json.
52
+ Closure rule (identical across the presets): the 1/0 values above are written ONLY by the scheduler,
53
+ after ≥2 independent verifier agents settle the object (one lone reviewer can never conclude), and
54
+ Verified/ is written by that same scheduler path — an agent's own self-reported 1 is never a conclusion.
47
55
  When the user asks about progress, call vibe_math_report and summarize in plain language.
48
56
 
49
57
  Configuration highlights (all tunable via vibe_math_set_params / the settings file):
@@ -94,7 +102,7 @@ programmatically runs explorer (direction setting) → per-direction solvers (ag
94
102
  - vibe_math_status / vibe_math_report — read scheduler status / full progress report (report also writes Progress_Logs/report.json).
95
103
  - vibe_math_pause / vibe_math_abort — pause / abort (abort interrupts all children).
96
104
  - vibe_math_set_mode {mode: manual|auto} — switch manual / auto control.
97
- - vibe_math_set_params {...} — tune any parameter (see vibe_math_setup for the full schema; e.g. reportMode file|push|both, promoteValueThreshold, verdictMode flat|forced, formalVerify off|encourage|require).
105
+ - vibe_math_set_params {...} — tune any parameter (see vibe_math_setup for the full schema; e.g. reportMode file|push|both, promoteValueThreshold, verdictMode flat|forced, formalVerify off|encourage|require, finalPaper true|false, paperFormat both|md|tex, paperLanguage zh|en, paperCompilePdf true|false, paperLatexCommand <engine>).
98
106
  - vibe_math_setup / vibe_math_save_settings / vibe_math_template — guided configuration / persist defaults / generate template.
99
107
  - vibe_math_new_project / vibe_math_set_project / vibe_math_list_projects — per-project folders.
100
108
  - vibe_math_list_decisions / vibe_math_decide {id, action: approve|reject|override, verdict?} — resolve manual decisions.
@@ -103,13 +111,21 @@ programmatically runs explorer (direction setting) → per-direction solvers (ag
103
111
  verification (execute / archive / list the reuse library). The scheduler's child agents
104
112
  use them too; they work in every mode.
105
113
 
106
- A /vibe slash command mirrors the main controls. Data lives under {{cwd}}/VibeMath/Projects/<project>/
114
+ Final paper: strict termination writes Paper/<project>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}
115
+ automatically — a dedicated paper-writing child assembles the solved material (finalPaper=false disables only that
116
+ automatic run). /vibe paper [lang=zh|en] [format=both|md|tex] [force] writes or rewrites it by hand. md/tex follow
117
+ paperFormat; a PDF is produced only when a LaTeX engine is detected and paperCompilePdf is true.
118
+ A /vibe slash command mirrors the main controls (/vibe start|resume|pause|abort|status|report|mode <auto|manual>|setup|save|template [global|project]|add <id> <desc>|add-proposition <id> <概述>|list-propositions|project [list|new <name>|<name>]|decisions|agents|paper [lang=zh|en] [format=both|md|tex] [force]).
119
+ Data lives under {{cwd}}/VibeMath/Projects/<project>/
107
120
  (qs/qs.json, Propos/<分类>_Propos.json, Reliable/, Verified/, Verification_logs/, Progress_Logs/, VibeMath_State/)
108
121
  and survives restarts via vibe_math_resume.
109
122
 
110
123
  Key rules to remember when reporting: a problem is "solved" when one of its solutions reaches
111
124
  正确概率 = 1; a proposition reaches 布尔估计 = 1/0 when a proof/refutation in its lists reaches
112
125
  正确概率 = 1; Propos propositions with 价值/关键性 ≥ promoteValueThreshold auto-promote to qs.json.
126
+ Closure rule (identical across the presets): the 1/0 values above are written ONLY by the scheduler,
127
+ after ≥2 independent verifier agents settle the object (one lone reviewer can never conclude), and
128
+ Verified/ is written by that same scheduler path — an agent's own self-reported 1 is never a conclusion.
113
129
  When the user asks about progress, call vibe_math_report and summarize in plain language.
114
130
 
115
131
  Configuration highlights (all tunable via vibe_math_set_params / the settings file):
@@ -144,7 +160,7 @@ LEAN FORMAL VERIFICATION (formalVerify, a tunable parameter):
144
160
  ## vibe-math-v3
145
161
 
146
162
  - 注册工具数:**33**
147
- - 斜杠命令 hint:`start|resume|pause|abort|status|report|mode <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`
163
+ - 斜杠命令 hint:`start [override]|resume [override]|pause|abort|status|report|mode <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]`
148
164
 
149
165
  ### config.prefix
150
166
 
@@ -173,7 +189,8 @@ is experiential reference.
173
189
  - vibe_math_add_problem {id, description, priority, dependencies?} — add a problem (creates Problems/<id>.md).
174
190
  - vibe_math_add_proposition {id, 概述, 概率, 优先级, 价值/关键性, 分类} — add a proposition (Propos/<分类>/<id>.md).
175
191
  - vibe_math_list_propositions — list the proposition knowledge base.
176
- - vibe_math_start / vibe_math_resume — start / resume the scheduler (resume = continue after checkpoint/restart).
192
+ - vibe_math_start / vibe_math_resume — start / resume the scheduler (resume = continue after checkpoint/restart);
193
+ both accept override=true to take the project lock over from another session (only after you verified that session is gone).
177
194
  - vibe_math_status / vibe_math_report — read status / full progress report (report writes Progress_Logs/report.json + Logs/报告.md).
178
195
  - vibe_math_pause / vibe_math_abort — pause / abort.
179
196
  - vibe_math_set_mode {mode: manual|auto} — switch manual / auto (manual gates: 计划审批 / 裁决 / 方法晋升).
@@ -181,12 +198,16 @@ is experiential reference.
181
198
  plannerEnabled/plannerProvider/plannerModel/plannerPersona, planMinIntervalMs, plannerMaxFails,
182
199
  methodKeepIntervalMs/methodKeepEvery, methodAutoPromote, indexAutoRebuild, projectLockTimeoutMs,
183
200
  formalVerify/leanCommand/leanArgs/leanTimeoutMs — Lean 形式化验证(off = 默认不额外要求,
184
- encourage = 按实现难度自行形式化、Lean 通过后审查对象变为忠实性,require = 同上并加结论门禁)).
201
+ encourage = 按实现难度自行形式化、Lean 通过后审查对象变为忠实性,require = 同上并加结论门禁),
202
+ finalPaper/paperFormat/paperLanguage/paperCompilePdf/paperLatexCommand — 最终论文(收口时自动派遣
203
+ 「论文撰写」子代理,把已收口的解法/命题/成果整理成 Paper/<project>/;finalPaper=false 只关自动触发,
204
+ /vibe paper 仍可手动触发)。
185
205
  - vibe_math_setup / vibe_math_save_settings / vibe_math_template — guided configuration / persist defaults / generate template.
186
206
  - vibe_math_plan {force?} — show queued plan / last plan, or force a planning round.
187
207
  - vibe_math_index — rebuild State/index.json from the Markdown knowledge base.
188
208
  - vibe_math_method_add / vibe_math_method_list — manually add / list method cards (Methods/ + global).
189
- - vibe_math_lock_status — project lock occupancy.
209
+ - 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).
210
+ 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.
190
211
  - vibe_math_new_project / vibe_math_set_project / vibe_math_list_projects — per-project folders.
191
212
  - vibe_math_list_decisions / vibe_math_decide {id, action: approve|reject|override, verdict?} — resolve manual decisions.
192
213
  - vibe_math_list_agents / vibe_math_message_agent / vibe_math_interrupt_agent — inspect / steer / interrupt subagents.
@@ -194,14 +215,20 @@ is experiential reference.
194
215
  verification (execute / archive / list the reuse library). The scheduler's child agents
195
216
  use them too; they work in every mode.
196
217
 
197
- A /vibe slash command mirrors the main controls (/vibe start|resume|pause|abort|status|report|mode
198
- <auto|manual>|setup|save|add <id> <desc>|add-proposition <id> <概述>|list-propositions|methods|index|plan|lock|...).
218
+ A /vibe slash command mirrors the main controls (/vibe start [override]|resume [override]|pause|abort|status|report|mode
219
+ <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]).
199
220
  Data survives restarts via vibe_math_resume.
200
221
 
201
222
  Key rules when reporting: a problem is "solved" when one of its 解法候选 entries reaches 概率 = 1
202
223
  (the scheduler writes Verified/问题/<id>.md); a proposition reaches 已验证·真/假 when a 证明/证伪
203
- entry reaches 概率 = 1 (Verified/命题/<id>.md); Propos propositions with 价值/关键性 ≥
204
- promoteValueThreshold auto-promote into Problems/ as "判断下述命题是否成立:<命题>" (verification
224
+ entry reaches 概率 = 1 (Verified/命题/<id>.md).
225
+ Closure rule (identical across the presets): those 概率 = 1 values are written ONLY by the scheduler,
226
+ after ≥2 independent verifier agents settle the object (a lone reviewer can never conclude; see
227
+ minVotes), and Verified/ is written by that same scheduler path — a self-reported 1 is never a
228
+ conclusion. Propos propositions whose 价值/关键性 ≥
229
+ promoteValueThreshold (write that anchor on the proposition card, or report it as lemmas[].价值/关键性 in
230
+ vibe_math_sync_meta — default 0.5 never promotes) and that are still undecided
231
+ auto-promote into Problems/ as "判断下述命题是否成立:<命题>" (verification
205
232
  results sync back to the source proposition); a solver-reported sub-question q_sub registers THREE
206
233
  objects (q_sub problem + judge problem + p-tmp temporary-assumption proposition) with full 来源与动机.
207
234
 
@@ -250,7 +277,8 @@ is experiential reference.
250
277
  - vibe_math_add_problem {id, description, priority, dependencies?} — add a problem (creates Problems/<id>.md).
251
278
  - vibe_math_add_proposition {id, 概述, 概率, 优先级, 价值/关键性, 分类} — add a proposition (Propos/<分类>/<id>.md).
252
279
  - vibe_math_list_propositions — list the proposition knowledge base.
253
- - vibe_math_start / vibe_math_resume — start / resume the scheduler (resume = continue after checkpoint/restart).
280
+ - vibe_math_start / vibe_math_resume — start / resume the scheduler (resume = continue after checkpoint/restart);
281
+ both accept override=true to take the project lock over from another session (only after you verified that session is gone).
254
282
  - vibe_math_status / vibe_math_report — read status / full progress report (report writes Progress_Logs/report.json + Logs/报告.md).
255
283
  - vibe_math_pause / vibe_math_abort — pause / abort.
256
284
  - vibe_math_set_mode {mode: manual|auto} — switch manual / auto (manual gates: 计划审批 / 裁决 / 方法晋升).
@@ -258,12 +286,16 @@ is experiential reference.
258
286
  plannerEnabled/plannerProvider/plannerModel/plannerPersona, planMinIntervalMs, plannerMaxFails,
259
287
  methodKeepIntervalMs/methodKeepEvery, methodAutoPromote, indexAutoRebuild, projectLockTimeoutMs,
260
288
  formalVerify/leanCommand/leanArgs/leanTimeoutMs — Lean 形式化验证(off = 默认不额外要求,
261
- encourage = 按实现难度自行形式化、Lean 通过后审查对象变为忠实性,require = 同上并加结论门禁)).
289
+ encourage = 按实现难度自行形式化、Lean 通过后审查对象变为忠实性,require = 同上并加结论门禁),
290
+ finalPaper/paperFormat/paperLanguage/paperCompilePdf/paperLatexCommand — 最终论文(收口时自动派遣
291
+ 「论文撰写」子代理,把已收口的解法/命题/成果整理成 Paper/<project>/;finalPaper=false 只关自动触发,
292
+ /vibe paper 仍可手动触发)。
262
293
  - vibe_math_setup / vibe_math_save_settings / vibe_math_template — guided configuration / persist defaults / generate template.
263
294
  - vibe_math_plan {force?} — show queued plan / last plan, or force a planning round.
264
295
  - vibe_math_index — rebuild State/index.json from the Markdown knowledge base.
265
296
  - vibe_math_method_add / vibe_math_method_list — manually add / list method cards (Methods/ + global).
266
- - vibe_math_lock_status — project lock occupancy.
297
+ - 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).
298
+ 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.
267
299
  - vibe_math_new_project / vibe_math_set_project / vibe_math_list_projects — per-project folders.
268
300
  - vibe_math_list_decisions / vibe_math_decide {id, action: approve|reject|override, verdict?} — resolve manual decisions.
269
301
  - vibe_math_list_agents / vibe_math_message_agent / vibe_math_interrupt_agent — inspect / steer / interrupt subagents.
@@ -271,14 +303,20 @@ is experiential reference.
271
303
  verification (execute / archive / list the reuse library). The scheduler's child agents
272
304
  use them too; they work in every mode.
273
305
 
274
- A /vibe slash command mirrors the main controls (/vibe start|resume|pause|abort|status|report|mode
275
- <auto|manual>|setup|save|add <id> <desc>|add-proposition <id> <概述>|list-propositions|methods|index|plan|lock|...).
306
+ A /vibe slash command mirrors the main controls (/vibe start [override]|resume [override]|pause|abort|status|report|mode
307
+ <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]).
276
308
  Data survives restarts via vibe_math_resume.
277
309
 
278
310
  Key rules when reporting: a problem is "solved" when one of its 解法候选 entries reaches 概率 = 1
279
311
  (the scheduler writes Verified/问题/<id>.md); a proposition reaches 已验证·真/假 when a 证明/证伪
280
- entry reaches 概率 = 1 (Verified/命题/<id>.md); Propos propositions with 价值/关键性 ≥
281
- promoteValueThreshold auto-promote into Problems/ as "判断下述命题是否成立:<命题>" (verification
312
+ entry reaches 概率 = 1 (Verified/命题/<id>.md).
313
+ Closure rule (identical across the presets): those 概率 = 1 values are written ONLY by the scheduler,
314
+ after ≥2 independent verifier agents settle the object (a lone reviewer can never conclude; see
315
+ minVotes), and Verified/ is written by that same scheduler path — a self-reported 1 is never a
316
+ conclusion. Propos propositions whose 价值/关键性 ≥
317
+ promoteValueThreshold (write that anchor on the proposition card, or report it as lemmas[].价值/关键性 in
318
+ vibe_math_sync_meta — default 0.5 never promotes) and that are still undecided
319
+ auto-promote into Problems/ as "判断下述命题是否成立:<命题>" (verification
282
320
  results sync back to the source proposition); a solver-reported sub-question q_sub registers THREE
283
321
  objects (q_sub problem + judge problem + p-tmp temporary-assumption proposition) with full 来源与动机.
284
322
 
@@ -304,7 +342,7 @@ When the user asks about progress, call vibe_math_report and summarize in plain
304
342
  ## vibe-math-v4
305
343
 
306
344
  - 注册工具数:**32**
307
- - 斜杠命令 hint:`configure|start|resume|pause|abort|status|report|message <to|all> <content>|meeting|members|add|remove|set`
345
+ - 斜杠命令 hint:`configure|start|resume|pause|abort|status|report|message <to|all> <content>|meeting|paper [lang=zh|en] [format=md|tex|both] [editor=office|resident:<id>] [force]|members|add|remove|set`
308
346
 
309
347
  ### config.prefix
310
348
 
@@ -353,7 +391,7 @@ Data lives under {{cwd}}/VibeMath/Projects/<project>/:
353
391
  Main controls (recommended flow: configure FIRST, then start):
354
392
  - vibe_v4_configure {project?, problem?, params?} — create/configure the project (name, problem, params) WITHOUT starting a run; set everything here first.
355
393
  - vibe_v4_start {problem?, residentCount?, seedDirections?} — begin the run (spawn residents, brainstorm). If problem was configured, omit it.
356
- - vibe_v4_set {residentCount, compactThreshold, compactAfterRounds, meetingKeepEvery, maxParallel, activityTimeoutMs, stallAutoMeetingMs, verdictMaxRounds, provider, model, residentPersona, toolAllow, toolDeny, formalVerify, leanCommand, leanArgs, leanTimeoutMs} — tune params (persisted to the settings file). provider/model override the residents' LLM route (empty = they inherit YOUR model/provider); toolAllow/toolDeny are per-resident tool permissions (empty = they inherit all tools). stallAutoMeetingMs is the stalled-group auto-sync-meeting threshold (分级保活 B). formalVerify (off|encourage|require, default off) enables Lean formal verification; leanCommand/leanArgs/leanTimeoutMs configure the toolchain.
394
+ - vibe_v4_set {residentCount, compactThreshold, compactAfterRounds, meetingKeepEvery, maxParallel, activityTimeoutMs, stallAutoMeetingMs, verdictMaxRounds, provider, model, residentPersona, toolAllow, toolDeny, formalVerify, leanCommand, leanArgs, leanTimeoutMs, finalPaper, paperFormat, paperLanguage, paperCompilePdf, paperEditor, paperLatexCommand} — tune params (persisted to the settings file). provider/model override the residents' LLM route (empty = they inherit YOUR model/provider); toolAllow/toolDeny are per-resident tool permissions (empty = they inherit all tools). stallAutoMeetingMs is the stalled-group auto-sync-meeting threshold (分级保活 B). formalVerify (off|encourage|require, default off) enables Lean formal verification; leanCommand/leanArgs/leanTimeoutMs configure the toolchain. The FINAL PAPER is tuned by finalPaper (true|false, default true), paperFormat (both|md|tex), paperLanguage (zh|en), paperCompilePdf (true|false), paperEditor (office|resident:<id>, default office = the human/assistant side finalises) and paperLatexCommand.
357
395
  - vibe_v4_resume / vibe_v4_pause / vibe_v4_abort / vibe_v4_status / vibe_v4_report.
358
396
  - vibe_v4_message {to|all, content} — inject a message to a resident (human/assistant intervention).
359
397
  - vibe_v4_meeting {agenda} — force a meeting.
@@ -363,14 +401,28 @@ Main controls (recommended flow: configure FIRST, then start):
363
401
  (execute / archive / list the reuse library). Residents use them too; they work in every mode.
364
402
  - vibe_v4_formal_report — human-readable Lean formal-verification mirror (mode, Lean-passed
365
403
  objects, recorded blockers, formalization TODO, library paths).
366
- - vibe_v4_prompts {which: brainstorm|normal|heartbeat|verify|coreRules, member?, target?, stage?} — read the exact prompt text a resident would receive (prompt auditing; prompt text is the product).
367
- A /v4 slash command mirrors the main controls (configure|start|resume|pause|abort|status|report|message <to|all> <content>|meeting|members|add|remove|set).
404
+ - vibe_v4_prompts {which: brainstorm|normal|heartbeat|meeting|verify|coreRules, member?, target?, stage?} — read the exact prompt text a resident would receive (prompt auditing; prompt text is the product).
405
+ A /v4 slash command mirrors the main controls (configure|start [problem]|resume|pause|abort|status|report|message <to|all> <content>|meeting|paper [lang=zh|en] [format=md|tex|both] [editor=office|resident:<id>] [force]|members|add|remove|set <k=v>...).
406
+ Final paper: after the unanimous stop vote the run enters a PAPER phase — every resident writes their part, each
407
+ cross-reviews at least one other part, and the paperEditor finalises (office = the human/assistant side, or one named
408
+ resident); only then is the run marked complete. finalPaper=false skips the phase; /v4 paper [lang=zh|en]
409
+ [format=md|tex|both] [editor=office|resident:<id>] [force] starts or re-runs it by hand.
368
410
 
369
411
  TRUST RULE: only Verified/ (and Propos/ entries marked 已验证·真/假) are absolutely
370
412
  trustworthy; everything else — unverified resident claims, Progress/, Method claims —
371
413
  is experiential reference. A proposition / method / theory only reaches Verified/ when
372
414
  ALL residents unanimously agree true (or all agree false); otherwise it stays in its
373
- library with a probability estimate.
415
+ library with a probability estimate. Closure rule (identical across the presets): the framework
416
+ writes the Verified/ card — a resident's own claim never does — and what counts as a vote is
417
+ stated once in the VOTE CONTRACT below.
418
+
419
+ VOTE CONTRACT: a verification vote is a probability of truth in [0,1], but only an EXACT
420
+ 1 (absolutely true) and an EXACT 0 (absolutely false) count as a vote. Anything strictly
421
+ between (0.9, 0.95, 0.5 …) is an ABSTENTION carrying that probability estimate: the run
422
+ does NOT conclude, and the group's MEAN probability is written back to the object's card
423
+ so it stays in its library with a probability. The same absoluteness applies to the
424
+ meeting stop-vote: every resident on the roster must answer `voteSolved:true` — one
425
+ abstention keeps the run alive.
374
426
 
375
427
  LEAN FORMAL VERIFICATION (formalVerify, a tunable parameter):
376
428
  - 'off' (default, no extra requirement) | 'encourage' (the residents decide by implementation
@@ -438,7 +490,7 @@ Data lives under {{cwd}}/VibeMath/Projects/<project>/:
438
490
  Main controls (recommended flow: configure FIRST, then start):
439
491
  - vibe_v4_configure {project?, problem?, params?} — create/configure the project (name, problem, params) WITHOUT starting a run; set everything here first.
440
492
  - vibe_v4_start {problem?, residentCount?, seedDirections?} — begin the run (spawn residents, brainstorm). If problem was configured, omit it.
441
- - vibe_v4_set {residentCount, compactThreshold, compactAfterRounds, meetingKeepEvery, maxParallel, activityTimeoutMs, stallAutoMeetingMs, verdictMaxRounds, provider, model, residentPersona, toolAllow, toolDeny, formalVerify, leanCommand, leanArgs, leanTimeoutMs} — tune params (persisted to the settings file). provider/model override the residents' LLM route (empty = they inherit YOUR model/provider); toolAllow/toolDeny are per-resident tool permissions (empty = they inherit all tools). stallAutoMeetingMs is the stalled-group auto-sync-meeting threshold (分级保活 B). formalVerify (off|encourage|require, default off) enables Lean formal verification; leanCommand/leanArgs/leanTimeoutMs configure the toolchain.
493
+ - vibe_v4_set {residentCount, compactThreshold, compactAfterRounds, meetingKeepEvery, maxParallel, activityTimeoutMs, stallAutoMeetingMs, verdictMaxRounds, provider, model, residentPersona, toolAllow, toolDeny, formalVerify, leanCommand, leanArgs, leanTimeoutMs, finalPaper, paperFormat, paperLanguage, paperCompilePdf, paperEditor, paperLatexCommand} — tune params (persisted to the settings file). provider/model override the residents' LLM route (empty = they inherit YOUR model/provider); toolAllow/toolDeny are per-resident tool permissions (empty = they inherit all tools). stallAutoMeetingMs is the stalled-group auto-sync-meeting threshold (分级保活 B). formalVerify (off|encourage|require, default off) enables Lean formal verification; leanCommand/leanArgs/leanTimeoutMs configure the toolchain. The FINAL PAPER is tuned by finalPaper (true|false, default true), paperFormat (both|md|tex), paperLanguage (zh|en), paperCompilePdf (true|false), paperEditor (office|resident:<id>, default office = the human/assistant side finalises) and paperLatexCommand.
442
494
  - vibe_v4_resume / vibe_v4_pause / vibe_v4_abort / vibe_v4_status / vibe_v4_report.
443
495
  - vibe_v4_message {to|all, content} — inject a message to a resident (human/assistant intervention).
444
496
  - vibe_v4_meeting {agenda} — force a meeting.
@@ -448,14 +500,28 @@ Main controls (recommended flow: configure FIRST, then start):
448
500
  (execute / archive / list the reuse library). Residents use them too; they work in every mode.
449
501
  - vibe_v4_formal_report — human-readable Lean formal-verification mirror (mode, Lean-passed
450
502
  objects, recorded blockers, formalization TODO, library paths).
451
- - vibe_v4_prompts {which: brainstorm|normal|heartbeat|verify|coreRules, member?, target?, stage?} — read the exact prompt text a resident would receive (prompt auditing; prompt text is the product).
452
- A /v4 slash command mirrors the main controls (configure|start|resume|pause|abort|status|report|message <to|all> <content>|meeting|members|add|remove|set).
503
+ - vibe_v4_prompts {which: brainstorm|normal|heartbeat|meeting|verify|coreRules, member?, target?, stage?} — read the exact prompt text a resident would receive (prompt auditing; prompt text is the product).
504
+ A /v4 slash command mirrors the main controls (configure|start [problem]|resume|pause|abort|status|report|message <to|all> <content>|meeting|paper [lang=zh|en] [format=md|tex|both] [editor=office|resident:<id>] [force]|members|add|remove|set <k=v>...).
505
+ Final paper: after the unanimous stop vote the run enters a PAPER phase — every resident writes their part, each
506
+ cross-reviews at least one other part, and the paperEditor finalises (office = the human/assistant side, or one named
507
+ resident); only then is the run marked complete. finalPaper=false skips the phase; /v4 paper [lang=zh|en]
508
+ [format=md|tex|both] [editor=office|resident:<id>] [force] starts or re-runs it by hand.
453
509
 
454
510
  TRUST RULE: only Verified/ (and Propos/ entries marked 已验证·真/假) are absolutely
455
511
  trustworthy; everything else — unverified resident claims, Progress/, Method claims —
456
512
  is experiential reference. A proposition / method / theory only reaches Verified/ when
457
513
  ALL residents unanimously agree true (or all agree false); otherwise it stays in its
458
- library with a probability estimate.
514
+ library with a probability estimate. Closure rule (identical across the presets): the framework
515
+ writes the Verified/ card — a resident's own claim never does — and what counts as a vote is
516
+ stated once in the VOTE CONTRACT below.
517
+
518
+ VOTE CONTRACT: a verification vote is a probability of truth in [0,1], but only an EXACT
519
+ 1 (absolutely true) and an EXACT 0 (absolutely false) count as a vote. Anything strictly
520
+ between (0.9, 0.95, 0.5 …) is an ABSTENTION carrying that probability estimate: the run
521
+ does NOT conclude, and the group's MEAN probability is written back to the object's card
522
+ so it stays in its library with a probability. The same absoluteness applies to the
523
+ meeting stop-vote: every resident on the roster must answer `voteSolved:true` — one
524
+ abstention keeps the run alive.
459
525
 
460
526
  LEAN FORMAL VERIFICATION (formalVerify, a tunable parameter):
461
527
  - 'off' (default, no extra requirement) | 'encourage' (the residents decide by implementation
@@ -479,8 +545,8 @@ When the user asks about progress, call vibe_v4_report and summarize in plain la
479
545
 
480
546
  ## vibe-math-v5
481
547
 
482
- - 注册工具数:**35**
483
- - 斜杠命令 hint:`configure|start|resume|pause|stop|status|report|members|message|meeting|hire|fire|add|remove|set`
548
+ - 注册工具数:**37**
549
+ - 斜杠命令 hint:`configure|start|resume|pause|stop|status|report|members|message|meeting|hire|fire|add|remove|set|paper [lang=en] [format=tex] [editor=office] [force]`
484
550
 
485
551
  ### config.prefix
486
552
 
@@ -537,23 +603,27 @@ Data lives under {{cwd}}/VibeMath/Projects/<project>/Institutes/<institute>/:
537
603
  Shared/TaskBoard.md (human view), Shared/Chat/<day>.md,
538
604
  Shared/Meetings/<id>.md, Shared/Debates/<target>.md,
539
605
  Problems/<id>.md, Verified/<kind>/<id>.md (read-only; m-vote only),
540
- State/ (a human-readable MIRROR only — the authoritative state is the
541
- session log projection; never hand-edit State/).
606
+ State/ (the AUTHORITATIVE state is State/<institute>.v5state.json in this
607
+ directory; it is a hardened JSON file, never a host session log. Everything
608
+ else here and elsewhere in the tree is a human-readable MIRROR — never
609
+ hand-edit any of it).
542
610
 
543
611
  Main controls (recommended flow: configure FIRST, then start):
544
612
  - vibe_v5_configure {project?, institute?, problem?, params?} — create/configure the institute WITHOUT starting it.
545
613
  - vibe_v5_start {problem?, researcherCount?, academician?, seedDirections?} — found the institute (academician + researchers) and begin.
546
- - vibe_v5_set {…} — tune params (persisted). provider/model override staff LLM routes (empty = inherit YOUR route); toolAllow/toolDeny restrict staff tools.
614
+ - vibe_v5_set {…} — tune params (persisted). provider/model override staff LLM routes (empty = inherit YOUR route); toolAllow/toolDeny restrict staff tools; finalPaper/paperFormat/paperLanguage/paperCompilePdf/paperEditor/paperLatexCommand tune the FINAL PAPER.
547
615
  - vibe_v5_pause / vibe_v5_resume / vibe_v5_stop / vibe_v5_status / vibe_v5_report.
548
616
  - vibe_v5_message {to|all, content} — relay a human message into the institute.
549
617
  - vibe_v5_meeting {agenda, kind} — convene a meeting.
550
618
  - vibe_v5_members — roster (office/employer/status/direction).
551
619
  - vibe_v5_hire / vibe_v5_fire — temp workers: hire one (office, academician or a permanent researcher) / dismiss one for real.
552
620
  - vibe_v5_add_researcher / vibe_v5_remove_researcher — OFFICE only: add or dismiss a PERMANENT researcher (the academician can only propose those).
621
+ - vibe_v5_paper {lang?, format?, editor?, force?} — write the FINAL PAPER: the permanent staff write their own parts, cross-review each other, then the editor finalises. lang/format/editor override this one paper only.
622
+ - vibe_v5_finalize_paper {decision, note, conclusion?} — OFFICE only when paperEditor=office: consult the institute first (>=1 office message + >=1 meeting), then finalise and put the conclusion in note.
553
623
  - vibe_v5_lean_run / vibe_v5_lean_archive / vibe_v5_lean_lib — Lean formal
554
624
  verification (execute / archive / list the reuse library). Members use them
555
625
  too; they work in every mode.
556
- A /v5 slash command mirrors these (configure|start|resume|pause|stop|status|report|members|message|meeting|hire|fire|add|remove|set).
626
+ A /v5 slash command mirrors these (configure|start|resume|pause|stop|status|report|members|message|meeting|hire|fire|add|remove|set|paper).
557
627
 
558
628
  LEAN FORMAL VERIFICATION (formalVerify, a tunable parameter):
559
629
  - 'off' (default, no extra requirement) | 'encourage' (members decide by
@@ -634,23 +704,27 @@ Data lives under {{cwd}}/VibeMath/Projects/<project>/Institutes/<institute>/:
634
704
  Shared/TaskBoard.md (human view), Shared/Chat/<day>.md,
635
705
  Shared/Meetings/<id>.md, Shared/Debates/<target>.md,
636
706
  Problems/<id>.md, Verified/<kind>/<id>.md (read-only; m-vote only),
637
- State/ (a human-readable MIRROR only — the authoritative state is the
638
- session log projection; never hand-edit State/).
707
+ State/ (the AUTHORITATIVE state is State/<institute>.v5state.json in this
708
+ directory; it is a hardened JSON file, never a host session log. Everything
709
+ else here and elsewhere in the tree is a human-readable MIRROR — never
710
+ hand-edit any of it).
639
711
 
640
712
  Main controls (recommended flow: configure FIRST, then start):
641
713
  - vibe_v5_configure {project?, institute?, problem?, params?} — create/configure the institute WITHOUT starting it.
642
714
  - vibe_v5_start {problem?, researcherCount?, academician?, seedDirections?} — found the institute (academician + researchers) and begin.
643
- - vibe_v5_set {…} — tune params (persisted). provider/model override staff LLM routes (empty = inherit YOUR route); toolAllow/toolDeny restrict staff tools.
715
+ - vibe_v5_set {…} — tune params (persisted). provider/model override staff LLM routes (empty = inherit YOUR route); toolAllow/toolDeny restrict staff tools; finalPaper/paperFormat/paperLanguage/paperCompilePdf/paperEditor/paperLatexCommand tune the FINAL PAPER.
644
716
  - vibe_v5_pause / vibe_v5_resume / vibe_v5_stop / vibe_v5_status / vibe_v5_report.
645
717
  - vibe_v5_message {to|all, content} — relay a human message into the institute.
646
718
  - vibe_v5_meeting {agenda, kind} — convene a meeting.
647
719
  - vibe_v5_members — roster (office/employer/status/direction).
648
720
  - vibe_v5_hire / vibe_v5_fire — temp workers: hire one (office, academician or a permanent researcher) / dismiss one for real.
649
721
  - vibe_v5_add_researcher / vibe_v5_remove_researcher — OFFICE only: add or dismiss a PERMANENT researcher (the academician can only propose those).
722
+ - vibe_v5_paper {lang?, format?, editor?, force?} — write the FINAL PAPER: the permanent staff write their own parts, cross-review each other, then the editor finalises. lang/format/editor override this one paper only.
723
+ - vibe_v5_finalize_paper {decision, note, conclusion?} — OFFICE only when paperEditor=office: consult the institute first (>=1 office message + >=1 meeting), then finalise and put the conclusion in note.
650
724
  - vibe_v5_lean_run / vibe_v5_lean_archive / vibe_v5_lean_lib — Lean formal
651
725
  verification (execute / archive / list the reuse library). Members use them
652
726
  too; they work in every mode.
653
- A /v5 slash command mirrors these (configure|start|resume|pause|stop|status|report|members|message|meeting|hire|fire|add|remove|set).
727
+ A /v5 slash command mirrors these (configure|start|resume|pause|stop|status|report|members|message|meeting|hire|fire|add|remove|set|paper).
654
728
 
655
729
  LEAN FORMAL VERIFICATION (formalVerify, a tunable parameter):
656
730
  - 'off' (default, no extra requirement) | 'encourage' (members decide by