DOCUMENTARY RESEARCH / EN-IE7 EVIDENCE RUNS · PUBLIC EVIDENCE REVIEWED
AXIALPROOF / RESEARCH LAB

MEASUREMENT SPECIFICATION

基准测试台的构建与校准

标定 AxialProof 全部基准共用的测量仪器(节点、时钟、HTTP 客户端、采样调度、结局分类、归档链路),量化仪器自身的噪声地板 σ_rig、注入线性度与最小可判别差异 MDD,使每一次跨平台差异的发布都能出示"该差异大于我们仪器噪声"的证据,且第三方能凭公开的镜像 digest、配置与参照端点重建等价仪器并复算。

METRIC ID
AXP-RIG-v1
PROCEDURES
7
RECORDED FIELDS
71
DATASET
NOT COLLECTED
DATASET / NOT COLLECTED

This page publishes a measurement specification, not results. No figure on it was produced by running the protocol against any venue. When a dataset exists it will be released separately, versioned against the metric identifier above, with the raw responses and their checksums attached.

RATIONALE

WHY THIS NEEDS A STANDARD

评测圈的横向对比几乎都跑在未标定的仪器上:家宽笔记本发请求、系统时钟打时间戳、一个平台一个平台串行地测、SDK 自动重试把失败洗成成功、只保留成功日志、把 WAF 挑战页记成"平台宕机"。这些做法把网络路径差、anycast 落点差、时钟漂移、请求顺序效应和限流造成的非随机丢样,统统记到了被测平台头上。更根本的问题是没有噪声地板:当读者问"3 毫秒的差距是真的吗",评测方拿不出任何能回答的量。本基准把仪器本身当作第一个被测对象先标定一遍——给出 σ_rig、注入已知延迟能否被测回来(线性度)、网络位置贡献了多少方差、时钟误差界是多少、丢了多少样以及丢样是否随机——并把测量信封写死成全刊共用的记录格式。它不产出任何平台结论,而是让后续所有平台结论第一次具备可反驳的前提:别人可以拿我们的校准数据证明我们测错了。

OUTPUT

WHAT GETS PUBLISHED

发布两件东西。方法页 axialproof.com/benchmarks/rig:AXP-RIG-v1 规范全文(七条协议、全部公式与参数及其取值理由、发布门槛、边界声明)、版本变更日志、逐条协议的复现指令、容器镜像 digest、公共校准 echo 端点地址与其 best-effort 声明、以及一份"如何证明我们测错了"的邀请函(列出第三方最容易推翻我们的三个切入点:注入线性度、sampling_plan 的分母、跨节点裁决)。数据集 AXP-RIG-v1-DATA(有 DOI,含 datapackage.json + SCHEMA.md + CHANGELOG.md + LICENSE):node_registry.csv、clock_discipline.csv、clock_events.csv、envelope 原始 jsonl.gz 与 manifest.jsonl、roots.csv(含可选 OTS 证明)、classifier_rules.yaml 与脱敏后的分类回归测试集、sampling_plan.csv(计划点全集)、rate_limit_registry.csv 与文档快照、calibration_report 与注入实验原始数据、control_chart.csv、uncertainty_budget.csv、change_log.csv、release_gate.csv 与 release_signoff.csv。另附 rig-bootstrap 仓库(Dockerfile、配置、调度器、校准套件、JSON Schema),使第三方能一条命令起一个等价测试台。

PREREQUISITES

What must exist before a single measurement is taken.

A benchmark that skips these produces numbers, not evidence. Every item is a precondition of the protocol, not a recommendation.

P-01

3 台 VPS:node-A / node-B 为测量节点(均在欧盟,但须不同供应商、不同 ASN、不同城市),node-E 为回环参照节点(第三家供应商,只跑我们自己的 echo 服务,永不接触被测平台)。非突发型实例、≥2 vCPU/2 GB,三台月费合计约 €25-45。禁止用住宅宽带、商业 VPN 出口或共享代理池做测量出口。

REQUIRED
P-02

每节点:Debian/Ubuntu LTS + chrony(禁用 systemd-timesyncd)+ Docker/Podman + tcpdump(容器需 NET_RAW)+ mtr 或 paris-traceroute + jq。clocksource 须为 tsc 或 kvm-clock(读 /sys/devices/system/clocksource/clocksource0/current_clocksource 确认),否则更换实例。

REQUIRED
P-03

统一容器镜像并锁定 sha256 digest,镜像内固定运行时与 HTTP 客户端库版本,lockfile 随代码提交;所有采集必须以该镜像运行,禁止在宿主机裸跑。

REQUIRED
P-04

私有 git 仓库(代码+配置)与公开镜像仓库(发布用)。每条记录的 code_commit 必须是已推送的提交哈希,config_hash 为配置文件 sha256。

REQUIRED
P-05

有 DOI 的开放归档仓库账号(如 Zenodo)用于数据集发布,预留 ≥50 GB;另备对象存储放原始归档(月费约 €3-10)。

REQUIRED
P-06

抓取并存证各平台公开 API 文档、限流页、条款页的能力:HTML/PDF 快照 + sha256 + 抓取时刻,进入 doc_snapshot 登记表。

REQUIRED
P-07

只读 API key(仅当下游基准需要私有端点时):每平台单独申请、最小权限、明确不含提现权限;经环境变量注入,永不进入仓库、日志或归档文件。

REQUIRED
P-08

可公开署名的编辑部邮箱,写进固定 User-Agent,使平台能反向联系我们;不伪装浏览器 UA,不轮换 UA。

REQUIRED
P-09

preregistration.md:在正式采集前提交并推送(git 时间戳即证据),声明各指标的采样参数、Δ_pair 容差、位置无关性要求与发布门槛,防止事后挑选。

REQUIRED
P-10

法务与伦理清单逐人签署:不伪造或借用证件、不做渗透与撞库、不跨账户对敲、不用他人银行账户、429 即停且不探测限流阈值、不用 VPN 伪装地区、不绕过或求解 WAF 挑战、不使用打码服务。

REQUIRED
P-11

两名具备发布签字权的成员,且签字人不得是该批数据的唯一执行者。

REQUIRED
P-12

时间预算:仪器搭建与首轮完整校准约 5-8 人日;14 天控制图基线期须在其他基准正式开跑前完成(可与开户、文档类基准并行)。

REQUIRED
P-13

资金预算:本基准 6-8 周基础设施合计约 €80-160,不涉及任何真实交易资金,因此无本金损失风险。

REQUIRED
P-14

全刊统一内部时间基准为 UTC;仅在报告欧盟时段时映射到 Europe/Dublin,并记录 tzdata 版本。

REQUIRED

PROTOCOL

7 procedures, each with its own evidence boundary.

Every procedure states what its output can support and what it cannot. The second of those is the one that keeps a measurement honest.

RIG-01

测量节点选址、网络位置基线与位置披露

  1. 按前置准备选定 node-A/node-B/node-E,固定实例规格与镜像,关闭自动内核更新;任何内核/镜像/迁移变更走变更单并记入 change log。
  2. 登记并发布:供应商、机房城市与国家(ISO 3166-1 alpha-2)、出口 ASN 与 AS 名、内核版本、clocksource、容器 digest。测量期内不公开完整出口 IP(避免被针对性优待或屏蔽而破坏效度),测量窗口关闭后随数据集 v1.0 一并公开 IP 及其变更史,供事后核验。
  3. DNS 纪律:节点本地跑 stub 解析器,上游固定为两个公开解析器并记录用的是哪一个;每个请求记录实际连接的目标 IP、其 ASN 与 DNS TTL(anycast 下落点会变,必须逐次记录而非假定)。
  4. 路径基线:对每个被测主机每小时跑一次 mtr --report-cycles 100 --tcp --port 443(或 paris-traceroute 变体,避免 ECMP 伪路径),保存全文;path_stability = 7 天内出现频次最高的 AS 路径占比。
  5. RTT 地板:每 60 s 对每个被测主机做一次纯 TCP 握手计时(不复用连接、不发 HTTP、不消耗 API 配额),连续 ≥14 天;rtt_floor 取 p01(不取 min,min 对单次异常敏感),并报 p50/p95 描述抖动。
  6. 可选第三方位置证明:在 node-A/node-B 运行 RIPE Atlas 软件探针(以其官方文档为准),使外部研究者能从我们的节点独立发起测量,形成不依赖我们自述的位置证据。
  7. 地区受限的处理:若平台从该节点地区不可用,如实记为 BLOCKED_GEO 并停止该平台在该节点的采样;禁止换出口、挂 VPN 或代理绕过。
Quantity measured
rtt_floor(node,host) = q01(TCP handshake RTT);path_stability = 出现频次最高 AS 路径的次数 / 总 traceroute 次数;网络位置披露三元组 = (ASN, city, provider)
Fixed parameters
握手采样 60 s(够密以覆盖日内路由变化,且属被动握手不占 API 配额);mtr 每小时 100 cycles(单次报告内即可给出稳定的丢包/抖动分位数);p01 而非 min 作地板(稳健性);基线期 ≥14 天(覆盖工作日/周末与欧洲晚高峰)。
Sample size
每节点×每被测主机 ≥20,160 次握手(14 天×24 h×60/h);mtr ≥336 次/主机/节点(14 天×24)。跨 ≥2 个完整周末以覆盖周内效应。
Control
node-A 与 node-B 同参数同时运行;node-E 只做回环参照、不接触被测平台,用于把"我们的客户端"与"网络路径"分开。
Statistical treatment
RTT 一律用分位数与 MAD,不用均值/标准差(长尾)。跨节点比较用配对分位数差 + 移动块 bootstrap(块长 = ACF 首次跌破 1/e 的滞后 ×2,10,000 次重采样,BCa 区间)。异常值不删除,改用稳健估计量并单独发布异常清单。
Reproducibility check
公开容器 digest 与握手计时脚本,第三方在自己的 VPS 上跑同一镜像,把自己的 rtt_floor 与 ASN 提交;我们维护"路径基线对照表"。若第三方在同一 ASN 得到的 rtt_floor 与我们相差 >2 ms 或 >20%(取大者),触发复核并公开处置。
Known pitfalls
突发型实例的 CPU credit 耗尽会伪装成"平台变慢";anycast 使不同时刻连到不同 PoP,不记录 resolved IP 就无法解释;普通 traceroute 在 ECMP 下会产出不存在的路径,必须用 paris 变体或 --tcp;供应商机房迁移会静默改 ASN,需每日校验。
Risk
无资金风险。仅对被测平台的公开 443 端口做低频探测,不扫端口、不扫网段;遵守 VPS 供应商 AUP。发布完整出口 IP 的时机是效度考量而非隐私考量,须在方法页写明理由。

SUPPORTS / 确立两个测量节点的拓扑与地理位置及其到各平台边缘的路径基线与稳定性,把"网络位置"从隐藏变量变成可披露、可复算的已知量。

DOES NOT SUPPORT / 不能确立平台在其他地区、其他 ASN、其他接入类型(住宅/移动)下的表现,也不能确立平台的"全球"性能。供应商的网络质量宣传页与平台文档里"低延迟/全球节点"的表述属文档类证据:它们不能确立我们观测到的路径特征,我们的观测同样不能证伪它们——这是两个不同命题,不可互相代替。

EVIDENCE RETAINED / node_registry.csv · mtr 全文归档 · tcp_handshake_timing.csv · dns_resolution_log.jsonl · preregistration.md 的 git 提交哈希
RECORDED FIELDS (9)
  • node_id / string / node-A/node-B/node-E
  • provider / dc_city / dc_country / string / ISO3166-1 / 缺失写 null
  • asn / as_name / integer / string / 每日校验,变动即告警
  • kernel_version / clocksource / container_digest / string / string / hex64 / 变更须开变更单
  • target_host / string / 被测主机名
  • rtt_floor_ms / rtt_p50_ms / rtt_p95_ms / ms / 3 位小数
  • resolved_ip_asn / dns_ttl_s / integer / s / anycast 落点追踪
  • path_hops / path_stability / count / ratio(0-1) / 来自 mtr
  • window_start / window_end / ISO8601(UTC,ms) / 基线统计窗口
SPECIFICATION
RIG-02

时钟纪律、漂移测量与时间戳误差标定

  1. 每节点装 chrony,配 ≥4 个上游:2 个供应商本地 NTP、1 个区域 pool、≥1 个由国家计量机构运营的公开 NTP(以其官方页面为准)。makestep 仅允许启动后前 3 次,运行期禁止 step、只允许 slew(时间跳变会污染整段样本)。
  2. 每 60 s 采集 chronyc -c tracking 与 chronyc -c sourcestats(CSV 输出)落盘为 clock_discipline.csv。
  3. 按 RFC 5905 的 root distance 计算每次采样的时钟最大误差界 u_clock,并同时记录 last_offset、rms_offset、skew、leap_status。
  4. 每小时用独立于 chrony 的只读查询(chronyd -Q,不改系统时钟)向国家计量机构 NTP 取一次 offset,作为"第二意见",用于发现 chrony 上游集体偏移。
  5. 用户态时间戳误差标定:对按 record_id 哈希确定性选出的 ≥1% 采样点同时抓包,比较用户态 t_send/t_recv 与内核抓包时间戳,得 u_ts 分布(报 p50/p95/max,单位 µs)。确定性抽样保证第三方能复现"抽了哪些",且与内容无关不产生选择偏倚。
  6. 所有区间量(RTT、分段耗时)必须用 CLOCK_MONOTONIC_RAW 计算,所有绝对时刻用 CLOCK_REALTIME 记录,两者同时写入每条记录;禁止用 realtime 差值算 RTT。
  7. 平台自报时间标定:对各平台的公开服务器时间类端点每 5 min 采样,记 server_clock_offset = t_server_reported − t_obs,长期跟踪;该量只用于判断平台时间戳能否与我们的时间轴对齐,不作为平台质量指标。
  8. 时钟事件登记:任何 step、闰秒状态变化、chronyd 重启、实例迁移都写入 clock_events.csv,事件前后 ±10 min 样本标记 clock_suspect。
  9. 放行门槛:若某小时 u_clock 的 p95 > 5 ms,该小时样本不得用于跨平台时刻配对(仍可用于单平台内部序列)。
Quantity measured
u_clock(t) = root_delay(t)/2 + root_dispersion(t)(RFC 5905 root distance,即同步距离上界);t_obs = t_send_realtime + RTT_mono/2;u_tobs = sqrt(u_clock² + (RTT/2)² + u_ts²),其中 RTT/2 是路径对称性假设的严格上界(真实观测时刻必落在 [t_send, t_recv] 内)。
Fixed parameters
chrony 采样 60 s;u_clock 放行阈值 5 ms(理由:跨平台配对容差 Δ_pair 默认 250 ms,时钟项须比它小至少一个量级);抓包对照比例 1%(抓包本身增加负载,故只对确定性子样本抓);平台时间端点 5 min(低频足以跟踪偏移趋势且不占配额)。
Sample size
每节点 ≥20,160 个 chrony 采样点(14 天×1/min);第二意见 ≥336 点(14 天×1/h);抓包对照 ≥2,000 条请求/节点;平台时间端点每平台 ≥4,000 点。
Control
node-A/node-B 用相同 chrony 配置但不同的供应商本地上游;两节点 u_clock 分布若显著不同,说明某节点的授时供给差,应更换上游而不是接受该噪声。node-E 同样纳入,三条线同时异常即指向外部共同原因。
Statistical treatment
u_clock 报 p50/p95/max,不做正态假设;短期频率稳定性可选用 Allan deviation(τ = 1 min…1 h)描述;u_ts 报 p50/p95/max。时钟项以 B 类不确定度进入 RIG-07 的预算合成。
Reproducibility check
公开完整 chrony.conf(含上游列表)、clock_discipline.csv 与抓包对照脚本;第三方在自己节点复跑同配置,比较 u_clock 的 p95 是否同量级,并用同一脚本得出自己的 u_ts。任何声称"我们时间戳很准"的说法都必须能被这两条曲线检验。
Known pitfalls
虚拟化的 CPU steal 会同时抬高 u_ts 与 RTT,必须与 steal_pct 联查;容器内抓包需额外权限且会增加负载,因此只抓确定性子样本;ntpdate 在多数发行版已弃用,用 chronyd -Q;最常见的概念错误是把 server_clock_offset 当成平台缺陷——它是两端之差,无法单独归因给任何一端。
Risk
无外部风险。抓包只抓我们自己发起的连接,不做旁路嗅探,pcap 文件按 RIG-05 脱敏规则处理后才可归档。

SUPPORTS / 确立我们时间轴的最大误差界,使"同一时刻"的判定有可量化的容差,并把时钟项写进不确定度预算。

DOES NOT SUPPORT / 不能确立平台服务器时钟的准确度(观测到的 offset 是两端之差,方向不可识别),因此绝不能把 server_clock_offset 解读为平台时间戳不可信或造假。平台文档中"服务器与 NTP 同步"的表述属文档类证据:它不能确立实际偏移,我们的偏移观测也不能反推其内部授时架构。

EVIDENCE RETAINED / clock_discipline.csv · clock_events.csv · pcap 对照样本与比对脚本 · chrony.conf(随数据集公开) · 国家计量机构 NTP 的逐小时 offset 序列
RECORDED FIELDS (10)
  • sample_ts / ISO8601(UTC,ms) / 采样时刻
  • node_id / chrony_ref_id / stratum / string / string / integer / 当前同步源
  • last_offset_s / rms_offset_s / s / chronyc tracking 原值
  • root_delay_s / root_dispersion_s / s / 用于算 u_clock
  • u_clock_ms / ms / 派生,root distance
  • skew_ppm / leap_status / ppm / enum / 漂移与闰秒态
  • nmi_offset_s / s / 每小时第二意见,缺失写 null
  • u_ts_us_p50 / u_ts_us_p95 / µs / 抓包对照得出
  • steal_pct / clocksource / % / string / 虚拟化噪声联查
  • event_flag / enum / none/step/restart/migration/leap
SPECIFICATION
RIG-03

统一客户端封装、主记录信封与"同一时刻"的可判定定义

  1. 单一实现:所有平台共用同一个 HTTP 客户端类,平台差异只允许出现在"端点表 + 签名器 + 解析器"三个可插拔部件;禁止为某平台单独换 HTTP 栈,禁止使用各平台官方 SDK(其内含不可见的重试、缓存与时间戳)。
  2. 固定传输参数写入配置文件:HTTP 版本(默认 HTTP/1.1 keep-alive;仅支持 HTTP/2 的平台单独登记并在分析中标注)、连接超时 5 s、总超时 10 s、retry=0、不自动跟随重定向(手工记录 3xx)、TLS ≥1.2、固定 Accept-Encoding、TLS 会话复用策略全平台统一。
  3. 连接预热:每个采样周期前 60 s 对每个主机维持一条空闲 keep-alive 连接;用 connection_state 区分冷/热连接,主分析只用热连接样本,冷连接样本单独发布。
  4. 分段计时:记录 dns_ms / tcp_ms / tls_ms / ttfb_ms / transfer_ms(对应 curl 的 time_namelookup、time_connect−time_namelookup、time_appconnect−time_connect、time_starttransfer−time_pretransfer、time_total−time_starttransfer)。
  5. 单调度器发起:采样时刻 t_k = t_0 + k·T,同一进程内对所有平台并发发出请求,要求全部 t_send 落在 [t_k, t_k + 50 ms] 内,否则该周期标 skewed=true。每周期的相位在 [0,T) 上随机化(种子公开),避免与平台的整点批处理/快照周期共振产生稳定的假差异。
  6. 若限流不允许并发而必须串行:发起顺序按预生成的随机轮转序(种子写入 run manifest),order_index 记入每条记录;分析时必须检验 order_index 效应,显著则该指标不得跨平台比较,只能报"顺序敏感"。
  7. 跨平台配对判据:同周期两平台样本可配对当且仅当 |t_obs(A) − t_obs(B)| + u_tobs(A) + u_tobs(B) ≤ Δ_pair;不满足则丢弃并计入 pairing_loss_ledger,禁止静默丢弃。禁止事后用插值/最近邻把不同时刻的样本"对齐"再比较。
  8. 信封与校验:每次请求无论成败都产出一条 envelope,含 spec_id/rig_version/code_commit/config_hash/container_digest/node_id,使任一数值都能反查当时的仪器状态;envelope 用 JSON Schema(draft 2020-12)校验,失败即抛错中止该采样点并记 schema_violation,不静默丢弃。
  9. 解析与原文分离:解析出的业务字段进派生表,原始 body 独立归档,用 body_sha256 双向绑定;禁止在解析时"顺手修正"(四舍五入、单位换算),所有转换在派生层做且可逆可追溯。
  10. 冒烟验收:新增或修改任一平台适配器后跑 ≥500 条冒烟样本,要求 schema 通过率 100%、必填字段完备率 100%、retry_count 全为 0,方可进入正式采集。
Quantity measured
rtt_ms = (t_recv_monotonic_ns − t_send_monotonic_ns)/1e6;t_obs = t_send + RTT/2;cycle_max_skew = max_p(t_send) − min_p(t_send);配对判据 |Δt_obs| + u_tobs(A) + u_tobs(B) ≤ Δ_pair;信封完备率 = 必填字段非空记录数 / 计划请求数(放行门槛 = 1.000)。
Fixed parameters
连接超时 5 s / 总超时 10 s(远大于欧盟节点到主流平台边缘的 p99 RTT,又短到能在一个采样周期内判定超时;该值直接定义"超时"这一结局类的边界,故必须固定并公布);retry=0(自动重试会把失败洗成成功,制造存活者偏倚);δ_send = 50 ms;Δ_pair = 250 ms(价格/深度类默认值,须显著小于该量的自相关时间尺度且远大于 u_tobs;下游基准可覆盖但必须论证);预热窗口 60 s。
Sample size
每个平台适配器 ≥500 条冒烟样本;正式期 envelope 必须 100% 覆盖计划请求(含全部失败);每个下游指标 ≥2,000 个有效采样周期;配对成功率 ≥0.95 才允许发布跨平台比较,否则只发布单平台序列。
Control
同一节点上跑两个独立客户端进程对同一端点同时采样,估计进程级噪声 σ_proc(GC、调度、steal)。把 node-E 的 echo 端点作为"第 6 个平台"混入每个采样周期——它的真值已知且稳定,任何出现在参照端点上的周期性差异必然是调度器伪影。
Statistical treatment
本条以定义为主。强制规定:所有下游统计的最小单位是 envelope 记录,禁止以人工整理的截图或笔记作为统计单位。skew 与分段计时用分位数;order_index 效应用带平台固定效应的回归或 Friedman 检验,报 p 值与效应量。
Reproducibility check
公开 JSON Schema、客户端源码、配置及其 sha256、容器 digest、t_0/T/相位种子/轮转序种子与 sampling_plan.csv。第三方 docker run 即可产出结构相同的 envelope,并能精确重建同构的采样计划;我们另发布参照端点上的周期观测,供其验证我们的调度器没有系统性偏斜。
Known pitfalls
事件循环阻塞会让"并发"实际串行——必须实测 cycle_max_skew 而非假定;HTTP/2 多路复用下并发请求共享一条连接,队头阻塞会让延迟互相污染,若用 HTTP/2 必须每请求独立连接或明确标注;gzip 解压时间会混进 transfer_ms,须固定 Accept-Encoding;最危险的是把"同一 cycle"当成"同一市场时刻"。
Risk
凭证泄漏风险最高的环节:Authorization、API key、签名字段在落盘前必须替换为 REDACTED(保留 header 名与值长度以维持可审计性)。发布前跑自动化密钥扫描,命中即阻断发布。并发发起会瞬间产生 N 个请求,须与 RIG-04 的令牌桶联合限速。

SUPPORTS / 确立每条观测的完整可追溯性(任一数值可反查代码、配置、节点、连接状态与原始字节),并给出"跨平台样本是否可视为同一时刻"的可判定判据与其不确定度。

DOES NOT SUPPORT / 不能确立平台内部处理耗时——我们只观测端到端 RTT,边缘缓存、WAF、排队都含在内。不能确立各平台在同一时刻"看到"了相同的市场信息(撮合内部时序与数据分发链路外部不可观测),因此配对成功只是时间可比,不是信息同步。API 文档对字段语义、推送频率、快照周期的描述属文档类证据:它只能作为设计采样相位的先验,不能确立实际行为,字段语义只能由实际返回值的跨时间一致性来证伪、不能被证实。

EVIDENCE RETAINED / envelope.schema.json · client 源码与 config + 其 sha256 · sampling_plan.csv(采集前生成并 git 提交) · 20 条脱敏后的完整 envelope 样例 · 冒烟验收报告
RECORDED FIELDS (15)
  • record_id / UUIDv7 / 时间可排序主键
  • spec_id / rig_version / code_commit / config_hash / container_digest / string / hex / 仪器状态指纹
  • node_id / platform / endpoint_slug / string / 三元定位
  • cycle_id / planned_ts / order_index / phase_offset_ms / string / ISO8601(UTC,ms) / int / ms / 调度上下文
  • t_send_realtime / t_recv_realtime / ISO8601(UTC,ms) / 绝对时刻
  • t_send_monotonic_ns / t_recv_monotonic_ns / ns / 仅用于算区间
  • rtt_ms / dns_ms / tcp_ms / tls_ms / ttfb_ms / transfer_ms / ms / 分段计时,3 位小数
  • t_obs / u_tobs_ms / ISO8601(UTC,ms) / ms / 观测时刻及其半宽
  • connection_state / http_version / tls_version / enum / cold/warm 等
  • resolved_ip_asn / http_status / retry_count / int / retry_count>0 的记录不进分析
  • response_headers_json / json / 全量保留,敏感值按 RIG-05 脱敏
  • body_sha256 / body_bytes / body_path / hex64 / bytes / string / 原文绑定
  • outcome_class / paired_flag / pair_group_id / enum / bool / string / 见 RIG-04
  • server_time_reported / server_clock_offset_ms / ISO8601 / ms / 无该字段写 null
  • steal_pct / load1 / % / float / 仪器负载协变量
SPECIFICATION
RIG-04

结局分类学、跨节点裁决与非随机丢样的检验

  1. 定义封闭且版本化的 outcome_class 枚举:OK / MALFORMED / SCHEMA_VIOLATION / RATE_LIMITED / CHALLENGE / BLOCKED_GEO / AUTH_ERROR / CLIENT_ERROR / SERVER_ERROR / TIMEOUT / CONN_RESET / TLS_ERROR / DNS_ERROR。无法归类的必须落 UNCLASSIFIED 并进人工复核队列(72 h 内完成),禁止塞进 SERVER_ERROR。
  2. 分类只依据可观测特征,规则写成版本化的 classifier_rules.yaml:HTTP 状态码、响应头键集合(全量保存)、content-type、body 结构指纹(是否 HTML、是否含挑战页特征)、传输层与 TLS 错误码。规则表中的厂商特征(某 CDN 的追踪头、缓解类响应头等)必须以本次实测抓到的 header 逐条登记,不得凭记忆预设厂商行为。
  3. 证据留存:每条非 OK 记录保存完整响应头、脱敏后 body 前 8 KB 与 body_sha256。
  4. 跨节点交叉裁决(核心):对同一周期同一端点比较 node-A 与 node-B 的 outcome_class——两节点同类非 OK → platform_side;仅一节点非 OK → node_side(归因于该节点的网络位置或被针对性拦截),此时禁止写成平台不可用;两节点非 OK 但类别不同 → indeterminate。
  5. 第三方弱佐证:同时窗抓取平台公开状态页快照(含 sha256 与抓取时刻),仅作登记不作判定依据;明确记录"状态页未报告"这一事实本身不构成反证。
  6. 遇 CHALLENGE 一律停止该端点当轮采样并退避。绝对禁止求解验证码、禁止使用绕过挑战的第三方服务、禁止更换指纹重试——CHALLENGE 是要如实发布的观测结果,不是要克服的障碍。
  7. 限流预算:采集前抓取各平台限流文档并登记(标注"文档值,未经验证");客户端令牌桶稳态速率 ≤ 文档限额的 20%,突发 ≤5%;文档未公布限额时用保守缺省 ≤1 req/s 且 ≤60 req/min,并把该平台标为 undocumented_limit。绝不用递增压力探测真实阈值(那接近压力测试,越过伦理红线)。
  8. 退避纪律:收到 429 或平台文档定义的限流码 → 立刻停止该主机全部采样,按 Retry-After,无则指数退避(初始 60 s,×2,上限 30 min,±20% 抖动);连续 3 次触发 → 停止该平台当日采集并人工介入。
  9. 采样台账:sampling_plan.csv 在采集前生成(计划点全集),执行后回填 realized_class;丢样 = 计划点未得到 OK 的部分,必须 100% 有记录。可用率的分母永远是计划数,不是实际发出数;禁止发布只有分子的可用率。
  10. 丢样机制检验:以计划点为单位建 logistic 回归 P(loss) ~ hour_of_day + day_of_week + platform + node + 波动率代理 + rate_headroom,报系数与 p 值;另做丢样率与波动率代理的 Spearman ρ。任一与指标强相关的协变量显著即拒绝 MCAR,声明 MAR/MNAR 风险。
  11. 偏倚界定与门槛:对受丢样影响的指标给出最坏情况区间(把全部丢样点分别按观测分布的 min 与 max 填充后重算)与点估计一并发布;单平台单指标丢样率 >0.10 → 不得参与跨平台排名;>0.30 → 该指标该平台不发布,只发布"采集受限"这一事实。
Quantity measured
availability_rate = |{OK}| / |{planned}|;loss_rate = 1 − availability_rate;rate_headroom = 1 − used/limit;分类一致性 Cohen's κ = (p_o − p_e)/(1 − p_e);最坏情况界 [θ_min, θ_max] = 用观测分布 min/max 填充全部缺失点后重算的指标值(Manski 型无假设界)。
Fixed parameters
body 保存上限 8 KB(足以覆盖挑战页/错误页判别特征,同时控体积与 PII 风险);κ 门槛 0.90;UNCLASSIFIED 复核时限 72 h;令牌桶 ≤ 文档限额 20%(测量不得扰动被测对象,且给平台留安全边际);退避 60 s 起、上限 30 min、抖动 ±20%(避免与其他客户端同步重试形成雪崩);限流文档每周重抓一次,sha256 变化即触发预算复核。
Sample size
人工标注 ≥300 条分层抽样记录(每类 ≥20 条,抽样种子公开;某类不足则如实记为"该类观测不足"),两名标注者独立标注要求 κ ≥0.90,分歧样本共同裁定后进回归测试集;跨节点交叉裁决覆盖 100% 非 OK 记录;丢样机制回归要求该平台该指标 ≥5,000 个计划点;限流文档快照 ≥8 次(每周 1 次)。
Control
node-E 的 echo 端点走同一分类器与同一令牌桶:我们控制其服务端,因此其上出现的任何非 OK 必然是我们侧问题——参照端点的 outcome_class 分布就是分类器的假阳性基线,也验证限流逻辑本身不制造非随机丢样。
Statistical treatment
可用率用 Wilson score 区间(小比例有限样本下比正态近似稳健);两节点非 OK 率是否系统性不同用 McNemar 检验;分类一致性用 κ;丢样用 logistic 回归(报 OR 与 95% CI)与 Spearman ρ;事件持续时长按采样周期 T 的粒度报告为区间而非点值。缺失机制结论只报"是否拒绝 MCAR",不宣称已识别 MNAR(不可识别)。
Reproducibility check
公开 classifier_rules.yaml、脱敏后的回归测试集原始响应、标注手册与 κ 脚本;第三方可用我们的测试集验证其分类器是否与我们同判,也可对我们发布的每条非 OK 记录(附完整证据)自行重判。最关键的一条是公开 sampling_plan.csv——它让任何人都能验证我们的分母是计划数而非成功数,这是本领域最容易造假也最容易验证的一点。
Known pitfalls
把 WAF 挑战计成"平台宕机"是本类测量最常见的致命错误,反过来把真实 5xx 当成"我们被挡了"同样错误,跨节点交叉是唯一便宜的裁决手段;状态页"未报告"常被误当反证;公开端点与带 key 端点的防护策略可能不同,两者可用率不可混合统计;只保留成功样本是本领域最普遍的隐性造假;高波动时段更易触发限流与超时,会把指标系统性洗得比真实更平稳,这正是 MAR 检验要抓的;为"公平"给所有平台统一采样频率,会人为压低宽松平台的样本量,正确做法是按各自配额上限的同一百分比设定并披露有效样本量差异。
Risk
越限访问可能违反平台条款并触发封禁,进而破坏后续所有基准的可执行性,429 即停是硬红线。任何"绕过限流"的手段(IP 池、多 key 轮换、UA 伪装)与任何绕过挑战的手段一律禁止;这些行为还会使数据丧失发布资格。

SUPPORTS / 确立在给定节点、给定时刻我们收到的是哪一类结局,并在两节点交叉下把"本节点被拦截"与"平台侧事件"分开;同时确立我们的采样没有系统性删掉某一类时刻,在丢样不可避免时给出指标的无假设上下界。

DOES NOT SUPPORT / 不能确立平台对所有用户、所有地区是否可用(我们只有两个欧盟节点),也不能确立事件根因(WAF 策略、边缘故障、源站故障在外部不可分辨)。不能确立平台真实的限流阈值与执行策略——我们刻意不去探测。平台状态页、事故公告、条款里的可用性承诺与限流文档均属文档类证据:文档快照只能确立"平台在某时刻如此声明",不能确立系统实际行为;它们既不能确立我们观测到的事件是否发生,我们的观测也不能确立平台是否违反了其承诺。

EVIDENCE RETAINED / classifier_rules.yaml 与回归测试集 · sampling_plan.csv 与回填后的台账 · rate_limit_registry.csv + 文档快照 sha256 · 人工标注表与 κ 计算脚本 · 状态页快照及其 sha256
RECORDED FIELDS (11)
  • record_id / classifier_version / UUIDv7 / string / 每条记录标注分类器版本
  • http_status / header_keys / mitigation_evidence / int / list / list / 判定依据,全量保留
  • body_content_type / body_fingerprint_sha256 / body_snippet_path / string / hex64 / string / 证据指针
  • transport_error_code / outcome_class / string / enum / 封闭枚举
  • cross_node_state / availability_verdict / enum / platform_side/node_side/indeterminate
  • status_page_sha256 / status_page_fetched_at / hex64 / ISO8601(UTC,ms) / 弱佐证,缺失写 null
  • plan_id / planned_ts / realized_class / loss_flag / string / ISO8601 / enum / bool / 采样台账
  • retry_after_s / backoff_stage / rate_headroom / s / int / ratio(0-1) / 限流可观测性
  • doc_limit_value / doc_limit_unit / limit_source / doc_snapshot_sha256 / number / string / enum / hex64 / documented 或 undocumented_default
  • volatility_proxy / loss_model_version / number / string / 丢样回归协变量
  • manual_review_flag / reviewer_ids / review_decision_ts / bool / list / ISO8601 / UNCLASSIFIED 处置
SPECIFICATION
RIG-05

原始响应落盘、校验和与开放数据集封装

  1. 目录规范:raw/{spec_id}/{yyyy}/{mm}/{dd}/{node_id}/{platform}/{endpoint_slug}/{run_id}.jsonl.gz,每行一条 envelope;派生表 derived/{table}/{yyyy-mm}.csv。路径本身不得含密钥或账户标识。
  2. 写入即封存:文件写完立即计算 file_sha256 与未压缩内容的 content_sha256,追加到当日 manifest.jsonl;文件随后设为只读(chattr +i 或对象存储不可变策略)。任何修正只能追加新文件并在 corrections.csv 登记,禁止就地改写。
  3. 每日封存:对当日 manifest.jsonl 算 sha256 得 daily_root,追加到 append-only 的 roots.csv 并随当日 git 提交推送;可选用 OpenTimestamps 对 roots.csv 做一次免费时间戳,得到"不晚于某时刻已存在"的第三方可验证证据。
  4. 体积策略:默认 100% 保存 body;某端点压缩后日增 >2 GB 时改为 100% 保存 body_sha256 与解析字段 + 按 sha256(record_id) 前两位十六进制 <0x1A(≈10.16%)确定性抽取全文。规则写死并公布,使第三方能验证抽了哪些,且抽样与内容无关不产生选择偏倚;该策略须在端点级登记并在数据集中标注。
  5. 脱敏规则集(版本化 redaction_ruleset.yaml):Authorization/API-Key/签名字段 → REDACTED(保留 header 名与值长度);Set-Cookie 值 → REDACTED(保留 cookie 名);我们自己账户的 ID/邮箱/余额/订单号 → HMAC-SHA256(私有盐),盐不公开且不随数据集分发。
  6. 发布前脱敏验证:对全量文本跑正则+熵值扫描(密钥模式、邮箱、IBAN、卡号模式)与一次开源密钥扫描工具,命中即阻断发布并记入 release_blockers.csv;发布须两人签字(release_signoff.csv 记两名成员与时刻)。
  7. 数据集打包:随数据发布 datapackage.json(Frictionless 规范,声明每张表的字段、类型、单位、缺失值约定)、人类可读的 SCHEMA.md、CHANGELOG.md 与 LICENSE(数据 CC BY 4.0,方法文本 CC BY-SA 4.0,代码 MIT,最终以编辑部法务确认为准)。
  8. 缺失值约定(全刊统一):缺失一律 null,禁止用 0/-1/空字符串/"N/A";每个可缺失字段必须有配套的 *_status 字段或由 outcome_class 说明缺失原因;单位写进 schema 而非字段名(已成全刊约定的 _ms 等后缀除外)。
  9. 版本与不可变引用:数据集版本号 AXP-RIG-v1-DATA-vX.Y,发布到有 DOI 的归档仓库(容量上限以其当时政策为准,超限则拆成多条记录并用 datapackage 索引);每篇引用该数据的稿件必须引用具体版本的 DOI,禁止引用"最新版"。
  10. 保留与撤回:原始数据保留 ≥24 个月;发现采集缺陷时发布新版本并在 CHANGELOG 与方法页显著勘误,旧版本保留但标 superseded,不删除,以便复核。
Quantity measured
daily_root = sha256(当日 manifest.jsonl 字节流);校验通过率 = 重算哈希与 manifest 一致的文件数 / 文件总数(放行门槛 = 1.000);确定性抽样判据 = int(sha256(record_id)[:2], 16) < 26。
Fixed parameters
体积切换阈值 2 GB/端点/日;确定性抽样比例 ≈10.16%(前两位十六进制 <0x1A,规则公开可验证);保留期 24 个月;每日随机抽 1% 文件重算、每周日全量重算、每次发布前全量重算。
Sample size
100% 文件进 manifest;每日抽 1% 重算,每周日与每次发布前 100% 重算;金标准文件 5 个,每次全量校验必须全部命中。
Control
归档流程中混入 5 个内容与 sha256 事先公布的"金标准"文件,每次全量校验必须命中——用于验证校验流程本身没坏(校验器的自校验)。
Statistical treatment
不适用统计推断。只报校验通过率与任何一次失败的完整处置记录(失败必须公开,不得静默重跑掩盖)。
Reproducibility check
第三方下载数据集后可独立重算每个文件的 file_sha256/content_sha256、manifest 与 daily_root,并(若启用 OTS)验证时间戳证明;金标准文件让第三方同时验证其自身校验流程;datapackage.json 可被 Frictionless 工具直接校验。
Known pitfalls
gzip 头里的 mtime 会让相同内容压出不同字节流,第三方从同样的记录重新压缩后哈希对不上——这是最常见的坑,解法是同时记录未压缩内容的 content_sha256(或统一用 gzip -n);对象存储的最终一致性会让刚写的文件读不到,校验需重试;最严重的概念错误是把校验和当成"数据正确"的证明——它只证明未被篡改。
Risk
未脱敏发布是不可逆事故(数据一旦公开无法收回),因此脱敏扫描 + 两人签字是硬性流程,不接受"截稿前先发后补"。

SUPPORTS / 确立发布的数据与采集当时的字节完全一致、未被事后修改,并(启用 OTS 时)给出不晚于某时刻已存在的第三方可验证时间证据。

DOES NOT SUPPORT / 校验和与时间戳不能确立测量本身是正确的——它们只锁住"我们发布的就是我们采到的"。测量效度由 RIG-06/RIG-07 的校准与控制图承担。我们自己的方法页、数据说明与签字记录同属文档类证据:它们无法确立任何一条数据的真伪,只有原始 body + 校验和 + 可复现的仪器让第三方重算,才谈得上确立。

EVIDENCE RETAINED / manifest.jsonl · roots.csv(append-only) · datapackage.json + SCHEMA.md · redaction_ruleset.yaml + 扫描报告 · release_signoff.csv 与 release_blockers.csv
RECORDED FIELDS (8)
  • file_path / bytes / record_count / string / bytes / count / 归档单元
  • file_sha256 / content_sha256 / hex64 / 分别锁字节流与未压缩内容
  • first_ts / last_ts / ISO8601(UTC,ms) / 文件时间跨度
  • node_id / platform / endpoint_slug / string / 归档定位
  • body_retention_mode / sample_rule_id / enum(full/sampled) / string / 体积策略标注
  • daily_root_sha256 / ots_proof_path / hex64 / string / 未做 OTS 写 null
  • redaction_ruleset_version / dataset_version / license / string / 版本绑定
  • superseded_by / string / 被新版取代时填 DOI,否则 null
SPECIFICATION
RIG-06

测试台校准实验:噪声地板、注入线性度、网络位置剥离与 MDD

  1. 建立三类参照:R1 回环参照——在 node-E 部署我们自己的最小 echo 服务(返回固定大小 JSON,内含服务端收发时间戳与可配置的人工处理延迟),两端时钟均受 RIG-02 纪律约束,服务端处理时间已知,这是唯一真值已知的参照;R2 静态对象参照——某大型 CDN 上体积固定的静态对象(选定后不再更换,记录 URL、字节数、ETag),代表典型 CDN 路径;R3 授时参照——国家计量机构公开 NTP。
  2. 噪声地板:对 R1/R2 每 60 s 采样 ×14 天/节点,按节点、参照、时段分别计算稳健离散度 σ_rig = 1.4826 × MAD(rtt_ms)。必须分时段给出(欧洲晚高峰与凌晨差异很大),禁止只报一个全局数字。
  3. 分裂样本:同机房两台同规格实例(node-A 与 node-A′)同时采同一被测端点,差值序列的稳健标准差即 σ_split(同城同网仪器噪声)。
  4. 跨节点方差:node-A 与 node-B(不同 AS/城市)同时采同一端点得 σ_cross;网络位置的方差贡献 ≈ sqrt(max(0, σ_cross² − σ_split²))。
  5. 进程级噪声:同一节点两个独立客户端进程同时采同一端点得 σ_proc;用户态时间戳误差 u_ts 取自 RIG-02 的抓包对照。
  6. 网络路径剥离(关键差分设计):为每个平台选一个处理成本近似最小的公开端点作 ref_e(p),定义平台侧增量 Δ_platform(p,e) = q50(rtt(p,e)) − q50(rtt(p, ref_e(p)))。跨平台只比较 Δ,不比较绝对 rtt;绝对 rtt 只在同节点同时段并附路径披露时报告。
  7. 位置无关性检验:分别用 node-A 与 node-B 的数据对平台排序,算 Kendall τ;τ <0.6 或两节点给出显著相反结论 → 该指标降级为"位置相关观测",禁止发布为平台属性。
  8. 注入线性度(校准的校准):向 R1 服务端注入已知人工延迟 5 / 20 / 50 ms 三档,每档 ≥1,000 次,检验仪器能否把注入量测回来,报告 recovered − injected 的 p50 与 95% CI。若注入 5 ms 测不出来,则小于 5 ms 的平台差异一律不得报告——这是仪器的量程与线性度声明。
  9. 冷热连接影响:对 R1 在冷/热连接下各 ≥2,000 次采样,量化连接状态对 rtt 的贡献,据此确认 RIG-03 的预热参数是否足够。
  10. 算 MDD 并写进发布规则:观测差异的 95% CI 跨 0 → 报"在本测试台分辨力内不可区分",禁止排名。
  11. 汇总为 calibration_report 随数据集发布,并公开 echo 服务源码与容器 digest;在限流保护下对外提供一个公共校准 echo 端点,使第三方能把自己的测试台指向同一参照、算出自己的 σ_rig 与我们对比。
Quantity measured
σ_rig = 1.4826·MAD(rtt);σ_eff = sqrt(σ_rig² + σ_proc² + u_ts²);MDD = 1.96·σ_eff·sqrt(2/n)(均值差;中位数差以移动块 bootstrap 的 95% CI 半宽为准,二者取大);网络位置贡献 = sqrt(max(0, σ_cross² − σ_split²));Δ_platform(p,e) = q50(rtt(p,e)) − q50(rtt(p,ref_e(p)));线性度偏差 = median(recovered − injected)。
Fixed parameters
采样 60 s ×14 天;注入档位 5/20/50 ms(覆盖我们预期的平台差异量级,且跨一个数量级以检验线性);Kendall τ 门槛 0.6;bootstrap 10,000 次、BCa 区间、块长 = ACF 首次跌破 1/e 的滞后 ×2(块长必须由数据决定,不得凭感觉设定)。
Sample size
R1/R2 每节点每参照 ≥20,000 点(60 s ×14 天);split-half、cross-node、process-AB 各 ≥10,000 配对点;注入实验每档 ≥1,000 点(三档合计 ≥3,000);冷/热连接各 ≥2,000 点。样本量按 MDD 公式反推:欲把 MDD 压到 σ_eff 的 5% 以下,n 需 ≈3,000 以上,故上述量级同时满足功效要求。
Control
R1 是唯一真值已知的正对照(我们控制服务端);R2 是我们不控制的第三方端点对照,二者 σ 之差反映服务端不可控性的量级;注入实验提供已知答案的正对照,直接检验"仪器能不能测出真实存在的差异"。
Statistical treatment
全部用稳健统计(中位数、MAD、分位数),不做正态假设。CI 一律用移动块 bootstrap 以保留自相关(延迟序列强自相关,朴素 bootstrap 会把 CI 算得窄到荒谬)。跨节点排序一致性用 Kendall τ 及其 bootstrap CI。异常值不删除,用稳健估计量处理并单独发布异常清单及其 outcome_class。
Reproducibility check
公开 echo 源码与镜像 digest,并对外提供公共校准 echo 端点,使第三方能对同一参照算出自己的 σ_rig 与我们横向对比——这是跨实验室可比性的桥梁。注入实验的全部原始数据公开,第三方可重算我们的线性度;若他们证明我们在 5 ms 档测不回来,我们所有小于 5 ms 的差异结论都应被推翻,这正是我们希望被检验的方式。
Known pitfalls
用被测平台自身的端点当"稳定参照"是循环论证;用 min(rtt) 当噪声地板会低估噪声;忽略自相关会让 CI 荒谬地窄;σ_rig 不分时段会掩盖晚高峰的真实分辨力;CPU steal 高的时段必须单列;ref_e(p) 的选择本身是可争议的建模决定,不公开就等于把主观选择藏进了结论。
Risk
公共校准端点会引来滥用流量,须限流并声明 best-effort、不承诺可用性,其成本(约 €5-10/月)计入基础设施预算。校准全程只用公开端点,不使用账户端点,避免账户状态污染仪器基线。

SUPPORTS / 确立仪器的噪声地板、可恢复的最小延迟量级(线性度)、网络位置的方差贡献,以及跨平台比较的最小可判别差异——这构成"差异来自平台而非仪器"的直接证据链。

DOES NOT SUPPORT / 不能确立小于 MDD 的差异不存在,只能说在本仪器分辨力内不可判别(这两句话必须严格区分)。不能把参照端点的稳定性外推到被测平台端点(后者有缓存、限流与动态计算)。不能确立 Δ_platform 就等于平台内部处理时间——Δ 中仍含端点复杂度差异与边缘缓存差异。任何声称"我们的测量精确到 X 毫秒"的文档类陈述(包括我们自己的方法页)都不能确立分辨力,只有注入实验的原始数据能。

EVIDENCE RETAINED / calibration_report(分节点/分参照/分时段) · echo 服务源码 + 容器 digest · 注入实验全部原始数据 · split-half / cross-node / process-AB 配对序列 · 冷热连接对照数据
RECORDED FIELDS (10)
  • calib_run_id / node_id / reference_id / string / string / enum(R1/R2/R3) / 校准运行定位
  • time_bucket / connection_state / n / enum / enum / count / 分时段分连接状态统计
  • rtt_p50_ms / rtt_p95_ms / mad_ms / ms / 稳健描述统计
  • sigma_rig_ms / sigma_split_ms / sigma_cross_ms / sigma_proc_ms / ms / 四类方差分量
  • u_ts_us / µs / 来自 RIG-02 抓包对照
  • injected_delay_ms / recovered_delay_ms / recovery_bias_ms / ms / 线性度实验
  • recovery_ci95_low_ms / recovery_ci95_high_ms / ms / 块 bootstrap BCa
  • mdd_ms / ms / 该指标该时段的分辨力
  • kendall_tau_cross_node / ratio(-1..1) / <0.6 则降级
  • verdict / enum(pass/degrade/fail) / 是否允许跨平台发布
SPECIFICATION
RIG-07

仪器漂移的持续监控、不确定度预算合成与数据放行判据

  1. 每日校准套件:每天固定 UTC 时刻(相位随机化 ±15 min)对 R1/R2 各跑一轮 ≥500 点短校准,产出当日 σ_rig_daily、rtt_p50_daily、u_clock_p95、u_ts_p95、steal_p95。
  2. 控制图:对每个校准量建 EWMA 控制图,λ=0.2、L=3,中心线与 σ 用前 14 天基线期估计;基线期数据必须人工确认无异常事件后方可采用。
  3. 失控判定:EWMA 越出控制限,或单点越出 3σ,或连续 7 点同侧 → 该日标 out_of_control,当日全部被测数据标 quality_flag=suspect。
  4. suspect 数据处理:不删除,默认不进入主分析,但必须在数据集中保留并标注,并在方法页披露被排除的样本量与占比。若某平台的 suspect 占比显著高于其他平台,这本身是"我们对该平台的观测质量更差"的事实,必须披露,不得静默。
  5. 变更单纪律:任何仪器改动(内核、镜像、客户端、配置、节点迁移)都开变更单,记录变更前后各 ≥3 天的校准量并做断点检验;跨变更点的时间序列必须在图上标注断点,禁止无标注地拼接。
  6. 不确定度预算:为每个发布指标列分量表——u_clock(B 类,来自 root distance)、u_ts(A 类,抓包对照)、u_net(A 类,参照端点离散度)、u_proc(A 类,进程 A/B)、u_sample(A 类,块 bootstrap)、u_miss(B 类,来自 RIG-04 最坏情况界的半宽)——合成 u_c 并给出扩展不确定度 U(k=2)。
  7. 发布门槛(全部满足才放行):当日 in_control;envelope 完备率 = 1.000;归档校验通过率 = 1.000;丢样率 ≤0.10;跨平台比较类的配对成功率 ≥0.95;|观测差异| > max(MDD, U_Δ);跨平台排名类的 Kendall τ ≥0.6。任一不满足 → 降级发布(只发单平台序列或只发事实描述)或不发布。
  8. 放行记录:每次发布生成 release_gate.csv(逐项门槛的实际值与判定)与两人签字的 release_signoff.csv,随数据集一并公开——这样读者能直接查出我们是否在门槛不满足时仍发布了。
  9. 周期重校准:项目周期内至少中期完整重跑一次 RIG-06 全套,比较 σ_rig 与线性度是否漂移,结果写入 calibration_history.csv。
  10. 失效公开:事后发现某时段仪器有缺陷 → 发布勘误、把该时段数据标 superseded(不删除),并在方法页与 CHANGELOG 同步。
Quantity measured
EWMA: z_i = λ·x_i + (1−λ)·z_{i−1};控制限 = μ₀ ± L·σ₀·sqrt(λ/(2−λ)·(1−(1−λ)^{2i}));u_c = sqrt(Σ u_i²);U = k·u_c,k=2(约 95% 覆盖);发布判据:|Δ_observed| > max(MDD, U_Δ)。
Fixed parameters
λ=0.2、L=3(对中等幅度漂移敏感的常用参数);基线期 14 天;每日校准 ≥500 点(5 分钟内跑完,成本可忽略);k=2;变更前后各 ≥3 天。
Sample size
每日 1 个控制点 ×项目周期 42-56 天;基线期 14 天(14 个控制点,为 EWMA 参数估计的下限,须在方法页注明基线偏短带来的控制限不确定性);变更前后各 ≥3 天;每日校准每参照每节点 ≥500 点。
Control
控制图对 node-A、node-B、node-E 三条线同时运行:三条同时失控多半是外部共同原因(上游授时或互联网事件),只有一条失控则是该节点问题——共模/差模判别让"是不是我们坏了"有可操作的答案。
Statistical treatment
EWMA 控制图 + 变更点检验(前后分布差异的块 bootstrap CI);不确定度按 GUM 风格分 A 类/B 类合成。所有发布数值以"值 ± U (k=2)"或区间形式呈现,禁止裸点值。
Reproducibility check
公开每日校准原始数据、控制图参数与脚本、release_gate.csv;第三方可重算控制图并检验我们是否真的按门槛执行——如果某次发布的 gate_result 不满足门槛却仍发布了,读者可以直接抓到。这是我们对自己设的可证伪约束。
Known pitfalls
用被污染的基线期建控制图会把异常常态化,基线期必须人工确认;把 suspect 数据静默删除会制造存活者偏倚,必须保留并披露;不确定度只报统计项而漏掉时钟项与丢样项会严重低估 U;控制图报警疲劳会导致门槛名存实亡,因此必须自动化并写进发布流水线而非靠人自觉。
Risk
无外部风险。真正的风险是截稿压力下放宽门槛,因此用两人签字 + 公开 gate 记录作为制度约束;任何一次"例外放行"都必须在方法页记名说明理由。

SUPPORTS / 确立哪些时段的数据可以进入发布、每个发布数值的扩展不确定度,以及仪器在项目周期内是否发生漂移。

DOES NOT SUPPORT / 不能确立失控时段平台的真实表现——此时唯一诚实的结论是"无法判定",既不能说平台正常也不能说异常。不能确立不确定度预算已穷尽所有分量:未识别的系统误差按定义不在预算内,只能靠 RIG-06 的正对照和第三方复现来暴露。我们自己的方法页、门槛声明与签字记录都是文档类证据,它们无法确立我们确实执行了门槛——只有公开原始数据与 gate 记录、让第三方重算,才能确立这一点。

EVIDENCE RETAINED / daily_calibration.csv · control_chart.csv 与控制图脚本 · uncertainty_budget.csv · change_log.csv 与断点检验结果 · release_gate.csv 与 release_signoff.csv
RECORDED FIELDS (8)
  • date / node_id / metric / ISO8601(date) / string / enum / 控制点定位
  • daily_value / ewma_value / center_line / ucl / lcl / ms 或对应量纲 / 控制图五元组
  • in_control / rule_violated / bool / enum / none/ewma/3sigma/run7
  • quality_flag / excluded_record_count / enum(ok/suspect) / count / suspect 保留不删
  • u_clock_ms / u_ts_ms / u_net_ms / u_proc_ms / u_sample_ms / u_miss_ms / ms / 预算分量,无该项写 null
  • u_c_ms / k / U_ms / ms / 无量纲 / ms / 合成与扩展不确定度
  • mdd_ms / gate_result / ms / enum(pass/degrade/block) / 放行判定
  • signoff_a / signoff_b / signoff_ts / string / string / ISO8601(UTC,ms) / 两人签字
SPECIFICATION
RPT

Reporting rules for this benchmark

How results from this protocol may and may not be described once a dataset exists. Author: Axial Proof Editorial Team. Independent reviewer: Axial Proof Review Team.

CONSTRAINTS

每篇引用本测试台数据的稿件必须标注 rig_version、node_id、采集时段、样本量与 U(k=2),并引用具体版本的数据集 DOI,禁止引用"最新版"。表述红线:(1) 观测差异未超过 max(MDD, U_Δ) 时只能写"在本测试台分辨力内不可区分",禁止排名、禁止用"略优/略差"暗示方向;(2) 禁止用绝对 RTT 给平台排名,跨平台只用同平台内差分 Δ_platform,若必须报绝对值须同时披露节点、ASN、城市与时段;(3) 单节点观测的不可用事件必须写"从 node_X 观测到",禁止写"平台宕机";跨节点交叉判为 node_side 的事件禁止出现在平台可用性结论里;(4) 校准失控时段的数据必须显式排除并在稿件中说明排除量与占比,suspect 占比在平台间不均衡时须专门说明;(5) 遇到 WAF 挑战一律如实发布为观测结果,不得描述为"已解决"或"绕过后测得",也不得据此推断平台的防护策略意图;(6) 地区受限如实记录,禁止用 VPN 或代理伪装地区后声称"该地区可用"。欧盟视角的写法:可指出欧盟框架下(MiCA 对 CASP 的运营韧性与信息披露提出要求)第三方可复现的外部观测具有公共价值,但本基准只提供从两个欧盟节点看到的技术观测,不做任何合规判定、不评价牌照状态、不暗示某平台是否满足监管要求;注册类事实(如某主体的 FINTRAC MSB 注册)与本测试台的技术观测分属不同证据类别,禁止在同一句话里混谈或互相佐证。对新上线平台(如 baerx.io)与成熟平台并列时,必须披露样本量差异、端点变更频率差异,以及新平台在观测窗口内可能尚未经历完整市场周期——这些是解释差异时必须给读者的限定条件,不是可选的附注。最后,本页所有实测值在执行团队填入前一律留空,任何示例数字都不得出现在发布稿中。