Use cases · Payments and fintech

Money moves exactly as the rules say.

In a payment flow, a two-character refactor can pay out money that was never collected. Bracel executes the rules that guard every amount on every pull request, before merge.

PR #482 · Refund flow cleanupFAIL
  1. POST /payments · 100.00201
  2. GET refunded total0.00
  3. POST refund · 50.00 (control)201
  4. GET refunded total50.00
  5. POST refund · 50.01201
refund.amount-cap@1 · over-refund-accepted · illustrative

What breaks quietly

The bugs a review reads past.

Each of these looks reasonable in a diff. Each one only shows itself when the code runs.

  1. 01

    Over-refunds

    A guard that compares each refund with the capture, and forgets what was already refunded.

  2. 02

    Partial state

    A rejected operation that still moves a total, because a write happened before the check.

  3. 03

    Open admin routes

    A refund or payout endpoint that ships without its authentication middleware.

Coming soon

Rules to protect

Start with one. Add the next when it ships.

Rules are approved by your team and read from your base commit, so a pull request cannot change the rules that judge it.

  • Refunds never exceed the captured amount

    Available · refund.amount-cap@1

  • Admin payment routes refuse requests without credentials

    Available · http.auth-required@1

  • Retrying the same refund cannot create a duplicate

    Planned · not yet a template

  • Rejected refund attempts are auditable

    Planned · not yet a template

How it runs

Inside your CI. Evidence on the pull request.

  1. 01

    A pull request touches a protected route.

  2. 02

    Your GitHub Actions runner builds and starts the application in isolation, without network access.

  3. 03

    Bracel executes the approved rules against it.

  4. 04

    The check states the verdict, what was expected and observed, and why.

How it works · Security and data · Check compatibility