Live demo

A real report, start to finish

This is the output for a fintech split-capture payouts release with a schema migration and a two-major SDK upgrade.

83
Risk score
NO-GOCriticalHold this release

Do not ship in the current state

Split-capture payouts + Stripe SDK upgrade scores 83/100 against the Payments / Fintech risk profile, which places it in the NO-GO band. Exposure concentrates in Data and Integration, driven primarily by: money movement path changed without a proven rollback. Close the top two risks and re-scan before opening a deploy window. Shipping now trades a short delay for a likely customer-visible incident. Payments workloads carry regulatory and financial blast radius, so the baseline starts elevated.

Destructive or breaking language detectedAPI specification supplied and parsedUser story / ticket context suppliedData migration in scope

Risk heatmap

Exposure by category, 0–100. Higher means more attention required before deploy.

lowmoderateelevatedhighcritical
Functional82

1 identified risk — highest: Money movement path changed without a proven rollback.

Integration88

3 identified risks — highest: Retry / webhook handling can produce duplicate side effects.

Data90

3 identified risks — highest: Schema migration is not provably reversible under load.

Security31

No direct signal in the submitted change; residual security exposure from the payments / fintech baseline profile.

Performance19

No direct signal in the submitted change; residual performance exposure from the payments / fintech baseline profile.

Regression19

No direct signal in the submitted change; residual regression exposure from the payments / fintech baseline profile.

Operational58

1 identified risk — highest: Environment configuration drift at deploy time.

Prioritized risks

Ranked by likelihood × impact against the submitted change.

  1. R01FunctionalLikelihood: HighImpact: Severe

    Money movement path changed without a proven rollback

    100
    Critical

    Why: The change touches an authorisation/capture path. Failures here are immediately customer-visible, are rarely idempotent, and reconciliation errors compound every hour the release stays live.

    Mitigation: Run the full payment matrix in sandbox (auth, capture, partial capture, void, refund, chargeback) and stage behind a kill-switch flag with a documented rollback owner on release day.

  2. R02DataLikelihood: HighImpact: Severe

    Schema migration is not provably reversible under load

    100
    Critical

    Why: Destructive or locking DDL against a live table can stall writes, and a migration without a tested down-path turns any rollback into a data-recovery incident.

    Mitigation: Use expand/contract: ship additive columns first, backfill in batches, cut over reads, then drop later. Rehearse the migration against a production-sized snapshot and time the lock.

  3. R03IntegrationLikelihood: HighImpact: High

    Retry / webhook handling can produce duplicate side effects

    98
    Critical

    Why: Asynchronous delivery guarantees are at-least-once. Without an idempotency key and a dedupe window, provider retries and consumer redelivery create duplicate records or duplicate notifications.

    Mitigation: Enforce an idempotency key per logical operation, persist processed event IDs, and make handlers safe to replay. Add an alert on duplicate-key rejections.

  4. R04IntegrationLikelihood: HighImpact: High

    API contract change may break existing consumers

    95
    Critical

    Why: Renamed, removed, or newly-required fields are breaking changes for clients that you do not control. Mobile clients in particular cannot be force-upgraded on your release timeline.

    Mitigation: Diff the OpenAPI spec against the deployed version, keep removed fields for one deprecation window, and version the endpoint if any required field changed.

  5. R05DataLikelihood: MediumImpact: Severe

    Concurrent writes can produce inconsistent balances or counts

    83
    Critical

    Why: Read-modify-write against a shared counter or balance without row-level locking or optimistic versioning silently loses updates under real traffic, and the discrepancy is only visible at reconciliation.

    Mitigation: Use database-level constraints and SELECT … FOR UPDATE or optimistic version columns; add a reconciliation job that alerts on drift.

  6. R06IntegrationLikelihood: MediumImpact: High

    External provider behaviour is outside your control

    74
    High

    Why: A new or upgraded provider brings its own latency profile, rate limits, and error taxonomy. Untested timeout handling turns a partner blip into your outage.

    Mitigation: Set explicit timeouts and circuit breakers, define the user-visible degraded state, and test with the provider's sandbox failure modes (429, 5xx, slow response).

  7. R07OperationalLikelihood: MediumImpact: High

    Environment configuration drift at deploy time

    71
    High

    Why: A missing or stale environment variable fails at first request rather than at build, which means the failure lands in production traffic rather than in CI.

    Mitigation: Validate required configuration at boot and fail fast, and diff production config against staging as a release checklist item.

  8. R08DataLikelihood: MediumImpact: High

    Rounding, currency, or timezone handling introduces silent drift

    71
    High

    Why: Floating point arithmetic on money, inconsistent rounding modes, and timezone-naive timestamps produce small differences that only become visible in reconciliation or tax reporting.

    Mitigation: Use minor-unit integers or decimal types end to end, pin a single rounding mode, and store timestamps in UTC with explicit conversion at the edges.

5 things you MUST test before production

The shortest path to retiring the most probability-weighted risk.

  • 1End-to-end authorise → capture → refund on at least one live-like test card per provider
  • 2Duplicate submit / double-click on the pay button does not create two charges
  • 3Migration + rollback rehearsal on a production-sized data snapshot
  • 4Replay the same webhook event 3× and assert exactly one state transition
  • 5Contract test the previous client payload shape against the new endpoint

Suggested regression scope

Areas to re-verify even if untouched by the diff.

  • Checkout and payment method management
  • Refund and void flows
  • Read paths for every table touched
  • Reporting and export jobs
  • Webhook consumers and background workers
  • All public API endpoints touched by the diff
  • SDK / client integration suite

Edge cases to cover

Conditions most likely to be missed by the happy-path suite.

  • Payment succeeds at the provider but the callback times out before your record is written
  • Partial refund on a multi-currency order
  • Rows written by the old code path during the backfill window
  • Nullable column suddenly becoming NOT NULL with legacy nulls present
  • Events arrive out of order (settled before authorised)
  • Provider retries after your handler already committed but before it returned 200
  • Old mobile app versions still sending the deprecated field

Disclaimer: ShipSure is decision-support tooling. It surfaces likely failure modes from the information you provide and does not execute your code or tests. It cannot guarantee the detection or prevention of production failures, and it does not replace engineering judgement, QA, or your release process.