# 性能基线（JSON-LD 子项目独立基线；役P1 立，2026-10-09）
#
# 状态：**役P1 收官（2026-10-09，七批十场景）**——读数 = 优化后基线快照
#   （开局 17.9s → 全场景 ≤190ms；判据线 = 回归门，非棘轮；scoped_heavy
#   带 [158,165] = COW 回归门）。新优化批动手前仍须 hotspot 实证先导
#   （spec §9.6）；动 context 复制/共享语义必先过 scoped_heavy（批7 ②）。
#
# 度量口径（**固定顺序保证可复现**）：
#   cd jsonld && moon run cmd/bench 2>/dev/null | grep '^\[bench\]'
#   - 后端：native（moon.mod preferred_target；cmd/main 同交付形）
#   - 计时：@async.now()（ms 墙钟）；每场景 warmup 1 + k=5 计时取**中位数**
#   - 语料：进程内确定性生成（cmd/bench/main.mbt gen_* 函数，零仓库膨胀）
#   - 前检：每场景计时前先跑结构断言（Ok + 规模哨兵）——计错结果即垃圾读数
#
# 判据线（红门，const「先立判据线，越过才对外说」兑现）：
#   - 默认：任一场景中位数回归 > **10%**（超出跨轮噪声带）即红
#   - 例外带（高方差场景，噪声带实测放宽）：compact_wide > **20%**、
#     from_rdf_wide > **20%**（轮内方差 ±45% 实测——GC/分配抖动，见勘定发现②）
#   - 优化批次动手前**必须**先立 hotspot 实证（勘定探针），禁凑数式修法
#     （const §6.5 ⑤；J2 性能役先例 = 唯一二次方点实测定靶）
#
# 语料形状注记（与 cmd/bench/main.mbt gen_* 同源；改形状 = 改口径 = 同笔入沿革）：
#   parse_wide   n=20000 单节点 N 属性（http://ex/p<i>="v<i>"）纯解析（parse_json）
#   expand_wide  同上形状，expand_document 全管线
#   expand_deep  depth=800 链式嵌套（core @json.parse 默认最大嵌深 1024，贴近上限取信号）
#   expand_nest  m=2000 单节点 M 属性、互异 @nest 别名键前置（合并机制全展开；
#                别名须先于引用 term 定义——勘定发现⑥）
#   compact_wide expand_wide 同语料 + 配套 ctx（每属性短 term p<i>→http://ex/p<i>）
#   flatten_wide expand_wide 同语料，flatten_document（无 context）
#   to_rdf_wide  expand_wide 同语料 → N quads
#   from_rdf_wide n=4000 独立三元组 N-Quads（s<i> p<i> v<i>）→ JSON-LD
#   canon_chain  n=1500 bnode 链（每环 2 quads：值 + 下钻）→ RDFC-1.0 canonicalize
#   scoped_heavy n=2000 节点 × term-ful property-scoped（父 200 terms）——
#                **COW 回归门**（批7 转正）：守 context 克隆路径份额与线性
#                （批6 实测 0.38µs/term、O(N×T)；谁动 context 复制/共享语义
#                谁先红）
#
# 读数（2026-10-09 役P1 首轮；同机双轮——跨轮稳定性自证）：
#   scenario      n       中位数(r1)   中位数(r2)   跨轮漂移   轮内噪声
#   parse_wide    20000      9ms         10ms        ~0        ±2%
#   expand_wide   20000   2690ms       2615ms       −3%        ±3%
#   expand_deep     800      6ms          6ms         0        ±2%
#   expand_nest    2000     40ms         39ms       −3%        ±3%
#   compact_wide  20000  17873ms      15709ms      −12%       ±10%   ← 高方差带
#   flatten_wide  20000   2638ms       2657ms       +1%        ±1%
#   to_rdf_wide   20000   2537ms       2658ms       +5%        ±2%（偶发长尾 3.4-3.6s）
#   from_rdf_wide  4000    914ms        971ms       +6%       ±45%   ← 高方差带
#   canon_chain    1500     76ms         76ms         0        ±3%
#
# 读数（2026-10-09 役P1 批3 后；倒排索引落地——同机双轮）：
#   scenario      n       中位数(r1)   中位数(r2)   vs 批3 前
#   parse_wide    20000     10ms         13ms        持平
#   expand_wide   20000   3197ms       2908ms       持平（本轮机器态 +8% 跨路径一致）
#   expand_deep     800      8ms          6ms        持平
#   expand_nest    2000     44ms         40ms        持平
#   compact_wide  20000   3170ms       3051ms       **5–8×**（≈expand_wide——P1 残余主导）
#   flatten_wide  20000   3015ms       3025ms       持平（+8% 机器态）
#   to_rdf_wide   20000   2982ms       3067ms       持平（+8% 机器态）
#   from_rdf_wide  4000   1062ms       1048ms        持平
#   canon_chain    1500     84ms         93ms        持平
# 读数（2026-10-09 役P1 批4 后；⑧⑨ 平铺属性合并索引化——同机双轮）：
#   scenario      n       中位数(r1)   中位数(r2)   vs 批3 后        vs 役P1 前
#   parse_wide    20000     13ms         13ms        持平             持平
#   expand_wide   20000     81ms         80ms        33–40×           **33×**
#   expand_deep     800      6ms          8ms        持平             持平
#   expand_nest    2000     16ms         15ms        2.6×             2.5×
#   compact_wide  20000    227ms        220ms        再 14×           **80×**
#   flatten_wide  20000    113ms        110ms        27×              24×
#   to_rdf_wide   20000     95ms        112ms        29×              23×
#   from_rdf_wide  4000   1242ms       1240ms        持平（异路径 ✓）   持平
#   canon_chain    1500    100ms         92ms        持平             持平
#   注：批4 探针缩放实证 expand 相 62→121ms = 1.95×/倍增（线性归位；
#   ⑧⑨ 同源码点，一修双落）。from_rdf 缩放律仍排后（轮内方差 ±45% 未动）。
# 读数（2026-10-09 役P1 批5 后；⑪ 调试细胞清偿——同机双轮）：
#   scenario      n       中位数(r1)   中位数(r2)   vs 批4 后        vs 役P1 前
#   parse_wide    20000     10ms         10ms        持平             持平
#   expand_wide   20000     68ms         66ms        持平             **40×**
#   expand_deep     800      6ms          7ms        持平             持平
#   expand_nest    2000     13ms         14ms        持平             2.9×
#   compact_wide  20000    181ms        189ms        持平微降          **~97×**
#   flatten_wide  20000     97ms         94ms        持平微降          27×
#   to_rdf_wide   20000     90ms         88ms        持平             28×
#   from_rdf_wide  4000     14ms         15ms        **89×**          89×
#   canon_chain    1500     84ms         88ms        持平             持平
#   注：批2 fromRdf「超线性嫌疑 + ±45% 方差」结案 = ⑪ 调试细胞（非算法）。
#   注：compact_wide 轮内噪声 ±10% → **±2%**（GC 抖动消失）——判据线例外带
#   （>20%）下次复测后可收紧至默认 10%。
#
# 读数（2026-10-09 役P1 批7 后；scoped_heavy 转正——同机双轮）：
#   scenario      n       中位数(r1)   中位数(r2)   备注
#   （九场景全数持平批5 后读数，略）
#   scoped_heavy  2000     165ms        164ms      **转正基线**（线性锚
#                                4000 节点 = 307ms ⇒ **1.94×/倍增 = 线性**）
#
# **scoped_heavy 验收判据（批7 钉，用户拍板转正；三判据批7+细化）**：
#   ① 基线带判据：「带」= 跨会话中位数集合的 [min, max]——当前 = **[158, 165]ms**
#      （批6 探针 158 / 批7 双轮 165、164；非单点容差）。读数判红 = 中位 >
#      band_max × 1.10（现值 >181ms）或倍增 >2.5×；下穿带 = 改善信号（记录
#      不红）。带随基线走：copy 路径优化批落地 ⇒ 同笔换带（coverage 棘轮
#      紧阈同纪律），非固定数。
#   ② 「必先过」判据（触发面枚举）——「context 从哪来 / terms 是否共享 /
#      派生时谁拷贝」三问任一的代码变更即必跑 scoped_heavy（+ compact_wide
#      [compact_index 身份共享依赖方] + suite 534）：
#      a. process_context terms 构造分支（:3564 has_term_entries 克隆 vs 共享）；
#      b. ActiveContext.terms 类型/表示变更（Map → 持久化/mut 包装）或
#         compact_by_iri/reverse/prefixes 三字段语义；
#      c. COW / 持久化 map 立项（批6 负载线动作本身）；
#      d. compact_apply_type_scoped / apply_property_scoped_context /
#         property_value_context 的 context 派生路径；
#      e. merge_property_values / property_index 槽位语义。
#      落点 = 此类批次 DoD 必含 scoped_heavy 读数（无托管 CI 实证，人工门）。
#   ③ 「负载线」判据（批6 负载触发线量化）：真实消费方 workload（非合成
#      基准——外部 issue / 仓内新消费模块）满足「scoped 应用次数 × 触发
#      克隆的平均 context terms ≥ **10⁶/文档**」（scoped_heavy 合成形 =
#      2000×200 = 4×10⁵，线取其 2.5×）⇒ COW 立批评估；评估证据 = 该
#      workload 实测 profile（自含对照法：同 doc 有/无 scoped 测克隆占比）
#      + scoped_heavy 门读数。前置「先转正」已由批7 兑现。
#
# 读数沿革：
#   2026-10-09 役P1 首轮（上表 r1/r2 双轮）——P3 线勘定立法本笔。优化前快照，
#   无前值可比。
#   2026-10-09 役P1 批2（compact hotspot 打点批；探针即写即删，产品码零残留）：
#     **P4 分解实测**（compact_wide n=20000）：P1_expand 2.7–3.0s（17%）/
#     P2_parsectx 11–15ms / P3_ctxproc 54–72ms（**2 万 term 装机无辜**，无
#     O(T²)）/ **P4_compact 13.3–14.2s（82%，形状首偏层）**。下探坐实⑩；
#     连带核③撤回（⑧⑨）。三核兑现：①挂账不扩坐实（套件别名仅 n002 简单形
#     一例、td 对象形零例、前向引用零例）②③勘正如上。
#   2026-10-09 役P1 批3（优化批·倒排索引，用户拍板开工）：⑩修法落地——
#     倒排索引三 mut 字段惰性建（谓词同源 + 排序不动 + 30 构造点编译器驱动）；
#     **验收全过**：compact_wide 中位 3.05/3.17s（双轮；对 15.7–26.1s 带 5–8×，
#     钉③线 ≤5s 兑现）+ suite 八面 534 全绿 + deny-warn 绿 + fmt 零差 +
#     .mbti +3 行（预期可见变化同笔）。九场景无红（本轮全 CPU 场景 +8% 系
#     机器态漂移，跨路径一致）。**compact 侧收兵；余靶 = ⑧⑨ expand 二次点
#     （P1 现为 compact/flatten/toRdf 共享下限）+ fromRdf 缩放律（排后）+ COW。**
#   2026-10-09 役P1 批4（⑧⑨下探+修，继续令）：expand 相分解打点（parse/
#     expand/serialize 三段）——首偏层 = expand 相（4.5×/倍增；parse 23ms、
#     serialize 18ms @40k 线性无辜）；下探坐实⑨码点（平铺属性合并线性扫），
#     **⑧⑨ 同源**。修法 = 节点级 property_index + merge_property_values 复用。
#     **验收全过**（双轮）：expand_wide 2615–3197→**80–81ms（33–40×）**；
#     compact_wide 3051–3170→**220–227ms（再 14×；役P1 累计 17873→223 = 80×）**；
#     flatten 3025→110–113ms（27×）/ toRdf 3067→95–112ms（29×）——三面同被
#     expand 二次点压制，同笔解放；expand_nest 40→15–16ms（2.6×）；fromRdf/
#     canon 不动（异路径 ✓）。缩放归位：62→121ms = 1.95×/倍增（线性）。
#     suite 534 全绿 + deny-warn 绿 + fmt 零差 + .mbti 零差（零 struct 变更）。
#     探针即写即删零残留。**余靶 = fromRdf 缩放律（排后）+ COW（P1 线）。**
#   2026-10-09 役P1 批5（fromRdf 缩放律勘定+清偿，继续令）：四段打点
#     （parse/ingest/shapes/render）——shapes 相「不随 n、随进程内轮次线性
#     增长」= 全局态累积指纹 ⇒ 坐实⑪「完即删」欠账，同批清偿（细胞 + 9
#     append 全删，visiting 环判定语义保留）。**验收全过**（双轮）：
#     from_rdf_wide 1240→**14–15ms（89×）**、缩放线性（shapes 8/16/31ms @
#     4k/8k/16k）、方差消失（±45%→tight）；他场景全持平微降。suite 534 全绿
#     + deny-warn + fmt + .mbti 零差。**批2 fromRdf「超线性嫌疑」结案：
#     非算法二次，系调试细胞。余靶 = COW（P1 线，前提已变——管线全线性后
#     须重估收益面）。**
#   2026-10-09 役P1 批6（COW 重勘·不动手 + 三核收口）：
#     ① 核② n=20000 事后反事实：清偿后 **104ms**（批2 试测 25.4s → 244×，
#     runs tight）——「超线性」三象一源坐实。② 核① 破案指纹判据入册：同 n
#     同命令同进程内连续 k 轮读数**单调上升**且增幅 ∝ 累计调用量 ⇒ 排除算法
#     缩放（算法成本是输入的函数）⇒ 跨调用存活状态；对照面 = 机器漂移跨场景
#     一致且非进程内单调；事后反事实（清偿后轮序平稳）闭环。③ COW 重勘：
#     克隆点唯一 = process_context:3564（term-ful 才克隆 O(T)，无条目共享
#     ——J2 按需化在册）；J2 同形实测（2000 节点 × term-ful scoped × 200-term
#     父，即写即删探针）= **158ms**（形内复制占比 ≈95%、0.38µs/term、O(N×T)
#     线性；J2 旧值 542ms 不可直比——原探针失传，只记现值）。**双判据钉死**：
#     真实语料（套件+bench）克隆占比 **≥20% ⇒ 立批**——实测 ≈0%（套件
#     context 1–10 terms 且 scoped 稀少；bench 无 scoped）不触发；消费端
#     「大 context × 海量 scoped」真实负载 ⇒ 先转正 scoped_heavy 常备场景作
#     回归门再议。成本面：COW 与批3 compact_index 的 terms 身份共享假设相咬，
#     改动面大原判成立。**裁定 = COW 维持挂账不排期（证据更新版）**；
#     scoped_heavy 转正 = 待拍。**役P1 靶单清零。**
#   2026-10-09 役P1 批7（scoped_heavy 转正，用户拍板）：十场景立法——
#     转正工件五件齐（bench_all 接线 / 确定性语料生成器 / 计时前双哨兵
#     结构断言 / 自报行 / 本表形状注记+读数+判据带）；**验收判据钉死**：
#     基线 158–165ms 带 + 线性锚 1.94×/倍增（4000 节点 307ms）+ 红线
#     （中位 >10% 超带或倍增 >2.5×）+ COW 回归门角色。双轮在册（165/164）。
#     **核① 勘正入册**：「探针协议 = 语料+计时+基线三合一」——J2 542ms 三项
#     全异（语料失传 / 计时无在册 / 基线为 09-26 二进制），只作历史注脚；
#     批6 的 95% 占比与 0.38µs/term 全出自本批探针自含对照（同 doc 有/无
#     scoped），不依赖旧值。**役P1 收官（十场景，靶单零）。**
#
# 勘定发现（P3 首轮；优化批次的靶单）：
#   ① **compact = 头号热点**：同语料 compact 15.7–17.9s vs expand 2.6–2.7s
#      ≈ **6–7×**——compaction 侧从无性能勘定史（J2 只勘了 expand 侧），首轮即
#      独大。优化批第一靶。
#   ② **fromRdf 高方差 + 超线性嫌疑**：n=4000 轮内 523–1344ms（±45%）；
#      n=20000 试测 13.7–37.8s（中位 25.4s）——缩放律存疑（线性 vs 二次），
#      留探针批专测。方差大 = GC/分配抖动面（与 J2「主成本 = 结构分配」同族信号）。
#   ③ **解析占比可忽略**：parse 9–10ms vs 管线 2.5–17.9s（<0.5%）——core 解析器
#      无辜（实测事实）。〔批2 勘正〕「J2『结构分配』结论推广到 compact 侧」系
#      推断，**已被批2 打点证伪**：compact 主成本 = O(P×T) 候选全量扫描（⑩），
#      非分配；expand 侧归属未下探（⑧）。
#   ④ **expand_nest 2000 别名 = 40ms 线性段**——J2 索引化修法（merge_property_values
#      槽位表）在多 nest 键场景保持线性，无回归迹象。
#   ⑤ canon bnode 链 1500 环 = 76ms——RDFC-1.0 在链形语料上便宜（n-degree 哈希
#      未爆）；碰撞组语料另立场景待下轮。
#   ⑥ **语义勘定副产品（@nest 别名序依赖）**：td 对象形 @nest 别名 + 前向引用
#      （别名定义在引用 term 之后）= 引擎拒（invalid @nest value）；别名前置或
#      简单形则过。官方套件无此形 oracle（tn 系全为已定义别名）⇒ 按「无 oracle
#      不扩」挂账不扩，仅记于此。bench 语料已按合规形（别名前置）构造。
#   ⑦ deep 场景上限 = core @json.parse 默认最大嵌深 1024（J0 勘定的直接后果；
#      depth>1024 的文档本库解析层即拒——容量边界，非缺陷）。
#   ⑧ **expand_wide 二次形状（批2 核③连带发现 → 批4 已修）**：20000→40000 =
#      4.8×/倍增。**批4 码级坐实 = ⑨ 同一码点**（见⑨）。
#   ⑨ **expand_nest 二次形状（批2 核③「无回归」撤回 → 批4 已修）**：2000/
#      4000/8000/16000 = 48/154/582/2026ms（每倍增 ~3.5×）。**批4 根因坐实**：
#      expand_object 平铺属性合并（expand_standard.mbt:1257——壬子批 #t0034/
#      #t0114 同 IRI 单键累加）**逐键线性扫全量 properties ⇒ O(P²)**——J2 索引
#      化了 nest 合并（merge_property_values）却漏了此平铺点；⑧⑨ 同源。
#      量级核算：20k²/2×13ns≈2.7s ≈ expand 相实测 2.7s ✓（40k 8×10⁸≈10.7s ✓）。
#      **修法**：节点级 property_index + 复用 merge_property_values（槽位语义
#      全同：先见者占位、逐值追加尾部、文档序）。**实测：expand 相 2.7s→62ms
#      （43×），缩放 62→121ms = 1.95×/倍增 = 线性归位**。
#      〔教训入册〕**单点读数定不了缩放律**——「无回归」类结论必带 ≥3 点缩放
#      实证；索引化纪律的审计须**全调用点普查**（J2 只索引 nest 点的漏网即此）。
#   ⑪ **fromRdf 假二次 = 「完即删」欠账（批5 码级坐实 → 同批清偿）**：
#      from_rdf_scoped_log 全局字符串累加器（from_rdf.mbt:212 注记「调试细胞；
#      完即删」却未删）在 is_pure_list_scoped **入口无条件 append**，
#      `global = global + s` 每次全量拷贝 ⇒ 成本随**进程内累计调用量**二次
#      膨胀——批2 n=20000 试测 25.4s、轮内方差 ±45%、shapes 相「随轮次线性
#      增长」（47→1342ms @ 同一 n）三象全此一源。C3 覆盖账曾判「死账勿删」
#      （行覆盖视角：分支线不可达）；性能账实证**入口 append 每调用必跑** =
#      活热源，两账分层不冲突，本批以性能证据清偿欠账（探针纪律即写即删的
#      追认）。**清偿后：shapes 相 8→16→31ms @ 4k/8k/16k = 线性、跨轮平稳；
#      from_rdf_wide 1240ms → 14–15ms（**89×**），方差消失（runs tight）。**
#      〔教训入册〕**「随轮次变慢」= 全局态累积指纹**——同 n 多轮读数单调
#      漂移时先查跨调用状态，勿归因算法缩放；调试细胞「完即删」注记当天兑现。
#   ⑩ **compact P4 根因（批2 码级坐实 → 批3 已修）**：`compact_term_candidates`
#      逐属性**全量扫 active.terms**（compact_standard.mbt:22）——调用点
#      **9 处**（批2 记「11」系误计，把定义/扫行混入，勘正）+ compact_iri_word
#      最长前缀扫（:109）同型。O(P×T) 量级核算：20000×20000 = 4×10⁸ 串比较 ×
#      ~34ns ≈ 13.7s 与 P4 实测吻合。**批3 修法（2026-10-09 用户拍板开工）**：
#      IRI→term 名倒排索引**整段建一次**（const §5 索引化纪律）——惰性挂
#      ActiveContext 三 mut 字段（compact_by_iri/compact_reverse/compact_prefixes，
#      pub(all) +3 字段 = 预期可见变化）；候选集谓词逐字同源 + 末段排序不动
#      （名唯一 ⇒ 全序 ⇒ 集合等价 ⇒ 序列等价）；构造点 30 处编译器驱动全补
#      （处理系 None，唯 value_chain terms 同引用整组拷贝）。**实测：compact_wide
#      15.7–26.1s → 3.05–3.17s（5–8×）**，且 ≈ expand_wide（P1 残余主导，⑧）；
#      轮内噪声 ±10% → **±2%**（GC 抖动随 4×10⁸ 串比较消失）。
