Repository navigation
Retire protocol action packet readers and legacy witnesses - #7161
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…egacy-projection-20261023 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…egacy-projection-20261023 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
Exact head: cacf609d61090ef2334994b64d4a79b0d1a46c22;immutable baseline: cde8f0354ca1738f3b6ed8a175f01283cdb3e2db。
[P2] 新增 Python 旧字段消费者违反冻结退役上限,且被更早的既有失败遮住。 第47行新增 protocol_action_packet 读取;修改前 ledger的 Python carrier 与 migration surface 上限均为1。对两个实际 Git 版本使用同一完整 tracked-source census,基线两项都是1,当前都是2,既有读取位于 presentation/renderers/quota_markdown.py。完整 smoke 在两版都先因无关 goal_boundary 32/30失败,不能据相同首条错误推断此 PR 没有新增退役回归。修复新增 Python 旧字段读取面,使现有冻结上限继续成立;复用已有 typed reader 边界。若不能在单次粗粒度事务内保留该优化,可收回 Python 预判、如实缩小现代分支收益声明;不要隐藏字段、提高上限或为检查存在性增加一轮 RPC。
动机
通过 Python 兼容 API、quota signature 与 TurnEnvelope 读取现代决策或历史 witness 的调用方。
原始历史字段在 Python 选择和组装,TS 又有 compact-derived 有序组装;现代无旧包的调用也提前运行历史 provider。
本次六文件改动将历史字段选择和有序组装收敛到 TS,保留兼容 API;完整输出及有序文本对照相同。新增 Python 旧字段消费者仍违反冻结上限。
不缩减模型输入,不新增准入、状态、provider 或 UI,不声称安装采用、端到端提速或模型收益。 新增字段迁移面须修复;当前源码对照不结算安装态资格、完整成本和整个 quota/Turn 融合。
改动思路
原始字段选择与共同有序组装收敛到既有 TS Turn owner,Python 保留共享 provider 与原文本转换,历史/compact 两份输入仍独立;但新增 Python 字段预判使冻结迁移面从1增至2,必须修复。
本 PR 可交付历史字段 owner 收敛及兼容 API;当前必须去除新增字段迁移面。保留全部历史 witness、完整输出和签名,不以无关旧失败替代这个新回归,也不扩展为新桥接框架。 最小边界是复用已有 reader、保留原 codec、同次事务完成字段选择;独立兼容 API 新增一次 TS 交易,已在协议文档披露。历史格式有明确持久支持义务,不能为减少行数删除。若现代无包优化不能在冻结边界内保留,应明确缩小该收益,不能掩盖字段或新增属性探测 RPC。
具体改动
spec_ref: loopx/semantics/vocabulary_v0.json;spec_revision: cde8f0354ca1738f3b6ed8a175f01283cdb3e2db。以修改前退役 ledger、既有历史格式/API契约和 TurnEnvelope 原验收判断,没有用新加协议段落自证。
protocol_action_packet.python_module_budget:not_met,完整 Python carrier 与迁移面均1→2;最小修复见首条 P2。historical-witness-and-signature:implemented,原始与 compact-derived 输入独立,verified/residue/opaque/missing 及冻结签名保留。capture-and-outer-effects:implemented,原 capture、来源检查、重试、Host 拒绝与外层恰好一次效果保留。ordered-field-api:implemented,原 Python 标量、空白、Unicode codepoint、字段顺序与兼容 API 在本次独立对照中保持。
关键代码讲解
interaction_contract.py::protocol_action_packet_inputs保留共享 user/action provider、严格 bool 与 Python v0 文本转换,替代原 actor/字段组装分支。protocol_action_packet_fields成为已有 TS reader 的兼容入口,并覆盖回原 metadata 值,避免1.0被 JSON 改成1。turn_envelope.ts::originalProtocolActionPacketFields负责原始 actor/action 选择;orderedProtocolActionFields与 derived 路径共享有序组装。原始文本与 compact codec 仍分别进入 residue 核验,没有用当前动作改写历史摘要。_protocol_action_projection在无有效旧包时跳过历史 provider;存在时携带准备输入加入原 build/signature 事务。34次实际 build/signature 调用各只有一次 owning coarse transaction;第47行新增 Python key 读取本身仍违反冻结门禁。- 新15例 literal API 测试覆盖严格 bool、非标量、emoji/控制空白、Python whitespace、float与顺序;原 history 文件增加4例现代路径不依赖旧指导 reader 的回归。协议新增段落明确 owner、转换与独立 API 的桥接成本。
对主干的风险
对新基线与本 head 重新执行17组同输入生产投影:完整 envelope 与两份 signature document 共191609字节逐项相同,无输出归一化。另96组独立字段 API 输入覆盖12种状态和8种文本/类型变体,完整有序字段、嵌套标量类型和摘要全部相同,零拒绝。新15例 literal 在两版都通过;4例现代 callback sentinel 在新基线失败、在 head 通过。
本方较广 Python 运行183通过、24失败、1跳过,包含10项真实 File/SQLite CLI 到子进程 Host 的 capture/recovery 测试;基线相关子集33通过、同24失败。完整24项 pytest 诊断逐项相同,仅归一化源码根、pytest临时根和对象地址,没有去掉语义字段、断言、错误码或 hash。原 depth12用例在两版均因相同宿主临时目录条件跳过,保持未资格。42项 TS 测试与配置内 control-plane typecheck 通过。Host 模型端为合成可执行程序,不是活模型或安装采用验证。
标准 premerge 的6项直接检查及18/19项范围检查通过,含公开边界。唯一执行失败先报告既有 goal_boundary;其完整错误和全部计数在新基线与 head 相同,单独保留为合并限制。同时,完整 census 明确证明新增的 packet1→2回归,不能因前一失败提前退出而漏掉。旧九行版本的结果保留为历史,没有当作本次六文件 head 的验收。未查询 CI,未测得净延迟、模型输入或完整请求成本收益。
我的整体评价
REQUEST_CHANGES:字段选择向既有 TS owner 收敛有实际维护价值,原格式/API兼容和输出对照证据也成立;当前仍需修复首条冻结迁移面回归。没有要求此 PR 修复无关旧 fixture 或整个父级融合。原始字段选择与共同有序组装收敛到既有 TS Turn owner,Python 保留共享 provider 与原文本转换,历史/compact 两份输入仍独立;但新增 Python 字段预判使冻结迁移面从1增至2,必须修复。 本 PR 可交付历史字段 owner 收敛及兼容 API;当前必须去除新增字段迁移面。保留全部历史 witness、完整输出和签名,不以无关旧失败替代这个新回归,也不扩展为新桥接框架。
长程要求、完整文本、权限和恢复边界按 preserved 判断,新增 key guard 的位置仍不满足退役契约。检查 Python/TS 投影与兼容 API、协议文档和原调用方;没有渲染页面或首屏改动。 视觉未验证范围:none within this internal projection presentation boundary。随包经验用于核对真实调用方、完整成本和最小有用边界;没有把代码减少、经验投递或测试数量当作模型收益。
English verdict: REQUEST_CHANGES — cacf609d61090ef2334994b64d4a79b0d1a46c22. The six-file TS consolidation preserves17 complete envelope/signature observations and96 ordered API/type/text observations. However the new Python legacy-key read expands both frozen packet carrier and migration counts from1 to2 against1. The identical earlier goal_boundary failure masks this additional regression in the fail-fast smoke. Repair the new carrier boundary without hiding the token, raising the budget or adding a property RPC. Positive Host/TS checks and unrelated fixture failures remain separately credited; no model or latency benefit is claimed.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
Exact head: 365560cc3c700284674210f3e09799b42c340ad9;immutable baseline: 334da0973f786e748013b926cc85b5680a5343b0。
[P2] 在 source 投影前拒绝退役的 capsule witness。 quotaActionSignatureDocument 第866行先调用 turnActionProjection(payload),而 source guard 只检查 top-level key。若给一份有效的 packet-free decision 加上 contract_capsule.protocol_action_packet,原 capsule 会在投影中被重建,随后签名检查看不到旧 witness。实际以仓库冻结 missing_packet decision,加 null、空对象和非空 witness 三种值:直接 builder/quota signature 均成功并丢掉 witness;同一输入在 CLI/renderer 明确报 unsupported。Effect reader 也接受这三例。在 source 转成 action projection/新 capsule 之前,用同一 typed 拒绝 owner 校验 top-level 与 contract_capsule 两种已声明位置;空值也按 presence 拒绝。补充同一输入跨 builder、quota signature 与 CLI 的反例,保留现代全输出及原签名检查。 这是格式拒绝不一致,未声称已经绕过 Host 权限或伪造签名。
动机
读取普通 quota、历史输入、TurnEnvelope、CLI/Markdown 与签名文档的现有调用方。
原实现仍读取历史 packet,重建字段与 residue/opaque witness;当前源码改为显式退出该格式,现代 packet-free v0 仍受支持。
现代10组完整输出与签名保持一致,旧格式改为明确拒绝且原件不改;但同一 nested capsule 输入在 CLI 拒绝、直接 builder/signature 接受并丢掉 witness,退出契约尚未完整落实。
不自动迁移或重签历史记录,不新增准入、执行权限或模型步骤,不声称安装采用、性能或 token 收益。 投影前的 capsule 拒绝缺口须修复;实际 release/安装及未知外部归档不由本次源码评审资格化。
改动思路
旧格式选择、重建和传输准备已删除,当前普通路径直接复用原 TS owner;但 Python 渲染路由与 TS source 路由的 capsule 判定不一致,应在既有 typed 边界统一。
本 PR 现在是25文件的显式格式退出,历史原件保持,旧格式有意不再受支持;当前须补齐投影前的同一拒绝条件,而不是恢复全部旧解析器或另建迁移服务。 这已是显式 breaking input-format proposal,不能沿用旧六文件版本“保留历史兼容”的判断。修改前协议允许另行声明 reader 退出和迁移政策;新文明确源码/首个正式 release 边界、原件保留和恢复办法,评审不把该声明当作合并、安装或发布授权。
具体改动
spec_ref: docs/reference/protocols/protocol-action-packet-decision-v0.md;spec_revision: 334da0973f786e748013b926cc85b5680a5343b0。以修改前的 reader lifetime、未来 breaking policy、原始记录与签名约束判断。当前新增的退役文字是被核验的改动,不能自证实际拒绝已经完整。
separate-reader-removal-policy:implemented,显式退出特定格式,公布源码/首次 release 边界和恢复;不是所有 v0 退出,也不重写/重签原件。canonical-source-and-witness:not_met,首条 P2 的 nested source capsule 被直接 API 归一化掉,和同一输入的 CLI 判定矛盾。packet-free-signatures-and-effects:implemented,现代 typed 动作、必读、权限、原 capture、重试及外层效果在本次对照中保持。preserve-original-history:implemented,冻结 fixture 原字节与 digest 不变;3个旧包记录现在有意拒绝,1个无包原记录仍按原签名/Host 读取。旧兼容结果只保留为历史。
关键代码讲解
effect_program.ts::assertSupportedQuotaPacket新增 own-key presence 拒绝,quota 的protocol_summary固定 null;独立 turn-result family 仍保留该 observation 字段。- Python 原字段选择/摘要 renderer、TS reconstruction/residue/opaque、准备字段传输及旧 verifier 被删除。现有 Turn/Effect owner 继续控制动作、签名与效果,没有新服务或持久状态。
- 直接 envelope signature、capture bind 和 replan identity 明确检查 envelope 与其 capsule;但 source build/signature 经投影重建 capsule,漏掉输入 capsule。这正是新增不一致的路径。
- CLI 在可选投影/fallback 前调用
effect_program.py::reject_retired_quota_format,两个 Markdown renderer 复用该共享 Effect 适配器。现代 rendering 无额外 RPC;该 Python 路由对 nested capsule 已拒绝,不能代替补齐 typed source owner。 - 十份协议/RFC/ledger 文档声明格式边界与原证据保留;六份测试改为现代支持/旧格式拒绝,并为 settlement、File/SQLite CLI 建立 canonical fixture。两组 RFC 镜像已核对。当前说明与验证应对应这25文件 head,旧
cacf609的兼容 API 数字不能充当本版资格。
对主干的风险
本 head 标准 premerge 的6项直接检查和19项范围检查全部通过,含完整语义扫描、双语与公开边界,零 manual holds。当前 census 为 packet Python1、TS1,既有上限未提高;前次 review 的1→2问题已解决,不再作为阻断。
10组相同 packet-free 输入的完整 envelope 和两份 signature document 共123371字节逐项相同,无输出归一化。TS 全部源码、测试与依赖声明未变,按 blob 对照复用 439cb5f 的47项 TS 与 typecheck;新 head 的 Python/CLI 路由已重跑。本方 Python 较广运行135通过、20失败、1跳过,包含真实 File/SQLite CLI/Host capture、来源变化、丢失/损坏拒绝、重试和终态不重复效果。基线相关子集10通过、同20失败、同1跳过。20项 setup 失败的节点与完整 pytest 诊断逐项相同,仅归一化源码根、pytest临时根和对象地址;未移除断言、语义字段或 hash。原 depth12用例在两版均因相同宿主布局跳过,保持未资格。
这些通过不覆盖首条反例:冻结无包 source 加 nested witness 后,3个值经5个实际入口形成9次错误接受和6次正确拒绝,输入完全未改。提交测试覆盖 top-level 旧包和直接 stored envelope,遗漏了 source 内的 capsule。未查询 CI,未安装、运行模型或验证未知私有归档,未证明成本/性能收益。
我的整体评价
REQUEST_CHANGES,依据是当前 head 的实际 capsule 拒绝缺口。承认前次字段数量问题已修复,承认现代全输出、真实宿主和标准检查通过;不把有意撤销的旧格式兼容误说成已保持,也不要求恢复全部旧 reader。旧格式选择、重建和传输准备已删除,当前普通路径直接复用原 TS owner;但 Python 渲染路由与 TS source 路由的 capsule 判定不一致,应在既有 typed 边界统一。 本 PR 现在是25文件的显式格式退出,历史原件保持,旧格式有意不再受支持;当前须补齐投影前的同一拒绝条件,而不是恢复全部旧解析器或另建迁移服务。
现代长程要求和效果边界保留;相同输入的错误/恢复行为目前不一致,必须补齐。检查既有 CLI/Markdown/Host 错误与恢复入口;没有页面或首屏布局改动。 视觉未验证范围:none within this internal projection presentation boundary。随包经验用于核对真实调用方、完整行为与最小修复;测试数量、删行数与文档声明都不能替代拒绝条件的实际覆盖。
English verdict: REQUEST_CHANGES — 365560cc3c700284674210f3e09799b42c340ad9. The declared legacy-format retirement is explicit, the old carrier-count finding is resolved, and all6 direct/19 selected premerge checks pass. However a valid source carrying a retired nested capsule witness is accepted and normalized by build/quota-signature while the same input is rejected by CLI/rendering. Reject that capsule before source projection; cover null,empty and witness values across the same public APIs. Ten complete modern pairs,47 source-validated reused TS checks and real Host coverage remain positive evidence; unrelated20 fixture failures and the native-layout skip remain separate.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
APPROVE:未发现当前 head 的阻断项。此前嵌套 contract_capsule witness 被源投影丢弃的问题已通过共享入口修复;本结论重新评估完整 25 文件变更,不沿用旧结论。评审对象是 a7ee1eafc8ed1101e876bc9dd61602d547e4af67。这是有意退出旧输入格式的源代码提案;批准评审不代表已批准合并、安装或发布。
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max
动机
受影响的是读取 quota 决策、构建或校验 TurnEnvelope,以及使用 CLI/Markdown 读取这些结果的调用方。TurnEnvelope 是携带当前动作与签名事实的执行输入;旧 packet 是已经停止由新决策生成的兼容摘要。
调用方读取旧 quota 决策时,过去会重建兼容摘要;本次改为在读取、投影和签名前明确拒绝,并提示获取当前 typed 决策,避免不同入口把同一旧 witness 解释成不同执行事实。
普通无旧字段决策保持完整输出和原签名;携带旧字段的输入在所有已声明入口一致报 unsupported format,原始历史记录保持不变。价值是删除已经退出写入路径的重建、残留和 opaque 分支,并使支持边界一致;没有测得速度、token 或长期效果收益。
本 PR 不完成父任务的主干性能改进,不发布或安装版本,不证明模型采纳、外部存档升级或完整 replan→Host 路径,也不授予合并权限。父项 #7166 的共享 typed 投影与实际后续执行仍待其 owner 完成;当前两个基线一致的 replan→Host 用例未到达 Host,不能把本次清理视为该路径或长期效率验收。
独立规范依据是改动前的 docs/reference/protocols/protocol-action-packet-decision-v0.md,spec_revision 为 334da0973f786e748013b926cc85b5680a5343b0。原规范明确:停止写入不等于删除 reader,后者必须单独声明 breaking protocol 与数据政策;不能用本 PR 改写后的文档反证自己。逐项判断:
separate-reader-removal-policy:当前文档单独提出 source/首个包含该变更的官方 release 边界,说明原件保存与恢复方式,不宣称已经发布或认证未知客户端。canonical-source-and-witness:共享 guard 在原 source 转为新 capsule 之前检查 root 和原 capsule;同一输入的跨入口反例现已全部明确拒绝。packet-free-signatures-and-effects:10 组现代完整输出及两种签名文档逐字节一致,现有真实 capture/CLI/File/SQLite/Host 正向路径得到覆盖;完整 replan→Host 缺口另外保留。preserve-original-history:冻结记录原始字节与哈希未变,不删除字段或重签。三种旧格式现在明确拒绝,原 packet-free 历史记录继续通过原签名和 Host 校验。
改动思路
把两种已声明位置的 presence 判断放在现有 TypeScript Effect owner,删除三个调用方的重复 capsule 检查,既统一了拒绝次序,也避免新增 Python 决策副本;现代输出不增加 RPC。
当前 PR 是完整的旧输入格式退出与维护成本收敛:保留原件、明确拒绝、保留现代签名语义;共享投影、安装升级和长期效果由现有父项及发布 owner 验证。最小的 root-only 修复已经被独立反例证伪;另建迁移服务或在签名前删字段会扩大实现或改变历史含义。保留全部旧 decoder 则没有兑现本次明确提出的退出边界。
下面是从 exact head 源代码归纳的比较表,属于说明,不替代执行证据:
| 输入与入口 | 改动前/上一轮缺口 | 当前结果 |
|---|---|---|
| 普通 packet-free source/历史记录 | 当前 typed 路径与原签名 | 完整输出与原签名保持 |
| root 旧字段,含 null/空值 | 兼容重建;上一轮已拒绝 | 在解释、投影和 fallback 前拒绝 |
| 原 source 的 capsule 内含旧 witness | 上一轮 builder/source signature 会丢弃它,CLI 则拒绝 | 同一共享 guard 在转换前拒绝,15 个独立调用全部一致 |
| 原始旧格式历史记录 | 原 reader 接受 | 明确 unsupported;保留原件,用隔离的兼容旧 reader 查看或重新取得当前决策 |
这不是 default-off 功能:旧格式接受范围有意改变,不能声称旧输入仍然兼容。新规则不增加问题、确认、admission 或能力激活流程;普通现代调用无需额外操作轮次。
具体改动
完整 base→head 为 25 文件、+447/-1018:删除 Python 字段选择/渲染和 TS 重建/残留/opaque 分支、废弃 transport 参数及过时 acceptance verifier;增加小型共享拒绝入口,并同步协议、两组双语 RFC/ledger 与回归测试。共享 protocol_summary 仍服务独立 turn-result 家族,quota 返回 null;不能为删除旧 quota reader 顺带破坏另一输入家族。
相对上一轮 365560cc3c700284674210f3e09799b42c340ad9,只有 3 文件 +33/-8:guard 覆盖原 capsule、三个 reader 去掉重复判断,以及扩展真实入口的 presence 回归。已核对其余 source/配置/依赖/文档/测试不变,重跑变化所影响的 typed、Python、实际入口及 whole-output 证据;没有继承上一轮 verdict。
关键代码讲解
assertSupportedQuotaPacket同时遍历原对象及asObject(packet.contract_capsule),用Object.hasOwn判断。null、空对象、未知或 malformed 值都按 presence 明确报错;不依赖文本关键词、不改原输入。interpretQuotaShouldRunPacket在解释执行事实前调用它。actionProjection先把原 payload 交给上述 interpreter,再构造动作和新 capsule。这个顺序修复了“先投影掉 witness,再把它当不存在”的真正漏洞;只在构造后的 Envelope 上补 guard 无法覆盖它。turnEnvelopeActionSignatureDocument仍由原签名 owner 读取 canonical 维度,但先复用完整 guard。capture binding 和 replan identity 同样复用它,因此删除各自的 capsule 重复检查有实际依据;旧 witness 不能通过重算签名转成当前权限。reject_retired_quota_format仅在原 root/Mapping capsule 出现旧字段时路由到实际 TS reader。它不重建动作事实;支持输入不新增 RPC。两个 Markdown renderer 使用这个已有桥接,错误由现有 typed adapter 传回。_project_quota_cli_payload在可选投影和 fallback 之前执行同一拒绝路由。这样 full 输出也不能绕过拒绝。正常决策取得、capture/retry/terminal replay 继续由原 authority owner 管理。
对主干的风险
主要风险是有意 breaking 的 reader 支持政策,而非新增状态:未知独立旧客户端需要升级。历史 packet、witness、receipt 和签名必须保留原样;拒绝后通过正常入口取得当前 typed 决策,或用隔离的兼容旧 reader 查看原件。不能手删旧字段、重签、据此重放活跃状态,也不能从格式级回滚推导整库降级安全。
本次独立验证:
- 同一冻结 packet-free source,只增加 nested witness 的 null/空对象/非空对象,经过实际 Effect、builder、quota signature、Python renderer guard、CLI full projection 共 15 次调用:上一轮是 9 次错误接受、6 次拒绝;当前 15 次均为明确 unsupported,0 次错误接受,输入不变。提交中的回归另覆盖 6 值×root/capsule 两位置及相关 capture/Host 入口。
- 10 组现代全输出与签名观察共 123371 字节,不做归一化即可与不可变基线完全一致。当前 head 实际重跑;基线复用已绑定
334da0973f786e748013b926cc85b5680a5343b0且源/配置/依赖假设复核过的实际观察,不冒称本轮重跑。 - 冻结历史 reader 在基线和当前均新执行:基线 4 种原记录都接受;当前 3 种旧格式在 source signature、Envelope signature、Host 三入口明确拒绝,packet-free 原记录继续通过原哈希/Host。冻结文件 SHA-256 为
da0520a7f1b41402229e31a690b6b5a5e1e83144cb21f9b2960d4aebd4dccb14,未改写。 - 当前 62 项 TypeScript 测试和配置的 control-plane typecheck 通过。九文件 Python 结果是 147 通过、22 失败、1 跳过,不能写成全绿。20 项 capability/vision 在原有 todo fixture 准备阶段失败;另 2 项 bound replan→Host 在到达 Host 前实际 route 为 blocked。所有 22 项的完整归一化诊断与不可变基线逐项一致,摘要
a964b5c96c020fed19d7b76daf3c337d1ddc6baccf518b6b10bdba76beaca264;20 项基线复用原实际运行且复核未变条件,2 项则本轮重新运行整个基线 context suite,结果 6 通过/2 失败。仅归一化已知源目录、pytest 临时序号、对象地址及同一 Python 3.14.8 标准库相对前缀,未删除断言或语义诊断。当前修复未改变这些失败的因果路径,改变的 reader 不变量有独立通过证据。depth-12 因原生临时目录无法容纳限定布局而跳过,保留平台缺口。
语义与 CI 对齐
按仓库当前本地风险选择执行标准 premerge:6 项直接检查+19 项选中检查全部通过,0 manual hold,包含完整语义、双语、编译与 public boundary 检查;没有放宽预算、删冻结记录或用 mock 提供所评审的后置条件。未查询、轮询或等待 GitHub CI;该信息不构成本次评审缺口。
现代完整动作、required reads、actor scope/lease、stop、先后次序及 settlement 文本与签名原义保留。旧格式拒绝是机器执行的支持边界,不是“建议”;不能把格式变化包装成义务压缩或 default-off。新错误文案保持 domain-neutral,不按项目或 benchmark 字符串判断。本地通过和 APPROVE 仍不授予 maintainer merge、release、安装或 active-state replay 权限;广测中的基线失败也没有被声称修复。
我的整体评价
未发现当前 head 的阻断项,建议接受这份边界明确的源代码提案。修复不仅增加检查,还把原 source 与 stored Envelope 的拒绝规则收回同一已有 owner,删除重复判断和真实旧知识;独立历史反例现在通过,完整现代语义与冻结历史含义分别得到验证。这里的简化判断针对整个 25 文件退出提案,不只针对最后 3 文件或测试数量。
未修改渲染布局:检查的是 Effect/TurnEnvelope、CLI 投影与两个 Markdown renderer 的输入支持和错误路径,不涉及页面层级、折叠或首屏构图。未验证安装中的 App、未知外部客户端及私人历史档案的升级,也未把源级 CLI 检查当作视觉或模型采纳证明。
剩余最强缺口是完整 bound replan→Host、实际安装/独立消费端升级和长期收益;它们不能从 guard 正确、签名相等或本次批准推导。父项及 release owner 继续承担对应验收;本次无需新建迁移框架、界面或确认流程。
English verdict: APPROVE a7ee1eafc8ed1101e876bc9dd61602d547e4af67. The original nested-witness counterexample now rejects consistently before projection, and the complete 25-file proposal fits the existing typed owner. Modern full outputs/signatures remain identical; legacy-format withdrawal is explicit and original history stays immutable. The 22 independently base-attributed Python failures, native-layout skip, installed rollout and full replan-to-Host qualification remain disclosed; this review grants no merge or release authority.
Old
protocol_action_packetreconstruction remained in current readers after producers stopped emitting it. This deliberately breaking input-format change removes that machinery and rejects old packet-bearing decisions and capsule witnesses at both the decision root and its contract capsule, before conversion, signature use or CLI fallback. Packet-free v0 records keep their original signature interpretation; historical records are never stripped or re-signed.The existing TypeScript Effect reader owns rejection. Python renderers use its existing adapter only for retired carriers, so supported rendering adds no RPC. Field selection/rendering, reconstruction/residue/opaque fallback, unused transport inputs and the dated acceptance verifier are removed. Current contracts replace the old reader-compatibility promise; historical ledger evidence remains explicitly historical. No new question, permission or admission workflow is introduced.
Current validation at
a7ee1eafc8ed1101e876bc9dd61602d547e4af67:Earlier qualification at
365560cc3c700284674210f3e09799b42c340ad9(base334da0973f786e748013b926cc85b5680a5343b0), retained as historical evidence rather than a fresh-head rerun:41b89faa72764c8e65cb92c41ddfa7023a59b7cd7b276c68691c194b0fe014b5. This is semantic parity, not a latency or token-saving claim.Known qualification gap:
test_bound_replan_reaches_actual_host_with_original_evidence[file/sqlite]returnsblockedinstead ofreplan_requiredon both the unchanged base and candidate (2 failures, 6 passes in that suite). This proposal does not claim full replan Host qualification. Two other stale CLI fixtures are now explicitly initialized through the existing canonical-authority fixture helper; no active state is migrated by tests.Scope: 25 files changed, 447 insertions(+), 1018 deletions(-). This is a cleanup prerequisite; #7166's benchmark-solver and productized Codex App incremental-context acceptance remains separate and open. Fresh producers already omit the old field, so this removal alone does not shrink their quota packet.
中文:彻底结束旧包及旧 witness 的读取兼容,删除重建、residue、opaque fallback 与无调用者依赖。现代签名含义、身份、权限、重放及原始历史记录保持不变;旧格式明确报错,正常路径不新增 RPC、问询或准入步骤。File/SQLite 真实 CLI、回放及现代包等价检查已覆盖;两项主干同样失败的 replan→Host 用例继续作为明确缺口,不宣称安装态或完整产品验收完成。
本次评审修复:共享 typed guard 在投影前同时检查 decision 顶层与 contract_capsule,消除直接构建、签名、捕获和 CLI 对旧 witness 的处理差异。新增回归在旧提交的六个嵌套输入上失败,修复后两处位置及全部读取入口均通过;正常冻结样例的签名和原始数据保持不变。当前 103 项 Python、57 项 TypeScript 与标准 premerge canary 通过,仍待新提交评审和 CI。