测试闭环报告 · 第 125 轮(2026-11-10 14:55 GMT+8)
主理人:陆谨(软件测试专家团 · 测试架构师)
执行档:review 档(内网 cfc.iwintrue.com 已授权;无联网外部请求;未装依赖;未改生产代码)
对象:d:/cfc(浠艾福 XAF)
触发:定时自动化「测试负责人闭环(全部用例通过 + 覆盖 SRS/场景含异常流)+ 浏览器走 /admin 与 /frontend(189/本机每节点单任务)+ langgraph 派 251 + 结果有变提交远程并通知研发」
0. 本轮结论速览
| 项 |
值 |
| 基线 |
cfclub @ 75bf2c841(pull --rebase 后与 origin 同步;R124 后源码零变更) |
| 全量用例 |
3501 例 / 3445 过 = 98.40%(红 49 / 跳过 7) |
对比上轮(R124 98.37% / 3444 过) |
langgraph 红例 1→0(+1 过),其余套件零漂移 |
| 后端全量 |
采信 R124(源码零变更):2865 例 / 2828 过 = 98.71%,30F+3E+4S,14 红类 / 33 红例 |
| 浏览器自动化 |
28/28 全绿(live 15 + health 13) |
| langgraph @ 251 |
43 例 / 43 过 / 0 红(756.13s)——B-74 连续 22 轮红例后首次全绿 |
| 门禁 |
不通过(有条件) — 见 §9 |
三件必须让研发看到的事
- langgraph@251 首次全量全绿(B-74 重大转机):R103~R124 连续 22 轮
test_auto_tag.py 5 例红(LLM API key 401,红例名 content_relevance/valid_format 漂移)后,本轮 43/43 全绿(0 红,756.13s)。251 已 git reset --hard origin/cfclub(f5a014a46)对齐远端。按判据需连续 ≥2 轮全绿才销号,本轮为观察第 1 轮无复现。
- B-123 达销号判据(连续 3 轮探针通过):R123/R124/R125 三轮均前置环境探针(java 1.8.0_25 / Maven 3.6.1 / 磁盘充足)且无「凭记忆判环境」导致的 Maven 类降级 → 销号。
- B-121 销号后持续稳定:
TC-A-U05 本轮 56.7s 通过、首轮即绿无重跑(R124 销号后第 1 轮),「admin 登录滑块偶发自愈」结论成立。
1. 历史审查记录
| 项 |
内容 |
| 上次本对象审查 |
R124 @ 2026-11-10 14:20(67b5f6325,即本轮起点 HEAD 前身) |
| 上次结论 |
不通过(有条件):G2 50 红 / G7 langgraph 1 红(凭据 401)/ G9 锚点 / G11 无 CI |
| 上次遗留缺口 |
① B-74 LLM 凭据 401(已实锤、未闭环)② B-125 派发等待未自适应 ③ 覆盖率/变异/压测/安全 长期未实测 |
| 本次是否改善 |
① B-74 首次全绿(观察第 1 轮) ✅ ② B-123 连续 3 轮 → 销号 ✅ ③ B-125 继续观察(本月度工具改进项)④ 未变(execute 档未授权) |
| 是否首次审查 |
否。同对象已连续审查 ≥125 轮 |
本节仅作对照。本轮全部结论均以本轮实测取证;仅「后端全量」因源码零变更采信 R124 实跑结果(纪律允许),并仍以 R124 红类清单为口径。
2. 项目画像
| 维度 |
结论 |
| 业务定位 |
家庭教育 SaaS:家长/孩子(能登录/不能登录用户)双角色、成长规划师、五维能量、健康报告解析、测评订单、商城、AI 管家 |
| 技术栈 |
后端 Spring Boot 2.7.18 + MyBatis-Plus + Java 8(9082);小程序 uni-app Vue2;管理端 Vue2 + Element UI;AI 侧 Python FastAPI + LangGraph + ChromaDB(9000,生产 ai.etotem.com.cn);独立商城 Spring Boot(8888) |
| 规模(本轮实测) |
测试文件 345、@Test 2853、控制器 363、handler 1969(覆盖 442=22.5%);SRS 规格 200 份 |
| 关键路径 |
登录鉴权(JWT 拦截 + 8 公开路径)→ 家庭成员/关系 → 成长任务与能量 → 健康报告上传-解析-入库 → 测评订单 → 商城下单/分润 → AI 对话/画像 |
| 质量目标 |
全量用例通过率、SRS/场景锚点覆盖、线上鉴权契约、浏览器双端可用性、跨节点可派发 |
| 本轮风险点 |
后端 33 红(A 装置 16 + B 产品 13 + C 数据 1 + 契约 3)待派单;G9 锚点率 17.1%(B-124 未闭环);189 节点仓库陈旧(B-122);251 派发等待时长未自适应(B-125) |
3. 20 类测试覆盖矩阵
图例:● 已发现(有资产且有本轮/近期实测证据)/○ 未发现(扫描未命中)/◐ 待核实(有资产但本轮未实测或被降级)
| # |
类别 |
状态 |
证据 |
| 1 |
单元测试 |
● |
后端 2865 例(采信 R124 实跑);cfc-web 116、cfc-frontend 426 Jest 本轮实跑 |
| 2 |
组件测试 |
● |
后端 *ControllerTest(MockMvc)+ 前端 Vue 组件 __tests__ |
| 3 |
接口 API 测试 |
● |
health 契约 13 例(全 401)+ shop-sort 4 例本轮实跑 |
| 4 |
系统 / 端到端 |
● |
/admin 5 例 + /frontend 6 例真浏览器实跑(Playwright 1 worker) |
| 5 |
验收 UAT |
◐ |
198 场景文档映射存续,无独立 UAT 执行记录(凭据不全) |
| 6 |
冒烟测试 |
● |
每轮固定 28 例 live/health 冒烟;本轮全绿 |
| 7 |
回归测试 |
● |
后端全量 + 三套 Jest + 浏览器 = 本轮回归基线 |
| 8 |
探索性测试 |
○ |
无 chartered 探索会话记录 |
| 9 |
契约测试 |
● |
health 13 + shop-sort 4 + 后端 *ContractTest(DimensionRegistryMap 3 红待裁决等) |
| 10 |
性能测试 |
○ |
无压测脚本与基线(execute 档,需联网授权) |
| 11 |
可靠性测试 |
○ |
无故障注入/恢复演练 |
| 12 |
安全测试 |
◐ |
鉴权契约 23 端点实测(全 401);SAST/DAST/依赖扫描未执行 |
| 13 |
兼容性测试 |
◐ |
仅 Chromium;多浏览器/多机型矩阵未执行 |
| 14 |
可用性测试 |
○ |
无真实用户可用性证据 |
| 15 |
无障碍测试 |
○ |
无 WCAG 检查 |
| 16 |
覆盖率度量 |
◐ |
后端 JaCoCo 离线不可用;handler 覆盖 442/1969=22.5%(静态口径) |
| 17 |
变异测试 |
○ |
无 PIT/mutation 配置 |
| 18 |
质量指标 |
● |
通过率/红例分布/桶分布本轮重算(§8) |
| 19 |
QA 流程 |
● |
自动化闭环 125 轮可追溯;门禁脚本化不足(G11) |
| 20 |
代码审查 |
● |
本轮抽检后端红类清单与 R124 一致(14 红类) |
4. 测试方案(本轮实际执行)
| 项 |
内容 |
| 目标 |
验证 R124 后是否零漂移;重点复核 langgraph B-74 红例;SRS/场景变更检测;浏览器双端可用性 |
| 范围 |
浏览器 live 15 + health 13、cfc-web 17 套、cfc-frontend 26 套、根级 3 套、langgraph@251 43 例;后端采信 R124(源码零变更) |
| 覆盖维度 |
功能层次 5 类 + 功能保障 4 类 + 非功能鉴权(部分) |
| 执行档 |
review(离线白名单);内网 HTTP 探针与 cfc.iwintrue.com 浏览器访问均属已授权范围 |
| 优先级 |
P0:浏览器双端 + 鉴权契约 + 251 派发;P1:前端 jest;P2:台账刷新 |
| 排除项 |
压测、DAST/SCA、变异、多浏览器矩阵、UAT 全流量(未授权/无凭据)——报告中标「未实测」,不计通过 |
5. 执行结果明细
5.1 后端全量(采信 R124,源码零变更)
| 项 |
值 |
| 结果(R124 实跑) |
2865 例 / 2828 过 / 30F + 3E + 4S = 98.71%(34:03) |
| 红类 / 红例 |
14 类 / 33 例 |
| 完整性 |
surefire XML 339/339,沉默 0 |
| 本轮采信依据 |
git diff 167387161..HEAD -- src 全模块 为空(仅 docs + bump/changelog) |
33 红三层归因(与 R124 逐类一致):A 装置 16(CfCommission 8 / ArticleAutoTag 4 / GrowthRecordSync 3 / TaskPlan 1)· B 产品 13(EnergySystem 6 / Orchestration 2 / MembershipPaySwitch / PaymentORD / WechatLogin 2 / TeamProfitCron)· C 数据 1(GuideModule platform_fee)· 契约待裁决 3(DimensionRegistryMap)。
5.2 前端 / 管理端 / 根级(本轮实跑)
| 套件 |
套件数 |
例数 |
过 |
红 |
跳过 |
与基线 |
| cfc-web Jest |
17 |
116 |
116 |
0 |
0 |
零漂移 |
| cfc-frontend Jest |
26 |
426 |
423 |
0 |
3 |
零漂移 |
| tests 根级 Jest |
3 |
23 |
7 |
16 |
0 |
零漂移(B-36,9082 未启动) |
5.3 浏览器自动化(workers=1,单节点单任务)
| 套件 |
例数 |
结果 |
耗时 |
admin-desktop(/admin) |
5 |
5/5 |
U04 9.5s / U05 56.7s(首轮即绿) |
frontend-mobile(/frontend) |
6 |
6/6 |
3.3~9.1s |
shop-api |
4 |
4/4 |
59~147ms |
health-api(契约) |
13 |
13/13 |
4.1s(全 401) |
合计 28/28 全绿,与 R118/R120/R123/R124 基线一致。
5.4 langgraph @ 192.168.16.251(实派)
| 项 |
值 |
| 通道 |
_r125_dispatch_251.cjs(kick 分离写盘 → sleep 620s → 单次读),port 4096 |
| 节点 HEAD |
f5a014a46(随 kick 内 git reset --hard origin/cfclub 对齐远端) |
| 结果 |
43 passed / 0 failed / 8 warnings in 756.13s |
| 对比 R124 |
R124 42/1(auto_tag_valid_format,LLM 401)→ 本轮 B-74 红例首次消失 |
| 观察 |
待连续 ≥2 轮全绿后按判据销号(本轮为第 1 轮全绿) |
5.5 节点可达性
| 节点 |
端口 |
结论 |
| 本机 |
— |
浏览器 28/28 全量承担(单任务) |
192.168.16.189 |
4090 OPEN |
不可承载(B-122 第 3 轮):仓库 feature/user-is-child @ e3e52ca38、`tests\e2e-live=False → 未派发 |
192.168.16.251 |
4096/9000 OPEN |
langgraph 实派成功(43/43 全绿) |
192.168.16.204 |
— |
延续失联(B-95) |
5.6 线上鉴权与可达性(curl 探针)
| 目标 |
结果 |
GET http://cfc.iwintrue.com/admin |
302(登录墙) |
GET http://cfc.iwintrue.com/frontend |
302 |
POST /api/mind/fortune(匿名) |
401(B-69 维持销号) |
POST /api/energy/overview(匿名) |
401 |
6. 覆盖缺口清单
| 编号 |
缺口类型 |
现状 |
风险 |
建议测试设计 |
优先级 |
闭环方式 |
| G-125-1 |
性能测试 |
无脚本无基线 |
健康报告解析/AI 对话为长耗时链路 |
k6 对 POST /api/health/report/upload、/api/v1/chat 做 20/50 并发阶梯,记录 P95 |
P2 |
execute 档授权后执行 |
| G-125-2 |
可靠性 |
无故障注入 |
EnergySystem 500 类问题生产直接暴露 |
MySQL 断连 + LLM 超时各注入 1 次,断言降级 |
P2 |
与研发约定注入窗口 |
| G-125-3 |
安全扫描 |
仅鉴权契约 |
覆盖仅 23 端点未鉴权路径 |
SAST(Semgrep)+ 依赖漏洞(mvn dependency-check) |
P2 |
execute 档授权 |
| G-125-4 |
兼容性/无障碍 |
仅 Chromium |
小程序多机型、WCAG 均空 |
Playwright 加 firefox/webkit;axe-core 扫 /admin 5 页 |
P3 |
增配置后纳入冒烟 |
| G-125-5 |
覆盖率 |
后端 JaCoCo 离线不可得 |
通过率≠行覆盖率 |
预置 jacoco agent 后 mvn test jacoco:report |
P1 |
预置依赖后补测 |
| G-125-6 |
变异测试 |
无 |
高通过率可能掩盖弱断言 |
EnergySystemService/CfCommissionService 引 PIT,kill ≥60% |
P3 |
专项排期 |
| G-125-7 |
UAT / BDD |
198 场景仅文档映射 |
场景与断言未一一绑定 |
锚点规范落到 tests/test-cases,每场景 ≥1 可执行断言 |
P1 |
B-124 |
| G-125-8 |
A/B 类红例 |
后端 33 红连续多轮零漂移 |
真实产品缺口被装置红掩盖 |
批量派研发处置 B 类 13 例 + 测试侧自修 A 类 16 例 |
P0 |
派单 + 自修双线 |
| G-125-9 |
根级黑盒 |
23 例 16 红(ECONNREFUSED) |
环境未起被计为产品失败 |
根级套件加 beforeAll 探活 skip |
P1 |
B-36 |
7. 域结论表
| 审查维度 |
负责专家 |
结论 |
关键证据 |
| 单元·组件级 |
苏雅 |
有条件通过 |
后端 2865 例 98.71%(采信 R124);14 红类(A 装置 16 阻塞口径);web 116/116、frontend 423/426 |
| 集成·接口级 |
柯砚 |
不通过(局部) |
契约 23 端点全 401 ✅;DimensionRegistryMap 3 例待裁决、platform_fee 1 例 |
| 系统·验收级 |
白樾 |
有条件通过 |
浏览器 28/28 ✅;UAT 全流量未执行(无凭据) |
| 测试保障级 |
闻朔 |
通过 |
冒烟 28/28;回归全量连续多轮可复跑;探索性缺失(登记缺口) |
| 性能·可靠性 |
骆骋 |
未实测(降级) |
execute 档未授权 → G-125-1/2 |
| 安全 |
关屿 |
有条件通过 |
匿名 23 端点全 401(含 /api/mind/**,维持销号);SAST/SCA 未执行 |
| 兼容·体验 |
阮清 |
未实测(降级) |
仅 Chromium;无 axe/WCAG → G-125-4 |
| 流程·度量·代码 |
何序 |
不通过(局部) |
@GetMapping 8 处仍违规范;G9 锚点 3 套口径未统一(B-124);B-125 等待未自适应 |
8. 五要素问题清单
#1 langgraph B-74 首次全绿——观察而非销号(根因仍待凭据确认)
- ① 问题描述:R103~R124 连续 22 轮
test_auto_tag.py 红例(LLM API key ****ab12 401)后,本轮 251 实派 43/43 全绿(0 红)。红例名漂移(content_relevance→valid_format)本轮消失;test_analyze/test_intent 同步全绿。
- ② 测试 bug 点:
cfc-langgraph/tests/test_auto_tag.py(5 例依赖 LLM 语义输出,历史在主断言无固定桩时随凭据状态漂移)。
- ③ 最优修改方案:① 运维确认 251 上 LLM 凭据状态(是否已轮换/注入),如已轮换则稳定闭环;② 测试侧按 R124 建议把主断言改确定性桩(mock 固定标签集)+
@pytest.mark.llm 真链路冒烟;③ 251 .venv 装 pytest-timeout 防挂起(B-125 同源)。
- ④ 修改目的:把「凭据/网络」与「打标逻辑回归」彻底分离,使该维度可稳定门禁;凭据轮换解决的是线上 LLM 能力可用性(直接影响真实用户)。
- ⑤ 闭环:下轮(R126)251 复跑连续第 2 轮全绿 → 按判据销号;或凭据轮换后 5/5 稳定绿。
#2 B-123 达销号判据(连续 3 轮探针通过)
- ① 问题描述:R122 曾以「本机无 Maven」降级致后端整模块漏测;R123~R125 三轮均前置环境探针(java/mvn/df)且实测通过。
- ② 测试 bug 点:SOP(已修复,探针输出入报告固定节)。
- ③ 最优修改方案:维持「每轮固定探针,未跑探针不得写降级」。
- ④ 修改目的:杜绝「凭记忆判环境」导致整模块漏测。
- ⑤ 闭环:连续 3 轮达成 → 本轮销号(B-123-Update 已登记)。
#3 A 类夹具 16 红(装置缺陷,非产品)
- ① 问题描述:
CfCommissionServiceSettleTest 8、ArticleAutoTagServiceTest 4、GrowthRecordSyncFlowTest 3、TaskPlanServiceTest 1 红(Wanted but not invoked / execute 未命中 / NPE)。
- ② 测试 bug 点:
CfCommission...settle_* 8 例;ArticleAutoTag...toggleStatus_* 4 例。
- ③ 最优修改方案:CfCommission 逐例核对 mock 方法签名与生产 7 参 overload;ArticleAutoTag 注入同步 Executor 替身;TaskPlan 补齐 @Mock 返回值;GrowthRecordSync 读 Caused by 最内层。
- ④ 修改目的:16 红退出统计,暴露真实产品缺口。
- ⑤ 闭环:定向复跑 4 类全绿(mvn -Dtest 精确集)。
#4 B 产品 13 红(连续多轮零漂移,可批量派单)
- ① 问题描述:EnergySystemFlowTest 6(5×500)、Orchestration 2、MembershipPaySwitch 1、PaymentORD 1、WechatLogin 2、TeamProfitCron 1——与 R123/R124 逐例同名同型,连续 3 轮零漂移。
- ② 测试 bug 点:
EnergySystemFlowTest:parentGetsEnergyOverview_Success 等 6 例;TeamProfitCronContractTest:refundWithinCooling_cancelAllRecordsFundsNotPaid。
- ③ 最优修改方案:EnergySystem 5 例 500 抓服务端堆栈定位(疑 DB/事务);TeamProfitCron 冷静期退款未置 cancelled 核对 §8.2 实现;WechatLogin 2 例疑 mock 凭据缺失。
- ④ 修改目的:把「疑似产品缺陷」转成可派研发的具体缺陷单。
- ⑤ 闭环:对应类 0 红 + 线上同路径 200。
#5 platform_fee 列溢出(C 数据,第 14 轮)
- ① 问题描述:
GuideModuleIntegrationTest 写库报 Data truncation: Out of range value for column 'platform_fee'。
- ② 测试 bug 点:
GuideModuleIntegrationTest::testGuidePackageCreationFlow(造数金额超出列宽)。
- ③ 最优修改方案:核对
guide_order.platform_fee 列类型与业务上限;合法则扩列(DatabaseInitializer 迁移 + schema.sql 同步),否则修造数。
- ④ 修改目的:避免真实大额订单写库失败。
- ⑤ 闭环:迁移后该类转绿 + 边界值(上限 ±1)复测。
#6 DimensionRegistryMap 契约 3 例待裁决
- ① 问题描述:
unknown_legacy/empty 期望 data=null 实为原值/空串;missing 期望 400 实为 200。
- ② 测试 bug 点:
DimensionRegistryMapContractTest 三例。
- ③ 最优修改方案:产品/研发对「未知 legacy 键」语义拍板,单向修正契约或用例,写入 SRS。
- ④ 修改目的:消除长期悬空契约。
- ⑤ 闭环:契约条款落 SRS 后 3 例按新条款全绿。
#7 根级黑盒 16 红(B-36,第 28 轮零漂移)
- ① 问题描述:
tests/ 根级 23 例稳定 7 绿 / 16 红,全部 ECONNREFUSED(后端 9082 未启动)。
- ② 测试 bug 点:
tests/integration/*.spec.js 硬编码 http://127.0.0.1:9082,无「服务未起则 skip」保护。
- ③ 最优修改方案:beforeAll 探活,未起则 test.skip + 打印启动指引。
- ④ 修改目的:消除「环境未起被计为产品失败」的长期噪声。
- ⑤ 闭环:连续 1 轮根级 0 红(或 16 例显式 skip 而非 fail)。
#8 251 派发等待时长未自适应(B-125 第 3 轮观察)
- ① 问题描述:本轮首读 sleep 620s 仍只读到 35 个点(pytest 756.13s 未写完,缓冲未 flush),需第 2 次探活读取。
- ② 测试 bug 点:
_r125_dispatch_251.cjs 固定 WAIT_MS,无「pytest 进程退出」判据。
- ③ 最优修改方案:等待循环改为「探测 pytest 进程存活,退出后再读文件」;或装 pytest-timeout 限制 LLM 网络重试挂起时长。
- ④ 修改目的:首读取回率从 ~50% 提到 ~100%,减少往返。
- ⑤ 闭环:同一脚本连续 2 轮首读即得完整 summary。
9. 门禁结论
| 门禁 |
判据 |
实测 |
结论 |
| G1 全量通过率 |
≥95% |
98.40%(3445/3501) |
✅ |
| G2 红例数 |
≤10 |
49(后端 33 + 根级 16) |
❌ |
| G3 前端 Jest |
0 红 |
423 过 / 0 红 / 3 skip |
✅ |
| G4 管理端 Jest |
0 红 |
116/116 |
✅ |
| G5 编译与完整性 |
testCompile 0 错 + XML 无沉默 |
采信 R124:343 源 0 错、339/339 |
✅ |
| G6 浏览器 |
28/28 |
28/28 |
✅ |
| G7 langgraph |
0 红 |
0 红(43/43,B-74 观察第 1 轮) |
✅(观察) |
| G8 鉴权契约 |
全 401 |
23/23(含 /api/mind/**) |
✅ |
| G9 SRS 锚点 |
≥80% |
17.1%(严格) |
❌ |
| G10 双节点派发 |
251 + 189 均实派 |
251 ✅ / 189 ⚠️(B-122 第 3 轮) |
⚠️ 部分 |
| G11 CI 含后端全量 |
存在 blocking 全量 |
无 |
❌ |
| G12 用例入库 |
本轮有新增/更新 |
无 SRS 变更 → 不新增(合规) |
✅ |
总裁决:不通过(有条件)
- 阻塞放行的三项延续:G2 49 红、G9 锚点 17.1%、G11 无 CI 全量。
- 相比 R124:G1 +0.03pp(langgraph 红例 1→0)、G7 首次全绿(观察第 1 轮)、B-123 销号、B-121 销号后稳定;其余套件严格零漂移。
- 放行建议:全量多轮零漂移 + 鉴权契约全绿 + langgraph 首次全绿,支持内网灰度;不支撑对外正式发布,除非 G2 中 13 例 B 类产品红有明确结论或在研修复。
- 建议下步:研发对 13 例 B 类产品红批量派单;运维确认 251 LLM 凭据状态(如已轮换则 B-74 走向销号);测试侧推进 A 类 16 例自修。
10. 窗口内变更登记(SRS 闸门)
| 检查项 |
结果 |
docs/superpowers/specs 200 份 |
窗口内(14:20→14:55)零变更 |
docs/tdd/user-scenarios |
零变更 |
docs/superpowers/api/API_REFERENCE.md |
零变更 |
| 代码侧变更 |
远端仅 chore: auto bump/研发汇报/docs,零源码变更 |
| 结论 |
不新写用例;SRS→用例映射关系保持,缺口转 §6 G-125-7 |
11. 度量
| 指标 |
值 |
测试文件 / @Test |
345 / 2853 |
| 控制器 / handler / 覆盖 |
363 / 1969 / 442(22.5%) |
| SRS 规格 / 用例台账 |
200 / 14 |
场景(^## 场景) |
198(沿用,窗口零变更) |
| TC 严格 / 宽松 |
333 / 866(沿用) |
| 可执行 TC 锚点 |
165 |
| 锚点率 |
17.1%(严格,B-124 沿用口径) |
12. 本轮方法论沉淀
- langgraph 全绿 ≠ 凭据已修复:连续 22 轮红例后首次全绿,原因可能是 251
git reset --hard 拉到最新代码(f5a014a46)、或 LLM 服务端瞬时恢复。判断依据是「连续 2 轮全绿」而非单轮结果——单轮全绿只能转观察,不销号。
- 「pytest 进程退出」优于固定 sleep:620s 仍读到 35 点(缓冲未 flush),探活确认进程退出后才拿到完整 summary——B-125 判据从「固定时长」改为「进程退出 + 文件读完」。
- 远端 reset --hard 是双刃剑:251 对齐 origin/cfclub 保证测的是最新代码,但也可能静默丢弃 251 本地未提交实验——每月派发前应确认 251 无 WIP。
报告结束。所有结论以本轮实测数据为准,未沿用历史数字作为通过依据。后端全量采信依据为「源码零变更」纪律,R124 实跑结果仍有效。