# Scale follows from structure

> How many parties a body of work needs is not a matter of choice.

Page: Methodology · Ship
Canonical: https://banes-lab.com/disciplined-methodology/ship#scale-follows-from-structure

This section is stop 93 of 102 in the learning route. Previous: [43 - One chain](https://banes-lab.com/disciplined-methodology/ship/one-chain.md). Next: [45 - The deploy is a file operation](https://banes-lab.com/disciplined-methodology/ship/the-deploy-is-a-file-operation.md).

How many parties a body of work needs is not a matter of choice. The count follows from how the work divides into concerns that must be able to contradict each other. The floor is the number of those concerns, and the ceiling is set by the worst fan-in, the point at which claims resting on one surface stop surviving; [B1·a floor, ceiling, count](https://banes-lab.com/disciplined-methodology/ship#scale-follows-from-structure-panel-a) shows where each comes from. The architecture page derives the same range for a system, as described in [a concern is a component](https://banes-lab.com/software-architecture/scale/a-concern-is-a-component.md) and [the ceiling moves by cost](https://banes-lab.com/software-architecture/scale/the-ceiling-moves-by-cost.md).

### Floor and ceiling

The number of agents or people on a task comes from a preference, and a preferred number is wrong in one of two directions. Five agents work on a task that has two concerns, three of them wait, and the surface they all write to becomes the bottleneck. A count chosen independently of the partition either leaves a concern with no owner or gives one surface more claims than it can hold.

For this reason the number of parties follows from the structure of the work rather than from a preference. The work is partitioned first and counted second. In practice, the work is first divided into concerns, and counting them gives the floor. The fan-in on each [shared surface](https://banes-lab.com/pag/orchestration/shared-surfaces.md) is measured from the traffic the surface already records, which gives the ceiling. A count is then chosen inside that range, and the partition it came from is written down.

To check this, ask what partition the current count came from. A count with no partition behind it is a preference, and the fan-in will expose it. Volume is the wrong input, as described in a concern is a component; the fan-in caps a small task and a large one alike.

With fewer parties than the floor, one concern has no owner, so it is decided by whichever party happens to be nearest, which is the substitution every other chapter refuses. With more parties than the ceiling, the shared surface becomes the bottleneck: a claim is more often stale by the time it lands than it is read, and the parties spend their rounds re-deriving each other's reads.

The argument is carried on the architecture page in [scale follows determinism](https://banes-lab.com/software-architecture/scale/scale-follows-determinism.md). A deterministic check returns the same verdict whoever runs it, so adding a party adds no enforcement cost, and that is why every coordination rule here is either a mechanism or a declared piece of conduct with its evidence written down.

B1·a floor, ceiling, count

```mermaid
flowchart TB
work["A body of work"]
partition["Partition it into concerns that must be able to contradict each other"]
floor["Floor · the number of concerns"]
fanin["Measure the fan-in on each shared surface"]
ceiling["Ceiling · the worst fan-in before claims stop surviving"]
count["The count · a choice inside the range, with the partition written down"]
work --> partition --> floor
partition --> fanin --> ceiling
floor --> count
ceiling --> count
```

## Links to

- [A concern is a component](https://banes-lab.com/software-architecture/scale/a-concern-is-a-component.md)
- [The ceiling moves by cost](https://banes-lab.com/software-architecture/scale/the-ceiling-moves-by-cost.md)
- [Shared surfaces](https://banes-lab.com/pag/orchestration/shared-surfaces.md)
- [Scale follows determinism](https://banes-lab.com/software-architecture/scale/scale-follows-determinism.md)

## Linked from

- [A concern is a component](https://banes-lab.com/software-architecture/scale/a-concern-is-a-component.md)
