六个家族,一部草案
本文引证来源 · draft-li-rttp-iqa-addressing-02(钉定摘要 02491c5a)· 家族页 iqa.org/conformance/(六页,各含四件套下载与校验和)· 实验室 PR #210 · #212(2026年11月3日合并)与 #221 · #222 · #223 · #224(2026年11月9日提交)· runner 仓库 github.com/Aicent-Stack/conformance
向量家族是一台用来测试「文档是否言出必行」的小机器:取规范的一节,从它推导具体用例——输入、期望裁决、拒绝理由——冻结字节,写一个检查器,再写一个唯一职责是把检查器弄坏的程序。如果突变体全被捕获、用例全部一致,这一节的语义就被钉在了任何人都能重放的东西上。这篇文章是一份名册:双柱工作——RTTP(rttp://)回答何地何时、IQA(iqa://)回答是否成立——如今有六个这样的家族,全部推导自同一部文档:draft-li-rttp-iqa-addressing-02。
先报数字,名册就该从数字开始。grant-ref:25 用例、21 条突变探针。lease-boundary:15 用例、17 条。ae128-fail-closed:19 用例、15 条。pulse-header:24 用例、19 条。uri-grammar:26 用例、13 条。route-shard:16 用例、9 条。全家族录制运行——六个检查器加六个突变器一遍跑完——合计 125/125 用例一致、94/94 突变体被捕获,可从各家族页的密封工件逐字节重放。
四个新家族各测什么,一族一口气。pulse-header(24 用例、19 突变体)测的是线上帧本身:§7.1 的固定 128 字节帧布局用固定比较核验;§7.1.1 的扩展块规则——SPEC_REV 闭集、FLAGS 各位、ACTION 字符文法、长度与填充、RESERVED 字节;以及 §7.1.2 的时间与次序语义——TTL 转发、TIMESTAMP 年龄及其对 standing 的边界。帧用例是具体的 128 字节帧头;行为用例交给检查器一个帧、一个角色、一个结果,问钉定文本是否允许。
ae128-fail-closed(19 用例、15 突变体)测的是证明信封的拒绝:接收方在任何密码学动作之前 MUST 执行的解析期拒绝规则;全帧覆盖的规范 HMAC 规则——它让对 organ 标签、nonce、standing 字节的任何改写都可被察觉;以及每份实现必须逐字节复现的公布向量 AE128-VECTOR-1。每条用例都是一帧具体的 128 字节,检查器仅凭帧字节与源文本所述规则重导全部裁决。
uri-grammar(26 用例、13 突变体)测的是 rttp:// 的字符串层门面:§4.1 的 ABNF——三个点分段、哈希意图与命名意图、单段 action;以及 §4.2 的排除项——大写规范形、userinfo、端口、query、fragment、规范 URI 中的百分号编码、任何 rttps 回退,全部关门。每条用例是一个 URI 加上钉定文本强制出的那条文法裁决。
route-shard(16 用例、9 突变体)测的是派生本身:对规范权威的 ASCII 做 SHA-256 取前 16 字节,连同让函数保持诚实的各条边界——scheme、// 与 action 不进输入;大写被拒绝而非归一化;非 ASCII 被拒绝;以及 §9.1 的展示形红线——8 位 hex 展示形绝不得作为主体的唯一标识符。派生用例钉完整 16 字节地址;属性用例钉结果。
六族中两族已进主线:grant-ref 与 lease-boundary 于 11月3日以 PR #210 与 #212 合并进实验室主分支。其余四族本周新提——#221 ae128-fail-closed、#222 pulse-header、#223 uri-grammar、#224 route-shard——各自独立分支、各自四件套(候选文档、向量、检查器、突变器)、各自跑过实验室六道 CI 门。它们和所有人的东西一样排队等;不承诺日期。
现在说我们最自豪的部分,它不是通过率。四条新向量标记了我们自家向量比自家草案字面更严格的地方:AE-128 对 flags 0x0001 与 organ 0xFF 的检查,以及 uri-grammar 关于前导连字符的两条用例——草案 §4.1 文法按字面读允许的,向量却拒绝。每一行都标明它是什么——一次权威收紧,标注为 2026年11月9日的作者决定,在家族页与实验室提交里如实披露,而不是伪装成草案一直这么说。一致性套件同时是一面镜子:它让作者看见自己文本松在哪里。我们宁可当众把松动亮出来,也不让陌生人抢先发现。
一条分类注记,按实验室章程要求的方式陈述:录制家族运行是 author-produced、Mode A——向量、检查器、运行都是我们写的。这是这份名册的诚实标签;独立性工作发生在别处——别人跑我们的字节、或我们跑别人的字节时——那些运行带着各自的归属。author-produced 运行确立的东西更窄但依然有用:六个家族内部自洽、突变体全灭、每一件工件今天就能带着校验和下载。
六个家族,一部草案。通过率是这里最不有趣的数字——我们自己的检查器当然过我们自己的用例。要紧的是:草案的语义如今以冻结、可重放的对象存在于一个公开实验室的队列里;每个家族都能取走重跑而不必问任何人;而我们文本比草案更严的四处,被标成了它们本来的样子。草案负责承诺,家族负责留回执。