1. Validate configuration
Before mutation traffic:- confirm the Feature is classified for credit consumption;
- verify one effective conversion rate for the intended Credit System;
- verify plan grants and paid top-ups create separate balance sources;
- verify Entity pool policy where Entity attribution is used; and
- confirm the backend key has only the required permissions.
2. Shadow with advisory checks
Callusage.check() using representative production-shaped properties. Compare the exact-decimal metric amount, credits required, total availability, and projected source deductions with your expected fixtures.
Advisory checks do not mutate balances and are safe for shadow evaluation.
3. Test idempotency and concurrency
In a sandbox customer, confirm:- same-key retries return one logical result;
- the same key with a different payload is rejected;
- concurrent requests cannot overdraw a source;
- denied operations create no allocations or billing-event outbox row;
- successful operations reconcile to one billing event; and
- source expiry, top-ups, and subscription grants retain expected priority.
4. Canary one workflow
Enable one application workflow for a small set of non-production or internal customers. Monitor:- allow and denial rates;
- request latency;
- balance and operation history;
- outbox publication delay and failures;
- reconciliation status; and
- support or application errors caused by changed denial behavior.
5. Audit acceptance
Use Nozle’s read-only credit audit tooling when available. At minimum, verify:- source balances equal initial amounts plus immutable allocations;
- successful consumes have exact deductions and one durable outbox event;
- denied consumes have no side effects;
- paid top-ups and subscription grants materialize once; and
- customer and organization ownership remain consistent.
6. Expand gradually
Expand by workflow, metric, or customer cohort only after the canary window is clean. Keep a dashboard for denial changes, reconciliation lag, and publication failures.Rollback
Stop sending newusage.track() requests for the affected workflow and fall back to your previous authorization path. Do not delete ledger rows. If a committed operation must be reversed, use an explicit compensating operation so financial history remains auditable.