Skip to content

Brakes

A brake stops one class of effects, such as sends, spend, publishes or price changes, across many Startups at once, until it expires or is lifted.

A brake stops one class of effects (sends, spend, publishes or price changes) across a set of Startups at once. Readings trip most brakes; a watcher pulls the rest by hand.

What a brake stops

A brake is a Setting with a scope, the effects it stops, a reason and an expiry. Its scope is a Portfolio query: one Startup, a Cohort, every Startup on one Startup Template Version, or the whole Portfolio. Every Startup in scope inherits it.

While a brake holds, each new Action with a braked effect stays pending. Nothing already done is undone; revert by query does that. When the brake lifts, the held Actions resume their review and delay windows.

TypeScript
import { $ } from 'startup-builder'

const { brake } = await $.Portfolio.brake({
  portfolio: 'directories',
  query: 'template.version = "4.2.0"',
  effects: ['publish'],
  reason: 'Checkout conversion fell below its guardrail on the first three Startups.',
  until: '2026-11-03T17:00:00Z',
})

await $.Portfolio.lift({ portfolio: 'directories', brake: brake.$id, reason: 'Version 4.2.1 fixes checkout.' })

A brake never waits for a window. Stopping is always safe to do at once, so a brake takes effect the moment it is set.

Automatic brakes

TripReadingWhat stops
Runaway volumeOutbound Messages, refunds or payouts pass three times their trailing seven-day average in an hour.That effect, for the Startup that produced it
Bad versionThe first Startups on a new Startup Template Version breach a guardrail Metric.Publishes, for every Startup on that Version
Guardrail breachA Play rollout breaches a guardrail Metric in its Cohort.The Play's effects; the rollout reverts
Shock invoiceA bill arrives at more than three times its trailing average.Payment of that bill

Each trip records a Decision for the owning Role to resolve. A freeze is a brake set ahead of time, such as no price changes across a Portfolio during a holiday week.

Spend states

Every budget runs in one of three spend states. A tripwire moves it down one state at once; moving back up is a Decision.

StateWhat may be spent
FREEAnything inside a standing envelope with tripwires, such as ads up to $200 a day while acquisition cost stays under target.
TIGHTOnly spend against a signed Campaign order: a Mandate with an amount, a condition and an expiry.
HOLDCommitted obligations only, such as payroll, taxes and Invoices owed. Anything new needs an Approval from the Role above.

Every grant carries its condition, its expiry and the budget left, so one approval never becomes open-ended spend. Paying a shock invoice and suspending a paying customer always sit behind HOLD. Spend management keeps the states.

In practice

The Studio ships version 4.2.0 of its Directory Startup Template to 30 Startups, starting with three. Within an hour, checkout conversion on all three falls below its guardrail. A bad-version brake stops publishes for every Startup on 4.2.0, so the other 27 never receive it.

The Engineering Lead reverts the three by query and ships 4.2.1, which passes on a fresh cohort of three. The brake lifts, and the rollout continues.