目标
把两块 PS1 巨石的行为面冻结成 golden contract,后续每张退役票都拿它验收。不冻结契约就迁移 = 凭感觉重写,必然丢行为。
对象:
run-code-intel.ps1(~205KB,churn 全仓 100 分位)
Invoke-SentruxAgentTool.ps1(~114KB)
两份自审计(#33/#34)的 coverage 段都承认这两个文件只能 pattern 扫、无法通读——连自己的审计都读不全的代码,是本仓最大的不可信面。
做法
- 行为盘点:枚举 run-code-intel.ps1 全部 mode / skip flags / 环境变量 / 产物路径 / exit code 语义,与 Invoke-SentruxAgentTool.ps1 的 shim 管理、失败归一化、激活逻辑。产出
docs/ps1-exit/contract-inventory.md(表格:行为 → 现有测试覆盖 → 缺口)。
- 缺口补测:现有
scripts/tests/*.ps1 50+ 套已覆盖一部分;只补缺口,不重写已有。
- parity harness:一条命令对同一 snapshot 分别走 PS1 路径与 Rust 路径(
code-intel run execute 已在 ci.yml 自扫步骤跑),diff 关键产物(复用 stable_artifact 的易变字段排除经验:时间戳/绝对路径/duration)。
出口
不做
目标
把两块 PS1 巨石的行为面冻结成 golden contract,后续每张退役票都拿它验收。不冻结契约就迁移 = 凭感觉重写,必然丢行为。
对象:
run-code-intel.ps1(~205KB,churn 全仓 100 分位)Invoke-SentruxAgentTool.ps1(~114KB)两份自审计(#33/#34)的 coverage 段都承认这两个文件只能 pattern 扫、无法通读——连自己的审计都读不全的代码,是本仓最大的不可信面。
做法
docs/ps1-exit/contract-inventory.md(表格:行为 → 现有测试覆盖 → 缺口)。scripts/tests/*.ps150+ 套已覆盖一部分;只补缺口,不重写已有。code-intel run execute已在 ci.yml 自扫步骤跑),diff 关键产物(复用 stable_artifact 的易变字段排除经验:时间戳/绝对路径/duration)。出口
不做