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 · "Concurrency"ready labs · catalogue order
#LabDifficultyTime
28Focused bugThe Event That Fired TwiceWebhook side effects run twice after every reconnect.1 attempts · 0 solved · 0 discussionsMed.15min34Focused bugThe Lock That Never Let GoAfter one failing job, every later attempt waits forever on the same lock.1 attempts · 0 solved · 0 discussionsMed.15min36Focused bugDedupe window too shortWebhook dedupe cache drops entries long before providers stop retrying, so duplicates get processed twice.3 attempts · 0 solved · 0 discussionsEasy14min38Focused bugEvent id mutated by middlewareThe dedupe fingerprint includes middleware-added fields, so the same webhook event is treated as a brand new event on every retry.2 attempts · 1 solved · 0 discussionsEasy14min43Focused bugAsync dedupe raceTwo concurrent retries of the same webhook event both pass the dedupe check and both run the side effect because the set is mutated after an await.0 attempts · 0 solved · 0 discussionsHard26min45Focused bugDedupe stuck on failureThe dedupe marker is written before the side effect runs and never rolled back on failure, so a transient failure permanently suppresses every retry of the same event.1 attempts · 0 solved · 0 discussionsHard24min70Focused bugLock Around the Wrong AxisReservations for distinct slots owned by the same caller serialize unnecessarily.0 attempts · 0 solved · 0 discussionsMed.18min74Focused bugThe Crossed WiresTwo concurrent moves between the same accounts deadlock because the lock order is inverted.0 attempts · 0 solved · 0 discussionsHard28min116Focused bugAwait Missing in Fire-and-ForgetBatch runner swallows async failures because the per-item call is not awaited.5 attempts · 3 solved · 0 discussionsEasy12min117Focused bugforEach With an Async CallbackArray.prototype.forEach does not await async callbacks, so the batch reports success while per-item work is still running.4 attempts · 1 solved · 0 discussionsEasy12min118Focused bugLoop Mutates the Source ArrayprocessJobs splices skipped jobs out of the input array while iterating, so the iterator drifts past subsequent entries.4 attempts · 1 solved · 0 discussionsMed.18min119Focused bugPermit Released Twice on SuccesswithLock releases the permit in both the happy path and finally, so the semaphore silently over-credits.3 attempts · 0 solved · 0 discussionsMed.18min120Focused bugRejection Escapes Several Call Hopsprepare() drops the await on its inner load() call, so the rejection escapes past try/catch and runJob reports success.2 attempts · 1 solved · 0 discussionsHard25min136Focused bugDuplicate webhook processingEach request registers another event listener, so later webhooks are processed multiple times.1 attempts · 1 solved · 0 discussionsMed.20min144Codebase incidentThe job that two workers both completedA queue retry races with another worker and applies the same side effect twice.2 attempts · 1 solved · 0 discussionsHard35min
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.