From 6bd3313a227c1bc48409418858992a34fc3ad164 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Sun, 13 Sep 2026 00:48:20 +0800 Subject: [PATCH] =?UTF-8?q?docs(scheduler):=20=E5=9B=9E=E5=86=99=20M1?= =?UTF-8?q?=E2=80=93M7=20=E5=AE=9E=E7=8E=B0=E7=8A=B6=E6=80=81=E4=B8=8E=205?= =?UTF-8?q?=20=E5=A4=84=E5=AE=9E=E7=8E=B0=E6=9C=9F=E5=81=8F=E5=B7=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 里程碑表补提交号与验收结果 - 记下与设计稿的偏差:M3 拆分、a.mu 移除、interceptCh 删除、 M0 伪时钟未做(用阻塞 provider 替代)、工具执行临界区由结构保证 --- docs/zh/input-scheduler-design.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/zh/input-scheduler-design.md b/docs/zh/input-scheduler-design.md index 9f2cd79..dd379f0 100644 --- a/docs/zh/input-scheduler-design.md +++ b/docs/zh/input-scheduler-design.md @@ -445,6 +445,31 @@ go build ./... && go vet ./... go test -race -count=1 ./internal/agent/... ./internal/plugin/... ./internal/sdk/... ``` +### 实现状态(2026-09-13 完成) + +| 里程碑 | 提交 | 验收结果 | +|---|---|---| +| M1 | `9a58878` | ✅ agent 全量 + `-race`;新增 `task_test.go` 4 项 | +| M2 | `7082a50` | ✅ 新增 `scheduler_test.go` 6 组(含 O1/K1) | +| M3a+M3b | `c69a1f1` | ✅ 新增 `task_lifecycle_test.go` 5 项、`scheduler_preempt_test.go` 5 项 | +| M4 | `7565248` | ✅ 新增 `scheduler_critical_test.go` 3 项 | +| M5 | `a971fc8` | ✅ 新增 `scheduler_starvation_test.go` 4 项 | +| M6 | `4e4e0ad` | ✅ 新增 `task_terminal_test.go` 3 项 | +| M7 | `f11de37` | ✅ 新增 `scheduler_e2e_test.go` 3 项(压力/可观测/端到端) | + +实现期与设计的差异(均已回写本文档): + +1. **M3 拆为 M3a/M3b**:真正挂起要求帧跨 `prepare→run→finish`,否则 `processInput` + 会在挂起返回后继续提交。 +2. **`a.mu` 整体移除**:它原本只包住整轮 `process()`(同一 goroutine), + 移除后所有任务状态由 schedulerLoop 独占(不变量 I2/I3 可落地)。 +3. **`interceptCh` 被删除**:M3b 起中断一律走 `pendingInterrupts`,旧的 + “同行注入 + 三处 drain + 批次放弃” 已无写入者,属死代码(M4 清理)。 +4. **v1 未做 M0 的伪时钟**:所有抢占测试用“单次调用阻塞到 ctx 取消”的 + provider 达到确定性,无需注入时钟。时序型判据(老化式提升)留待需要时。 +5. **工具执行中不可抢占是被结构保证的**:让位检查只在 step 之间; + 不需要在 step 内部再判一次。 + --- ## 15. 开放问题(后续版本)