# E37 changelog
- 2026-10-05: Rewrote the untested E37 draft (single-key AFO, forgeable `{"authorizes": True}` local
  authorization, constant-True invariants). Added the co-signed AFO, the signed AGN negotiation, a
  SovereignDomain gate with state-root-bound local authorization, single-use MCPGate over the E34 process
  boundary, local revocation decisions, disputes, N-way fork detection, replay and a CLI, the attack lab,
  the race engine, a clean-room verifier, a SIMULATION scale run and the bundle.
- 2026-10-05 (later): CONCURRENCY FIX. c88441cd had no lock on SovereignDomain. A peer session (E38)
  showed by fault injection (2 ms between the gate checks and tool start) that on real threads a tool
  could START after a revocation had already returned (94/100 injected trials; 0/100 without injection).
  The earlier race engine interleaved operations sequentially and could not see this. Fix: one RLock
  serializes every gate decision and state change; MCPGate holds it across checks, consumption, token
  minting and tool START (Popen), and awaits the tool outside it. New RT-E37-11 thread race: 0 violations
  with and without injection, plus a mutation test that removes the lock and must observe violations.
