关于 press
Press 是由 Cook 调用的对抗式测试技能,用于检验测试通过时,已报告的缺陷是否仍会出现。它只添加或运行对抗测试,不修改生产代码,并将通过结果交给 /age,或把发现和覆盖缺口交回 Cook。
主要功能
- 01用对抗案例测试已批准行为
- 02仅添加或运行对抗测试
- 03不修改生产代码
- 04在修正过程中跟踪重复攻击
- 05向 /age 或 Cook 报告结果
适用场景
- 01检查已接受的修复是否解决原始问题
- 02发现常规验收检查遗漏的缺陷
- 03识别行为主张的测试覆盖缺口
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ paulnsorensen/ easy-cheese --skill press安装后在 Claude Code 中输入/press确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
wedge.tomlreferences/commands.mdgap-analysis.md详细介绍
/press
Press 是 Cook 在其 Press 循环中调度的对抗性检查。/press <slug> 仍可调用以手动重新运行。通过时,它会向 /age 报告 GREEN,并向 Cook 报告发现的问题或 coverage_gap。
Press 从不编辑生产代码。实现和首轮验收覆盖由 Cook 负责。Press 会针对已批准的契约进行攻击式检查,并报告暴露出的每个缺陷。
阶段入口
运行 python3 skills/press/scripts/press.pyz wheypoint-resolve --ref <slug>。
authoritative 使用记录;其 working_context 是首批 tilth_read。
not-found 会在无上下文的情况下继续;legacy 会显示其来源和 slug,然后继续。
遇到 gated、ambiguous 和 error 时停止并显示负载。
显示提示性 stale-commit 和 grounded-path-missing 发现。
将其 record.revision_id 保留为 <base>(§ 基准修订版)。
输入
Cook 会在行为工作完成其 taste test 后自动调度 Press,因此无需调用。 如需手动重新运行,Press 接受以下调用,并在 GREEN 时交接给 Age:
/press <slug> [--auto] [--hard] [--open-pr]
阶段入口完成后,Press 会读取 .cheese/cook/<slug>.md 中的 Cook 交接内容。
--auto 会选择自主链路。参见 ## 自动模式。
--hard 请求可选的最终门禁。Press 会将此标志转交给 Age。
--open-pr 是发布许可。只能由用户提供。Press 会将此标志转交给 Age。Press 从不添加此标志。
Press 会原样保留 Cook 的 durable_flags: 值。Press 会忽略 Cook 的 taste_test: 值。
对抗性循环
只提出一个问题:“即使所有测试都通过,用户最初遇到的问题仍可能发生吗?”
选择一个相关的虚假成功攻击,而不是全部四种。记录问题、攻击方式,以及它为何会威胁该主张。确认验收检查能够拒绝这种情况。
references/gap-analysis.md 列出了攻击方式和证据顺序。
Press 不会编写首轮覆盖。若缺少覆盖,Press 会报告 coverage_gap。
每次 Cook 修正后,都用相同的攻击和测试摘要重放同一攻击。
无效证据或生产树发生变化时,停止运行。结果表定义了上限。
Press 没有全局 dispatch: /cook 操作。
基线感知门禁
Press 会为项目门禁保留基线感知的就绪状态。Cook 的 baseline: 行会指定一个制品。该制品记录已确定的状态。
通过 baseline: 路径读取该制品。若某项失败的测试及签名与制品匹配,则不要再次标记。新增或变更的失败会阻止流程继续。
参见 ../cook/references/quality-gates.md。另请参见 references/gap-analysis.md。
流程
- 阅读 — 加载已批准的规范、Cook 交接内容和基线区块。如果
.cheese/glossary/<slug>.md文件存在,则使用其中的规范术语。 - 检查 — 在添加测试前,先阅读验收检查。
- 攻击 — 只添加或运行对抗性测试。不要更改生产路径。
- 分类 — 选择
green、finding、coverage_gap、invalid_evidence或production_changed。 - 报告 — 编写
.cheese/press/<slug>.md。包括问题、所选攻击、它为何会威胁该主张、尝试过程、证据和评审后续事项。 - 交接 — 将 GREEN 交给
/age。将 finding 或coverage_gap交给 Cook。
源码更改请使用 code-intelligence-routing.md。
可移植性请参阅 ../cheese/references/harness-portability.md。
该参考文档说明,斜杠命令是宿主环境的呈现形式,而非控制模型。
Press 报告一个就绪状态值。将 ready for /age 映射为 status: ok 和 next: age。
将 follow-up recommended 映射为 status: ok-with-concerns: <concern> 和 next: age。对于同时记录了评审后续事项的 GREEN 通过,使用此状态。已记录的每项关注事项均由 Age 负责。
将 finding 映射为 status: ok-with-concerns: <defect> 和 next: cook。
将 coverage_gap 映射为 status: ok-with-concerns: coverage-gap: <gap> 和 next: cook。
将 blocked 映射为 status: halt: <reason> 和 next: done。blocked 表示证据无效或生产环境已更改。
自动模式
--auto 会运行相同的对抗性循环,并且无需用户提示即可选择下一阶段。
在 ready for /age 或 follow-up recommended 后,执行 /age <slug> --auto。如果用户提供了 --hard,则添加 --hard。如果用户提供了 --open-pr,则添加 --open-pr。
在 blocked、halt: correction-cap 或 halt: coverage-gap 后停止。不要执行 Age。
如果调用方提供了禁止链式执行指令,请遵守。编写 Press 交接内容后停止。不要启动其他阶段。Cook 的扇出路径负责处理此指令。已退役的 /ultracook 编排器此前负责处理此指令。请检查该指令本身,不要检查来源名称。请参阅 ../cook/references/auto-mode.md。
输出
每次 Press 结果都写入 .cheese/press/<slug>.md。
使用 python3 skills/press/scripts/press.pyz write-handoff-artifact 写入文件;包含一个或多个 --grounded <path[#start-end]> 参数。使用规范前言:
python3 skills/press/scripts/press.pyz write-handoff-artifact \
--slug <slug> --status <status> --phase press --next <next> [--base <base>] \
--artifact .cheese/cook/<slug>.md --orientation "<one-line orientation>" \
--durable-flags "<preserved Cook value>" --baseline "<baseline artifact path>" \
--grounded <path[#start-end]> --body-file <body-path>
status: <canonical status field>
next: age | cook | done
artifact: .cheese/cook/<slug>.md
durable_flags: <preserved Cook value>
baseline: none | <baseline artifact path>
<one-line orientation>
交接契约定义了 status: 语法。前言不接受其他键。将所有 Press 值写入报告正文。
artifact: 用于指明所使用的 Cook 报告。不要在此行写入攻击证据。
baseline: 用于指明 Cook 记录的那一项制品。请参阅 ../cook/references/quality-gates.md。
在前言下方编写以下正文部分:
## Attempts— 每次尝试一行。注明尝试编号和结果。## Evidence— 注明稳定的攻击标识、测试摘要,以及发现问题时失败的测试。## Review follow-ups— 记录每个契约外问题。若运行未记录问题,则写none。Age 会读取此部分。
将结果映射到终止前言:
| 结果 | status | next |
|---|---|---|
| GREEN | ok | age |
| GREEN,且记录了问题 | ok-with-concerns: <concern> | age |
| 发现问题(攻击测试暴露缺陷) | ok-with-concerns: <defect> | cook |
coverage_gap | ok-with-concerns: coverage-gap: <gap> | cook |
一次 Cook 运行中的第二次 coverage_gap | halt: coverage-gap | done |
证据无效或生产变更(blocked) | halt: <reason> | done |
| 同一攻击的第三次发现问题 | halt: correction-cap | done |
| 未以绿色结束的第六轮 Press | halt: press-round-limit | done |
next: done 表示终止,不会启动其他阶段。
next: cook 表示交接给 Cook 进行修正(correction = true),适用于发现问题或出现 coverage_gap。随后 Press 会重放或重新运行同一攻击。
Cook 负责统计轮数。Cook 会在调度中传递轮数和攻击标识。Press 只能根据该轮数输出 halt: correction-cap 或 halt: coverage-gap。手动运行 /press <slug> 时,会从 .cheese/press/<slug>.md 读取此前的轮次。references/gap-analysis.md 说明了上限,包括 6 轮的 press-round-limit。
交接
Pipeline: culture → mold → cook (⇄ press) → age → cure → plate
由 Cook 调度 Press 时,将交接返回给 Cook 并停止。
手动重新运行并得到 GREEN 后,使用共享的交接门槛。使用 /age <slug> 开始审查。
发现问题或出现 coverage_gap 后,将交接给 Cook,并在报告中注明失败的测试或缺口。
如果调用方提供了 --hard、--auto 和 --open-pr,则将它们转交给 /age。不要添加 --open-pr。
规则
- 不要编辑生产代码、生产夹具或生产适配器。
- 重放时不要更改攻击。
- 不要将契约外行为视为实现请求。将其记录在
## Review follow-ups下。GREEN 通过时,将运行报告为ok-with-concerns。 - 保留基于基线的就绪状态。
执行规范
Press 优先使用证据。未经验证的失败不算发现问题。
在每次交接决策前注明结果。注明攻击摘要。缺少任何一个值时都应停止。不要猜测。
生成的 bundle 命令清单:references/commands.md。