Skip to content

feat(core): bootstrap @payenv/core with the safe-fallback attempt engine - #3

Merged
jules-mahounou merged 1 commit into
mainfrom
feat/core-bootstrap
Sep 26, 2026
Merged

jules-mahounou merged 1 commit into
mainfrom
feat/core-bootstrap

Conversation

@jules-mahounou

Copy link
Copy Markdown
Collaborator
  • TypeScript monorepo (pnpm workspaces, TypeScript 7, Vitest, Biome)
  • Money model in integer minor units with ISO 4217 exponents
  • Payment methods, unified statuses and transitions
  • Error taxonomy with retry classes (safe_to_fallback, do_not_retry, ambiguous)
  • Connector and capability interfaces
  • Capability-aware router with the priority strategy
  • Attempt engine enforcing ADR 0004: never try another connector while a previous attempt could still succeed; ambiguous attempts are resolved by checking the status with the same provider
  • Idempotency (atomic store create), refresh, lifecycle events
  • In-memory store for development and tests
  • CI on Node 20/22/24 with a DCO sign-off check

The randomized invariant test tracks independently whether each provider proved that no money moved, and was checked against injected double-charge bugs.

What & why

Checklist

  • Commits are signed off (git commit -s) — see DCO
  • Tests added or updated
  • If this touches routing/fallback: tests prove no double charge is possible
  • Docs and CHANGELOG.md (Unreleased) updated if behavior changed
  • No real secrets or personal data in code, tests, or fixtures

- TypeScript monorepo (pnpm workspaces, TypeScript 7, Vitest, Biome)
- Money model in integer minor units with ISO 4217 exponents
- Payment methods, unified statuses and transitions
- Error taxonomy with retry classes (safe_to_fallback, do_not_retry, ambiguous)
- Connector and capability interfaces
- Capability-aware router with the priority strategy
- Attempt engine enforcing ADR 0004: never try another connector while a
  previous attempt could still succeed; ambiguous attempts are resolved by
  checking the status with the same provider
- Idempotency (atomic store create), refresh, lifecycle events
- In-memory store for development and tests
- CI on Node 20/22/24 with a DCO sign-off check

The randomized invariant test tracks independently whether each provider
proved that no money moved, and was checked against injected double-charge
bugs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Jules Mahounou <234069818+jules-mahounou@users.noreply.github.com>
@jules-mahounou
jules-mahounou merged commit cbbe151 into main Sep 26, 2026
4 checks passed
@jules-mahounou
jules-mahounou deleted the feat/core-bootstrap branch October 5, 2026 14:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant