Per-Hop Works
Players sort, mark, meter, queue and schedule packet crates on a 3D factory floor, then watch a deterministic trace show why each crate was forwarded, delayed or dropped. Twelve levels build from the DS octet to RFC 2697/2698 metering, strict priority, deficit round robin and AF drop precedence.

The builder
- Name
- John Capobianco
- From
- Toronto, Canada
- Org
- Itential
- First spec project?
- No
- Began at
- NAF AC6
- Links
How it was built
- Model
- gpt-6-astra+ one planning research helper (model ID not recorded separately)
- Harness
- Codex
- Spec method
- GitHub Spec Kit 0.7.1.dev0
- Spec artifacts
- constitution, spec, clarify, plan, tasks, analysis, checklists
- Tasks
- 69 in 5 loops
- Built
- November 4, 2026 · 1h58m33s
Build environment
- MCP servers
- RFC MCP (@mjpitz/mcp-rfc 0.2504.4, plus a local HTML-anchor compatibility parser)
- Blender MCP (mcp-for-blender 2.2.7, Blender addon 1.8, Blender 5.2.1 LTS)
- Sources & RAG
- Ten Tier-1 RFCs fetched through RFC MCP and saved locally: 2474, 2475, 2597, 2598, 2697, 2698, 3168, 3246, 3260, 3290, 4594
- Status/update RFCs 5865 and 8622 (links supplied by the owner)
- 48-entry fact ledger tied to 13 saved live RFC MCP calls, with SHA-256 evidence
- Skills
- Spec Kit skills via the Codex integration: constitution, specify, clarify, plan, tasks, analyze, checklist, implement
- Ralph-style bounded loops, run directly by Codex because the Ralph plugin targets Claude Code stop hooks
- Other tools
- Three.js r180 (vendored, pinned)
- uv 0.10.12 / uvx
- Node v25.3.0 test runner
- Python 3.14.6 launcher
- Chrome browser automation
- axe accessibility checks
- AI assets
- 17 procedural 3D models: Blender MCP from saved Python scripts
- 10 illustrations: ChatGPT built-in image tool
Runtime: how to play
- Type
- static-web · HTML, CSS, JavaScript ES modules, Three.js (vendored), Python 3.11+ launcher
- Start
- python3 start.py
- Then open
- http://localhost:8000
- Install needed
- No
- Internet needed
- No
- API key needed
- No
- AI at runtime
- No
- Tested on
- Chrome 156
- Saves
- browser localStorage
- Accessibility
- Keyboard playthroughs of all twelve levels in both renderers; ten states checked with axe (0 violations); reduced-motion setting respected; automatic SVG schematic fallback without WebGL2.
Verification
- Tests
- 78 passing · node --test tests/
- Facts from
- RFC 4594, RFC 2697, RFC 2698, RFC 8622, RFC 5865
- Known limits
- One-hop deterministic teaching model, not a vendor ASIC
- No TCP feedback, ECN marking or admission control
- Follows the historical 2006 RFC 4594 profile; RFC 8622 LE is noted but out of scope
- License
- Apache-2.0
- Tokens
- 31,129,855 in · 241,999 outHypothetical API-price comparison only (Standard US$48.16); the actual bill is not available. See research/BUILD_LEDGER.md.
Who it is for.
Per-Hop Works turns DiffServ into a factory puzzle. Packets are crates, a sorter reads the DSCP label, meters decide whether a crate stays in profile, and queues and schedulers decide who waits. It is aimed at engineers who have seen "QoS" on a slide and never watched one packet make its choices.
THE BUILD STORYHow it was made.
The owner supplied a detailed brief with a constitution, specification and plan. Codex used Spec Kit to keep one specification, record a clarification question, analyze it for inconsistencies and break the work into 69 tasks in five loops, each ending in an exit check. The first loop built the engine and fact ledger before any graphics. Later loops added the SVG editor, the 3D factory, the advanced levels and the presentation mode. Owner feedback changed the build twice: the image pipeline switched to the built-in ChatGPT tool, and a gentler welcome screen and guided first edit were added after the owner found the topic difficult. Full records are in `research/`.
ADVICEFor the next builder.
- Write the engine and the grader first; make the 3D and 2D views display the same computed result.
- Record every networking fact against an RFC before it reaches the UI.
- Add a first-edit tutorial early: the topic being hard is a design problem, not a player problem.
Built a game of your own?
Fill in the ARCADE template with your build agent and send me your GitHub URL.
Add your game →