# A refused compile

Source: https://docs.tightly.io/help/commitments/a-refused-compile
Reviewed: 2026-09-07

## The sentence

On [Declare](../commitments/declare), the review step runs the dry run, and where it refuses, the sentence beside the Declare button reads:

> Refused, and nothing was written.

A compiled answer adds no sentence of its own: the compile table is the answer. While it runs:

> Checking the declaration against your book.

Where the dry run itself could not be read, the page says so and adds that this is a failed read, not a refusal, and nothing is compiled. In the table each row's state is one word, Bound, Partial, Unavailable, Refused or Unbound, and the row's why is the compiler's own reason.

## What it means

Before a declaration is committed, Tightly compiles it: a dry run that binds each declared number to the engine that will defend it, against your book as it stands. The dry run writes nothing, whatever it answers. A refused compile is a full answer with its status saying so: the compiler could not honestly bind the scope, and it says why, per refusal, rather than approximating. No such category; no live buy plan season over the window; a scope whose share basis cannot be measured; an envelope no category pool can fund. Only a compiled answer opens the commit. Pending, failed, unreadable and refused all leave the button closed, and so does a compiled answer whose category funding check does not pass; that one prints the check's own reason beside the button.

Refused is not the only word for a number that is not bound. An envelope that some categories can fund and others cannot is Partial: it reserves what it can and names the unbound legs, each with its reason and its amount. A number nobody declared is Unbound: nothing was asked of the engine, so it is an absence, not a refusal and not a zero envelope. A binding no engine can make is Unavailable, with its reason.

## What to do next

Read the Refused row's why; it names the thing to change. Pick a category the book holds, or a window a live season covers, or declare the envelope against a plan that funds the categories the scope touches. Then the dry run answers again by itself whenever the declaration changes, and a compiled answer opens the commit. Nothing was written on the refused one. The same compiler answers Ask Tightly's [Preview what signing arms](../commitments/act-preview-what-signing-arms) over a declaration already on the book, and it too writes nothing.

## Who to ask

Ask Tightly on Declare answers from this article, and [Preview what signing arms](../commitments/act-preview-what-signing-arms) runs the same compiler from a chat for a declaration already on the book.
