@adlc/ 起诉
设计决定:这是记录员,不是审查员.
@adlc/prosecute计算为零 模型调用,并且没有进行自己的对抗性审查。 这是一个P5证据分类账: 验证、散列和附件 正常的审查员制作的通行证记录.adlc/manifest.jsonl。实际的模型评议是一个单独的工具 -- -- 运行npx adversarial-review(或adlc review和饲料 联合国 输出到prosecute作为--input证据。 如果你运行adlc prosecute它希望它找到错误,它不会;它只是证明一个真正的审查已经做了.
P5审查-证据记录器. 它消耗了正常的审查员 制作的通过证据,
记录罚单和审校范围P5证据 .adlc/manifest.jsonl,然后通过
只有在连续两次干燥后,至少有三个明显的干镜.
使用量
adlc-prosecute --input p5-passes.json --ticket T1 --dir .adlc --json
输入形状
{
"target": "feature branch",
"provenance": {
"reviewer": "local-reviewer",
"session": "codex-session-123",
"command": "npx adversarial-review --scope working-tree --include-files",
"transcript": ".omo/evidence/p5-review.txt"
},
"review_packet": {
"prompt": ".omo/evidence/p5-prompt.txt",
"prompt_hash": "sha256-of-prompt-file",
"inputs": ".omo/evidence/p5-inputs.txt",
"inputs_hash": "sha256-of-reviewed-input-packet",
"clean_worktree": "git-worktree:..."
},
"passes": [
{
"lens": "security",
"findings": [
{
"id": "F1",
"severity": "high",
"category": "security",
"file": "src/auth.js",
"line_start": 10,
"line_end": 12,
"evidence": "quoted changed code",
"claim": "token bypass",
"recommendation": "validate issuer",
"confidence": 0.8,
"verified_status": "verified"
}
]
},
{
"lens": "security",
"findings": [],
"dry_evidence": "review transcript reports no verified security findings"
},
{
"lens": "correctness",
"findings": [],
"dry_evidence": "review transcript reports no verified correctness findings"
}
]
}
verified_status 必须是 verified, (中文(简体) ), killed,或 needs-human被杀死的发现必须
包含 verification.reason, (中文(简体) ), verification.method,以及 verification.evidence。 。 。 .
输入必须使用内置镜头名称: security, (中文(简体) ), correctness, (中文(简体) ), tests, (中文(简体) ), behavior, (中文(简体) ),
integration,或 docs。当
干证包括证据。 如果没有标记发现 verified,输入必须包括
no_findings_attestation 与
reason, (中文(简体) ), method,以及 evidence。通过时只有零发现为干;已死亡
调查结果记录下来,但不推进干道汇合.
记录稿不作为一般附件处理。 它必须可以读取,至少64个
字节,必须同时引用 --ticket 价值和已解决的订正案
字符串( r)git-worktree:<hash> 除非 --revision 页:1 此绑定记录
P5给罚单和修改的证据 P6后来检查,但仍未证明
一个外部评论员跑。 使用名称 provenance.command 和记录
而非手写占位符.
审查包将审查者迅速和审查后的投入包与P5证据相接.
prompt 财务报告和审定财务报表 inputs 是文件路径,它们的散列必须符合所提供的SHA-256值,
财务报告和审定财务报表 clean_worktree 必须等同于经过审查的准确修订.
证据文件的位置是强制执行的,而不仅仅是惯例. 若为 provenance.transcript, (中文(简体) ),
review_packet.prompt,或 review_packet.inputs 确定路径 内部 工作树木,
它必须活在 .adlc/ 或者说 .omo/evidence/ - 说吧 lib/run.mjs是因为 isEvidencePath() 拒绝
任何其它工作环境 这是一个信任边界控制:它停止审查"证据"
从指向repo中其他地方的任意文件,该文件可被编辑成伪造文件
清洁审查. .omo/evidence/ 是另外的指定抓取空间, 但是三个文件
支持捆绑的示例( e)docs/examples/p5-passes.json)被刻刻刻刻刻刻刻刻刻刻
忽略规则和跟踪 -- -- 见注释 .gitignore 在治疗之前
下级 .omo/ 安全删除.
信托一级——需要交叉模式审查(T39)
给 信任根级干净的同型P5还不够 CLI计算
已更改的文件集 工作任务对 <base> (默认) --base main)——"二点"
git diff --name-only <base> (跟踪变化,包括未承诺),
无标记文件( n)git ls-files --others --exclude-standard)——将其分类为:
lib/tier.mjs包含工作-树木的有载荷:起诉与工作-树木相连
修订,所以三点 <base>...HEAD (仅承诺)将错过 未承付
编辑到一个信任根文件,让一个聚合的 P5 退出 0 没有证明。 变化是
信任根级,如果它碰到执行包
(单位:千美元)packages/rails-guard|prosecute|gate-manifest|build-gate/),一门相机制作人
(单位:千美元)packages/ticket-prune|ticket-sync/),一条被宣布的铁路拒绝任何罚单,一个CI
控制表面(在 .github/workflows/ 或者说 .github/actions/,测试路径
包含 —— 牵引请求运行它自己的复制件, 这样编辑可以实现所需的
检查通过而不运行),或信任根文件(scripts/rails-guard-ci.mjs, (中文(简体) ),
docs/ci/rails-guard.yml词根 package.json编号 :package-lock.json编号 :.npmrc, (中文(简体) ),
CODEOWNERS gitHub 读取任何位置的回放守护文件
lib/tier.mjs) (中文(简体) ). 售票店不是层地平面:铁道-护卫-ci已经拒绝
现有票的任何更改。 罚单表
铁道-密度-路径分层从 不变 --dir 起诉用途(退回)
改为 .adlc/tickets.json),所以铁路按照惯例宣布 --dir 并非是隐形的
一级。 A 类 完成 票道(completed: true,严格布尔)
铁道密度-路径原因——它们自动失效,匹配了铁道自有的T36完成状态
生命周期读取,所以变化在 packages/ 不是永远的分级 只是因为一些
已公布的长成票 packages/** 作为铁路(#905). 复制票号
在分类前合并了整个基站和工作树/高级专业技能证书的票表
赢取基准提示 completed 铁路连成一串
罚单在底盘上完成之前 一旦底盘完成 仍有好处
仅限总部完成的索赔仍不能免除基地小费仍在使用的机票。 因为
一个变化,一个经过的P5 额外 需要一个 cross-model-review
approve 在《古兰经》中 provider 与提交人不同,而且提交人
revision 等于经审查的修订。 失踪 – 2号出口.
作者身份被锁定在公诉方. 分级运行 MUST 声明作者
通过 --author-provider <p> (或 ADLC_AUTHOR_PROVIDER); 差异度对照
那个 起诉的提交人,而不是该条目的自报 authorProvider (单位:千美元)
证明书定义了双方,因此只比较自己的字段是可伪造的). 大门也是
要求为作者提供记录。 分层运行 没有
作者提供者 未关闭 (退出1)——无法在不知道情况的情况下证明其独特性
作者们.
在无法解决的基地上失败关闭. 分层需要底部的校对来计算分层 若为
<base> 无法解决(例如浅的 CI 检查结果没有) main),《国家行动倡议》 拒绝
1号出口的运行 而不是默默地跳过交叉模式的要求——沉默的
这个门是用来防止故障的. CI必须提供:
基础 (牵取取取取等. git fetch --no-tags origin main,或者通过一个明确的 --base <ref>) (中文(简体) ). 模拟单位运行,只表示趋同(而不是分层)通过 --base HEAD
所以,从 承诺 工作树、工作树和阶梯门都空了
关闭( 在承诺后进行此类检查; 未承诺的信任根编辑 ) .
(经实际交叉式审查批准后)将证明书记录如下:
ADLC_MANIFEST_KEY=<key> adlc prosecute record-cross-model --ticket <id> \
--provider <p> --author-provider <a> --verdict approve [--input <passes.json>] [--revision <r>]
记录需要签名密钥(#370). 门只通过它的
HMAC签名,所以一个没有签名的条目是惰性的. 无 ADLC_MANIFEST_KEY 命令
因此 未关闭 ——出站1号,无文字,并留言命名后果
而不是写一个没有签名的条目和报告成功。 那种旧行为的代价
在CI发现证明不值钱之前,
内容是永久的,名单是专列的,是散列的。 注意键是
通常保存在被标记的 .env.local 输入 主检出,则未在
每一棵树; record-cross-model 读它从 ./.env.local (从来没有) tier-check —— 说
见 lib/load-env-local.mjs因此,从一个工作树的来源 它明确地.
故意写一个未署名的条目——#326's def-resistance test does,以证明大门
拒绝一个——需要明确 --allow-unsigned未签名的书写者不会打印
成功行; 它会打印一个警告来命名结果 . --json 报告
"signed": true|false 和录制的入口一起走.
它解决修改的方式与大门一样(resolveProsecutionRevision所以通过
同样的 --input编号 :--revision 你用门跑. --provider 必须不同于
--author-provider ——同一型号的证明在创纪录的时间内被拒绝并被拒绝
大门(lib/cross-model.mjs,失败关闭). 就像护栏一样 这不能证明一个模型运行
提交人的身份现在来自检方的援引(不是自我报告)和记录
是一个可审计的、有修订内容的、只有附件内容的、独特的提供方的、有作者意愿的条目。 见
ADR-0007 (英语)。 。 。 .
截断反回滚锚( opt- in, # 355)
这是一种硬化模式 这个repo自己的狗食。 这不是需要的ADLC • 能力——没有收养者需要或预期会使用这种能力.
上面的跨型门关上 伪造 (签名覆盖条目)和 重写
(散列链+每进站签名拒绝一行已编辑到位置的行) — 见 HONEST LIMIT
注释 lib/cross-model.mjs。还有一个漏洞:控制公关分支的作者可以
截线 名单,丢出一个签名 needs-attention 完全撤销和离开
有效、较短、有效签名的链条,以较早的真核结尾 approve因为
修正散列排除了显示路径(所以记录证明不会改变它是什么)
证明的是,放弃的吊销单凭要求的检查是看不见的——它评价
只有断了的树.
lib/attestation-store.mjs 用被保护的反光镜关闭它:一个孤儿分支
(单位:千美元)adlc-attestations,规则保护——见
docs/github-rulesets/adlc-attestations-ruleset.json) 持有每个签名的跨型条目 a
信任的CI 运行曾经观察到过, 由新的 mirror-attestations 子命令 . tier-check
获得可选 --attestation-store <path> 旗帜;通过时,商店有签名的条目
这在公关的单子上不见了 门关上了
"ROLBACK/TRUNCATION DETED"消息(与"无证"和"链断"分开).
抹去旗帜 照搬今天的行为 这就是为什么这个机制是
选入而非烘焙入共享库的默认路径. 只有这雷波自己的
.github/workflows/cross-model-gate.yml 被接线使用(该工作流程从未是
分布式模板,与 docs/ci/*.yml) (中文(简体) ).
有文件证明的剩余限额: 只有在信任的 CI 运行时才会保护撤销 观察了它(在中断前至少一次输入公关和工作流程)。 A 类 记录的但从未被推倒的吊销对每个人来说都是看不见的——与一次接触相同 未提交审查。 这绝对比上面的伪造/重写门好,不是 (a) 索赔完整性.
被篡改或按键旋转的商店条目 FAILS CLOSED,没有默默忽略. readObservedAttestations
财务报告和审定财务报表 mirrorObservedAttestations 如果任何商店条目的签名无法验证, 则同时掷出..
这或者是一个 ADLC_MANIFEST_KEY 旋转( 每个历史存储条目都需要迁移)
在新键上,与主显示链已经要求的相同处理)或由
绕行级别写入访问者 adlc-attestations。旋转签名密钥是
所以这家店也有迁移事件: 重新铺设或重新签名,别指望
tier-check --attestation-store 不停地工作 轮到没有那一步.
被观察的条目范围为 (revision, authorProvider)而不是通过公关/分支身份——故意.
两种不同的公共关系,偶然产生一个字节相同的修改(同基,相同)
diff——一个重复的分支,例如)共享被观察到的输入历史,所以一个被撤销的镜像
从一个可以阻挡另一个。 这是有意的,而不是空隙: revision (更改设置的身份)
从"365"已经表示"被审阅的更改的特性",""365"本身的结转"
特性将相同的更改集摘要作为进行判决的理由 转发处理
同一文摘作为携带 撤销 向前是对称的,一致的
后果——增加一个PR-唯一歧视者以避免这种情况会使攻击者躲避被撤销者
通过打开含有同字节内容的新PR来审查. 见
设计文件
完整的威胁模型,形成最终设计的尸检/截面结果,以及
为什么商店的路径必须生活在树外 分层.
退出代码
0:记录了连续两次干证(或记录了调查结果/证明)1: 操作错误2:经核实/需要 -- -- 人类调查结果依然存在,合并预算在两次干燥之前结束 通过,信任层的变化缺乏匹配的跨模型证明,或者(与--attestation-store检测出回滚/倾覆
核心差距
这个软件包记录了跨型号的证明 @adlc/gate-manifest链条
record() (见 lib/cross-model.mjs并读回他们通过 @adlc/core是因为 readEntries。 。 。 .
信托级分类员(lib/tier.mjs住在这里,而不是在 @adlc/core
(被冻结),因为它是针对具体起诉的政策;如果第二套需要同样的政策
二进制信任根决定,列出的表面(执行包、生产者、,
信任根文件)最理想的将升级为 @adlc/core 与现有
railpath编号 :risk-tier 帮助者,所以列表有一个单一的真理来源.
ADLC 阶段
P5起诉. 这个工具使得审查证据和干道记录可以执行,但
名为 provenance.command 仍然是审查的来源.