Cambridge TCG has many small deadlines: offer responses (48 hours), trade shipments (48 hours), escrow inspections (7 days), return filings, payout confirmations. Each is a clock the platform runs against you. By default the platform assumes you can respond within 48 hours — a synchronous assumption that excludes a real population: travellers, slow-clock collectors, time-zone- shifted buyers, anyone whose cognitive cadence is days-to-weeks per response, not minutes-to-hours.
The response window is a per-user override on those clocks. Set it once on your account; every flow honors it. The platform's cron sweeps read your field, not a global constant.
Where this lives in code. The canonical column isusers.response_window_hours(migrationapps/storefront/drizzle/0092_response_window_hours.sql). Every sweep / lifecycle check that previously hardcoded48reads this column instead. See docs/connections/the-other-minds.md (the Asynchronous) for the design rationale.
Matches the platform's historical global default. If you don't change anything, all your deadlines behave exactly as they did before this field existed.
Slow-clock accounts typically set 168 (one week). A traveller who returns to cards once a month might set 720 (thirty days). The constraint is 1 ≤ response_window_hours ≤ 8760; the platform refuses values outside that range to prevent a deadline-of-never that would never reach a counterparty.
Every market interaction shows the responsible party's declared window at the boundary. If you're trading with a 168-hour user, the platform shows you the deadline they actually have, not the one you'd have if the roles were reversed. This is transparency in both directions: you know what to expect; they aren't forced to perform a clock that isn't theirs.
Cambridge TCG started with the implicit assumption that every party checks every few hours. That assumption silently excluded an entire population whose engagement is real but slow. The response_window_hours column is the platform's first infrastructure-level acknowledgement that synchrony is a preference, not a universal — and that designing for asynchronous beings is the same discipline as designing for time-zone-shifted humans, careful collectors, and anyone who deserves more than 48 hours to think.
The inclusion audit (pnpm audit:inclusion) checks that cron paths and lifecycle sweeps read this field rather than a hardcoded constant. When the audit's Asynchronous count drops to zero, the column is fully honored platform-wide.
When this page or the underlying formula changes, the version below changes too. Older versions remain accessible via git history.
v1 — 2026-05-11. Initial column landed; cron-path migration in progress (see docs/connections/the-other-minds.md).