Practice catalogue updated Fri, Sep 25, 2026

Debug the signal.
Ship the fix.

Production-shaped debugging labs across APIs, config, concurrency, and infrastructure. Reproduce the failure, follow the evidence, and prove the smallest safe change.

Ready labs145playable now
Quick starts100under 20 min
Avg. time19minper lab
OSS labs4public history
01Reproducemake the failure visible
02Tracefollow the evidence
03Patchchange the smallest thing
04Verifyprove it holds
Featured labBuglyst · CI/CD & Pipelines

The Failure That Disappeared In The Aggregate

A failed continuable step is recorded but the stage aggregate still reports ok:true.

Hard26 minJavaScript#track#ci-cd-pipelines#continue-on-error
all labs · ready to play

Choose a failure mode.

Focused bugs are targeted exercises; codebase incidents are deeper, production-shaped investigations with architecture, logs, and multiple layers. Search by symptom, then filter by lab type, source, status, or difficulty.

press / to search
Shown15/ 145
15 of 145 labs · "Database"ready labs · catalogue order
#LabDifficultyTime
07Focused bugThe N+1 That Wasn'tDB load explodes, but the query count looks normal.6 attempts · 2 solved · 1 discussionsMed.26min16Focused bugThe stale confirmationA successful update is followed by an old value.4 attempts · 1 solved · 0 discussionsMed.18min27Focused bugThe Query That Loaded the WorldOrders list endpoint returns every tenant's rows and times out under load.0 attempts · 0 solved · 0 discussionsMed.15min29Focused bugThe Config That Swallowed ProdProduction boots with the dev database URL and debug flags.9 attempts · 3 solved · 0 discussionsMed.15min62Focused bugCache invalidation skipped on writeWrites update the database but the cache is never told, so reads keep returning the old value.0 attempts · 0 solved · 0 discussionsHard28min68Focused bugThe Wallet That Let It SlideTwo concurrent transfers from the same account both succeed and the balance goes negative.2 attempts · 0 solved · 0 discussionsEasy14min69Focused bugTwo For One EmailConcurrent registrations for the same email both succeed and create duplicate accounts.0 attempts · 0 solved · 0 discussionsMed.18min72Focused bugThe Phantom ReadA read inside a transaction does not observe the same transaction's pending write.0 attempts · 0 solved · 0 discussionsMed.18min106Focused bugInner join drops comments from soft-deleted authorsA LEFT JOIN needs an INNER JOIN — or vice versa — and rows silently disappear from the listing.1 attempts · 0 solved · 0 discussionsEasy15min107Focused bugCount that missed the where clauseA dashboard count helper ignores its filter and reports the wrong total.4 attempts · 1 solved · 0 discussionsEasy12min108Focused bugN+1 that silently drops rowsA per-row fetch helper filters on a property that does not exist, so every caller sees an empty result.2 attempts · 1 solved · 0 discussionsMed.20min109Focused bugPagination skips rows on timestamp tiesCursor-based pagination drops every row whose updated_at equals the boundary timestamp on the previous page.5 attempts · 0 solved · 0 discussionsMed.22min110Focused bugPseudo-unique constraint leaks duplicate accountsAn index assumed unique is queried by the wrong column, so duplicates slip through signup.0 attempts · 0 solved · 0 discussionsHard28min134Codebase incidentThe pool that never gives connections backA read API works locally, then queues and returns 5xx under sustained traffic as the database pool drains.3 attempts · 0 solved · 0 discussionsHard35min143Focused bugIdempotency key ignoredThe payment endpoint validates an idempotency key but drops it before the database call.3 attempts · 1 solved · 0 discussionsMed.20min
discussion · public Practice

What are developers debugging?

Questions, dead ends, and useful investigation clues from real public Practice threads.

latest threads
Loading discussion threads…
real activity · public practice

What developers are doing.

Recent public activity from developers who chose to share their Practice work.

Loading recent public activity…
keep building the loop

More ways to practice.

Move from a focused drill to open-source history or company-style patterns when you want a different kind of debugging pressure.