compliant adr-0007-uninstall-sweep ADR-0007: GDPR-driven uninstall retention sweep (30-day tombstone before hard delete)
compliant adr-0009-tenant-scope-guards ADR-0009: tenant data isolation via store_hash scope guards on every owned-entity read
compliant adr-0011-failed-permanently ADR-0011: failed_permanently terminal state — scheduler ratchets stuck charges
compliant adr-0014-typed-error-format ADR-0014: typed-error wire format (couples with BigEng convention #4)
compliant adr-0024-per-instance-overrides ADR-0024: per-delivery-instance override mutation API (skip / swap_product / reschedule_to)
compliant adr-0028-eligibility-engine ADR-0028: eligibility-engine architecture pattern (Epic 26 inclusion + exclusion rules)
compliant adr-0029-marketplace-first ADR-0029: marketplace-first, native-ready posture
compliant adr-0030-bigeng-alignment ADR-0030: BigEng pattern alignment — ratify the 12-convention catalog
non-compliant ops-ledger-max-attempts ADR-0031: operations.max_attempts column for per-row retry budget
partial ops-ledger-locked-until-reaper ADR-0031: operations.locked_until column + reaper cron
compliant job-configuration-table ADR-0031: job_configuration sidecar table for per-cron per-store config
compliant deprecation-handler-registered DeprecationRegistry + middleware wired at app boot (ADR-0032)
compliant api-version-namespace-v1 All API routes mounted under /api/v1/ prefix (ADR-0032)
compliant deprecation-headers-emit-on-request Deprecation, Sunset, Link headers emit on deprecated route calls (ADR-0032)
compliant subscription-extensions-table ADR-0033: polymorphic subscription_extensions substrate for Epic 6 extension types
compliant extensions-scheduler-hooks ADR-0033: scheduler invokes extension lifecycle hooks before each renewal
compliant processor-adapter-bc-payments-production ADR-0035: BC Payments standard-rail adapter — production branch implemented (PAT mint + method lookup + payments.bigcommerce.com charge; throw at bc-payments.ts:70 replaced)
partial processor-adapter-bc-payments-webhook-extraction ADR-0035: BC Payments stored-instrument extraction at order.created webhook — real BigPay token persisted via GET /v3/customers/{id}/stored-instruments
compliant processor-adapter-stripe-production ADR-0025: Stripe secondary-rail adapter — production branch implemented (PaymentIntent.create with off_session MIT; no pre-existing BC order required)
compliant processor-adapter-stripe-decline-classification Stripe adapter classifies hard vs soft declines via HARD_DECLINE_CODES set; StripeChargeError exposes isHardDecline for scheduler dunning logic