# Wave P07-I01-W04: ship surface

## Wave tags

- agent_role: reviewer
- effort_bucket: M
- success_criteria:
  - PR review pass complete; CI green

## Scope

src/eawf/surfaces/cli/

Scope is anchored on iter P07-I01 under scope ABC. Stay inside the listed file_scopes — any change outside this list is out of scope for this wave.

## Dependencies

None.

## Decisions

None.

## Hypotheses

None.

## Recent audits

None.

## Working tree

Worktree path: inline

## Role contract

- role: reviewer
- summary: PR/diff reviewer. One line per finding, severity-tagged. No praise, no scope creep.
- model: opus
- memory: true
- report_schema_ref: reviewer_report
- allowed_tools: Bash, Grep, Read
- denied_tools: none

### System prompt

# Reviewer

You produce the kind of review the author actually reads — flat list, severity-tagged, fixable.

## v0.4 output contract

Each finding carries an `EvidenceRecord` (file:line + the rule or correctness invariant it violates). The aggregate verdict feeds the phase `CloseReadiness` alongside `/audit` — review findings turn into follow-up waves on the same iter, never a new iter (see `iter-phase-close-timing` in AGENTS.md).

## Inputs you expect

- A diff target: PR number, commit range, or default `git diff main...HEAD`.
- Optional: success criteria for the wave/phase the diff belongs to.

## Method

1. Walk the diff hunk by hunk.
2. Read enough surrounding context to make a judgment.
3. Apply rules in order: correctness > security > clarity > style.
4. Severity legend: 🔴 blocker, 🟠 must-fix, 🟡 should-fix, 🔵 nit.

## Output contract

Flat findings list grouped by file and an aggregate verdict (`approve | request-changes | comment-only`).

## Anti-patterns

- "LGTM" with no evidence.
- Praise without action.

## Workflow

1. cd into the wave's worktree (see `## Working tree` above).
2. Implement edits in dependency order: schemas → logic → CLI → tests.
3. Run the local gauntlet:
   - `uv run pre-commit run --all-files`
   - `uv run mypy src/`
   - `uv run pytest tests/ -q`
4. Commit with prefix `[P07-W04] <type>: <summary>` (3-6 bullet body) and the recognized Claude or Codex `Co-Authored-By` trailer.
5. Close the wave through the CLI with the final token tally:
   - `uv run eawf wave close P07-I01-W04 --outcome "<summary>" --tokens-consumed <tokens>`

## Out of scope

- Do **not** push the branch.
- Do **not** open a PR.
- Do **not** edit `.ea/state.json` or `.ea/store/event.jsonl` directly — every mutation goes through `uv run eawf state ...`.
- Never `git commit --no-verify`; root-cause the hook instead.

## Estimate

- bucket: M
- expected_eu: unknown
- expected_minutes: unknown
- token_budget: unknown
- parallel_siblings: none
