# Human-owned review conversations

Code Eye treats user feedback as a durable conversation rather than a one-shot
line comment.

- A user comment keeps the same id when edited and across review rounds.
- The browser can queue one explicit next action: `fix`, `explain`, `add_test`,
  or `show_alternative`. That action travels with the comment returned to the
  agent.
- After handling feedback, the agent calls `review` again with an
  `addressedComments` entry containing the stable comment id, a summary,
  changed locations, and checks. Code Eye appends an immutable response and
  clears the queued action.
- A response may include Before/After code. When the changed location matches
  the original comment file and line and Before is omitted, Code Eye uses the
  captured original line as the Before value.
- Agent acknowledgement moves the comment to `agent_addressed`; it does not
  resolve it. It remains visible without re-triggering agent work. Only an
  explicit user action changes the status to `resolved`; selecting another
  handoff action reopens it for the agent.
- Responses persist in the version 3 state ledger and are pruned when their
  owning conversation is deleted or falls outside the review range.
- When no current diff exists, persisted conversations become local review
  items so explanation-only and alternative-only responses can still enter
  the ledger and reach the human approval step.

The review UI remains read-only with respect to the working tree. It records
intent and evidence; the coding agent owns code edits and verification.

Rejected: automatically resolving a comment when the agent reports a fix
(removes the human acceptance gate), replacing the prior response on every
round (loses the audit trail), and applying fixes directly from the browser
(splits editing context between the agent and the review surface).
