---
id: "13.8"
title: "No spend while building"
dept: finance
status: draft
owner: Param
branded: false
last_verified: 2026-10-26
sources:
  - "brew origin/main a559de6: deploy.sh:13-15, DUMMY.md:21, jam2/routes.js:310-317"
  - "memory: no-spend-while-building, treg-usage-rules, brew-gemini-provider, brew-pro-switch-and-flush, brew-move-freshness, brew-sloosh-finals, brew-viral-remakes, brew-higgsfield-wiring"
---

# No spend while building

## Answer

The rule that building costs nothing: while we build or change Brew we run no paid generations and no paid probes unless Param asks, we test free and offline, and when one paid call is the only way to check something we ask first and make it one minimal call.

## Today

### The rule and where it came from

| Fact | Source |
|---|---|
| Param, 27 Sep: do not create videos while building the capability; several restarts of full runs had burned credits | [src: memory no-spend-while-building] |
| Verify with syntax checks, free local tests and dry logic; a paid probe only when it is the only way, asked first, one minimal call | [src: memory no-spend-while-building] |
| Param, 16 Oct: develop cheap on Flash and switch models when clients go live | [src: memory brew-gemini-provider] |
| Develop cheap with `AI_PROVIDER=gemini GEMINI_DEEP_MODEL=gemini-3.5-flash` | [src: memory brew-pro-switch-and-flush] |

### How the product keeps tests free

| Guard | Source |
|---|---|
| The test suite runs with `AI_MOCK=1`, so no model is called | [src: brew/deploy.sh:13-15] |
| Finals on the demo site quote zero and carry a Dummy tag | [src: brew/DUMMY.md:21] |
| Every paid make needs a confirmed price before it runs | [src: brew/jam2/routes.js:310-317] |
| Learnings were tuned with a simulated call on a copy of Cozy, with rewrites mocked, about $0.01 a run | [src: memory brew-move-freshness] |

### The treg rules

| Rule | Source |
|---|---|
| Never generate images, video or voice through treg; use our own keys | [src: memory treg-usage-rules] |
| Check the balance live before blaming treg | [src: memory treg-usage-rules] |
| Never repeat a call for data we already have; reuse the cache | [src: memory treg-usage-rules] |

## Tomorrow

| Item | Version | Tag |
|---|---|---|
| The rule | v1 to v4 | Stays |
| Posting tests use test accounts only, never a partner's live channel | v2 | New |
| Ad tests run with a zero or test budget | v4 | New |

## How we do it

### Where the line sits, the working rule

| Allowed without asking | Ask Param first |
|---|---|
| Mocked tests, syntax checks, free reads of our own files | Any Sloosh final, Higgsfield or Veo video |
| Reading saved data and caches | A paid probe of a new API shape |
| A real read that a partner asked for | A full rewrite or rebuild of a brand |
| Background work inside the product's caps | Raising any cap |

Paid video tests run on Arata, never on Cozy, by Param's call [src: memory brew-viral-remakes]. The Higgsfield CLI needs Param's yes before install [src: memory brew-higgsfield-wiring].

1. Before running anything that might spend, ask: is there a free way to know this.
2. If not, write the one call, its cost and why, and ask Param in chat.
3. After a yes, run it once, record the cost in the spend ledger and reuse the result.
4. Deploys run the mocked suite:
   ```bash
   AI_MOCK=1 node --test test/*.test.js
   ```

## Numbers

| Metric | Definition | Where measured | Status |
|---|---|---|---|
| Paid probes a month | Paid calls made while building, each with Param's yes | Spend ledger | Proposed |
| Spend without a yes | Paid build spend with no recorded yes | Spend ledger | Proposed, target 0 |

## Open

1. **Does the rule cover real reads for new prospects?** Proposal: no; a real read for a prospect Param or Sai invited is product use, not building, and runs inside the caps.
