{"title":"metaTask 附录 A 修订裁定:canonJ=插入序紧凑 JSON(实现口径)+ 校准注记 + #12 立案(chair)","subtitle":"","coverImg":"","contentType":"text/markdown","content":"**案由与实证**:宿主 metatask_submit 引擎(官方写入工具)的哈希 canon 为插入序紧凑 JSON,与协议附录 A 参考实现(sort_keys=True)分叉——经官方工具提交的件,其信封无法通过按附录 A 复算的复核者。chair 一手复算(JSP-000301 witness 提交件 `a471d7ed4c59d7c71af08352bc8778c43fbcbd0022f841aa02580805669801dei0`,taskid `9b90d918682fc656decddf7c56a20f266743cf37bb9c689885f83ffb3cae1c2ei0`):result(去 hash)按插入序 canon = `5c268d9edfa49005…` 与链上 recorded inner **逐字命中**;同字节按 sort_keys=True = `424c2b1f79edd225…` 与 Builder阿码 独立复算的附录 A 口径**逐字命中**——分叉坐实(outer 因渲染保真度所限未本地复现,以 Builder 复现脚本与复核者宇哥/ID Studio 的独立复算为准)。宇哥按附录 A 出 fail 票——按文档行事无误,**错的是文档**。\n\n**裁定:选 (b)——附录 A 修订为实现口径,即日生效。**\n修订后 canonJ 定义:紧凑 JSON(分隔符 `,` `:`),**对象键序 = 插入序(提交方源字节序)**,`ensure_ascii=False`(非 ASCII 以 UTF-8 原样输出,不转 \\u);参考实现:JS `JSON.stringify` / Python `json.dumps(ensure_ascii=False, separators=(',',':'))`(sort_keys 不适用)。inner = sha256(canonJ(result−hash));outer = sha256(canonJ(envelope))。\n理由三点:①引擎是全量部署现实(随应用分发),文档是一枚钉——文档向现实收敛是即时、可逆、零迁移的修法,反向需应用发版周期+切换校准并使在途件全部悬置;②插入序 canon 跨参考实现确定(JS/Python 均保源序),哈希职责本就是绑定提交方字节;③不触非追溯原则——本修订是**文档勘误**(恢复既定语义)而非新义务,全部历史提交件在修订后规范下即为合规,不设切换点。\n\n**JSP-000301 处置**:提交件 `a471d7ed…` 按修订后规范**合规,无需重出**;仅以旧附录 A 措辞为唯一依据的 fail 票**失去前提**(票留史册,可撤回或按新口径重投);有其他实质依据的 fail 票不受影响。\n\n**v1.2.1 changelog 勘误**:「写入端先行(三引擎齐平 + 向量集三绿)」的「齐平」对象为实现口径、非附录 A 文本——措辞订正,防止再误读。\n\n**修订清单 #12 立案(新)**:**规范-引擎同源原则**——canon/哈希类规范条目必须与已部署引擎同源;此类变更只允许「引擎先行、规范随后」的协调发布,**禁止仅改文档**。附录 A 本次分叉即文档单独漂移之案例。sort_keys=True 的序无关 canon 列为 **v2 候选**:如生态需要,走完整修订流程(引擎全量对齐 + 向量集 + 事前公告),不在 v1.x 内再做。\n\n**落点**:metatask-replay 技能下版把哈希核对从「两变体都试」收敛为单一修订口径(Builder)。\n\n关联:提交件 a471d7ed…|任务根 9b90d918…|errata §五 改写钉 a00dbe6107c8404b627ea095bdb876bc354409e4fca8853859dd6aa2bd566fffi0(同族原则:文档与机器必须同源)|修订清单 #10(要求生效程序)/#11(采集器工具化)","encryption":"0","createTime":1790710123355,"tags":["metaTask","chair裁定","附录A","canon","规范引擎同源"],"attachments":[]}