# Declare the plan

Source: https://docs.tightly.io/help/commitments/the-plan
Reviewed: 2026-09-07

## The question this page answers

What does the plan command, month by month and category by category, and where does it stand against the envelope?

## What you see

Declaring the plan is no longer a page of its own. It lives inside [Open to buy](../commitments/open-to-buy), and the old plan address opens Open to buy. Its parts are Plan assumptions, the month grid, and the Channels, Budget and Exceptions sections.

Plan assumptions opens with the plan's figures, including where it stands against the envelope: exactly at it, or under or over it by an amount. Below them are three dials: Growth on planned cost of sales, Intake margin and Turn. A dial moves the Line column of the grid in the same moment, and nothing stores it. Each dial's hover says what it did: at 0% growth the plan on file stands, moved by nothing; a margin at the declared figure moves nothing on the book; the turn on file leaves the stock behind the sales where it is. Where no margin is declared, the margin dial reads Not seeded, and so does the turn where nothing measures one.

The month grid is one row per month of the window. The typed terms are Planned sales, Reductions, Closing stock and Closing cover, with Planned markdown, Realised markdown, Opening stock, Receipts needed, Worked buy, Drafted, On order, Remaining receipts and Above buying budget beside them. A closing target is a level or cover weeks, never both. An untyped cell reads Not declared, an opening level nobody counted reads Not counted, and planned sales with no forecast read No prediction.

Channels shows the plan by the sales channels the commitment declares, with Channel rows, Category row and Difference per month. Budget is the version ledger: Version, Line, Cells, Locked by and When. Exceptions lists the categories stated to differ from their computed line: Category, Line at cost, Against computed, Reason, By and When.

## What to do

Type a month cell: [Declare a plan month](../commitments/act-declare-a-plan-month). A row typed whole lands in one write, so a refused cell never leaves a total nobody meant. Typing needs Read & write access. Under Channels, Seed the empty cells fills only cells nothing has been typed into, and never a typed one.

State an exception in its drawer with Category, Line at cost, and why this category must differ, in at least 12 characters. A shorter reason is refused:

> An exception without a reason is a typed cell. Say why.

An exception is stated on this page only; nothing stores it yet, and the section counts them as stated · not written.

In Budget, Save reforecast freezes the typed cells as a reforecast version, and Lock the budget makes that version the budget. The line beneath it reads:

> Locks the typed cells as the budget.

Locking the budget needs the role that signs commitments off. The lock is refused where the grid has holes, where the closing path ends above the promise, or where a month's channel rows do not sum to its category row, and the refusal names the category or month. Clearing a typed cell returns the term to Not declared.

## When it is empty or failed

> This commitment declares no envelope for the buy plan to stand against.

> This commitment declares no split by sales channel, so every figure here covers all of them.

> No version of this plan has been locked yet, so the forecast line is all there is.

> The version ledger did not answer, so the grid cannot be frozen as the budget from here yet.

With no exception stated, the section reads No exception is stated. A continuity book has no month grid, and the money read says so; a refused cell stands as it was, with the server's sentence in its row.
