Repository navigation
PAY-003A12: validate Checkout Session creation time - #589
Conversation
✅ Deploy Preview for luminous-fox-7c393f ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
SELF-REVIEW GO on exact head I reviewed every changed hunk after the full local gates. No authorization, App Check, input-bound, PII/secret, logging, idempotency, replay, impossible-state, migration, or production-fallback issue remains. Runtime scope is one non-coercing Checkout-only admission predicate after existing outer-time admission and before target work. Tests prove fixed target-free review, valid outer ledger time, null targets, exact reads/timestamps, fixed logs, replay, valid missing-target retry, four lifecycle/two-domain hostile shapes, positive boundaries/outcomes, and non-Checkout/chronology exclusions. Documentation is source-only and does not imply provider or live truth. Independent security/runtime, tests/compatibility, and design/backup-officer reviews also returned GO. Hosted CI and preview checks remain pending; merge is stopped until exact-head checks finish. |
|
EXACT-HEAD HOSTED REVIEW GO. CI run 30727364335 is bound to reviewed head Exact base remains |
|
FINAL MERGE / EXACT-MAIN REVIEW GO. Reviewed head Officer impact: None — server-only admission. Officer documentation: None — no officer procedure changed. Issue #588 is closed, coordination labels/assignee are cleared, remote branch is absent, and the claim is released. Session/Event chronology remains future PAY-003A13 scope. |
Outcome
Newly delivered supported Checkout Events now reject unusable embedded Checkout Session
createdevidence before any target, fallback, provider-binding, money, or business-state work.Closes #588
Parent tracker: #106
Exact review identity
51723b487ec67bb74620c97e47449ae1319f0daa0645e3977e87797c5b69848339801d42e75b5426dd970cd2994ffeafa52b603ea3094ca8224552cffa3d8148d33ef8fb5dbd43efb772055c4c43a732d3b77ad72a5b36064adedfc0Invariant and failure behavior
After exact processed-Event replay and the existing realm, lifecycle, metadata, and outer Event-time checks, embedded Session
createdmust be a primitive safe integer from Unix epoch second0through Firestore maximum second253402300799, inclusive.Invalid evidence produces fixed durable
needs_review:invalid_checkout_session_createdwith:stripeCreatedAt;Valid claimed missing targets remain retryable. Exact replay remains read-only. Session/Event chronology is deliberately unchanged and reserved for PAY-003A13.
Changes
functions/stripeWebhook.js: one Checkout-only admission predicate and fixed reason.functions/stripeWebhook.test.js: valid provider-shaped Session fixture time, one named adversarial PAY-003A12 matrix/helpers, and the single inherited PAY-003A9 compatibility correction.STRIPE_COMMERCE_DESIGN.md: one PAY-003A12 SOURCE ONLY / NOT LIVE contract.No schema, Rule, index, package, workflow, API, migration, backfill, history-repair, or provider-configuration change.
Trustworthy RED
On the exact base, the test-only PAY-003A12 registration/order matrix failed 2/2 because missing Session time reached
payment_confirmedand changed both targets instead of creating target-free review.Test-only diff SHA-256:
d3d31782b39377a7f247cdae98817f3767dcda0cdbf3c1c5777d8e441f066bdf.Verification
Node 20 and Java 21; Firebase commands used demo projects and emulators only.
Three independent exact-diff reviews returned GO: security/runtime, tests/compatibility, and design/backup-officer continuity.
Self-review
Officer continuity
Officer impact: None — server-only pre-target admission. No officer screen, task, field, permission, topology, approval path, or available recovery step changes.
Officer documentation: None — current officer procedures remain factual. The engineering boundary is documented in
STRIPE_COMMERCE_DESIGN.md.Deployment evidence
runmprc.comverified: no.Source and synthetic tests prove none of the unverified deployment/provider/live states.