Buglyst OSS Labs

Practice on real open-source bugs before your first real PR.

Practice on real OSS regressions, reverted into safe debugging labs. Learn to navigate large repos, reproduce failing tests, trace root causes, make minimal patches, and write PR-style explanations.

OSS Labs are training exercises derived from public open-source bug-fix history. Completing a lab is not an upstream contribution or merged PR. Buglyst is not affiliated with these projects.
folder_openfastify/fastify @ parent snapshot
Reverted regression
Repo snapshotlib/ server.js request.jstest/ custom-http-server.test.js
Failing test$ npx borp test/custom-http-server.test.js✗ closeIdleConnections called twiceexpected: 1 · received: 2
ValidationVisible checksHidden validation
differencePR-style report
10 labs mined from real history
5Playable OSS labReviewed and ready.
5OSS drafts in packaging
2Fastify lab live
10OSS labs tracked

OSS Labs across ecosystems

Buglyst is expanding beyond npm packages into Python services, Java backend libraries, and C++ systems code.

JavaScript / TypeScript

5 playable

6 repos mined · npm

Python

1 draft

7 repos mined · pip

Java

1 draft

7 repos mined · gradle, maven

C++

1 draft

6 repos mined · cmake

5Playable OSS labs
5Drafts in packaging
4Languages covered
28Repos mined
1120Candidates inspected

Why this matters

OSS Labs exist because the gap between “I can code” and “I can land a PR in someone else’s repo” is mostly debugging.

account_tree

Huge repos are intimidating

Opening a 380-file framework for the first time is paralysing. Labs give you a bounded entry point into a real one.

filter_alt_off

“Good first issues” aren’t good debugging practice

Most beginner issues are docs or typos. They never teach you to reproduce and trace a real regression.

rule

Maintainers expect clean repros

Real PRs need a reproduction, a root cause, and a minimal patch. Labs drill exactly that loop.

fitness_center

Buglyst gives you the reps

Build debugging stamina on reverted public regressions before you open your first real PR.

How OSS Labs work

Real public history, reverted into a guided debugging loop.

  1. STEP 01

    Real public fix commit selected

    A public bug-fix commit from a public repo is chosen from mining history.

  2. STEP 02

    Repo reverted to buggy parent

    We check out the parent snapshot so the bug is live again.

  3. STEP 03

    Visible regression test added

    A failing test captures one clear symptom of the regression.

  4. STEP 04

    You inspect the real repo

    Navigate the actual source tree — no toy sandbox.

  5. STEP 05

    You patch the bug

    Make a minimal change that makes the visible test pass.

  6. STEP 06

    Hidden validation checks edge cases

    Hidden checks confirm you fixed the cause, not just the symptom.

  7. STEP 07

    You get a verification report

    A resume-safe, PR-style summary of what you actually did.

Current OSS Labs

Honest status labels — drafts are not playable until a human reviews and marks them ready.

JavaScript / TypeScriptnpmEasyPlayable
arrow_outward

Axios keeps a stale content-type for React Native FormData

axios/axios · API & Request Flow

Fix
7b3369a
Parent
b0771a3
Files
463
LOC
67,806
License
MIT
Playable · readyOpen Lab →
JavaScript / TypeScriptnpmMediumPlayable
arrow_outward

Symbol keys dropped when merging axios request config

axios/axios · API & Request Flow

Fix
f70731b
Parent
315ec44
Files
464
LOC
65,972
License
MIT
Playable · readyOpen Lab →
JavaScript / TypeScriptnpmEasyPlayable
arrow_outward

Fastify trusts forwarded host and protocol without a socket guard

fastify/fastify · API & Request Flow

Fix
21b4c3c
Parent
9bbf609
Files
385
LOC
79,438
License
MIT
Playable · readyOpen Lab →
JavaScript / TypeScriptnpmEasyPlayable
arrow_outward

Fastify native server close lifecycle regression

fastify/fastify · API & Request Flow

Fix
c2ba18c
Parent
d33f017
Files
385
LOC
79,226
License
MIT
Playable · readyOpen Lab →
JavaScript / TypeScriptnpmEasyPlayable
arrow_outward

Knex omits RETURNING for an empty-row SQLite insert

knex/knex · Database

Fix
f44f75a
Parent
8198fa6
Files
591
LOC
112,949
License
MIT
Playable · readyOpen Lab →
JavamavenMediumNeeds packaging
arrow_outward

ignoringCollectionOrder false positives with duplicate elements

assertj/assertj · API & Request Flow

Fix
4097e94
Parent
e5e027a
Repo scale
5,242 upstream
Snapshot
1,845 files
License
Apache-2.0

Repo scale: 5,242 upstream files · Packaged snapshot: 1,845 files

Packaging: needs_packaging: java sandbox execution not configured in local pipeline

Needs packagingView details →
JavaScript / TypeScriptnpmMediumNeeds packaging
arrow_outward

validate invalid route logLevel at registration (#6523)

fastify/fastify · Secrets & Auth

Fix
2ae3e1d
Parent
d76dbcd
Files
385
LOC
79,304
License
MIT

Packaging: visible failed after gold

Needs packagingView details →
C++cmakeMediumNeeds packaging
arrow_outward

update() parent pointers not updated after recursive merge with JSON_...

nlohmann/json · Date/Time

Fix
584e6b1
Parent
a69a42a
Repo scale
1,205 upstream
Snapshot
331 files
License
MIT

Repo scale: 1,205 upstream files · Packaged snapshot: 331 files

Packaging: Needs hidden test authoring: upstream commit did not provide a second split test.

Needs packagingView details →
JavaScript / TypeScriptnpmMediumNeeds packaging
arrow_outward

Don't change relative location header on manual redirect (#1105)

node-fetch/node-fetch · API & Request Flow

Fix
5304f3f
Parent
f5d3cf5
Files
53
LOC
7,365
License
MIT

Packaging: visible failed after gold

Needs packagingView details →
PythonpipMediumNeeds packaging
arrow_outward

deprecate Accept-Charset header

pallets/werkzeug · API & Request Flow

Fix
97dec52
Parent
68e1b7b
Files
291
LOC
27,879
License
BSD-3-Clause

Packaging: Secret scan redacted: docs/serving.rst, src/werkzeug/datastructures/auth.py, src/werkzeug/debug/__init__.py, src/werkzeug/urls.py, tests/test_http.py

Needs packagingView details →

OSS skill map

Every lab trains the same contributor-grade muscles.

travel_explore

Repo navigation

Move confidently through an unfamiliar large codebase.

science

Failing test reproduction

Run the regression and read the failure honestly.

manage_search

Root cause tracing

Follow the failure into the runtime source.

content_cut

Minimal patch reasoning

Fix the cause with the smallest correct change.

description

PR-style explanation

Explain the fix like a contributor would in a PR.

shield

Hidden regression safety

Prove edge cases still hold after your patch.

Resume-safe credential

Your verification page says exactly what you completed: an OSS-backed debugging lab. It does not claim an upstream contribution. You can link it on a resume without overstating what happened.

How to phrase it honestly →
Example credentialAccepted

Fastify Regression Lab — Accepted

Based on public Fastify bug-fix history

Visible checks passedHidden validation passed

Not an upstream contribution

Follow OSS Labs releases

The first Fastify OSS-backed lab is playable. Get notified as more mined drafts clear packaging, or keep practicing on synthetic debugging incidents now.

Start with synthetic labs →