From cafb1af715355dda26ffbe1ac64100cabce1410e Mon Sep 17 00:00:00 2001 From: Arthur Breton Date: Sat, 31 Oct 2026 21:17:08 +0800 Subject: [PATCH 1/2] fix(perps): finish recipe-cook tasks with criteria awaiting review Criteria the harness records as awaiting-review go to the run gate, which reviews them after the worker completes. The skill told workers to hold the task pending for that review instead, so the worker never signalled complete and the run deadlocked. --- CHANGELOG.md | 4 ++++ domains/perps/skills/recipe-cook/skill.md | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff5cb27a..d61b5efc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Skip a planning brief for an unkept spike or POC and for routine CI-only work, including a workflow edit that changes how jobs or E2E launch. A CI change that is a new design, a contract or API change, or multi-surface work still stops for a brief and a spec. For a revert of a merged pull request or commit, name the target and files, then ask one yes/no, and name the risk when security or privacy is involved. Recommend a spec for a new design, a contract or API change, or multi-surface work even when the ask is fully specified or single-file; any other fully specified ask gets one line of scope and one yes/no instead of a brief, unless it touches auth, secrets, logs or exports of state, permissions, keyring or vault, migrations, or persisted state, which still gets a brief. Always read the installed skill catalog, including for reverts and fully specified asks. - Document confirmed Appium interaction-stability patterns in `testing/mobile-testing` (`references/appium-e2e.md`): child readiness, fresh interactive queries, shared open retries, virtualized-list proof, native control state, action postconditions, and single assertions for short-lived alerts. +### Fixed + +- `perps/recipe-cook`: a worker whose visual criteria are `awaiting-review` finishes the task and leaves those criteria to the run gate, instead of holding the task pending for a review that only happens after completion. + ## [0.3.1] ### Fixed diff --git a/domains/perps/skills/recipe-cook/skill.md b/domains/perps/skills/recipe-cook/skill.md index 6795b1a0..cd6d430a 100644 --- a/domains/perps/skills/recipe-cook/skill.md +++ b/domains/perps/skills/recipe-cook/skill.md @@ -92,14 +92,14 @@ For `qa`, read `references/qa.md` after materialization; read `references/qa-exa ## Finish -If a required runtime claim remains unproved, keep repairing it. Use `./mark blocked` only for missing credentials, a product decision the ticket does not settle, or a farm/device failure outside the checkout. A checklist's "or BLOCKED" branch does not authorize `complete` or a `fixed` disposition. Apply the Mainnet rule for network-gap exceptions. When the harness records `awaiting-review` for captured visual proof, prepare any explicitly requested local PR draft below and return that pending status. Never approve the criterion, weaken its proof kind, or complete the task to bypass review. +If a required runtime claim remains unproved, keep repairing it. Use `./mark blocked` only for missing credentials, a product decision the ticket does not settle, or a farm/device failure outside the checkout. A checklist's "or BLOCKED" branch does not authorize `complete` or a `fixed` disposition. Apply the Mainnet rule for network-gap exceptions. When the harness records `awaiting-review` for captured visual proof, prepare any explicitly requested local PR draft below, then finish with the terminal mark: the run gate hands those criteria to an authorized reviewer after completion, so never hold the task pending for that review. Never approve the criterion or weaken its proof kind. 1. `artifacts/pr-description.md` (or `artifacts/no-change-report.md`) + `artifacts/learnings.md`. The PR description follows the repository PR template headings and carries the proof summary (what changed, root cause, validation, evidence paths). `qa` writes the single human `artifacts/report.html`; static `review-pr` writes its declared review outputs. The frozen `inputs/worker-terminal-contract.json` is authoritative for required artifacts. When the request explicitly asks for PR evidence or a PR description, also write `artifacts/pr-description.md` on a no-change outcome, stating that the product is unchanged and preserving proof gaps. When a recipe exists, also write: - `artifacts/recipe-coverage.md`: proof target -> node -> evidence. - `artifacts/evidence-manifest.json`: strict visual selection only. Example: `{"version":1,"preferred_mode":"screenshots","standalone":[{"label":"AC1","covers":["AC1"],"file":"after-ac1.png"}]}`. For state-only proof: `{"version":1,"summary":"No visual evidence required."}`. - If `artifacts/recipe-quality.json` is absent, apply the quality section from the task harness's `help --json`, write `artifacts/recipe-quality-input.json`, then run `mm-harness recipe-quality build`. Never hand-author the final artifact. 2. An explicit request for PR evidence or a PR description selects `/mms-recipe-pretty-pr` for local packaging. Once the retained run and quality report are ready, read that installed skill, apply its evidence gate, and run its package script before the terminal mark, including no-change and `awaiting-review` outcomes. Keep pending human review explicit in the draft; packaging does not approve claims or authorize publication. -3. `./mark complete --mark-last` (or `./mark no-change --reason "..."`) only when the task checks permit it. Otherwise return the pending review status and local draft paths without completing the task. +3. `./mark complete --mark-last` (or `./mark no-change --reason "..."`) only when the task checks permit it; criteria awaiting review go to the run gate with the completed task. Otherwise return the failing check and local draft paths without completing the task. ## After task completion From 9761659ac840ac935eeabe4ee76c37fb34097a71 Mon Sep 17 00:00:00 2001 From: Arthur Breton Date: Wed, 4 Nov 2026 21:03:10 +0800 Subject: [PATCH 2/2] chore: drop changelog entry for a skill-only change --- CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d61b5efc..ff5cb27a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,10 +25,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Skip a planning brief for an unkept spike or POC and for routine CI-only work, including a workflow edit that changes how jobs or E2E launch. A CI change that is a new design, a contract or API change, or multi-surface work still stops for a brief and a spec. For a revert of a merged pull request or commit, name the target and files, then ask one yes/no, and name the risk when security or privacy is involved. Recommend a spec for a new design, a contract or API change, or multi-surface work even when the ask is fully specified or single-file; any other fully specified ask gets one line of scope and one yes/no instead of a brief, unless it touches auth, secrets, logs or exports of state, permissions, keyring or vault, migrations, or persisted state, which still gets a brief. Always read the installed skill catalog, including for reverts and fully specified asks. - Document confirmed Appium interaction-stability patterns in `testing/mobile-testing` (`references/appium-e2e.md`): child readiness, fresh interactive queries, shared open retries, virtualized-list proof, native control state, action postconditions, and single assertions for short-lived alerts. -### Fixed - -- `perps/recipe-cook`: a worker whose visual criteria are `awaiting-review` finishes the task and leaves those criteria to the run gate, instead of holding the task pending for a review that only happens after completion. - ## [0.3.1] ### Fixed