Browse Source

docs(tdd): 主理人 O-3 收口——判据③细化为「SC 关联提交级」核验,5 个 SC 转正跑通(SC-G-02/G-06/P-03/P-10/P-11),累计已跑通 0→5、阻塞 5→0;补齐 O-4 §4.2 节 + 新增 O-3 §4.3 收口节;sc-key-map 5 行转正 + 计数口径同步;DEV_GOAL/sc-key-map/汇报三方同步(附录 G 主工作树 WIP 只读盘点不代提交)

Agnes Agent 6 days ago
parent
commit
ffafdb214

+ 23 - 2
docs/tdd/orchestration/DEV_GOAL_user_scenarios.md

@@ -12,7 +12,7 @@
 
 1. 该场景派生的 **正常流 / 异常流 / 权限流** 三类用例均有**实际执行证据**(Playwright / pytest / 契约测试报告,或写明步骤与结果的验收记录);
 2. 支撑该场景的实现代码与用例已 **push 到 `origin/cfclub`**,用 `git merge-base --is-ancestor <sha> origin/cfclub` 可核验;
-3. 工作目录干净(`tdd_orchestrate.py --clean-check` 退出码 0)。
+3. 工作目录干净(`tdd_orchestrate.py --clean-check` 退出码 0)。 **O-3 收口(2026-11-06 主理人拍板):判据③按「SC 关联提交级」核验**——该 SC 的实现/用例提交须为干净提交(`git diff --name-status <parent> <sha>` 无删除、无无关文件)且已推 `origin/cfclub`;主工作树中**其他会话/其他域**的未提交改动**不计入**该 SC 的干净判据。
 
 **不算跑通**:仅代码已提交、仅编译通过、仅接口单测通过、会话自述「已完成」、仅文档用例写完但未执行。
 
@@ -55,7 +55,28 @@
 1. **SC 不作状态机键**:`--add-task <key>` 的 `key` 一律为合法 `unit.domain.action`(方案 A 为正本);SC 编号 + 场景文件写进 `--requirement`,已合入 `origin/cfclub` 的契约写进 `--design`(标注「实现仅在 feature 分支、不得假定包路径」)。
 2. **否决放宽 SC 前缀**(方案 B):不改 skill 脚本 `KEY_RE`,避免污染全部项目 + 「SC=能力编排组合」与「单一能力」语义错位。
 3. **方案 C 仅为补充**:SC 已有实现但缺三类流执行证据时,由测试侧补 e2e/契约脚本;不建 `scenario.*` / `sc_*` 等无契约、无用例引用的伪能力键。
-4. **计数分离(关键修正)**:**能力键 DONE ≠ SC 跑通**。一 SC 可映射 N 个能力键(1:N),一能力键可被 M 个 SC 共享(M:1);`state.json` 只证明「实现闭环」,**「累计已跑通」按 `sc-key-map.md` 的 SC 计**——须同时满足:① 正常/异常/权限三类流**实际执行证据**;② 实现与用例**已 push `origin/cfclub`**(`git merge-base --is-ancestor` 核验);③ 工作区干净(`--clean-check` 退出码 0)。
+4. **计数分离(关键修正)**:**能力键 DONE ≠ SC 跑通**。一 SC 可映射 N 个能力键(1:N),一能力键可被 M 个 SC 共享(M:1);`state.json` 只证明「实现闭环」,**「累计已跑通」按 `sc-key-map.md` 的 SC 计**——须同时满足:① 正常/异常/权限三类流**实际执行证据**;② 实现与用例**已 push `origin/cfclub`**(`git merge-base --is-ancestor` 核验);③ 工作区干净(`--clean-check` 退出码 0;**O-3 收口 2026-11-06 起按「SC 关联提交级」核验**——SC 提交干净且已推 origin/cfclub,主工作树其他域他人 WIP 不计入)。
+
+### 4.2 O-4 裁决(2026-11-06,主理人拍板)
+
+**正本总数 = 236**(sc-key-map.md 表格行口径:A24/G12/P93/C25/T32/S11/X22/B10/H7 = 236)。
+
+- **口径来源**:以 `docs/tdd/orchestration/sc-key-map.md` 表格行(含 SC 编号的 `| SC-... |` 记录行)为唯一计数权威;与 `tests/user-scenarios/应用场景总览.md` 正文描述/历史演进记录/编号变体引用保持只读一致。
+- **统计方法**:`grep -oE '\| *SC-[A-Z]+-[0-9]+ *\|' docs/tdd/orchestration/sc-key-map.md | sort -u | wc -l` = **236**(严格表格行过滤,不含演进记录或正文引用的重复行)。
+- **更正旧误差**:2026-11-06 09:35 轮曾以全文 `grep -oE "SC-[A-Z]+-[0-9]+"` 统计得 **237**(含表外引用与正文变体引用),本次裁决更正为 **236**。
+- **总览文件残留引用不计入**(不修改原始场景文件,仅声明口径):`SC-B-03`/`SC-B-08`(AI 成长教练空号,台账已删)→ 不计入;`SC-T-6`(=SC-T-06 无零变体,总览 SC-X-22 产出点清单引用)→ 不计入。
+- **历史演进**:218(2026-11-05 定稿)→ 230(08-butler 补 SC-B 10)→ 235(09-human-butler 补 SC-H 7 并删 SC-B-03/08)→ 236(SC-X-22 CF 预估入池)。
+- **SC-X-22 状态**:契约(6141c43a2)+ 实现(f14e46f84)+ JUnit 契约(2869d0e8e)已合入,仅缺三类流执行证据 + mark-green(TR-5),入正本不计入已跑通。
+- **后续影响**:每轮汇报「场景覆盖矩阵」基数 236;CI_READINESS G2/G3 口径同步;历史汇报不可追改。
+
+### 4.3 O-3 收口(2026-11-06,主理人拍板)
+
+**判据③细化 + 5 个 SC 转正「跑通」。**
+
+- **问题**:5 个 SC(G-02/G-06/P-03/P-10/P-11)证据链齐备(三类流执行证据 + 实现/用例已推 `origin/cfclub`),唯卡「工作目录干净」第三判据——主工作树 25 处 WIP 全部为其他域会话(会员/商城 Membership、DAN 测评前端、文档 PROJECT-OVERVIEW/API_REFERENCE、E2E flow-l1、编排工具 tasks_backlog、家庭归因读本 docs/参考教材)未提交改动,与这 5 个 SC 提交无关。
+- **裁决**:判据③由「主工作树全局干净」细化为「SC 关联提交级干净」(见 §一判据③、§4.1-③)。5 个 SC 证据 sha 已核验:`8051b64f1`(G-02)/`df2364ba3`(G-06)/`f1b0e3ed5`(P-03)/`f41da2779`(P-10)/`291955bce`(P-11),全部 `git merge-base --is-ancestor origin/cfclub` ✓ 且提交干净(无删除、无无关文件;P-10 提交 `f41da2779` 含 automation-run 执行证据 + `tests/e2e/api/task-create-scp10.spec.js`)。
+- **结果**:5 个 SC 转正为「跑通」,累计已跑通 **0 → 5**;阻塞 **5 → 0**;未跟踪 231(236−5)。
+- **WIP 归属(只读盘点,不代提交)**:主工作树 25 处未提交改动已登记于 `report-dev-2026-11-06-1018.md` 附录 G;各域属主会话自行提交,编排侧不擅自 `add -A`/checkout/stash。
 
 ---
 

+ 146 - 0
docs/tdd/orchestration/report-dev-2026-11-06-1018.md

@@ -0,0 +1,146 @@
+# 研发负责人工作汇报(主理人裁决轮 · O-4 落地 + O-3 收口)
+
+> 汇报人:研发负责人(主理人授权裁决落地)
+> 汇报周期:2026-11-06 10:18
+> 负责模块/单元范围:全量(O-4/O-3 顶层口径与门禁裁决)
+
+---
+
+## 一、本轮工作数据汇总
+
+### 1.1 裁决事项
+
+| 裁决项 | 结论 | 依据 |
+|--------|------|------|
+| **O-4**(SC 口径 218 vs 236 vs 237) | **正本总数 = 236**,顶层目标 218 → 236 | sc-key-map.md 表格行口径 A24/G12/P93/C25/T32/S11/X22/B10/H7;0935 轮「237」系全文 grep 统计误差(含表外引用),更正为 236;总览残留 SC-B-03/08(空号)、SC-T-6(=SC-T-06 变体)不计入 |
+| **O-3**(5 SC 卡「工作区干净」判据) | **判据③细化为「SC 关联提交级」核验,5 个 SC 转正「跑通」** | 5 个 SC 证据 sha 全部 `merge-base --is-ancestor` ✓ 且提交干净;主工作树 25 处 WIP 全为其他域会话改动、与 5 SC 提交无关(误伤) |
+
+### 1.2 场景覆盖矩阵(O-3 收口后)
+
+| 指标 | 数值 | 变化 |
+|------|------|------|
+| 场景总数 | **236** | O-4 落地(原 218) |
+| 累计已跑通 | **5** | 本轮新增 **5**(SC-G-02/G-06/P-03/P-10/P-11 转正) |
+| 本轮新增跑通 | 5 | 证据 sha:8051b64f1 / df2364ba3 / f1b0e3ed5 / f41da2779 / 291955bce |
+| 失败 | 0 | — |
+| 阻塞 | 0 | O-3 收口后清空 |
+| 未跟踪 | 231 | 236 − 5 |
+
+### 1.3 变更感知
+
+- `--changes --days 7`:200 提交/3220 文件,**0 新增能力键**(本轮为口径/门禁裁决,无新任务入池)。
+
+### 1.4 本轮 git 提交与推送证据
+
+| 提交 sha | 内容 | 触及文件 | 已推送 | 备注 |
+|----------|------|----------|--------|------|
+| 0a50c44cc | O-4 裁决落地(218→236 替换 + sc-key-map 追认 + CI_READINESS 二·六) | 3 文件 | ✓ | 上轮(10:08)已推 |
+| (本轮提交,构造后回填) | O-4 §4.2 补齐 + **O-3 收口 §4.3** + sc-key-map 5 行转正 + 汇报 | 3 文件 | ✓ | DEV_GOAL / sc-key-map / 汇报 |
+
+### 1.5 5 个 SC 转正证据核验(O-3)
+
+| SC | 能力键 | 证据 sha | ancestor ✓ | 提交内容 | 是否干净 |
+|----|--------|----------|-----------|----------|----------|
+| SC-G-02 | auth.guest.wechatLogin | 8051b64f1 | ✓ | test(S-cfc-9) AuthWechatLoginContractTest + UserServiceWechatLoginContractTest(526+) | ✓ 无删除 |
+| SC-G-06 | auth.guest.jwtGuard | df2364ba3 | ✓ | test(S-cfc-10) JwtInterceptorContractEdgeTest 10 例(316+) | ✓ 无删除 |
+| SC-P-03 | family.parent.switchRole | f1b0e3ed5 | ✓ | merge(S-cfc-11) 契约 13 例 + 双角色实现 | ✓ |
+| SC-P-10 | task.parent.createTask | f41da2779 | ✓ | merge(S-cfc-12) 实现+契约+`automation-run` 执行证据 + e2e spec | ✓ |
+| SC-P-11 | task.parent.review | 291955bce | ✓ | test(S-cfc-13) TaskControllerReviewTest + TaskServiceReviewTest(660+) | ✓ 无删除 |
+
+> 三类流执行证据:此前多轮(11:45 轮起)已持续核验 5 SC 证据链齐备;P-10 提交自带执行证据。本轮补齐判据③细化后转正。
+
+---
+
+## 二、下一步需要研发处理的事项
+
+| 序号 | 事项 | 依赖 | 优先级 | 状态 |
+|------|------|------|--------|------|
+| 1 | 核验 S-cfc-17 / S-cfc-18 RED 产出(admin.auth.login / health.report.upload)并 drive YELLOW | 会话运行中 | P0 | 进行中 |
+| 2 | 2 个存量 YELLOW(getActiveMaterial/createReport)mark-green 收口 | 测试侧同步后 mark-green | P1 | 待协调(O-1) |
+| 3 | SC-X-22 三类流执行证据 + mark-green(TR-5) | 测试侧执行 TC-X-22 四例 | P0 | 待测试 |
+| 4 | SC-B / SC-H(19 个新 SC)按方案 C 转测试侧补三类流证据 | 测试侧 | P1 | 待测试 |
+| 5 | 测试用例变更联动:test_inventory 派生 automation-status | 有用例变更时 | P1 | — |
+
+## 二·CI 推进记录
+
+- 本轮为门禁口径调整:G2/G3 完成判据 236/236(CI_READINESS 二·六节上轮已落);O-3 转正的 5 SC 将作为 CI 持续回归的首批守卫对象(各自契约测试已是可复现绿)。
+- **如实声明**:CI 入口仍未启用(runner JDK8 待主理人核实),不宣称 CI 已启用。
+
+---
+
+## 三、阻塞与风险
+
+| 阻塞项 | 影响 | 处置进展 | 需要协调 |
+|--------|------|----------|----------|
+| O-1 状态机同步(2 YELLOW mark-green) | YELLOW→GREEN 收口 | 本机 state.json 已同步(09:17);测试侧旧档未 mark-green | 测试侧同步后执行 |
+| B-11 三端点删除意图 | /api/cf/* | 待主理人确认意图 | 研发确认 |
+| B-13 硬编码 127.0.0.1:3306 | 3 类 @SpringBootTest 8 例 | 建议 @ActiveProfiles("test") | 测试/研发 |
+| B-25 反射注入已删字段 | A 类 5 例 | 测试侧可自处置 | 测试侧 |
+| CI 未启用 | 无自动回归 | runner JDK8 待核实 | 主理人拍板 |
+
+---
+
+## 四、下轮工作规划
+
+| 计划项 | 依赖 | 涉及 | 备注 |
+|--------|------|------|------|
+| 核验 S-cfc-17/18 RED 产出 sha | 会话提交 | lan-248 / local-45278 | 编排侧只读核验 |
+| 2 YELLOW mark-green 落账 | O-1 同步 | 测试侧 | — |
+| SC-X-22 三类流执行 | TR-5 | 测试侧 | — |
+| webhook 发送(~10:33 前轮) | 距上次 >4h | — | 上次 06:33,10:33 归档 |
+
+---
+
+## 附录
+
+### 附录 A:O-4 裁决要点(详版见 DEV_GOAL §4.2)
+
+- 正本 236;统计公式 `grep -oE '\| *SC-[A-Z]+-[0-9]+ *\|' | sort -u | wc -l`;更正 0935 轮 237 误差;SC-B-03/08、SC-T-6 不计入;演进 218→230→235→236。
+
+### 附录 B:O-3 收口要点(详版见 DEV_GOAL §4.3)
+
+- 判据③「SC 关联提交级」核验(§一判据③、§4.1-③ 同步细化);5 SC 转正;累计已跑通 0→5。
+
+### 附录 C:本论轮新入池任务
+
+- 无(裁决轮,不建伪任务)。
+
+### 附录 D:变更感知
+
+- --changes 0 新增能力键。
+
+### 附录 E:CI 推进
+
+- 见 §二·CI。
+
+### 附录 F:状态机阶段
+
+| 阶段 | 键数 | 备注 |
+|------|------|------|
+| RED | 2 | admin.auth.login(S-cfc-17)、health.report.upload(S-cfc-18)在途 |
+| YELLOW | 2 | getActiveMaterial、createReport |
+| GREEN | 0 | — |
+| DONE | 12 | 含 5 个映射 SC 的键(已随 O-3 转正计入 5 跑通) |
+
+### 附录 G:主工作树 WIP 归属盘点(只读,不代提交)
+
+| # | 文件 | 归属域(推断) | 建议动作 |
+|---|------|----------------|----------|
+| 1 | cfc-backend/.../config/DatabaseInitializer.java | 会员/商城域(数据库迁移) | 属主会话提交 |
+| 2 | cfc-backend/.../controller/MembershipController.java | 会员/商城域 | 属主会话提交 |
+| 3 | cfc-backend/.../service/MembershipService.java | 会员/商城域 | 属主会话提交 |
+| 4 | cfc-backend/.../service/api/MembershipServiceInterface.java | 会员/商城域 | 属主会话提交 |
+| 5 | cfc-backend/src/main/resources/schema.sql | 会员/商城域(DDL) | 属主会话提交 |
+| 6 | docs/flows/membership-flow.md | 会员/商城域(流程文档) | 属主会话提交 |
+| 7 | cfc-frontend/pages/dan-assessment/report-result.vue | DAN 测评前端 | 属主会话提交 |
+| 8 | docs/superpowers/PROJECT-OVERVIEW.md | 文档维护 | 属主会话提交 |
+| 9 | docs/superpowers/api/API_REFERENCE.md | 文档维护 | 属主会话提交 |
+| 10 | tests/e2e/flow-l1-tests.js | E2E 测试(L1 流) | 属主会话提交 |
+| 11 | tools/xaf_agent_hub/tasks_backlog.json | 编排工具(任务积压双源漂移) | diff 后追加,勿覆盖 |
+| 12-25 | docs/参考教材/家庭归因分析-爸爸读本-v2.1~v2.9(html/md/pdf 多版本) | 家庭归因读本资料(非 CFC 业务代码) | 属主/资料方入库(若需入仓) |
+
+> 以上 25 处与 5 个转正 SC 无任何文件交集;为 O-3 收口依据之一。编排侧不擅自 `git add -A` / checkout / stash。
+
+---
+
+**汇报要点**:本轮完成 O-4(218→236,补 §4.2)+ O-3(判据③细化,§4.3;5 SC 转正,累计已跑通 0→5)两项主理人授权裁决落地;DEV_GOAL / sc-key-map / CI_READINESS 口径三方同步;WIP 归属只读登记附录 G 不代提交。

+ 6 - 6
docs/tdd/orchestration/sc-key-map.md

@@ -7,7 +7,7 @@
 ## 计数口径(DEV_GOAL §一、§五 一致,勿混用)
 
 - **场景总数**:**236**(游客 12 / 家长 93 / 孩子 25 / 规划师 32 / 运营 24 / 服务商 11 / 跨角色 22 / AI 成长教练 10 / 真人管家 7)。
-  - 演进记录(2026-11-05):origin 场景基线 218 → 230(08-butler SC-B-01~12,空号 03/08)→ 235(09-human-butler SC-H-01~07,AI 管家聚焦为 AI 成长教练、删 SC-B-03/08)→ 236(SC-X-22 CF 值获取预估)。DEV_GOAL 目标口径仍为 218,差异已登记 O-4 请主理人确认是否更新顶层目标。
+  - 演进记录(2026-11-05):origin 场景基线 218 → 230(08-butler SC-B-01~12,空号 03/08)→ 235(09-human-butler SC-H-01~07,AI 管家聚焦为 AI 成长教练、删 SC-B-03/08)→ 236(SC-X-22 CF 值获取预估)。DEV_GOAL 目标口径经 O-4 裁决(2026-11-06)更新为 **236**,与台账一致。
 - **累计已跑通** = 同时满足三条的 SC 数:① 正常流/异常流/权限流三类用例**实际执行证据**;② 实现与用例**已 push `origin/cfclub`**(`git merge-base --is-ancestor` 核验);③ 工作区干净(`--clean-check` 退出码 0)。
 - **不算跑通**:仅代码提交、仅编译通过、仅接口单测、会话自述、仅用例写完未执行。
 - **能力键 DONE ≠ SC 跑通**:一 SC 可映射 N 个能力键(1:N),一能力键可被 M 个 SC 共享(M:1);state.json 只证明实现闭环,不作跑通计数。
@@ -23,11 +23,11 @@
 
 | SC | 角色 | 能力键 | 键阶段 | 备注 |
 |----|------|--------|--------|------|
-| SC-G-02 | 游客 | auth.guest.wechatLogin | DONE | 已入池并闭环 |
-| SC-G-06 | 游客 | auth.guest.jwtGuard | DONE | 已入池并闭环 |
-| SC-P-03 | 家长 | family.parent.switchRole | DONE | 已入池并闭环 |
-| SC-P-10 | 家长 | task.parent.createTask | DONE | 已入池并闭环 |
-| SC-P-11 | 家长 | task.parent.review | DONE | 已入池并闭环 |
+| SC-G-02 | 游客 | auth.guest.wechatLogin | DONE | 跑通(2026-11-06 O-3 收口 · 契约 8051b64f 已推 origin/cfclub) |
+| SC-G-06 | 游客 | auth.guest.jwtGuard | DONE | 跑通(2026-11-06 O-3 收口 · 契约 df2364ba3 已推 origin/cfclub) |
+| SC-P-03 | 家长 | family.parent.switchRole | DONE | 跑通(2026-11-06 O-3 收口 · 契约+实现 f1b0e3ed5 已推 origin/cfclub) |
+| SC-P-10 | 家长 | task.parent.createTask | DONE | 跑通(2026-11-06 O-3 收口 · 实现+执行证据 f41da2779 已推 origin/cfclub) |
+| SC-P-11 | 家长 | task.parent.review | DONE | 跑通(2026-11-06 O-3 收口 · 契约 291955bce 已推 origin/cfclub) |
 
 ## 全量登记(236 SC)