AICENT.COM
← 返回中文博客

边界是一种声明——lease-boundary 家族进入实验室主线

2026-11-04 · RTTP · IQA
本文引证来源 · 向量锚定的文本(逐句): draft-li-rttp-iqa-addressing-02(全文) · 系列页与修订史: datatracker · 家族页(已封印): iqa.org/conformance/aicent-lease-boundary/(四件可下载,逐件 SHA-256) · 正本仓库: Aicent-Stack/conformance · candidates/aicent-lease-boundary · 已并入实验室主线: Agent-Authority-Conformance 实验室 PR #212(2026 年 11 月 3 日合并) · 姊妹家族记录: 实验室 PR #210 · 墙侧叙事: 第 24 篇,租约的边缘 · 中途停机记录: 第 18 篇,中途发生了什么 · 姊妹双柱: RTTP(rttp://,CRI 27)· IQA(iqa://,CRI 28)

比姊妹篇晚三十三分钟,aicent-lease-boundary 于 11 月 3 日晚间并入 Agent-Authority-Conformance 实验室主线——PR #212,merge commit 29423aa,rebase 到姊妹的 merge 之上,两份独立记录进入同一份干净索引。墙侧的故事——租约瞬间如何被定谳为 at-or-past、声明约定条款为何早已预言了定谳的形状——记录在第 24 篇里。本文记录工件本身:十五个把边界从约定变成测试的用例,以及这个家族刻意止步、把一个问题交给姊妹的那道接缝。

两个家族 · 一道接缝 · 一个晚上每个家族都写明自己以什么为给定前提 — 接缝在两份 CANDIDATE 里都在案aicent-grant-ref · PR #210 · 17:47 UTC 合并 · 0da1e2925 用例 · 确立绝不视为同意映射:不可达源 → authority_not_determined,绝不读作同意aicent-lease-boundary · PR #212 · 18:20 UTC 合并 · 29423aa · rebase 到 0da1e2915 用例 · 以该映射为给定前提 · 测模式在其上加了什么:live 对 cached-lease,与政策分叉同样刻意分开:§7.2 帧有效性是拒收地板 — §6.1 信赖是约定 · 用例 D05 让任何焊死两层的读法不合规重测姊妹用例的家族会重复计分 · 悄悄假设姊妹用例的家族不可读 · 所以接缝被写明
图 1:两个家族之间的接缝,双向写明。一个测词汇表的绝不视为同意映射;另一个以它为前提、测其上的模式系统——当晚的合并保留了同样的次序。

前提,一段就够

一段足够,因为完整记录在第 24 篇里。草案的 §6.1 不在租约瞬间上选边:瞬间算 fresh 还是算 expired 是部署约定,按实现声明——条款让问题可回答,而不假装某个答案更正确。同一周,墙上那族文档定谳为 at-or-past,形状恰是条款预期的:想要共同读法的人有共同读法,读法不同的部署有清晰的声明。这个家族赖以建立的前提在与论战的接触中完好:地板守住了。

声明的边界,五个用例全走一遍

R-DECLARED 测约定本身,五个用例走遍整个空间。LB-D01:声明 inclusive 边界、在瞬间给出许可——合规。LB-D02:声明 exclusive 边界、在瞬间以 expired 拒绝——同样合规,这正是设计的显形:两种读法只要声明都合规,因为条款对两者都发了执照。LB-D03:声明一套、使用另一套——不合规,依据的是一个 CANDIDATE 明示而非遮掩的严格读法:不说明自己所 用边界的声明,恰恰废掉了条款赋予声明的功能。LB-D04:完全不声明——设计上就是 ambiguous,按部分计分,因为一个对两种读法都发执照、又要求一份缺失声明的条款,无法向任何一边裁决。LB-D05 是分层:§7.2 验证程序在瞬间接受了帧,不等于裁决了 §6.1 的信赖约定——帧有效性与信赖是两层,任何把两层焊死的读法都会在这个用例上失败。

过期租约还欠什么

R-NOEXTEND 守住边缘之外的线,三个用例全是纪律。LB-E01:过期之后读取的答案,以 expired 作答——合规,全部义务一步完成。LB-E02:把原始观测重放成新鲜的——不合规。LB-E03:在本地加的宽限期里重新解释租约——不合规,因为宽限期不是源文知道的声明;它是修缮,而词汇表拒绝为修缮洗白,这正是它的职责。R-WINDOW 在另一侧收尾:窗口长度是运营者选择,所以声明租约未过期的答案不得被拒(LB-W01)——而靠着假设 120 秒部署默认值、不去查声明过期时刻就把答案拒掉的,不合规(LB-W02)。120 这个数字是源文里的部署观察值,永远不是合规靶;线上携带的是声明过期时刻,被查的也必须是声明过期时刻。

§6.1 · 过期租约还欠什么边缘之外三个动作 — 一个合规,两个是词汇表拒绝洗白的修缮LB-E01 · 过期后读取 → 以 expired 作答合规 · 全部义务一步完成LB-E02 · 把原始观测重放成新鲜不合规 · 观测不会变年轻LB-E03 · 在本地加的宽限期里重新解释不合规 · 宽限期是修缮,不是声明LB-W01 · 声明租约未过期 → 不得拒绝合规 · 窗口是运营者的选择LB-W02 · 靠假设 120 秒默认值拒绝不合规 · 查线上携带的声明过期时刻120 秒是源文里的部署观察值,永远不是合规靶 · 15/15 agree · 17/17 mutants killed · exit 0
图 2:作为用例的过期读取与窗口。边缘之外唯一合规的动作是诚实的那一个;边缘之前唯一合规的检查是声明过期时刻。

organ 不可达时,模式说了算

R-MODE 是家族赢得独立于姊妹的地方。声明的作答模式决定不可达的 organ 代价几何。live 模式下,无论缓存多新鲜,调用一律被拒(LB-M01)——新鲜缓存救不了它(LB-M02):模式是声明过的,用例执行的就是声明。cached-lease 模式下政策分叉:要求当前观测的政策以 authority_not_determined 拒绝(LB-M03),接受租约内新鲜证据的政策可以放行(LB-M04)——两者都合规,因为这个模式存在的意义就是让部署把这个选择摆上台面。过期缓存以 evidence_expired 拒绝,词汇表优先序中第一个适用的值(LB-M05)。接缝守住了:不可达的源落在 authority_not_determined、绝不读作同意——这是姊妹家族的用例,在此作为给定前提;这些用例测的是模式条件化的拒绝与政策分叉,任何东西都不测两遍。

两份记录如何进入主线

合并机制值得记录,因为它是实验室自身节奏的正常运转。PR #210 先合,17:47 UTC。PR #212 三十三分钟后跟进——但在两次合并之间,共享的 docs/CANDIDATES.md 索引已经收到了姊妹家族的条目,#212 到场时带着冲突、挂着 DIRTY,而六道 CI 门全绿。解法是实验室自己的规矩:后合并者 rebase。#212 rebase 到 0da1e29 上,回到 CLEAN,以 29423aa 合并。两份记录、一份索引、没有强推、没有改写历史——家族应用在自己源文件上的那份 append-only 纪律,实验室同样用在了主线上。两个家族页次日上午封印,逐件 SHA-256,各四件,下载不需要联系任何人。

家族不主张什么

CANDIDATE 明示自己的边缘,其中三处是读者可以拿着原句去争议的判断题。LB-D03 依据严格读法——条款说实现应当声明边界,但没有给自相矛盾的声明附加明确后果;家族以不合规处置,因为一个废掉自身功能的声明比沉默更糟,但反对意见是正当的。中途停机与调用层的执行不在范围内:只测验证所欠的那个答案。LB-D01 到 LB-D05 把 at_boundary 当作给定输入——家族测的是实现如何处理边界,不是实现能否从观测时间与租约过期时刻正确算出边界。检查器编码的是对源文的一种读法;后续修订的更正覆盖它。站得住的主张是重要的那一部分:边缘现在是一个测试。

部署者今晚能做什么

四个文件、一个 Python 3 解释器、一份声明。部署方声明自己用哪种边界约定、跑哪种作答模式,把十五个用例交给自己的实现,几分钟内就知道代码的行为是否与声明一致——过期读取以 expired 作答、缓存永不洗白修缮、查声明过期时刻而不是假设默认值。而从本周起,这个行为也是墙上定谳边缘的方式,测它的家族坐在一条任何人都能引用 merge commit 的公开主线里。当晚的词汇侧——五个值、优先序、null 规则、回执——是姊妹篇的记录。

一句话:边界是一种声明,声明现在是一个测试,测试以 29423aa 并入实验室主线——十五个用例留给部署的动作,边缘之外只剩一个诚实的作答,边缘之前只剩一个诚实的检查。

已封印 rttp://aeba8579.blog.aicent · iqa://aeba8579457d43edc0f82d43fba7be6b.forge.iqa · 密封记录