From 5b0efa50699b521757fee3887edb15b4f7ac0973 Mon Sep 17 00:00:00 2001 From: weichen Date: Tue, 13 Oct 2026 01:20:31 +0000 Subject: [PATCH] Record the approved K4 upload-fix scope Why: the approved plan authorizes this increment through merge and close, and the task card is the record of that scope. Evidence: stages 1-5 cite the 2026-10-13 plan approval; precheck receipt remains in the card. Impact: task metadata only; no product code yet. Refs: .task/fix-u7-k4-artifact-upload.md Co-authored-by: Cursor --- .task/fix-u7-k4-artifact-upload.md | 43 +++++++++++++++++------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/.task/fix-u7-k4-artifact-upload.md b/.task/fix-u7-k4-artifact-upload.md index 903659be..c0d4dd39 100644 --- a/.task/fix-u7-k4-artifact-upload.md +++ b/.task/fix-u7-k4-artifact-upload.md @@ -7,44 +7,49 @@ - 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 5212fef01e59b7f9e12fa7fc42cd987c6792a786 - 工作区:/home/weichen/projects/Agent-System-Dev-wt-fix-u7-k4-artifact-upload(worktree);分支:fix/u7-k4-artifact-upload -- 授权与交付终点:<本次允许的动作与终点;未授权事项写明> -- 交付模式:manual(前序人工决策,智能体 Review/合入);其他阶段明确授权后可记为 authorized-continuous +- 授权与交付终点:修复未配置 `BLOBSTORE_S3_ENDPOINT` 时带类型空 `*S3` 导致的上传 panic;Backend 回归、Dev 双进程回归、C5 K4 重测、手册/检查单与 Documents r2.3;Backend、Documents、Dev 及闭合 PR 合入。第二实例写流量不放行。 +- 交付模式:authorized-continuous - 合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入) -- 自动推进授权:无;授权范围:无;授权来源:无;授权终点:无;停止条件:无(未授权) -- 当前阶段:需求拆解;当前增量:I1(待定义) +- 自动推进授权:有;授权范围:计划「U7 C5 K4:修复未配置对象存储时的上传 panic 并重测」步骤 1–8;授权来源:用户 2026-10-13 批准该计划并指示按计划实施;授权终点:三个组件 PR 与任务卡闭合 PR 合入;停止条件:precheck/task-sync 非 READY;K4 因 panic 以外的原因失败则该轨记 FAIL 并停(R1/R2 照常交付);修复越出 blobstore/store 边界或与 Backend #183/#185 的冲突超出已批方案则暂停请示;演练触及非演练端口、服务或主检出则中止;磁盘余量低于 100GB 或 load average 高于 16 则暂停演练 +- 当前阶段:实施与自检;当前增量:I1(Backend 修复) +- 基线说明:主检出 3 个未跟踪 RDM 导出文件已原样移到 /home/weichen/projects/main-checkout-stray-20261013/,未删除。在途重叠:Backend #183 把 S3 接线搬到 service_store.go,#185 给 finishOpen 增加 migrateSchema;本修复落在 store 边界,不改这两条分支。 - 流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位) ## 目标与非目标 -<预期结果、受影响入口/模块/契约;明确不做什么。> +- 目标:team/PG 档未配置对象存储端点时,工件上传、读取、覆写、删除走本地 `--artifacts` 目录;已配置 S3 时行为不变。修复后重测 C5 K4,并回填手册、检查单与方案进展。 +- 非目标:放行第二实例写流量;独立 REPLAY;把 C4/C5 快速档接入 CI;C3 双主机;改 `content_path` 绝对路径;改 Redis G4/G5;改动 Backend #183/#185 的分支。 ## 关联方向与规划 -- 适用状态:待核对(无适用规划时说明原因) -- 主记录路径/版本:待核对(路径按仓库根目录定位,归档后不变;只引用唯一正文) -- 对应里程碑:待核对 +- 适用状态:适用 +- 主记录路径/版本:modules/documents/docs/proposals/2026-10-11-collaboration-storage-and-distribution.md(r2.2;本任务升到 r2.3) +- 对应里程碑:U7 放行检查单 C5 的工件恢复(K4) ## 需求分析 | ID | 描述 | 项目符合度及依据 | 优先级 | 验收条件 | 依赖 | 结论 | |---|---|---|---|---|---|---| -| R1 | 待填写 | 待评估 | 待定 | 待定义 | 待确认 | 待评审 | +| R1 | 未配置 S3 端点时工件走本地目录,不 panic | 符合方案 r2.2「先修上传缺陷」;源码 `app.go` 把 `(*S3)(nil)` 传入接口,`finishOpen` 只判断接口 nil | P0 | Backend 新测试先红后绿;Backend CI `vet-and-test` 绿;Dev `ci / test-pg` 的 `make test-backend-pg` 绿(GATE) | 无 | 纳入本增量 | +| R2 | 双进程真实二进制:A 上传、B 下载、sha256 一致 | 符合检查单 A6 的 HTTP 级验收入口 | P0 | `cross_artifact_roundtrip` 在 Dev PR HEAD 的 `ci / test-pg` 绿(GATE);本地对未修复二进制的红记 SELF,无法安全起实例则 NOT_RUN | R1 | 纳入本增量 | +| R3 | 在修复组合上重测 C5 K4 | 符合检查单 C5 与演练脚本判据 | P0 | `checked>0`、`missing=0`、`mismatch=0`,跨用户项目与工件访问被拒;K1–K7 与 RPO/RTO 经 evidence 记 SELF | R1 | 纳入本增量 | +| R4 | 手册、检查单与 Documents 反映重测 | 符合方案 r2.2 进展维护 | P0 | `docs/svc.md` §8.6 与检查单 C5 更新;Documents 报告追加重测节,方案升 r2.3;放行结论仍为不放行第二实例写 | R3 | 纳入本增量 | ## 方案与计划 -- 方案引用:待填写(含对象版本) -- 实施计划引用:待填写(含增量与需求 ID) -- 测试计划引用:待填写(含需求 ID 与验收条件) +- 方案引用:已批计划「U7 C5 K4:修复未配置对象存储时的上传 panic 并重测」(2026-10-13)。在 `blobstore.IsNil` 识别 nil 接口与带类型空指针,`finishOpen` 据此回落 `NewLocal` / `OpenLocalExisting`。`app.go` 不改。 +- 实施计划引用:I1 Backend 测试与修复 → I2 Dev 钉指针与双进程回归 → I3 C5 重测 → I4 文档与 Documents r2.3 → I5 Review、CI、合入与闭合 +- 测试计划引用:R1 `blobstore` 与 `store` 新测试,含 PG 门控;R2 `tests/integration/multi-instance` 的 `cross_artifact_roundtrip`;R3 `tests/ops/run_backup_drill.sh`;组合 `make test`。证据经 `make evidence`,本地为 SELF ## 阶段评审 | 阶段 | 对象版本 | 结论 | 评审人 | 时间 | 依据 | |---|---|---|---|---|---| -| 需求拆解 | 待定 | 未评审 | — | — | — | -| 需求评估 | 待定 | 未评审 | — | — | — | -| 需求表确认 | 待定 | 未评审 | — | — | — | -| 方案设计 | 待定 | 未评审 | — | — | — | -| 实施计划 | 待定 | 未评审 | — | — | — | +| 需求拆解 | 计划「U7 C5 K4」 | 通过 | 用户 | 2026-10-13 | 用户批准该计划并指示按计划实施 | +| 需求评估 | 同上 | 通过 | 用户 | 2026-10-13 | 同上;范围限定为 K4 修复与重测 | +| 需求表确认 | 本卡 R1–R4 | 通过 | 用户 | 2026-10-13 | 同上 | +| 方案设计 | store 边界 `IsNil` 回落 | 通过 | 用户 | 2026-10-13 | 同上;调用点修复作为备选未采用 | +| 实施计划 | 计划步骤 1–8 | 通过 | 用户 | 2026-10-13 | 同上 | | 实施与自检 | 待定 | 未评审 | — | — | — | | 正式测试与验收 | 待定 | 未评审 | — | — | — | | 代码 Review | 待定 | 未评审 | — | — | — | @@ -55,7 +60,7 @@ | 增量/试验 | 假设 | 范围 | 判断和停止条件 | 批准依据 | 结果 | 变更影响 | 需重审补测 | |---|---|---|---|---|---|---|---| -| 待定义 | — | — | — | 未批准 | NOT_RUN | 待评估 | 待评估 | +| I1 R1 | 带类型空指针在 store 边界回落本地目录 | blobstore 与 store | 需改 app.go 或 HTTP 契约则停 | 计划获批 | NOT_RUN | 待实施 | 待评估 | ## 同步记录 @@ -82,7 +87,7 @@ - 推荐依据:待填写 - 前置条件/待确认:待核对 - 预期产物/验收条件:待定义 -- 重复任务核对:待核对(已有/在途任务、PR 与规划记录) +- 重复任务核对:归档卡 feature-u7-ops-drills 明确本修复不在其范围。在途 Backend #183/#185 与本修复相邻,不改其分支。Dev #482/#486 也钉 backend,合入顺序在同步时再核。 - 启动授权:未授权(建议不自动启动新任务,仍须明确授权) ## 合入与清理