- Quantity measured
- Schema 合规率 S = n_valid_rows / n_rows(校验器零错误的行占比),发布闸门 S = 1.000;词表闭合度 V = 1 − n_offvocab_cells / n_vocab_cells,闸门 V = 1.000;字段定义完备度 D = n_fields_with_definition / n_fields,闸门 D = 1.000;冻结后漂移 Δ_schema = 冻结日之后发生的 schema 变更次数(不设闸门,但必须逐条出现在 CHANGELOG,用于读者判断规范稳定性)。
- Fixed parameters
- CSV 方言固定:encoding=UTF-8(no BOM), newline=LF, delimiter=',', quotechar='\"', doublequote=true, escapechar=none。obs_id 序号位宽 6(单次 run 上限 999999 行,远超小团队产能)。fixture 行数下限 20 行/表(低于此覆盖不到全部 status 码)。试点行数下限 30 行/指标(够暴露类型与边界问题,又不至于烧掉预算)。unc_k 默认 2(约 95% 覆盖区间),偏离必须在行内注明。
- Sample size
- schema 本身不是抽样对象,是普查对象:所有表、所有列 100% 覆盖。夹具 ≥ 20 行/表且满足「每个 status 码 ×1、每个词表条目 ×1、每类边界值 ×1」的覆盖条件(这是覆盖设计,不是统计抽样,不涉及功效计算)。真实试点 ≥ 30 行/指标表、每平台 ≥ 2 行,时间跨度 1 个工作日内完成,目的只在暴露契约缺陷。
- Control
- 五个平台共用同一份 schema、同一份词表、同一套校验器;任何一个平台需要新列,改的是所有平台的 schema 并触发版本号,而不是给它单独加列。合成夹具作为已知答案对照(fixture 的正确性由人工逐行确认一次,此后作为回归基线)。
- Statistical treatment
- S、V、D 三项都是比例,报告点估计并附 Wilson 95% 置信区间(n 通常较大,区间会很窄,但必须给 n)。Δ_schema 是计数,直接列出变更清单,不做统计推断。任何比例指标一律与其分母 n 同屏出现,禁止只报百分比。
- Reproducibility check
- 第三方拿到发布包后执行 `frictionless validate datapackage.json`(或包内附带的 validate.py,二者结果必须一致),应得零错误。校验器自身的自校验见 P6 的植入缺陷夹具:若校验器抓不到植入缺陷,S=1.000 毫无意义。schema 文件哈希同时出现在方法页与 MANIFEST.csv,两处不一致即视为发布事故。
- Known pitfalls
- ①Excel 会把 obs_id 里的长数字转成科学计数法、把 '2026-08-31' 转成本地日期格式、给 CSV 加 BOM —— 规定任何 CSV 不得用 Excel 保存回写,只用脚本读写,人工填写走模板并在导入时做格式回归检查。②把币种写进 value_str 而不是 unit,导致跨平台聚合时静默错算。③给某平台临时加列,几周后没人记得该列只有一个平台有数据。④用随机 UUID 当 obs_id,导致行序不可复现、diff 全红。
- Risk
- 冻结过早会导致后续大量 MAJOR 版本;冻结过晚则数据边采边改、不可比。建议在试点后、正式采集前冻结,这是唯一正确的时点。schema 一旦公开发布就是承诺,改它的成本远高于事前多花半天讨论。