提交图
7 次代码提交
作者 SHA1 备注 提交日期
API Changelog Bot和Claude Opus 5 78ca3f1ee3 feat(guard): E_WAIT_LANGUAGE 补第四类——把「什么时候上线」写成派给前端的动作项
changelog-filename-gate / validate (push) Failing after 1s
今天上午装这条守卫时只想到「等/待/另发」这一种形态,当天下午就被另一种形态绕过去了:
20_7443 正文写着「上生产前请与后端确认这个开关的状态」与「生产环境未开」,
mmg 据此来问上线时间、并要求「后端把生产开关打开」——而守卫全绿,因为这两句
一个词表词都没用上。它们把不确定性包装成了「请你去确认」,语法换了,作用一样:
读者只能停在那里等一个他查不到的状态。

判据仍是那一句:这条影响他「怎么写代码」,还是只影响他「什么时候开始写」。
上线时点属后者。前端需不需要同步上线,由 frontend_action_required 与模板里
「前端是否必须同步上线」那个结构化字段承载,正文自由文本里不该再出现。

词表先对全仓 1068 份 changelog 实跑,只留零命中且零正当用法的 12 个词。剔除两个:
  「何时开」  —— 误伤「保护何时开始生效」「窗口何时开过」
  「生产上线」—— 误伤 07_5640「生产上线需配 annual-direct-plan-id」,那是真契约边界

部署时间戳没做成规则:该形态全仓 0 命中,分辨力无从验证,而必须放行的
「带时刻实测取证句」有 690 处——判据的误伤面远大于收益时,门禁只会教人绕开它。
这一类只能靠 §2.1 的条文和复盘接住,机器接不住,如实记在注释里。

测试:新增 2 条阳性 + 1 条阴性对照,阴性那条与阳性只差一个「上生产前」,
用来钉住分界线(「收到 809009 找后端确认该环境的开关」是运维处置,必须放行)。
npm test 59 项 58 绿;唯一的红是存量的 E_ALIAS_STATE(11_7510,与本次无关)。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-21 16:23:33 +08:00
API Changelog Bot和Claude Opus 5 047a4be4fd feat(gate): 新增 E_WAIT_LANGUAGE——交接件正文禁「让前端等我们」的措辞
changelog-filename-gate / validate (push) Failing after 2s
2026-09-21 wx 第二次点名:「不要在changelog里写让前端等待部署 这不是你第一回犯错了
工作流是你部署完测试环境推送changelog」。

§2.1 的 backend_status 门禁挡得住预告式推送,挡不住这一类:20_7443 的 frontmatter
已经是 deployed、CI 全绿,但正文 status_note 结尾写着「该缺陷已在修……修好后另发
交接件」。mmg 因此一直没动工,隔天才来问「这个是有啥问题吗 还是没做到呢」——门禁
只看 frontmatter,看不见自由文本里的这句话,所以「deployed + 校验绿」并不代表这份
交接件可执行。消费方也没有能力消解这种不确定性:他查不了我们的部署状态、看不到
dev-v3、不知道「另发」是哪天,读到「等」就只能等,而且是静默地等。

- scripts/validate-changelog-frontmatter.mjs:新增 validateNoWaitLanguage,对所有
  v2 文档逐行扫描(与 change_type 无关,前端条目同样适用)。三类措辞:部署状态对冲、
  未来交付承诺、直接叫停对接;「等待」做共现判定而非裸词匹配,避免把「前端需轮询
  等待支付回调」这类业务语义一起拦掉。前向引用(「以后续订正为准」「见后续订正」)
  一并封住——它和「修好后另发」是同一件事换个说法,实测被绕过一次。
- tests:4 个用例,含 1 个阴性对照(灰度开关状态、已知缺口工单号、业务流程里的等待
  必须放行),防止作者为了过门禁把该写的契约边界一起删掉。
- BACKEND_CHANGELOG_DELIVERY_GUIDE.md §2.1:写明规则、背景与那条分界线——这条影响
  他「怎么写代码」,还是只影响他「什么时候开始写」?后者一律删。

阳性对照:对已推送的 HEAD 版 20_7443 跑新规则,命中 2 处(第 308、451 行「修好后另发」),
即它能抓住真实发生过的那次。既有 changelog-path-aliases 测试对 11_7510 的 2 条
E_ALIAS_STATE 红是本次改动之前就存在的,与本提交无关,pre-push 钩子也不跑该用例。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-21 15:27:37 +08:00
lc 3d6f6245a0 补齐行政区划三级联动接口文档与模板门禁(#6422)
changelog-filename-gate / validate (pull_request) Successful in 2s
2026-08-26 16:23:19 +08:00
Mimingguang 3c099dca2f fix(changelog): 清理悬空路径别名
changelog-filename-gate / validate (push) Successful in 2s
修改原因:远端 b140269 已删除 #5216/#5262 两个非法旧文件名,遗留 alias 配置会令 source 测试失败。

修改内容:移除指向已删除物理文件的 repository alias;保留临时 fixture 对 alias 解析、状态同步和安全校验的覆盖,并更新仓库清单回归断言。

实际验证:source npm test 46 项、check:path-aliases 与 git diff --check 通过。Changelog:#5216、#5262 路径兼容清理。
2026-07-28 14:41:02 +08:00
wx 5c7fa5dbe6 fix(changelog): restore stable path aliases for #5252
changelog-filename-gate / validate (pull_request) Successful in 2s
2026-07-26 15:02:13 +08:00
wx 6cbe22f40a feat: track frontend changelog consumption (#5218)
changelog-filename-gate / validate (pull_request) Successful in 2s
2026-07-24 15:22:10 +08:00
yst bf6e7636ac fix(workflow): 增加 Changelog 文件名检测器 (#24)
changelog-filename-gate / validate (push) Has been cancelled
2026-07-23 09:24:42 +08:00