# Cancellation and Readability

# Cancellation and Readability

## Cancel actions

Cancelling is itself an action with its own PER cycle - not a special-case mechanic. There will be multiple actions that implement cancels:

- **Boundary cancel** - the deliberate cancel at the prep-to-exec edge (below).
- **Deep-prep cancel** - the mid-prep bail action (below).
- **Cancel-on-reaction** - reactions that explicitly cancel the triggering actor's parent action as their effect.
- **Cancel-as-part-of-another-action** - feats or abilities that cancel the parent action as a side effect of doing something else.

Each cancel implementation is its own action with its own prep/exec/recover parameters and its own readability profile. Whether a cancel from a reaction or another action actually lands is subject to the target action's interruptibility (see Resolution). The one action state machine applies to cancels too.

## Cancellation policy

Two windows, both in force:

- **Boundary cancel (primary)**: cancels allowed at the prep-to-exec boundary, never between exec and recover. Cheap but never free - even a minimal PER cycle, because a free cancel means commitment means nothing.
- **Deep-prep cancel (fallback)**: cancelling mid-prep is allowed but costs scale with invested prep:
  `cancel_time = min_cancel + invested_prep * factor`
  A minimum cancel time prevents instant-cancels whenever an interrupt appears.

## Readability - the public/private state layer

Every actor's phase state has two layers:

- **Public**: what the world observes (and the UI shows).
- **Private**: what is actually happening in the sim.

Feats and abilities modify the broadcast, not the sim:

- Fake a cancel (broadcast "recovering", actually still prepping).
- Pretend to continue an action while actually cancelling.
- Read others' cancels more accurately (requires Lore/Int investment).

**Cancelling must telegraph** (the flinch): hands relax, grip shifts. Else cancel-spam has no counterplay. An experienced enemy reads the flinch and punishes it; a wolf does not.

This is also where the game's knowledge system lives: what you and the monsters can *read* about each other's intentions is a stat, not a given.