The Suborned
The city carries out your plan without knowing it.
You command a cell of four. You turn ordinary people (a waitress, a guard, a driver) and time their small acts into one plan.
Subvert people
Knowing more about someone makes them cheaper, quieter or more loyal.
Orchestrate the city
Every system opens or closes a window that you can see coming.
Live with it
You'll meet every choice again: people remember, and the city follows the trail back.
Every order shows its full price before you commit: $, time, Trail (evidence) and Alert risk.
A 1950s world that discovered atomic power centuries ago.
Eight paintings set the look before any code.







Cream stone, seafoam bands, chrome, a thin line of brass. They are still the reference for street level: concept art first, then build to match.
The capstone mission was designed first.

"The Handover": take Councillor Vale alive at shift handover outside the Civic Records Office.
Five links, and each one leaves a trace that the city follows back.
Three weeks later it is still the reference every generated mission must match, and it's now playable.
Three weeks, twelve GDD versions.
One designer, seventeen agents, one source of truth.
bun run crewcontracts/No AI at runtime. Content is made at build time, checked, and replays exactly.
bun run verify replays every recorded run offline: no model, no database.
The district is one JSON file.
Roads, plots, gates, levels, tram and sky rail, landmarks: harbour-district.plan.json. The CAD sheet is drawn from it, and the checker fails the build on any broken rule.
From the plan to the street, seeded and deterministic.

plan.json


The generator's first fly-through: from plan view down into the street.
Every tower, roof and lamp is placed by rule from the plan. Nothing here was placed by hand.
The mission's block: painted, planned, built.





The block is written by bun run block from its sources, pinned by sha256; rule C-0 fails the build if its scale ever changes.
Layouts are measured, not eyeballed.



130 people, each a routine, a need, a temperament and ties.
Temperament
Decides the approach that works: Pay, Help, Pressure or trust.
Ties · 123
Introductions travel only along family, workmate and regular ties.
Every field names the rule that reads it; a field nothing reads is rejected. Needs: debt 40 · cash 39 · advancement 23 · papers 13 · care 9 · housing 6.
Drawn for this deck from out/people/harbour-district.people.json; node size = ties held. Hover a node for the person.
Who can introduce you to whom?
bun run people:graph loads the people into SurrealDB as a graph, so the questions the design asks become one query.
- A café serverstart
- Layla, a café serverworkmate
- Inez, the waitressworkmate
- The door guardregular · evening
- Sanjay, a café serverregular · pre-shift
- Costas, an Office guardregular · pre-shift
- Mei, the driverworkmate
- Councillor Valeworkmate

"The guard comes to visit Inez when she calls him, because you bribed or pressured her, and that's what makes him leave his post." · Sky, 15 Oct
A secret the city generated, and the mission casts.
The Handover names roles, not people. Rule M-2 casts each role from the generated city and pins it by id. Inez's need is her debt (Help clears it); her secret is the affair (Pressure threatens to expose it).
This cast made Inez Fearful, so Help works one step worse: two Helps, $80,000, not $40,000. The city set that price, not a script.
Before: five servers on one door point. After: Inez alone, customers come and go.


New rule P-16: no two drawn people on one place at once. More eyes at the café, so the witness rules had more to do.
A deterministic C# engine: the same orders give the same result.

Hit chances are accumulators, not dice: "hits 3 in 4 · down in 4 s" is a promise the engine keeps.
A fact reaches security only through a person.
Staff radio in 5 s · kin and lovers report at once · Loyal report · Mercenaries keep quiet until Alert 2 · the terrified flee · a turned witness says nothing.
The response dial, as data
| S | Name | Dispatch | Alert ≥ 2 sends | Seal |
|---|---|---|---|---|
| 0 | lax | 20 s | 1 unit | 3:00 |
| 1 | routine | 12 s | 1 unit | 2:25 |
| 2 | watchful · Handover | 10 s | 1 unit + 2 robots | 2:25 |
| 3 | guarded | 8 s | 2 units + 2 robots | 2:00 |
| 4 | swarm | 6 s | 2 units + 4 robots | 1:30 |
Standing, per district
Only acts seen or found move it. A public fight moves it once, by opponent. Between missions, word of mouth: each person you helped tells their ties.
Hero turns people slower and dearer but loyal; Menace faster and cheaper, with betrayal.
A mission ships only if the engine proves it's fair.
| MC-0 ✓ | Every script plays as expected and replays to identical checkpoints | 26/26 |
| MC-1 ✓ | At least two quiet routes win | A, B, G |
| MC-2 ✓ | The loud route wins but costs more Trail than every quiet win | 13 T |
| MC-3 ✓ | Every fail condition is reachable | 8/8 |
| MC-4 ✓ | No single contact is essential | ✓ |
| MC-5 ✓ | An informed player finishes ≥ 1:00 before the closing event | 1:42+ |
| MC-6 ✓ | Quiet is not slower than loud | 53.6 s faster |
| MC-7 ✓ | Careless violence is worse: seen, found or reported | 5/5 |
| MC-8 ✓ | Takedown routes are viable, at a real time cost | 3 wins |
| MC-9 ✓ | Turning people stays competitive with takedowns | none dominant |
Check c016, 17 October, on GDD v0.23.
bun run missions:check replay handover c016
Take Councillor Vale alive. Many ways in, each with its price.
Time to get Vale to the getaway car, from check c016. $100,000 purse · Trail follows you to the next mission · loud is never cheaper.
Visitors from a nearby timeline: sharper, no 1950s tailoring.




No long coats or flowing hems: the silhouette comes from shoulders, packs and props, so it can be animated at 40–60 px tall.
Show the rules in the street, not in text.

The same moment: the Enforcer about to take down the guard. Drag to compare.
bun run budget)One-line prices, icons for numbers, a sentence only when a person speaks.
One ring tells you who will see you before you move.







A kit generated in Blender, headless, at build time.








From one person, to networks, to districts.
Try the camera
Camera rotation and a third-person try-out, parked by Sky until the mechanics settle.
More missions
The mission generator fills templates from the city's own people. Each one must pass the checker the Handover passes.
The campaign
Start with the Fixer alone. Turned people pay in cash, arms and tips; the trail you leave brings the fights.
60 fps on the Air
The reference machine is a 15-inch MacBook Air M4: play zoom, people and simulation in, measured warm.

Thank you.
Questions? Everything here replays from the repo: bun run verify