Price AI Coding Lanes With Rollback Hours, Not Token Stickers A platform lead proposes a routing framework that prices AI coding lanes by fully loaded rollback hours rather than token stickers or seat licenses, using the equation LaneCost = I + R*H + C + G plus a hard kill switch. In a labeled example with a $180 rollback-hour cost, self-host wins at $355 per week versus $491 for paid and $670 for free, though the author notes the result flips when R or H changes. The guide urges teams to route individual workstreams rather than make team-wide license calls. A platform lead told a room the AI coding bill was zero. Then someone opened the revert log. Fourteen reverts in eleven working days. That is not a free path. That is an unpriced one. I keep seeing the same inversion. Finance scores seats and token stickers. Incident review scores hours you cannot get back. Which unit should actually assign the work? This is a routing guide, not a vendor sermon. I will price three lanes with one equation, fill a labeled example, and show which variable flips the call. The scorecard is a conversation tool. It is not objective truth. Teams still ask, "Is the model free?" That question is incomplete. Free of invoice is not free of review, revert, or context setup. A token sticker also lies in the other direction. A paid seat can look expensive while it quietly deletes two rollback hours a week. Self-host can look virtuous while it burns a platform engineer on GPU babysitting that never shows up on the AI budget line. So I stopped asking which tool is cheaper. I ask which workstream belongs on which lane. Do not make a team-wide license call. Route tickets. A changelog draft and an authz middleware change should not share a lane just because they share a repo. Why would they? Write these on the top of the sheet before anyone argues about brands. | Symbol | Meaning | Unit | |---|---|---| | R | Fully loaded cost of one rollback hour author + reviewer + wait | currency / hour | | H | Extra rollback hours this workstream is expected to create per week on that lane | hours / week | | I | Invoice for that lane, allocated to this workstream | currency / week | | C | Amortized context and policy setup rules, allowlists, eval fixtures | currency / week | | G | Governance drag legal, security, procurement that actually fires | currency / week | | K | Hard kill switch. If true, cost math does not get a vote | boolean | Weekly lane cost: LaneCost = I + R H + C + G If K is true, you do not pick the cheapest number. You leave the lane. Secrets, production-adjacent writes without an owner, and unauditable training-data questions are K events in most orgs I advise. Your legal team may add more. They should write them down. I score each workstream against all three lanes. Lowest LaneCost wins unless a kill switch fires. Copy this YAML and fill it in the staff meeting, not after the vendor demo. proposal: conversation tool, not a benchmark workstream: billing-api-tests owner: platform-lead expires on: 2026-10-14 r rollback hour: 180 labeled assumption, fully loaded lanes: free: I: 0 H: 3.5 C: 40 G: 0 K: false paid: I: 220 H: 1.2 C: 25 G: 30 K: false self host: I: 90 allocated idle capacity, not cash if already owned H: 1.0 C: 70 G: 15 K: false exit: freeze free if: "H free 2.0 for 2 consecutive weeks" rescore after tickets: 20 Then run the arithmetic so the argument has a denominator. python unlabeled brands on purpose. plug in your numbers. from dataclasses import dataclass @dataclass class Lane: name: str invoice: float extra rollback h: float setup: float governance: float kill: bool R = 180.0 labeled assumption: $/rollback-hour lanes = Lane "free", 0, 3.5, 40, 0, False , Lane "paid", 220, 1.2, 25, 30, False , Lane "self host", 90, 1.0, 70, 15, False , for lane in lanes: cost = lane.invoice + R lane.extra rollback h + lane.setup + lane.governance status = "BLOCKED" if lane.kill else f"{cost:.0f}" print f"{lane.name:10} LaneCost={status}" Expected print for the labeled example: free LaneCost=670 paid LaneCost=491 self host LaneCost=355 Self-host wins on this sheet . Change R or H and it may not. That is the point. Take an eight-person platform squad. Three workstreams. I am not citing a named company. These are working numbers so you can disagree with a digit instead of a vibe. Assumptions I want challenged: R = $180 . Reviewer time is in the number. Calendar time waiting on a broken deploy is not, unless you add it. H free = 0.3 , I free = 0 , K = false . Free lane cost ≈ $54 + setup . Paid cannot win unless setup on free is chaotic. Keep it free. Put a human on the merge. H free = 3.5 , H paid = 1.2 , I paid = $220 / week allocated. From the script above, paid beats free 491 vs 670 . Self-host beats both I self host to the real weekly carry and re-run. K = true on any path you cannot log, restrict, or turn off. Cost math is commentary. Self-host or a paid tenant with a written data path. Not a shared free box. Notice what I did not do. I did not average the three workstreams into one "AI ROI." Averages hide the kill switch. Hold everything else still and move one lever. | Lever | Direction | What flips | |---|---|---| | R falls from 180 to 50 | rollback is cheap | billing tests fall back to free 0 + 50 3.5 + 40 = 215 vs paid 220 + 50 1.2 + 55 = 335 | | H free falls from 3.5 to 1.0 | reviewers actually catch the mess | free wins on billing tests even at R = 180 | | I paid jumps because you allocated the whole invoice to one squad | paid looks toxic | you are doing allocation theater; split I by tickets, not by pride | | Idle GPUs already exist | I self host near zero | self-host wins more often, until on-call hours leak into C | | Legal says prompts leave the tenant | K = true | free lane dies regardless of LaneCost | If no lever can reverse you, you are not running a model. You are defending a purchase. Crude telemetry helps you stop guessing H . This is a proxy, not science. last 14 days, revert-shaped commits on one service git log --since="14 days ago" --grep="revert" --oneline -- services/billing-api | wc -l optional: minutes between bad merge and revert, if your messages are disciplined git log --since="14 days ago" --grep="revert" --format="%ct %s" -- services/billing-api Count is not hours. Multiply by your median revert duration from the incident doc, then divide by two weeks. If you do not have that median, you are not ready to claim the free lane is "working." Gates that skip the equation: Owner: the platform lead who can freeze a lane without a steering committee. If that person does not exist, you do not have a router. You have a Slack poll. Expiry: 30 days or 20 tickets, whichever comes first. Write the date in the YAML. An expired score with last quarter's H is fan fiction. Exit: freeze the free lane for that workstream when H free beats your break-even for two consecutive weeks, or when a K event fires once. Unfreezing needs a new sheet, not a vibe that "the model got better." Break-even extra rollback hours for free versus paid: H free break even = H paid + I paid + C paid + G paid - C free - G free / R Plug the labeled billing-test numbers: H free break even = 1.2 + 220 + 25 + 30 - 40 - 0 / 180 = 1.2 + 235 / 180 = 2.51 hours/week If free is adding more than ~2.5 rollback hours a week on that stream, the sticker price of zero has already lost. That threshold moves the moment R moves. Put the formula next to the YAML so people argue the input, not the brand. I do not route every spike to a credit card. Internal docs, throwaway probes, and new-hire sandboxes often lose when you force a paid tenant before anyone knows whether the workflow sticks. Disclosure: This article was prepared as part of MonkeyCode's product outreach. MonkeyCode is an open-source project with free model access and a free server option. That pair maps to the free lane in this router: useful when K is false and H is still a guess. It does not map to authz middleware, and I will not pretend a free runtime is a production owner. If you try it, score the workstream in the YAML first. Then look at revert hours, not at whether the chat felt fast. A free server also fails a different way than a free chat box. Someone still has to patch it, restrict network egress, and decide who can paste logs into the prompt. If that someone is "whoever found the link," C and G are lying on your sheet. Skip it if you are a solo hobbyist. Your R is weekend mood, not payroll. Skip it if a regulator or a customer contract already names the runtime. The equation will only decorate a decision you are not allowed to make. Skip it if you cannot name a median revert duration. You would be stuffing H with optimism. That is how "free" paths become silent headcount taxes. And skip any scorecard that outputs a single company-wide winner. Workstreams do not consent to that average. Would a 30-point drop in R send billing tests back to free? If yes, your paid lane is a rollback hedge, not a quality religion. Price it that way. Would one K event — a secret in a prompt, a prod write with no owner — wipe the free lane even when LaneCost looks pretty? It should. I want the argument on those two questions. Not on whether the token sticker was zero.