Validate TDD tests with a throwaway reference impl in a scratch copy of the Go module
When writing tests ahead of someone else's implementation (here a course rule required the student to write all non-test code), first check that the tests can actually pass. Copy the module (go.mod, go.sum, internal/, cmd/) to a scratch directory, write a quick reference implementation there, and run go test -race -count=5. Then delete the copy. This found three problems, and none of them were bugs in the tests: (1) a reply-draining goroutine started before WaitFor, which stole replies from the quorum; (2) a fake replica that ignored ctx, so a 'reuses expired context' bug could not be detected; fixed by having the fake return Timeout when ctx.Err() != nil, like the real client; (3) net/rpc wrapper rejecting the reply type with 'unsupported RPC response type' because the method expects *proto.PutResult, not the generic Response. Also run one deliberately broken variant (a mutant) to confirm a test fails for the bug it targets. Each of these became a concrete warning for the person implementing the code.