# Stack W — Rotation Semantics Decision Record

Version: 1.0.0

Status: CANONICAL SUPPORT / STRUCTURAL SEMANTICS / NON_PROVIDER / NON_RUNTIME / RUNTIME_DISABLED

## Carrier order

```text
index:   0 1 2 3 4 5 6 7 8
carrier: B C D E F G H I K
```

The V pair and U pair each rotate rigidly. For a V carrier `v` and U carrier
`u`:

```text
directed_delta_mod_9(v,u) = (index(u) - index(v)) mod 9
undirected_circular_distance(v,u) =
    min(directed_delta_mod_9(v,u), 9 - directed_delta_mod_9(v,u))
```

These fields are not interchangeable. A directed state identifies a concrete
relative rotation; an undirected distance only identifies the shorter circular
separation and loses direction.

## Temperantia reconciliation

`Temperantia` appears at `+VE` and `-UC`. Therefore:

```text
v = E (index 3)
u = C (index 1)
directed_delta_mod_9 = (1 - 3) mod 9 = 7
undirected_circular_distance = min(7, 2) = 2
```

The received `carrier_distance: 2` vector is valid only as an undirected
circular-distance assertion. It is not the directed W rotation state. The
qualified form records both values and never compares them as though they
were the same metric.

## Camera derivation

For every `delta ∈ 0..8` and every carrier index `i`:

```text
C(i,delta) = {
  +V[carrier(i)],
  -V[carrier(i)],
  +U[carrier((i + delta) mod 9)],
  -U[carrier((i + delta) mod 9)]
}
```

This yields 9 relative states and 81 placements. The validator derives the
table from the formula; received `pass:true` flags and precomputed tables are
evidence, not test execution.

## Boundary

Rotation expresses structural alignment only. It does not establish semantic
identity, contrariety, moral valence, execution order, or a G-camera
dependency. `+VE` and `-UC` share the term `Temperantia` because of an explicit
identity record, not because their circular distance is 2.
