Build log · Software & apps

Password Game Solver

Software & appsdone3 versionsAutomationPythonPlaywrightReverse Engineering

reflection not written yet · every fact below is generated from this project’s own spec and files

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.

V1

DOM scraping + OCR.

V2

Reads live app state: no OCR, no screenshot parsing.

V3

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; pull currCaptcha, currPlace, currChessPuzzle, currYoutubeDuration, ruleReached straight 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 driver
  • playwright-web-automation — browser bridge, injecting the state snapshot, and driving the editor
  • systematic-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).