▶ Gunslash Arena — wall-run, double jump, dash, slash, shoot. Eight bots that fight each other too. It starts the moment the page opens.
A third-person arena built from scratch in three.js, no engine, no install. The mansion, the textures, the effects and every sound are generated in code; the fighters and their animations are Kay Lousberg's CC0 KayKit Adventurers. Source. Keyboard and mouse.
Not a drawing. A real solid of 24 blocks that never intersect, every step up, and the walk really ends 11.3 treads away from where it began — along the view axis, so it lands exactly on its own start. The impossibility belongs to the viewer. That is what a production-only bug is. One 85 KB SVG, pure SMIL, no JavaScript, no video — every pose, the painter's order and the seam are computed and asserted by one Python file.
The knight from the arena, same CC0 rig, takes a two-handed slice at a BUG built from 53 glowing blocks. The blocks are rigid bodies — the blast, the tumbling and every bounce are Blender's physics, run at half speed — and then the debris gathers itself into FIX (42 blocks, the same blast played backwards) before the tape rewinds. Rendered with Cycles on the same machine as the header, in three passes sequenced by a script. A 1 MB WebP, so it plays at full speed on anything — scripts/render_smash.py · assemble_smash.py.
The knight against the PRODUCTION BUG: a glowing core under 430 armour plates, six legs, mandibles. It rears and slams the floor where the knight stood; the knight jumps clear, runs in and lands a three-hit combo — slice, chop, spin — the blade trailing a ribbon of light, every hit throwing sparks that are rigid bodies themselves. The hit frames are not guessed: the script tracks the blade tip and takes, in each swing, the frame it reaches furthest into the boss. On the critical third hit all 430 plates let go at once, in slow motion, and the core goes out. Modelled, animated and rendered by one Blender script on the same machine as the header; the HUD is drawn on top by a second. A 1.9 MB WebP, full speed on anything — scripts/render_boss.py · assemble_boss.py.
I hunt the bugs that survive code review and only detonate in production — the ones a second replica exposes, the ones a policy engine quietly hides, the ones that spin forever without ever throwing. Then I prove them.
+ Read the codebase until the failure mode is obvious
+ Write the test that FAILS on main
+ Fix it in the smallest diff the maintainers would have written themselves
+ Watch that same test PASS
- No padding. No drive-by nitpicks. No "looks good to me" reviews.Rendered in Blender with Cycles, like the header. Every motion completes a whole number of cycles per loop, so it never seams.
| Project | Status | The bug |
|---|---|---|
| CopilotKit/OpenBot AI coworker platform |
#2 of 25 · top outside contributor |
A snapshot cache living in process memory meant element refs silently stopped resolving the moment a second replica existed — moved it into Postgres. A credential filter that blocked api-key and let x-api-key straight through. 1e999 is valid JSON, so a scroll delta arrived as Infinity, was erased by the transport, and the browser scrolled its own default distance while answering 200. A key pasted with a line break reported as an agent that could not be reached — one that was never dialled. Take the wheel, type a password, press Enter: nothing happened, and nothing said so. Quit with the app installed anywhere but the default path and five containers stayed up. |
| edwardkim/rhwp Rust document engine |
#4 of 58 · 960+ commits |
Rendering fidelity against ground-truth documents, the CLI & agent surface, a privately reported path escape in font embedding, and a long campaign of static-analysis panic & DoS fixes. |
| openai/codex-security OpenAI's security scanner for coding agents |
#10 of 32 contributors |
A diff scan of a commit touching only .cjs, .cts or .mts files reviewed nothing and reported no skips — those extensions were missing from the inventory's allowlist. When Git's own listing failed, the scanner treated it as "no such files" and still exited 0, so a repository with a broken index scanned a silently shortened file list. import --csv refused an escaping location path; --json accepted it, and --dry-run called it valid. A guard that owned plugins was bypassed by moving the key one table deeper. |
| n8n-io/n8n Workflow automation, 204k ★ |
The same expression gave two different answers and neither raised an error: {{ $json.url.extractUrlPath() }} on a URL with a non-ASCII path previewed as /wiki/K%C3%A4se in the editor and executed as /wiki/Käse. The editor has no isolate, so it uses the platform's new URL(); the server's default engine uses a hand-rolled parser that never learned dot-segment removal, percent-encoding, backslash separators or %2e. The regression test is an oracle — 38 URLs asserted against new URL() itself, so the expectations cannot drift from the API they replace. |
|
| microsoft/markitdown Document → Markdown, 182k ★ |
#10 of 123 contributors |
A file whose encoding could not be sniffed was converted to the literal string None. A byte order mark made the notebook parser fail, the error was swallowed, and the .ipynb came back as its own JSON source with no error at all. A .docx written by anything but Word lost every equation, silently — one optional child element, one KeyError, one blanket except. Blank-line normalisation ran inside fenced code blocks, so the code in the Markdown was not the code in the source. |
| opencv/opencv Computer vision, 82k ★ |
Any JPEG 2000 narrower or shorter than 32 pixels silently failed to write. setupEncoderParameters() never set numresolution, so OpenJPEG kept its default of 6 and its own validator rejected every tile below 25 — thumbnails, tiles, icons, sprite cells. imwrite returned false and printed nothing. |
|
| uber-go/zap Uber's structured logger for Go, 25k ★ |
A Config missing level created the log file and leaked its descriptor — Build returns an error and no closer, so a service that retries it runs out of descriptors over a typo. A multi-sink WriteSyncer reported a full write when one sink wrote nothing: a closed or full file returns (0, err), the normal short-write signal, and n came back from whichever sink was listed later — so io.Copy accounts for bytes that never landed. And WithGroup(""), which slog defines as returning the receiver, nested every later attribute under an empty key. |
|
| Netflix/metaflow ML pipelines at Netflix |
to_pod() turned None into the string "None", so a plain @resources(cpu=2, memory=8192) was recorded as "gpu": "None" — truthy — and anything reading the run's graph back concludes a GPU was requested. When a local metadata write failed, the path you cannot write to was replaced by UnboundLocalError: cannot access local variable 'f'. And a @trigger returning the wrong type raised TypeError: unhashable type: 'list' because the message that would have explained it could not be built. |
|
| huggingface/lerobot Hugging Face's robot-learning stack |
Fine-tune from a checkpoint with a YAML config and every list-valued field beside policy.path is dropped without a word — crop_shape: [76, 76] runs at the checkpoint's (84, 84) while the scalar next to it applies. Everything beside reward_model.path is discarded the same way, and the policy branch not doing it is what makes the asymmetry invisible. Turn streaming on and your depth maps change unit: depth_output_unit is validated, then never passed to the streaming dataset. Plus two test guards that had never actually guarded anything. |
|
| zalando/skipper Zalando's HTTP router and proxy |
modResponseHeader deleted cookies. Rewriting the cookie domain of a backend that sets two cookies delivered one — the filter read through the single-value accessor and wrote a single value back. dropRequestHeaderRegexp silently did nothing unless the header name in the route was already canonical, and where it half-worked it left an empty string where the value had been. eskip also serialized large numbers in exponent notation, which its own parser will not read back. |
|
| roboflow/supervision Roboflow's computer-vision toolkit |
sv.tint_image tinted the image you passed in, not just the one it returned — so the standard before/after hstack came out tinted on both halves — and only for NumPy input, because a Pillow argument was shielded by a conversion, making one call alias differently by input type. A LineZone's triggering anchors came from a generator, so it stopped counting crossings after the first frame. And a single non-finite keypoint crashed the annotators instead of being skipped. |
|
| leookun/cursor-byok Local Cursor backend |
#2 of 26 · top outside contributor |
A tool-call id reused across rounds wedged the run forever, with no timeout on that path. Result truncation that spun at 100% CPU, then underflowed a usize. One unreadable proxy row that bricked every request. Empty tool arguments that killed the entire run with EOF while parsing a value. Also: the repo's first pull-request CI, so main stops drifting red. |
| crmne/fastpotify Native Spotify client in Rust |
#4 of 27 contributors |
A skin colour with a multi-byte character panicked the parser, and release builds abort on panic, so the app just closed. On Windows the locale is empty, so every Japanese, Korean and Traditional-Chinese user got three mismatched fallback fonts — the Han region now comes from the Windows display language, and full-width punctuation folds onto the skin font's own cells instead of a fallback's. A byte order mark, the thing Notepad writes, silently threw away every colour in a skin. |
| lightningpixel/modly Image to 3D desktop app |
Headless runs wrote their results into an unindexed folder the app could never see. The "free the GPU" step ran only on the rare max-iterations exit — dead code on the path that mattered. A tool that reported a failed model unload as success. | |
| pacifio/atlas Source control for agents |
A CI matrix that had quietly skipped one crate while its clippy denies turned every push red. A midnight-boundary fixture pinned to UTC that failed in every other timezone. In review: a PATH patch that split on :, so every agent server on Windows inherited a corrupted PATH, and a dependency that cannot compile under MSVC at all. |
|
| sonorahq/sonora Native music client, Rust + GPUI |
The local library scanner stored no "date added" at all, so the column sat empty and sorting by it did nothing — now filled from the file's modification time. The toolchain file left out clippy, so the lint command the contributing guide asks for failed on every fresh checkout. | |
| xevrion/breakscale Distributed-systems failure simulator |
Every knob a shared link can carry, measured against the range the inspector itself declares — six of them accepted values the UI never allows. The instance count landed first: Math.max(1, NaN) is still NaN, so the simulator tried to allocate a billion-slot array and died on its first snapshot. In review: the fleet counts the data components read, a broker's partition count, the transcoder's rendition ladder, a region switch, an autoscaler. |
|
| shy3130/tick-stock-panel A-share quant workbench |
#2 of 27 · 30 commits |
A forced-exit signal evaporated under pandas copy-on-write — chained assignment, dropped without a warning. Nine straight sessions where high equals low make 0/0, which is NaN, not null, so the guard missed it and KDJ never came back for that symbol. The previous trading day was looked up in calendar days, so across the Spring Festival the limit-up ladder came up empty. An index change already in percent was multiplied by 100 again, and the AI report said the market rose 123%. A placeholder limit price of 0 marked every stock limit-up. A manual refresh on a weekend divided by one elapsed minute and inflated volume ratios 240×, firing surge alerts across the board. |
| akitaonrails/ai-memory Long-term memory for agent CLIs |
A packaging test that could never pass on Windows — found by running the suite where CI does not. | |
| cactus-compute/needle 14 MB on-device tool-calling model |
The engine moved its cache into a versioned folder and the test harness kept looking at the old path, so every engine test skipped silently even with the engine installed. The playground reset the wrong engine, so "clear conversation" kept the previous turns. Extraction dropped the system facts the docs say it needs to resolve "yesterday". | |
| ZSeven-W/openpencil AI-native vector design tool |
Five Windows fixes for the agent layer: executables probed without their .exe/.cmd extensions, environment allowlists that miss natively-cased Windows variables, restored blobs addressed with the wrong path separator. |
|
| dmtrKovalenko/fff Terminal file finder, Rust |
One return where a continue belonged, inside a parallel chunk closure: the first binary file in a 256-file chunk removed every file behind it from the content index, and those files never matched a plain search again. String::truncate counts bytes, so shortening a path with any non-ASCII directory name panicked. A git status constant of 0 made "is it clean?" vacuously true, so a conflicted file reported clean. On Windows the first colon of C:\…\file.rs:12 is the drive separator, and the line number was dropped. |
|
| every-app/open-seo Open-source SEO audit suite |
Backlink history parsed date-only strings as UTC midnight and then rendered them in the reader's own timezone, so every reader west of UTC saw each link first seen a day early — and on the 1st, the month axis a whole month early. The crawler asks for XHTML in its own Accept header and then gated on text/html, so an XHTML site yielded no links and the crawl never left the start URL. robots.txt was consulted with no user-agent, so a group naming this crawler by name was dead text in both directions. rel was compared case-sensitively, so rel="Canonical" was dropped — and a page with no canonical is treated as duplicate-eligible, so it came back flagged as duplicate. |
|
| NVIDIA/SkillSpector Security scanner for agent skills |
A Windows path with an 8.3 short name in it failed the handle-path safety check, so on any account with a space in its name, %TEMP% is short-form and every URL scan broke by default. Then five contract tests that had never actually run: failure was injected into a primitive only the POSIX branch calls, symlink and FIFO cases died in setup rather than skipping, and fixtures written with the platform's newline were asserted against LF. Windows failures 23 → 9. |
Also in review: huggingface/skills (a cost estimator that read 7B out of Qwen2.5-72B because it matched the shortest size string first, and a dataset inspector that reported a row count the endpoint it asked never returns) · labring/FastGPT (a whitespace regex that ate ]] out of ordinary prose, an HTML table whose header row lost its columns on the way to Markdown, and a select-all that cleared the pages you were not looking at).
|
A deterministic document runtime for agents. DOCX, ODT, Markdown, HTML,
PDF/A — plus Korean HWP, HWPX and HML. One integer layout engine, so the
same fonts give the same PDF/A bytes every time. Agents call
|
Ask patent questions in plain language. Get answers with the measurement shown, not asserted. No API key, no install — stdlib only. Its agent sibling: patent-scout-agent. |
|
A local-first browser workbench for Korean HWPX and HWP documents: open, inspect, repair, edit and convert, with no Hancom install. Live demo. |
A live treemap of exactly what your AI coding agent is doing to your disk. One file, no dependencies, read-only. |
|
A Ring household that checks in on itself — it knocks with a chime before it alarms the family, and any sign of life counts as an answer. Demo · Devpost. |
Cats, dogs and pigs in a real-time .io arena, live on Google Play and in the browser. Bots keep every room full, so it is always playable. |
|
Ask out loud which public funding you can actually apply for. A self-hosted MCP server over grants.gov that refuses to guess. |
After the agent says it is done — prove the work actually happened. Fails closed. |
|
Try a financial product before you sign it: the contract split into clauses, risk flags, and early-exit, fee and rate scenarios in your own numbers. A 2026 Financial AI Challenge entry. |
Payout dates, net income and a 30-day balance forecast for people paid by platforms. Runs entirely in the browser, nothing leaves it. |
Also on the shelf: jangteo-story (three photos and one sentence from a market stall, turned into a 30-second story and a QR code on the stall) · balju-radar (a weekly lead report on public tenders) · github-trending-daily (GitHub Trending, snapshotted daily by Playwright on Actions) · hackathon prototypes protocol-sift-sentinel, zipcode-cloud-relay and shortsflow-ops-agent.
Every tower is one real day from my contribution calendar, rendered in Blender with Cycles. Click it to fly through the live WebGL version — drag to orbit, hover a tower for the day.
A maintainer closed one of my pull requests with: "Closing this as already landed, but you found a real bug and got there independently."
The fix had shipped inside someone else's PR — after I left a review pointing at the exact failure mode.
That is the job. Not the badge on the pull request — the bug being gone.
The reviews I leave are the ones I would stake my name on. Silence otherwise.
The loops here are rendered in Blender (bpy + Cycles) from scripts in this repo; the staircase is a Python script's arithmetic that your browser draws live; the arena is the real game, captured frame by frame in headless Chromium; the graphs are redrawn by GitHub Actions from live data. No JavaScript runs here — the WebGL version lives next door.









