Repository navigation
PROMO-001 — Disable unmodeled Stripe price adjustments #102
Description
Problem
Race and merchandise Checkout enabled Dashboard promotion codes while local records stored list price only. A discounted, taxed, or shipping-adjusted Stripe total could therefore disagree with local payment, refund, and reporting state.
Outcome
Disable promotion entry and quarantine every unknown or nonzero discount, tax, or shipping charge until server-approved monetary snapshots and policy exist.
Status
Source merged through #144 as 2e3228acc7be649e0b154b450f7bac362e8dfb83; exact pull-request and post-merge CI passed. Firebase deployment, Stripe/provider inventory and readback, and production behavior remain unproven. This issue is blocked on the named owner/external evidence below and must remain open.
Scope
functions/createCheckoutSession.jsfunctions/createMerchCheckout.js- Promotion/tax/shipping validation hunks and focused tests in the webhook files
- Additive
schemaVersion: "1"metadata on newly created Sessions/PaymentIntents; legacy metadata stays accepted and PAY-003B still owns allowlisting/migration - No future discount, tax, or shipping feature design
Acceptance criteria
- Both current Session creators set
allow_promotion_codes: falseand automatic tax explicit-off. - Unknown or nonzero discount, tax, or shipping amounts never mark a business record paid/fulfilled.
- Complete all-zero race and merchandise payments remain valid.
- Anomalies create durable review evidence; definitive failed/expired Sessions still cancel without erasing an earlier warning.
- Exact creator-payload and signed webhook tests pass under Node 20.
- A Stripe owner privately inventories outstanding pre-change Sessions/provider adjustment settings, and a reviewed three-Function protected plan deploys and verifies the exact merged source.
Dependencies
None for the merged fail-safe source default. Any future enablement depends on PAY-001, PAY-002, MERCH-002, and approved owner policy.
Remaining owner action
- Keep Session URLs, code values, provider identifiers, and customer data out of GitHub and AI.
- Record only redacted private counts, mode/date range, and approved disposition for pre-change Sessions/settings.
- Do not use production customers or payments for testing.
- Expand the protected release only through a separately reviewed immutable plan naming
createCheckoutSession,createMerchCheckout, andstripeWebhooktogether. - Record Firebase deployment/readback, Stripe-owner readback, and observed behavior separately.
Coordination
The source claim is released after merge 2e3228acc7be649e0b154b450f7bac362e8dfb83. A future owner/provider evidence update does not authorize unrelated source edits or production changes.
Activity
daliu commentedon Jul 12, 2026
CLAIMED by Codex agent /root at 2026-07-12T20:50:15Z; branch codex/issue-102-disable-stripe-adjustments.
Existing shared working-tree implementation predates issue publication. I will isolate this outcome onto the named branch serially before opening a PR; no unrelated dirty path is included.
daliu commentedon Jul 12, 2026
CLAIM RETAINED / EXTRACTION QUEUED at 2026-07-12T21:53:37.334Z. Assignment and the original timestamped CLAIMED marker remain authoritative. No issue-specific extraction has begun. Dependency: #101 must merge first; #102 then rebases onto it. In stripeWebhook.js, #102 exclusively owns reading discount/tax/shipping totals, adjustment-aware missing-subtotal refusal, nonzero-adjustment and total-breakdown guards, and adjustment evidence fields. In stripeWebhook.test.js it owns total_details fixtures, zero-adjustment assertions, discount quarantine, and tax/shipping quarantine tests. It also owns all dirty hunks in createCheckoutSession.js and createMerchCheckout.js. Creator-payload tests, a 100% discount fixture, and provider/outstanding-Session inventory evidence remain required before closure. Do not duplicate this outcome.
PAY-003A: harden Stripe webhook event processing (#140)
daliu commentedon Jul 13, 2026
EXTRACTION STARTED by /root at 2026-07-13T10:41:09Z; branch codex/issue-102-disable-stripe-adjustments-v2; exact base 87bd121.
#101 is merged, post-merge CI is green, and its shared webhook claim is released. This fresh isolated worktree owns only both Checkout creators, adjustment-policy webhook hunks/tests, new exact creator-payload tests, and minimum status documentation after any live doc claims are checked.
The original shared dirty checkout and old placeholder branch remain untouched. No real Stripe/Firebase call, outstanding Session inspection, secret, production data, provider setting, public asset, Rules file, package file, or sitemap is in scope. Provider/outstanding pre-change Session inventory remains an explicit owner/external evidence gate rather than being guessed from source.
daliu commentedon Jul 13, 2026
EXTRACTION FINISHED — 2026-07-13T11:03:59Z
codex/issue-102-disable-stripe-adjustments-v236b531c8e741442af7c688c23a780d2dcd4ed374f944aaffb1eff745b708ea53d1e15f71bc401d0e391778bcfb54df137a2e5cb1ff9959a91e153bd99558658c7166eb0757a589c9Source is reviewable. This does not prove merge, Firebase deployment, Stripe/provider configuration, website publication, or production behavior. Keep #102 open after source merge: the private pre-change Session/provider inventory and a separately reviewed three-Function protected release plan remain required. Do not paste Session URLs, promotion values, provider IDs, or customer data into this issue.
daliu commentedon Jul 13, 2026
SOURCE MERGED — 2026-07-13T11:06:13Z
f944aaffb1eff745b708ea53d1e15f71bc401d0emain:2e3228acc7be649e0b154b450f7bac362e8dfb83Deployment evidence: no protected release was requested. The current release plan cannot deploy these three Stripe Functions. Firebase was not deployed or read back. Stripe/provider settings and outstanding Sessions were not inventoried, changed, or verified. No website production publication or live payment behavior was verified.
The source-file claim is released. Status is now
status:blocked-owner; keep this issue open for the private redacted provider inventory and a separately reviewed exact-commit three-Function release.