age · diff
git:20260903.28d86a6 to git:20260905.0a0b1f7
196 added, 87 removed. Audit A to A.
---
name: age
- description: Review a diff, PR, branch, or path across ten orthogonal dimensions (correctness, security, encapsulation, spec, complexity, deslop, assertions, NIH, efficiency, telemetry) and emit a severity-grouped findings report. Use when the user wants a code review — phrases like "review this", "/age", "is this safe to merge", "find bugs", "spot security issues", "check for slop", "review my PR", "what's wrong with this code". Use even when the user only asks for one dimension — the report scopes itself. Do NOT use for applying fixes (route to /cure) or test hardening (route to /press).
+ description: >-
+ Review a diff, PR, branch, or path across ten dimensions. Emit a severity-grouped findings report.
+ Use when the user wants a code review. Trigger on "review this", "/age", "is this safe to merge", or "find bugs".
+ Also trigger on "spot security issues", "check for slop", "review my PR", or "what's wrong with this code".
+ Review every requested dimension. Review all ten dimensions by default.
+ Do not apply fixes. Route them to /cure.
+ Do not harden tests; route that work to /press.
license: MIT
metadata: {dispatches-agents: true}
---
# /age
- Review a diff or scoped path before merging, after `/press`, or whenever the user wants evidence-backed observations rather than an approval verdict. Do not apply fixes here — `/cure` owns application.
+ Review a diff or scoped path before merging or after `/press`. Use this skill whenever the user wants evidence-backed observations rather than an approval verdict. Do not apply fixes in this skill. Let `/cure` apply them.
## Inputs
```text
- /age [<ref-or-range>] [--scope <path>] [--comprehensive] [--full] [--safe] [--open-pr] [--auto] [--html]
- /age <slug> [--full] [--safe] [--open-pr] [--auto] [--html]
+ /age [<ref-or-range>] [--scope <path>]... [--slug <slug>] [--full] [--safe] [--open-pr] [--auto] [--hard] [--html]
+ /age <slug> [--full] [--safe] [--open-pr] [--auto] [--hard] [--html]
```
- `--full` un-collapses the `## Low` section when 10 or more low-severity findings exist (the default report collapses them to a one-line summary).
+ Repeat `--scope <path>` for each reviewed path.
+ Every report needs a slug.
+ Take the slug from the `<slug>` form.
+ Take it from `--slug <slug>` on a scoped or range review.
+ Derive it with `slugify` only when the caller supplies neither.
+ A caller in a pipeline always passes the pipeline slug.
- `--safe` re-introduces cure selection. `--open-pr` propagates through `/cure` to terminal `/plate`; a new PR follows `/plate`'s explicit-choice and review-shape policy.
+ `--full` expands the `## Low` section when ten or more low-severity findings exist.
+ The default report collapses that section to a one-line summary.
- When called with a `<slug>`, resolve `.cheese/press/<slug>.md` (if present) for press context and review the current working diff. When called with a `<ref-or-range>`, review that range. Default to the current working diff when neither is supplied. If the base branch is unclear, ask or use the repository's documented default.
+ `--safe` re-introduces cure selection.
+ `--open-pr` propagates through `/cure` to terminal `/plate`.
+ A new PR follows `/plate`'s explicit-choice and review-shape policy.
- `--auto` is the propagated autonomous-mode flag from `/cook --auto`. It changes the handoff (see `## Handoff` and `## Auto mode` for the cap rule and full chain).
+ For a `<slug>`, resolve `.cheese/press/<slug>.md` (if present) for press context.
+ Review the current working diff.
+ For a `<ref-or-range>`, review that range.
+ Review the current working diff when the user supplies neither input.
+ If the base branch is unclear, ask or use the repository's documented default.
- `--hard` propagates through `/cure` to `/plate`. Age never fires the gate; `/plate` gives `/hard-cheese` the final verified artifact state before publication.
+ `--auto` is the propagated autonomous-mode flag from `/cook --auto`.
+ See `## Handoff` and `references/handoff-detail.md` § Auto mode for the cap rule and the full chain.
- `--html` emits a static HTML copy alongside `.cheese/age/<slug>.md`: write the markdown first, then run `python3 skills/age/scripts/age.pyz html-report --report .cheese/age/<slug>.md --slug <slug>` and print the returned path. It groups findings by severity into the shared HTML shell — offline, no CDN, no JS.
+ `handoff_context.wiki_hits` is optional routed input from `/cheese`.
+ Each hit carries `page`, `line`, and `why`.
+ Reuse each valid hit before you ground the review again.
+ Render the reused hits in `## Wiki context`.
- Portability reference: [`../cheese/references/harness-portability.md`](../cheese/references/harness-portability.md) covers helper resolution, sub-agent dispatch, GitHub operations, and handoff transitions; prefer the bundled or repo-local helper first, treat `${CLAUDE_SKILL_DIR}` as optional host-provided fallback. The handoff blocks below are the portable contract; slash commands are host renderings, not the control model.
+ `--hard` propagates through `/cure` to `/plate`.
+ Age never fires the gate.
+ `/plate` gives `/hard-cheese` the final verified artifact state before publication.
+ `--html` emits a static HTML copy alongside `.cheese/age/<slug>.md`.
+ Write the markdown first.
+ Then run `python3 skills/age/scripts/age.pyz html-report --report .cheese/age/<slug>.md --slug <slug>`.
+ Print the returned path.
+ The HTML groups findings by severity into the shared HTML shell.
+ The output is offline and uses no CDN or JS.
+
+ Read [`../cheese/references/harness-portability.md`](../cheese/references/harness-portability.md) for helper resolution, sub-agent dispatch, GitHub operations, and handoff transitions.
+ Prefer the bundled or repo-local helper.
+ Treat `${CLAUDE_SKILL_DIR}` as an optional host-provided fallback.
+ The handoff blocks below define the portable contract.
+ Remember: slash commands are host renderings, not the control model.
+
## Review dimensions
- Dimensions answer **what kind of problem**. Severity (`blocker / high / medium / low`) is per-finding, computed from base + location + compounding modifiers (see `references/dimensions.md` § Severity computation).
+ Dimensions answer **what kind of problem**.
+ Assign one severity (`blocker / high / medium / low`) to each finding.
+ Compute severity from base, location, and compounding modifiers (see `references/dimensions.md` § Severity computation).
| Dimension | Base range |
| --- | --- |
| correctness | low → blocker |
| security | low → blocker |
| encapsulation | low → blocker |
| spec | low → blocker |
| complexity | low → high |
| deslop | low → high |
| assertions | low → blocker |
| nih | low → high |
| efficiency | low → blocker |
| telemetry | low → blocker |
- Per-dimension base-severity tables, location-sensitivity, fix-cost-now / fix-cost-later, and recommendation shapes live in `references/dimensions.md` — read it before computing any finding's severity. This reduced workflow intentionally omits the git-history/precedent dimension.
+ `references/dimensions.md` contains per-dimension base-severity tables, location sensitivity, fix-cost-now / fix-cost-later, and recommendation shapes.
+ Read it before computing any finding's severity.
+ This workflow intentionally omits the git-history/precedent dimension.
## Flow
- 1. Identify the diff, scope, and relevant spec or issue. **Mode check:** compute the review range's `review_surface` score and risk flags, then call `age_route.route(score=..., risk_flags=..., entry="age")` (`src/easy_cheese/shared/fanout/age_route.py`). `n=1` — steps 2–4 below, unchanged. Any `n>1` — read `references/fan-out.md` first; its `lenses` list, not a fixed label, sets worker count. Fan-out also requires `/age` not itself be a sub-agent — stay single-parent when it is. Thread the router's `effort` into the reviewer dispatch.
- 2. Gather evidence: diff, touched files, tests, callers/imports. If a press report exists for this slug, read it via `python3 skills/age/scripts/age.pyz read-handoff-slug --phase press --slug <slug>` and summarise unresolved items in a `## Press findings` sub-section — `/cure` only reads `.cheese/age/<slug>.md`.
-
- No press report but a cook handoff exists: record `press: skipped` (see `## Output`) and print the warning at handoff. No cook artifact either: skip the marker and continue.
+ 1. Identify the diff, scope, and relevant specification or issue.
+ Compute the review range's `review_surface` score and risk flags.
+ Call `age_route.route(score=..., risk_flags=..., entry="age")` from `src/easy_cheese/shared/fanout/age_route.py`.
+ For `n=1`, continue with steps 2 through 4.
+ For `n>1`, read `references/fan-out.md` first.
+ Use its `lenses` list to set the worker count.
+ Do not use fan-out when `/age` runs as a sub-agent.
+ Pass the router's `effort` value to the reviewer.
+ Assemble the fan-out packet before the lock.
+ The lock covers the packet, because the packet is review evidence.
+ Then run `python3 skills/age/scripts/age.pyz review-lock --slug <slug>` to lock the production tree.
+ Use the resolved slug from `## Inputs`.
+ Step 5 rejects the report when a production file changes.
+ 2. Gather evidence from the diff, touched files, tests, and callers/imports.
+ Resolve the upstream report with `python3 skills/age/scripts/age.pyz artifact-path --phase press --slug <slug>`.
+ Validate its preamble with `python3 skills/age/scripts/age.pyz read-handoff-slug --phase press --slug <slug>`.
+ That command returns preamble fields only.
+ Read the resolved file itself for the `## Review follow-ups` section and every unresolved item.
+ Copy each unresolved item into a `## Press findings` sub-section.
+ Keep the `artifact` and `baseline` values from that preamble for step 5.
+ `/cure` reads only `.cheese/age/<slug>.md`.
- If `.cheese/glossary/<slug>.md` exists, read it so naming drift can be flagged as a deslop finding.
- 3. Review every dimension; dimensions with no findings simply omit themselves. Report every defect, however minor — never self-filter on perceived significance; filtering happens downstream in the verifier pass (`n>1`) or in severity computation (single-parent). Do not raise a finding for a gate failure identical to the diff's recorded `baseline:` block — see [`../cook/references/quality-gates.md`](../cook/references/quality-gates.md); flag only new or changed failures.
- 4. Compute severity per finding (base + location bump + compounding bump, capped at `blocker`). Group findings by severity (`## Blocker → ## High → ## Medium → ## Low`); within a severity group, order by file.
- 5. Write the report (see `## Output`), then `python3 skills/age/scripts/age.pyz write-handoff-artifact --phase age --slug <slug> --status ok --next cure --artifact "" --orientation "<one-line orientation>" --durable-flags "<none | one line per flag>" --body-file "$report_file"`. Print the path.
+ If no press report exists but a cook handoff exists, record `press: skipped` (see `## Output`).
+ Print the warning at handoff.
+ If no cook artifact exists either, omit the marker and continue.
+ If `.cheese/glossary/<slug>.md` exists, read it to flag naming drift as a deslop finding.
+ 3. Review every dimension.
+ Omit dimensions with no findings.
+ Report every defect, however minor.
+ Do not filter findings by perceived significance.
+ The verifier pass (`n>1`) or severity computation (single-parent) filters findings later.
+ Do not report a gate failure that matches the diff's recorded `baseline:` block.
+ Read [`../cook/references/quality-gates.md`](../cook/references/quality-gates.md) for the baseline rules.
+ Report only new or changed failures.
+ 4. Compute severity per finding (base + location bump + compounding bump, capped at `blocker`).
+ Group findings by severity (`## Blocker → ## High → ## Medium → ## Low`).
+ Order findings by file within each severity group.
+ 5. Write the report body to `.cheese/age/<slug>-body.md`.
+ Write the body only. Do not write the handoff preamble into that file.
+ Do not write `.cheese/age/<slug>.md` yourself. The gated writer creates it.
+ Compute the recommended set first (see `## Handoff`).
+ Set `<next>` to `cure` when that set is not empty.
+ Set `<next>` to `done` when that set is empty.
+ Set `<artifact>` to the upstream report path from step 2. Use `""` only when no upstream report exists.
+ Set `<baseline>` to the baseline block from that upstream handoff. Omit `--baseline` only when the upstream handoff has none.
+ Run `python3 skills/age/scripts/age.pyz write-handoff-artifact --phase age --slug <slug> --status ok --next <next> --artifact "<artifact>" --orientation "<one-line orientation>" --durable-flags "<none | one line per flag>" --baseline "<baseline>" --body-file ".cheese/age/<slug>-body.md"`.
+ Print the path.
+ The write fails when the production tree moved after step 1. Do not retry it with a new lock.
6. Hand off (see `## Handoff` below).
- ## Preferred tools and fallbacks
-
- Call source-code backends directly according to the shared [`code-intelligence-routing.md`](../cheese/references/code-intelligence-routing.md) contract. For caller graphs, use the selected semantic backend's caller query plus `tilth_deps` when available.
-
- | Need | Prefer | Fallback |
- | --- | --- | --- |
- | Diff inspection | `delta` | `git diff --unified=3` |
- | Caller/dependency impact + curated review context | semantic caller search + `tilth_deps` | manual scoping; note the precision loss |
- | Architecture / hotspot framing for large diffs | changed-file map + caller/dependency evidence | skip and note in confidence |
- | Design rationale for encapsulation/spec dimensions (optional) | `mcp__hallouminate__list_corpora` / `mcp__hallouminate__ground` on `repo:<repo>:wiki`, grounding design intent before grading, rendering consulted pages in `## Wiki context` | skip; omit `## Wiki context`; proceed with diff + code evidence only; cap at `speculating` when rationale is the primary evidence |
- | GitHub/PR context | `gh` | local git commands or user-provided PR data |
- | Merge/conflict awareness | mergiraf | manual conflict checks |
-
- **Optional MCPs:** hallouminate and milknado follow the detect-and-degrade contract in [`../cheese/references/optional-plugins.md`](../cheese/references/optional-plugins.md) — state absence once, fall back, reduce confidence only if evidence quality suffers, never block.
-
## Sub-agent fan-out
- `/age` sizes its own fan-out via the age router (`src/easy_cheese/shared/fanout/age_route.py`), not a size-only threshold, and resolves every dispatched worker through `../cheese/references/agent-resolution.md` (read-only, fresh-context; exact specialist, then compatible specialist, then a prompt-constrained general agent with `degraded: true`). Mechanics: `references/fan-out.md`, `references/packet.md`, `references/sub-agent-gate.md`.
-
- ## Output
-
- Cross-cutting house style and citation form: [`../cheese/references/formatting.md`](../cheese/references/formatting.md). This section owns the findings-report shape; formatting.md owns the voice rules and the footnote primitive.
+ `/age` sizes its own fan-out with the age router (`src/easy_cheese/shared/fanout/age_route.py`), not a size-only threshold.
+ `/age` resolves every dispatched worker through [`../cheese/references/agent-resolution.md`](../cheese/references/agent-resolution.md).
+ Use read-only, fresh-context workers.
+ See `references/fan-out.md`, `references/packet.md`, and `references/sub-agent-gate.md` for mechanics.
- Write to `.cheese/age/<slug>.md` with a minimum handoff slug at the top — `status`, `next`, `artifact`, `durable_flags`, `baseline`, one-line orientation. `press: skipped` is the first body line after the blank separator when a cook artifact exists but no press report does; omit it otherwise.
+ Call each source-code backend through the shared [`code-intelligence-routing.md`](../cheese/references/code-intelligence-routing.md) contract.
+ `references/packet.md` § Evidence tools and fallbacks lists the tool for each need.
- Body, in order: `# Age Report — <slug>`; `## Orientation` (1-2 sentences); `## Press findings` (omit unless a press report exists); `## Wiki context` (omit unless hallouminate grounding hit); severity sections (`**[dim:sev]** path:line — claim`, then `location: <tier> · fix-cost-now: <tier> · fix-cost-later: <tier> · confidence: <tier>`, then `recommendation: <action>`); `## Confidence`; `## Next step`. See `references/report-example.md` for the full skeleton plus a worked instantiation.
+ ## Output
- Empty severity sections are omitted entirely. When ten or more `low` findings exist, collapse the `## Low` section to a single line:
+ Use [`../cheese/references/formatting.md`](../cheese/references/formatting.md) for cross-cutting house style and citation form.
+ This section defines the findings-report shape.
+ `formatting.md` defines the voice rules and footnote primitive.
- ```markdown
- ## Low
- *N low-severity findings suppressed.* Re-run with `--full` (or `/age --full`) to see them.
- ```
+ The gated writer writes `.cheese/age/<slug>.md`.
+ It puts the minimum handoff slug at the top.
+ The slug carries `status`, `next`, `artifact`, `durable_flags`, `baseline`, and one-line orientation.
+ Supply each value through the step 5 command.
+ Write the body below into `.cheese/age/<slug>-body.md`, with no preamble.
+ `references/report-example.md` § Body order defines the section order, the exact
+ finding format, and the full skeleton. Read it before you write the body.
- Per-finding `confidence:` uses the voice-kernel scale (`references/voice.md` § Reasoning posture): `certain` — verified by direct evidence (diff/code read, command output); `speculating` — inferred from indirect signal. A `don't know` grading never ships as a finding row — gather the missing evidence or drop the claim. Suppressed lows feed the cure-selection table only when `--full` is passed.
+ Use the voice-kernel scale for per-finding `confidence:` (see `references/voice.md` § Reasoning posture).
+ Use `certain` for direct evidence from a diff/code read or command output.
+ Use `speculating` for an inference from an indirect signal.
+ Do not ship a `don't know` grading as a finding row.
+ Gather the missing evidence or drop the claim.
+ Reserve `don't know` for the report-level `## Confidence` line.
+ Add suppressed lows to the cure-selection table only when the user passes `--full`.
- `status: ok` when the review completed; `status: halt: <reason>` when evidence was unreachable. Grammar: [handback contract](../cheese/references/handback-contract.md). `next: cure` when any finding meets the **medium+ floor**; `next: done` otherwise. `durable_flags:` mirrors cook's gate: default `none`.
+ Set `status: ok` when the review completes.
+ Set `status: halt: <reason>` when the review cannot reach evidence.
+ Follow the [handback contract](../cheese/references/handback-contract.md).
+ Derive `next` from the recommended set that `## Handoff` computes.
+ Set `next: cure` when that set is not empty.
+ Set `next: done` when that set is empty.
+ Keep every finding in the report, whatever `next` says.
+ Set `durable_flags:` to `none` by default, as in cook's gate.
+ Record the resolved worker types under `## Agent resolution` in the body.
- Then print `Age report: .cheese/age/<slug>.md`. When `press: skipped` is set, also print: `Warning: no /press report for <slug> — hardening was skipped. Run /press <slug> first, or continue with /cure.` When `--html` is passed, also print the HTML path returned by `html-report` (render command under `--html` in `## Inputs`).
+ Print `Age report: .cheese/age/<slug>.md`.
+ When `press: skipped` is set, print the following warning:
+ `Warning: no /press report for <slug> — hardening was skipped. Run /press <slug> first, or continue with /cure.`
+ When the user passes `--html`, print the HTML path that `html-report` returns.
+ The render command appears under `--html` in `## Inputs`.
## Handoff
**Pipeline:** culture → mold → cook → press → **[age]** → cure → plate
- **Compute the recommended set.** Composite `all-medium, cheap`: the medium floor (blocker+high+medium) unioned with every `Low` at `fix-cost-now: contained`.
-
- **Decide act vs ask:**
-
- - **Empty set** — write `next: done`, print the report path, stop.
- - **Reason to ask** — a set member has `fix-cost-now: sprawling` or `fix-cost-later: structural`, findings conflict, or `--safe` was passed: read `references/handoff-detail.md` and render the gate per `../cheese/references/handoff-gate.md`, pre-selecting the composite and flagging heavy rows.
- - **Otherwise** — act: announce the selection and dispatch `/cure` per `references/handoff-detail.md` § Dispatch. No gate.
-
- `--auto` substitutes a severity-floor selection (`## Auto mode` below); `references/handoff-detail.md` also covers the no-chain override under `/cook`'s fan pathway.
-
- ## Auto mode
+ **Compute the recommended set.** Use the `all-medium, cheap` composite.
+ Include the medium floor (blocker+high+medium).
+ Also include every `Low` with `fix-cost-now: contained`.
- When invoked with `--auto`:
+ **Decide whether to act or ask.**
- - Skip the handoff gate.
- - If two cure passes have already completed (cap reached), stop and surface the final report — do not invoke `/cure` again even if findings remain.
- - Otherwise, if any finding meets the **medium+ floor** — invoke `/cure <slug> --auto --stake medium+` (forward `--open-pr` when it is in scope) and increment the cure-pass count when it returns.
- - If no finding meets the **medium+ floor**, stop the chain with a one-line "auto chain clean" note and the report path.
+ This selection is the only one. `## Output` derives `next` from it.
+ A review with contained lows and no medium finding has a non-empty set.
+ That review sets `next: cure` and keeps every low finding in the report.
- ### Within cook's own fan pathway
+ - **Empty set** — Set `next: done`. Print the report path. Stop.
+ - **Reason to ask** — Ask when a set member has `fix-cost-now: sprawling` or `fix-cost-later: structural`.
+ Also ask when two findings conflict.
+ Also ask when the user passes `--safe`.
+ Read `references/handoff-detail.md` first.
+ Render the gate per [`../cheese/references/handoff-gate.md`](../cheese/references/handoff-gate.md).
+ Pre-select the composite. Mark each heavy row.
+ - **Otherwise** — Act. Announce the selection. Dispatch `/cure` per `references/handoff-detail.md` § Dispatch. Do not render a gate.
- `/cook`'s fan pathway spawns age as a fresh-context sub-agent and owns the chain itself. Read `references/handoff-detail.md` § Within cook's own fan pathway for the no-chain isolation directive before writing the report.
+ `--auto` substitutes a severity-floor selection and its own chain.
+ Read `references/handoff-detail.md` § Auto mode before an `--auto` run.
+ That file also defines the no-chain override under `/cook`'s fan pathway.
## Rules
- - Review is not a verdict; explain where to look and why.
- - Do not edit production files; `/cure` owns application.
- - Do not raise a finding for a gate failure identical to the diff's recorded `baseline:` block; flag only new/changed failures per [`../cook/references/quality-gates.md`](../cook/references/quality-gates.md).
- - Default to acting: auto-select the recommended set, dispatch `/cure` without a gate. Ask first only on a genuine reason or `--safe`. An empty recommended set is a clean stop, not a question.
- - Do not invent evidence; cite files, diffs, commands, or unavailable-source notes.
- - Agree when the diff is fine — an empty dimension is a valid outcome, not a gap to fill.
- - Keep confidence qualitative (`certain | speculating | don't know`) at both the report and per-finding level; never a numeric score.
- - Findings carry location + recommendation, not JSON sidecars or tag-anchored fix payloads — `/cure` reads the markdown directly.
- - Apply `references/voice.md` (output discipline, reasoning posture, confidence vocabulary).
+ Review is not a verdict.
+ Explain where to look and why.
+ Do not edit production files.
+ The step 1 review lock enforces this rule.
+ `/cure` applies each fix.
+ Do not raise a finding for a gate failure identical to the diff's recorded `baseline:` block.
+ Flag only new/changed failures per [`../cook/references/quality-gates.md`](../cook/references/quality-gates.md).
+ Default to acting.
+ Auto-select the recommended set.
+ Dispatch `/cure` without a gate.
+ Ask first only for a genuine reason or when `--safe` is active.
+ Treat an empty recommended set as a clean stop, not a question.
+ Do not invent evidence.
+ Cite files, diffs, commands, or unavailable-source notes.
+ Agree when the diff is fine.
+ Treat an empty dimension as a valid outcome, not a gap to fill.
+ Keep confidence qualitative (`certain | speculating | don't know`) in the report and each finding.
+ Never use a numeric score.
+ Give each finding a location and recommendation.
+ Do not add JSON sidecars or tag-anchored fix payloads.
+ `/cure` reads the markdown directly.
+ Apply `references/voice.md` (output discipline, reasoning posture, confidence vocabulary).
## References
- - `references/dimensions.md` — before grading any finding: rubrics, location sensitivity, fix-cost tables, recommendation shapes.
- - `references/fan-out.md` — before any `n>1` dispatch: router mechanics, lens partitions, six-seam sequence, verifier pass.
- - `references/packet.md` — when assembling the Seam-2 shared context packet for a fan-out run.
- - `references/sub-agent-gate.md` — before any sub-agent dispatch: digest contract, harness-agnostic selection, what the parent never delegates.
- - `references/handoff-detail.md` — before the selection gate or a `/cure` dispatch: gate menu, dispatch payload, cook-fan-pathway no-chain override.
- - `references/report-example.md` — alongside `## Output`: worked rendering plus the full placeholder skeleton.
- - `references/voice.md` — when writing the report: output discipline, reasoning posture, confidence vocabulary.
- - `references/deslop-rust.md`, `references/deslop-typescript.md`, `references/deslop-python.md`, `references/deslop-shell.md`, `references/deslop-go.md` — when grading `deslop` in that language: pattern catalogs with lint-rule mappings.
+ - Read the generated command inventory in [`references/commands.md`](references/commands.md).
+ - Read `references/dimensions.md` before grading a finding.
+ - Read `references/fan-out.md` before an `n>1` dispatch.
+ - Read `references/packet.md` before assembling a fan-out context packet.
+ - Read `references/sub-agent-gate.md` before a sub-agent dispatch.
+ - Read `references/handoff-detail.md` before the selection gate or a `/cure` dispatch.
+ - Read `references/report-example.md` § Body order before writing the report body.
+ - Read `references/packet.md` § Evidence tools and fallbacks before gathering evidence.
+ - Read `references/handoff-detail.md` § Auto mode before an `--auto` run.
+ - Read `references/voice.md` before writing the report.
+ - Read the applicable [Rust](references/deslop-rust.md), [TypeScript](references/deslop-typescript.md), [Python](references/deslop-python.md), [Shell](references/deslop-shell.md), or [Go](references/deslop-go.md) catalog before grading `deslop`.
## Agent resolution
Resolve every dimension worker and fresh-context review through [`../cheese/references/agent-resolution.md`](../cheese/references/agent-resolution.md).
| Work | Preferred types | Permissions/isolation | Minimum power | Effort | Fallback |
| --- | --- | --- | --- | --- | --- |
| Review a diff or one dimension | reviewer | read-only, fresh-context | powerful | high | compatible reviewer, then general |
- The canonical age report/handoff carries the shared `agent_resolution` block.
+ The table gives the default effort.
+ The router overrides it. Use the `low`, `medium`, or `high` value that `age_route.route(...)` returns.
+ Pass that value to every dispatched worker.
+
+ The report body carries the shared `agent_resolution` block under `## Agent resolution`.
+ `references/report-example.md` shows that section in the full skeleton.