* feat: v0.3.29 — Web shared review loop (plan PR3 core)
- Host-side WebCodeReviewRunServiceV1: single-flight admission, background
execution of the shared v0.3.28 review runner, bounded receipt history,
digest re-verification, repository-revision staleness, cancellation.
- POST /review/run (+cancel) behind assertMutation/executeMutation; read-only
GET /review/runs[/:runId] with context guards.
- Review panel results section: priority-grouped findings with file:line diff
anchoring, honest state banners (running/partial/failed/cancelled/stale
never green), typed finding drafts sent back to the Composer.
- Additive onSnapshotCaptured runner hook for the fileKey->path index; frozen
receipt contract unchanged.
- Tests: 27 new (service unit, real-host endpoint on a temp Git repo, pure +
SSR view contract). Real-model quality benchmark remains not_run.
Plan: docs/plan/v0.3.29-plan.md
* style: v0.3.29 — prettier pass over changed files
* style: format two v0.3.28 files flagged by the CI format gate