Paddock lockdown

A staff member supplies a paddock number and asks to lock it down. Three modules and a system file define the permitted operations.

What the interface says

Read park/doors.brass without its bodies:

Read park/enclosures.brass: Enclosure says which states a paddock may enter. Breached has no edge out; repair is outside this program. Secured has no edge to itself: locking down a secured paddock is not a transition this machine declares.

The body tries close up to three times, retrying every failure, including Unauthorized. The range bounds the attempts even if the loop never breaks. last starts before the loop and holds each attempt's result. This retry policy is not in the interface.

The paddock's state enters the program through enclosure, an allow whose result type carries the machine. The runtime checks that the reply fits the type. Whether it describes the actual enclosure is assumed.

What breaks if it changes.

Which promises are checked, and where?

Proven

Enforced

Assumed

The optional impact_modules policy reports changes that exceed the configured scope. It is separate from the promise tiers and does not reject a program. Its count is provisional (spec §10.1).

The wrong edit, rejected

A model lets any paddock be locked down:

# park/doors.brass — wrong edit
  fn lockdown(doors: Doors, operator: staff.DoorOperator, p: enclosures.Paddock) -> Outcome<enclosures.SecuredPaddock>

The body's transition no longer has an edge from every possible source state:

fault edge not established: p.status enters enclosures.Enclosure.Secured
  source states not covered: Secured, Breached
  at park/doors.brass: fn lockdown
  fix: narrow p to a state with that edge, or test p is enclosures.OpenPaddock first

The machine declares no move from Breached or Secured into Secured. Closing a door does not repair a breached enclosure, and this program has no transition for locking down an already secured paddock.

What these declarations leave open