dsh-vibe-math 2.8.3 → 2.8.5

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 (50) hide show
  1. package/README.en.md +19 -4
  2. package/README.md +19 -4
  3. package/cordis.patch.yml +8 -8
  4. package/docs/COMPAT-AUDIT-ROUND2.md +27 -0
  5. package/docs/final-paper.md +13 -0
  6. package/docs/formal-verification.md +6 -6
  7. package/docs/release-notes/README.en.md +2 -0
  8. package/docs/release-notes/README.md +2 -0
  9. package/docs/release-notes/RELEASE-NOTES-2.8.4.en.md +48 -0
  10. package/docs/release-notes/RELEASE-NOTES-2.8.4.md +48 -0
  11. package/docs/release-notes/RELEASE-NOTES-2.8.5.en.md +75 -0
  12. package/docs/release-notes/RELEASE-NOTES-2.8.5.md +75 -0
  13. package/package.json +7 -3
  14. package/prompt-corpus-persona/persona-corpus.json +9 -9
  15. package/prompt-corpus-persona/persona-corpus.md +17 -17
  16. package/prompt-corpus-v2/formal-verify-v2.json +109 -109
  17. package/prompt-corpus-v2/formal-verify-v2.md +216 -216
  18. package/prompt-corpus-v3/formal-verify-v3.json +77 -77
  19. package/prompt-corpus-v3/formal-verify-v3.md +147 -147
  20. package/prompt-corpus-v4/formal-verify-v4.json +10 -10
  21. package/prompt-corpus-v4/formal-verify-v4.md +40 -40
  22. package/prompt-corpus-v5/prompt-corpus-v5.json +61 -61
  23. package/prompt-corpus-v5/prompt-corpus-v5.md +613 -186
  24. package/tests/audit-artifact-docs.mjs +38 -2
  25. package/tests/audit-artifact-docs.mutants.mjs +66 -1
  26. package/tests/audit-engine-faces.mjs +2 -2
  27. package/tests/audit-persona-surface.test.mjs +4 -1
  28. package/tests/audit-prompt-invariants.mjs +292 -2
  29. package/tests/e2e-v5-round2.test.mjs +248 -2
  30. package/tests/formal-verify-v2.test.mjs +6 -5
  31. package/tests/formal-verify-v3.test.mjs +6 -5
  32. package/tests/formal-verify-v4.test.mjs +4 -4
  33. package/tests/prompt-v5-integrity.test.mjs +6 -6
  34. package/tests/run-tests.mjs +18 -2
  35. package/tests/v4-final-paper.mutants.mjs +14 -0
  36. package/tests/v4-final-paper.test.mjs +18 -0
  37. package/tests/v5-institute-fixes.mutants.mjs +115 -0
  38. package/vibe-math-v2/agent.cordis.yml +2 -2
  39. package/vibe-math-v2/math-computation.js +5 -5
  40. package/vibe-math-v2/vibe-math-v2.js +66 -17
  41. package/vibe-math-v3/agent.cordis.yml +2 -2
  42. package/vibe-math-v3/math-computation.js +5 -5
  43. package/vibe-math-v3/vibe-math-v3.js +64 -15
  44. package/vibe-math-v4/agent.cordis.yml +6 -6
  45. package/vibe-math-v4/math-computation.js +5 -5
  46. package/vibe-math-v4/vibe-math-v4.js +71 -20
  47. package/vibe-math-v5/agent.cordis.yml +6 -6
  48. package/vibe-math-v5/math-computation.js +5 -5
  49. package/vibe-math-v5/vibe-math-v5.js +385 -34
  50. package/vibe-math-v5//345/256/236/347/216/260/346/226/271/346/241/210.md +55 -2
@@ -1215,7 +1215,7 @@ exitCode 0 且哈希一致的记录才允许补归档。成员可用 `vibe_v5_le
1215
1215
 
1216
1216
  **搜索路径(修订 §2)**:每次 spawn 在**用户 `leanArgs` 之后、文件名之前**追加
1217
1217
  `leanSearchPaths`(按用户给的顺序,去重)再追加自动的 **绝对** VibeMath 根;用户 `leanArgs` 里
1218
- 已有 `--search-path`/`-R`/`--root` 时**不注入**(显式优先)。编译 `cwd` 仍是研究所根,所以注入
1218
+ 已有 `-R`/`--root` 时**不注入**(显式优先)。编译 `cwd` 仍是研究所根,所以注入
1219
1219
  的是绝对路径。模块根 = VibeMath 根 ⇒ 复用写 `import Formal.Lib.<name>` / `Formal.Proved.<name>`。
1220
1220
 
1221
1221
  **主动性(`leanInitiative`,修订 §1)**:与 `formalVerify` 分工——后者只决定**验证时**的要求强度,
@@ -1368,6 +1368,7 @@ tex 只用 §5 允许的常见宏包,转义 `_ % & # $ { } ~ ^ \`。
1368
1368
  | `vibe_v5_task_list` | `{ status?, owner?, ready?, cursor?, limit? }` | 列任务 |
1369
1369
  | `vibe_v5_task_get` | `{ task_id }` | 读单个任务(改前必读) |
1370
1370
  | `vibe_v5_task_update` | `{ task_id, expected_revision, action, … }` | CAS 变更任务 |
1371
+ | `vibe_v5_feedback` | `{ op:'add'\|'update'\|'list'\|'summary', id?, category?, route?, context?, phenomenon?, impact?, action?, assessment?, outcome?, status?, note?, all? }` | **工作经验/流程反馈库**(§15.4,`Shared/Feedback/`):`add` 写一条(interpersonal 必带 `assessment`)|`update` 状态流转+回填(interpersonal 闭环必带 `outcome`)|`list` 默认只看未闭环|`summary` 计数 |
1371
1372
  | `vibe_v5_hire` | `{ kind:'temp', purpose, initial_task, direction? }` | **雇佣临时工**(院士/研究员) |
1372
1373
  | `vibe_v5_fire` | `{ id, reason }` | **解雇临时工**(雇主/院士/所办) |
1373
1374
  | `vibe_v5_members` | `{}` | 编制名册(职位/雇主/状态/方向),供所办与院士速查 |
@@ -1422,6 +1423,34 @@ tex 只用 §5 允许的常见宏包,转义 `_ % & # $ { } ~ ^ \`。
1422
1423
  | `V5_NOT_OFFICE` | 调用者不是**可证明的会话根(所办)**:空身份或成员身份一律拒绝(`configure/start/resume/pause/stop/set` 与 `/v5` 的变更类子命令) |
1423
1424
  | `V5_PAPER_STATE` | 论文流程不在此阶段/不存在:例如定稿代表在全稿尚未写完或未互审时定稿 |
1424
1425
  | `V5_PAPER_CONSULT_REQUIRED` | `paperEditor='office'` 定稿前必须先与全所交流:至少 1 条所办消息 + 至少 1 次所办会议(`vibe_v5_finalize_paper` 返回,含当前计数) |
1426
+ | `V5_FEEDBACK_DISABLED` | `feedback='off'`(§16):**每个 op 都具名拒绝**(绝不静默写入、绝不假装成功);`add/update/list/summary` 一视同仁 |
1427
+ | `V5_FEEDBACK_BAD_CATEGORY` / `V5_FEEDBACK_BAD_ROUTE` / `V5_FEEDBACK_BAD_STATUS` / `V5_FEEDBACK_BAD_OP` / `V5_FEEDBACK_NO_ID` | 入参不在闭集合内或缺 `id`:具名说明取值范围(类别/路由/状态/op 见 §15.4) |
1428
+ | `V5_FEEDBACK_INCOMPLETE` | `add` 缺 `phenomenon`/`impact`/`action`(现象/影响/已做的调整或建议) |
1429
+ | `V5_FEEDBACK_NEEDS_ASSESSMENT` | **interpersonal 路由**必须带 `assessment`(要不要让别人改、改了是否真更优)——self/team 无此要求 |
1430
+ | `V5_FEEDBACK_NEEDS_OUTCOME` | **interpersonal 闭环**必须回填 `outcome`(事后验证)——这正是该路由存在的理由 |
1431
+ | `V5_FEEDBACK_NEEDS_REASON` | `status='dropped'` 必须写 `note`/`outcome`:评估结论也要留痕,否则下一轮会重提 |
1432
+ | `V5_FEEDBACK_FORBIDDEN` | 既不是发起人也不是所办:成员只能更新**自己**发起的条目 |
1433
+ | `V5_FEEDBACK_NOT_FOUND` | 没有该 `id`(先用 `op=list` 确认) |
1434
+
1435
+ ### 15.4 工作经验/流程反馈库(`vibe_v5_feedback`,`Shared/Feedback/`)
1436
+
1437
+ **边界**:本库是**方法论/协作层**——怎么一起工作(组织、流程、合作、障碍、摩擦)。研究进展进 `Progress/`,已确立结论进 `Verified/`;本库条目**永远不是**数学结论的证据。
1438
+
1439
+ **类别**(按类别分文件,文件名为英文键):`cooperation` 合作|`management` 管理|`process` 流程|`obstacle` 障碍|`conflict` 矛盾。
1440
+ 每条含:时间/发起人/类别/**路由**/情境/现象/影响/**已做的调整或建议**/**状态**/(仅 interpersonal)**评估 + 事后验证**。
1441
+
1442
+ **三条路由(决定"处理"意味着什么,尤其是"谁需要做点什么")**:
1443
+ - `self`:我自己的做法/习惯/踩坑 ⇒ **自己调整即可,无需任何人采纳**;最多分享以免他人踩坑。
1444
+ - `team`:研究所的组织/工作流/组织模式调整 ⇒ **同样无需审批**,属自我调节,觉得不好就**及时调整**。
1445
+ - `interpersonal`:问题由**别人**造成、只有别人改变才能解决 ⇒ **唯一**需要先**缜密评估**("要不要改、改了是否真更优")并在之后**回填事后验证**的路由。
1446
+
1447
+ **状态(闭集合)**:`open` 未处理|`adjusted` 已自我调整(self/team 的常规终点,无需审批)|`closed` 已回填结果(interpersonal 必须带 `outcome`)|`dropped` 评估后决定不改(需理由)。`list` 默认只列**未闭环**(`open|adjusted`),`all:true` 看全部;`summary` 按类别/路由计数。
1448
+
1449
+ **权限/持久化**:成员与临时工可 `add`,且只能 `update` **自己发起的**条目;**所办**可 `update` 任何条目(标记解决/回填结果)。条目是**耐久状态**(`State/<研究所>.v5state.json` 的 `feedback`,经 fold 的 CAS 更新,不会因两人同时写入丢条目);镜像写入 `Shared/Feedback/<类别>.md`(人读)+ `Shared/Feedback/index.json`(结构化索引),写入失败只在返回值里具名(`mirror:false`),不新增告警通道。
1450
+
1451
+ **开关与提示词**:参数 `feedback`(默认 `'on'`,见 §16)。`'on'` 时每一轮提示词注入一小段(为什么记/记什么/三条路由/记了之后会怎样,并写明与 `Progress/`、`Verified/` 的边界);`'off'` 时该段**不注入**,且工具的每个 op **具名拒绝**(`V5_FEEDBACK_DISABLED`)。**记录是鼓励而非强制**:不设字数/条数硬上限,具体程度由代理自行把控。
1452
+
1453
+ **可观测与闭环**:`vibe_v5_feedback {op:'summary'}`/`vibe_v5_report`(`## 反馈库` 段)/`vibe_v5_overview`(`## 反馈库` 段)三处计数**必须一致**(条目总数/未闭环数/按类别/按路由);院士**周期性汇总**成"改进方案"条目,self/team 路由**自我调整并记录结果**,interpersonal 路由**评估+事后验证**——不得只收集不使用。
1425
1454
 
1426
1455
  Lean 工具另外会返回**非错误码**的失败原因(都属于"可读结果"而非异常):`NO_SUBPROCESS`(宿主没有 subprocess 服务)、`LEAN_NOT_FOUND`(解析不到 `leanCommand`)、`LEAN_SPAWN_FAILED`、`LEAN_RUN_FAILED`、`LEAN_FAILED`(编译器非零退出)、`LEAN_TIMEOUT`。
1427
1456
 
@@ -1485,7 +1514,7 @@ Lean 工具另外会返回**非错误码**的失败原因(都属于"可读结
1485
1514
  | `leanTimeoutMs` | `120000` | 单次 Lean 运行的上限(<1000 会被抬到 1000);异步队列里也是**每个作业**的预算 |
1486
1515
  | `leanAsync` | `true` | **后台编译队列**(§14.6):`true` = `lean_run`/`lean_archive{run:true}` 入队即返回(`async:{jobId,state}`),心跳驱动、`settled(ok)` 才 `passed`;`false` = 完全回到同步 `await`。只接受真布尔或文档拼写,`'false'` 不得为真值 |
1487
1516
  | `leanInitiative` | `'normal'` | **日常主动性**(与 `formalVerify` 分工):`off` 不注入日常形式化提醒|`normal` 沿用今天(提醒随 `formalVerify`)|`eager` 即使 `formalVerify='off'` 也注入并要求主动形式化有价值的小引理/命题/定义。非法值回退 `'normal'` |
1488
- | `leanSearchPaths` | `[]` | 额外搜索根:注入在用户 `leanArgs` 之后、自动 VibeMath 根之前,去重;`leanArgs` 已有 `--search-path`/`-R`/`--root` 时不注入(显式优先) |
1517
+ | `leanSearchPaths` | `[]` | 额外搜索根:注入在用户 `leanArgs` 之后、自动 VibeMath 根之前,去重;`leanArgs` 已有 `-R`/`--root` 时不注入(显式优先) |
1489
1518
  | `leanJobsMaxParallel` | `1` | 同时运行的后台编译数(<1 抬到 1;1 = 串行) |
1490
1519
  | `mathComputation` | `'auto'` | **数学计算工具开关**(§14.8):`'off'` 工具整体不可用(`MATH_NOT_AVAILABLE` + 开启提示,提示词**零提及**)|`'auto'`(默认)|`'on'`;默认值与归一化都取自共享模块 `./math-computation.js` |
1491
1520
  | `mathMode` | `'typed+shell'` | 提示词策略(插件**无法强制**宿主 shell,见 R9):`'typed+shell'` 允许 shell 兜底但结论必须标注"未经工具归档"|`'typed'` 不出现 shell 兜底句,且 `engine='cli'` 返回 `MATH_REFUSED` |
@@ -1493,6 +1522,7 @@ Lean 工具另外会返回**非错误码**的失败原因(都属于"可读结
1493
1522
  | `mathTimeoutMs` | `60000` | 单次计算预算(<1000 抬到 1000) |
1494
1523
  | `mathPackages` | `[]` | 本次要求存在的包/工具箱(缺包只报告并出安装计划,**不自动装**) |
1495
1524
  | `mathInstallScope` | `'user'` | 安装作用域 `'user'`(默认)|`'system'`(**每次显式给出、永不记忆**);商业引擎永不代装 |
1525
+ | `feedback` | `'on'` | **工作经验/流程反馈库开关**(§15.4):`'on'`(默认)工具可用且每轮注入一小段说明|`'off'` 不注入提示词段,且每个 op **具名拒绝**(`V5_FEEDBACK_DISABLED`;绝不静默写入)。未知拼写回退默认——它是**开关,不是强度** |
1496
1526
  | `finalPaper` | `true` | **最终论文**(§14.7):收口时自动撰写;`false` = 自动关闭(手动 `/v5 paper` 仍可用并在返回里说明)。未知拼写显式拒绝(回退默认) |
1497
1527
  | `paperFormat` | `'both'` | `both`|`md`|`tex`(`paperFormat=md` 时不产出 tex,编译静默跳过) |
1498
1528
  | `paperLanguage` | `'zh'` | `zh`(ctexart,xelatex 优先)|`en`(article,pdflatex 优先) |
@@ -1726,3 +1756,26 @@ FIFO 提议队列 + 去重窗口;独立初评(快照后清空本轮票);
1726
1756
  - **修法**:两处 founding catch 与其它三处一样写 `failReason: isActivationLimitReached(e) ? 'activation-limit' : 'other'`;`status().members[]` 与 `status().failedMembers[]` 增加 `failReason`(公开面可审计,不必再按错误文本反推)。
1727
1757
  - **守卫(可测的"没有兜底也能工作")**:新增文档化的测试缝 `V5_SPAWN_RETRY_STRICT=1` —— 它让 `isCapRefusedMember()` **只认耐久 `failReason`**、完全关闭错误文本匹配(读在每次调用)。同一场景跑两遍(normal / STRICT):派生队列必须**逐一相同**且等于失败集合;实现见 `_oneoff/g6b-failreason.mjs`(控制组 **6/0**,同时校验 `status()` 公开面与**状态文件**里的 `failReason`;变异"删掉 researcher 分支的新写入"(单站点)⇒ 具名红)。
1728
1758
  - **边界**:`reconcileProvisioning()` 里"重启找不到子会话"导致的 `failed` **不是**容量拒绝,因此不带该标记(它靠 `Object.assign({}, m, …)` 保留原有标记,不会被误分类为待补建)。
1759
+
1760
+ ---
1761
+
1762
+ ## 附:研究所规章(charter)的实现方式
1763
+
1764
+ **结论:规章不是一份让代理去读的文件,而是"按成员生成、注入人设、入职冻结"的文本块。**
1765
+
1766
+ | 环节 | 实现 | 位置 |
1767
+ |---|---|---|
1768
+ | 生成 | `charterFor(member)` 用代码拼出该成员的章程(含 `【二、通用规章(全员必读)】` 等分节) | `vibe-math-v5.js` L1548 / L1626 |
1769
+ | 注入 | 拼进成员的**人设**(persona) | L2083 `return (extra ? extra+'\n\n' : '') + charterFor(member)` |
1770
+ | 冻结 | **入职时冻结**,此后名册变化**不改**已入职成员看到的版本(快照) | L22 / L2063-2066 |
1771
+ | 存活 | 冷恢复(resume)复用同一份;上下文被压缩后仍声明**依然有效**(因为它在人设里) | L2066 / L1757 |
1772
+
1773
+ **为什么这样设计**
1774
+ - **无需代理主动阅读**:代理一入职就在自己的上下文里看到规则 ⇒ 不依赖"它会不会去读文件" ✓。
1775
+ - **冻结快照**:保证"你当时被告知的编制与规则"不会在事后漂移(否则代理会按旧认知行动却被新规则判罚)✓。
1776
+ - **压缩后仍有效**:规则在人设里,压缩不会把它挤掉——这一点依赖它**留在注入文本**中 ✓。
1777
+
1778
+ **推论(对"把冗长内容外置为'详见…'"的约束)**
1779
+ - **不可外置**:规章、哲学(如"宁可未定论,也不要一个骗人的结论")、表决规则 ⇒ 必须**始终在上下文**里 ✓。
1780
+ - **可外置**:工具用法细节(回执字段、`mode` 取值、归档/重跑流程、LaTeX 探测步骤)⇒ 可以"一句话摘要 + 详见 `<工作区内路径>`" ✓。
1781
+ - **同源要求**:若额外提供可读文件,必须与 `charterFor()` **同源生成**(同一函数产出),否则会出现"两处真相" ✗。