Feature 05: checks & statuses (docs/features/05) #16

Merged
crueber merged 1 commit from feat/checks into main 2026-09-04 04:56:59 +00:00
Owner

Implements docs/features/05_checks_statuses.md end to end (Wave 05, v1 statuses-only).

New package internal/checks (Seam 1 ExtraRoutes, both lanes): commit statuses (Create-then-CAS per (sha,context)), checks/index.json (P4, newest-500, inline compact past 256KiB, checks-index-compact kind), wct_ CI tokens (Seam 2 shape via AuthService.ExtraCredential hook; frozen Principal untouched, capability handler-side), combined worst-of view (no-store), require_checks merge-time gate consulted by 03 pull-merge through pulls ChecksGate seam (merge logic NOT forked; verbatim refusal; union over non-bypassed rules). Failure/error fan-out via nil-safe 06-shaped emitter (internal/notify absent). UI: checks table page, pills on commits + PR head, merge-button tooltip, CI-tokens settings tab, web/sdk/src/checks.js. E6 evidence entry.

Verification: internal/checks 96.4% cover, -race clean all touched pkgs, table-driven httptest per handler, pulls e2e (blocked-verbatim then lands) green, full go test -short ./... green, node suite 145/145, live stack e2e (report failure, merge refused verbatim, report success, merge lands). make cover: all pkgs pass except pre-existing internal/git float-boundary gap (untouched by this diff). No real-browser drive available in this env (documented gap); vite build + live-stack shell serving verified. New CAS families join the frozen overwritable list in 14_extensibility.md in the same change. Tracks issue #11. Do NOT merge.

Implements docs/features/05_checks_statuses.md end to end (Wave 05, v1 statuses-only). New package internal/checks (Seam 1 ExtraRoutes, both lanes): commit statuses (Create-then-CAS per (sha,context)), checks/index.json (P4, newest-500, inline compact past 256KiB, checks-index-compact kind), wct_ CI tokens (Seam 2 shape via AuthService.ExtraCredential hook; frozen Principal untouched, capability handler-side), combined worst-of view (no-store), require_checks merge-time gate consulted by 03 pull-merge through pulls ChecksGate seam (merge logic NOT forked; verbatim refusal; union over non-bypassed rules). Failure/error fan-out via nil-safe 06-shaped emitter (internal/notify absent). UI: checks table page, pills on commits + PR head, merge-button tooltip, CI-tokens settings tab, web/sdk/src/checks.js. E6 evidence entry. Verification: internal/checks 96.4% cover, -race clean all touched pkgs, table-driven httptest per handler, pulls e2e (blocked-verbatim then lands) green, full go test -short ./... green, node suite 145/145, live stack e2e (report failure, merge refused verbatim, report success, merge lands). make cover: all pkgs pass except pre-existing internal/git float-boundary gap (untouched by this diff). No real-browser drive available in this env (documented gap); vite build + live-stack shell serving verified. New CAS families join the frozen overwritable list in 14_extensibility.md in the same change. Tracks issue #11. Do NOT merge.
New package internal/checks (Seam 1 ExtraRoutes on both lanes): commit
statuses (Create-then-CAS per (sha,context)), checks/index.json (P4,
newest-500, inline compact past 256KiB, checks-index-compact kind),
wct_ CI tokens (Seam 2 shape via AuthService.ExtraCredential hook;
frozen Principal untouched, capability checked handler-side), combined
worst-of view (no-store), require_checks merge-time gate consulted by
03's pull-merge task through pulls' ChecksGate seam (merge logic not
forked; verbatim refusal; union over non-bypassed rules). Failure/error
fan-out via the nil-safe 06-shaped emitter (internal/notify absent).
UI: checks table page, pills on commits/PR head, merge-button tooltip,
CI-tokens settings tab, web/sdk/src/checks.js. EVIDENCE.md E6.
Implements docs/features/05 (Wave 05); amends 14 overwritable list.
Sign in to join this conversation.
No description provided.