Practice catalogue updated Tue, Sep 08, 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 · Caching & Performance

Null bypasses cache validation

A short-circuit on falsy role keys returns a hardcoded default and skips the cache entirely.

Hard22 minJavaScript#track#caching-performance#cache
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
Shown4/ 145
4 of 145 labs · source: ossready labs · catalogue order
#LabDifficultyTime
139Open sourceFocused bugHTTP method casing mishandled for non-standard verbsA Request constructor accepts a method option. The library normalizes the six standard HTTP methods (DELETE, GET, HEAD, OPTIONS, POST, PUT) to uppercase regardless of input casing, while preserving every other method string exactly as supplied. Currently, the casing rule applies too broadly, altering method names that should pass through untouched.9 attempts · 0 solved · 0 discussionsEasy20min140Open sourceFocused bugRepeated trailing slashes in base URLWhen a base URL like 'https://api.github.com///' is joined with a path like '/users', the resulting URL contains an extra slash between the host and the path instead of a single separator.2 attempts · 0 solved · 0 discussionsEasy20min141Open sourceFocused bugZero-value entries-read argument omitted from XGROUP tokensA caller passes the ENTRIESREAD option set to 0 to XGROUP CREATE or XGROUP SETID. The argument builder should emit the ENTRIESREAD keyword and a '0' token. Instead, when the option value is exactly 0, the trailing ENTRIESREAD and '0' tokens are missing from the produced array.1 attempts · 0 solved · 0 discussionsMed.30min142Open sourceFocused bugApp.render rejects null and undefined options valuesA caller invokes `app.render(viewName, options, callback)` and expects the callback to deliver the rendered template string even when `options` is `null` or `undefined`. The callback does not deliver the expected rendered output for those cases, while rendering with a normal options object continues to succeed.2 attempts · 0 solved · 0 discussionsEasy10min
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.