Out of tokens? Split it.

Your model ran dry.
Your project doesn't have to stop.

When your favorite AI hits its limit mid-project, don't wait and don't start over. Split the job into sealed pieces, let a different free model do each piece, then have one more model combine them under the harness rules — the frozen checklist nobody is allowed to break. This page walks it, step by step, on a real example: polishing the game Prompt Runner. You only ever follow a link, press a copy button, and paste a reply back.

✓Freeze the rules1P1 Gameplay2P2 Sound3P3 Level4P4 Boss5Combine6Check it7Ship it

Before you start

You'll need: the current game file (button below), four free model chats + one combiner chat (the links are in each step — no card anywhere), and about 30–45 minutes. Close the tab and come back tomorrow if a model runs dry mid-split — this page keeps your place on this device.

Free tiers have limits — that's the whole reason this page exists. Each part prompt is sized to fit a free chat (under ~2,500 tokens). Free tier at time of writing — checked October 2026. Providers can change free tiers at any time, so every part lists a fallback order: a dead route means “use the next link,” not a dead end.

Privacy, plainly: this page runs entirely on your device. The only thing it fetches is the game file from this same site. Nothing you paste here is sent anywhere by us — the combining happens in whichever model chat you open and paste into.

Step 0 · Freeze what's already good

The game's 23 acceptance checks are the law for every model below — including the combiner. Copy the list and keep it: it's also what you'll grade the merged game against at Step 6.

PROMPT RUNNER — FROZEN ACCEPTANCE CHECKLIST (23 checks) These are the law for every model in this split — including the combiner. Nobody may break a check to make their piece fit. Static checks (1–9) 1. no external script/link/img tags 2. no remote asset URLs 3. ≥3 parallax layers, factors 0.15/0.35/0.6 4. tile grid present (GROUND_SEGS/setTile/solidAt) 5. momentum + roll + springs + loop present 6. boss HP + "vulnerable" window 7. exactly two tracked secrets 8. chiptune synthesized, no audio files 9. touch controls present (tLeft/tRight/tJump/tRoll) Play probes (10–23) 10. canvas renders non-blank 11. input moves player right with momentum 12. jump leaves ground and lands 13. loop-the-loop triggers at speed and completes 14. star pickup increments counter 15. rolling breaks wall — Secret 1 16. hidden spring launches — Secret 2 17. pit fall respawns at checkpoint, run continues 18. WebAudio graph constructs on first interaction 19. mute toggles 20. boss activates at arena trigger 21. boss loses HP only in vulnerable window 22. boss defeatable through real hits 23. win state reachable after boss Invariants the combiner re-counts by hand: exactly 47 stars, exactly 2 secrets, boss HP 6, 9 enemies, 8 checkpoints [2, 41, 80, 97, 129, 153, 180, 196].

Step 1 · P1: Gameplay polish

Movement feel — momentum, jump height, coyote time. The difference between “floaty” and “fun.” The prompt below is sealed: it contains the game's premise, the exact code section this part owns, its slice of the frozen checklist, and a strict output format — the model needs nothing else from you.

First choice: Free with an email sign-up; free session limits reset about every 5 hours — enough for one well-prepared part per session (checked October 2026).
Fallback: Backup, on a different provider. Free; third parties report no sign-up needed (unverified).

1 · Copy the prompt, paste it into the model chat

Send the prompt, wait for the reply. If the model answers with rambling prose instead of the strict format, paste it the nudge line — it usually fixes it in one round.

2 · Paste the model's whole reply back here

Step 2 · P2: Sound design

A richer chiptune — deeper lead and bass, a distinct boss variation, cleaner sound effects. The prompt below is sealed: it contains the game's premise, the exact code section this part owns, its slice of the frozen checklist, and a strict output format — the model needs nothing else from you.

First choice: Free — OpenAI's own FAQ promises “unlimited everyday text chats,” which is exactly what tweak-and-retry sound work burns through (checked October 2026).
Fallback: Backup, on a different provider. Free plan with no card (specific limits unverified).

1 · Copy the prompt, paste it into the model chat

Send the prompt, wait for the reply. If the model answers with rambling prose instead of the strict format, paste it the nudge line — it usually fixes it in one round.

2 · Paste the model's whole reply back here

Step 3 · P3: Level & visual polish

Prettier parallax and sprites, plus one new star route repositioned from existing stars — the total stays exactly 47. The prompt below is sealed: it contains the game's premise, the exact code section this part owns, its slice of the frozen checklist, and a strict output format — the model needs nothing else from you.

First choice: Free with a Google account, and the free plan includes Canvas, so you can preview visual code in place (checked October 2026).
Fallback: Backup — two models answer side-by-side from one paste. Heads-up: LMArena may disclose conversations publicly; fine for this public game file, not for private code.

1 · Copy the prompt, paste it into the model chat

Send the prompt, wait for the reply. If the model answers with rambling prose instead of the strict format, paste it the nudge line — it usually fixes it in one round.

2 · Paste the model's whole reply back here

Step 4 · P4: Boss & juice

A better Unbounded Core fight — one new telegraphed attack, sharper warnings, hit feedback and particles. The prompt below is sealed: it contains the game's premise, the exact code section this part owns, its slice of the frozen checklist, and a strict output format — the model needs nothing else from you.

First choice: Free with an email sign-up; boss logic is deep-reasoning-over-one-section work, the same route as gameplay (checked October 2026).
Fallback: Backup, on a different provider. Free; third parties report no sign-up needed (unverified).

1 · Copy the prompt, paste it into the model chat

Send the prompt, wait for the reply. If the model answers with rambling prose instead of the strict format, paste it the nudge line — it usually fixes it in one round.

2 · Paste the model's whole reply back here

Step 5 · One model combines them — under the rules

The combiner is the only job that sees everything, so it's the one worth spending your best remaining free model on. It applies each part only to its own section, resolves conflicts in a fixed order (frozen checklist → existing code → part output), re-counts the invariants — 47 stars, 2 secrets, boss HP 6 — and must confess anything it rejects in a merge report.

Why DeepSeek first: it's the free chat with a 1M-token context (officially, checked October 2026) — the only free route with big headroom over this pack. DeepSeek chat is free; its exact chat limits aren't published.
Google AI Studio caveat: on its unpaid tier, Google may use what you paste to improve its products, and human reviewers may read it — fine for this public game file, think twice before pasting private code there.
OpenRouter fallback: pick a :free model listing ≥128K context — 50 requests/day, no card (checked October 2026).

# COMBINER PROMPT — Bounded Agent Harness merge of "Prompt Runner" You are the COMBINER for a game that was polished in four independent parts by four different AI models. You work under the Bounded Agent Harness rules: - The frozen acceptance criteria below are the law. When anything conflicts, the winner is decided in this order: **(1) frozen acceptance, (2) the existing code, (3) the part output.** - You never silently drop a part's change: anything you reject is named in the merge report with the reason. - If a part's changelog confesses a broken constraint, treat that part's change to the affected lines as rejected unless you can repair it without touching another part's section. - The merged game stays ONE self-contained HTML file: no external assets, no new dependencies, no URLs to art, fonts, scripts, or audio. Everything drawn and played in code, as before. ## The game in 3 lines "Prompt Runner": Bit, a little agent bot, in a Sonic-style momentum platformer. Run/roll/jump one tile-based level, collect 47 stars, stomp glitch bugs, defeat the boss "Unbounded Core" (HP 6), find exactly 2 secrets, reach the finish. Easy and forgiving: 5 hearts, checkpoints, pit falls respawn at checkpoints. ## Your inputs (pasted after this prompt, in this order) 1. `=== INPUT 1: CURRENT GAME FILE ===` — the complete current `index.html` (~48.5 KB, 829 lines). This is the base. Every line not covered by an approved part change stays byte-identical. 2. `=== INPUT 2: P1 OUTPUT — GAMEPLAY ===` — replacement player-state + `update()` section + 3-line changelog. 3. `=== INPUT 3: P2 OUTPUT — SOUND ===` — replacement `AudioEngine` + `Sfx` objects + 3-line changelog. 4. `=== INPUT 4: P3 OUTPUT — LEVEL & VISUAL ===` — two labelled code blocks (`// REGION 1 — level data`, `// REGION 2 — drawing`) + 3-line changelog. 5. `=== INPUT 5: P4 OUTPUT — BOSS & JUICE ===` — replacement boss object + `updateBoss()` + `burst()` block, optionally a `// BOSS DRAWING BLOCK`, + 3-line changelog. If any input is missing, malformed, or arrives as prose instead of the strict format, STOP and list exactly which input is unusable and why — do not improvise a replacement for it. ## Integration rules 1. **Section custody.** Apply each part ONLY to its own section: - P1 → the `player` object literal and the input/momentum/gravity/jump lines of `update()` (the loop-the-loop block at the top of `update()` keeps the CURRENT code unless P1 left it byte-identical, which it was told to do). - P2 → the `AudioEngine` and `Sfx` object literals only. - P3 → the level-data block (platforms/springs/checkpoints/signs/star placement) and the drawing helpers + background portion of `draw()`. - P4 → the `boss` object literal, `updateBoss()`, `burst()`, and — only if its labelled second block is present — the boss-drawing block inside `draw()`. Any part content that reaches outside its custody is rejected for those lines (report it), even if it looks better. 2. **Frozen regions.** These keep the current code no matter what any part says: `afterMove()` entire; `hurtPlayer()`; `syncHud()`; all DOM markup, ids, and CSS; the input listeners and touch bindings; `moveAndCollide()` and collision helpers; `frame()`; the `window.PromptRunner` probe API; the entire `?autotest=1` self-test script. 3. **Contract names are unrenamable.** All globals/functions keep their names and shapes: `G` (incl. `secrets:{vault,sky}`), `player` (all 16 fields), `boss` (all fields, state names `"dormant"|"hover"|"telegraph"|"attack"|"vulnerable"`), particles `{x,y,vx,vy,life,color}`, `STARS` entries `{x,y,taken,ph}`, tile chars `"X" "=" "-" "B"`, Sfx method names, `AudioEngine.start/unlock/tone/noise`. A part that renames one is repaired back to the contract name if the rename is purely cosmetic; if it changes a shape, that change is rejected. 4. **Re-count the invariants after merging** (do the arithmetic, don't trust changelogs): star placements must total **exactly 47**; secrets must be **exactly 2** (breakable tiles at (85,9)/(85,10) with the vault intact; concealed spring at tile 146 with `hidden: true` and the sky platforms intact); `boss.hp` starts at **6**; parallax factors **0.15 / 0.35 / 0.6** all present; checkpoints still `[2, 41, 80, 97, 129, 153, 180, 196]`. Any invariant broken by a part is restored from the current file, and the restoration is reported. 5. **SPEC CHANGE proposals are not yours to approve.** If a changelog says "SPEC CHANGE PROPOSED" (e.g. P3 proposing a different star count), do NOT apply it. List it in the merge report under "Needs a human decision" and merge everything else. 6. **Order of application:** P3 (data) → P1 (physics) → P4 (boss) → P2 (sound). If two applied parts disagree about a shared *value* on a contract boundary (example: P1's gravity vs P3's platform spacing), acceptance wins, then current code — report the value you kept. 7. **Minimal glue.** You may write at most small connective fixes (a missing comma, a renamed-back reference) needed to make applied parts run together. You may not write new features. Every glue line is listed in the merge report. ## Required output — exactly two parts **Output 1 — THE COMPLETE MERGED FILE.** One code block containing the entire merged `index.html`, start to finish, no elisions, no placeholders. It must be directly saveable and runnable. **Output 2 — MERGE REPORT**, with these sections: - *Applied:* per part, one line per change actually merged (from its changelog, verified against the code). - *Rejected:* per part, every change not merged + the rule that rejected it (custody / contract / acceptance / confession). - *Invariants re-counted:* the five counts from rule 4, with the numbers you actually found. - *Glue:* every connective line you wrote, or "none". - *Needs a human decision:* any SPEC CHANGE proposals, verbatim. - *Acceptance re-score:* the 23 checks below, each scored PASS / FAIL / CANNOT-RUN-IN-CHAT with one line of evidence (code inspection is acceptable evidence for the static ones; be honest about which ones need a browser). ## The frozen acceptance checklist (23 — re-score every one) Static: (1) no external script/link/img tags · (2) no remote asset URLs · (3) ≥3 parallax layers, factors 0.15/0.35/0.6 · (4) tile grid present (`GROUND_SEGS`/`setTile`/`solidAt`) · (5) momentum + roll + springs + loop present · (6) boss HP + `"vulnerable"` window · (7) exactly two tracked secrets · (8) chiptune synthesized, no audio files · (9) touch controls present (`tLeft/tRight/tJump/tRoll`). Play probes: (10) canvas renders non-blank · (11) input moves player right with momentum · (12) jump leaves ground and lands · (13) loop-the-loop triggers at speed and completes · (14) star pickup increments counter · (15) rolling breaks wall — Secret 1 · (16) hidden spring launches — Secret 2 · (17) pit fall respawns at checkpoint, run continues · (18) WebAudio graph constructs on first interaction · (19) mute toggles · (20) boss activates at arena trigger · (21) boss loses HP only in vulnerable window · (22) boss defeatable through real hits · (23) win state reachable after boss. HARNESS RULE: if any constraint above cannot be met, say so in the merge report instead of silently breaking it.

The pack can't be assembled until every part has a reply pasted in above — that's deliberate. A combiner guessing at a missing part is how merges go wrong. Missing: P1 (Step 1), P2 (Step 2), P3 (Step 3), P4 (Step 4).

Size, measured: the assembled pack — combiner prompt + the complete game file + four part outputs — runs about 56,000 characters ≈ 14k tokens (the button tells you the exact count for your pastes). That fits any serious combiner context with room to spare. If a free chat still balks at one long message, paste the combiner prompt + game file first and send Inputs 2–5 as follow-up messages in the same chat.

Step 6 · Put it together & check it

Paste the combiner's whole reply here. It should contain the complete merged game file plus a merge report (what it applied, what it rejected and why, the invariants re-counted, and all 23 checks re-scored). If any check is marked FAIL there, that's your one bounded repair round: send the combiner the failing item as a new message, once.

Then run the checks (condensed from the merge instructions)

  1. Loads clean: Open the merged file — zero console errors, title screen animates.
  2. Self-test: Append ?autotest=1 to the game's address — the original scored 14/14 in-page probes; the title bar reports PASS/FAIL.
  3. Full probe suite: All 23 checks from Step 0 — the baseline to beat is the original's 23/23.
  4. Movement: Hold →: Bit accelerates with momentum and skids on release. Space = variable-height jump, ↓ at speed = roll, slopes speed the roll up.
  5. Stars: Run the opening line: the HUD counter ticks to 5 and the chime plays.
  6. Boss: Past tile 200 the gate closes; bonk the Core only while it dips — HP 6 → 0 in six hits, gate opens, run to the flag to win.
  7. Both secrets: Roll (don't walk) into the cracked wall after the tile-82 sign; find the hidden spring near tile 146 to the sky route.
  8. Mute: M key and the Music button both flip the music, and they agree with each other.
  9. Forgiveness: Fall in the first pit: one heart, respawn at the checkpoint, stars kept. Never a full restart.
  10. Phone pass: 390px wide with touch: buttons appear, no sideways scrolling, game completable by touch.
  11. Human pass: One full playthrough by a person who didn't build it. Probes prove the contract; only a human proves the polish feels better — which was the point.

Want a second opinion that isn't the builder? The review gate.

A builder grading its own homework is how bad merges ship. The /review gate has a different model check the work against the frozen list — copy the review paste, drop it into /review, then add your merged file. Signed in? Your workspace keeps the same trail in its ledger.

Open /review →

Step 7 · Ship it — and keep the old file

When the merged game passes, save it as your new version — and keep the old file. Rollbacks are a feature, not an admission: if the polish turns out worse in your hands than the probes said, the original is one rename away. (That's exactly how this site ships, too.)

What just happened, in the workflow's own terms: you froze the rules → four free models each did one sealed job → one model combined them under the rules → a gate checked the result. The models were interchangeable parts; the harness was the durable thing. Next time a model runs dry on your own project, the same split applies — freeze, split by section, combine under the checklist.