
API Changelog Bot和Claude Opus 5
ae069b00a9
changelog-filename-gate / validate (push) Failing after 1s
fix: frontmatter 未转义的引号让元数据对所有消费方隐形——修 19_7443 + 给校验器补语法层
现象:Gitea 上打开这份 changelog 看不到元数据表,页面表现就是「这份文件没有元数据」,
而文件里其实写着完整的 16 个键。
根因:status_note 是 YAML 双引号标量,正文里夹着未转义的 ASCII 双引号
(...请勿据此对外宣称"确认/改派已验证可用")。YAML 在第一个内部引号处截断,
整块 frontmatter 解析失败,Gitea 于是静默不渲染。
为什么一直没人发现:本仓校验器的 parseFrontmatter 是朴素行解析——按第一个冒号切开、
两端引号成对就剥掉——它对「这份 YAML 下游读不读得了」零分辨力。于是这类文件长期处于
「校验器 PASS,而 Gitea 与任何 YAML 解析器都读不到」的状态,没有任何一处报错。
校验器回答的是自己那套宽松读法,不是消费方的读法。
改动两部分:
一、修 19_7443 那两个引号。转义只改字节不改语义,验过三条:改后 yaml.safe_load 成功、
解析出的值与作者本意逐字相同、正文一个字节没动。
二、给校验器补上它完全没有的那一层:validateFrontmatterSyntax,新错误码
E_FRONTMATTER_SYNTAX。本仓刻意零依赖,所以不引 YAML 库,按实际出过的三类伤写
定向判据:内部未转义双引号 / 收尾引号丢失 / 非法转义序列。语法校验排在所有按键
取值的校验之前——frontmatter 读不了的话,后面那些校验都是在校验一份只有本脚本
能读的东西。
自验两个方向:三种人造伤各自被拦(exit=1);全仓 1030 份逐批跑完,新增错误码
E_FRONTMATTER_SYNTAX 命中 0 次,无连带误伤;独立口径用真 YAML 解析器扫全仓,
546 份带 frontmatter 的全部可解析。
⚠️ 同一毛病另有 7 份存量文件未修(05_5530 / 08_5592 / 06_7149 / 10_7328 / 13_7625 /
15_7327 / 15_fund-account)。它们的元数据同样对 Gitea 隐形,修法已验证可行,
但每份都带着 1~3 条与本次无关的历史门禁错误(E_FRONTEND_STATE「verified 必须填写
target_release」为主,另有 E_AUTHOR / E_API_TEMPLATE / E_BACKEND_STATUS),
推不上去。补那些字段需要编造内容,不做。
🔴 值得记一笔的因果:正是门禁这个严格度让这 8 份一直坏着——谁想顺手修一下,
就会撞上一堆与自己无关的历史错误然后放弃。修复脚本留在
D:/work2/_scratch/changelog-fm-fix/,等 wx 决定是给存量文件开豁免还是补齐字段。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-20 11:04:32 +08:00
..
2026-09-06 10:43:20 +08:00
2026-09-06 10:43:20 +08:00
2026-09-06 10:43:20 +08:00
2026-09-01 16:13:30 +08:00
2026-09-06 10:43:20 +08:00
2026-09-06 10:43:20 +08:00
2026-09-06 10:43:20 +08:00
2026-09-06 10:43:20 +08:00
2026-09-06 10:43:20 +08:00
2026-09-06 10:43:20 +08:00
2026-09-06 10:43:20 +08:00
2026-09-04 09:51:13 +08:00
2026-09-04 20:04:16 +08:00
2026-09-04 20:04:16 +08:00
2026-09-04 17:02:19 +08:00
2026-09-04 14:25:48 +08:00
2026-09-06 10:43:20 +08:00
2026-09-04 20:04:16 +08:00
2026-09-04 22:22:18 +08:00
2026-09-04 20:04:16 +08:00
2026-09-04 15:37:23 +08:00
2026-09-04 20:04:16 +08:00
2026-09-04 20:43:38 +08:00
2026-09-04 23:34:24 +08:00
2026-09-05 11:20:24 +08:00
2026-09-05 11:35:01 +08:00
2026-09-06 10:43:20 +08:00
2026-09-06 16:41:24 +08:00
2026-09-07 21:29:21 +08:00
2026-09-06 10:43:20 +08:00
2026-09-08 16:29:47 +08:00
2026-09-06 10:25:32 +08:00
2026-09-06 16:33:44 +08:00
2026-09-06 16:33:44 +08:00
2026-09-06 12:59:28 +08:00
2026-09-08 13:30:19 +08:00
2026-09-08 15:56:23 +08:00
2026-09-06 16:33:44 +08:00
2026-09-10 10:38:39 +08:00
2026-09-10 10:38:39 +08:00
2026-09-06 16:40:20 +08:00
2026-09-07 09:51:52 +08:00
2026-09-08 08:02:04 +08:00
2026-09-08 08:02:04 +08:00
2026-09-08 13:30:19 +08:00
2026-09-10 09:27:08 +08:00
2026-09-08 14:06:12 +08:00
2026-09-06 16:33:44 +08:00
2026-09-06 19:24:54 +08:00
2026-09-07 16:54:29 +08:00
2026-09-07 15:56:09 +08:00
2026-09-08 13:18:09 +08:00
2026-09-08 14:48:31 +08:00
2026-09-08 10:33:14 +08:00
2026-09-08 08:02:04 +08:00
2026-09-08 12:49:35 +08:00
2026-09-07 19:02:13 +08:00
2026-09-08 10:23:44 +08:00
2026-09-08 12:16:13 +08:00
2026-09-10 10:38:39 +08:00
2026-09-10 15:42:42 +08:00
2026-09-07 16:37:29 +08:00
2026-09-07 17:35:20 +08:00
2026-09-07 12:04:48 +08:00
2026-09-08 08:02:04 +08:00
2026-09-07 15:17:44 +08:00
2026-09-08 11:14:06 +08:00
2026-09-07 17:35:20 +08:00
2026-09-07 20:23:24 +08:00
2026-09-08 08:02:04 +08:00
2026-09-08 14:06:12 +08:00
2026-09-08 12:49:35 +08:00
2026-09-08 16:56:42 +08:00
2026-09-08 17:36:53 +08:00
2026-09-08 18:58:20 +08:00
2026-09-08 18:17:57 +08:00
2026-09-08 22:30:49 +08:00
2026-09-08 17:29:52 +08:00
2026-09-09 17:54:39 +08:00
2026-09-09 17:54:39 +08:00
2026-09-09 17:54:39 +08:00
2026-09-09 17:54:39 +08:00
2026-09-09 17:54:39 +08:00
2026-09-09 17:54:39 +08:00
2026-09-09 17:02:38 +08:00
2026-09-09 17:54:39 +08:00
2026-09-09 17:54:39 +08:00
2026-09-09 13:55:49 +08:00
2026-09-09 09:55:57 +08:00
2026-09-09 18:03:10 +08:00
2026-09-10 09:24:14 +08:00
2026-09-09 23:27:33 +08:00
2026-09-10 15:47:31 +08:00
2026-09-11 10:39:30 +08:00
2026-09-10 10:05:26 +08:00
2026-09-11 11:17:31 +08:00
2026-09-11 10:01:17 +08:00
2026-09-10 15:09:21 +08:00
2026-09-10 22:35:45 +08:00
2026-09-10 12:06:07 +08:00
2026-09-10 15:09:21 +08:00
2026-09-10 15:32:32 +08:00
2026-09-10 18:01:41 +08:00
2026-09-10 18:21:26 +08:00
2026-09-11 11:47:00 +08:00
2026-09-13 10:54:55 +08:00
2026-09-11 19:20:10 +08:00
2026-09-11 19:20:10 +08:00
2026-09-11 14:46:14 +08:00
2026-09-11 18:14:35 +08:00
2026-09-13 09:51:52 +08:00
2026-09-13 09:51:52 +08:00
2026-09-13 09:51:52 +08:00
2026-09-13 09:51:52 +08:00
2026-09-13 09:51:52 +08:00
2026-09-12 07:46:16 +08:00
2026-09-13 10:08:51 +08:00
2026-09-13 09:51:52 +08:00
2026-09-13 09:51:52 +08:00
2026-09-13 10:20:40 +08:00
2026-09-13 09:51:52 +08:00
2026-09-13 09:14:00 +08:00
2026-09-13 10:50:18 +08:00
2026-09-14 11:11:19 +08:00
2026-09-13 14:39:53 +08:00
2026-09-14 10:22:59 +08:00
2026-09-13 14:47:04 +08:00
2026-09-13 15:10:28 +08:00
2026-09-13 16:32:00 +08:00
2026-09-13 10:31:02 +08:00
2026-09-14 10:14:41 +08:00
2026-09-13 11:00:37 +08:00
2026-09-13 13:11:26 +08:00
2026-09-13 15:01:58 +08:00
2026-09-13 15:01:58 +08:00
2026-09-14 16:02:16 +08:00
2026-09-13 17:51:23 +08:00
2026-09-13 16:25:38 +08:00
2026-09-14 09:32:30 +08:00
2026-09-14 09:32:30 +08:00
2026-09-14 10:25:25 +08:00
2026-09-14 11:16:00 +08:00
2026-09-14 15:54:21 +08:00
2026-09-15 09:09:43 +08:00
2026-09-14 17:22:41 +08:00
2026-09-14 10:31:50 +08:00
2026-09-14 07:54:30 +08:00
2026-09-14 13:01:21 +08:00
2026-09-14 22:37:38 +08:00
2026-09-14 22:30:35 +08:00
2026-09-14 16:21:13 +08:00
2026-09-15 00:04:58 +08:00
2026-09-15 16:29:10 +08:00
2026-09-15 16:29:10 +08:00
2026-09-15 16:29:10 +08:00
2026-09-15 16:29:10 +08:00
2026-09-15 17:06:32 +08:00
2026-09-16 09:24:48 +08:00
2026-09-16 03:33:40 +08:00
2026-09-16 03:33:40 +08:00
2026-09-16 03:33:40 +08:00
2026-09-15 16:29:10 +08:00
2026-09-15 12:21:04 +08:00
2026-09-15 09:41:47 +08:00
2026-09-15 09:54:43 +08:00
2026-09-15 09:25:15 +08:00
2026-09-15 21:20:59 +08:00
2026-09-15 18:00:16 +08:00
2026-09-15 18:00:16 +08:00
2026-09-15 12:05:16 +08:00
2026-09-15 15:55:20 +08:00
2026-09-15 14:26:33 +08:00
2026-09-16 09:07:44 +08:00
2026-09-16 09:31:17 +08:00
2026-09-16 15:19:13 +08:00
2026-09-16 20:27:40 +08:00
2026-09-16 09:33:11 +08:00
2026-09-16 10:02:36 +08:00
2026-09-17 09:17:58 +08:00
2026-09-16 14:47:30 +08:00
2026-09-16 14:47:30 +08:00
2026-09-16 09:07:44 +08:00
2026-09-16 15:19:13 +08:00
2026-09-17 10:02:58 +08:00
2026-09-16 16:38:33 +08:00
2026-09-16 17:32:08 +08:00
2026-09-16 17:32:08 +08:00
2026-09-16 23:36:33 +08:00
2026-09-17 10:28:11 +08:00
2026-09-16 16:30:54 +08:00
2026-09-16 16:30:54 +08:00
2026-09-17 18:28:13 +08:00
2026-09-17 18:59:49 +08:00
2026-09-19 04:39:22 +08:00
2026-09-18 08:06:47 +08:00
2026-09-17 15:03:13 +08:00
2026-09-17 10:30:52 +08:00
2026-09-17 23:52:43 +08:00
2026-09-17 10:28:11 +08:00
2026-09-17 11:19:18 +08:00
2026-09-17 10:50:57 +08:00
2026-09-17 11:32:37 +08:00
2026-09-17 19:51:40 +08:00
2026-09-17 15:03:13 +08:00
2026-09-17 19:20:15 +08:00
2026-09-17 22:04:10 +08:00
2026-09-17 17:19:11 +08:00
2026-09-17 16:57:15 +08:00
2026-09-19 03:34:37 +08:00
2026-09-18 11:37:47 +08:00
2026-09-18 20:20:59 +08:00
2026-09-18 14:35:27 +08:00
2026-09-18 11:50:41 +08:00
2026-09-18 12:23:13 +08:00
2026-09-18 14:57:27 +08:00
2026-09-18 14:57:27 +08:00
2026-09-18 18:12:53 +08:00
2026-09-18 18:12:53 +08:00
2026-09-18 16:13:51 +08:00
2026-09-18 16:10:53 +08:00
2026-09-18 17:22:48 +08:00
2026-09-18 18:16:37 +08:00
2026-09-18 16:10:53 +08:00
2026-09-18 16:10:53 +08:00
2026-09-19 14:35:25 +08:00
2026-09-19 14:35:25 +08:00
2026-09-19 14:30:07 +08:00
2026-09-20 11:04:32 +08:00
2026-09-19 00:08:27 +08:00
2026-09-20 09:29:21 +08:00
2026-09-20 09:52:45 +08:00
2026-09-20 09:42:54 +08:00