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
Shown19/ 145
19 of 145 labs · "Performance"ready labs · catalogue order
#LabDifficultyTime
06Focused bugCache StampedeEvery morning at 9AM service slows to a crawl for 90 seconds.8 attempts · 3 solved · 1 discussionsMed.28min15Focused bugCache key missing tenant idMulti-tenant cache key uses just user_id, causing cross-tenant leaks.8 attempts · 3 solved · 0 discussionsHard20min19Focused bugThe log that ate the requestA debug log serializes an entire upload payload.3 attempts · 0 solved · 0 discussionsMed.20min20Focused bugThe Price That Refused to UpdateMerchants change a price. Half the storefront still shows yesterday's number.9 attempts · 4 solved · 0 discussionsEasy12min56Focused bugCache TTL: ms vs secondsIn-memory cache treats milliseconds as seconds on read, so every entry expires on the next call.0 attempts · 0 solved · 0 discussionsEasy12min57Focused bugCache mutation leaks across tenantsCached objects are handed out by reference; one tenant's mutation rewrites what other tenants read.0 attempts · 0 solved · 0 discussionsEasy14min58Focused bugNegative cache poisoningA null result is cached so aggressively that a freshly created record never becomes visible.1 attempts · 0 solved · 0 discussionsMed.18min59Focused bugStale-while-revalidate serves stale foreverThe revalidation branch never calls the fetcher, so cached entries become permanent.0 attempts · 0 solved · 0 discussionsMed.20min60Focused bugLRU evicts the wrong tenantAn LRU cache evicts the most-recently-used tenant instead of the least-recently-used one.0 attempts · 0 solved · 0 discussionsMed.22min61Focused bugTenant prefix skipped on readWrites namespace cache entries by tenant but reads ignore the namespace, so every tenant reads the same entry.0 attempts · 0 solved · 0 discussionsMed.18min62Focused 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 discussionsHard28min63Focused bugTenant id bleeds through async fetchAn async enrichment step uses a hard-coded tenant label, so every tenant receives the same enriched profile.0 attempts · 0 solved · 0 discussionsHard26min64Focused bugMulti-tenant cache key prefix missingA cache key utility drops the tenant id, so two tenants with the same resource id share one cached value.0 attempts · 0 solved · 0 discussionsHard30min65Focused bugCache key delimiter collisionTwo cache lookups that should be distinct reduce to the same string and overwrite each other.0 attempts · 0 solved · 0 discussionsEasy12min111Focused bugCache invalidated before the write commitsUpdate helper primes the cache with the pre-write snapshot, so readers see the old value after every update.2 attempts · 1 solved · 0 discussionsEasy15min112Focused bugMemoization keyed on object identityA memoized helper uses the query object as the Map key, so logically equal queries always miss the cache.5 attempts · 0 solved · 0 discussionsMed.18min113Focused bugTTL refreshed on every readA read-time TTL refresh keeps hot entries alive indefinitely and stale data never evicts.1 attempts · 0 solved · 0 discussionsMed.20min114Focused bugCache stampede without coalescingConcurrent cold-cache callers each kick off their own expensive compute, overwhelming the worker.2 attempts · 0 solved · 0 discussionsHard25min115Focused bugNull bypasses cache validationA short-circuit on falsy role keys returns a hardcoded default and skips the cache entirely.0 attempts · 0 solved · 0 discussionsHard22min
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.