# PROGRESS.md 纪律：平台级开关设计

状态：设计 → 实现
日期：2026-06-16

## 目标

把目前写死在 `workspace.assistant` 的"磁盘进度纪律"（建/读/逐项打勾 PROGRESS.md、不重做、
不做完不收尾）提炼成 **react 配置开关 `react.progressDiscipline`**，默认 off，可给任意
"多步 + 产文件"的 react 智能体开启。解决"上下文截断 → 失忆 → 工具调用乱跳/重做"。

## 机制（一处实现，全局可用）

- compiler `_compile_react`：读 `react.progressDiscipline`；为 true 时把**共享纪律文案**
  `_PROGRESS_DISCIPLINE_FRAGMENT` 追加到 systemPrompt（紧跟现有 tool_docs 注入之后，
  line ~721）。
- 文案**通用化**：用"你的工作目录"而非"工作文件夹 F"，适配 reviewer/grader 等
  （它们把 PROGRESS.md 写进各自 run 工作区，WriteFile 相对路径按会话 CWD 解析）。
- **默认 off → 现有 agent 行为零变化**，只对显式 `progressDiscipline: true` 注入。

### 天然安全边界
- **simple 子智能体走 `_compile_lam`、不走 `_compile_react`** → 这开关对它们天然无效，
  不会误注入到 multi-reviewer 的 4 个 simple 子审稿（单发、空上下文，本就不该有）。
- Q&A/单发 react agent 不开这开关即不受影响。

## 适用判据

开（多步 + 真写文件 + 单 agent 自己干）：reviewer、grader、exam-builder、paper-polisher、
rebuttal、thesis-advisor、grant-planner、literature-mapper、course-designer、academic-letters、
以及用户的研究型自建 agent（physics67/research67/lambda 等）。

不开：纯 Q&A、纯 orchestrator（靠 call_* 派活，该用 enforceLoop）、simple 子智能体（天然排除）。
> multi-reviewer orchestrator 介于两者间：它本身做多步综合+写报告，开 PROGRESS 与 enforceLoop
> 不冲突（一个管"别乱跳"，一个管"必须调够子智能体"）。默认给它开。

## 落地范围

1. **机制**：compiler 开关 + `_PROGRESS_DISCIPLINE_FRAGMENT` 常量 + 单测。
2. **第一方源 yml**：给上述 11 个 react 包的 yml 加 `react.progressDiscipline: true`
   （对"下次安装"默认带上）。
3. **已安装实例**（DB，立即生效需 bump）：
   - 第一方模板实例：作业批改助手(grader)、试卷题库助手(exam-builder)、多视角审稿(multi-reviewer)、
     顶刊审稿助手67 + 测试(top-journal-reviewer ×2) → 直插 agent_versions bump。
   - 用户研究型自建：physics67(v8)、research67(active) → 同样 bump（明显多步产文件、最受益）。
   - `workspace.assistant`(v5)已内联纪律 → yml 迁到开关、DB 暂不动（行为相同，避免无谓 bump）。
   - 其余零散自建副本(lambda 副本、data67 等) → 不动，避免噪音；用户需要可单独说。

## 文案（共享 fragment，通用版）

```
## 进度纪律（多步任务必须维护 PROGRESS.md，防"乱跳/重做/忘记")
你的对话上下文会被裁剪、容易忘掉前面做过什么；工作目录里的 `PROGRESS.md` 在磁盘上
不会丢，是你唯一可靠的"记忆"。对需要多步的任务：
1. 第一步：在工作目录建立或读取 `PROGRESS.md`——拆成有序待办 `- [ ] 描述`；已存在就先读、
   承接未完成项，不要从头重来。
2. 每一步开始前，先 ReadFile `PROGRESS.md` 确认该做哪一项、哪些已 `[x]`。
3. 完成一项立刻 EditFile 打勾 `- [x]`，并追加结果/产物路径。
4. 铁律：不重做已 `[x]` 的项；不重复整篇读没变过的文件——回顾就读 PROGRESS.md。
5. 只有 PROGRESS.md 全部 `[x]`、产物真的落盘，才 terminate。
```

## 测试

- `TestProgressDiscipline`：`progressDiscipline: true` 的 react cfg 编译后 systemPrompt 含
  "PROGRESS.md"；默认/false 不含；simple agent 即便误设也不注入（走不到 _compile_react）。

## 发布

机制 + 配置改动 → 跑回归 → v1.4.1（patch，纯增量、默认 off、无破坏）。
