Files
wownerogue/docs/PRODUCTION_DISCLOSURES.md
T

4.4 KiB

Production disclosures and paid-action gate

This implementation makes the running server describe its actual free, paid-prestige, payout, test-network, and PvP switches. It does not claim that the product is licensed or lawful in a particular place. Obtain jurisdiction-specific advice before accepting assets with real value.

Required production settings

Every production instance with PAYMENTS_ENABLED=true fails preflight/startup unless all of these are explicit and valid:

OPERATOR_NAME=Truthful responsible operator name
OPERATOR_CONTACT_URL=mailto:support@example.com
OPERATOR_CONTACT_LABEL=Support
LEGAL_POLICY_VERSION=2026-07-21-v1
TERMS_EFFECTIVE_DATE=2026-07-21
MINIMUM_AGE=18
PAID_ACKNOWLEDGEMENT_REQUIRED=true

Production match mode also requires explicit paid-fairness timing, even if only prestige credits are presently exposed:

MATCH_PAID_ENTROPY_DELAY_BLOCKS=2
MATCH_PAID_ENTROPY_CONFIRMATIONS=2

Both are bounded safe integers from 2 through 100. Paid PvP persists the actual delay, confirmation requirement, activation threshold, and post-commit daemon-tip witness in its public proof; changing these settings does not reinterpret an already-frozen match.

RESTRICTED_LOCATIONS_NOTICE is optional application copy. Add it only after legal review; text is not geofencing. Changing the terms or material disclosures requires a new LEGAL_POLICY_VERSION, which invalidates prior browser-session acknowledgements.

Enforcement contract

  • /api/disclosures returns non-secret, no-store policy data derived from runtime switches.
  • /terms, /privacy, and /responsible-play render the active mode and operator metadata.
  • Before a payment invoice, paid solo/credit entry, or paid PvP queue join, the browser requires unselected age/reading/risk boxes. Test networks require an additional mainnet/test-coin box.
  • Acceptance is a five-field canonical record (policy version plus four booleans), scoped to the current browser tab and policy version, and cleared on rejection or socket disconnect.
  • The server validates the exact current version and booleans before consuming a fairness offer, opening an invoice, consuming a credit, or escrowing a paid PvP entry. A modified client cannot bypass this check.
  • Free entry remains available without a paid acknowledgement where the instance offers it.

The acknowledgement is a player statement, not proof of identity, age, capacity, or location.

Mode language

Runtime mode Player-facing contract
Free No entry payment; free leaderboard; no free payout
Paid, payouts off Entry/credits/product purchase and paid prestige leaderboard; no crypto prize
Paid, solo payouts on Full entry can be lost; only pre-entry recorded outcomes/amounts qualify
Crypto PvP on Paid ticket escrow and configured winner/fee contract; separate from free/prestige PvP
XMR stagenet/testnet Valueless test currency; explicit warning never to send mainnet XMR

Unresolved launch decisions

Technical copy and checkboxes do not resolve these. Keep real-value modes gated until the responsible operator records decisions for:

  1. entity/operator identity, licences/registrations, permitted and excluded locations;
  2. age and location verification appropriate to those locations;
  3. consumer terms: refunds, late/under/overpayments, complaints, dispute venue, and downtime;
  4. privacy roles, processors, retention/deletion schedule, user-rights procedure, breach response, and whether a privacy-minimized durable acknowledgement record is legally required;
  5. responsible-play features such as account-level deposit/time/loss limits and durable self-exclusion;
  6. tax, sanctions/AML, accounting, and cryptocurrency reporting obligations;
  7. an independent review of game rules, advertised multipliers, house fee, bankroll, and provable-fair claims.

Stagenet can be used for end-to-end mechanics without representing test coins as money. Mainnet payouts remain a separate, explicit operational and legal decision.

Front-end dependency note

The same-origin jQuery copy is 3.7.1 from the Ubuntu libjs-jquery package; exact provenance and SHA-256 are in html/js/lib/jquery-3.7.1.PROVENANCE.md. The CSP still permits inline script/style because current pages depend on them. A nonce migration must move every inline handler/script before removing unsafe-inline; do not partially tighten it and strand payment/game controls.