Skip to content

Runtime Invariants zh

pawaca edited this page Aug 30, 2026 · 1 revision

运行时不变量

上游的可配置断言注册表和 Edge 的平台级不变量契约。

上游参考:Runtime Invariants

上游提供了什么

提供 ——一个可配置的注册表,每个工作区包在其 npm 名下发布运行时检查。关键设计:

  • 范围:检查只审查权威事件流或可变数据,不检查服务或方法是否存在。
    • 选择: 开关 + / 正则模式。黑名单优先。
    • 隔离:每个安装器在独立的 cordis 子 fiber 中运行。失败产生归因到违规包的 。
    • 约定:每个工作区包提供 伴生插件,由工具链验证。

Edge 改了什么

传递依赖 dsh-invariants

存在于 standalone 依赖闭包中(通过其他上游包传递),但没有显式安装为插件。没有 调用。上游的伴生不变量插件未注册。

Edge 专有 AGENTS.md 不变量契约

Edge 在 (第 30–39 行)定义了自己的不变量契约,通过代码审查和 CI 而非运行时注册表强制执行。这些覆盖了上游以包为单位的断言模型未涉及的平台级保证:

不变量 执行方式
请求路径无关联子查询 — DO SQL 查询必须使用物化表,不得对无界事件表做逐行扫描 代码审查 +
凭据安全 — 不得记录 、bearer token 或 owner cookie。Provider 凭据按调用解析,不跨请求缓存,不写入会话事件 设计 + 代码审查
投影推送顺序 — seq N 的投影在其对应 帧和 flush 之后到达 中的同步捕获 + seq 匹配 drain
DO SQL 原子性 — 事件批次和摘要更新在单个 中提交 事务边界
单一上游版本 — 所有 standalone 依赖锁定同一精确版本 CI +
Gzip 预算 — direct 模式 Worker 必须低于 921,600 字节 gzip 构建脚本预算检查
补丁纪律 — 每个保留的上游补丁需有版本绑定文件名、缺少时的失败测试、理由和移除条件 代码审查 + 补丁验证脚本
cordis 子注册表 provide — 当其他插件使用 时, + 必须配对 代码审查(源自 的经验)

Edge 没有改什么

  • 上游 包 API、 类型和伴生插件约定
    • 会话事件排序和追加式保证(上游 类)
    • Flush/checkpoint 契约(上游 接口)

架构总结

组件 分类 备注
注册表 可用 在依赖闭包中但未安装为插件
AGENTS.md 契约 Edge 专有 8 个平台不变量,通过审查 + CI 执行
DO SQL 约束 Edge 专有 表、 约束、

关键观察:上游的不变量系统是以包为单位的运行时断言注册表。Edge 的不变量是平台级契约(SQL 原子性、凭据安全、投影排序),运作在不同层面。两者互补——上游注册表可以安装以增加包级运行时检查,不会与 Edge 的结构性不变量冲突。

English

中文

Clone this wiki locally