docs(plan): mark acceptance R3 (in-grant recovery) done
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
86af723b2a
commit
6e01497b3a
1 file changed
+2
-2
@@ -18,7 +18,7 @@
|
||||
|
||||
1. `03` 清单里的 P0 还没修完(后台循环绕过任务引擎;HTTP 请求里同步执行重活)。
|
||||
2. 版本号还是 0.0.0。
|
||||
3. REQ §15.2 要求 M1 必须验证的一项"授权内异常调查**与恢复**"没有实现,也没有在任务书里写明延期。
|
||||
3. REQ §15.2 要求 M1 必须验证的一项"授权内异常调查**与恢复**"没有实现,也没有在任务书里写明延期。 **已修(86af723):按方案 (a) 实现,见 R3。**
|
||||
4. `POST /organization-records` 的 `sourcePaths` 可以指向服务器上任意路径,Move 时还会删源,违背原则 5。
|
||||
|
||||
补充说明:
|
||||
@@ -34,7 +34,7 @@
|
||||
|---|---|---|---|
|
||||
| R1 | `03` 的 P0 未落地。`start()` 的 `tick` 仍在直接调 `planImport`/`executeRecord`(`sweepPendingImports`),没有租约保护;`/download-cache/cleanup` 和 `/library/reconcile` 在 HTTP 请求里同步执行 | `apps/server/src/modules/acquisition-organize/index.ts:118-151`,`routes/downloads.ts`、`routes/library.ts` | 按 03 清单 P0 改为 enqueue,并返回 `{taskId, runId}`。W4-D 合入且 ci 通过后,再重跑本报告第 3 节的 e2e |
|
||||
| R2 | 所有包和 app 的版本都是 `0.0.0`,`/health` 返回的也是 `version:"0.0.0"`;仓库里没有任何 tag | `apps/server/deno.json:3` 等 10 处 | 统一改成 `0.1.0`(server 的 `denoJson.version` 会写进备份清单和 health),再打 `v0.1.0` tag |
|
||||
| R3 | REQ §15.2 要求 M1 验证"授权内异常调查与恢复",AT68 也要求"查证后自动执行获准修正并继续"。现在后台调查固定是 `plan_only`:E5 只把结论写回待处理事项并交还人工,没有自动恢复这条路径 | `apps/server/src/modules/agent/service.ts:323-340`,`test/e2e/e5-auto-investigate.test.ts` | 二选一。(a) 在有 `automation_grant` 时允许调查 run 以 `execute` 模式调用 `task.retry` 或 `identity.resolve`,并加一条 e2e:下载失败 → 调查 → 授权内重试 → 入库。(b) 在 `00` §3.2 写明"授权内恢复延到 M2",并在 README 的范围说明里注明。不能不写就发布 |
|
||||
| R3 | REQ §15.2 要求 M1 验证"授权内异常调查与恢复",AT68 也要求"查证后自动执行获准修正并继续"。现在后台调查固定是 `plan_only`:E5 只把结论写回待处理事项并交还人工,没有自动恢复这条路径 | `apps/server/src/modules/agent/service.ts:323-340`,`test/e2e/e5-auto-investigate.test.ts` | 二选一。(a) 在有 `automation_grant` 时允许调查 run 以 `execute` 模式调用 `task.retry` 或 `identity.resolve`,并加一条 e2e:下载失败 → 调查 → 授权内重试 → 入库。(b) 在 `00` §3.2 写明"授权内恢复延到 M2",并在 README 的范围说明里注明。不能不写就发布 **已修(86af723):按 (a) 实现。`agent.autoInvestigateMode=recover` 且有覆盖恢复动作的持续授权(绑定策略须为 published)时,调查 run 以 execute 模式运行,白名单为只读能力加 `task.retry` / `download.recheck`(新增能力)/ `identity.resolve`,换源、删除、清理不在白名单内。恢复结果按 download_task / task / source_release 的业务状态核实,核实通过后事项 resolved,run 汇报"已恢复(系统核实)"。没有授权时降级为只读调查,并在事项上留下建议。同一根因的尝试次数有上限。新增 e2e `e6-auto-recover`,覆盖 missingFiles → recheck → 核实、无授权降级、换源被拒、去重、尝试上限和预算超限** |
|
||||
| R4 | `POST /organization-records` 的 `sourcePaths` 没有任何根目录约束。持 `organize.execute` 的 API Key 可以 walk 任意目录(dryRun 时会泄漏文件清单),也可以把任意文件 Move 进媒体库并删掉源文件。这条路径不检查 automation_grant,也不检查 H&R | `apps/server/src/modules/acquisition-organize/services/organize.ts:229-241`,`routes/organization.ts:84-130` | `sourcePaths` 必须落在已登记的下载器路径映射(本机视图)或显式的导入根下,并且不能在任何 library_root 内;`action=move` 且调用方是 api_key 时要求有持续授权。补 403/422 反例测试 |
|
||||
|
||||
### 1.2 应修(v0.1.x 内,11 项)
|
||||
|
||||
Reference in new issue
Block a user