NetNavr v0.2.20
Preserve Pay state after channel success
Local persistence errors after successful channel creation no longer incorrectly mark an order FAILED. The recorded CREATED or PENDING state is preserved, the original local error propagates, and idempotent replay does not create another channel payment. Channel rejections retain the existing failure behavior.
Workspace v0.2.20; Pay v0.1.9.
Validation
Two fault-injection regressions fail on the previous implementation (both states become FAILED) and pass with the fix. Tests cover pre-write/post-write failures, original errors, single channel invocation, idempotent replay, successful webhook completion after a persisted PENDING result, and unchanged channel rejection behavior.
Pay: 27 passed. Full Windows workspace: 87 passed, 3 expected platform skips. Shell type checks/build passed. Clean install and npm audit: 0 vulnerabilities. Branch, PR, and main CI passed.
Scope and limitations
Seven files: Pay service/test/version metadata, workspace version, and bilingual README. No Core, Shell, dependency, lockfile, schema, real-provider, or production deployment changes. Dependabot PR #17 is excluded. The original local non-Git mirror is untouched.
Recovery/reconciliation for unresolved CREATED orders and provider timeout/unknown-result handling remain unimplemented. Pay remains sandbox-only; this source release is not production deployment or real-funds authorization.