dsh-vibe-math 2.5.0 → 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.
- package/README.en.md +41 -2
- package/README.md +41 -2
- package/cordis.patch.yml +22 -8
- package/docs/AUDIT-CHECKLIST.md +2 -2
- package/docs/final-paper.md +171 -0
- package/docs/release-notes/RELEASE-NOTES-2.6.0.md +268 -0
- package/docs/test-timing.md +8 -4
- package/package.json +5 -3
- package/prompt-corpus-persona/persona-corpus.json +13 -13
- package/prompt-corpus-persona/persona-corpus.md +49 -21
- package/prompt-corpus-v2/formal-verify-v2.json +12 -0
- package/prompt-corpus-v2/formal-verify-v2.md +144 -53
- package/prompt-corpus-v3/formal-verify-v3.json +36 -0
- package/prompt-corpus-v3/formal-verify-v3.md +405 -78
- package/tests/audit-persona-sensitivity.mjs +60 -7
- package/tests/audit-persona-surface.test.mjs +16 -7
- package/tests/e2e-v5-round2.test.mjs +471 -1
- package/tests/formal-verify-v2.test.mjs +3 -0
- package/tests/formal-verify-v3.test.mjs +4 -0
- package/tests/prompt-v5-integrity.test.mjs +9 -3
- package/tests/selfdrive-v5.mjs +55 -4
- package/vibe-math-v2/agent.cordis.yml +14 -4
- package/vibe-math-v2/vibe-math-v2.js +819 -11
- package/vibe-math-v3/agent.cordis.yml +10 -4
- package/vibe-math-v3/vibe-math-v3.js +800 -11
- package/vibe-math-v4/agent.cordis.yml +12 -4
- package/vibe-math-v4/vibe-math-v4.js +793 -8
- package/vibe-math-v5/agent.cordis.yml +8 -4
- package/vibe-math-v5/vibe-math-v5.js +1116 -8
- package/vibe-math-v5//345/256/236/347/216/260/346/226/271/346/241/210.md +70 -1
|
@@ -1210,6 +1210,62 @@ runaway 的编译器会在框架已经报告超时之后继续存活;`done`
|
|
|
1210
1210
|
路径大小写差异漏掉了 VibeMath 根的绝对路径,语料因此不确定且泄露本机路径——已修)。
|
|
1211
1211
|
|
|
1212
1212
|
|
|
1213
|
+
### 14.7 最终论文(`finalPaper`)
|
|
1214
|
+
|
|
1215
|
+
**时序(规格 v2 §A1,关键)**:论文阶段发生在**标记完成之前**。`checkSolved` 判定"全体有表决权者
|
|
1216
|
+
一致认为原问题已解决"后**不再**立刻 `finishRun`,而是先进入论文阶段;只有论文定稿(或降级结束并
|
|
1217
|
+
上报)之后才置 `phase='solved'` / `autoDone` / `running=false`。原因:`finishRun` 之后
|
|
1218
|
+
`wakeIfIdle` 拒绝唤醒、`startMeeting` 拒绝召开、`scheduleNext` 直接返回——合写、互审、所办交流
|
|
1219
|
+
都不可能有唤醒路径。论文阶段用 `wakeMember`(kind=`paper`)+ `paperPass()` 驱动,**不依赖调度器**。
|
|
1220
|
+
|
|
1221
|
+
**参数**(§16):`finalPaper`(默认 true,收口自动触发;`false` 时手动命令仍可用并在返回里说明
|
|
1222
|
+
"自动已关闭")、`paperFormat`(`both|md|tex`)、`paperLanguage`(`zh|en`)、`paperCompilePdf`、
|
|
1223
|
+
`paperEditor`(`academician` 默认|`office`)、`paperLatexCommand`(强制单一引擎,空 = 自动检测)。
|
|
1224
|
+
未知/非法拼写显式归一化并回退默认(v2 §B);`vibe_v5_set` 是**闭集** schema,六个键都必须在其中
|
|
1225
|
+
(`audit-prompt-invariants` 的 I14 断言"schema 广告的键必须真被参数层接受")。
|
|
1226
|
+
|
|
1227
|
+
**触发**:① 自动——收口判定处进入(幂等:`inst().paper` 已是 finalized 就直接走补写路径);
|
|
1228
|
+
② 手动——`/v5 paper [lang=zh|en] [format=both|md|tex] [editor=office|academician] [force]` 或
|
|
1229
|
+
`vibe_v5_paper`(`editor=` 是**一次性**覆盖,不写回持久参数)。
|
|
1230
|
+
**自动触发恒用 `academician`**:所办是根会话、没有唤醒路径,自动流程必须能无人值守完成;`office`
|
|
1231
|
+
只从手动路径进入,此时流程停在 `awaiting-editor` 等人工驱动。
|
|
1232
|
+
|
|
1233
|
+
**团队流程**:① 每位常驻研究员/院士写**自己**的部分(`paper_part`:title/solution/methods/rules/
|
|
1234
|
+
limits/evidence,只允许写库里已有证据支撑的内容,不得编造,未决/被否证必须显式标注)→ ② 合并
|
|
1235
|
+
(框架按成员顺序成稿,§3/§6/§7/§8 是成员原文,§1/§2/§4/§5/§9 由状态与文件推导)→ ③ **互审**:
|
|
1236
|
+
每人审**另一位**成员的部分(`paper_review`:`of` + `deliverable` 布尔 + `comments`)→ ④ 一致认同:
|
|
1237
|
+
**全体**参与成员 `deliverable=true` 才进入定稿;有反对则进入下一轮(`PAPER_MAX_ROUNDS=3`),超限
|
|
1238
|
+
记警告并把分歧写进**附录** → ⑤ 定稿代表(`paperEditor`)梳理成最终稿:院士用 `paper_final`
|
|
1239
|
+
(`decision=deliverable|revise`)决策;**若为 `office`,所办必须先与全所交流**——至少 1 条所办消息
|
|
1240
|
+
(`vibe_v5_message`,在 `say` 的落点计数)+ 至少 1 次**真实召开**的所办会议(在 `beginMeeting` 的
|
|
1241
|
+
落点计数;框架自动召集的停滞会议带 `auto:true`,不计入),二者都满足才允许
|
|
1242
|
+
`vibe_v5_finalize_paper`,且**定稿说明(note)必填**、交流计数写入 `paper.meta.json`;未满足返回
|
|
1243
|
+
`V5_PAPER_CONSULT_REQUIRED`(负用例:跳过交流直接定稿必须被拒)。
|
|
1244
|
+
全程往来(谁写了什么、谁提了什么意见、如何采纳)写入 `Paper/<id>/paper.log.md`。
|
|
1245
|
+
轮次上限、代表不在册(回退 office)、看门狗跳过未交稿者都记 `warnings` 并写入正文。
|
|
1246
|
+
|
|
1247
|
+
**产物与幂等**:`Paper/<研究所 id>/`(`idSafe(instituteName)`,空则 run id,统一由 `PAPER_FILE`
|
|
1248
|
+
构造)下 `paper.md`(`paperFormat` 含 md)、`paper.tex`(含 tex)、`paper.pdf`(编译成功)、
|
|
1249
|
+
`paper.meta.json`(参数、触发原因、`finalizedAt`、`runId`、编译引擎与结果、轮次、交流计数、分歧、
|
|
1250
|
+
警告、产物清单、证据索引)、`paper.log.md`。**幂等用 `finalizedAt` + 逐产物存在性**(不引入多文件
|
|
1251
|
+
哈希):重复触发只补写缺失产物并记日志。
|
|
1252
|
+
|
|
1253
|
+
**LaTeX(v2 §C/§D/§E)**:宿主 fs **只支持文本写**,因此 `paper.pdf` **只能由编译器子进程在
|
|
1254
|
+
`Paper/<id>/` 内产生**,插件只 `stat` 校验、绝不自己写二进制、**绝不覆盖已有 pdf**。检测/编译照抄
|
|
1255
|
+
Lean 缝隙:`sub.resolveExecutable(cmd)` + `sub.spawn({argv, cwd, stdio, graceMs})`(`paperLatexCommand`
|
|
1256
|
+
可强制单一命令;否则中文优先 `xelatex → latexmk → pdflatex → lualatex → tectonic`,英文优先
|
|
1257
|
+
`pdflatex`)。每次尝试跑两遍(`-interaction=nonstopmode`)。**重试有上限**:完整 tex → 去 `-halt-on-error`
|
|
1258
|
+
的 nonstopmode 重跑 → 换引擎 + 剥掉可选宏包(只留 `amsmath/amssymb/amsthm/geometry/ctex`)→ 最小
|
|
1259
|
+
模板(仅 `\documentclass`+正文)一次;仍失败则保留 tex+md、`compile:'failed'`、记警告并上报,
|
|
1260
|
+
**不阻塞定稿**;未检测到引擎记 `compile:'not-detected'`(本机无任何 LaTeX,真机只能走这条分支);
|
|
1261
|
+
`paperFormat=md` 且 `paperCompilePdf=true` 时**不得**产生"缺 tex"警告(tex 未产出即静默跳过编译)。
|
|
1262
|
+
tex 只用 §5 允许的常见宏包,转义 `_ % & # $ { } ~ ^ \`。
|
|
1263
|
+
|
|
1264
|
+
**测试**:`e2e-v5-round2.test.mjs` 的最终论文段(参数 schema/回退、手动与自动触发、幂等与补写、
|
|
1265
|
+
§6 的假编译器三条路径:成功→pdf、修复后成功、持续失败→降级+警告、真机"未检测到→tex+md"、
|
|
1266
|
+
路径与越权、命令覆盖与 `kind:'error'`、office 交流门禁与负用例、一致认同与轮次上限);
|
|
1267
|
+
`selfdrive-v5.mjs` 端到端跑完"收口 → 论文阶段 → 定稿 → 才标记完成"。
|
|
1268
|
+
|
|
1213
1269
|
---
|
|
1214
1270
|
|
|
1215
1271
|
## 15. 工具面
|
|
@@ -1272,13 +1328,17 @@ runaway 的编译器会在框架已经报告超时之后继续存活;`done`
|
|
|
1272
1328
|
| `vibe_v5_hire / vibe_v5_fire` | 雇佣 / 解雇**临时工** |
|
|
1273
1329
|
| `vibe_v5_add_researcher / vibe_v5_remove_researcher` | **仅所办**:增聘 / 解聘**常驻研究员**(成员只能提案) |
|
|
1274
1330
|
| `vibe_v5_report` | 生成人读汇报(编制/进展/共识/待决) |
|
|
1331
|
+
| `vibe_v5_paper { lang?, format?, force?, reason? }` | **最终论文**:开始/重跑团队合写(`lang`/`format` 覆盖本次参数,`force` 重写已定稿的;幂等时只补写缺失产物) |
|
|
1332
|
+
| `vibe_v5_finalize_paper { decision, note, conclusion?, force? }` | **仅所办 + `paperEditor='office'`**:先交流(消息 + 至少一次所办会议)后定稿;未交流返回 `V5_PAPER_CONSULT_REQUIRED`,`note` 必填 |
|
|
1275
1333
|
|
|
1276
|
-
外加 `/v5` 斜杠命令:`configure | start | resume | pause | stop | status | report | members | message | meeting | hire | fire | add | remove | set`。
|
|
1334
|
+
外加 `/v5` 斜杠命令:`configure | start | resume | pause | stop | status | report | members | message | meeting | hire | fire | add | remove | set | paper [lang=zh|en] [format=both|md|tex] [editor=office|academician] [force]`。
|
|
1277
1335
|
|
|
1278
1336
|
### 15.3 错误码(照搬 M7 风格)
|
|
1279
1337
|
|
|
1280
1338
|
`V5_INVALID_ARGUMENT`(参数缺失或非法,含"入库必须写明价值程度/动机用途计划/概率")、`V5_WRITE_FAILED`(库文件写入失败)、`V5_NOT_FOUND`(要执行的 Lean 文件不存在)、`V5_LEAD_REQUIRED`(职权不足)、`V5_NOT_ACADEMICIAN`(非院士调用院士专用工具)、`V5_NOT_MEMBER`、`V5_MEMBER_NOT_FOUND`、`V5_MEMBER_NAME_TAKEN`、`V5_MEMBER_LIMIT`、`V5_INVALID_MEMBER_NAME`、`V5_PROVISIONING_CONFLICT`、`V5_SELF_MESSAGE`、`V5_MAILBOX_FULL`、`V5_MESSAGE_TOO_LARGE`、`V5_INVALID_TIMEOUT`、`V5_WAIT_ABORTED`、`V5_TASK_LIMIT`、`V5_TASK_NOT_FOUND`、`V5_TASK_STALE_REVISION`、`V5_TASK_DELETED`、`V5_TASK_UNAUTHORIZED`、`V5_TASK_ALREADY_CLAIMED`、`V5_TASK_BLOCKED`、`V5_TASK_INVALID_TRANSITION`、`V5_TASK_HAS_DEPENDENTS`、`V5_TASK_DEPENDENCY_CYCLE`、`V5_NOT_VOTER`(临时工投票)、`V5_INVALID_VERDICT`、`V5_INSTITUTE_STATE`、`V5_INVALID_WRITE_SCOPE`、`V5_INTERNAL`(框架内部不变式被破坏——例如"要生成某成员的状态块却没有给出该成员";**宁可显式失败,也绝不猜身份**)。
|
|
1281
1339
|
| `V5_NOT_OFFICE` | 调用者不是**可证明的会话根(所办)**:空身份或成员身份一律拒绝(`configure/start/resume/pause/stop/set` 与 `/v5` 的变更类子命令) |
|
|
1340
|
+
| `V5_PAPER_STATE` | 论文流程不在此阶段/不存在:例如定稿代表在全稿尚未写完或未互审时定稿 |
|
|
1341
|
+
| `V5_PAPER_CONSULT_REQUIRED` | `paperEditor='office'` 定稿前必须先与全所交流:至少 1 条所办消息 + 至少 1 次所办会议(`vibe_v5_finalize_paper` 返回,含当前计数) |
|
|
1282
1342
|
|
|
1283
1343
|
Lean 工具另外会返回**非错误码**的失败原因(都属于"可读结果"而非异常):`NO_SUBPROCESS`(宿主没有 subprocess 服务)、`LEAN_NOT_FOUND`(解析不到 `leanCommand`)、`LEAN_SPAWN_FAILED`、`LEAN_RUN_FAILED`、`LEAN_FAILED`(编译器非零退出)、`LEAN_TIMEOUT`。
|
|
1284
1344
|
|
|
@@ -1307,6 +1367,9 @@ Lean 工具另外会返回**非错误码**的失败原因(都属于"可读结
|
|
|
1307
1367
|
| `input` | ✓ | ✓ | ✓ | 会议/辩论轮的发言正文 |
|
|
1308
1368
|
| `hire` / `fire` | ✓ | ✓ | ✗ | 临时工不能雇佣他人 |
|
|
1309
1369
|
| `vote_solved` / `solved` / `contextPct` / `compacted` | ✓ | ✓ | ✓ | 停止表决与上下文记账 |
|
|
1370
|
+
| `paper_part` | ✓ | ✓ | ✗ | **最终论文**:写自己那部分(title/solution/methods/rules/limits/evidence;只写有证据的,未决/被否证必须标注) |
|
|
1371
|
+
| `paper_review` | ✓ | ✓ | ✗ | **互审**:`{ of, deliverable: true\|false, comments }`——审另一位成员的部分 |
|
|
1372
|
+
| `paper_final` | ✓(仅定稿代表为院士时) | ✗ | ✗ | **定稿**:`{ decision: 'deliverable'\|'revise', note, conclusion? }` |
|
|
1310
1373
|
|
|
1311
1374
|
框架对**未生效**的动作必须回一条 `【框架提示】`(§11.5),不得静默丢弃。
|
|
1312
1375
|
|
|
@@ -1337,6 +1400,12 @@ Lean 工具另外会返回**非错误码**的失败原因(都属于"可读结
|
|
|
1337
1400
|
| `leanCommand` | `'lean'` | 要执行的 Lean 可执行文件(例:`'lake'`) |
|
|
1338
1401
|
| `leanArgs` | `[]` | 插在文件名之前的附加参数(例:`['env','lean']` 配合 `lakeCommand='lake'`) |
|
|
1339
1402
|
| `leanTimeoutMs` | `120000` | 单次 Lean 运行的上限(<1000 会被抬到 1000) |
|
|
1403
|
+
| `finalPaper` | `true` | **最终论文**(§14.7):收口时自动撰写;`false` = 自动关闭(手动 `/v5 paper` 仍可用并在返回里说明)。未知拼写显式拒绝(回退默认) |
|
|
1404
|
+
| `paperFormat` | `'both'` | `both`|`md`|`tex`(`paperFormat=md` 时不产出 tex,编译静默跳过) |
|
|
1405
|
+
| `paperLanguage` | `'zh'` | `zh`(ctexart,xelatex 优先)|`en`(article,pdflatex 优先) |
|
|
1406
|
+
| `paperCompilePdf` | `true` | 检测到 LaTeX 引擎时是否编译 PDF;未检测到则只交付 tex+md 并记 `compile:'not-detected'` |
|
|
1407
|
+
| `paperEditor` | `'academician'` | 定稿代表:`academician`(自动触发恒用院士——所办是根会话、无唤醒路径)|`office`(仅手动 `/v5 paper`:必须先与全所交流 + 至少一次会议) |
|
|
1408
|
+
| `paperLatexCommand` | `''` | 强制单一 LaTeX 命令(空 = 自动检测:中文 `xelatex → latexmk → pdflatex → lualatex → tectonic`,英文优先 `pdflatex`) |
|
|
1340
1409
|
| `provider` / `model` | `''` | 空 = 成员继承主代理路由 |
|
|
1341
1410
|
| `toolAllow` / `toolDeny` | `[]` | 成员工具权限(空 = 全继承)。⚠ 空 `allow:[]` 会拒绝一切工具 |
|
|
1342
1411
|
| `tempToolAllow` / `tempToolDeny` | `[]` | 临时工的工具权限(比常驻更窄;空 = 继承全部)。⚠ 空 `allow:[]` 会拒绝一切工具 |
|