state-tx exits 2 without CP_URL and STATE_TX_NEW_STATE. Each template's target state is its own output.state (test-validated / test-skeleton-ready). Adds an invariant test. Claude-Session: https://claude.ai/code/session_01N218bERyNeLhbLmDRDvbWF