# CHANGELOG 面向使用者的**版本间净变化**(修复 / 改进 / 新增)。只写最终结果,不写过程。 判据、阈值、触发词的任何改动都必须同时更新 `MEASUREMENTS.md` 的数字与 `cases/` 的回归结果。 ## 1.3.0 — 2026-09-22 **新增** - **事实范畴 9 → 16**(`tools/source-matrix.json` 的来源阶梯与 `tools/route.mjs` 的触发词表同步扩充)。新增七个范畴:**司法案件 / 判决 / 执法**、**自然灾害 / 事故 / 突发事件**、**食品安全 / 农产品**、**科学常识 / 伪科普**、**教育 / 考试 / 学历**、**体育赛事 / 转会 / 兴奋剂**、**娱乐 / 名人传闻**。取舍口径对齐辟谣平台的实际分类:中国互联网联合辟谣平台的月度榜单按公共政策 / 社会民生 / 灾害事故 / 教育考试 / 食品安全等领域归类,科学辟谣平台(中国科协)覆盖 14 个领域、健康类约占三分之一。 - **`SKILL.md` 的垂直领域表述跟上新范畴**:能力表的「垂直域检索」行与 Step 1 的「垂直领域」要点原先只列学术 / 法律 / 医疗 / 金融,现补上灾害事故 / 食品安全 / 科学常识 / 教育考试 / 体育 / 娱乐名人 / 司法案件各自的一手源,并指向 `tools/source-matrix.json`。**这是本次扩充能否生效的关键一处**——路由表是可选工具,模型实际读的是 `SKILL.md` 正文。 - **渠道路由表新增 4 条**:`gov_notice`(应急管理部与地方应急部门、中国地震台网速报目录、市场监管总局与国家药监局、教育部与省级考试院、法院公告与警情通报)、`science_authority`(科学辟谣平台 / 专业学会 / 主管机构公开数据)、`sports_official`(联赛与协会官宣、官方计时计分、WADA 与中国反兴奋剂中心)、`entertainment_official`(本人与工作室声明、出品方官方物料;涉死亡或违法时以警方通报为准,声明不能替代通报)。来源阶梯表新增一条规则:**伤亡数字、震级、抽检结果、判决结果一律回到发布机构的原始通报核对,媒体转述里的「据通报」不计为独立来源**。 - **失败动作表新增 2 条**:①「同一机构的伤亡数字 / 震级前后不一(初报 vs 续报)」→ 按**数字滚动更新**处理,以最新一次通报为准并在报告里写明修正过程,**不判为来源互相矛盾**(只有跨机构口径不同才算真矛盾);②「官方源要求注册登录(裁判文书网、部分政务平台)」→ 改走该机构的公开栏目或注明出处的转述,把「需登录」如实写进局限,不要伪造原文。第 ① 条针对新范畴带来的新失败模式——灾害伤亡数字本就逐次修正,按旧规则会被误读成来源矛盾而触发降档。 - **回归语料 14 → 26 例**(`cases/route-cases-neutral.json`):覆盖七个新范畴,并加四条相邻范畴的**不串味**断言——「地震遇难人数」不得落进娱乐域、「太阳耀斑」不得落进学术域、「案件判决」不得落进政策域、「球员转会费」不得落进金融域。 - **`tools/route.mjs arms` 子命令**:把 `dispatchHint` 当确定性关键词臂,对本包 `dispatch-*` 语料与两名独立盲标注员的共识比对,输出一致率 / 误判派 / 漏判派与逐条不符样本,`--out` 可落盘逐例结果。这是 `MEASUREMENTS.md` §4.1 那个数字的复跑路径——此前派发数字没有随包脚本(§6 原文写「需要你自己写十几行的编排脚本」)。语料路径从本文件定位、未硬编码,输出里带一句「与 §4 作者侧 R 规则不可横向比较」的提示。 **修复** - **`legal_case` 的阶梯首位此前不可达**:原第一位写「裁判文书网与法院公告(判决书原文)」,但该站现**需手机号注册登录**,且上网文书从 2020 年约 1900 万件降至 2023 年 570 万件(公开率 81.3% → 12.5%,2024 上半年仅 131 万件),另有已上网文书被下架。现改为**法院公告 / 检察院通报 / 警情通报 / 纪委监委通报优先**,裁判文书网降到阶梯末位并标注「需注册登录、公开率已大幅下降,检索不到不等于案件不存在」;`gov_notice` 路线里的同一处照改。 - **`medical` 的域路由与阶梯首级错配**:它原先指向 `official_json_api`(国务院政策文件库 / 法规库 / 辟谣平台),而它的阶梯首级是「药品监管机构批准信息」——两者对不上。已改走 `gov_notice`(含国家药监局与市场监管总局)。 - `tools/route.mjs` 的 `DOMAIN_SIGNALS` 注释写的是「第一个匹配获胜」(`Ordered: the first match wins`),与实现不符:实现收集**所有**命中的域并联输出,一条任务可以同时是灾害 + 社媒传闻、两份来源阶梯都会给出。注释已改为陈述实际行为;域路由表与兜底域各补一条说明。 **其它** - `tools/route.mjs regress` 支持 `--out report.json` 落盘逐例结果(此前只有 `arms` 支持,同类子命令行为不一致)。 - `tools/route.mjs` 离线断言 19 → **37 项**(新增:每个范畴的路线数 ≤5、来源阶梯表与路由表的双向完整性、七个新范畴各自的路线命中、四条不串味断言、三条代理指标的纯逻辑断言,以及用药走官方通报、裁判文书网位于阶梯末位、失败动作表覆盖「数字滚动修正」各一条)。 - **CI 与贡献流程把 `arms` 纳入强制**:`.github/workflows/selftest.yml` 新增一个 step,`.github/PULL_REQUEST_TEMPLATE.md` 的离线检查清单、`CONTRIBUTING.md` 与 `CONTRIBUTING.zh-CN.md` 的「提 PR 前跑这几条」同步补上。「改触发词要重跑 arms」这条纪律此前没有 CI 强制力。 - `MEASUREMENTS.md` 新增 **§4.1**:本次触发词改动后,用 `dispatchHint` 作代理指标对 35 条双盲共识复跑,**27/35 = 77.1% → 28/35 = 80.0%**(误判派 2 不变、漏判派 6 → 5)。净 +1 是 D31「明星绯闻」由漏判转为正确派发,来自补齐娱乐范畴而非照标签调参。⚠️ 该代理指标与 §4 表中作者侧的 R 规则(88.6%)不是同一实现,**不可横向比较**。§7 补第 8 条(域路由正则的已知误命中,含 `medical` 路由订正)与第 9 条(`factPointsInText` 只数标点、不是真的拆事实点,却被 `dispatchHint` 当判据)。 - 各文档的验收数字同步:`route` 离线断言 **37/37**、路由语料 **26/26**(`README.md` / `README.zh-CN.md` / `FOR-AI.md` / `ADAPTING.md` / `cases/README.md`)。 ## 1.2.2 — 2026-09-21 **其它** - `CHANGELOG.md` 的 `## Errata` 表首行措辞订正:原文写"首轮修复",容易被读成"上游在 1.0.0 之后又修过一次";改为明确"首轮即完成、随 1.0.0 首发即包含(发生在首个分发基线之前,不属于任何已发布版本之间的变化)"。**只动 Errata 段措辞,未改任何版本条目内容。** - 为这处纯元数据措辞升一个 patch 位的原因:按本项目自身的对齐原则,同一个版本号下不应存在内容不同的两份产物。 ## 1.2.1 — 2026-09-21 **修复** - `SKILL.md` 运行前提的判定句跟着阶梯数订正:抓取链已是五级,判定句仍写"只有**三条路径全部失败**才判无法核查"→ 改为"**五条**"。这是**操作纪律**(什么情况下才允许报"无法核查"),写错会让模型在第四条、第五条链还没试时就下结论,直接抵消 1.2.0 扩阶梯的改进。`INSTRUCTIONS.md` 是生成物,已随 `make-instructions.mjs` 重生成。 - `CHANGELOG.md` 的 1.1.0 条目补记**第三条排版纪律**(来源比对写法,原只记两条);同段恢复第一轮的 4 处版本归属订正与 1.0.0 段的 errata 行——1.2.0 打包时误用了未修正的 `CHANGELOG` 副本(工作副本与外部修正版两条基线未握手),把这批订正整体覆盖了,本轮从修正版基线重建。 ## 1.2.0 — 2026-09-21 **改进**(均为文档结构与渠道表,**未触碰判据与路由的判定逻辑**,`MEASUREMENTS.md` 的数字继续有效) - `SKILL.md`:新增**接线点表**(「可选增强」节)——哪个 Step 调哪条命令,把"只能降档""`sufficient` 不可单用"从戒律变成照着做的接线图。 - `SKILL.md`:子代理分发节补一条纪律——**"拆完事实点后立刻定模式,不要为了用不用子代理去问用户"**(无人值守时同样自己决定)。 - `SKILL.md`:运行前提的抓取链从三条扩为**五级阶梯**;各级的实测可用性结论归 `runtimeNotes`,不进正文。 - `tools/engine-routes.json`:`news_rss` 路由补 **GDELT DOC 2.0 / TV 2.0** 与**中新网 RSS**。并入现有路由而非新增独立路由,以免 `international` 域的路线数越过 selftest 上限。 - `SKILL.md` frontmatter 的 `description` 末尾补执行模式说明。 **修复** - 引言句与 Step 4 的定位对齐:改为"输出**结论先行、证据可溯源**的核查报告"。 **其它** - `MEASUREMENTS.md` 的版本归属句改准:判据数字出自 **1.0.0 语料**,1.1.0 / 1.2.0 均未改动那五套语料;`route` 语料是 1.1.0 新增的。 ## 1.1.0 — 2026-09-21 **修复** - `tools/jev-verdict.mjs`:**经符号链接 / junction 访问时整个 CLI 静默失效**。判断"是否被直接运行"用的是字符串比较 `resolve(argv[1]) === resolve(fileURLToPath(import.meta.url))`,而 Windows 上 `fileURLToPath` 会把路径解析过链接、`argv[1]` 保留调用者给的路径,两者不等 → 主函数不执行、**什么都不做、退出码 0**(连 `selftest` 都无声"通过")。改为 `realpathSync` 后再比较,并加 3 条离线断言防复发。(当时的技能目录正好是指向工作区的符号链接,所以踩中。) - `tools/doctor.mjs`:`which()` 在 Windows 多行输出下残留 `\r`,终端里被回车覆盖成"吞掉半行"(`where python3` 命中两条时必现)。改为按 `/\r?\n/` 切分;同一命令有多条命中时把其余路径也列出来,并提示存根可能不可用。 - `tools/route.mjs`:社媒舆情类任务漏判——触发词表只有平台名,缺"舆情 / 热搜 / 大V / 博主 / 网暴 / 舆论危机"这类**事件性质词**,"核查某公司近期舆情"会落到兜底域、`closedEcosystem` 判成 false。同时修掉 `international` 用单字 `美|日|欧` 造成的误命中("美观""日用品"被当成国际类)。 **改进** - `SKILL.md` 运行前提:把"打开网页正文"明确为**能力族**(宿主内置抓取 / `curl` + readability 系 / 搜索服务自带抽取字段三条链)。首选失败必须降级到次选,三条全部失败才判"无法核查",且必须在报告的「本次未能核实到的」里写明试过哪几条、各报什么错。 - `SKILL.md` Step 4:报告模板改为**结论先行**——一句话结论 → 始末/事实概要 → 四档判定(✅ 事实级 / ✅ 解读级 / ⚠️ 未证实 / ❓ 无法裁定)→ 国内外视角 → 为什么会这样(可选)→ 一句话总结 → 本次未能核实到的 → 来源编号附录 → 工具与能力使用情况。同时新增三条排版纪律(① 证据是附录不是主体;② ⚠️/❓ 两档不得与 ✅ 混排,须逐条带警示语;③ 来源之间的比对要写明——口径一致注"([n][m] 一致)",口径不同注差异与采信理由,矛盾且无法裁定的整条移入 ❓ 档)与"核查口径"声明(公开信息源判定,不构成法律事实认定)。 - `tools/local.json` 新增三个**可选**字段:`capabilities`(能力绑定)、`outputConvention`(本机输出约定)、`runtimeNotes`(运行时基线,例如哪些渠道在本机真的可用)。本机适配不再需要改正文。 - `tools/doctor.mjs --net`:新增正文抓取链自测,对 `https://example.com` 真跑一次 fetch 与 curl 并统计可见正文长度;两条都失败才算 `fail`(宿主内置抓取与搜索服务抽取字段本脚本探不到,输出里已注明)。 - `tools/route.mjs`:新增 `regress --file <语料>` 子命令,路由层有了独立回归。 - 新增回归语料 `cases/route-cases-neutral.json`(14 例,覆盖各域路由、舆情漏判与单字误命中回归),路由层首次有了独立回归。 **其它** - `SKILL.md` frontmatter 增加 `version` 字段;维护须知增加版本纪律(改行为就升版本并记一条净变化)。 - 本版回归基线(本包语料,2026-09-21 两轮):`support` 37/40、`injection` 11–12/12、`provenance` 15–16/16、`usable_page` 12/12、`sufficient` 25–26/40;离线断言 `jev-verdict` 25/25、`route` 19/19;`route` 语料 14/14。 ## 1.0.0 — 2026-09-21(首次分发) - 首个对外分发的版本:流程与铁律(`SKILL.md`)、环境适配清单(`ADAPTING.md`)、实测数字与复跑方法(`MEASUREMENTS.md`)、两个零依赖工具(`route.mjs` 确定性路由、`jev-verdict.mjs` 判据层)、去痕回归语料、交给 AI 的操作手册(`FOR-AI.md`)。 - 该版的实测数字记在 `MEASUREMENTS.md`;本版(1.1.0)新增一套路由层语料与若干行为改动,见上。 - 首发即包含(1.1.0 初稿曾误列为本版修复项,经与 1.0.0 逐行比对确认零差异,已归位):`tier --claim` 可单独使用、`tier` 输出 `stopSearching` 对象而非 `continueSearching` 开关、`FOR-AI.md` 的「三条硬约束 + 一条输出纪律」结构、`cases/usable-page-cases-neutral.json`(12 例)。 ## Errata 记录"哪条修正是第几轮、由谁提出的",用于基线弄错时发现缺失(1.2.1 的教训:改 CHANGELOG 前没先与外部修正版握手,整批订正被覆盖)。 | 轮次 | 来源 | 修正内容 | 落点 | |---|---|---|---| | — | 上游 | 首轮即完成、随 1.0.0 首发**即包含**(发生在首个分发基线之前,不属于任何已发布版本之间的变化):`tier` 崩溃 / `continueSearching` 纪律 / FOR-AI 硬约束计数 / usable-page 语料 | 1.0.0 段(errata 行) | | 1 | Everywhere | `CHANGELOG` 4 处归属订正(`tier` 两条与 FOR-AI 条属 1.0.0;usable-page 非本版新增) | 1.0.0 段 + errata 行 | | 2 | Everywhere | 排版纪律计数与内容(原只记两条,实为三条) | 1.1.0 段 | | 3 | Everywhere | 抓取链判定句"三条"→"五条";并恢复被覆盖的第一轮订正 | 1.2.1 |