You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
9e530c314d203ebfc965ad50b74aa3bc33feb8b0 Merge #4190 (claude/gitleaks-config-regen) into the harness branch
c1d0c980583cea2cc125120977a73ddad993da18 Merge branch 'claude/rev-8507-collections' into claude/rev-8507-collections-v2
6c10b19bfe3da45170b9c7c0dcb4b58fea070e13 Merge branch 'claude/rev-8507-collections-v2' into claude/rev-8507-collections-ui
e34c35d12f7ea27cfc88c3b944e68e8e4a98d1dc Merge branch 'claude/rev-8507-collections-v2' of https://github.com/RevKeen/revkeen into claude/rev-8507-collections-ui
b54e4242b50177e4742b37c4e455d24b63703ae4 Merge branch 'development' into chore/test-lane-map-refresh
3dbf920edd226b70de470e6c9e01395b221ba911 Merge branch 'development' into chore/test-schema-refresh
4edf43465d796168627629de4f99f218e48d339c Merge branch 'development' into chore/test-schema-refresh
0f407b25a8f6535d586b7c4e4c880ac50e3f1a6d Merge branch 'development' into claude/deploy-engine-api-concurrency
cdc0ed9e3b6decffb1fc692da6e851162f1da977 Merge branch 'development' into claude/rename-authz-decision-audit-actions
29de32b775043117d255c349546fcc090dc356a7 Merge branch 'development' into claude/rename-authz-decision-audit-actions
5fd447918f81a7a18347250594c02728f951e9f6 Merge branch 'development' into claude/rev-7246-storefront-single-project-deploy
fed11d19f3bcdbdf55fdb6b8ee8f7469205b5b9f Merge branch 'development' into claude/rev-7616-8477-followup
4224103b6e5c97b2f9f1f132c70582033fa2b1a4 Merge branch 'development' into claude/rev-8224-gated-fixtures
6b75f037a4456ac13e4622322cf2a0af82b65a8e Merge branch 'development' into claude/rev-8241-plugin-product-ids
83fe599a627b7c476b8fe7c214b4745b923d2acc Merge branch 'development' into claude/rev-8319-migrator-applier
40c0fc1a4a9f59d0a0b43c0437260df72ad6abab Merge branch 'development' into claude/rev-8319-migrator-applier
4c2b70bfe87a9663499f931af5a480753d934960 Merge branch 'development' into claude/rev-8401-changelog-completeness
36b08ac64e0eda9ecf3543f24337cf6251a1fcbf Merge branch 'development' into claude/rev-8539-outbox-dedupe
363fcafc54a8788432e9ca0c74905b18c4e7929c Merge branch 'development' into claude/rev-8542-cart-delivery-address
f0ea0349b00146b0e0985b45ac84f848bfdbbe40 Merge branch 'development' into claude/rev-8548-cart-line-charge
0d95682060f6c9db54465ec9f118ba72af6171f7 Merge branch 'development' into claude/rev-8548-fulfilment-line-pairing
62ba2fa064437cfdfab83ae76afb1b6cf911e8b1 Merge branch 'development' into claude/rev-8554-nullable-customer-fields
cc74eefbdf21be8775c8289893f3b414f6d46eb1 Merge branch 'development' into claude/rev-8559-elements-r3
286a0e8ee2e6c618ebe9d7cde160b4d1b1013536 Merge branch 'development' into claude/rev-8559-marketing-followup
d4801a28e6968a381d6c031a287a2daf7d3cd6bb Merge branch 'development' into claude/rev-8561-land-on-development
e9aba804d48570a83be7758ce7f2d7fbbda9cf3b Merge branch 'development' into claude/rev-8567-embed-slug-only-log
5a6d4f72eacada1118daffe24ae3c33d010ca3c6 Merge branch 'development' into claude/warmup-ci-fix
78c43d9d20cc8c966994b0c2b573d5536cd4447c Merge branch 'development' into dependabot/github_actions/actions/download-artifact-8
3fd63de9a2b7c30b1d51a658ab3e7989e8910c94 Merge branch 'development' of https://github.com/RevKeen/revkeen into claude/rev-8507-collections
68141d0a67e77407e308cedf4741101b10c00c88 Merge branch 'staging' into promote/development-to-staging-0929j
a385f8426a5bc7034d9714b07bee1d05c0a72298 Merge branch 'staging' into promote/development-to-staging-0930b
9bc653c1c2b8f4348e8bc38ec54029157d387ffe Merge development into REV-8472; regenerate Cerbos bundle identity
5cb921ef4439ba85c76fdf8d59b8b8b94ad5e06b Merge origin/development into claude/rev-7592-inbox-fixes
f1f4879a70ebc8fd5786a7969b76b4bdae967173 Merge origin/development into claude/rev-8383-notification-sqs
2c59014b2579b20575b58c3d02de8b48b0aca588 Merge origin/development into claude/rev-8499-apikey-runtime-rls
768346db77ab85c1532d5f4468db19f5e2850ab7 Merge origin/development into feat/rev-8165-dd-gaps
591009c389c076087d8bb492e933a92edda9b41e REV-8074: attempts begin/result routes and evidence guards
15950e1b5ed97522023ced4eca403abc72398b30 REV-8074: notification_send_attempts table and History dispatch key
bf5f096840b3c998f76933e1ff83c8f3821f97fa REV-8165: document which invoices a Direct Debit collection can be taken against
26086a8dc4b1bba81118a9cc8736105f272778da REV-8165: draft-hold tests — clear the retry interval between Retry-now calls; drive the real sweep on a draft invoice
0450534903d7a7fa4d9a1d76b014ea8e0ac8e551 REV-8165: hold a draft invoice in dunning instead of exiting (sweep and /dunning-retry)
a0dc226e5029817e642155103fb30704c2fe0074 REV-8165: one shared collectable-invoice predicate for card and DD (CAM addendum)
214edae732b12879bb11d9f593cf32239ed6a94a REV-8165: regenerate contract artifacts for the mandates_schedule_collection description
7405bc6b150c9026f550db572998bc6dbe913b70 REV-8165: the Bacs retry DB proof's stand-in invoices table carries collection_method
cd59e1cc3f1b71eb6ab0c52ffe0c4a6377857962 REV-8224: card-contract freeze assumes an approved Bacs authority; pin the not-approved case
6045094e9209a55a7dbbca18de95b536adf1a17b REV-8224: gated test fixtures assume an approved Bacs authority
b41d231d7c0f11dff06afc6ec47f9e50fb9562a9 REV-8224: offer Direct Debit only when the merchant can collect it
28478d780360985658e57a922ab1d5b4e818bad5 REV-8241: Intl renders JPY as JP¥ under en-GB
80c99888322c567f46b32651fe074e3d1f222b44 REV-8241: RevKeen Framer plugin editor app (v1, Lane A) — WIP for devbox validation
c74097e174783dec0c853877ad375925c1cf6118 REV-8241: lockfile for the Framer plugin dev dependencies
3285be536a5ecf6bdb96a23051b2248f377f6917 REV-8241: plugin creates payment links by product_ids; local-Engine dev path
043a2f805875da35e9ebfbab30d79fc8d1d94687 REV-8241: run the plugin's vite scripts from framer-plugin/ (vite-plugin-framer copies framer.json relative to cwd)
40fc2873a9f8dc8a1513f6e65d34d356f3991446 REV-8241: use @framer/plugin (framer-plugin is deprecated)
cf662191e2cbf81ef91f1edf3cf84e0bbb7305b4 REV-8267: collect the invoice's amount due on DD renewals (tax-inclusive)
86590d0a7ce831618859ed063a170126f6ed1c41 REV-8268: collect usage invoices on the subscription's rail, and re-drive DD ones
42c63719b712754315b4e2bb5b629935418ffd3a REV-8269: stop Direct Debit collection on an immediate cancel / pause or a void
f11602b091dacc7d2f59d90e1a085d779aeef948 REV-8270: end Direct Debit dunning on a renewal (past_due -> unpaid / canceled)
2385f8e65b076650ab707f021c6ada3174d8d834 REV-8270: read the DD renewal window length under the runtime scope
27496a945bb50e32e0e4b89e92965c0916c175e7 REV-8271: refuse Inbox "Retry now" on Direct Debit and show the next scheduled retry
a21afeede5e41d25583ee8d7f45d758de550efd1 REV-8272: never refund a Direct Debit payment through the card gateway
9f47d67180a76e08ff545630fa3be93279577801 REV-8273: bill a plan change on the next renewal invoice, on card and Direct Debit
9638444f5e11dec7fd4168d1335b665df686353c REV-8274: let a cart checkout pay by Direct Debit like a payment-link checkout
2c3a650302f509c216c492a949d010fb847aab33 REV-8275: hide Direct Debit before the mandate for purchases confirm cannot plan; carry tiered quantity
ddc8eaf00a6c96977052e395a768a9c9440c7885 REV-8276: let a Direct Debit customer switch to card from the next renewal
6bb6ae1e0d189ac3ee9feb03139b37312180f741 REV-8276: use the drizzle 1.0 query form in the portal DD-to-card switch
327825dbe3ea8a59d9fca528666e008432b0b9a2 REV-8277: add the from-api Direct Debit page to the docs nav contract
3fd3a1956543a972bf1f82850241c72442c2f85f REV-8277: create a Direct Debit subscription through v2 against an existing mandate
45a11c4336edb0b9ef5597b4657e5756fefedcea REV-8277: update known-gap assertions after REV-8406
ba08df8d32e37f7074a94c538afe67849548dd05 REV-8285: apply L&Z collections by amount — partially_paid on shortfall, never revive void/uncollectible
aa580845bb48d09fae29b4a71681269b978614bf REV-8286: scope DD-to-card recovery conversion to merchant and bind invoice to checkout session
f44439bd9b7035509c54e890aed2b7b1db8993de REV-8287: require the payment/refund PDP decision on dashboard refund routes
3edeb505302414ee86b2c4a9204cbea8977dc220 REV-8309: never charge or re-open a non-chargeable renewal invoice (card + DD parity)
20278865611c50592899159066913f8239b8d9e8 REV-8319: the applier probe no longer commits a table other tests can see
5cfae0fbda12ef5f4c3570a68d935514745712ed REV-8342: account status reads the platform subscription
28ff175d3563f0b15c98dfa253766bcb75eb5733 REV-8342: comment mirrors and internal wiki describe the platform subscription
48cfb45db6182d7684738ffeba2bc7584bacb07e REV-8342: onboarding queue reads the platform subscription, not subscription_started_at
b4d927a35cf28b90b2c96bb0917d07985f6b5183 REV-8342: ops loaders reuse their system handle for the platform-subscription fact
05021c258d9631d999c738bd9260b9fad171de47 REV-8342: step model and onboarding full-state read the platform subscription
de0ab41496473105f1365ea4026695598a798861 REV-8342: subscription facts for the write gate, go-live blocker and billing periods (part 2)
1f525af23cef7efab0e86079c342c87a9c925873 REV-8343: never void a Direct Debit payment through the card gateway
eaa04ec66521293f1f1452ea060fbca3138dea49 REV-8371: drop permissive runtime policies on DLQ and catalogue tables
0e632cb9fca024493c45ce7955a1028f88391148 REV-8383: deliver WhatsApp, SMS and every email type over the SQS lane
d9f3998b90be2b7a58510b71cd8cf73b9321268b REV-8383: mirror the branch's schema changes in db-codefirst
349b26d2c4d31a52cf8deecc212acd656cd40dbd REV-8383: shared wiring across the delivery slices
8e0709ec9d268af00ed29bd43c9f0d4d7ad74098 REV-8385: withdraw pg-boss — roll back the pgboss schema and roles
078992d43951df22cb17d1824c6ca7fae0d199ef REV-8385: withdraw pg-boss — roll back the pgboss schema and roles
a7bfc165315af2c058c47125c2cecb55913ee35d REV-8386: enforce signature verification on inbound provider webhooks
50501ea8f9bc5fb95a4fbee6250ec32cda594a98 REV-8387/8388/8392: SQS producer, outbox relay and delivery docs
2171b84316204ca871bb087c6533702466ccb598 REV-8402/REV-8473: record the payment-links scope lane; gate app install/uninstall
764759b6b11fb8c8efcf4f7bc848981488aa6553 REV-8406: refuse a £0 renewal charge; renew a free plan with a paid £0 invoice
23ceb7baa4ad27ed2f2862d40e2744035f22b72c REV-8415: re-drive DD first collections parked on advance notice against an existing mandate
b4c3ff5f4abc6e2d54e5b9358ecfa0db02897491 REV-8437: re-prove the payer at Direct Debit confirm; OTP limits across sessions
784a5309c3342aa2dd25eba7e3366f757ad6e002 REV-8438: show the masked mandate before Direct Debit confirm; refuse a changed one
fba5099e5b476d078ef103ed7ae450f35a1ef59c REV-8464: AUTH4 provisioner logs in as revkeen_provisioner_iam, not the RDS master
91326cb9f9ae4e06f82e655dea40a897a066ed46 REV-8464: accept the runner's schema_migrations grant in the fingerprint comparison
28f8cc69b3750399a41e3c5b5f9cc379b09ce144 REV-8464: auth4 --probe checks the provisioner's database login and writes nothing
0431d1959bb0a2606ccc71091cad75b9072f2f34 REV-8464: fix the provisioner test harness and the code-first round trip
4d60a4de2de9037e2582717b583e3f0b59bb1ef1 REV-8464: nightly migration drift check reads the ledger without the RDS master
8df7982749c915a0fb43b25727d75fa4b2830105 REV-8464: no GitHub OIDC role can read an RDS master secret any more
0e6281273ee81a043d492aea9c951a10726b4f07 REV-8469: a checkout bind fills blanks on an existing customer, never overwrites
2e93a9e270ff9b32ed0237a3599ef71cf5ea418a REV-8475: invoice-page Direct Debit confirm enforces the mandate the payer was shown
4416290f5b5c88e6efdd01455e419127134e6f9e REV-8476/REV-8501: email owners on API key mint, rotate and staff revoke; declare 403/503
65ceea2641554b207ba2ed6f84a1c39724134c77 REV-8476/REV-8501: regenerate contracts for the declared 403/503 bodies
7e4d89bdeeb3764b0d1832538dc8ebaae3efe3d2 REV-8476: read API key owner-notice recipients under revkeen_runtime
ebec583dba699a56e654b38b1fa35284677814e5 REV-8515: fail the Cerbos pin check when a pin drifts from the source manifest
efad33a16125933aacefa8793dafaf178c88bd6c REV-8516 (prerequisite): DD mandate notifications and usage test-account lookup on the system client
6349d2a8c130f8a4106bfa28293cdaa32523f2e1 REV-8516: inject the system client in the UBB money-loop integration test
8677582372ab9314f19da51e31dfe4b73c806296 REV-8516: inject the system client in the platform-fee readiness test too
ab25784897aba742bbe3fc48c8afb4ad5d056d2c REV-8516: limit the merchants lookup policy to the app_service role itself
6844340e6c56e981220b4dd10fdce22dfe81e696 REV-8518: drop revkeen_runtime USING (true) policies on the four identity tables
138bfc57e10d77c45d22e439710f15ed5db860ef REV-8518: read auth_identities on the system connection in the cart key mint
00eb4b30de62b8fa3cedf9f18068e12645b2a0c8 REV-8519: let revkeen_runtime write event_subscriptions for its own merchant
d874a5aceb3dad91098150779571cbd70851b867 REV-8528, REV-8532: dunning charges only the amount still owed and never overwrites paid amounts; the dunning exit moves behind a service-layer method
dae3ea1fba3668404f589d5ff9c46d92d3650a0c REV-8532: integration — type the exitDunningInTx mock's parameters so the dashboard typecheck compiles the test
81347ffe95619945b429bef32116e65a1d5a1503 REV-8533, REV-8534: DD first collections search forward for a notice-compliant date; re-check under lock before submission; re-drive submit_guard with a cap and a parked alert
70836de821d35b5078292e4b4ea62ac8fe2e8d6c REV-8534, REV-8536: tidy-ups — correct the parked-alert claim comment; pin dd_collection_awaiting_amount as inbox_work
f6e30b68e1f96dd1030ff84e2a52924fc75ac4b7 REV-8535: emit billing.invoice.paid only from the write that made the invoice paid
abf72e3736f89cce0c9512674c2e8625b1c38aac REV-8536, REV-8534: integration — renumber both migrations after everything on development
f02be8b206e95add22cf593c53ffb2cd1dc29443 REV-8536: integration — move the last_checked_at migration past the test baseline and add its code-first column
0fbafba9e6192beba6afbe45c3a5b50a82d257ac REV-8536: re-drive L&Z collections waiting on an amount, with strict parsing, alerts and fair ordering
bb635732721cb6e75f35762935ce2c1671dbe0c3 REV-8539: dedupe the webhook outbox on (merchant, event type, key) — distinct keys per occurrence; replays return the existing row
490b1f0bbaa5a286571cb95f6ecd7760b42703e0 REV-8548: pair fulfilment and checkout rows by cart line, not product
b26112d8126b48418652eed9cd147989e198c777 REV-8559 (stream A r3): buy-button element and manage-subscription link
683fa473f917f286caa1d610928fce079c2bc82f REV-8559 (stream A) round 2: decisions B1-B5 and review criteria C1-C12
f48b996c5c38c83b643fe300a7d8fd9f8b5fa4ea REV-8559 (stream A): builder elements in @revkeen/react
520967498ae3a092e8e7d7a3e1f358e7d1229bd3 REV-8559 (stream B): Framer modules share the element reader; add Live price, Pricing table and Thank-you modules
287d05584abb4aa4f58ce3eddadc77778b91de74 fix(checkout): let a payer switch email from any OTP state (REV-8494)
d1efff9cdaaf3b9720f0f3263beb1a67c94e0a11 fix(checkout): read the intent flag from context; drop the column comment (REV-8542)
3c8aa6b05fa9cf7c9ff31943efdf5958701a2b10 fix(checkout): require the delivery address on every rail (REV-8542)
58c481a88568fef421f055c12538870fea7c7145 fix(checkout): save the delivery address checkout collects (REV-8542)
00ad830783911433e17bfa251f81cf357d5894ca fix(checkout): suppress the warm-up cron's two Class A env reads
5c141f1fd5355ead7c79dd78204a261a99375385 fix(ci): exempt the durable audit action names in the generated test schema baseline
30c1b6c7482276b513d31e169a105fbc150a0674 fix(ci): let the pin drift test accept a declared lag (REV-8515)
fc4ebf2b12202975520aa9fbbdf116e93ce497bf fix(ci): raise git ls-files buffer in permit-exit preflight (ENOBUFS)
ddb1a963880cece8deb13c6bbe23ad9e70e913e9 fix(ci): rebuild images on dependency-only changes; resolve the newest engine-api build by date
ffb866bcfd219353f497aecd473f3e1362bc8334 fix(ci): regenerate .gitleaks.toml and prune suppressions made stale by #4345
f401ab7cd98e103a233df1afd47d3478bff78518 fix(comms): answer 200 for SMS statuses with no usage-tracked dispatch
f030f9f4ef3dfaf8f985a6394383d474ab16174c fix(contracts): drop the removed cli init command from the public surface snapshot
8736073525b7e65a459218cd82d109f7c02efe89 fix(contracts): regenerate the public surface after removing revkeen init (REV-8408)
f057a9a3b52e1ff3d67648ace70f9cba446d445b fix(conversations): Backoffice Inbox fixes from the REV-7592 sweep
0b45d8165d14d067225f861196622c4365b8ba72 fix(dashboard): regenerate the builders prompt pack; mock the collections tRPC calls in the product form tests
7a19c5e9b51c421b39ceaced15e1e129d8df887f fix(dashboard): type the product-collections BFF without casts (REV-8507)
b174c516823e9c470945af9982fcbe27f6891b68 fix(db): close PUBLIC access to cross-tenant definer functions and the performance MV (REV-8453)
f7e06f23f226da9f7774664091bfc1159ad6a2f4 fix(db): declare the product_collections RLS policies in Drizzle (fix development)
ceffe095dc7c4bf1f077213963e68078ed7376e2 fix(db): drop app_service USING (true) policies on idempotency_records and plain_webhook_events (REV-8374 step 3)
cb07844f0079981ad43efa271f0408d0f00a6f96 fix(db): drop app_service and revkeen_runtime USING (true) policies on five system tables (REV-8374 step 1)
7720f49e6adf4458d92de2c7e3361d289ca31c73 fix(db): fail the REV-8453 migration if any grant survives; replay it after the harness blanket grant
ff1878e6cafeb13f401db406756e4ff16b4308b0 fix(db): let the migration session helpers take a plain env object
470207fa64e0d86c50b530c5f408e91235eb4de1 fix(db): move Plain webhook + workflow dedupe off the runtime client's raw handle (REV-8374)
4df06c06eccfa53995fe11f8d394287c13ecd78c fix(db): move repair migration off a timestamp #4153 already uses
637b1b4a182b6c0d222f6787d4fedd69aa35f4a9 fix(db): repair three column changes missing from staging's schema
69c1e1fe866d1f5e011258a9edec905053d4deab fix(db): scope Better Auth member/organization/invitation runtime RLS to the merchant (REV-7628)
08aec2a612b43767679788505f9c0d06fd8fd952 fix(db): scope apikey runtime RLS to the owning merchant (REV-8499)
cc525eaec5a851b014bc37ac96ae881c35d73a9a fix(db-codefirst): declare the REV-8536 dd_collections.last_checked_at comment
764f1229554bf600ab481ea54165f49cc247725a fix(db-codefirst): mirror #4162's repair of the March column changes
d6bc0101e931c5c1526fc032157cda96ab59a654 fix(db-codefirst): record the REV-8453 function ACLs in the expected fingerprint
40e27e1d5bf37518420d3d7e65b734e84ebe7b23 fix(db-codefirst): scope fingerprint pg_depend lookups by catalogue (REV-8320)
b6ce7934f4d746534d25d5bbb7439e075c643741 fix(dd): mandate activation and stale sweep matched zero rows on sub-ms updated_at
d18283234064f44bd9938d93ed33ec1414c8dff2 fix(deps): patch the vulnerable brace-expansion, fast-uri and ip-address copies
b573188307555ed52e589c14c1307179d2879aec fix(engine-api): close Better Auth api-key plugin HTTP routes (REV-8481)
be39c78f5b9cf839ba0d5a1fc82c774afa2323b9 fix(engine-api): gate Cart key mint on app install behind api_key:create (REV-8454)
27e2a9983bcd7eea3f7854ffee88f4218945230d fix(engine-api): log merchant and origin on slug-only /public/embed calls
ebc5d42e88be8b7e4a0aba96f07623e6ff8a16a2 fix(engine-api): map POST /v2/payment-links body to the service input (REV-8401)
1f1b3be4286d26d54dfe61d76068b8f3baf5dd32 fix(engine-api): pass key identity into the ops authorization request (REV-8498)
6f9c83e9429def7e3d5eea51acf16d7711a5167d fix(engine-api): re-land PDP gate on /v2/cart-api-keys ensure and rotate (REV-8228 step 5)
9db418d245c6bf91972bcf2f9b7de202c745aa9f fix(engine-api): require payment_links:write on expire/status/activate/archive (REV-8400)
5ade6bf8a7d7f981401c02bd3e4e98fb5b9972bd fix(engine-api): write API-key audit before the mint; make revoke idempotent (REV-8455, REV-8500)
b3b36a7925ea8231e04090908a33b678feb2ab64 fix(infra): notification-service calls engine-api via the internal ALB (REV-8383)
3abfd706a16784bb01795369e98abbf64377ab36 fix(infra): valid tag on the notification-service deploy role, and gate it
d5acab5ab527c916ae4a517290b26cd9f1cf35e9 fix(marketing): keep the builder ban-list regex from tripping the rule-21 scanner
b0d6827029e29c512a0547c6a11745275244c3d0 fix(metabase): author card queries in MBQL 5 so production applies stop failing
93360678fb17e9027792145f2bed61c754b6c829 fix(migrations): move rev8453 off the 20260928090000 timestamp it shares with rev8385
5392449a80ef4f01e57cda0e06cf688e24b5a10b fix(migrations): restore rev8453 to the name staging applied it under
beccaffc5d8a9d8f34d8552104e38ce631899286 test(billing): add pricingModel/unitAmount to ResolvedPriceTiers fixtures (REV-8406)
799ae0dd99a9ee1345cd819ce8978e25b4ccb8aa test(checkout): /process end to end with a required delivery address (REV-8542)
3be2fe83d93399e0b6e60ef263e992477eb4cfc3 test(checkout): a link-less cart sent with a payment link is refused; cart currency pinned at charge (REV-8548)
89a5830de0655e7c588c3943510c2c87ece5c4a7 test(checkout): reproduce a pure-Embed cart refused before any charge (REV-8548)
c69b93cfae5573ec47a8dcf2d84bf9e840d7fd93 test(comms): track the split SMS dispatch guard in the source-contract test
44613b8bb986238becf5c490b8bf1b1f739449b7 test(db): pin runtime-client .system() sites the alias rule cannot see (REV-8374)
7aff0a0ea2af575521888d90812a01671bed3772 test(db): replay the REV-8453 migration after the schema-test harness blanket grant
73df000d0fc28019f6d51e28a0b893ceadd69837 test(db): treat the REV-8319 applier probe as a transient table
1f597647e7c995585bacde45ea47413006852deb test(e2e): alias @revkeen/contracts/storefront in the inbox harness bundles
d8b428a780da9ab8e2f5a6dfb78c0be37b51110d test(e2e): expect en-GB dates and the Today section (REV-7616, REV-8477 follow-up)
f9a9d16c1b7bcb57486840254ad8b3a2632d6df0 test(engine-api): add products.tags to three hand-maintained test stand-ins (fix development)
ba67c32f8a9a9e1cd065c4f9786439849c93bdd7 test(engine-api): add the REV-8560 Storefront key mint to the API-key audit inventory
ce38dfe024c806c6f835fc2d3bd9ff1f38ea2c5c test(engine-api): align app-install permission test with REV-8455 audit mocks
238c3b1757396e01c449652993281745a1ae5aa7 test(engine-api): align storefront and embed tests with the REV-8507 projection
65217b247ea663c4445b3ea26ea589212ce53409 test(engine-api): cover the per-product collection routes (REV-8507)
8dfada9b98ac7c54a0ce7bf5e8f61a5ae3b24c2c test(engine-api): follow-up stays a distinct, now bounded, datetime field (REV-7618)
fef8691d10576b7a01410b8ac01f2781c9525b78 test(engine-api): inject the system DB in the ops merchant-list DB tests
6dce0ce3bfea6dcd62058ce349a7aca1de8fb10e test(integration): inject the system client for the usage test-account lookup (REV-8516)
45e605b528e0008c813cebe8dd0754a9cc7b5991 test(notifications): set Twilio env via vi.stubEnv in dispatch hand-off test
ee432eb0a380abf648772397de9a10791517e3f3 test(notifications): use a valid-plan UK number in the sender test
bb0896036ad671a93b2b8b57f245898b82996afb test(react): rename the Framer secret-key fixture and baseline the one historical gitleaks finding (REV-8559)
d0c144a176b93907b90daaaa41dcfe97cea17813 test(routing): stub the routing secret in the timestamp-param test