Files
aios/docs/implementation-baseline-1.1/ACCEPTANCE_MATRIX.md
T

9.8 KiB
Raw Blame History

AIOS Baseline 1.1 验收矩阵

本矩阵定义 AT-01~AT-23 的验收标准和证据边界。它不以“测试文件存在”冒充通过:本次本地自动化的实际命令、退出码和数量以包内测试结果文件为准。下表标注的是覆盖入口及尚需现场核验的范围,单项 AT 只有在全部必要证据齐备后才能标记验收通过。

状态约定:LOCAL_AUTOMATED 表示已有可执行本地测试入口;LOCAL_PARTIAL 表示只能覆盖该场景的一部分;SITE_REQUIRED 表示必须在准确绑定的现场环境补充验收。上述标签不是 PASS。未执行、证据过期、身份不符或无法访问目标均为 NOT_VERIFIED/UNKNOWN,不能按健康放行。

ID 场景与必须满足的结果 本地代码/测试入口 当前证据边界与现场补充
AT-01 缺失/过期 observation、错误任务身份、main 与 runtime 不同;UNKNOWN fail-closed;drift 比较 DeploymentTarget 与 observation,不拿 main HEAD 当 desired test_contracts.py、test_loop.py;Runtime Contract / deployment evaluator LOCAL_PARTIAL;需现场核对 Resolver、正式入口、canonical ref 和 artifact identity
AT-02 支持包缺文件、改一字节、额外未声明内容必须校验失败;生成身份与内容可追溯 test_package_tools.py;bundle.py verify/stage LOCAL_AUTOMATED(源码包边界);线上运行镜像与 overlay 构建仍须独立验证
AT-03 每个允许执行的 operation 在 dry-run/shadow 下都不调用副作用 writer,不伪造已执行或发布成功 test_job_safety.py;既有 Job executor dry-run 分支 LOCAL_PARTIAL;新 adapter 加入注册表时必须补相同负面测试,不能沿用其他 adapter 结论
AT-04 同一有效 Grant 下短期证明过期/服务重启仍能完成后续授权范围内任务;不重复业务审批、不扩大权限 test_authorization.py、test_loop.py LOCAL_AUTOMATED(授权/本地任务);完整生产发布链仍需 AT-16
AT-05 父 Grant 撤销、过期、签名错误、跨 tenant/subject/scope 重放、伪造 Mapping 在派生与消费两端均拒绝 test_authorization.py、test_transport.py LOCAL_AUTOMATED;真实密钥轮换和撤销传播需部署证据
AT-06 过期 lease、终态 Job 再领 lease、旧 generation 延迟写均拒绝;新 claim 保持独占 test_job_safety.py、test_worker_host.py;TaskPlaneStore 原有回归 LOCAL_PARTIAL;每个实际外部写接收端须证明 fencing 生效,不能只在发送端检查
AT-07 外部成功而 receipt 丢失、对账中止、双 observer 乱序;复用 effect、精确 readback、旧结果不能覆盖新事实 test_job_safety.py、test_release_lineage.py LOCAL_AUTOMATED(可控 effect sink);实际远端 readback 身份契约需验收
AT-08 ready+600 秒后扩大 eligible Worker;普通与 fallback Worker 竞争仍只有一个 CAS claim,不抢有效 lease test_worker_host.py、test_loop.py;WorkerProfile/TaskPlaneStore LOCAL_PARTIAL;需常驻实例 heartbeat/transport 与竞争运行证据;聊天 GPT 不算 Worker
AT-09 blocked 任务未进入 ready 时不静默无限等待;显示 blocker、持续时间、修复和升级边界 服务端状态与错误返回;本包实现范围以源码报告为准 SITE_REQUIRED;完整 Doctor 自动修复/升级场景不能用普通任务成功代替
AT-10 Worker/子进程退出、取消、超时、重启;有限终止、服务端恢复,同 effect 不因缓存丢失重复 test_worker_host.py、test_loop.py、test_transport.py、test_job_safety.py LOCAL_PARTIAL;实际 systemd kill/restart、取消竞争和主机启动顺序需演练
AT-11 重复提交/事件/回执、提交后投递器退出;outbox 持久、去重、终态不倒退 test_loop.py;TaskPlaneStore outbox 与幂等接口既有测试 LOCAL_PARTIAL;通知投递器/inbox 的端到端故障仍需专门证据
AT-12 跨 tenant/subject 查询、取消、执行和关联被拒;Worker 不能读服务端私钥和其他工作目录 test_authorization.py、test_loop.py、test_transport.py、test_release_lineage.py;独立 UID unit 模板 LOCAL_PARTIAL;artifact 下载、cache key、文件权限及真实子进程边界需现场覆盖
AT-13 Bridge/provider 独立重启或 token 轮换后使用自身 credential projection,不依赖另一服务临时目录 修订现有 staging unit;deploy/baseline-v1.1/ 凭证模板 SITE_REQUIRED;静态 unit 不等同于解密、轮换和重启已验证
AT-14 子任务、重复诊断和连续失败不能用新 task ID 重置 Grant 预算;超限有界停止 test_authorization.py;持久 effect 预算;test_optimization.py LOCAL_PARTIAL;目标级总成本、墙钟、模型预算的完整现场计费来源仍须接线
AT-15 支持 profile 可在干净目录执行;错 source/config 的证据不能放行;未绑定线上权威明确拒绝 test_package_tools.py、test_cli.py、test_contracts.py LOCAL_AUTOMATED(隔离 profile);目标 OS、Python、systemd 版本与现场配置仍需记录
AT-16 同一 Grant:patch→tests→受保护 merge→build→staging→业务验收→production→生产业务验收;全程有唯一关联 test_release_lineage.py;ReleaseLedger/recipe/receipt verifier 接口 SITE_REQUIRED;本包的状态机和模拟 adapter 测试不等于真实发布链已完成
AT-17 编码 Worker 自报成功、伪造 receipt、降低验收规则或读签名私钥不能放行 test_authorization.py、test_release_lineage.py、test_optimization.py;API/Worker 独立 UID LOCAL_PARTIAL;生产 verifier 独立职责、规则冻结和私钥访问权限需现场验证
AT-18 优化无改善或越过质量底线不晋升;优化提案只生成受治理任务,不直接写 policy DB test_optimization.py;签名 OptimizationEnvelope LOCAL_AUTOMATED(提案与质量约束);真实实验数据来源、回滚及模型成本路由需后续验收
AT-19 旧 schema/任务与新版本并存时保留原签名字节;main 合法前进不等于 runtime drift;旧 handler 明确处理 test_authorization.py、test_contracts.py、test_release_lineage.py LOCAL_PARTIAL;线上旧任务排空、writer 停用、迁移/路由策略需现场清单
AT-20 坏候选、控制面不能启动、数据迁移不可逆时只允许兼容回退或前向修复;无万能 root test_release_lineage.py、test_package_tools.py;源码回滚、Release 回退约束 LOCAL_PARTIAL;数据库迁移/外部副作用不由源码 rollback 撤销;独立最小恢复流程需现场演练
AT-21 SQLite/Git/receipt 一致备份在隔离环境恢复,保留身份和未决 effect;实测 RPO/RTO 各 ledger 重启测试是局部依据;安装文档给出一致备份边界 SITE_REQUIRED;本包没有以“可重开 SQLite”宣称整机备份恢复验收通过
AT-22 persist intent→外部 effect 成功→主机在 receipt 落盘前失去执行能力;恢复同 effect→RECONCILIATION_REQUIRED→readback→补 receipt;外部效果次数仍为 1 test_job_safety.py;子进程退出/独立持久 effect sink 故障注入 LOCAL_PARTIAL;SIGKILL/进程崩溃不能证明磁盘缓存断电持久性,物理/虚拟机硬掉电需现场验证
AT-23 intent/lease 无法持久化时不得开始 effect;effect 后 receipt 无法提交则停止新 effect 并恢复对账;磁盘满/WAL/receipt unavailable 不冒充完成 test_job_safety.py;SQLite/receipt 写失败注入及持久停止边界 LOCAL_PARTIAL;实际 ENOSPC、WAL checkpoint、目录权限/介质损坏需隔离卷或现场故障试验

每次验收必须保存的记录

每条记录至少包含:AT 编号、完整命令、开始/结束时间、执行环境、源码/构建/配置身份、Grant/Task/effect/job/Release/deployment/acceptance 关联(适用时)、注入点、实际 observation、receipt 引用、退出码、明确结论和剩余缺口。密钥/token 只保存 CredentialReference,不能复制到报告。

UNKNOWN、RECONCILIATION_REQUIRED、预算耗尽导致的有界停止都可能是正确故障处理结果;它们不是业务成功。只有可信且当前的业务 acceptance,准确绑定 deployment+release+artifact,才能关闭相应发布验收。

M0–M5 的放行顺序

实施包 放行条件 不可用来代替放行的证据
M0 Truth & Identity 静态 Contract、动态 target、observation、provenance 分离;Resolver 与 CredentialReference 对应真实目标;UNKNOWN fail-closed 目录存在、进程健康、main 与 runtime 碰巧相同
M1 Authorization & Effect Safety Grant→短期证明→Principal→实际 lease/fencing;意图先持久化;未知结果精确对账;AT-22/23 本地故障通过 仅延长 TTL、发送端自称 fenced、effect 成功但未写 receipt
M2 Real Autonomous Loop 至少一条真实非发布 Action→Task→常驻 Worker→已注册 operation→receipt→result;tenant/subject 在服务端派生 仅 scheduler 单元测试、伪造 worker 或直接函数调用绕过 admission
M3 Release Closure 同一 Grant 完成真实 patch 至 production business acceptance,至少一次 ambiguous publication/worker crash 自动恢复 本地 Release 状态机、模拟 adapter、部署命令返回 0
M4 Surface Reduction 每类事实 active write authority=1;旧入口停止接收新任务;历史任务可追溯;恢复演练通过 新模块存在但旧 writers 仍在写,或把全系统静态函数数当活跃写者数
M5 Optimization 签名 Envelope 限定范围;真实效果和质量底线可核验;只经受治理任务晋升并能回退 optimizer 自报改善、直接改 policy DB、放宽验收阈值