Summary
draft-wei-capability-language-core-00把allow_unresolved设计成独立结果:引擎识别了约束,但现有求值器或证据尚未回答它。- 使用方必须保留规范化的未决集合,逐项求解;任何违反都应拒绝,无法判定也不能放行。把三态枚举压成布尔值,就是扩张权限。
- 时间窗口即使在某一刻被正确满足,所得
allow也只能活到窗口终点;缓存不能把瞬时事实改造成长期授权。
漏洞发生在两个组件之间
设想一项自动变更只能在 02:00 至 02:10 执行,并且来源网络必须在批准名单中。CLC 能确认网络,却没有获得可信时钟。它没有凭空猜测,而是返回 allow_unresolved,把时钟条件留在 unresolved 中。
这不是“基本允许”,也不是让上层随意决定的提示语。它表示授权计算尚未闭合。调用方可以取得可信时间、提交 resolution,再调用 Resolve;否则必须拒绝。若 SDK 只暴露 isAllowed,或工作流把非空结果都当成功,最终决定权就从政策作者转移到了适配器作者手中。
这个边界之所以重要,是因为 CLC 有意保持载体中立。JWT、CBOR 或其他原生载体是否可信,不由核心语言替部署者决定;动作是否真正执行,也不在它的证明范围内。它只承诺把共同语言中的判断和剩余工作表达清楚。
能识别,不等于已经求值
修订版 00 识别核心时钟与网络约束的语法。识别意味着实现能够解析、规范化、比较和保留某个条件;并不意味着它拥有可信时钟、实时网络观测或部署所需的求值器。
若把“已知但不会算”的条件静默丢弃,请求离开引擎时反而比进入时拥有更宽的权力。因此草案要求将它保存在未决集合里。同一 scheme/type 下有多个约束时,关系是 AND,不是 OR。只取第一项、最后一项或任意一项,都会重写原政策。
规范化解决的是交接一致性。等价重复项可以折叠,不同义务不能消失;规定的排序基于 UTF-8 字节,而不是运行时顺手采用的字符串顺序。JavaScript 默认的 UTF-16 排序并不能自动替代这个规则。确定性让两套实现看到同一份“未完成清单”,却不会让清单自己完成。
Resolve 不是礼仪性回调
草案给出了第二阶段判断。Resolve 接收原决定与每项未决义务的 resolution。优先级故意偏向拒绝:只要一项 violated,结果就是 deny;全部 satisfied 才是 allow;仍有 unknown,则继续是 allow_unresolved。
畸形 resolution、相互矛盾的材料或无效时间戳应当拒绝。已经终结的 allow 与 deny 不因后来补来的便利数据而被重新打开。证据匹配路径更没有“先放行再说”的状态:不知道就是 UNSATISFIED。
因此审计记录必须能把两阶段连起来:语言版本、原生载体验证、首次枚举、完整未决集合、求值器身份和版本、证据引用、观测时间、逐项状态、最终枚举,以及真正释放的动作。只记录“调用过 resolver”无法说明哪份证据完成了哪次许可。
02:09 的答案不能留到 02:11
回到维护窗口。可信时钟在 02:09 证明当前时刻处于允许区间,Resolve 正确返回 allow。一分钟后,这份答案就到了边界;两分钟后,它已经不再描述现实。
如果缓存键只有主体、资源和动作,而没有约束、上下文、求值时刻与失效点,02:11 仍可能命中绿色结果。原判断并非错误,错误是基础设施把一次瞬时证明变成了长期能力。缓存寿命必须早于所有限时 resolution 中最早的终点;上下文一变,就应重新判断。
RFC 3339 可以统一时间字符串,却不能指定哪台时钟可信、允许多少偏差、谁承担超时后果。这些是部署责任,不能借标准格式外包。
包含关系也不能替未决条件签字
CLC 还描述 capability containment:一项能力是否处在另一项声明权力的范围内。它回答结构边界,不回答“现在是否可用”。一个被正确包含的能力仍可能受未决时间条件限制;一个规范化无误的能力仍可能来自不可信载体;一个最终 allow 也不证明外部系统真的发生了变化。
恒路关于现实层的笔记提供了更精确的分层:能力文本是符号,规范化约束是表示,求值证据来自运行层,行动及其后果又在更后面。把这些层压成一个绿色图标,只会让形式最整齐的记录冒充最终事实。
最小初始规范的价值正在于克制:统一枚举、残余义务和交接语义,把原生信任、证据来源与后续决定留给负责任的本地机构。运行代码能证明算法可以重算,却不能替代独立验证。
修订版 00 报告 123 个 conformance vectors、1,184 个 property cases 和三个实现。这些是有用的工程证据,但列出的实现共享作者,草案所说的独立实现门槛仍未满足。下一步应由独立团队重跑语料,特别测试枚举绑定、重复约束、UTF-8 排序、未知 resolution、错误时间与窗口终点缓存,而不是先把互操作写进采购结论。
Sources and limits
- https://api.github.com/repos/varwof/capability/commits/b15b51b8f94125b7a00aa281f98405806e6ea95c
- https://datatracker.ietf.org/doc/draft-wei-capability-language-core/
- https://datatracker.ietf.org/doc/draft-wei-capability-language-core/history/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
- https://www.ietf.org/archive/id/draft-wei-capability-language-core-00.html
- https://www.rfc-editor.org/rfc/rfc2119.html
- https://www.rfc-editor.org/rfc/rfc3339.html
- https://www.rfc-editor.org/rfc/rfc7493.html
- https://www.rfc-editor.org/rfc/rfc8174.html
- https://www.rfc-editor.org/rfc/rfc8785.html
- https://www.rfc-editor.org/rfc/rfc9396.html
这些来源证明的是一份活跃的个人 Internet-Draft、公开语料与相关规范,不证明 IETF 共识、RFC、工作组采纳、独立安全审查、广泛部署、可信载体验证或行动结果。本文只占有修订版 00 中“已识别但未求值”的约束通道、Resolve 闭环与时间窗口失效边界。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance

