Skip to the main content
MothyFamily emblem CADENCEgame design · mothyfamily

Design document · revision 1 · 2 November 2026

CADENCE — a game about positions, not people

A text-first, persistent, player-governed strategy game, designed to compete with Torn on the thing Torn does best — the daily habit — and on the thing nobody in the genre has shipped: the same engine running in five different worlds, chosen by the players, not by us.

00Where this document stands

This is a design document, not a product. Nothing here is running. The pill words are the ones the family uses, and they mean exactly what they say.

Being built running, with a piece missing

Planned designed, not built

Answered the design has an answer written for it

Undecided we want your opinion

This document Planned

The mechanics, the numbers, and the build plan for one game engine. Every number on these pages is a design target, written down so it can be argued with, tested, and changed. None of it has been playtested, and the pages say so.

Design onlyNo code writtenNumbers are targets

The read on Torn Planned

Everything in section 01 is a fact read from Torn's own pages, its official wiki, and the public API surface its community built. Section 02 is judgement on what those facts mean. Judgement is labelled as judgement.

Sources: torn.com + wiki.torn.comRead 2 November 2026

The prototype Undecided

The first test is a single text page with 40 players and one season. It needs a writer, a rules document, and a room to run in. Building it is a decision, not a task I schedule for us. Say the word and the paper season becomes a server.

Not startedScope agreed first

The honest admissions

We have not built any of this. Every number on these pages is a design target, not measured play — the first draft of a balance sheet. A game design document that reads like a finished product is a lie a player finds out about in the first week.

The genre is crowded and the players are hard to move. Torn has thousands of active players, a decade of social capital, a public API, and a community that wrote its own tools. Our advantages are structural, not content — and a structural advantage is the slowest kind to prove. Assume the first season has 40 of our friends in it, not 4,000 strangers.

One rule is a bet, not a measurement. "Queue your actions, then walk away" (opening 7, and the loop below) removes the return-visit hook Torn is built on. That is the point of the design, and it is also the biggest risk in it. The kill tests give the number that decides it.

01What Torn is, and why it works

Torn is a text-based online RPG set in a crime city, played in a browser, with thousands of active players. It has no animation, no client to install, and no story. Its own front page lists what you do in it: jobs, items from chocolate bars to rifles, over 50 crimes with hundreds of outcomes, factions, stocks, marriage, car racing, the casino, poker, the bank, education, properties, travel, hunting, and writing for its newspaper. The list is the product.

SystemHow Torn runs it (read from its own pages)Why it works
Bars and timers Energy, Nerve, Life, Happy, Chain, plus drug / medical / booster cooldowns, all with timers. Energy fills to maximum every five hours; paid status adds energy every ten or fifteen minutes, up to 150 / 100. The bar refills on a clock, so the player comes back four times a day for three minutes each. The habit is the product. Nothing to install, nothing to load.
Visible progress Four battle stats (strength, defence, speed, dexterity), jobs that pay daily stat gains, income, and job points, and a daily net-worth figure. You can watch yourself get stronger in numbers you own. A number that rises every day is worth more than a story.
Player-run social layer Jobs, companies owned by players, factions, a stock market of 35 stocks with market cap and shares, the bazaar, the item market, auctions, a newspaper, marriage. The content is generated by the players, so the game never runs out of content, and the cost of content is zero.
A public API Its API exposes six families — user, property, faction, company, market, torn — with hundreds of counters (attacks won, bounties collected, bazaar sales, shares owned). A community built dashboards, wikis, and calculators on top of it. Third-party tools do the UI work Torn does not have to. The players build the interface, and stay attached to it.
Permanence The world does not reset. A twelve-year account is a twelve-year account. Long-term investment. Competitors that reset every round destroy exactly this, and Torn wins on it.
The thing to steal

Torn is not a game you play. It is a habit you keep. Every mechanic in it exists to give you a reason to open a page for three minutes, four times a day, for years. Any competitor that treats that as the design target has a chance. Any competitor that treats "content" as the target has none.

02Where Torn is beatable

Seven openings. Each one is a fact from section 01 plus a judgement, and each one has a design answer elsewhere in this document. This is the argument for building anything at all.

1 · Money buys time Answered

Paid status grants extra energy on a faster timer than free players get. The scarce resource in the game is action budget, and the shop sells it. A player who pays progresses faster in the same clock time.

Our rule: no real money touches a bar, a stat, a yield, or a timer. Money buys a nameplate, a skin, a house decoration, and analytics. If a rule cannot be written in that sentence, it does not ship.

§07 the money rules

2 · People are the resource Answered

The combat loop is player against player, and the reward scales with being stronger than the other person. New accounts are, in the arithmetic of the game, material for old ones.

Our rule: you never attack a person. You attack a position — a depot, a route, a contract, a dock. Losing costs you that ground, not your character, and every attack gives the defender one tick of warning.

§06 the conflict rules

3 · Onboarding is a wiki Answered

Torn's own help page closes with the line that the list is endless and there is plenty of help in its wiki. The structured teaching in the game is a three-question job interview, and a starter job fires you after 400 days of inactivity.

Our rule: the first seven days are scripted, and the player finishes them with a wage, a room, and one thing they own. A mentor is an office a player holds, with real duties, not a badge.

§11 the opening week

4 · The world is a spreadsheet Answered

There are 50 crimes and 35 stocks, and they do not move. The city is a fixed list of things to do; nothing in it changes because the players did something.

Our rule: the map is a state, not a menu. 64 districts, each with a yield, a defence, and an owner; a season adds ground; a district you take is yours until someone takes it back.

§05 the map

5 · The numbers are secret Answered

The reward formulas, the random draws, and the balance are invisible. Players reverse-engineer the game in wikis, which is the community's best work — and a permanent argument with the people who run it.

Our rule: every formula is published on the rules page, every action is recorded as a row, and a season can be replayed from the log. If the game's arithmetic is a rumour, the players trust the rumour and not the game.

§08 the ledger

6 · One skin, one tone Answered

Torn is a crime city. So are its competitors. The rival games read for this document — Street Crime, Gangster Nation, The Fifth Family, Velkran, Vor Wars, Bootleggers, BadFellas, Mob Wars, Mobsters United, Made Man Mafia — are all mafia, gangs, or Prohibition. Several run in rounds that wipe after a few weeks, which throws away the permanence Torn wins on.

Our answer: the engine is theme-agnostic. Bars, jobs, positions, contracts, courts, seasons — those are nouns in a data file, not in the code. Five settings run on one engine, and the players pick the next one. This is the structural opening: nobody in the genre has a theme layer, because they all built their city first.

§10 the theme layer5 theme pages

7 · You have to be there Undecided

Torn's bars are spent by tapping a button at the moment they are full. The habit is a bell you answer. That is why the timers are shaped the way they are.

Our answer: queue your day. Actions are placed in a queue and resolve on the next server tick. You plan in one sitting, and the ticks keep running while you are not there. It keeps the daily habit (the season, the board, the daily report) and removes the obligation to be present at a fixed clock time — which is what makes a game a chore, and what makes a player leave.

§04 the cadence engine§12 the kill test

What we are not claiming

Torn's internal balance (the exact stat gain per action, the exact crime payouts, the exact random draws) is not published by Torn, so this document does not state it. Where a number below looks like a fact about Torn, it is a fact about our game, sized to be comparable. The facts about Torn in section 01 are readings from its own pages, and they are the ones with a source.

03The design thesis

One sentence, then the rules that follow from it.

CADENCE in one sentence

A persistent world of positions, run by players, in a language of published numbers, that you plan once a day and do not have to watch.

Position, not person

The unit of conflict is ground. You can lose a district, a contract, a route. You cannot be robbed of your character, your bars, or your money by someone stronger.

Plan once, run all day

Nine decisions a day, queued in one sitting, resolved on ticks. A player with a job and a family plays the same season as a player with twelve free hours.

Published arithmetic

Every formula on one page. Every action a row in a log. Every season replayable. Trust is the cheap thing nobody in the genre has.

Rules the players hold

Taxes, fines, contracts, wages, and district law are written by players in offices they were elected to, and enforced by the engine, not by an admin's mood.

Theme is data

The engine knows Bar, Job, Position, Contract, Season. A theme file gives them names, art, yields, and a signature mechanic. Five themes, one codebase.

Nothing is wiped

Seasons add ground, offices, and rules. Characters, holdings, and history survive. A reset is a firing of every player's work, and it is the genre's habit.

04The core loop, in full

The cadence engine, with the numbers a prototype would start from.

The tick

Tick
15 minutes, server-wide. 96 ticks a day. Every action in the queue resolves on the next tick, in one order, for every player.
Queue
6 actions deep, up to 12 at a high office. Queue at breakfast and the day resolves without opening the page.
Visit
The designed session is 3 minutes, once a day; a second look at the board is optional. The season board and the district map are the second hook, not the bars.
Report
One page per day: what resolved, what changed on the map, what your district gained, what your contract paid.

The four bars (the theme layer renames them; the shape is identical)

Vigour — physical work: labour, hauling, drillingcap 100 · refill 5 / tick
Nerve — risky operations: runs, salvage, infiltrationcap 50 · refill 1.25 / tick
Focus — craft, study, repair, designcap 30 · refill 0.625 / tick
Standing — social credit: contracts, office, teaching, commandcap 100 · decays 1 / tick toward your floor

The four stats

StatWhat it governsGain ruleDesign target
Bodylabour yield, haul tonnage, defence of a position 1 point per Vigour-consuming action, capped at 10 points a day 10 / day early, 4 / day late
Craftbuild speed, repair quality, item tier 1 point per Focus-consuming action, cap 6 a day6 / day
Nervesuccess chance on risky operations 1 point per Nerve-consuming action, cap 4 a day4 / day
Insightcontract terms, price sense, teaching, detection 1 point per Standing-consuming action, cap 3 a day3 / day

Gains slow on purpose. A soft cap at level 40, and the rule that late gains go into offices and positions rather than bigger numbers, is what stops the game becoming an arms race. Late game is who runs what, not who has the largest number. This is the answer to the infinite stat climb the genre is built on.

The day, as a player experiences it

Morning · The report

Three minutes. Overnight ticks resolved: two contracts paid, one district attack repelled, a haul landed. One thing changed on the map.

Morning · The queue

Place six actions: two labour, one craft, one run, one teach, one upkeep. Pick the district the run targets. Leave.

All day · The ticks resolve

Ticks resolve your queue. Your district is defended by the garrison you set aside this morning, not by you being online.

Evening · The board (optional)

Season board, district map, the week's contracts. The social layer: who took what, what the court decided, what the guild is bidding.

Why six decisions, not six hours

A game that takes three minutes a day gets a working adult. A game that takes three minutes a day four times a day gets a person with a phone and no plans. The incumbent is built for the second person, and it wins that person. CADENCE is built for the first, and that is a smaller audience — which is the honest cost of this design, and the reason the kill tests exist.

The opening week

DayWhat the player is taughtWhat they end the day with
1the four bars, the tick, the queuea starter job and a first wage
2upkeep, rent, the daily reporta room, and a bill they paid
3one risky act, with its published chancea success or a failure they can read in the log
4the market: one order, one pricea sale at a price they chose
5a contract: who pays what, on which eventa signed contract with a clause the engine executes
6the district map, and a garrisona share of a district's yield
7an office, and an electiona vote, and one thing they own

Day 7 is the test of the design. If a new player finishes week one owning something, they stay. If they finish it owing something, they leave — and the opening week is the first thing to rebalance, not the endgame.

05The world: positions, ownership, the map

The map is a state the engine holds, not a list of links. Every district has a yield, a defence, an owner, and upkeep. Ownership is the endgame, and it is finite.

LayerObjectRuleNumbers for the prototype
Tilesa district Yield scales with the district's tier and the work put into it. Every district has upkeep every tick; an unowned district decays. 64 districts · tiers 1–6 · yield 20–600 / day · upkeep 5–120 / day
Claimsa person, a guild, or the city A claim is won by a capture window, not by attacking a person. A window opens when a district's defence falls below its garrison requirement, and lasts 4 ticks. 4 ticks · one attacker per window · defender gets 1 tick warning
Property ladderroom → stall → depot → facility → district block Each rung is a job site, a storage volume, and an upkeep bill. Nothing is bought with real money, and nothing is permanent — a block reverts if upkeep is missed twice. 5 rungs · 50 rooms · 12 stalls · 6 depots · 3 facilities · 1 block per district
Contractsplayer-written, engine-enforced A contract is plain text plus a machine-readable clause: who pays what, on which event, with what penalty. The engine executes the clause; the court hears the words. wages, haulage, defence, share, lease
Officeselected, appointed, bought with Standing Offices are the late game: quartermaster, magistrate, harbormaster, drill boss. They set rates, hear disputes, and carry duties that the engine checks. 24 offices · 6 elected by district · 18 appointed by guild
The capture window, in one formula
window opens when defence(district) < garrison_required(district, tier) window length = 4 ticks capture chance = min(0.95, 0.15 + 0.01 × attacker_commitment − 0.02 × defender_garrison) commitment = Vigour + Body invested in the window, published result = one row in the log, both sides can read it

A committed attacker beats a careless owner. A strong guild cannot take a district nobody bothered to garrison, which is the fairness rule the map needs: you lose what you stopped caring about, not what someone wanted.

06Conflict, and the fairness rules

The genre's core loop is a strong person taking things from a weak person. CADENCE replaces the object of conflict, and puts the fairness rules in the engine, where they cannot be argued with.

RuleWhat it forbidsWhy
No person is a targetattacking a player, robbing a player, hospitalising a player A new player must not be material for an old one. This is the single rule that makes the genre's onboarding problem disappear.
Positions are targets— A depot, a route, a dock, a contract. Losing costs ground, not a character.
One tick warningsurprise attacks The defender sees the queue before it resolves. Defence is a decision, not a reflex.
Matched tiersa tier-6 guild taking a tier-1 district Ground is taken from people who can defend it. A season's map stays contested.
No chaina run of attacks on one target Chains are the genre's griefing engine. A streak counts against ground, and one target per tick is the ceiling.
Consequence, not punishmentadmin bans, stat wipes, jail as inactivity A bad act costs Standing and a fine a court can hear. A person never loses a week of the game because a rule was enforced on them, not with them.
The design risk in this section

Removing player-against-player combat removes the emotional core of the genre. People come to Torn to beat someone. Position war is colder: it is a map, not a moment. This is the second big bet in the document, and the kill tests check it in the first season — with the honest possibility that the answer is "positions are not enough; keep a person-against-person layer inside a tier-matched arena, with no loot".

07The economy, and the money rules

One currency, one rule set, and a printed balance sheet. Every source has a paired sink. The economy is watched by three numbers, and the numbers are public.

Sources and sinks

SourcePaired sinkDesign target per day (mid-tier player)
labour wages (district payroll)room rent, meals, upkeep+1,200 / −700
contract payouts (haulage, defence, share)fines, court fees, garrison upkeep+400 / −220
craft sales (the market, player orders)material purchase, tool wear+300 / −260
district yield sharedistrict tax, office fee+180 / −150
speculation (buying a share cheap)the price history, which is public+90 / −40

The three money rules

Rule 1 · No real money in the game

Real currency buys cosmetics, a nameplate, house decoration, and an analytics panel. It buys no bar, no timer, no yield, no stat, and no district. This is the rule that makes the game fairer than the incumbent, and it is not negotiable.

Rule 2 · Every sink is written

A source without a paired sink is inflation with a delay. The balance sheet above is the promise: any new source added to the game must name its sink in the same change.

Rule 3 · Three public numbers

The money supply, the median player's net worth, and the top-10 share of money. Printed on the season page every week. If the top-10 share climbs, the game is turning into an oligopoly, and the season's next rule is tax.

Season 1 target: top-10 share under 30 %

The market: orders, not a shop

A seller posts an ask, a buyer posts a bid, the engine matches. The price history is a public table. There are no fixed shop prices, and no admin price. The incumbent's stock market is a fixed list of 35 stocks; our market is a real order book on 12 commodities, and the price is the players' own.

order = { commodity, qty, price, side, expires_at_tick } match = best price first, ties by earliest posted order price(t) = the last matched order history = every match, every tick, published

08The ledger, the API, and the tools layer

The incumbent's third-party ecosystem is the strongest thing in the genre, and it was built by players. CADENCE ships its API on day one, in the same shape, and publishes the rules the API exposes.

The action log is the game Planned

Every action, every tick, every capture, every payment, every court decision is one row in an append-only log. A season is replayable from the log: same inputs, same order, same result. That gives the game three things the genre does not have: an honest audit, a replay, and a way to test a balance change before shipping it.

Append-onlyReplayableDeterministic draws

API first, six families Planned

A public read API on six families, in the shape the community built on: player, district, guild, market, season, world. Read is public. Write is one authenticated endpoint per action type, rate-limited. The community builds the interface we cannot afford to build.

Read publicRate limitedNo scripted play

The published formulas Planned

One page, every formula: yield, capture chance, wage, upkeep, decay, stat gain. When a formula changes, the page says what changed, when, and what the log replay showed. A player who can compute the game trusts the game.

VersionedChange log

The server, in one honest block

Small, on purpose. One process, one database, static pages, one proxy in front. The prototype runs in the same shape as every family service we already run: a container, its own health endpoint, a private network, and a monitor that notices when it stops. Nine requests a second at 1,000 players, which is a laptop, not a rack.

PartJobPrototype sizing
enginethe tick loop, the queue resolver, the rules1 CPU, 256 MB
databasestate, plus the append-only log2 GB per season, indexed on player + tick
apiread, plus authenticated write, rate limited10 requests per minute per account
webstatic pages, no framework, the same house sheet this site usesserved as files
watcha health endpoint on the container, a check every minute, an alert to a channelthe shape every family door uses

Anti-abuse, in the engine, not in the rules page: one account per person, actions queued server-side, no client-side trust, no auto-click, rate limits, and deterministic draws keyed to the tick, so a season can be replayed and a winner audited. The API cannot be used to play for you: writes are bound to a signed-in session, and a write that arrives from a script with no session is refused.

The data model, as a sketch

TableRowsWhat the engine writes there
playerone per accountbars, stats, Standing, office, home
district64 rows, more each seasontier, yield, defence, garrison, owner, upkeep
guildone per guildtreasury, ranks, holdings, charter
positionthe property ladderrung, owner, storage, upkeep, state
queueup to 12 rows per playeraction, cost, target, the tick it resolves on
contractplayer-writtenparties, clause, penalty, the trigger event
orderthe market bookcommodity, qty, price, side, expiry tick
office24 rowsholder, rate authority, jurisdiction, duty
logevery tick, every action, every resultthe append-only record the season is replayed from

Nine tables. The log table is the one the design rests on: it is what makes the game auditable, replayable, and balanceable, and it is the API's read surface. If the log is write-only and the state is derived, the engine can be rebuilt from its own history — which is the property that lets us change the rules mid-season and prove the change was fair.

09The five themes

One engine, five settings. Each theme page gives the theme pack — the renames, the yields, the signature mechanic, the first season's arc, and what breaks it. The engine is identical: bars, positions, contracts, courts, seasons. What changes is what the nouns mean.

There is a comparison page

themes/compare.html puts the five themes side by side — the renames, the signature mechanic, the build cost, the audience, and what breaks each one. Which theme runs first is a decision we make together, not one the engine makes for us.

10The theme layer, as a spec

The structural opening. If the engine's nouns are data, a theme is a file, and five themes cost one engine. This is what the code has to be to make that true.

Engine nounWhat the engine knowsWhat the theme file supplies
Bara number, a cap, a refill rate, a consumption cost the name, the art, what it is spent on, and the recovery rule (granary, air, food, power)
Joba wage, a stat gain, a requirement, a shift length the job list, the sector names, the daily points, and the interview questions
Positiontier, yield, defence, garrison, upkeep, owner the map, the names, the terrain, and what a position is (a granary, a dock, a relay, a siding)
Acta cost, a duration, a risk table, a reward table the act list and its names (a haul, a dive, a run, a drill, a salvage)
Contractparties, terms, penalty, execution trigger the contract shapes the theme allows (sharecrop, charter, berth, claim, line contract)
Officeelection, rate authority, jurisdiction, duty the offices, their names, and what they set
Season12 weeks, objectives, new ground, new rules the season's arc, the objectives, and the signature mechanic for that theme
The rule that keeps the theme layer honest

A theme file may rename, re-skin, re-yield, and add one signature mechanic. It may not add a bar, a combat object, a currency, or a new verb. One signature mechanic per theme, and no new verbs, is what keeps five themes on one engine — and what keeps the balance comparable across them. A theme that needs a new verb is a new game, and we should say that plainly before writing it.

theme = { name, palette, # the words and the colours bars: [{ name, cap, refill, spent_on, recovery }], # 4, always 4 jobs: [{ name, wage, gain, requires }], # 6 for the prototype acts: [{ name, cost, ticks, risk_table, reward_table }], # 12 positions: [{ name, tier, yield, garrison }], # the map contracts: [ shapes the theme allows ], offices: [{ name, sets, jurisdiction }], signature: one mechanic, season_arc: 12 beats }

11The build plan

Small, ordered, and honest about scope. The plan assumes one developer and one writer. It is not a plan that beats the incumbent in content; it is a plan that proves the engine.

P0 · The rules document

Everything on this site, tightened: the formulas, the tables, the fairness rules. Written before code, because code is the expensive place to change your mind.

P1 · The paper season

Play the engine by hand: 12 players, one sheet, 40 ticks a day, one season. No code. This is the cheapest possible test of the queue design, and it is the test that tells us whether "plan once, run all day" is fun. Two weeks.

P2 · The engine, one theme

The tick loop, the queue resolver, the ledger, the read API, a single-page client. 40 players, one theme, the full season. Nine weeks.

P3 · The social layer

Offices, courts, contracts, guilds, the market. This is the endgame, and it is the second half of the build. Eight weeks.

P4 · Season 2, theme 2

The theme layer proves itself: run season 2 in a different theme, from a file, on the same engine. If that costs weeks, the theme layer is real. If it costs months, it is a slogan.

P5 · The tools layer

Public API, published formulas, the community dashboards. The cheapest growth in the genre, and the thing the incumbent's players already do.

What the prototype ships with

In scope for P2Out of scope for P2
4 bars, 4 stats, 6 districts, 6 jobs, 12 acts, 24 officesart, sound, animation
the tick loop, the queue, the ledger, the daily reporta mobile app
contracts, courts, the market order booka real-money shop of any kind
the public read API, the published formulas pageplayer-against-player combat
one season, one theme, 40 accountsopen sign-up, moderation queue, a public website
The cost, in plain words

One developer for a season, one writer for the rules, and the running cost of one small container. This is a hobby-sized build with a professional shape. It is not a product launch, and we should not talk about it like one. The cheapest thing in the plan is the paper season, and it is the one that will teach us the most.

12The kill tests

Three tests, each with a number, each with a decision attached. If a test fails, the design changes. That is the whole point of writing the numbers down.

Test 1 · The queue is fun Undecided

In the paper season, players queue actions and do not watch them resolve. If fewer than 7 of 12 players queue more than 3 actions in a day, the queue is not the product. The incumbent's bell is the product, and we will have removed it.

Decision if it fails: keep the queue, restore a return-visit hook — a live window where a position is contested once a day, at a fixed tick.

Test 2 · Positions carry emotion Undecided

In season 1, at least 60 % of players must take or lose a position, and the board must be discussed on the season page. If nobody cares about a district, the fairness rules have taken the feeling out of the game.

Decision if it fails: add a tier-matched arena, no loot, no hospital — a person-against-person layer that costs Standing, not stuff.

Test 3 · The economy does not run away Undecided

By week 6: the median player's net worth must be higher than week 1, and the top-10 share must stay under 30 %. If the median falls, the sinks are eating the working players. If the top-10 share climbs, the season's next rule is tax.

Decision if it fails: rebalance the payroll and the upkeep tables, in the open, against the log.

The metrics the season is judged on

MetricTarget, season 1What it means if it misses
day-1 → day-7 retention≥ 60 % of the first 40the opening week is not teaching anything
median session length3–6 minutes a dayplayers are watching bars, so the queue failed
players with a positive wage≥ 80 %the payroll is sized for the top tier only
positions changed hands≥ 30 % of districtsthe map is furniture
contracts written by players≥ 20 in season 1the social layer is decorative
a third-party tool on the API≥ 1 by season 2the tools layer did not get built, and growth stalls
reports of unfair play0a fairness rule is being worked around, and the engine must carry it

13What we decide next

Three decisions, in order. None of them need a server, and one of them needs twelve people and a sheet.

Pick the first theme Undecided

Ancient City is the best test of the commons mechanic and the most legible for a family playtest. Neon Grid is the best test of the genre's emotion. The comparison page is the argument; your choice is the decision.

Run the paper season Undecided

Twelve players, two weeks, one sheet. It kills the two big bets in this document for nothing, before a line of code is written. The roster is twelve of us.

Sign off the rules page Undecided

The formulas, the yields, the fairness rules, and the money rules. Once the rules page is signed, code is the cheap place to change a number. Before it is signed, code is the expensive place.