exp --dry 适合确认运行矩阵。需要检查一条评估在 Sandbox 里会按什么顺序准备、安装、执行和收尾时,使用 niceeval debug。
选择一个精确配对
按顺序阅读计划
Human 输出使用分层框,不把所有步骤压成一段文本。顶层是 Experiment,下面按 lane、slot 和生命周期节点展开。每个sandbox.before action 都显示:
- owner 与 action ID;
- 拓扑执行序号和 occurrence 路径;
- 用户填写的
changeFrequency数值、来源和匹配的 preset; - 依赖、排序原因与当前固定的
attemptoccurrence; - Provider 的缓存能力,以及尚未探测的运行时状态;
- 由已链接 Action、顺序、依赖、state 与 fingerprint 得出的
prefixIdentity; cache.state的declared、cumulative、providerCoverage和barrier。
declared 是这个 Action 的完整状态承诺,cumulative 包含它之前的准备链。providerCoverage
说明 Provider 实际能恢复的范围。barrier 不是 none 时,输出还会给出 barrierActionId;它指出第一个
默认 all、opaque 或不受支持的 Action。该 Action 和所有后缀会真实执行。
固定 action 会展示安全的命令形状。普通 callback 标为 OPAQUE,因为它只能在运行时执行。环境变量只显示 key 和摘要,stdin 只显示摘要与字节数。凭据值、stdin 原文和不安全的远端 locator 不会泄露到 Human 或 JSON 输出。
给工具读取结构化计划
declarationOrder、executionOrder、
changeFrequency、dependencies、occurrence 和 cache。
cache.state 固定给出 declared、cumulative、providerCoverage、barrier,并在有 barrier 时给出
barrierActionId;可确定的 Action 还给出 cache.prefixIdentity。cache.lookup 与
cache.runtime.finalKey 固定是 not-probed,cache.runtime.status 是 pending,因为 debug 不读取运行时缓存 inventory。
debug 只接受 --json;预算、重跑、并发等运行 flag 不适用于这个命令。
确认它不会执行资源操作
debug 不运行 before callback、test、after、ensure 或 Provider finalizer,也不创建 Invocation、Run、Record、锁、Sandbox 或构建任务。
它会加载受信任定义并执行 Experiment 的选择 predicate。Provider planner 也可能读取本地文件、调用只读 CLI 或查询远端控制面,因此仍应只在可信项目中运行。
矩阵和 Attempt 数量先用选择并预览运行范围确认。真实执行失败后需要进入保留现场时,使用保留 Sandbox 现场排查问题。