AICENT.COM
← 返回中文博客

条件与它的事实:一次委托的 DENY 站在什么上面

2026-10-29 · RTTP · IQA
规范解读 · 第 19 篇 · 本文引证来源 · 墙上的更正原文(引文逐字): W3C Agent Protocol CG · post 0081 · Alan Karp · 被更正的案例: post 0067 · 我们的答复(已上墙): post 0082 · 它延伸的中任务规则: 规范解读 · 第 18 篇 · 所应用的租约语义: draft-li-rttp-iqa-addressing-01(全文) · 姊妹双柱: RTTP(rttp://,CRI 27)· IQA(iqa://,CRI 28)

产出第 15 到 18 篇的那场交流,没有停在中任务案例上。同一位对话者——Alan Karp,其一连串提问自第 15 篇起一路驱动着本系列——带着一个更正回来了,而且是有用的那种——重画一条边界,而不是争夺一条。我们在 0067 号帖里的具体案例——信封写着「只为公司内部订机票,截至周五」,解释器说 permitted 而线上应答说 evidence_expired——把「在公司内部」读成了对动作的约束。对方的答复第一句就说,这不是要点:

墙上的更正原文(0081 号帖,中译) · Alan Karp · 墙上原件(原文为英文,引文逐字)
「你的例子没有抓住我的要点。当我说条件是『在公司内部』时,我的意思是它约束的是你应该把权限委托给谁。用一个真实案例的微小变体来说:有一个季度,HP 不得不提前发布它的财务报表,因为一位记者被抄送进了一封带有草稿的邮件。把案例稍作改动,变成委托对草稿的访问权。
我们通常用标签——比如『公司机密』——来代表可能很复杂的政策。(公司雇用的外部会计师算不算在内?)无论你怎么做,如果委托人能告诉受托人(delegatee——算不上一个词,但不会与动词『委托』混淆)这项权限适用哪些政策,那就好了。它是一个『请』,因为受托人可能有正当的理由违反这个请求,例如委托给一个没有凭证的内部程序。
至于你问的要不要 honor 这个请求,我会说:任一条件不满足,即 DENY。」
更正 · 条件说的是委托,不是动作委托人一份草稿的访问权受托人谁能持有它条件:「在公司内部」约束对象 · 权限可以托付给谁 · 不是可以做什么对象在内 · 授权旅行 · 标签以「请」的语气随行对象在外 · 草稿上的那位记者 · 泄露一次抵达了条件本要排除的主体的委托 · 事故的真实形状
图 1:画成一次委托的更正。「在公司内部」这个条件不给动作分类——它给对象分类:权限可以托付给谁。HP 事故不是政策被误读;它是一次抵达了条件本要排除的主体的委托。

条件不是它消费的事实

关于外部会计师的那句插话是这封回信里诚实的部分,值得留在视野里:一个人算不算「在公司内部」,可以和标签暗示的一样复杂,公司机密那张标签代表的政策只有政策自己能画完。这条边界不归我们标准化——它是第 15、16 篇已经放在一层之上的那个「请」,而这次更正让它恰好在原地不动。

但条件与它消费的事实是两种商品,这个区分决定整座建筑能否被审计。受托人是谁——以及这位受托人的权威在使用那一刻是否 standing——不是政策问题。它们是验证器返回的字节。在这些事实之上算出的 DENY,第三方可以从钉死的输入重推导,与我们的拒绝理由可审计的方式相同;只靠标签算出的 DENY,是一件穿着判决外衣的意见。条件可以随政策任意复杂;它底下的事实比条件便宜——而事实是事后审计唯一能站的那块地。

互不竞争的三条线

我们的答复(0082 号帖)接受了更正,并提出了双方本来就在汇合的那条分界。委托人的「请」随权限旅行,不标准化,住在一层之上——这次更正自己就把它留在那里。任一条件不满足即 DENY 在调用层执行;受托人违反请求的正当理由——那个没有凭证的内部程序——就在这一层被掂量,因为那种裁量属于调用层,不属于线格式。而线格式的职责是第三条线:让那个执行决策的权威侧输入在使用的时刻可核验,而不只在授予的时刻。

为此,双柱什么都不用挪。草案从未主张政策的位置,所以对委托对象的条件不会从它手里拿走任何东西;五值拒绝集合继续在「请」的下一层回答「是否」;而「请」之所以保住它不标准化的自由,恰恰因为它脚下的地板是确定性的。

授予时,还是每次使用

有一个问题被留在了开放状态,也是我们怀疑双方看法不同的那一个:「在公司内部」是必须在委托成立时成立,还是在之后每一次使用时都成立?如果答案只在授予时,条件就是给某个时刻签的名,它查过什么,审计将来就只见什么。如果答案是每次使用,那么第三十天离职的那位雇员,就径直走进了第 18 篇的中任务案例:租约到期,下一次验证返回 authority_revoked,急停由运行时从第一份应答起就持有的时间戳武装完毕。

授予时还是每次使用 · 条件必须回答的问题第 0 天——委托成立 · 条件核验 · 受托人在内第 30 天——雇员离职 · 事实在 standing 的授权之下变了只在授予时 · 条件给一个时刻签了名过期的事实骑着授权走到终点 · 没有任何记录说破每次使用 · 下一次验证返回 authority_revoked叫停有名字 · 有时间戳 · 可从钉死的输入重推导条件是委托人的 · 它消费的事实的新鲜度来自线格式
图 2:画在日历上的开放问题。如果条件只在授予时生效,它给一个时刻签了名,过期的事实无声地骑到终点。如果每次使用都生效,第三十天的离职就恰是第 18 篇的中任务案例——叫停会带着名字、时间戳和可重推导性回来。

部署上的推论还是第 18 篇拧过的那个旋钮,只是对准了新的刻度盘。想让委托条件骑在新鲜事实上的委托人,不会去找线格式要一种新条件——他们缩短窗口。租约长度就是「任何条件——对动作的也好、对委托的也好——可以在其授予时核验最后一次看到的事实上继续跑多久」的政策旋钮。条件可以是他们的;它消费的东西的新鲜度必须来自某处,而那个某处,就是线格式已经在给的那份应答。

这一轮为什么有帮助

这次更正改善了地图,代价只有一句话。它把「政策」拆成了草案从未混过的两个问题——可以做什么,以及权限可以托付给谁——并展示了两者住在同一层、从底下消费同一批事实、继承同一条审计规则:谁都不能靠自己的说法被审计。它还促成了这一轮安静的汇合:DENY 是调用层的执法动作,「请」留在双方都放它的不标准化位置,而线格式继续做政策与标签都做不了的那一件事——用字节陈述谁在 standing、standing 到何时。

一句话:条件是政策,事实是线格式——一次委托可以因条件被拒,但它只能在事实上被审计。

已封印 rttp://c28fb982.blog.aicent · iqa://c28fb982c9c9ad30c05b8b8a849afe9f.forge.iqa · 密封记录