60 seconds. 132 missions. The rules keep changing.
v0.7.0 · ruleset 7 · MIT · zero runtime npm dependencies
▶ Play now · ▶ Watch the 62s trailer · ↓ Download the standalone HTML
HUMAN ERROR is a one-screen microgame rush about reading carefully under pressure while the game keeps changing what “carefully” means. Spot the pattern. Remember the code. Track the swaps. Wait for GO. Sometimes the correct move is doing absolutely nothing.
Who it is for: players who like fast logic/reflex challenges, reviewers judging the shipped build, and developers interested in deterministic browser games and replay-verified scoring.
v0.7.0 launched for Hackyard Yard #3 — One Screen, but the game is a standalone open-source release: the full game, results and mode flow stay inside one view with no routed second page.
The fastest path is the hosted standalone build:
https://smkzz.github.io/humanerror/
The hosted page is byte-for-byte the v0.7.0 standalone artifact. Gameplay works without an account; the optional shared leaderboard service is not attached to the static GitHub Pages deployment.
To run from source:
git clone https://github.com/Smkzz/humanerror.git
cd humanerror
npm ci
npm run build
npm run serveRequirements: Node.js 22+ and npm 11.16.0+; CI uses the repository's pinned npm 11.16.0. Older npm versions are rejected because they do not enforce the install-script policy. The build creates the compiled referee modules that the server requires. The server prints the loopback URL, normally http://127.0.0.1:4173.
For completely offline play, open dist/index.html directly or download the single-file release linked above.
Release proof at a glance: 88/88 Node tests · 132/132 desktop mission sweep · 132/132 360×640 touch sweep · 80/80 timed Adaptive qualification · Level 4 / 1.39× · exact browser/server replay parity · zero runtime npm packages.
- 132 bounded deterministic mission templates across attention, numbers, words, memory and reflex.
- One referee owns truth: timing, grading, lives, streaks and scoring live in the deterministic engine, not the renderer.
- Three modes: a 60-second Adaptive run, fixed seeded Challenges and untimed Practice.
- Replay-verified ranked runs: the optional server recomputes a result from bounded input events instead of trusting a client-submitted score.
- Portable release: the complete offline game is one self-contained HTML file.
- No model in the gameplay loop: no cloud AI, analytics SDK, ad SDK or third-party gameplay service runs during play.
| Mode | Contract |
|---|---|
| Adaptive | 60 seconds of active task time, four lives, local rule-based adaptation and pacing. Eligible unassisted runs can be server-replayed for the shared board. |
| Challenge | Fixed seeded deck with the same mission parameters and limits for the same seed. Unranked and shareable. |
| Practice | Ten graded tasks without answer deadlines or lives. Unranked. |
Challenge links are bound to ruleset 7. Older ruleset links fail closed rather than silently becoming a different challenge.
A mission template is selected at most once per run. Feedback, the input guard and pauses do not consume the 60-second active-play budget. Neutral setup screens and an unfinished final task are not counted as failed answers.
Use click/touch or 1–9 for visible options. Typing missions support the keyboard plus on-screen keys. Backspace edits and Enter submits. Reaction/wait mechanics use Space or Enter for the displayed action. P pauses except while typing. Audio is optional and starts off.
The game auto-pauses on tab hide, focus loss or an extended scheduling interruption. An assisted/paused Adaptive run is not eligible for the shared board.
Detailed proof is deliberately below the play path. Full commands, raw receipts and limitations live in QA and launch readiness.
| Check | v0.7.0 release result |
|---|---|
| Node test suite | 88/88 PASS |
| Generator contract sweep | 132 templates × 1,000 seeds PASS |
| Visible-answer oracle sweep | 50 templates × 1,000 seeds PASS |
| Empty/undefined-choice invariant scan | 264,000 generated instances PASS |
| Exact desktop all-mission browser run | 132/132 settled correctly; 0 repeats; 0 JS errors |
| Exact 360×640 touch run | 132/132 settled correctly; 0 overflow failures; 0 JS errors |
| Timed Adaptive qualification | 60,000 ms active play; 80/80 correct; score 53,452; Level 4; 1.39×; replay accepted; exact score parity |
| Static release audit | PASS |
| Runtime npm dependencies | 0 |
| Release artifact | 103,057 raw / 38,360 gzip bytes |
| Artifact SHA-256 | b3e5934fadb5cd4a72396f309b399b0ca75b5252bcd55a87322e85037dcee1b5 |
The artifact remains below the strict 124 KiB raw / 39 KiB gzip gate. GitHub Pages was separately verified to serve the same 103,057-byte artifact with the same SHA-256.
Python 3.10+ and Playwright are development-only requirements:
python -m pip install -r tests/requirements.txt
python -m playwright install chromium
npm run test:browserBrowser emulation is useful coverage, not a claim of physical-device or universal-browser certification.
seed + mode
│
▼
director ── chooses an unused mission
│
▼
generator ── creates a bounded deterministic round
│
▼
engine/referee ── timing · grading · streak · lives · score · receipts
│
├──────────────► browser renderer / keyboard / touch
│
└─ ranked run events ─► one-use session ─► server replay ─► leaderboard
The browser and server replay the same compiled referee rules. Ranked submissions contain bounded input events, not an authoritative score. The server binds a one-use session to the exact game version/ruleset, validates timing and transcript structure, replays the run and computes the result before considering leaderboard persistence.
The standalone artifact is bundled as a minified IIFE with the pinned Bun build dependency. It contains one inline stylesheet and one inline script, both covered by exact Content Security Policy hashes.
See architecture for trust/timing boundaries and mission catalogue for all 132 templates.
A correct graded answer scores:
(100 + speed bonus) × streak multiplier
The speed bonus is 0–100 from remaining task time. It is zero in Practice and on mechanics where the correct action is simply waiting. The multiplier is ×1 for streaks 1–3, ×2 for 4–6, ×3 for 7–9 and ×4 from 10 onward. A failed graded task resets the streak. Surviving Adaptive adds a one-time 1,000-point bonus while at least one life remains.
Deterministic receipts support replay and tests. They are diagnostic evidence, not signed proof that a human played.
The shared board is designed for a casual public playtest, not prize-money anti-cheat. The important boundaries are:
- same-origin bounded mutation requests and exact version/ruleset checks;
- short-lived one-use run sessions;
- server-side deterministic replay and timing plausibility checks;
- no trust in client-supplied score fields;
- bounded request rates and atomic score persistence;
- strict CSP, no runtime
eval, no third-party runtime scripts/styles and zero runtime npm packages.
This does not prove a human played, stop a modified automated client from producing valid actions, verify identity or provide account recovery.
For hosted shared-board deployment, run the exact qualified source behind a same-origin TLS reverse proxy with persistent DATA_DIR and a reviewed proxy configuration. Operational steps and residual risks are in SECURITY.md and launch readiness.
src/ referee, generators, scheduler, profile and browser client
scripts/ build, audit, replay verifier, sessions, storage and HTTP service
tests/ deterministic, property/invariant, persistence, HTTP and browser tests
dist/ exact standalone release, security headers and manifest
docs/ architecture, mission catalogue, QA, playtest and release notes
qa/ versioned receipts and selected screenshots
.github/ CI and contribution templates
Development tooling is intentionally pinned: TypeScript 5.8.3 and Bun 1.4.0. The package has zero runtime dependencies.
Start with CONTRIBUTING.md. Changes to grading, timing, scoring or mission contracts require deterministic tests. New missions need an independent answer oracle, accessible keyboard/touch input and catalogue documentation.
Useful commands:
npm run typecheck
npm run check
npm run verify:evidence
npm run test:browserSecurity issues should follow SECURITY.md, not a public issue.
v0.7.0 was built and shipped for Hackyard Yard #3 — One Screen.
- Play the submitted build
- Watch the submitted trailer
- View the Hackyard entry
- Demo plan and shot list
- Submission pack
Planning used ChatGPT 6 Pro. Implementation used ChatGPT 6 Luna and ChatGPT 5.6 Sol.
HUMAN ERROR is released under the MIT License.
The release evidence supports the exact artifact and tested environments described above. It is not an independent security certification, anti-bot system, identity system, cognitive assessment, universal browser certification or proof of production-scale operations. Fresh-player comprehension/fun and physical-device behavior still benefit from real human playtesting.


