diff --git a/.doc/ops/short-term/2026-09-17-rdev-workflow-integration.md b/.doc/archive/ops/2026-09-17-rdev-workflow-integration.md similarity index 96% rename from .doc/ops/short-term/2026-09-17-rdev-workflow-integration.md rename to .doc/archive/ops/2026-09-17-rdev-workflow-integration.md index 0bb385dd..6fbd8a89 100644 --- a/.doc/ops/short-term/2026-09-17-rdev-workflow-integration.md +++ b/.doc/archive/ops/2026-09-17-rdev-workflow-integration.md @@ -1,6 +1,6 @@ --- title: "研发工作流(rdev)接入:13 阶段 / 60 文档任务" -status: in_progress +status: done created: 2026-09-17 updated: 2026-09-17 owner: Cursor @@ -63,3 +63,8 @@ mutex: workflow-def - 参考项目:`.refs/weichen-agent-system`(configs/workflows/rdev.yaml 60 stage、templates/docs 60 模板、squads/overlays 配套) - 关键约束:WF-DEF-06(无流程级依赖,precheck 先例 test_manager);doc_id `doc_proj{pid}_{taskKey}` 平铺命名 → rd_ 前缀 + +## 合入说明(2026-09-17) + +- P0+P1 已 `--no-ff` 合入本地 `dev`(含 template-depth S0+S1)。 +- P2/P3/P4 仍 planned,待独立认领。 diff --git a/.doc/audit/2026-09-17-adhoc-verification-script-empty-path-join.md b/.doc/audit/2026-09-17-adhoc-verification-script-empty-path-join.md new file mode 100644 index 00000000..9f84280b --- /dev/null +++ b/.doc/audit/2026-09-17-adhoc-verification-script-empty-path-join.md @@ -0,0 +1,45 @@ +--- +title: "临时验证脚本 Path 空字符串拼接导致跨任务取证串味" +status: done +created: 2026-09-17 +updated: 2026-09-17 +severity: low +--- + +# 临时验证脚本 Path 空字符串拼接导致跨任务取证串味 + +## 现象 + +S0.3 真 PI 打样归档时,`rd_design_input_spec-final.md` 一度被写成无关客户的商务对标报告(「掌上无线超声系统 × GE Vscan / Philips Lumify」),而非设计输入规格书终稿。 + +## 根因分析 + +产品侧小队/工作区创建正常:失败的 `rd_*` 请求因 main-completed 硬 precheck 拒绝,`task_runs.WorkspaceID` 如实为空。 + +缺陷在**本地临时取证脚本**(`.doc/test-reports/assets/2026-09-17-rdev-template-depth/run_s0_*.py`)的兜底逻辑: + +1. `ws_id = pi_result.get("workspace_id") or ""` 在响应无该字段时得到空串; +2. Python `pathlib`:`Path(bizdev_root) / ""` **坍缩为父目录本身**(无报错); +3. 随后 `root.rglob("output.md")` 扫遍共享 `data/dev/workspaces/bizdev/` 全树; +4. 「取最长文本」启发式选中历史商务任务终稿并误归档。 + +证据:会话内 `task_runs` 失败记录 `WorkspaceID=""`;`Path('/a/b') / '' == Path('/a/b')` 可复现;误归档文件内含 `adhoc_GEVsca_...` 工作区路径。 + +## 严重度 + +`low` — 仅本地取证脚本;未污染产品库、未改小队/黑板创建逻辑;同轮已用精确工作区路径重归档并随测试报告提交干净终稿。 + +## 关联整改 + +- 无需产品代码改动。 +- 经验红线:临时验证脚本禁止「空路径拼接 + 全树 `rglob` + 取最大值」组合;`work_dir`/`WorkspaceID` 为空时必须失败退出,不得扩大搜索范围。 + +## 证据 + +- 正确终稿:`.doc/test-reports/assets/2026-09-17-rdev-template-depth/rd_design_input_spec-final.md` +- 测试报告:`.doc/test-reports/2026-09-17-rdev-template-depth-test-report.md` +- 工作区 ID 生成:`internal/squad/workspace.go`(`ws_%s_%d` + UnixNano) + +## 开放问题 + +- 无。 diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index cef9f4de..b294d1cb 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -13,7 +13,8 @@ | owner | task | branch | worktree | mutex | status | |-------|------|--------|----------|-------|--------| -| Cursor | 2026-09-17-rdev-workflow-integration | feature/rdev-core | - | workflow-def | in_progress | +| Cursor | 2026-09-17-rdev-template-depth-s1-continued | feature/rdev-template-depth-s1-continued | - | rdev-templates | planned | +| Cursor | 2026-09-17-rdev-workflow-integration | feature/rdev-core | - | workflow-def | done | | Cursor | 2026-09-17-rdev-template-depth | feature/rdev-template-depth | .worktrees/feature-rdev-template-depth | rdev-templates | done | | Cursor | 2026-09-17-initial-load-perf-u2 | feature/initial-load-perf-u2 | - | web + static-delivery | done | | Codex | 2026-09-17-initial-load-performance-plan | feature/initial-load-performance-plan | .worktrees/feature-initial-load-performance-plan | loading-performance-audit | done | @@ -127,7 +128,7 @@ | holder | phase | since | scope | queue | |--------|-------|-------|-------|-------| -| Cursor | smoke | 2026-09-17 | rdev-core+template-depth | - | +| - | idle | - | - | - | **phase**: `idle` | `merging` | `smoke` | `e2e` diff --git a/.doc/ops/short-term/2026-09-17-rdev-template-depth-s1-continued.md b/.doc/ops/short-term/2026-09-17-rdev-template-depth-s1-continued.md new file mode 100644 index 00000000..f1c74091 --- /dev/null +++ b/.doc/ops/short-term/2026-09-17-rdev-template-depth-s1-continued.md @@ -0,0 +1,53 @@ +--- +title: "rdev 模板深度补强 S1 续批(阶段 06–13)" +status: planned +created: 2026-09-17 +updated: 2026-09-17 +owner: Cursor +branch: feature/rdev-template-depth-s1-continued +worktree: "-" +mutex: rdev-templates +--- + +# rdev 模板深度补强 S1 续批(阶段 06–13) + +## 目标 + +为阶段 06–13 剩余 rdev 模板补齐 ISO 13485 专业章节与逐节写作指令,lint allowlist 随批增长。 + +## 范围 + +- 约 27 份仍含「按本阶段专业结构写」通用占位的模板 +- 约 9 份中等档模板:补逐节指令与预填示例行 +- 评审记录类已较完整者可跳过或轻触 +- 方法沿用 [08-rdev模板写作规范](../../system-design/project-workflow/08-rdev模板写作规范.md) +- 详见 [backlog S1 续批](../../backlog/2026-09-17-rdev-phase2-backlog.md) + +## 非目标 + +- S2 运行时编排/配置化、S3 overlay/门禁扩面 +- P2 前端治理、P3 三样本真 PI E2E、P4 任务键命名空间化 +- 本任务档仅 planned 登记;开工前再置 `in_progress` 并占 mutex + +## 步骤 + +1. [ ] 从最新 `dev` 开 `feature/rdev-template-depth-s1-continued`,CURRENT 认领置 `in_progress` +2. [ ] 分批改写模板 + 扩展 `rdev_template_lint_test` allowlist +3. [ ] 每批 `go test -short` 相关包;可选 stub/真 PI 抽样 +4. [ ] 测试报告归档 + FEATURE-MATRIX 剩余工作更新 + +## 验收标准 + +- [ ] lint 对新补强模板全绿 +- [ ] 抽样终稿无通用占位、有实质章节结构 +- [ ] `go vet` + `go test -short` 相关范围全绿 + +## 相关链接 + +- 上游:[.doc/archive/ops/2026-09-17-rdev-template-depth.md](../../archive/ops/2026-09-17-rdev-template-depth.md) +- Backlog:[2026-09-17-rdev-phase2-backlog](../../backlog/2026-09-17-rdev-phase2-backlog.md) +- 写作规范:[08-rdev模板写作规范](../../system-design/project-workflow/08-rdev模板写作规范.md) + +## 证据 / 备注 + +S0+S1 首批(14 份)已合入 `dev`;本续批独立成轮,避免长时间占集成槽位。 diff --git a/.doc/status/FEATURE-MATRIX.md b/.doc/status/FEATURE-MATRIX.md index 42c320e8..3480a342 100644 --- a/.doc/status/FEATURE-MATRIX.md +++ b/.doc/status/FEATURE-MATRIX.md @@ -55,7 +55,7 @@ | 对话数据治理(D7) | 留存/删除口径、库·备份·日志控制、敏感字段加密边界 | deferred | deferred_enhancement(违规则升 blocker) | [计划](../remediation/2026-09-16-feature-matrix-production-readiness-plan.md) Scope Boundaries;[收口 §7.1](../remediation/2026-09-16-partial-deferred-completion-plan.md);[D7 ADR 草案](../adr/2026-09-17-d7-chat-data-retention.md);[W7 盘点](../audit/2026-09-17-d7-data-inventory.md);[报告](../test-reports/2026-09-17-w7-d7-inventory-test-report.md) | **after W7**:只读盘点完成(sessions/messages/KB/日志/备份/event)。**未发现**已确认基线违规,未写 gap-matrix。口径仍 `pending-compliance-signoff`;禁止按 365/180/30 物理删除。本行不升 done | `chat` | | 智能体小队 | 角色-任务-工作区-黑板 | done | non_blocker | [agent-squad](../system-design/agent-squad/);[test 2026-09-07](../test-reports/2026-09-07-dynamic-squad-planning-test-report.md) | 非关键步骤降级(A5/A6)属 backlog | `squad` | | 工作流治理 | 三正式工作流、设置页/DutyMode、动作级鉴权、真实 PI 三工作流 E2E、full/none 混合长链 | done | non_blocker | [三工作流整改](../remediation/2026-09-12-three-workflows-strict-governance-remediation.md);[409/职责](../test-reports/2026-09-14-workflow-plan-409-frozen-and-optional-duties-test-report.md);[鉴权](../test-reports/2026-09-14-governance-action-level-authz-test-report.md);[PI E2E](../test-reports/2026-09-16-pi-three-workflow-e2e-test-report.md);[Wave2 full/none](../test-reports/2026-09-16-wave2-real-pi-evidence-test-report.md) | full 跨用户审批 + none 免审批不阻塞已签。纯软件自举仍独立 planned | `workflow` | -| 研发设计控制(rdev) | 医疗第 4 工作流:13×60 manifest/模板、`squad.rdev_doc.v1` kind 编排、main-completed 硬 precheck、StageKey 动态化;不含前端/真 PI/键名空间化 | partial | deferred_enhancement | [设计](../system-design/project-workflow/07-研发工作流rdev接入-设计与实施计划.md);[short-term](../ops/short-term/2026-09-17-rdev-workflow-integration.md);[模板深度](../archive/ops/2026-09-17-rdev-template-depth.md);[模板深度报告](../test-reports/2026-09-17-rdev-template-depth-test-report.md);[写作规范](../system-design/project-workflow/08-rdev模板写作规范.md);[backlog](../backlog/2026-09-17-rdev-phase2-backlog.md) | **P0+P1 done**。**模板深度 S0+S1 首批 done**:leader prompt 已修(`rdev_leader` + InstructionsFile 注入);14/60 模板已补强(阶段 01–05);真 PI 打样 PASS(项目 6424 intake + 6425 `rd_design_input_spec`,`stage=RD03_design_input`)。剩余:27 份模板 + 中等档补强(S1 续批)、S2/S3、P2 前端、P3 三样本 E2E、P4 键名空间化 | `workflow-def` / `rdev-templates` | +| 研发设计控制(rdev) | 医疗第 4 工作流:13×60 manifest/模板、`squad.rdev_doc.v1` kind 编排、main-completed 硬 precheck、StageKey 动态化;不含前端/真 PI/键名空间化 | partial | deferred_enhancement | [设计](../system-design/project-workflow/07-研发工作流rdev接入-设计与实施计划.md);[short-term](../archive/ops/2026-09-17-rdev-workflow-integration.md);[模板深度](../archive/ops/2026-09-17-rdev-template-depth.md);[模板深度报告](../test-reports/2026-09-17-rdev-template-depth-test-report.md);[写作规范](../system-design/project-workflow/08-rdev模板写作规范.md);[backlog](../backlog/2026-09-17-rdev-phase2-backlog.md) | **P0+P1 done**。**模板深度 S0+S1 首批 done**:leader prompt 已修(`rdev_leader` + InstructionsFile 注入);14/60 模板已补强(阶段 01–05);真 PI 打样 PASS(项目 6424 intake + 6425 `rd_design_input_spec`,`stage=RD03_design_input`)。剩余:27 份模板 + 中等档补强(S1 续批)、S2/S3、P2 前端、P3 三样本 E2E、P4 键名空间化 | `workflow-def` / `rdev-templates` | | 纯软件项目自举 | 软件项目创建、Bootstrap、Delivery、受控工程交接 | partial | deferred_enhancement(明确不挡首发) | [设计](../system-design/2026-09-14-software-project-bootstrap-workflow.md);[ADR](../adr/2026-09-16-software-project-bootstrap-keys.md);[L1 报告](../test-reports/2026-09-16-software-project-bootstrap-test-report.md);[W5a](../test-reports/2026-09-17-w5a-software-bootstrap-ui-pi-test-report.md) | **before**:L1 + UI 仍克隆医疗模板。**after W5a**:catalog 驱动创建、软件不挂医疗 key、docs_only 真 PI 建议 delivery 且不自动激活。**SWBOOT-10 仍 stub**(W5b);本行不升 done | `workflow-design` | | IAM / 鉴权 | 项目级 API 鉴权 + RBAC;会话/阶段授权 | done | 加固 | [v3 full inventory](../audit/authorization-matrix-v3-full.md);[session 中断](../test-reports/2026-09-16-iam-route-inventory-test-report.md);[fail-closed](../test-reports/2026-09-16-wave1-iam-fail-closed-test-report.md);[410 策略](../audit/2026-09-16-bug11-410-retire-decision.md);[R13](../audit/2026-09-16-r13-data-safety-checklist.md) | 全路由 inventory + session 中断负例 + 410 冻结 + R13 基线已签 | `authz` | | 文档治理 | 法定文档生命周期 + 租约 + 受控正文读取 | done | non_blocker | [docgov](../test-reports/2026-09-08-docgov-lifecycle-and-claiming-framework-test-report.md);[正文 UI](../test-reports/2026-09-14-controlled-content-ui-acceptance.md);[canonical hash](../remediation/2026-09-14-controlled-content-canonical-hash-remediation.md) | 项目 143 只读;不终止 | `docgov` |