# Preview what signing arms

Source: https://docs.tightly.io/help/commitments/act-preview-what-signing-arms
Reviewed: 2026-09-07

## What it writes

Preview what signing arms writes nothing at all: it is the dry run that compiles a commitment's stored declaration and answers with what each of the five would bind to, at pair grain, or with a first-class refusal and its stated reason. The answer says so itself, with writes at zero. It is the one act Ask Tightly may take that changes nothing; it rides the acts list only because its verb is a write's, and a preview that had a plain read would never need naming.

## Who may press it

Any seat that can read a commitment, on a plan that includes Commitments. The page runs it for you: [Declare](../commitments/declare) compiles a would-be declaration before the Declare button opens, and [Sign off](../commitments/sign-off) compiles the stored declaration under What it arms. Ask Tightly runs it as `preview_commitment_compile` when you ask what signing would arm, and cannot arm anything by asking. Over MCP even this dry run is refused, because its verb is a write's and MCP writes nothing; a connected agent reads the declaration, and the compile is the page's.

## What you see

On Declare the compile answers beside the button; on Sign off it is a table, Engine and What signing arms. While Declare's runs:

> Checking the declaration against your book.

A refused compile is an answer, not an error, and only a compiled declaration opens the button:

> Refused, and nothing was written.

A compiled declaration adds nothing on Declare; on Sign off it lists what each engine would arm.

## What to do

Nothing to undo; nothing was written. Where the compile refuses a declaration still awaiting its signature, retire it and declare again: [Amend a commitment](../commitments/amend) and [Re-assign a commitment](../commitments/re-assign) move only an armed commitment. On an armed one, change the numbers or what it covers there, then compile again. The [two signatures](../commitments/two-signatures) that follow are a person's act on the page, never Ask Tightly's.

## Refusals you may read

A refused compile carries the compiler's own reason per refusal: a scope the envelope engine cannot bind is refused in the compiler's words, and a number with no figure binds nothing and is listed as unbound. A compile that did not answer is a failed read, not an empty one:

> The compile did not answer: a failed read, not an empty one.

A commitment that does not exist is a 404, and an organisation whose plan does not include Commitments reads the plan's own refusal.
