/press
Press may add or strengthen tests and make tiny corrective fixes only when a test exposes a clear defect in the cooked scope.
--hard propagation
(propagated from
) is pass-through only. Press runs no gate. Hand
forward to
at the handoff so it eventually reaches
, which is the only pipeline skill that fires the metacognitive vibecheck. See
skills/hard-cheese/SKILL.md
.
Baseline-aware gates
When the cooked diff's handoff slug carries a recorded
block, press re-runs the project's gates but does not re-flag or re-halt on failures identical to that baseline (same test, same signature) — only new or changed failures affect readiness. See
../cook/references/quality-gates.md
for the classification and policy.
Flow
- Read — load the spec or acceptance criteria and the cooked diff. If
.cheese/glossary/<slug>.md
exists, read it for naming consistency when hardening tests.
- Map — for each changed behaviour, find the test(s) that cover it through semantic caller search.
- Gap analysis — identify weak assertions, missing boundaries, and uncovered integration seams. See
references/gap-analysis.md
for what counts as a gap and the priority order.
- Add focused tests — observe red first when behaviour changes. Apply precise stale-safe edits.
- Corrective fixes — only for defects the hardening tests expose. No new behaviour.
- Run checks — narrowest useful tests, then relevant wider gates already in the project. When the handoff carries a block, classify gate failures against it per
../cook/references/quality-gates.md
: identical failures do not affect readiness; only new or changed failures do.
- Report — write (slug carried from , or derived from branch/task) and print the path. Mark readiness: , , or .
- Hand off — in manual mode, prompt the next step via the shared handoff gate (see below); in mode, chain forward per .
Preferred tools and fallbacks
Call source-code search, read, and edit backends directly according to
code-intelligence-routing.md
. For coverage and test discovery, use semantic caller search plus
when available.
Portability reference:
../cheese/references/harness-portability.md
. It covers helper resolution, sub-agent dispatch, GitHub operations, and handoff transitions; prefer the bundled or repo-local helper first, and treat
as optional host-provided fallback.
The handoff blocks below are the portable contract; slash commands are host renderings, not the control model.
Beyond source-code routing there are press-specific tools:
| Need | Prefer | Fallback |
|---|
| Diff review | | plain |
| Affected execution flows + risk scoring | semantic caller/dependency tracing and | manual flow tracing from changed files; note the precision loss |
If optional tools are missing, press a narrower surface and state the residual risk.
Output
House style and citation form:
../cheese/references/formatting.md
. This section owns the press-report shape.
Write to
with a minimum handoff slug at the top so
's fan pathway and
can chain without re-parsing the report. The full report shape:
markdown
status: ok | halt: <one-line reason>
next: press | age | done
artifact: <path-if-any>
baseline: none | <recorded baseline block copied from the cook handoff — see ../cook/references/quality-gates.md>
<one-line orientation: what press did — e.g., "added 4 boundary tests; no defects exposed">
# Press Report — <slug>
## Orientation
<one or two factual sentences about what press did this pass — the hardening added, the gaps closed, the readiness verdict. `/cheese --continue` surfaces the slug's orientation line to the user as "where you are", so press's orientation must describe press's own work, not duplicate cook's orientation.>
## Checks run
- <command>: <pass|fail|skipped with reason>
## Findings
| --- | --- | --- | --- |
## Coverage
- Spec coverage:
- Boundary coverage:
- Assertion strength:
## Readiness
<ready for /age | follow-up recommended | blocked>
## Next step
<ready for /age>: /age <slug> — review the cooked + pressed diff
<follow-up recommended>: /age <slug> — review-safe; documented follow-ups addressed after review
<blocked>: resolve blocking issues before proceeding
maps to readiness
or
;
maps to
.
names the next runnable phase:
when review-safe,
when blocking issues must be resolved and the hardening phase rerun. Use
only for true terminal completion, not for a blocked-but-resumable halt.
still stops automatically on any
;
is the resume hint for
.
When
is present, press honors it: identical recorded failures never move readiness off
; only new or changed failures do, per
../cook/references/quality-gates.md
.
Then print:
Press report: .cheese/press/<slug>.md
Next step: /age <slug> (when ready for /age or follow-up recommended)
blocked — resolve before continuing (when blocked)
Handoff
Pipeline: culture → mold → cook → [press] → age → cure → plate
After the press report is on disk, ask via the shared handoff gate in
../cheese/references/handoff-gate.md
, following its
Standard forward-step menu. Lead each option with the verb (what the user wants to
do next); the skill command (with any in-scope
propagation) is the backing detail. Default options:
- Review the diff (recommended when readiness is or ) — . For , documented follow-ups can be addressed after review.
- Plate it —
/age <slug> --auto --open-pr
: run age → cure, then resolves topology and publishes.
- Checkpoint & stop — : write a resumable handoff and pause.
- Stop — dispatch none; defer review (use this if you want to harden manually before /age, even though the contract is review-safe).
Pre-select Review the diff when ready. If blocked, do not pre-select Plate it. Run a non-stop selection immediately.
Auto mode
When invoked with
(propagated from
):
- Skip the handoff gate entirely.
- If readiness is or , invoke directly (forward when it is in scope).
- If readiness is , stop the auto chain and surface the press report to the user. Blocked criteria: defined once in
references/gap-analysis.md
.
Within cook's own fan pathway
When
's fan pathway (its retired-
mechanics, now self-hosted — see
) spawns press as a fresh-context sub-agent, it owns the chain itself. When the spawn prompt explicitly says "for THIS PHASE ONLY" and "do not chain forward to the next phase," honour the override: write
(with the handoff slug at the top) and stop. Do not invoke
from inside the sub-agent regardless of readiness. The orchestrator reads the handoff slug and either chains to age (when
and
) or halts (when
, regardless of
).
remains the resume hint for
.
Rules
- Do not weaken assertions.
- Do not broaden implementation beyond the cooked contract.
- Every changed behaviour in the cooked diff leaves press with an executable hardening test that would fail if the change regressed. If press cannot produce a stable hardening test for a changed behaviour (flaky seam, missing infrastructure, design decision required), readiness is — never or .
- Cap iteration at three attempts per gap. Count test-edit + run cycles. On the third failed cycle on the same gap, mark readiness with reason
spinning: <gap-description>
and surface the report. Do not loop indefinitely.
- Surface medium and high findings explicitly; summarize low findings.
- If the cooked diff or spec rests on a false premise (the contract is wrong, or the test surface is solving the wrong problem), stop and surface the premise before adding tests; do not harden the wrong angle.
- Apply the shared voice kernel (lives at
../age/references/voice.md
): lead the press report with the readiness verdict, flag residual risk as certain | speculating | don't know
, agree when coverage is already sufficient without manufacturing tests.