What it is
Beats all 36 rules of neal.fun's Password Game by reading the game's own runtime state, then composing a password that satisfies every rule at once.
Version history
Straight from the project’s own card data — what each version added.
DOM scraping + OCR.
Reads live app state: no OCR, no screenshot parsing.
Constraint composer: 36/36 rules, 211-char password.
Files on the site
What broke, and what I’d change
Not written yet. This is the part only I can write — what actually went wrong, and what I’d do differently. It lives in builds/reflections/password-game-solver.md (see _TEMPLATE.md); as soon as that file has words in it, this section fills in on the next build.
Everything else on this page — the spec, the version history, the file counts — is generated from the project’s own build notes and files, so nothing here is guesswork.
Build spec
The project’s own build notes, rendered. Open the raw .md ↗
Show the spec
Password Game Solver
Prompt:
Build a solver for neal.fun's Password Game that beats all 36 rules. Don't screen-scrape or OCR — read the game's own runtime state instead (it's a Vue app; pullcurrCaptcha,currPlace,currChessPuzzle,currYoutubeDuration,ruleReachedstraight out of the live component), then compose a password that satisfies every active rule at once and write it back into the editor. It has to survive the YouTube rule (random target duration — find a real video matching within a second whose ID also passes the roman-numeral, digit and letter-cap rules), the shared 25-point digit budget, and Paul eating a bug every 15 seconds. Verify against the game's own ruleset, not a screenshot.
Skills used:
password-game-solver— rule semantics extracted from the game bundle, the composer's constraint model, and the state-driven driverplaywright-web-automation— browser bridge, injecting the state snapshot, and driving the editorsystematic-debugging— tracking down the three stall modes (empty state read, mislabelled digit overflow, sacrifice-letter collision) instead of guessing
Outcome: all 36 rules cleared, 211-character password, verified against the game's own ruleset (prime self-encoding length, digit sum 25, element sum 200, roman product 35).