Flock.reserve(ctx) — context-aware flock slot; replaces the 5 unconditional f.sem <- sites in ask, classify, ClassifyMode, ClassifyKind, ClassifyDivergence. A saturated flock no longer wedges a caller forever; it gives up when the context ends.
dispatch_test.go: TestDispatchCallsGoThroughFlock (semaphore + prob-logged flight event + saturation must not answer), TestConspiracyInviteCapInFlight (invites capped by MaxCrowsInFlight), TestDispatchGuardrailsEndToEnd (conspiracy request → claims → nudge, atomic peak ≤ cap, mode/tag/flight kinds in the log).
serve test helper for mounting a *Server handler.
How to test / validate
go test -race -count=1 -run 'TestDispatch|TestConspiracyInviteCap' . passes
go vet ./... and gofmt -l . are clean
Revert flock.go/jev.go to main and go test -timeout 15s -run TestDispatchCallsGoThroughFlock . fails (red: unconditional sem send hangs past the test timeout)
## What was addressed
- `Flock.reserve(ctx)` — context-aware flock slot; replaces the 5 unconditional `f.sem <-` sites in `ask`, `classify`, `ClassifyMode`, `ClassifyKind`, `ClassifyDivergence`. A saturated flock no longer wedges a caller forever; it gives up when the context ends.
- `dispatch_test.go`: `TestDispatchCallsGoThroughFlock` (semaphore + prob-logged flight event + saturation must not answer), `TestConspiracyInviteCapInFlight` (invites capped by `MaxCrowsInFlight`), `TestDispatchGuardrailsEndToEnd` (conspiracy request → claims → nudge, atomic peak ≤ cap, mode/tag/flight kinds in the log).
- `serve` test helper for mounting a `*Server` handler.
## How to test / validate
- [ ] `go test -race -count=1 -run 'TestDispatch|TestConspiracyInviteCap' .` passes
- [ ] `go vet ./...` and `gofmt -l .` are clean
- [ ] Revert `flock.go`/`jev.go` to main and `go test -timeout 15s -run TestDispatchCallsGoThroughFlock .` fails (red: unconditional sem send hangs past the test timeout)
## Configurations or dependencies
- [ ] None beyond C1–C6 (#22–#27), all merged.
Closes #28
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What was addressed
Flock.reserve(ctx)— context-aware flock slot; replaces the 5 unconditionalf.sem <-sites inask,classify,ClassifyMode,ClassifyKind,ClassifyDivergence. A saturated flock no longer wedges a caller forever; it gives up when the context ends.dispatch_test.go:TestDispatchCallsGoThroughFlock(semaphore + prob-logged flight event + saturation must not answer),TestConspiracyInviteCapInFlight(invites capped byMaxCrowsInFlight),TestDispatchGuardrailsEndToEnd(conspiracy request → claims → nudge, atomic peak ≤ cap, mode/tag/flight kinds in the log).servetest helper for mounting a*Serverhandler.How to test / validate
go test -race -count=1 -run 'TestDispatch|TestConspiracyInviteCap' .passesgo vet ./...andgofmt -l .are cleanflock.go/jev.goto main andgo test -timeout 15s -run TestDispatchCallsGoThroughFlock .fails (red: unconditional sem send hangs past the test timeout)Configurations or dependencies
Closes #28