logo
0
0
WeChat Login

PR-E:方向 F1 四 PR 经验回写——LESSONS B13/B14 + 棘轮口径区分 + CNB 坑点实证清单(轮次 14-e)#44

Merged
created 2 weeks ago
main
feature/q2-F1-feedback-cnb-traps
Edit
OverviewCommits
2
Files changed
4
Attachments

动机(Why)

目标项目 anta-newproject-demo 方向 F1 连续 4 PR(#4~#7) 才让 B 层 CI 在 CNB 远端真实跑通。演化链:

PR#动作远端结果获得的认知
#3功能测试 + CI stage 引入15/15 绿 239s假绿——coverage/functional 仅 1~2s 静默跳过
#4按 CNB docs 推断修语法 docker:{image}error推断错了
#5策略转变加诊断块errordocker CLI 不存在 / DOCKER_HOST unset
#6脚本自装 docker CLI(静态二进制)error 91sservices:[docker] 强制改 image = default-build-env
#7接受 CNB 限制,去 services + mvn -D 覆盖阈值15/15 绿 286s棘轮口径区分版首次规则化落地

演化中发现 2 条新反模式 + 1 条棘轮补强 + 4 条 CNB 平台实证坑点——本 PR 趁记忆新鲜一次性回写到源仓库。关闭目标项目 CHECKPOINT §五 的 T-Q2-e / T-Q2-i / T-Q2-j 三条回馈类待办。

这是第 2 次"业务反哺规则"loop——PR-D 是单次 Q2-001 业务的回写,PR-E 是连续 4 PR CI 深挖的回写。两种都是"规则从业务中来、回馈到业务中去"的健康循环。

变更清单(What)

2 个 commits · 4 文件 / +199/-3 行

  • commit 1 docs(rules) 1b21aab:3 份规则层文档实质修订(3 文件 / +120)
  • commit 2 docs(meta) c72fd11:CHECKPOINT §四 轮次 14-e 档案(1 文件 / +79/-3)

改动 1:LESSONS.md §二 新增 B13 + B14(反模式 19 → 21)

B13:"把 CI pipeline status: success 当作所有 stage 真跑的证据"

  • 本质:B12(UI 误读)的 status 维度变种
  • 场景:脚本 exit 0 + WARNING + stage 耗时 1~2s
  • 正模式:默认 exit 1;跳过需显式 DOCKER_REQUIRED=0
  • 机器化防线:stage 耗时 vs 预期耗时下限

B14:"未经实证就推断平台行为 / API 行为并直接修改配置"

  • 场景:读文档示例就推断 → 改 → fail → 再改 → 又 fail
  • 正模式:先加诊断 PR(纯采集),再基于实证修
  • 退出条件:连续 2 次 fail 必须切换诊断模式
  • 反模式家族:B12 UI / B13 status / B14 文档 = 信号欺骗家族

改动 2:testing-standards.md §1.3 棘轮"口径区分"约束

原"只上不下"隐含"度量口径稳定"前提。新增 3 条硬约束:

  • 【必须】同一度量口径下棘轮不退步
  • 【必须】切换口径时允许阈值相应调整(unit-only ↔ full)
  • 【必须】每个口径的阈值必须独立存储

附反例(把子集阈值写到 pom 污染 full 口径)+ 正例(Maven -D 保护 pom):

# 保持 pom 为 full 口径 78/70,CI 里跑 unit-only 口径:
mvn -B -Dtest='...unit.**' \
    -Djacoco.line.min=0.36 -Djacoco.branch.min=0.46 \
    verify

改动 3:cicd-pipeline/SKILL.md 新增"CNB 平台坑点实证清单"(4 条 + 决策树)

  • 坑点 1services:[docker] 强制 cnbcool/default-build-envimage: 被忽略(CNB 官方 grammar.html 未说明
  • 坑点 2services:[docker] 不注入 docker CLI / DOCKER_HOST unset / daemon 不可连(与 grammar.html §三 示例描述相反)
  • 坑点 3:Stage 耗时是识别"静默跳过"的关键信号 + 7 种典型 stage 的预期耗时下限表
  • 坑点 4default-build-env 实际内容实证(Java/Maven ✅ / Docker CLI ❌)

生成 .cnb.yml 决策树

  • 需要 Docker → services:[docker] + 放弃 image: + 脚本自装缺失工具
  • 不需要 → image: + 不声明 services
  • 避免死胡同:不要同时写 image: + services:[docker]

改动 4:CHECKPOINT.md 轮次 14-e 完整档案(新增 79 行)

  • 4 PR 演化链详表
  • 4 条回写经验清单
  • §七 指标变化子表
  • 规则自举第 4 次实证(首次放行
  • 4 条本轮学到的东西

验证证据(How verified)

本地 9/9 CI stages 全绿 + 0 lint

关键指标变化

指标PR-D 后PR-E 后变化
LESSONS §二 反模式19 条21 条+B13 / +B14
rules/testing-standards §1.3 子节+"口径区分"约束新增 3 硬约束
skills/cicd-pipeline/SKILL.md+"CNB 平台坑点"4 条 + 决策树新增节
#16 抽象化残留45 legit / 045 legit / 0零回归
其他(派生声明 / 双事实源)全持平全持平零回归

规则自举第 4 次实证(与前 3 次不同的结果)

前 3 次 PR #38 / PR-C / PR-D 都因 2026-05-03 / CNB 等字面量触发阻塞;本 PR 写作时 abstraction_check 没有触发阻塞 ✅。

原因:

  • LESSONS.md 在 scope 外(scope = rules/ + governance/
  • testing-standards 新增文字用抽象术语("full 口径" / "子集口径")无具体日期
  • cicd-pipeline SKILL.md 在 skills/ 不在 rules/ scope

守门员既严格又不粗暴——4 次实证 = 3 次阻塞 + 1 次放行 = M8 机器化克制 精神的完整形态。

影响面(Impact)

反模式家族首次成型

"信号欺骗家族"(Signal Deception Family):

  • B12(UI 视觉):把颜色/位置当数值
  • B13(CI status):把 success 当测试通过
  • B14(文档示例):把示例当平台完整行为

三者共同特征:"把容易看到的信号当作难以验证的真相"。可作为 LESSONS §三 新增分类(T-Q3-02 候选)。

CNB 平台坑点的公共价值

4 条坑点对任何使用 CNB 的项目都有价值——应作为"输出性资产"纳入尾声 PR #39 的可迁移模式清单(T-Q3-03 候选:第 15 种模式"CI 平台坑点实证清单")。

关闭的待办

  • ✅ T-Q2-e:回写目标项目经验(本 PR 一次完成)
  • ✅ T-Q2-i:棘轮口径区分版反馈到 testing-standards
  • ✅ T-Q2-j:LESSONS B14 候选

新增待办(Q3 周期候选)

  • T-Q3-01:git-conventions §4 新增 diag: commit type(诊断 PR 的语义标记)
  • T-Q3-02:LESSONS §三 新增"信号欺骗家族"分类条目
  • T-Q3-03:workshop-share.md 第 15 种模式"CI 平台坑点实证清单"
  • T-Q3-04:目标项目 T-Q2-d 前端 Playwright E2E

轮次 14 的完整形状

至此轮次 14 有 5 子段(a/b/c/d/e)——可能是项目最大跨度的一个轮次,从规则修订 → 目标项目业务落地 → 业务反哺 → CI 深挖 → 深挖反哺。

子段PR主题
14-a#40.archived/ 结构修正
14-bPR-B (#41)LESSONS §四 修订 + A7
14-cPR-C (#42)远端 CI + PR body 规范 + B11
14-dPR-D (#43)Q2-001 业务反哺 + B12 + §1.3.1
14-ePR-E (本)方向 F1 CI 深挖反哺 + B13/B14 + §1.3 口径区分 + CNB 坑点清单

本 PR 不动的事

  • 不改动目标项目 anta-newproject-demo(经验已合入目标项目 PR #7
  • 不做 T-Q3-* 候选(Q3 周期工作)
  • 不改 workshop-share.md(留给未来扩展)

Refs

  • 父事件:
    • 目标项目 anta-newproject-demo PR #4 / #5 / #6 / #7 演化链
    • 目标项目 CHECKPOINT §四 轮次 3 / 3.1 / 3.2 / 3.3 完整档案
  • 关联:
    • LESSONS.md §二 B13 / B14(信号欺骗家族新成员)
    • rules/testing-standards.md §1.3 棘轮口径区分约束
    • skills/cicd-pipeline/SKILL.md CNB 平台坑点实证清单
    • CHECKPOINT §四 轮次 14-e("业务反哺规则" loop 第 2 次闭合)
  • 下游:T-Q3-01~T-Q3-04 候选
is using the merge method to merge into717fee5d
合并来自 feature/q2-F1-feedback-cnb-traps 的合并请求 #44

Successfully merged and closed

branch can be safely deleted
Reviewer
None yet
Assignee
None yet
Label
None yet
Participant