Write contracts/docs/contracts-errors.md: every failure condition across the three contracts — what triggers it, what the caller observes, and how a client should present it.
Acceptance criteria:
- Every panic/error path documented per contract function, grouped by function
- Distinguishes authorization failures, validation failures and state-machine violations (voting twice, approving after expiry, executing an unfinalised proposal)
- Documents what a failed invocation looks like from the frontend, so
lib/soroban.ts callers can map it to a message
- Cross-links the frontend error-handling doc
Write
contracts/docs/contracts-errors.md: every failure condition across the three contracts — what triggers it, what the caller observes, and how a client should present it.Acceptance criteria:
lib/soroban.tscallers can map it to a message