Wave C: code review (docs/features/04) #10

Merged
crueber merged 1 commit from feat/review into main 2026-09-04 03:59:16 +00:00
Owner

Implements docs/features/04 end to end on branch feat/review (from origin/main).

New package internal/review: immutable reviews (commit_sha==head or verbatim 409, author self-approve 422, maintain-only compensating dismissal), CAS'd line-anchored threads (tid from PR header CAS, normative anchor + view-time drift), review-requests.json CAS index + review-suggest, review_summary as pure recompute-in-CAS-loop (gate never trusts it), required-reviews as one effect with two honest halves (push-time deny via policy.RequiredReviewsEffect; merge-time scan gate consulted by 03's merge task through pulls ReviewGate seam — merge logic NOT forked), 14 endpoints on both lanes with review/thread SSE frames, PR-page UI + SDK (dark and light). Registers NO task kinds. New CAS'd families join the frozen overwritable list in the same change (14 amendment).

Verification: gofmt/vet clean; internal/review 96.2% (covergate 95 pass), policy 97.3%, pulls 98.0%; go test -race clean; e2e green; node --test 142 pass; vite+esbuild builds green; live smoke (real server+git): submit/self-approve-422/stale-409 verbatim, threads/requests/suggest, gate blocks with narrated shortfall then merges after approval.

Known gaps: no browser rig in this environment (vite compile + served bundle + 142 JS tests instead — reviewer please load /, a PR page, /setup in Chromium); receive-pack enforces no policy effects yet (pre-existing: even protect passes through — push-time half registered + unit-proven, enforced where evaluation exists); collaboration SSE stream is 06's (frames publish through the seam, UI reloads via invalidate).

Implements docs/features/04 end to end on branch feat/review (from origin/main). New package internal/review: immutable reviews (commit_sha==head or verbatim 409, author self-approve 422, maintain-only compensating dismissal), CAS'd line-anchored threads (tid from PR header CAS, normative anchor + view-time drift), review-requests.json CAS index + review-suggest, review_summary as pure recompute-in-CAS-loop (gate never trusts it), required-reviews as one effect with two honest halves (push-time deny via policy.RequiredReviewsEffect; merge-time scan gate consulted by 03's merge task through pulls ReviewGate seam — merge logic NOT forked), 14 endpoints on both lanes with review/thread SSE frames, PR-page UI + SDK (dark and light). Registers NO task kinds. New CAS'd families join the frozen overwritable list in the same change (14 amendment). Verification: gofmt/vet clean; internal/review 96.2% (covergate 95 pass), policy 97.3%, pulls 98.0%; go test -race clean; e2e green; node --test 142 pass; vite+esbuild builds green; live smoke (real server+git): submit/self-approve-422/stale-409 verbatim, threads/requests/suggest, gate blocks with narrated shortfall then merges after approval. Known gaps: no browser rig in this environment (vite compile + served bundle + 142 JS tests instead — reviewer please load /, a PR page, /setup in Chromium); receive-pack enforces no policy effects yet (pre-existing: even protect passes through — push-time half registered + unit-proven, enforced where evaluation exists); collaboration SSE stream is 06's (frames publish through the seam, UI reloads via invalidate).
Implements docs/features/04 end to end: immutable reviews pinned to the
PR head (409) with server-side author self-approve rejection (422) and
maintain-only compensating dismissal; CAS'd line-anchored threads (tid
from the PR header CAS, normative anchor + derived-not-stored drift);
review-requests.json CAS index + review-suggest; review_summary as a pure
recompute-in-CAS-loop render cache; required-reviews as one policy effect
with two honest halves (push-time deny at receive-pack via
policy.RequiredReviewsEffect, merge-time scan gate consulted by 03's
merge task through pulls' ReviewGate seam — merge logic not forked);
14 endpoints on both lanes with review/thread SSE frames; PR-page UI +
SDK with dark and light themes. Registers no task kinds.

Decisions recorded in docs/features/04 (Wave C2 notes) and the Wave C2
amendment in docs/go/14_extensibility.md; E5 evidence in docs/EVIDENCE.md.
Sign in to join this conversation.
No description provided.