# speedex 导出数据字典（schema v3）

- 生成口径出处：plugin.md §0 / docs/fair-comparison.md / fee-enrich sidecar v2 (priority/gas/tip/MEV evidence) + per-run push/receipt/t+N latency
- 数据源：artifacts/public 脱敏镜像（凭证/授权体/余额已删除；地址与 hash 短化；出口 IP 粗化 /24）。
- 出口分列：`exit_*` = observer（EU 本机）出口；`product_egress_state`/`product_proxy_id`/`product_proxy_name`（列尾）= Chrome 产品出口身份（不含 IP/host/凭据）。
- 导出格式：tidy 长表 CSV（/api/export/runs.csv，一行一 trade，主力分析面）、每轮宽表
  CSV（/api/export/rounds-wide.csv，一行一轮，平台间对比面）、单批嵌套 JSON
  （/api/export/batch/{requestId}，chains→rounds→trades）、NDJSON（/api/export/all.ndjson，一行一轮组）。

## tidy 长表列（runs.csv）

| 列 | 定义 |
| --- | --- |
| `request_id` | 批次 ID（一次 UI 触发；跨链共享同一 request_id） |
| `saved_at` | cell 文档保存时间（ISO8601 UTC） |
| `chain` | bsc | robinhood | solana |
| `exit_label` | 出口地区标签（country / region / city 拼接；缺探测为空） |
| `exit_country` | 出口国家/地区（networkEnv.exit.country） |
| `exit_region` | 出口一级行政区（networkEnv.exit.region） |
| `exit_city` | 出口城市（networkEnv.exit.city） |
| `exit_isp` | 出口 ISP（egress class；非精确定位） |
| `exit_ip` | 出口 IP 粗化到 /24（脱敏镜像已粗化；导出不还原精确 IP） |
| `round` | 轮序号（1..N）；同 (chain, round) = 一组 |
| `alignment` | parallel（barrier 对齐，同轮=三平台同时点击）| sequential（同轮但非同时） |
| `dispatch_skew_ms` | 组内派发偏差：barrier dispatch-issue skew（缺则各平台 click 源时刻 max−min）；sequential 轮的该值不代表同时性 |
| `platform` | gmgn | okx | padre | binance | fomo |
| `ok` | 本笔 trade 平台侧成功（bool） |
| `outcome` | confirmed | reverted | failed | dry | unknown（canonical 口径：confirmed 须 tx 形状 + receipt 成功，producer ok 单独不算；receipt=0 优先判 reverted） |
| `e2e_ms` | 端到端推送延迟：click_dom → 平台 canonical 成功事件（口径见 e2e_basis；plugin.md §0.2/§0.4） |
| `e2e_basis` | GMGN=click_dom_to_tg_success_ms / OKX=click_dom_to_first_strict_plugin_endpoint_ms（四族最早严格端点，缺→L1a 兜底）/ Padre=click_dom_to_done_ms（txnStatus DONE）/ Binance=click_dom_to_first_confirm_push_ms / FOMO robinhood=click_dom_to_relay_success_ms（Relay success 帧，含桥接结算；WS 静默期回退 click_dom_to_swap_record_ms——swaps 轮询本轮订单新记录，订单 id 绑定）、solana=click_dom_to_swap_record_ms（swaps 轮询新记录——DFlow 同链，≈3s 轮询量化） |
| `rankable` | 可进排名（bool）：confirmed 且 e2e_ms 有值且 basis 非 fallback 且 identity complete（identity.platforms[platform].accountMatch===true；identity incomplete——如 fomo 恒 false——或旧批缺 identity 一律 false）且非 padre 风险确认轮（risk_modal_confirm=true 的轮 click 锚指标含 harness 确认开销，不得与普通轮混排）且过逐指标资格门（与聚合 isMetricEligibleFor 同源：严格平台关联 + 账户/token/金额证明 + canonical 结局；R27 起不再只凭面值）。HK 代理 vantage 的 proxy_request_to_platform_success_ms 在通过 resolvePushForRun 身份/成功/时钟核验后同样可排名；false 行不得进排名 |
| `rankable_reason` | rankable=false 的原因（有界枚举：identity-incomplete / risk-modal-confirm / outcome-not-confirmed / e2e-missing / basis-fallback / metric-not-registered / account-token-amount-proof-failed / canonical-outcome-not-eligible / metric-proof-failed / historical-browser-display-only）；rankable=true 留空（列尾追加） |
| `click_to_block_ms` | 上链延迟：click 时刻 → 交易所在 block/slot 时间（exact 门通过才作数；plugin.md §0.2 t+N）。R27 起 exact 标志本身过完整证明门（membership + block identity + anchorUnique + canonical 结局）——面值 true 但证明失败的行降级 block_exact=false（实测值保留、不作 exact 统计） |
| `quote_display` | 扣费报价展示，与详情页共用计算；{platform}_quote_display 为宽表同值 |
| `platform_fee_display` | 平台 fee 百分比展示，保留推断/待归因/未归因标记；{platform}_platform_fee_display 为宽表同值 |
| `observed_head_json` | 与 JSON chainLatency.observed 和详情相同的观测块距对象（version=1）；宽表 {platform}_observed_head_json 同值。独立于 exact/estimate，不参与排名 |
| `execution_json` | JSON trade.fees.execution 同值：十进制投入、实收、费用金额、费率与证据归因；百分比按 4 位小数向下截取；{platform}_execution_json 为宽表同值；按批次与完整交易关联，缺失不取其他交易补齐 |
| `slots` | 交易落在点击后第几个 slot（Sol）/ block（EVM）——exact 值 |
| `block_exact` | exact gate 是否通过（bool）：membership + block identity + anchorUnique + canonical 结局全过才 true（R27 起与聚合 isMetricEligibleFor 同源，不再只凭 runner 面值） |
| `block_estimate` | 该行上链数字是否为估算（bool）：estimate ms/blocks/slots 任一有限数值才算估算证据（0 是实测值算；null/NaN/Infinity 不算；仅 method/ambiguousReason 不构成证据——exact 行 producer 也落 method，NR-11 起不再仅凭 method 判 true）；估算明细在 JSON chainLatency.estimate |
| `block_estimate_bound` | 估算类别（2026-09-12 列尾追加，全表严格列尾，在 observed_head_json 之后；与 JSON chainLatency.estimate.bound 同值）：upper = 量化上界（BLOCKTIME-STRADDLE straddle：raw<0 ≤ raw+uncertainty 的同秒量化假象，estimate_ms 为上界值，展示 ≤ 前缀）；空 = 中点估计（≈）或非估算行。枚举外生产值一律按中点导出（不当上界）；两类不得混合统计，均不排名 |
| `uncertainty_ms` | 估算不确定度（±ms；仅估算行） |
| `receipt_ms` | click → receipt/signature status 首次被观察（observer latency，非出块时间；L3） |
| `receipt_status` | 1=成功 0=revert null=未观测 |
| `tx_hash` | 完整 hash/signature 加 ?full=1 可得（2026-08-25 起全来源开放，无 loopback 限制）；默认短化标识（脱敏镜像） |
| `buy_usd` | 每笔买入 USD 金额 |
| `live` | true=真实资金 false=dry |
| `schema_version` | artifact schema 版本 |
| `code_revision` | 采集时 harness 代码修订 |
| `gas_mode` | 交易费机制：legacy（无 baseFee，gasPrice 全付）| eip1559（base+priority）| sol（SOL 签名费+优先费）；缺 sidecar 留空（列尾追加） |
| `base_fee_gwei` | EVM 1559 区块 baseFeePerGas（gwei；legacy/无 baseFee 链为 0）；Sol 行留空（列尾追加） |
| `effective_gas_price_gwei` | EVM 实际支付单价 effectiveGasPrice（gwei = base+priority；legacy=gasPrice）；Sol 行留空（列尾追加） |
| `priority_fee_gwei` | EVM 优先费（gwei，3 位小数字符串，来自 sidecar perRound.gwei）；Sol 行留空 |
| `priority_fee_sol` | Sol 优先费（SOL，6 位小数，sidecar perRound.prioritySol = meta.fee − 基础签名费）；EVM 行留空 |
| `priority_fee_wei` | EVM 优先费精确值（wei/gas，sidecar priorityPerGasWei）；Sol 行留空 |
| `priority_fee_lamports` | Sol 优先费精确值（lamports，sidecar priorityLamports）；EVM 行留空 |
| `base_fee_sol` | Sol 基础签名费（SOL = 5000 lamports×签名数）；EVM 行留空（列尾追加） |
| `meta_fee_sol` | Sol meta.fee 总额（SOL；meta.fee = 基础签名费 + 优先费——优先费 = meta − base；tip/bribe 是独立的系统转账，不从 meta.fee 再减一次，口径见 fee-math）；EVM 行留空（列尾追加） |
| `gas_used` | EVM receipt.gasUsed；Sol = CU 实际消耗（unitsConsumed，gas used 类比；缺证据留空） |
| `cost_native` | 本笔链上总成本（6 位小数，不含买入本金）：EVM = BNB/ETH total gas cost（totalCostNative）；Sol = costSol = meta.fee（基础+优先）+ tip/bribe + 平台费转账（wrap/本金与一次性租金押金不计入）。FOMO 腿 fee payer 是 solver（非用户），该值是 solver 链上成本而非用户支出（归因见 trade.fees.payerRole / CSV payer_role 列） |
| `cost_wei` | EVM 总成本精确值（wei）；Sol 行留空 |
| `cost_lamports` | Sol 总成本精确值（lamports；组成同 cost_native：meta.fee + tip/bribe + 平台费转账）；EVM 行留空 |
| `tip_sol` | Sol tip/bribe（SOL，6 位小数，sidecar bribeSol）。EVM 无 tip 概念，留空（不发明 0；sidecar 实测 0 才写 0.000000） |
| `tip_lamports` | Sol tip/bribe 精确值（lamports）；EVM 留空 |
| `tip_label` | known（静态表命中，含平台自有 tip 账户）| heuristic（历史遗留值：未知目的地按金额启发式——2026-09-07 G03 起新 sidecar 不再产生，未知用途一律待归因）| 空（无 tip / EVM） |
| `mev_tip_evidence` | bool：本轮 tip 是否打到已知公开 MEV-relay 账户（sidecar 静态表命中且 label 为 jito/bloxroute/nextblock/temporal/nozomi/astralane）。heuristic 与未知目的地 → false；平台自有收款账户（okx-tip / gmgn-tip，静态但非公开 relay）→ false。这是链上 relay tipping 证据，不是产品「防夹」开关，导出不读取 UI 设置。缺 sidecar / EVM → 空（不是 false） |
| `push_latency_ms` | click → 平台成功推送（与 e2e_ms 同值；hero/绿槽消费的 per-run canonical 段，口径见 e2e_basis） |
| `receipt_latency_ms` | click → receipt 首次被观察（与 receipt_ms 同值；L3 observer latency，非出块时间）；起点锚口径跨平台异质，见 anchor_basis 列 |
| `anchor_basis` | receipt 延迟（L3）起点锚口径（2026-09-07 列尾追加，严格列尾）：dispatch-click = 派发点击（Node 点击指令发出时刻 marks.click/tClick）→ 首次回执观察；dom-click = 校准 DOM 点击（页面 trusted click 源时刻 marks.click_dom）→ 首次回执观察。GMGN/Padre = dispatch-click；OKX/Binance = dom-click 优先（DOM 点击缺失回退派发锚的 run 标 dispatch-click）。空 = 旧数据无标注（不反填不发明）——跨平台比较 receipt_latency_ms 前先对齐本列口径（click→click_dom 间隔只进 dispatch-click 侧） |
| `block_tn` | exact t+N 块/slot 计数（与 slots 在 exact 时同值）；非 exact 留空 |
| `click_ts` | 点击事件毫秒时间戳（events/click 或 tClick；epoch ms） |
| `click_dom_ts` | DOM click 事件毫秒时间戳（marks.click_dom；epoch ms） |
| `push_ts` | 直连 canonical 推送时刻（click_dom_ts + e2e_ms；epoch ms）；HK 单调时钟不换算为 epoch，留空 |
| `receipt_ts` | 回执首次观测毫秒时间戳（优先 marks.rpc_receipt 真值——它测量的正是这一刻；缺 mark 时按该行 anchor_basis 声明的起点补锚：dom-click→click_dom_ts、dispatch-click→click_ts，+receipt_ms；anchor_basis 缺失/未知 → 留空不猜（RHF-13 起——旧实现恒以 DOM 锚优先，dispatch-click 行会多出 click→click_dom 间隔）；epoch ms） |
| `events_json` | 事件时间线 JSON 数组（public 镜像已脱敏：仅 {name,t}） |
| `marks_json` | 事件毫秒时间戳映射 JSON（public 镜像 marks，数值字段） |
| `fee_asset` | 费用归因资产（2026-09-07 列尾追加，在 gas 五列之后）：用户支出资产 native | usdc（FOMO 双腿 fill 由 solver 以 usdc 网络费结算）；缺 sidecar/未关联/旧 sidecar 缺标记 → 空（未知归属，不冒称用户费用）。与 JSON trade.fees.feeAsset 同值 |
| `payer_role` | 链上 fee payer 角色（列尾追加）：user | solver——FOMO 双腿（robinhood Relay / solana DFlow）fill 由 solver 付款，其费用是 solver 链上成本**不是用户支出**；空 = 未知归属。与 JSON trade.fees.payerRole 同值 |
| `cost_cross_check` | payer 差额−成本交叉核对（列尾追加；仅 Solana 有此核对）：ok | mismatch(±lamports) | n/a——**非 ok 需人工复核**（mismatch 轮次成本未经独立校验相符）；空 = 未回查/未关联或 EVM 不适用。与 JSON trade.fees.costCrossCheck 同值 |
| `gas_limit` | 交易本体 gas limit（eth_getTransactionByHash.gas，列尾追加，在 anchor_basis 之后）——用户出价面：实际用量见 gas_used，限额是本笔授权上限；缺证据/旧 sidecar → 空（不发明）。与 JSON trade.fees.gasLimit 同值 |
| `tx_gas_price_gwei` | 交易本体 gasPrice（legacy 机制，gwei；1559 行留空——1559 看出价上限两列）。与 JSON trade.fees.txGasPriceGwei 同值 |
| `max_fee_gwei` | EIP-1559 maxFeePerGas 出价上限（gwei，列尾追加）；legacy 行留空。与 JSON trade.fees.maxFeeGwei 同值 |
| `max_priority_fee_gwei` | EIP-1559 maxPriorityFeePerGas 出价上限（gwei，列尾追加）；legacy 行留空。与 JSON trade.fees.maxPriorityFeeGwei 同值 |
| `cu_limit` | Solana 交易 CU（compute unit）限额（有效上限优先，列尾追加）——Sol 的 gas limit 类比；EVM 行留空（EVM 对应 gas_limit）。与 JSON trade.fees.cuLimit 同值 |
| `tx_gas_price_wei` | 交易本体 gasPrice 精确整数 Wei（legacy 机制；RHF-14 列尾追加，全表末三列——在 product_* 之后）——gwei 列仅三位小数（1 wei 粒度损失），精确比对用本列；1559/Sol 行留空。与 JSON trade.fees.txGasPriceWei 同值 |
| `max_fee_wei` | EIP-1559 maxFeePerGas 出价上限精确整数 Wei（列尾追加）；legacy/Sol 行留空。与 JSON trade.fees.maxFeeWei 同值 |
| `max_priority_fee_wei` | EIP-1559 maxPriorityFeePerGas 出价上限精确整数 Wei（列尾追加）；legacy/Sol 行留空。与 JSON trade.fees.maxPriorityFeeWei 同值 |
| `product_egress_state` | Chrome 产品出口状态（2026-09-07 列尾追加，批次级，与 JSON chains[].productEgress.state 同值）：direct = 批始核验直连（chrome.proxy mode=direct 读回）| proxied = 经已保存代理条目出站 | restore-failed = 代理端点在但认证恢复失败（证据失败态，不与健康代理同 cohort）| unknown = 批始无出口状态证据（不推定直连）；空 = 旧批未记录（不反填、不推定直连）。与 exit_*（observer 本机出口）分列——代理批与直连批不是同一 cohort |
| `product_proxy_id` | 本批生效代理的已保存条目 id（仅 proxied / restore-failed 有值；direct/unknown/未记录留空）。条目 id 是无凭据配置身份（docs/proxy.md R14），不是 URL/host；跨批合并前须同 id |
| `product_proxy_name` | 本批生效代理条目的人读名称（批次时刻快照，事后删条目不丢名）。仅人读标签：条目名为 URL/host:port 形或含凭据形（默认名 = 去凭据代理 URL）时不透出（留空）；不导出出口 IP/host |
| `risk_modal_confirm` | padre 风险确认轮标志（2026-09-08 RHF-11 二轮列尾追加，全表严格列尾，在精确 Wei 三列之后；与 JSON trade.riskModalConfirm 同值）：true = 该轮首击被风险弹窗吞掉、确认钮才是真实提交，click 锚指标（L1a/L1b/L3）含 harness 检测+确认开销——rankable=false（rankable_reason=risk-modal-confirm）且与普通轮隔离（聚合 stats/batch-index p50/配对同口径），原始时长保留供单独展示；空 = 非确认轮/非 padre |
| `block_height` | 交易所在块高度（2026-09-08 用户要求列尾追加，在确认标志列之后；与 JSON trade.block.height 同值）：EVM = receipt blockNumber，Solana = receipt slot；未确认/缺 enrich 留空，不反填 |
| `block_timestamp_ms` | 交易所在块时间 epoch ms（2026-09-08 用户要求列尾追加；与 JSON trade.block.tsMs 同值）：口径随 trade.block.tsMethod（如 header-seconds-quantized = 秒级量化估计，非 exact 毫秒）——metricVersion 4 不产生新的 tsExact=true；旧批 true 也不代证跨时钟准确度（仍需原有身份/锚门）；缺 enrich/旧批留空，不反填 |
| `position_tx_index` | 交易在块/slot 内的 0 基下标（2026-09-15 列尾追加，全表严格列尾，在 block_estimate_bound 之后；与 JSON trade.fees.positionTxIndex 同值）：EVM = receipt.transactionIndex；Solana = getBlock(slot) signatures 下标（**含 vote 交易**）。详情面 #N = 本值 +1。同一 exact-tx join 才取值（fee-enrich sidecar perRound；格来源/tx 不符/round 缺失或 error → 空，不取他笔补值）；旧批未回查留空，不反填 |
| `position_block_tx_count` | 块/slot 内交易总数（与 JSON trade.fees.positionBlockTxCount 同值；Solana signatures 长度含 vote 交易）；缺证据留空 |
| `position_error` | 块内位置缺失的诊断串（与 JSON trade.fees.positionError 同值）：如 tx-not-in-block-signatures / getBlock-failed:<截断错误>——**是缺失原因，不是位置事实**（null getBlock 不代表块内无此 tx）；导出前脱敏（地址/hash/JWT/base58 长串掩码）并截断 ≤120 字符。空 = 位置已有值或未记录原因——不证明位置已核验 |

## 每轮宽表列（rounds-wide.csv）

前 12 列与 tidy 相同（request_id / saved_at / chain / exit_* / round / alignment / dispatch_skew_ms），其后：

| 列 | 定义 |
| --- | --- |
| `{platform}_e2e_ms` | 该平台本轮 e2e_ms（缺席/未观测留空） |
| `{platform}_observed_head_json` | 本平台观测块距 JSON；与 chainLatency.observed 同值，缺失不回填，非物理精确耗时，不排名 |
| `{platform}_tplus` | 该平台本轮上链 t+N 面值（仅 exact；estimate 不冒充 exact） |
| `{platform}_rankable` | 该平台本轮 rankable（空=该轮无此平台样本） |
| `okx_minus_gmgn_e2e_ms 等差值列` | 平台间 e2e 差（正=前者更慢）；仅 alignment=parallel 且 aligned=true（barrier 实测对齐）且配对双方本轮均有对齐证据（逐平台 aligned=true——混合缺失/一侧无证据的对留空，R28 二轮）且两侧均 rankable 时填，sequential / aligned=false / aligned=null 一律留空 |
| `aligned` | 本轮 observed alignment 三态（列尾追加）：true=barrier 实测对齐 / false=显式对齐失败（skew 超限等）/ 空=无 barrier 证据；与 requested 语义（alignment 列）分开 |
| `{platform}_push_latency_ms` | 该平台本轮 push_latency_ms（与 {platform}_e2e_ms 同值） |
| `{platform}_receipt_latency_ms` | 该平台本轮 receipt_latency_ms（起点锚口径见 {platform}_anchor_basis） |
| `{platform}_anchor_basis` | 该平台本轮 L3 起点锚口径（dispatch-click | dom-click；2026-09-07 列尾追加，在每平台费用归因三列组之后；缺席平台/旧数据无标注留空，不反填） |
| `{platform}_block_tn` | 该平台本轮 exact t+N；非 exact / 缺席留空 |
| `{platform}_priority_fee_gwei` | 该平台本轮 EVM 优先费 gwei；Sol / 缺 sidecar 留空 |
| `{platform}_priority_fee_sol` | 该平台本轮 Sol 优先费 SOL；EVM / 缺 sidecar 留空 |
| `{platform}_gas_mode` | 该平台本轮交易费机制（legacy/eip1559/sol）；列尾追加（aligned 之后） |
| `{platform}_base_fee_gwei` | 该平台本轮 EVM 区块 baseFee gwei；Sol 行留空（列尾追加） |
| `{platform}_effective_gas_price_gwei` | 该平台本轮 EVM 实际支付单价 gwei；Sol 行留空（列尾追加） |
| `{platform}_base_fee_sol` | 该平台本轮 Sol 基础签名费 SOL；EVM 行留空（列尾追加） |
| `{platform}_meta_fee_sol` | 该平台本轮 Sol meta.fee 总额 SOL（= 基础签名费 + 优先费；tip/bribe 是独立转账不再减）；EVM 行留空（列尾追加） |
| `{platform}_cost_native` | 该平台本轮 cost_native |
| `{platform}_tip_sol` | 该平台本轮 Sol tip；EVM / 无 tip 留空 |
| `{platform}_tip_label` | 该平台本轮 tip_label（known|heuristic） |
| `{platform}_mev_tip_evidence` | 该平台本轮 mev_tip_evidence（链上 relay tipping 证据，非防夹开关） |
| `{platform}_click_ts` | 该平台本轮点击毫秒时间戳（epoch ms） |
| `{platform}_click_dom_ts` | 该平台本轮 DOM click 毫秒时间戳（epoch ms） |
| `{platform}_push_ts` | 该平台本轮 canonical 推送毫秒时间戳（epoch ms） |
| `{platform}_receipt_ts` | 该平台本轮回执观测毫秒时间戳（epoch ms） |
| `{platform}_events_json` | 该平台本轮事件时间线 JSON 数组（{name,t}，已脱敏） |
| `{platform}_marks_json` | 该平台本轮事件毫秒时间戳映射 JSON（数值字段，已脱敏） |
| `{platform}_tx_hash` | 该平台本轮 tx hash/签名（宽表，列尾追加；默认短化，?full=1 完整） |
| `{platform}_fee_asset` | 该平台本轮 fee_asset（2026-09-07 列尾追加，在每平台 gas 五列组之后；缺席/未关联留空） |
| `{platform}_payer_role` | 该平台本轮 payer_role（user|solver；solver 链上成本不是用户支出；空 = 未知归属） |
| `{platform}_cost_cross_check` | 该平台本轮 cost_cross_check（ok|mismatch(±lamports)|n/a；非 ok 需人工复核；空 = 未回查/EVM 不适用） |
| `{platform}_gas_limit` | 该平台本轮交易 gas limit（出价面上限；2026-09-07 列尾追加，在每平台归因三组之后；缺证据留空） |
| `{platform}_tx_gas_price_gwei` | 该平台本轮 legacy 交易 gasPrice gwei（1559 行留空） |
| `{platform}_max_fee_gwei` | 该平台本轮 EIP-1559 maxFeePerGas gwei（legacy 行留空） |
| `{platform}_max_priority_fee_gwei` | 该平台本轮 EIP-1559 maxPriorityFeePerGas gwei（legacy 行留空） |
| `{platform}_cu_limit` | 该平台本轮 Solana CU 限额（有效上限优先；EVM 行留空） |
| `{platform}_tx_gas_price_wei / {platform}_max_fee_wei / {platform}_max_priority_fee_wei` | 该平台本轮出价面精确整数 Wei 三列（RHF-14 全表严格列尾，产品出口三列之后；与 tidy 同名三列/JSON trade.fees.{txGasPriceWei,maxFeeWei,maxPriorityFeeWei} 同值；legacy 行仅首列、1559 行仅后两列、Sol/缺席/缺证据留空） |
| `product_egress_state / product_proxy_id / product_proxy_name` | 批次级产品出口三列（2026-09-07 全表严格列尾，非每平台；与 tidy 同名同义）：direct | proxied | restore-failed | unknown；空 = 旧批未记录（不推定直连）。代理批与直连批不同 cohort，宽表差值列只在同批内比较——跨批合并前须同 state 同 product_proxy_id |
| `{platform}_position_tx_index / {platform}_position_block_tx_count / {platform}_position_error` | 该平台本轮块内位置三列（2026-09-15 全表严格列尾，观测链头列组之后；与 tidy position_* 三列/JSON trade.fees.{positionTxIndex,positionBlockTxCount,positionError} 同值）：0 基下标 + 块内交易总数（Solana 含 vote 交易）+ 缺失诊断串（脱敏截断，非位置事实）；缺席平台/未关联/缺证据留空 |

## basis 语义（plugin.md §0.2 指标分层）

- **e2e（推送）**：click_dom（页面 trusted DOM click 源时刻，E2E 唯一合法起点）→ 与本轮严格关联的平台 canonical 成功事件。GMGN=TG 订单成功推送；OKX=first strict WS（eth_subscription status=1 / dex-across-order-info·dex-swap-order-info status=1 族最早关联者）；Padre=txnStatus DONE。
- **上链（t+N / click_to_block_ms）**：exact gate 要求 receipt blockHash 与所读 block 一致、block contains tx、tx.from 匹配期望账户、anchor unique；不满足只出 estimate 字段并带 uncertainty。
- **receipt_ms（L3）**：receipt 首次被观察到的 observer latency，含 RPC 轮询间隔，不是出块时间。起点锚跨平台异质（`anchor_basis` 列：dispatch-click=派发点击起点 / dom-click=校准 DOM 点击起点；空=旧数据未标，不反填）——跨平台比较前先对齐口径。

## 公平比较注意事项（必须遵守）

1. alignment=sequential 的同一轮不是同时发出——不得当并行（同时）对比使用；只有 alignment=parallel 且 aligned=true（barrier 实测对齐；aligned=false/空 = 对齐失败或无证据）且配对双方本轮均有对齐证据（逐平台 aligned=true，混合缺失不出差值）且 dispatch_skew_ms 小的轮才是同时对比。
2. rankable=false 的行不得进入排名/均值（e2e 缺失、非 confirmed、basis 为 fallback 口径、identity incomplete、padre 风险确认轮（risk_modal_confirm=true——该轮 click 锚指标含 harness 检测+确认开销，与普通轮混排禁令见 docs/padre.md）、或逐指标证明门（关联/账户/金额/canonical 结局）不合格——原因见 rankable_reason）。HK 代理 vantage 的 verified 行可排名，但直连 cohort 与代理 cohort 不得混排。
3. 跨批次（不同 requestId / 时间窗 / code_revision / identity）组合数据不可比出 winner；合并前须核对 schema_version、code_revision、chain/token/amount、wallet model、execution path、网络出口、时间窗全部一致（docs/fair-comparison.md）。
4. 历史 v1–v6 保留原浏览器推送；新 v7 代理批次 e2e_ms 为 HK 请求入口→成功推送，basis=proxy_request_to_platform_success_ms，HK 缺失不回退。其余 e2e_ms 是各平台 canonical 推送口径（EU 观察端 click_dom→success，含 EU 本机与产品服务之间的客户端链路（含经代理的传播段）；e2e_basis 标明：GMGN click_dom_to_tg_success_ms / OKX click_dom_to_first_strict_plugin_endpoint_ms（四族最早严格端点，旧批次缺 → L1a_platform_success_ms 兜底）/ Padre click_dom_to_done_ms（DONE）/ Binance click_dom_to_first_confirm_push_ms / FOMO robinhood=click_dom_to_relay_success_ms（Relay success 帧，含桥接结算；WS 静默期回退 click_dom_to_swap_record_ms——swaps 轮询本轮订单新记录，订单 id 绑定）、solana=click_dom_to_swap_record_ms（swaps REST 轮询新记录——DFlow 同链无 Relay，≈3s 轮询量化））——跨平台对比前先确认 basis 语义可比。
5. click_to_block_ms 与 slots 仅在 exact gate（membership + block identity + anchorUnique）通过时才有值；block_estimate=true 的行是估算（见 uncertainty_ms），不得与 exact 值混合统计。估算行另分两类（2026-09-12 起随 block_estimate_bound 列 / JSON estimate.bound 导出）：upper = 量化上界（≤，straddle 同秒量化假象的 raw+uncertainty），空 = 中点估计（≈）——两类是不同估计量，不得互相混合统计，均不参与排名。
6. receipt_ms 是 receipt 被观察到的 observer latency（RPC 轮询），不是出块时间。
7. 空值/null 表示未观测——不是 0，不得填充或插值。
8. 一个 request_id = 一次 UI 触发（批次），每链一个 cell；失败/unknown 样本保留在分母（无 survivorship bias）。
9. tx_hash 披露：完整 hash/signature 加 ?full=1 可得（2026-08-25 起全来源开放，无 loopback 限制）；默认短化标识（脱敏镜像）。
10. fee/tip/gas 列按 request_id + chain + platform + round + exact tx 连接该链 fee-enrich sidecar（schemaVersion 2，public runs 或 latest/fees-<chain>.json）；sidecar 格级来源批次（cellSources/格 requestId）与本批不符、或 sidecar 记录 tx 与本笔 tx 冲突、或**任一侧缺精确完整 tx 身份**（run 侧无 tx/短形 hash、旧 sidecar perRound 无 tx 字段）→ 空列（不取 latest/他批补值，旧无 tx sidecar 明确降级为不可关联而非假装有证明；EVM hash 等值大小写不敏感，Solana base58 大小写敏感）；缺 sidecar 或该轮缺失 → 空列，不是 0。空列原因见 JSON trade.fees.feeLink（有界枚举：linked / no-sidecar / platform-cell-missing / cell-source-mismatch / round-missing / run-tx-missing / run-tx-not-full-shape / sidecar-tx-missing / sidecar-tx-not-full-shape / tx-mismatch / round-error）。trade.fees 另带 costCrossCheck（payer 差额交叉核对，非 ok 需人工复核；EVM 不适用）与归因 feeAsset/payerRole（FOMO=solver/usdc：solver 链上成本不是用户支出；旧 sidecar 缺标记 = 未知归属）——三者同值进 CSV 列尾 fee_asset/payer_role/cost_cross_check（tidy 与 wide 每平台各一组，缺失留空串）。
11. mev_tip_evidence 是链上证据：本轮 tip 是否打到已知公开 MEV-relay 账户（静态表命中：Jito / bloXroute / NextBlock / Temporal / Nozomi / Astralane）。不是产品「防夹」开关状态。平台自有 tip 收款账户（okx-tip / gmgn-tip）与 heuristic/未知目的地均为 false。EVM 无 tip 概念，该列留空。
12. push_latency_ms 与 e2e_ms 同值：click → 平台 canonical 成功推送（hero/绿槽消费的 per-run 段，口径见 e2e_basis）。receipt_latency_ms 是 L3 observer latency。block_tn 仅 exact t+N 块计数，否则留空。
13. receipt_latency_ms / receipt_ms（L3）起点锚跨平台异质：GMGN/Padre 以派发点击为起点（anchor_basis=dispatch-click），OKX/Binance 以校准 DOM 点击优先（dom-click；DOM 点击缺失回退派发锚的 run 标 dispatch-click）——click→click_dom 间隔只进 dispatch-click 侧口径。逐行口径见 anchor_basis 列；空 = 旧数据未标（不反填）。跨平台比较该列前必须先对齐口径。
14. exit_* 是 observer（EU 本机 Node probe）出口；product_egress_state / product_proxy_id / product_proxy_name（列尾，批次级）是 Chrome 产品出口身份——代理批（proxied）与直连批（direct）不是同一 cohort，合并/排名前必须 state 与 product_proxy_id 全等（docs/fair-comparison.md 指纹键 productEgress）。restore-failed（代理认证恢复失败）与 unknown（批始无出口状态证据）都是不完整证据、不得当直连；空 = 旧批未记录（不反填、不推定直连）。不导出产品出口 IP/host/凭据。
15. 出价面 tx_gas_price_gwei / max_fee_gwei / max_priority_fee_gwei 三位小数字符串有 1 wei 粒度精度损失（123456790 与 123456791 wei 同显 0.123）；精确比较/复算用全表列尾的精确整数 Wei 列 tx_gas_price_wei / max_fee_wei / max_priority_fee_wei（wide 为每平台 {p}_ 前缀，2026-09-08 起；旧导出无此三列 = 缺失，不得用 gwei 列反推精确值）。
