发布检查
开发/只开发一个CI,确定接受的释放投入的比较,a 准确的引擎计划 和一个独立观察的候选人 软件包没有 运行时间或对等依赖、文件系统/网络/进程访问、散列、, 更改执行或合并/出版权限。 不要导入它从 产品运行时间代码 .
精确寄存器-目录 TypeScript 编译器是一个只开发的构建 输入。 现有的清洁软件包资格快照,编译器及其 本地关闭。 作为依赖性安装此软件包时, 既不安装 编译器或解析器;两个公共入口都保留了空运行时间关闭.
更衣器仍然是版本和依赖传播引擎. 东道主 冻结其官方计划,独立观察结果,然后呼吁:
import { checkReleaseCandidate } from "@agent-teams/release-checks";
import type { ExpectedInputs, ObservedCandidate } from "@agent-teams/release-checks";
function check(expected: ExpectedInputs, observed: ObservedCandidate) {
return checkReleaseCandidate({ schemaVersion: 1, expected, observed });
}
这个 unknown 运行时边界返回错误输入的编码拒绝 .
类型描述已接受的版本-1形状; 它们不认证已提供
事实。 初始数据 0.0.0 来源承认不是支持公众的证据
npm发布. 消费者采用精确的辅助坐标,按其条件
释放记录.
合同和所有权
| 投入 | 法定事实 |
|---|---|
expected.binding | 便携式不可移动源身份/ digest; 准确的引擎身份/ digest; 配置、库存、政策、意图设定和冻结计划摘要 |
expected.packages | 包括根在内的非空的完整实际软件包清单 package.json 当存在时; 独有的名称/根/路径、公共/私人可见度、版本资格和完全接受的显示快照 |
expected.intents | 完整的合格来源意向标识/路径/ digest,待/保留参与和明确要求的包/型对 |
expected.plan | 所有正式正常化的释放记录,包括依附和不变的释放记录 none 记录; 准确的旧/新版本和直接意图链接; 明确的限定消费效果 |
expected.permittedChanges | 精确路径,分类,更改类型,类型/模式前后并命名为主机内容权限 |
observed.binding | 独立地重新观察便携式输入身份;从未复制过仅为了通过比较 |
observed.manifests | 独立的完整清单和完整的语义和字节标识快照 |
observed.consumptions | 独立观察的意向身份、原作摘要和效果 |
observed.diff | 完整、独立地列出候选人变动情况,叶前/叶后有确切的特征和缺位 |
完整的公用类型从根导出. 所有源根和路径
相对 Git 寄存器根, 即使引擎运行于嵌入式
目录。 存储器不需要有根包表。 源根的使用
. 仅用于实际仓库根包,带有 package.json 以示显现。 其他路径有:
字面相对斜线分隔路径:没有空/点/点-点段,
后鞭打,驱动前缀或ASCII控制/DEL. 大小写和 Unicode 拼写
保留他们的身份。 库不能将文件系统路径描述为空 .
每个文摘用途 sha256: 加上64个小写十六进制字符。 叶子
类型/模式对是文件 100644编号 :100755,符号链接 120000连接 160000。 。 。 .
明示和消耗的意图文件必须是普通不可执行的文件。 东道主
输出可能只使用其允许的确切类型/模式。 重命名
而复制本则作为主机实际添加/删除的路径被观察.
null 休假前/休假后意味着文件缺失。 计划 null 版本表示
(a) 不存在明确版本的财产,只允许有资格的私人拥有,
非格式输入。 一个字面上的表 "version": null 拒绝。 礼物
版本被比较为精确的非空字符串; 此软件包既不是剖析
SemVer 或 法官 的 适量 .
东道主拥有经认证的来源/PR/CI事实、实际文件系统/基因普查, 已解析出源代码和 Git 目录, 引擎工作目录和精确度 已安装入站点。 实际检查路径仍由主机-当地保管 证据,因此独立合法的公关资格可以使用另一个退票. Host hashes活字节,并将语义快照与这些字节文摘相接. 检查器比较所提供的散列;散列序列化语义JSON会 不识别原始文件字节.
只有版本的显示关系
每一份分类清单都必须在所观察的清单中列出。 来源
(d) 身份、公共/私人分类以及快照之前必须同意.
被观察的旧/新版本必须等同于完全被冻结的计划. 引擎产生的
依赖的释放可以有空 intentIds。没有改变 none 记录必须
保留在计划中,不需要生成更改的文件.
除精确的计划版本外,所有语义表征字段均保持等同. 阵列保留其顺序;对象键插入顺序无关紧要. 脚本, 出口、依赖、未知字段和嵌入值不能通过 允许的分类标签。 显示的字节变化,没有计划的实际 版本编辑也拒绝。 快照叶片身份和实际修改文件 diff条目必须同意.
版本资格versioned, (中文(简体) ), unversioned, (中文(简体) ), ignored)和能见度
(单位:千美元)public, (中文(简体) ), private)是单独的合格主机事实。 每一个合格待定
需求需要其对应的直接计划联系和计划消费。 保留
意图并不获得新的释放或消费要求。 检查器
不从原始引擎配置中推断出这些分类.
1版本中没有依赖重写API. 支持的消费者使用 限定的象征性工作空间范围或保留更严格的同级底线政策. 按规定重写拒绝,直至其自己的合同/承认变更;不 将其描述为一般允许的显示编辑.
消费和无排放
remove 需要一个准确的被删除的意图路径,其消化前等于
来源意图. record 需要一个已承认的已更改元数据文件和一个
不变的保留意图文件。 这支持基金会现有的预放
簿记不增加新的放行道. 现有主机守卫必须保持
验证元数据的含义, 不变的更改日志历史, 生成条目,
所消耗的摘要,API基线和锁行为. contentAuthority 名称
(a) 该软件包不是由该软件包执行的,它本身也不给予许可.
有条件的空房管理意图可能与真正的释放同时被消耗.
被忽略/未变相的私人意图仍然保留。 没有实际计划
旧版/新版编辑,包括一个未修改的计划 none 记录,
不得消费或源树突变。 主机结束一个通过
不引用版本或等待分行/PR的不释放状态.
报告和界限
CheckReport 是一个被冻结 passed编号 :rejected 与第1版计划结合,
稳定的诊断代码和正常的观察包变化。 代码携带
软件包/路径/意向身份。 排序是区分大小写
软件包名称、路径、代码、意图 ID 和消息; 软件包更改使用名称/路径.
输入/身份验证在模棱两可的语义比较之前拒绝.
成功的报告和嵌入式报告集没有保留呼叫者的参考文献.
输入是被捆绑的普通JSON记录/阵列和有限度的卡通值. 这个 请求最多允许 262,144 转录值, 8,388,608 总键/字符串代码 单元,嵌入深度64,和65 536个阵列元素;身份/路径字符串在 大部分4 096个代码单位。 周期、 稀有阵列、 连接器、 符号、 不可假定 记录字段、自定义原型、不支持的版本和未知的合同 字段拒绝。 普通和无原型的记录被接受。 可执行代理 并被修改的JavaScript内在元素在输入合同之外.
过往关系证明没有认证,外部关系的完整性 提供人口普查 真实的引擎执行 成功的主机内容守护, 要求CI/审查、包录入或允许合并/出版。 这些 所有者必须独立地执行现有的边界.
共享合规数据
预 告 ./conformance 进入点出口不可改变,独立
预期数据及其 ConformanceCase 类型。 它不出口试跑者或
框架整合:
import { checkReleaseCandidate } from "@agent-teams/release-checks";
import { releaseCandidateConformanceCases } from "@agent-teams/release-checks/conformance";
for (const entry of releaseCandidateConformanceCases) {
const actual = checkReleaseCandidate(entry.input);
// Consumer assertions compare outcome, ordered codes and packageChanges
// with entry.expected using the consumer's own test framework.
console.log(entry.id, actual.outcome);
}
共同数据涵盖直接/依赖性发布、混合空屋管理、,
非公开 none,保留文件的消耗,没有
根状、无放行和目标
拒绝。 每个采用的主机也符合它自己的实际引擎,完成
观察、内容守护和安装精确的软件包。 不生成两者
计划及其带有检查码的预期答案.
基金会来源构建了这片叶子 并称之为实际一代, 预基线-模拟和当前头/基资格接合。 旧部分 内容帮助者保留其内容/释放责任;他们不 制作来自候选版本的完整请求。 消费者使用钉子 公共发展依赖和相同的出口业务.