# 覆盖率基线（JSON-LD 子项目独立基线；J4 立，2026-10-03）
#
# 状态：**棘轮已紧（役C5 换带，2026-10-09）**——未覆盖行数 ≤ **235**，只降不升；
#   上调必须写明理由（例如新增整块被测代码 / 统计口径变化）。
#   立阈/紧阈依据：承 const §6.1「门不开即红」——先补测试到可接受水平再设阈
#   （689 J4 立 → 役65 补测 + 删死件净 −81 → 608 收官实测立阈，非"开即红"；
#   役C1–C3 覆盖率战役 689→237 活线待勘清零，C4 同命令复测 237 同值紧阈；
#   C4 锁门后役P1 七批产品码变 −2（批3 索引/批5 细胞清偿），C5 复测 235
#   同笔换带——门锁到实测；235 行冷全数死账六族在册勿删）。
#   行号锚口径（评审役 2026-10-09 注记）：b313589 注释清账致 expand 净 −15 /
#   engine −4 / canon −5 / from_rdf −2 行位移（非均匀）——册上行号锚 = 位移前
#   历史口径；六族论证系结构性论证，不依赖行号复现，按日期锚定维持。
#   口径注记：本基线统计**未覆盖行数**，与 moonttl 先例（covered‰ 只升不降）方向相反——
#   棘轮方向 = 只降不升；未用 permille 式（分母随源码浮动，未覆盖行数是绝对量更稳）。
#
# 度量口径（**固定顺序保证可复现**）：
#   cd jsonld
#   moon coverage clean && moon test --enable-coverage > /dev/null \
#     && moon coverage analyze -p thy1016/jsonld | tail -1
#
# **两个实测坑（必读；都不是可选项）**：
#   坑① **`moon coverage clean` 不可省**——源码改动后 `_build` 里会留**旧插桩产物**，与新产物
#     混跑会写出对不上的 trace ⇒ 报告直接 `length mismatch` / `index out of bounds`
#     （moonttl 先例 2026-09-18 实测踩过；本包 2026-10-03 沿用同序命令）。
#   坑② **`-p` 取包名（`thy1016/jsonld`），不是路径**——给路径形会报
#     "package name `src/jsonld` is incorrect / No coverage source data found"（本包实测）。
#
# 读数（2026-10-03，首次，J4 收官；同命令 + 同一留证 ⇒ 第三方得到同一读数）：
#   Total: 689 uncovered line(s) in 10 file(s)   （jsonld 包 10 个源文件）
#   注：本读数只统计**未覆盖行数**（棘轮方向 = 该数只降不升）；全模块读数另在 CI 静态作业口径内。
# 读数沿革：
#   2026-10-03 役65 中途（render_json 晋 pub + flatten 合一 + 转义门/负例钉前）：645
#   2026-10-03 役65 收官（nquads 负例臂 16 钉 + html 裸值 '/' bug 修复 + 双 wbtest 新件）：
#     Total: 608 uncovered line(s) in 10 file(s)   **= 立阈值**
#   （役65 动账：删 frame_debug 族 184 行 [死件，零调用点]；补测 12 白盒钉；
#     expand_standard 218 / compact_standard 117 / frame 91 未覆盖带仍在——系统性
#     负例路径批量补测留给下役"覆盖率战役"本体，本役只收官实测立阈。）
#   2026-10-06 发布前复测（子仓化独立模块后冷口径，命令见上）：606（棘轮内 Δ−2）。
#   2026-10-07 役C1批9（expand_standard 全段扫尾勘定 + 值对象/@nest/@included/
#     list/容器组合/两阶段保护 27 探针；316/316 绿）：**451**（棘轮内 Δ−23；
#     expand_standard 段 93→72、engine 65→63）。剩余 72 行账实相符（勘误二次：
#     首版「尾差 3 工具续行计」系提取器漏抓——报告对缩进形态的 UNCOVERED 标记
#     行号不在列 0，824/915/945 三行漏数）= expand_iri 全 Ok 族 26（+915/945）+
#     结构性/构造性死 36 + 挂账 9（1019/1146/1808/2572/2828/2882/4329/4918/824）+
#     邻行翻转伪影 1（1968）。教训：未行提取必须对表头总数对账。
#   2026-10-07 役C2批1（compact_standard 小族先收 17 探针；333/333 绿）：**439**
#     （棘轮内 Δ−12；compact_standard 段 116→**104**）。关行 15（实证）：
#     296/307（base 相对多段上跳族·管线探针）、347（混合 datatype 列）、
#     451/533/536（方向对齐三臂）、600/611/616/642（语言×方向吸收族）、
#     1106/1111/1113/1117（@list 容器吸收块·直调）、2636（list 首项非值）；
#     邻行翻转伪影 +3（601/617/1119——各紧邻闭合行，无产品变更，跨轮稳定）。
#     **未行提取器入册（用户令）**：`awk '/<-- UNCOVERED/{print $1}'`——按空白切分，
#     兼容**缩进形态**标记行（行号不在列 0）；「尾差 3」（824/915/945）即由此修正；
#   2026-10-08 役C3移防①②（nquads_parse+gen 直调钉；430/430 绿）：**332**（棘轮内
#     Δ−4）。gen 3→**0**（35 match 行此前臂盖行开——直调全变体后闭合，非伪影；
#     55/57 dispatch 兜底臂）；nquads_parse 2→1（83 兜底臂闭：Nq2DtIri 对 ^^ 后
#     首字符无白名单，容错形 ^^y<z> 即达；余 1 行 = 336 Nq2Done 臂**构造性死**
#     ——五处赋值点 110/178/263/274/331 全数 break 先行，模式位仅为 339 终判读服务）。
#   2026-10-08 役C3移防③④（html_extract+canon_rdfc10 直调/pub 探针；437/437 绿）：
#     **319**（棘轮内 Δ−13）。html_extract 8→**0**（段除名：属性态四臂/前缀假门/
#     小写 hex/别名跳过/非 JSON 错）；canon_rdfc10 8→**3**（411 谓词 `_` 臂经
#     「首度同形碰撞组 + 字面量谓词」n-degree 径关闭；余 3 = 384/493 分派死
#     （两调用点全自 bnode 键域）+ 567 构造性死（首排列 chosen_path=="" 必设
#     Some）。坑：nq2 行式解析一行一句（同行第二句静默丢弃）；heredoc/python
#     双层转义吃反斜杠（断言改拼接形）；python replace 静默空转再现（t0019
#     同族——改后必验文件现文）。
#     纪律 = 提取后必须与表头总数对账（本次 451 = 各文件读数之和）。
#     **死带·单独立账**（compact_standard 1105/1106 族 = compact_property_values 的
#     @list 容器吸收块）：唯一调用点 compact_property_pair(1229)，其 892/2065/2107
#     三处只能供**反向位** td（2107 处候选集已空 ⇒ td_opt=None），而反向容器白名单 =
#     @set/@index/None（expand_standard 4432-4439）⇒ `td.container is Some(List)`
#     恒假；探针实证 `@reverse×@container @list` 定义期即拒（invalid reverse
#     property）。处置 = **拆除**（用户拍，2026-10-07，见下条收口账）。
#     **判据线（估算·只留证，非承诺）**：451→405–415 算式 = 活账 44 全关 ⇒ 451−44=407
#     为下限；上修三项 = 死带不可关（1106/1111/1113/1117/1124/1135/1148，不全拆 +4~7）
#     + 本批翻转伪影 3 + 大族（node_jv/map_entry）误差带 ⇒ 407–417，对外口径 405–415。
#     本批**证伪未闭合**（维持挂账，**不转死账**——承用户令「推理不记账」）：232/235/
#     253/257/261（裸 authority base ⇒ boundary「http://」前缀短路先手；探针实测 id 词形
#     = a.example/bb/cc）、606/635（`Some(raw)=>raw` 语言/方向吸收臂——数值裸值恒无
#     语言/方向）、1777/2606（graph 摊平 other 臂 / 图值位 `_` 臂——单一发射点论证，
#     本批未构造触发径）。
#   2026-10-07 役C2批1 收口（死带拆除；用户拍「拆除 + 同笔复跑门」）：**435**
#     （棘轮内 Δ−4；compact_standard 段 104→**100**）。拆 = 删 compact_standard
#     原 1102-1129 共 28 行（净 −26：+2 行文档注释改写），**行为零变更**——该块与
#     compact_value_item 的 List 容器臂（1050-1088）**逐字同源**（单 List 值 → 裸数组；
#     1.0 嵌套 list → 同变体错），即死带 = 冗余重复臂。拆后 333/333 绿、`.mbti` 零变更。
#     **账面厘清（对我上轮「净关 6 行」的勘误）**：拆的相对效果依口径两说——对
#     **批1 落账口径**为 −2（仅 1119/1124 两行在册）；对**批1 未做直调合成的口径**为
#     −6（1106/1111/1113/1117/1119/1124 六行随块消失）。差 4 = 批1 那 4 行直调闭合与
#     死带同归于尽 ⇒ 账面**不虚增**（合成闭合一并入土）。教训：报「拆除净关数」须标明
#     口径（对现账 / 对未合成账）。
#     拆后重算未行账（用户令：拆后先重算）：全 100 行按行移映射 l≤1101 原样 / l≥1130
#     −26 与拆前 104 行逐一对上（零新开、零漂移）；另以重定向的 C2-S1/S2 两钉闭合
#     **1062**（compact_value_item 的 1.0 嵌套 list 错误臂，原被删块遮挡）与 **1122**
#     （compact_property_values 的 Err 传播臂）⇒ 收口净 −4 = 拆 −2 + 重定向 −2。
#     **新增留证（探针副产·非门）**：裸 authority base（`@base:"http://a.example"`）下
#     `boundary` 退化为 "http://" 恒前缀命中 ⇒ `compact_iri_word` 对
#     `http://a.example/bb/cc` 出 `a.example/bb/cc`；按 RFC3986 反解落回
#     `http://a.example/a.example/bb/cc`——**往返缺口候选**（套件无此形，故未红）。
#     留 C2-F1 钉住现行词形（改动即红，修法须同笔更新该钉）。裁定已落
#     （2026-10-09 用户拍：明列口径不立案，见卷尾 C2-F1 裁定条）。
#     **两判据入册（用户令）**：①**邻行翻转伪影**三条件 = 新开行紧邻本批闭合行（±1）+
#     该区段本批零产品变更 + 同命令复跑闭合/新开集合逐字一致；机制 = 多行 `match` 的
#     臂头行归属随「实际走到的臂」迁移（子型二：`match` 头行孤悬，如 2429）。②**前缀
#     短路先手**判据 = base 为**裸 authority**（无路径段）⇒ `boundary` = 最后一个 '/'
#     之后（即 "//" 的第二斜杠）⇒ "http://" 是任何同 scheme iri 的真前缀且更短 ⇒ 于
#     compact_iri_word 204-206 行即 return，上跳块（226 起）整体不进。
#   2026-10-07 役C3批1（frame.mbt 冷行清剿·10 探针；392/392 绿）：**367**
#     （棘轮内 Δ−18；frame.mbt 段 91→**74**）。关行 17（实证、零新开）：
#     83/150/153/158/163/166/170/186/217/355（subject map 空图臂 / merged 并集
#     (Some,Some) 累计体 push / register 裸 bnode 铸号 / graph_map 建字典族）、
#     1053/1241（frame_invoke 输出槽与多值 push 族）、1747/1752/1760/1783/1851
#     （frame_document 入口 Err 直穿：expand@1747、merge@1752、frame parse@1760 +
#     空 pattern 回落：1783 非 map 帧臂 / 1851 展开首值非 Node 臂）。
#     **fixture 纪律入册（本批主课·勘误）**：前一轮 3 红曾被判「产品疑似丢
#     嵌套具名图内容」——**误判**。实测 `frame_register` 读到的嵌套 @graph 展开后
#     `items=0`（图字典 http:x 不建、subject 不到），根因 = **自由浮动弃置**：
#     `{"@id":…}` 裸形图项在展开期即弃（仓卷批9 坑③「@id-only 图项集合位亦弃」已
#     载明，REC 同款）。补一条属性后 `items=1`、`graph_map[http:x]` 正常建立、
#     三 subject 到齐 ⇒ **非产品缺陷，是 fixture 错**。常备判据：**写 frame 探针
#     时嵌套图/图项必须带属性或类型**（裸 @id 形会被自由浮动规则吃掉）。
#     留痕纪律：本批以 `println` 打点定位（frame.mbt 三处），定位后**同笔还原**，
#     产品码零残留（`git diff frame.mbt` 为空）；即写即删探针 `probe_tmp_wbtest.mbt`
#     亦同笔删除。
#   2026-10-07 役C3批2（frame 冷行清剿·8 探针；400/400 绿）：**355**
#     （棘轮内 Δ−12；frame.mbt 段 74→**62**，零新开）。关行 12（实证）：44/53
#     （探针设施 mint/trace——白盒直调驱动 `state.probe`）、418（`@never` × 具名图
#     子帧合成——帧含顶层 @graph ⇒ graph_name≠@merged ⇒ 1180 合成帧走 Never 臂）、
#     466（frame_matching 缺席 subject 臂）、986/988（@last 前嵌替换两跳过臂：
#     无 id 节点 / 非节点项）、1029（@type 位 bnode 重铸）、889（@list 形 pattern
#     恒收臂）；连带 663/674（frame_property_matches）+ 1262/1329（frame_invoke）。
#     **构造性死四件入册（探针已跑·未构造出触发径；代码面另握硬门）**：
#     ① **874**（frame_value_kept `_ => return true`）——唯一调用点 1287 位于
#     `ExpandedValue::Value(_) =>` 臂内 ⇒ `item` 恒 Value；Node 值走 1240-1283
#     独立支不经此函数（探针实测：节点值照常保留而 874 仍冷）⇒ 不可达。
#     ② **880**（`patterns.get(0) = None`）——frame_property_matches 634-636 明写
#     「空 pattern 清单 ⇒ 配当且仅当值**缺位**」⇒ 空组 + 值在场的主体在**匹配位即
#     被硬过滤**（探针实测产物 `{"@graph":[]}`），到不了值收位 ⇒ 不可达。
#     ③ **76**（frame_subject_map merged `None => ()`）——`graph_names` 出自
#     `state.graph_map.keys().collect()`，同一 map 且中间无变更 ⇒ `get` 恒 Some。
#     ④ **267**（frame_register `None => node`）——臂前提 = `nodes.contains(self_id)`
#     为真 ⇒ 同 map `get` 恒 Some。
#     **探针设施族分账（留证·不进棘轮目标）**：frame_invoke 内 `state.probe`
#     诊断块 9 行（1118/1122/1124/1140/1144 + 1423/1426/1432/1437）+ `probe_id_text`
#     2021（唯一调用点在诊断块内）= **10 行属诊断设施面**（`frame_document` 入口恒
#     `probe=None`，仅白盒可驱动），非产品语义；收口时统一裁定（留证 or 拆设施）。
#     扣除此 10 行后，frame.mbt **产品语义面**冷行实为 52。
#   2026-10-07 役C3批3（frame 冷行清剿·4 探针；404/404 绿）：**351**
#     （棘轮内 Δ−4；frame.mbt 段 62→**58**，零新开）。关行 4（实证）：
#     132/135/140/146 = `frame_merged_union` 的 **reverse_props 并集块**一轮全闭
#     （同 id 跨图：g1 带 http:r、g2 带 http:r 同键并值 + http:r2 新键
#     ⇒ base 复制臂 / extra 扫描初值 / 同键 push / 新键 push 四臂齐开）。
#     **证伪未闭合四件（探针已跑；维持挂账，不转死账——承「推理不记账」令）**：
#     ① **178**（merged 的 `extra.id` 臂）——前提 = base.id 为 None 且**同注册键**
#     跨图；注册键对匿名节点恒为**铸号 self_id**（一次一铸）⇒ 两枚匿名节点键不同、
#     不可并（探针 F3-20 未闭合）。
#     ② **514/549**（frame_node_matches 的 @id/@type 值组 `_ => ()` 跳过臂）——
#     前提 = @id/@type 位出现 **List 形** pattern；@id/@type 位的值对象（@list）
#     在展开期即拒/改道（探针 F3-21 未闭合）。
#     ③ **442**（frame_flag_word 的 `_ => None`）——前提 = 帧旗位值组首项非 Value
#     （节点形 / 空组）；@embed 节点 / @embed 空组 / @explicit 节点 / @requireAll 节点
#     四形探针（F3-22）均未闭合，指向展开期对帧旗位的改道或剔除。
#   2026-10-07 役C3批4（frame 值 pattern/list-item 族 · 14 探针 F3-23..36；418/418 绿）：**343**
#     （棘轮内 Δ−8；frame.mbt 段 58→**50**。中段 913 账面波动一次 = 陈旧插桩产物
#     （坑①同族；同具同段重测定谳，不入账）。关行 8（实证）：686（F3-23 list
#     pattern vs 非 List 数据项跳过）、720（F3-24 递归位纯串值跳）、788（F3-25
#     @type-only 值 pattern v 位 None ⇒ 性质不配整节点出局）、910/912（F3-32
#     list 项值 pattern vs 值 listitem）、916（F3-33 list 项通配 {} 恒真）、928
#     （F3-35 嵌套 List pattern 恒假臂）、1419（F3-34/35 整表输出非 Value/Node
#     项 push）。
#     **死账定谳 6（双证）**：① **718**（递归位 ref id None 跳）——frame_register
#     对 id-less 值铸号并回写引用（F3-24 正实证：匹配经 _:b0）⇒ subject map
#     值位引用恒带 id，臂不可达；② **874**（frame_value_kept 非 Value return-true）
#     ——唯一调用点 1287 在 Value 臂内，恒收 Value ⇒ `_` 不可达；③ **802/825/853**
#     （v/t/l 位成分 `_` 跳）——成分构造器（expand_standard 5363）返回面
#     Node/Value/None 永无 List ⇒ 不可达（F3-26/27/28 实际中 800/823/851 通配
#     臂，行注已正）；④ **880**（frame_value_kept Some([]) 臂）——唯一调用点走
#     node.properties item 循环；match-none 节点级预检（489-495）带值节点整颗
#     出局（t0023）、空值数组不走 item ⇒ 不可达（F3-30 转行为钉）；
#     ⑤ **923**（list 项 node pattern ref id None 臂）——register 对 List
#     items 同铸号回写（items[i] = 引用替入）⇒ 配时 ref 恒 Some（判别探针：
#     list pattern 作唯一语义性质，s1 入产物 = 配中实证；F3-34 转行为钉）。
#   2026-10-07 役C3批5（@type 注入/反扫族 · 3 探针 F3-37..39；421/421 绿）：**340**
#     （棘轮内 Δ−3；frame.mbt 段 50→**47**）。关行 3（实证）：1485（F3-37 @type
#     混形成分的无 @default 空 pattern 注入扫描 None 臂——纯 {} 形无型节点被
#     @type 硬过滤拒「通配须有型」，混形 @default 对象先行才可达）、1487（F3-38
#     串成分不注入 `_` 臂）、1580（F3-39 反扫字面量不计 points）。
#     **死账定谳 6（双证）**：① **1310/1326**（lowering 内层 match `_` 臂）——
#     外层 walkthrough 已在 Value 臂内调（1287 唯一调用点），item 静态 Value ⇒
#     内层 `_` 不可达；② **1483**（@type 注入 get(0) None/非 Value）——@type
#     pattern 的 @default 属性仅由 expand_type_default_object 构造（在场即单例
#     Value）⇒ 不可达；③ **1563**（rev pattern 非 Node 回落）——帧侧
#     reverse_props 双构造面 t0028@1711/t0029@1021 恒产 Node 单例/Node 清单 ⇒
#     不可达；④ **1578**（反扫 ref id None）——register 回写不变式（718 同族）；
#     ⑤ **1590**（反扫 subject_map.get None）——键源同 map（76 同族）。
#   2026-10-07 役C3批6（embed/图递归/输出面待勘 16 全数勘定 · 7 探针
#     F3-40..46；428/428 绿〔探针残留复测校正：初测 429 含未删探针 x1187，
#     删后复测 336/42 行/428 全同，无 coverage delta〕）：**336**（棘轮内
#     Δ−4 净——闭 5 开 1 后又闭；frame.mbt 段 47→**43，余行全数归类：
#     死账 31 + 设施休眠 12**〔机器点数订正：手数 42 漏 1，自报行 wc-l=43 为
#     准——账实同源〕）。关行 5：
#     **1187**（F3-45 数组包裹帧——顶位 @graph 对象被展开成图内容数组、root
#     无 graph 字段，须数组包裹让 Some([]) 落 pattern 节点）、**1821**（F3-41
#     @id:null 显式 null 映射 term 保留而 iri None，final_iri@4539）、**1972**
#     （F3-43 scheme 撞名上传——@prefix:false 保帧侧键不成 curie，
#     check_key_scheme_collision@1160 报错上传 compact_node_jv Err 臂；1062
#     嵌套 list 形附识：1.0 展开面已拒 4918/4994/5020 ⇒ CompactList 1.0 嵌套
#     不可达）、**2009**（F3-44 @context null）、**2010**（F3-46 @context 数组
#     形——2009 闭后揭开的 `_` 臂）。
#     **死账定谳 11（双证）**：① **1189**（1173/1182 同源双判：else 臂内
#     graph 恒 Some）；② **1203**（1172 contains 与 1197 get 同 map 无变异
#     间隔——76/1590 族）；③ **1227**（included 装配面空→None，
#     expand_standard@2015-2019 ⇒ get(0) 恒 Some）；④ **1281/1416**（register
#     铸号回写不变式——性质值位/list 项 ref 恒 Some，718/923 族）；⑤ **1606**
#     （matched ⊆ subjects@452-471 过滤面 ⊆ subject_map 同源键——get 恒
#     Some）；⑥ **1814**（帧 @context 双 process 同 flags：展开面 1801 先炸
#     ——三候选探针全落 1803，1814 无首见错形）；⑦ **1920**（prune/计数扫描
#     在 1855-63 原位摊平之后——wrapper 唯一 id None 形已摊平，输出 id 恒
#     Some@1107）；⑧ **1928**（results 顶位恒 Node）；⑨ **1974**（unwrap
#     顶位非 wrapper Node 原样返回）；⑩ **1992/1996**（compact_node_jv 单尾
#     Ok(Object)@2127 无早退 ⇒ 返回面恒 Object）。
#     **行为钉新增**：F3-26/27/28（通配-{} 成分语义）、F3-29（Node 引用值照收）、
#     F3-30（match-none 整节点出局）、F3-31（List 形首值收值门）、F3-34/36（匿名/
#     Node listitem）。新坑：list pattern 交叉**即配即 break**（Node 项须居首才
#     轮得到 913 臂）；值 pattern 成分**非串形**才触发保形预扫（expand_standard
#     884 门）。
#
# 进步留痕纪律（承 moonttl 先例）：补测试把线推上去后**同笔更新本文件**并在 todo.md 记一笔；
#   要上调（未覆盖行数变多）必须写明理由（例如新增整块被测代码 / 统计口径变化）。
#
# 覆盖边界：本基线只覆盖 `thy1016/jsonld` 模块根包（不含 rdf-canon/sha 等已内联件的**分支级**语义面——
#   那些由 wbtest 各自钉，见 `suite-review.txt` 表头"覆盖边界"节）。
#   2026-10-07 役C2批2（错传播链一击 + 上跳块 + 反转/分键族 + language×direction
#     组合；探针 B2-01..21；352/352 绿）：**415**（棘轮内 Δ−20；compact_standard
#     段 100→**80**）。关行 19（实证）：1066（@list 项节点撞名传播）、1201/1205
#     （compact_property_pair 反转位键/值 Err）、2083（正向位 else Err）、1109
#     （反转×compact_arrays=false）、1167（term:null td.iri None）、1466/1468
#     （图容器非载体/字面量）、1375（图内容撞名）、1503（@set 预扫）、1458（载体
#     裸次级撞名）、235/261（上跳块 bp/authority None 臂——base "http:x/y" 形）、
#     601/617（language×direction-null 组合臂）、635（方向吸收 raw 数值形）、
#     899/2057/2078（反转分键路三 Err 臂）。新开 0；邻行翻转伪影维持 3（2040/
#     1987/1989）。
#     **死账新入 5（双证）**：606（raw Some ⟺ 数值/布尔/@json 填充点全 language
#     None + 数值+@language 展开期拒 B2-18 实证）；876（splitter 候选环 get None
#     ——名源 terms 迭代）；914（rev_split 输出环 get None）；2045（rev_is_map
#     ⟹ rev_td Some）；884（分键路单遍 bare_fit 环 ⟹ value_item 早返吸收臂无
#     Err 面；可 Err 形态全 bare_fit=false + @reverse 位禁 @list）。
#     **装配纪律三条入册**：context_text 只喂压缩侧（展开侧走 expand_context，
#     doc 属性必须绝对 IRI）；压缩输出永带 @context 前缀（engine 1455-1462）；
#     隔离测量无效（analyze 自跑全量）。

#   2026-10-08 役C3移防⑤（to_rdf 33→12；445/445 绿）：**301**（棘轮内 Δ−18）。
#     同 id 并集族 5（252/261/267/269/272）+ colliding indexes 传播六位（285/293/
#     309/320/331/970——Err 源唯一 = 239「colliding indexes」）+ 409（xsd:string
#     简单字面量）+ 547（负整数符号臂）+ 582/595（langtag 段长拒收）+ 640/641/643
#     （JCS \b\t\f——**过 N-Quads 发射层再转义成双反斜杠**，针取双形）+ 912
#     （反向位相对 id 主体 None——@id null 在 expand 层即拒，改走相对形）。
#     挂账复勘三件：520/542/563（数值典范整形/前导零跳/削尾零——**core repr 归一**
#     吃掉尾零与全零词形（0e20→0.0、1.50→1.5），逃逸需「超精度 + 尾零」不相交
#     构造）；死账定谳十件：384（377 门保证 dir Some）/397（@json raw 恒
#     Some——expand 装机 2839）/492+494（指数数字循环——JSON 词面文法保证 e 后
#     仅数字，i<len 界下 get_char 恒 Some）/502（尾数恒 ≥1 位）/771（742 门保证
#     direction Some）/898+901（谓词 IRI 合法性安装门 + bnode 谓词展开侧不可
#     装机）/914（反向值恒节点——expand 1721 拒）/925（图项恒节点——
#     append_collection_item）/977（顶层非节点自由浮动弃置）。

#   2026-10-08 役C3移防⑥首轮（from_rdf 54→36；456/456 绿）：**283**（棘轮内
#     Δ−18）。活账关闭 18：解析形态门三连（284 坏 N-Quads/296 谓词位非 IRI/
#     323 rdf:type 非自 IRI）+ 字面量主语账键 140 + 纯列面主径/嵌套列/悬空引用/
#     复合字面吸收与落穿族（404/612/643/646/659/666/674/685/814/818/842/869/960）
#     + i18n 面无方向词形 746。余 36 转下轮勘定：scoped 纯列族（198/234/237/241/
#     256/270/272——graph_ctx_scoped 入口条件更深）、walk 错面（896/901/934/947/
#     950/965/973/975——纯列门先行疑分派死）、分派死链（373/387/489→154/156——
#     named_ctx 满装兜底臂不可达）、渲染 Err 面（434/507/550/554——langtag 实为
#     容错，Err 源另勘）。

#   2026-10-08 役C3移防⑥二轮（from_rdf 定谳轮，283 持平——0 关行全归类；
#     f6-914 行为钉：first 位直指 nil = 空嵌套列表实证）与 ⑦首轮（engine
#     62→51；466/466 绿）：**272**（棘轮 Δ−11）。engine 活账 11：59/72/74
#     （expandContext 面——外部 context 首测）、440/484（比较/同构）、
#     1170/1174（reverse 注入并入/去重臂）、1262/1273（flatten/compact
#     context 解包面）、1391/1458（compact 入口裸形/null context 尾面）；
#     死账 3：84/89/108（dispatch 与 shape_of 同源 + 白名单穷尽）。勘定：
#     junk 串 context = 远程引用尝试（InvalidContext 非 Unsupported）；
#     compact context 裸形直用可用。tordf_judge DBG912 残臂复 → 单 Err 臂
#     修复同笔。账实订正：在途条目先写 275/465/活账8（1292/1294/1375 系
#     终测前旧勘）——回溯对勘 4552c8f（stash 往返，283 复现）comm 实闭
#     11 行，以自报行为准同笔改账。
役C2批3（2026-10-07）：415→385（Δ−30，零新开）。29 探针 B3-01..29（含勘误
重靶：B3-03 注释勘正/24/25/26 转行为钉/29 转负例钉），381/381 绿。闭合 30 行：
1663/1958/1432/1497/1853/2100/2113/2212/2231/2237/2239/2246/2250/2259/2269/
2176/2335/2365/2419/2400/2423/2431/2461/2484/2500/1776/2340/803✗(钉)/385✗(钉)/
1440/1987/2040✗(钉)——✗=行为钉未闭行但定谳死账。compact_standard 余 51 行
全数死账归类（候选环族 14 + 恒真门族 4 + 构造白名单 3 + 扩形归一 2 + 长度门/
同源重匹配/单产恒数组/调用形/返回面/预置环/预扫门/colon 不变式/防御臂双负
各 1…）。新坑：@index 映射值定义期展开（对象形 term 须先定义）；heredoc
`\\{}` 字面化坑；reverse 容器白名单 Set/Index/None + @reverse 位值恒节点。
compact_standard 覆盖收兵 → 役C3 frame 91。
役C3 收兵裁定（2026-10-07，用户拍板）：frame.mbt 余 43 行全数归类收兵——
死账 31（证据链全带，见批1..6 各条）+ **门死 12**。
**门死判据（休眠设施，四条合取）**：
① 门字段常闭：`probe` 唯一构造点 frame.mbt@1837 `probe: None`，生产与
   测试装配全同值（全仓 grep `probe: Some` 仅 trace 函数自身回写，无激活点）；
② 门自闭：trace 函数只在 `Some` 臂内**追加**写回（1118 等）——门关时
   该臂永不执行，无自激活路径；
③ 激活不增 oracle 力：直调须全量 FrameState 装配 + invoke 驱动，测得
   是探针打印逻辑而非引擎行为（非产品语义面）；
④ 与死账之别：死账 = 构造面结构性不可达（不可激活）；门死 = 门可开但
   开它不为账面增益（休眠调试设施不属产品行为面）。
门死 12 行：1118 1122 1124 1140 1144 1423 1426 1432 1437 1445 1447 2021。
**役C3 移防顺序钉（先小后大，用户拍板）**：余 242 行八文件——
① nquads_parse 2 ② gen 3 ③ html_extract 8 ④ canon_rdfc10 8
⑤ to_rdf 33 ⑥ from_rdf 54 ⑦ engine 62 ⑧ expand_standard 72。
先小后大理由：小文件探针装配成本低、死账判据复用密度高，兼可校准
「门死/死账」判据在同族设施上的适用性（gen.mbt 3 行疑生成器死面）。
与役C2 关系：C2 = compact_standard 役已收兵（余 51 全数死账归类，
不回头）；C3 = frame.mbt 役已收兵；C3 移防 = 同役扩展文件序，探针
系列随各文件 wbtest 既有序续号，不另开役。
役C3移防⑦二轮（2026-10-08，engine 收兵轮）：272→**251**（棘轮 Δ−21，
479/479 绿）。活账 21 闭：42/1326/1243/1247/1259/1273/1292/1375（入口
Err 链——parse/flatten_core/context 解包/process 上传四面）/119/370/435/
525/563/606/608/827（标量弃置·canonical 数组·bool 全序相等·排序跳过·
重标漏中·hex A-F）/920/1046/1179（载体再现 merge·同谓词双对·注入异值
追加）/1432/1443/1306（包裹/多节点碰撞·空=context）。探针 e8 系 13 测。
死账新归类 27（六族）：
① 单产返回面 4：851/874/885（flatten_walk_value 三臂全 Some，None 臂
   构造面不可达）、1415（compact_node_jv 单产 Ok(Object)@compact:2127）；
② 顶层产出恒 Node 4：191（push_top_value other=List 臂——ExpandObject
   恒 Node|None〔顶层 @list 实证渲染 []〕、ExpandValue 仅标量形）、
   1418/1434/1445（compact 三臂 `_ => ()`——values ⊆ Node，Value@167
   即弃、List 不产顶层）；
③ 成员形不变式 6：937/1147（成员首对恒 ("@id",String)——构造点 1059/
   1161 全同）、952/962/989/1183（槽值恒 Array/串）、1294（成员恒 @id
   首对 → 再展开恒 Some(Node)）；
④ 预注册/账本同源 7：926/1119/1121/1151（members 走查前必注册——""
   init@1341、g:@1094；1119/1121 同块 1120/1122 报覆盖 = 插桩归属漂移
   嫌疑，同块不可能部分执行，按块判死）、1105（graph_scope scopes+
   members 同块双写）、1354（members[""] init 回落臂）、1079（prop_order/
   prop_map 同源账本恒命中）；
⑤ 预并单向并集 ⊆ 不变式 4：967/972/975/977（并账对象恒 ⊆ 首见全形
   ——nq_merge 单向并集；e8 载体两位置再现证伪探针实证不中）；
⑥ 展开侧弃置 2：1191（reverse 值对象展开即弃——证伪探针）。
勘定：1046 原始重复键解析层即去重（实证不可达）——可达面 = 同 id 预并
同谓词双对（nq_merge 248-250 原样并入）；1306 勘误：e7 空文档钉走的是
无 context 直出臂，with-context 空主体才是本臂；119 勘误：顶层 {} 走
Some(Node)→185 自由浮动弃置非 None 面，@value:null 数组成员才是 None
面；1262 复核 e7 已闭（在途条目行号对齐无幻影）。
**engine 余 30 行全数死账归类，收兵**。余账：canon 3 / to_rdf 15 /
expand 72 / nquads 1 待勘；compact 51 + frame 43 + from_rdf 36 已归类。
役C3移防①④收尾（2026-10-08，nquads 1 + canon 3 全数死账归类，251 持平
——零关行零探针，构造面定谳）：
- nquads 336（Nq2Done => ()）：状态机五处赋值（110/178/263/274/331）全
  带 break 先于再入——Nq2Done 态永不作为输入态进 match，臂不可达。
- canon 384（hash_first_degree None 臂）：调用面两处（420 related /
  585 主环候选）⊆ bnode_to_quads 在册键（映射由全 quads 构建）——在册
  不变式，None 面不可达。
- canon 493（hash_n_degree None 臂）：同在册不变式——identifier 主环
  候选 + 递归 related（537）皆 ⊆ 在册键。
- canon 567（chosen_issuer None 臂）：首轮不剪枝不变式——首剪块 528
  短路守 chosen_path != ""，首轮恒入选（552-554 chosen_issuer=Some），
  561 预算耗尽先于 564 返回——到达 565 时恒 Some。
canon_rdfc10 收兵（余 0 待勘）；nquads_parse 收兵（余 0 待勘）。
余账：to_rdf 15 / expand_standard 72 待勘；compact 51 + frame 43 +
from_rdf 36 + engine 30 已归类。
役C3移防⑤二轮（2026-10-08，to_rdf_wbtest.mbt 白盒直调面新立，251→246 Δ−5）：
- 397 翻案+实测闭：⑤ 原判死账（@json 哨兵 raw None 臂）被探针证伪——值对象
  @type:"@json" 配普通串值即触（raw None 弃词面，quad=0 行为钉）；原判作废。
- 413 实测闭+双门定谳：展开门 is_valid_absolute_iri（expand 1433）只拒空白
  （"|" 存活到 to_rdf）；to_rdf 门 nq_iri_chars_legal（91-132）拒文法外字符
  ⇒ None 臂弃。空格形展开期即拒——两道门非同 gate 实证。
- 520/563 实测闭：nq_canonical_number 直调（"1.5e3"→"1500" 整形零添；
  "1.0e-1"→"1.0E-1" double 形削尾零）。
- 582 实测闭：nq_valid_langtag 直调（段长>8 与空段两形）。
- 492/494/542/898/901 死账维持：while i<len 守卫 get_char 恒不越界；
  505-508 前剥先手；expand 1695 反向键须绝对 IRI、bnode 谓词不可装机
  （generalized 两档行为钉）。to_rdf 收兵：余 10 行全数死账归类。

役C3移防⑧一轮（2026-10-08，expand_standard 72 行勘定轮，246 持平——24 探针
全绿零关行；本役产出=构造论证+陷阱勘定）：
- **根定谳（expand_iri 恒总）**：IriExpander::expand_iri 主链（416-495）零
  Err 表达式（grep 实证：唯一命中=返回类型签名行）——七段全 Ok 落底 ⇒ 一切
  expand_iri 调用点 Err 臂构造性死。30 行死账：613 696 915 1292 1319 1385
  1454 1462 1478 1691 2502 2555 2627 2682 2773 2793 2800 2971 2989 3006
  3812 4082 4363 4411 4570 5119 5131 5162 5392 5421。
- 构造面死账 12 行（行级实证）：652（revert_previous None 臂——四调用点
  1949/2108/2283/2456 全带 previous is Some 守卫）；737（is_value_or_id_shaped
  非对象臂——三调用点 1950/2110/2283 皆对象形先守）；824（expand_object 非
  对象门——五调用点全 Object 守卫）；2352/2869（拦截器 Ok(None) 臂——唯一
  None 源 4877 早退要求无键命中 @list/@set，而调用点 raw 首键门先拦，raw
  关键字键恒命中）；4968（expand_list_set_object 尾 None——4877 先返后双
  None 不可达）；5036（list 位同族）；4189/4193（容器存储 `_ => ()`——
  validate_container_value 4105 先手门）；3760（主循环 @import 空臂——
  merge_import_entries 3523 前手剥键/先 Err）；5149/5167（index 映射
  Some/None——候选环：同 map 二次 get）。
- **探针批 24 件全绿全钉、零冷行移动**（suite 484→507）。三陷阱入册：
  ①消息等价——同文错误多点共存（"invalid @included value"≥3 处、"invalid
  typed value" 1468 vs 列位臂、"list of lists" 两拦截器皆有），探针钉对
  行为不钉对行；②帧预扫路由——帧 pattern 值经 frame_value_pattern_component
  先手截停，expand_element 帧路（1136）只收特定形；③拦截器 raw 首键门——
  @list/@set 拦截按 raw 首键判定，非首键 @list 走节点环（2099 活账候选）。
  死账宣判须行级构造论证，探针绿≠线覆盖。
- 待勘 30 行（二轮，行级调用图设计）：945 1019 1146 1407 1532 1552 1808
  1940 1968 2099 2131 2164 2199 2201 2205 2334 2467 2570 2572 2633 2669
  2828 2854 2882 4328 4329 4918 5002 5078 5082。已探未中者（4329/4918/
  5002/5078/5082）= 产同文错误行未动，源点待行级定位；1532/1552 先验
  parse_json 重复键保序否；2828/2854/2882 定义期门已实证（探针钉
  "invalid scoped context"），validate_scoped:false 嵌套深形候选。
- suite 507 全绿；覆盖率 246 持平（Δ0）。

余账：to_rdf 10 已归类（收兵）；expand_standard 72 中 42 已归类 + 30 待勘；
canon 0 / nquads 0 / engine 30 / compact 51 + frame 43 + from_rdf 36 已归类。
全库待勘余额 = expand_standard 30 行。
役C3移防⑧二轮（2026-10-08，行级调用图 15 探针批，246→243 Δ−3）：
- **实测闭 3 行**：1968（@included 递归展开 Err 传播——嵌套值对象非法
  datatype 探针）、4328（scoped 试处理 Unsupported 透传——base 在位+无
  loader 形）、4329（试处理 Err 臂——嵌套 scoped {"@vocab":5} 定义期即触，
  validate_scoped:false 不豁免嵌套词表校验）。
- **新增死账 5 行（行级实证）**：1940（@included 条目非对象臂——收集臂
  1827/1835 先手拒非对象，循环内恒对象）；1532/1552（值对象双 @value
  覆写臂——@json.parse Map 背衬（`for k, v in fields` 双绑定迭代）解析期
  去重，重复键不可达展开面；实证：dup 探针产出 last-wins 而行冷）；
  4918（拦截器 1.0 list-of-lists 门——上游 expand_list_item Array 臂 4990
  先手拒嵌套数组，out 恒无 List）；5082（expand_list_item 标量臂 Err——
  标量展开唯一 Err 源=expand_iri 臂=恒总，@json raw None 形走 Ok([])）。
- **探针未中注记**（消息等价第 4/5 形）：4047——protected 自展开失配探针
  产 "invalid IRI mapping" 但行冷，错误源点=check_term_name_consistency
  别处调用点（探针钉行为保，4047 留待勘）；2099——@list 键整弃两探针
  （@graph 项/非首键）皆产 [] 行冷（弃置点在他处）；1808——元素级 @context
  非法 @vocab 产 "@vocab must be string or null" 行冷（传播点在他处）；
  2334——graph 容器实测产 @graph 包裹但行冷（真入口非 2336 wrapper）；
  1019——@reverse pattern 标量被帧文法预扫先手拒（"invalid reverse
  property value"）；5078——@json coercion 劫持整个值（@list 保形入 raw），
  标量臂未见普通串。
- 待勘 22 行：945 1019 1146 1407 1808 2099 2131 2164 2199 2201 2205 2334
  2467 2570 2572 2633 2669 2828 2854 2882 4047 5078。其中 2828/2854/2882
  （使用期 scoped Err）adjacency 注记：定义期试处理已实证拦截非法嵌套
  （4329 闭），使用期触达须 protected 冲突等非确定性形。
- suite 522 全绿（含 15 新钉）；覆盖率 243（Δ−3）。

余账（终）：to_rdf 10 已归类；expand_standard 69 行冷 = 47 死账已归类 +
22 待勘；canon 0 / nquads 0 / engine 30 / compact 51 + frame 43 + from_rdf
36 已归类。全库待勘余额 = expand_standard 22 行。

役C3移防⑧三轮（2026-10-08，22 待勘全判讫 + 新入 2206 即闭，243→237 Δ−6）：
- **实测闭 7 行**：945（成分带 @type bnode 拒 5384——@value 数组形点燃预扫
  887，@type 串形成分同带入成分循环）；2164/2199/2201/2205（帧 @list
  pattern 嵌套数组项——**旧探针翻案：帧无 @context ⇒ "p" 于 1043 门即弃，
  @list 分支从未触达，行覆盖误判根因**；帧自携 @context 后真跑）；1019
  （963 pair.1 非对象通配臂——轮内行图勘误：原注 Ok(_) 实为 1015 已覆盖，
  反向 term 值位标量直达）；2206（expand_array 元素 Err 传播——帧 @list
  pattern 数组项元素 @id **数组**携 bnode，t0052 拒门在 @id 数组臂
  1303-1311 内，单串 @id 无门；值 pattern 预扫不嗅 @id 位）。
- **死账 16 行（六族构造论证 + 实证复合）**：
  ① 同 map 同键再取（2325 分派前提 container=Some ⇒ 再取恒 Some）：
    2334（2331 Graph 守卫下 2332）、2467（2465）、2669（2662）。
  ② 同参先手截返：2854（2825/2851 同 fn 同参，Err 被 2828 先接——2828
    本身亦死见③）。
  ③ 定义期 trial 超集：1808/2828/2882——trial（4309-4331）override_
    protected=true 为超集验证，展开期 apply_property_scoped_context 同
    内容同 fn 确定性 ⇒ 过 trial 者展开期恒 Ok；两 diverge 候选实证排除
    （protected 重定义 u2 探针展开期不拒；内容性 vocab 失配 wave-2 4329
    已闭定义期）；2882 另证 previous 恒 None（`previous: Some` 全仓 grep
    零命中——type-scoped 应用 749-807 累积进 current 不落 previous）⇒
    property_value_context 回退门 no-op，③ 臂与 2851 同参同旗。
  ④ 恒总推论：2570（内层实参恒 String(index_key) ⇒ 标量臂 2912 恒产恰
    一 literal 或 Err，[] 不可达）；2572（内层 Err 链底 = expand_iri 恒总
    ⑧一轮根证 + coercion 2958 无 vocab 无 base 原词返回实证 w1——Err 不
    可达）；4047（30 行族在册）。
  ⑤ 臂值域/发射点：5078（4992 Array / 5008 Object / 5060 Null 三臂先截，
    `_` 臂值域仅 Number|Bool|String，标量展开恒一值或 Err）；2131
    （expand_object 全文件无 Ok(Some(List)) 发射点——18 处 Ok(Some( 逐
    一核为 Node/Value）。
  ⑥ 守卫/调用点空集：2099（2070 or-pattern 守卫排除第三形）；2633
    （expand_container_map 三调用点 2382/2395/2408 只传 Type/Index/Id
    字面）；1407（1358-1363 pattern_form 仅 Array|Object ⇒ 通配臂空集）；
    1146（块结构勘误：1134-1162 保形段整体位于 1065 !has_value_key 块内
    （1163 闭块）⇒ 1136 可达时值域 = {Node→1143 截, Value 须 @value 键
    被块排除, List 无发射点⑤} ⇒ Ok(_) 臂空集）。
- **行图勘误三处入册**：1019 位（963 通配 vs 1015 Ok(_)）；1146 块结构
  （1163 闭 !has_value_key）；@id bnode 拒门位置（数组臂内，单串无门）。
- **新知**：@index glyph 引擎实收 = 定义期 4398/4400 须 IRI 展开绝对形
  （"gp" 无 vocab 即拒 "invalid term definition"；绝对 IRI 直形可过，且
  index_mapping 存原始值 ⇒ 用期 term 名 = glyph 全字）；coercion 2958
  vocab 位真查表（@vocab 反噬展开期）；expand_iri 无 base 相对词原词返回
  （恒总推论的 w1 实证）。
- suite 533 全绿（含 11 新钉：R8c 十钉 + 2206 钉）；覆盖率 237（Δ−6）。

余账（终）：expand_standard 63 行冷 = 死账 63（③⑧三轮 16 行并入在册
死账族，4047 归 ⑧一轮恒总 30 行族不重复计）；活线待勘余额 = **0**——
expand 全文件勘定收口。

役C4 紧阈（2026-10-09）：C3 终账活线清零后的棘轮收口动作——同命令复测
**237**（8 文件；10→8 系 gen/html_extract 段除名）与终账相符 ⇒ 阈
608 → **237** 同笔紧阈（门锁到实测；spec §9.4 / review §1.1 /
consistency-baseline 注记三处同笔，CHANGELOG 系已发版历史不动）。
237 行冷全数死账在册（六族论证，勿删）。

役C5 换带（2026-10-09，用户令核「锁门」判据触发）：C4 锁门（237）后役P1
七批动了产品码（批3 compact 倒排索引 / 批5 from_rdf 调试细胞清偿），覆盖
账未随 P1 复测——同命令复测 **235**（8 文件：canon 3 / compact 50 /
engine 30 / expand 63 / frame 43 / from_rdf 35 / nquads 1 / to_rdf 10；
三连复跑行集逐字一致 = 幂等；归因实验：3bd484c 预注释清账 worktree 同读
235 ⇒ −2 系 P1 码变、非 b313589 注释清账）⇒ 阈 237 → **235** 同笔换带
（门仍锁到实测；「锁门判据」勘正入册：同值复测只对「锁后未动码」成立，
凡产品码变更必复测换带——P1 带规则「优化批落地同笔换带」同族）。
235 行冷全数死账在册（六族论证，勿删）。

C2-F1 裁定（2026-10-09，用户拍：**明列口径，不立案**）：裸 authority base
（`@base:"http://a.example"` 形）下 compact_iri_word 往返缺口候选 = **已知
候选缺口**，明列于此；钉已留（C2-F1 行为钉，改动即红），修法须同笔更新
该钉；触发条件 = **消费端出现该形**（真实 workload 以裸 authority base 作
压缩往返）⇒ 届时立修法批。套件无此形故未红，不属 [未闭]（非事故）。
