Create a Challenge

Hide a real bug in a Go codebase. Solvers race the clock to find and fix it — guided by AI, scored on five dimensions. The best challenges get featured to the whole community with your name attached.

Timed challengeAI-scored submissionPublic leaderboard
1
2
3
4

Step 1 of 4: Upload Codebase

Upload your codebase

Zip your Go project and upload it. We'll extract it and auto-fill details from the README. Three files make a complete challenge:

Required ZIP structure

your-challenge/
├── README.md          ← auto-fills title & problem statement
├── solution.patch     ← the bug fix as a git diff
├── tests/
│   └── fix_test.go   ← tests that FAIL before fix, PASS after
├── main.go
└── go.mod
README.md — what to writeoptional but recommended

The first H1 heading becomes the challenge title. The first paragraph becomes the description shown to solvers. Keep it short — just enough context to set the scene without giving away the bug.

# Fix the race condition in worker pool

A Go HTTP service that processes jobs with a worker pool.
Under concurrent load, some jobs are silently dropped.
solution.patch — how to generate itrequired to publish

Apply your fix locally, then export the diff with git diff. When you publish, the platform validates this patch makes all your tests pass — so solvers' work is scored against a known-good solution.

# 1. Apply the fix in your local code
# 2. Export the diff
git diff > solution.patch

# 3. Verify it round-trips correctly
git stash                      # undo the fix temporarily
patch -p1 -i solution.patch    # re-apply via the patch file
go test ./tests/...            # all tests should pass ✓
tests/ — writing the test suiterequired to publish

Standard Go _test.go files inside a tests/ package. Tests run against each solver's modified code — failing tests directly lower their correctness score. Tests must FAIL on the original buggy code and PASS after your patch is applied.

// tests/worker_test.go
package tests

import "testing"

func TestNoJobsDropped(t *testing.T) {
    results := runConcurrentJobs(100)
    if len(results) != 100 {
        t.Errorf("dropped %d jobs", 100-len(results))
    }
}