docs/dgp/06-feedback.md

# Endogenous feedback

Two scalar signals are computed per step from the **lagged** state vector at
`t-1`. Both feed the transition logits at step `t`.

## Network congestion

$$
c_t = \min\!\Big( \frac{\#\{i : S_{i,t-1} = \text{ER}\}}{N_{\text{cap}}},\ 1 \Big)
$$

`N_cap` is a road-capacity proxy. Default: 1500. The `contraflow` scenario
raises it to 2500, modeling additional outbound capacity from contraflow
operations.

`c_t` shows up in two places:

* **`PR → ER`** logit through `β_negc · (−c_t)` — heavy congestion suppresses
  fresh departures.
* **`ER → SH`** logit through `β_negc · (−c_t)` — heavy congestion slows
  arrivals at destinations.
* **Displacement (ER branch)** through `v_eff = 40 · (1 − 0.6 · c_t)`.

## Peer-departure share

$$
\pi_t = \frac{\#\{i : S_{i,t-1} = \text{ER}\,\text{or}\,(S_{i,t-1} = \text{SH and evac\_path = AWAY})\}}{N}
$$

This counts households that are *visibly evacuating* — currently on the road
or already arrived away from home. Sheltered-in-place households are
deliberately excluded; the spec's behavioral story is that "your neighbors are
leaving" is the social signal that nudges `AW → PR`.

`π_t` enters the `AW → PR` logit through `β_pi · π_t`.

## Why lagged?

Both signals use `S_{i,t-1}`, not `S_{i,t}`. This is what keeps the model an
IO-HMM: a household's transition to `S_{i,t}` depends only on inputs known
*before* `t`. Without the lag, every household's draw at step `t` would
depend on every other household's draw at the same step, breaking
conditional independence given the inputs.