--- name: quality description: Post-cook quality gate. Reviews completed cook work for correctness, scope discipline, and principle compliance. Emits stage_message events with findings. Triggers after execute stages, on '/quality', 'review this', 'check the work', 'assess quality'. schedule: "Follow-up stage after execute. Cross-provider review preferred — if codex executed, schedule quality on claude; if claude executed, schedule on codex." --- # Quality Review completed cook work. Emit a `stage_message` event with your assessment. See `references/stage-message-schema.md` for the event schema. Operate fully autonomously. Never ask the user. ## Step 0 -- Load Principles Read `brain/principles.md` and follow every `[[wikilink]]`. These govern the review. Do NOT skip this. ## Assessment Pipeline Run in order. Stop early and reject on any high-severity finding. ### 1. Scope Check - Read the plan phase the cook was assigned (from the cook's initial prompt or mise context). - Run `git diff --stat` and `git log --oneline` for the cook's commits. - Flag files changed outside the plan phase's stated scope as scope violations. ### 2. Code Quality - `go vet ./...` and `go test ./...` must pass. - Run `sh scripts/lint-arch.sh` if it exists. - Check error handling follows project conventions (failure-state messages, not expectation messages). ### 3. Principle Compliance - For each changed file, check against loaded principles. - Common violations: bolted-on changes instead of redesign (redesign-from-first-principles), missing verification (prove-it-works), unnecessarily added complexity (subtract-before-you-add). ### 4. Test Evidence - New behavior must have new tests. - Tests must assert outcomes, not implementation details. - Check coverage of edge cases mentioned in the plan phase. ### 5. Runtime Verification - If the plan phase specifies runtime checks, verify they were performed. - "It compiles" is not verification. ## Verdict Emit a `stage_message` event with your assessment: ```sh noodle event emit --session $NOODLE_SESSION_ID stage_message --payload '' ``` **Accept**: Emit with `blocking: false`. The pipeline continues and the scheduler sees the green light. ```json { "message": "All checks pass. Tests green, scope clean.", "blocking": false } ``` **Reject**: Emit with `blocking: true` (or omit `blocking`). The scheduler reads findings and decides (retry, add oops stage, or abort). ```json { "message": "Rejected: 3 high issues. [1] Missing test for edge case in handleCompletion. [2] Scope violation: modified cook_merge.go outside plan phase scope. [3] Error message uses expectation form.", "blocking": true } ``` Write the message as natural language the scheduler can act on. Include specific file paths, line context, and principle violations so the scheduler can brief the retry cook. ## Non-blocking Issues Issues that don't warrant rejection (style nits, minor improvements, documentation gaps): file as backlog items via the backlog adapter. ## Principles - [[prove-it-works]] - [[outcome-oriented-execution]]