- services/exceptionManager.ts: single taxonomy (timing/data/control/
business/system) with §12 codes, deterministic route() table, and
handle() dispatch to retry/DLQ/escalate
- services/execution.ts: refactor executePlan to drive the full 12-state
machine (DRAFT -> INITIATED -> ... -> VALIDATING -> COMMITTED -> CLOSED)
via stateMachine.transition(), with a new validatePhase() that
reconciles DLT tx hash + bank message id + per-step amounts before
COMMIT; SoD-gated edges use distinct synthetic actors by default
- api/plans.ts + index.ts: GET /api/plans/:planId/state returning
current transaction_state + full audit trail of transitions
- tests/unit/exceptionManager.test.ts: 14 tests for classification +
routing matrix
59 tests pass. tsc clean.