---
name: rite-temper
description: Temper a readied spec before planning. Use when the user says "temper this", "strategy review", "pre-mortem the spec", or asks if we are over/under-building. Not for code review or final seal.
argument-hint: "[feature-slug] [--mode expand|selective|hold-rigor|reduce-to-MVP]"
user-invocable: true
---

<!-- loads: {"always":["devrites-lib/reference/parallel-workspaces.md","devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/code-index.md","devrites-lib/reference/orchestration-profiles.md","devrites-lib/reference/standards/agents.md","rite-temper/reference/significance.md","rite-temper/reference/scope-modes.md","rite-temper/reference/review-dimensions.md","rite-temper/reference/strategy-template.md","rite-temper/reference/anti-patterns.md"],"triggers":{"afk":["devrites-lib/reference/standards/afk-hitl.md"],"applicability":["devrites-lib/reference/standards/repository-topology.md","devrites-lib/reference/standards/data-integrity.md","devrites-lib/reference/standards/integration-reliability.md"],"documentation":["devrites-lib/reference/standards/documentation.md"],"elicitation":["devrites-lib/reference/standards/elicitation.md"],"yagni":["devrites-lib/reference/standards/patterns.md","devrites-lib/reference/standards/coding-style.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md","strategy.md","design-brief.md"],"workspaceByRole":{"strategy-reviewer":["brief.md","spec.md","decision-coverage.md","decisions.md","strategy.md","state.md"]},"rootOnly":["devrites-lib/reference/parallel-workspaces.md","devrites-lib/reference/standards/code-index.md","devrites-lib/reference/orchestration-profiles.md","devrites-lib/reference/standards/afk-hitl.md"]} -->
> Read-set manifest: `devrites-engine context --skills-root .omp/skills <slug> --phase temper` bundles every file named below into one deduplicated read. Trigger names map to the conditional rules in the sections that follow.


# /rite-temper: review scope and risk before planning

Review readied spec ambition, scope, pre-mortem risk, and excess surface. Fold
accepted decisions into the canonical contract before `/rite-define`. Optional for
small work; skips low-stakes specs; `/rite-autocomplete` always invokes it.
**Read the selected source workspace first**; no readied `spec.md` → `/rite-spec`. Depth follows
[`devrites-lib/reference/orchestration-profiles.md`](skill://devrites-lib/reference/orchestration-profiles.md);
the required exact strategy reviewer never changes with profile.

## Rules consulted (read on demand from `.omp/skills/devrites-lib/reference/standards/`)
Pull on demand: [`patterns.md`](skill://devrites-lib/reference/standards/patterns.md) +
[`coding-style.md`](skill://devrites-lib/reference/standards/coding-style.md) (the over-engineering / YAGNI rubric, trigger `yagni`; reuse the pack's standard, don't
invent one), [`documentation.md`](skill://devrites-lib/reference/standards/documentation.md) (ADR-style `decisions.md` entries), [`afk-hitl.md`](skill://devrites-lib/reference/standards/afk-hitl.md)
(irreversible-risk list + gate ceiling), [`elicitation.md`](skill://devrites-lib/reference/standards/elicitation.md) (the move-set to deepen a section
that needs more than the default pre-mortem) selected by the section's risk). Load
[`repository-topology.md`](skill://devrites-lib/reference/standards/repository-topology.md), [`data-integrity.md`](skill://devrites-lib/reference/standards/data-integrity.md), or [`integration-reliability.md`](skill://devrites-lib/reference/standards/integration-reliability.md) only when
the spec applicability map triggers that risk family.

## Operating rules
- **Raise outcome ambition, not excess solution surface.** Solve the underlying
  problem without speculative capability/abstraction.
- **Route every scope change through the Spec Drift Guard.** A scope change takes effect
  only when `spec.md` records the confirmed decision. Growth (`expand`, extra
  acceptance) needs a resolved human `questions.md` qid, so an unattended run holds it
  open. Irreversible-risk still pauses.
- **Maximum caution:** auth, migration, public API, and data-model changes need
  full review and explicit rollback. Pause only for [canonical irreversible-risk items](skill://devrites-lib/reference/standards/afk-hitl.md#irreversible-risk-list-always-pause)
  or unresolved human-owned decisions, not an already-approved reversible internal data-model change.
- **Honest verdict.** Never round "needs work" to "ready"; record each scope call's *why*.
- **Search before asking.** Apply [`afk-hitl.md`](skill://devrites-lib/reference/standards/afk-hitl.md) ownership;
  only human-owned calls enter the interactive walk.
- **You write; reviewer judges.** Sole canonical writer: `strategy.md` + spec edits;
  reviewer is read-only.
- **Significant features require spec-quality checklists.** Before hardening,
  require passing `checklists/<domain>.md` ([`spec-checklists.md`](skill://rite-spec/reference/spec-checklists.md)); a
  folded scope expansion **adds its own** rows, including new Success/Acceptance
  criteria. An unquantified folded criterion is a CRITICAL failure reopening readiness.

## Workflow
0. **Read `.omp/skills/devrites-lib/reference/standards/core.md`**, then
   resolve source per [phase target binding](skill://devrites-lib/reference/parallel-workspaces.md#phase-target-binding), require its `state.md`, and read the cursor directly.
   Then read the workspace: `spec.md`, `decision-coverage.md` (+ `decisions.md`,
   `assumptions.md`, `design-brief.md` if UI), `state.md`. Require `state.md` `spec_gate: passed` (legacy `Spec gate:` accepted): else
   STOP → `/rite-spec`. Require `Decision coverage: CLEAR`: else STOP →
   `/rite-clarify`. If a plan already exists, scope changes route through `/rite-plan
   repair` (record in `drift.md`), not a blind spec edit.
1. **Significance test:** [`reference/significance.md`](reference/significance.md). Low-stakes
   / shape-not-meaning work → write the exact one-line `skipped — low stakes (<trigger>)` verdict to `strategy.md`,
   set `state.md` `Phase: temper` + `Next step: /rite-define`, and recommend it. Otherwise fire the full pass below.
2. **FORWARD pass + mode selection:** [`reference/scope-modes.md`](reference/scope-modes.md).
   First, the **one-sentence-intent test**: state the whole change's intent in a single sentence.
   If you can't without an "and" that joins two unrelated outcomes, it is **two features**: the
   scope-creep signal; recommend splitting or narrowing the spec before continuing.
   Apply the same test to size: a spec whose honest decomposition would exceed the
   [feature ceiling](skill://rite-plan/reference/slicing.md#feature-ceiling-split-an-epic-never-override-the-budget)
   (roughly ten slices or more than ~20 acceptance criteria) is a feature sequence;
   recommend the thinnest shippable subset now and name the continuations as Non-goals.
   Then consider the 10-star outcome for the underlying problem and choose **exactly one**
   scope mode (`expand` opt-in · `selective` · `hold-rigor` · `reduce-to-MVP`) with its
   rationale and the condition that would change the choice. `$ARGUMENTS` `--mode` is a
   hint, not a command.
3. **INVERSION pass:** pre-mortem in past tense ("it shipped and failed: what went wrong"),
   each top risk carrying likelihood + mitigation + the slice it will bind to; then the **YAGNI
   ledger** (each candidate scope item gets the "imagine the later refactor" test; defer unless
   now-cost is trivial AND deferred-cost is large).
   **Interruption pre-mortem:** audit the spec forecast and assumptions for unresolved behavior,
   proof prerequisites, approvals, access, and irreversible gates. Resolve facts and reversible
   details now; retain only unavailable-pre-code or mandatory action-time checkpoints.
   Challenge each `not applicable` decision against live evidence and each applicable
   topology/data/integration row against its worst credible partial-state/recovery case.
   - **Deepen on demand.** When a scope decision, requirement, or risk needs more analysis
     than the default pre-mortem provides, choose 3-5 techniques from
     [`elicitation.md`](skill://devrites-lib/reference/standards/elicitation.md) whose *when-to-reach-for-it* matches that
     section's risk (irreversible decision → Red-Team/Blue-Team + Assumption Audit; sizing → Delphi;
     vague requirement → Steelman-then-Attack), offer them, and run the chosen one **on that
     section**. Record what changed, not the technique name. The default passes remain
     sufficient when no deeper analysis is needed.
4. **Score the 9 dimensions:** [`reference/review-dimensions.md`](reference/review-dimensions.md).
   Cite evidence *before* the band; **gate on the floor** (the weakest dimension, not an average).
   **Completion:** all nine dimensions have cited evidence, a band, and one explicit floor verdict.
5. **Review human-owned findings with the human; do not batch them.** `strategy.md`
   records the interactive review but does not replace it. Present each material scope decision through
   `ask`, one at a time, best-guess + **why**. Each material scope call ends as a
   **recorded decision**: a resolved `questions.md` qid (HITL) or a `decisions.md` ADR (AFK;
   never for `expand` or extra acceptance, which need a human-resolved qid):
   so the review leaves an auditable record outside chat. (AFK gate policy —
   [`reference/significance.md`](reference/significance.md) — autocomplete applies
   `hold-rigor`, `reduce-to-MVP` and a skip, but holds `expand` and extra acceptance for a human
   qid; irreversible-risk always pauses.)
   Apply objective clarity, mitigation, and assumption fixes directly.
6. **Write `strategy.md` + fold back:** [`reference/strategy-template.md`](reference/strategy-template.md).
   **Choose the drift path based on whether a plan exists:** *no `plan.md` yet* (the normal pre-define
   case) → update `spec.md` **through the Spec Drift Guard**. *Success metrics* (outcome-level, no AC id)
   **and** *Acceptance criteria* for each opt-in expansion / cut, **Non-goals** for every deferred item,
   *Constraints and invariants*, with top failure modes + mitigations folded into *Failure and recovery
   behavior* rows, and the *Open questions* table; *`plan.md`
   already exists* → do **not** edit `spec.md` here: write the deltas to `drift.md` and hand off
   to `/rite-plan repair`. Either way, append `decisions.md` (one ADR per scope call: context ·
   decision · why-not · what-would-change-it) and `assumptions.md` (every "we'll probably need X" →
   assumption-to-verify). (every delta carries the step-5 recorded decision; an untraceable
   fold is invalid). **Re-check the spec Readiness gate** (it fails if
   any folded scope delta lacks its decision or leaves a foreseeable human build choice).
   After any edit to `brief.md`, `spec.md`, `decisions.md`, `assumptions.md`, or
   `questions.md`, re-scan the affected coverage rows, assumption audit, residual uncertainty,
   and closed gates. `open` rows, an unowned material assumption, or an open
   blocking/escalating question routes `/rite-clarify`/HITL. Only after the
   matrix is re-closed may the phase advance.
   Set `Phase: temper`; `Next step: /rite-define` only after verification.
   Unapproved irreversible choices and unresolved growth qids set `Awaiting human`.
   Objective below-bar findings continue correction.
7. **Adversarial verification loop:** ask the exact
   [`devrites-strategy-reviewer`](.omp/agents/devrites-strategy-reviewer.md)
   through the native fresh-context contract in
   [`agents.md`](skill://devrites-lib/reference/standards/agents.md), with **only** its `--role strategy-reviewer` read-set
   (hardened spec, `strategy.md`, claim-check artifacts) + rubric, no authoring reasoning. Fold findings once and recheck them under
   [the canonical retry contract](skill://devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve):
   Product/scope and unapproved irreversible risk stay human gates;
   exhaustion keeps the blocker.
   If the named agent is unavailable, stop for HITL. Except `sequence_lookahead: yes` and no spawn tool: record the review pending, stay `running`, continue Define. Not access. After an accepted edit to a
   coverage-bound input, repeat step 6's native coverage revalidation before handoff.
8. **STOP.** Report the mode, the scope deltas, and the floor verdict; recommend `/rite-define`.

> **Mid-flight discipline.** Do not replace the interactive review with `strategy.md`,
> expand implementation surface without need, grow scope outside the Drift Guard, or score
> before citing evidence. See [`reference/anti-patterns.md`](reference/anti-patterns.md).
