Checks: what refuses one send
The nine compile checks, the line dev prints for each, and the per-send codes each call can refuse with.
Nine checks run when a file compiles, and dev names the line that fails. At send time the same lines hold as typed refusals, one code per check.
$ npx startup-builder dev
metrics/q4.mdx:5 S1 keyResults[1].metric: demo-requests has no parent chain to arr. Set its parent: opened-deals-and-trials.
sequences/cold-email-thread-founder.mdx:5 S2 steps.second sends with no code-tier Check. Add guards: [customer-collision].
audiences/lapsed-leads.mdx:4 S3 exclude: drops suppressed. Suppressed Contacts never enter a List: put it back.
plays/lead-reactivation.mdx:5 S4 budget: 48 USD a month is over Dana’s Mandate of 0. Sign it with Mandate.authorize, or the first send waits on an Approval.
plays/lead-reactivation.mdx:4 S5 on: Lead.lapsed is not a registered Event. Did you mean Offer.trialed?
content/webinars/60-day-notices.mdx:4 S6 distribute.posts.handles: dana-x is not a connected account. Did you mean dana-linkedin?
plays/cold-email.mdx:5 S7 body: “sound friendly” compiles to no Evaluator. Write what a draft must hold or must leave out.
experiments/pro-price.mdx:3 S8 varies: offers/pro.mdx price, assigned by contact. Assign by market or by time.
agents/sales/prospector.mdx:4 S9 results: reply-count is not a node or leaf of the ARR tree. Did you mean positive-reply-rate? Checks
| Check | It holds | At send time |
|---|---|---|
| S1 | The Metric’s parent chain reaches arr: the Result card’s path. | — |
| S2 | Every send passes a code-tier Check before it goes. | customer-collision, domain-authenticated, mailbox-warm, price, claim, spam-brake, owned-by-a-person |
| S3 | Lists leave out suppressed Contacts and read Consent. | suppressed-contact, no-consent, consent-stop, customer-collision |
| S4 | The budget fits the Mandate, or opens an Approval. | spend-limit |
| S5 | Every on: names a registered Event. | — |
| S6 | Content from and distribute handles resolve. | — |
| S7 | Every body rule compiles to an Evaluator that runs as POST /{namespace}/actions/{action}/evaluate on each draft before its window opens. | provenance-hold, fact-check, content-evals, claims-resolve, approved-pages |
| S8 | An Experiment that varies an Offer’s Price assigns by market or by time. | price-split-by-buyer |
| S9 | Each Key Result names a node or leaf of the ARR tree, and a seat’s Key Result sits in its band. | — |
Refusals
Each code with its fix, its wait and the call that clears it: Refusals.
Compiled, not written: edit the records it reads (refusals), then regenerate. Every step runs from a sentence or a line of code. In your words: the CRM words you know, and where each lives here.