A nightly sealed social dilemma on Reddit — the crowd is the game board.
Close the loop the instant you play. Instant feedback → nothing to come back for. The hook dies at first tap.
A thousand people playing alone in the same post. The crowd is scenery, never the stakes.
A lone judge, mid-cycle, on a phone — no wait for midnight. The webview leads with the reveal, not a form.
| Time | Beat |
|---|---|
| 0:00–0:06 | Post opens straight into an animated Reckoning — bars sweep in, verdict punches: "58.0% hoarded. The pot burned." · 400 souls · pot 9,940 · a Serpent wearing a name. |
| 0:07–0:10 | A TONIGHT divider, then the same mechanic open right now: THE BLACKOUT POT, live ticker, two sealed buttons. |
| 0:10–0:20 | The judge taps FEED/HOARD, drags a stake, taps SEAL → SEALED · REVEAL IN 05:59:xx, ticker ticks to 1 soul sealed. |
| 0:20–0:28 | The retention hook lands unaided: "I can't find out what happens to my envelope without coming back." |
| Layer | Technology | The hard part |
|---|---|---|
| Client | Framework-free TS webview | reveal choreography; never learns the split |
| Server | Hono on @devvit/web | /api/round · /commit · /history · /forge · /ladders |
| State | Devvit Redis — hashes + zsets | no plain lists/sets (no key-scan) |
| Settle | watch/multi/exec | pure fn of (commits, params) → byte-identical reruns |
| Clock | Devvit scheduler crons | 00:00 settle · 00:05 open · Mon 01:00 ceremony |
| Ceremony | Reddit flair + stickied comment | wearable consequences in-community |
Invariants: I1 the split is unobservable pre-settle · I2 one commit per account (HSETNX) · I3 settle is idempotent. Zero runtime AI. Zero external APIs. Empty fetch allowlist.
One thumb, one choice, a sealed envelope and a countdown. First-visit completion under 15 seconds.
No physics/content pipeline to get wrong — the whole budget is micro-interactions + the reveal. 222 tests, benched.
The game board is the community's collective psychology; the comment section becomes propaganda, then accusations.
Structural unfinished business every 24h — you cannot close the loop without coming back.
Public Pot, Stag Hunt, Chicken, Lowest-Unique-Bid, Exact-N Heist — parameterized structures, not written content. A new dilemma every night forever, zero AI.
Parameter sliders + a filtered 140-char flavor line → mod approval → rotation, author credited on the post.
Each sub runs its own siloed season — emergent cross-community lore ("r/aww fed the pot 12 nights straight").
Real rounds run nightly; tuning notes appended to the README in public.
| Devvit surface used | Off-Reddit you'd need |
|---|---|
| Server-only Redis hashes for sealed commits | a backend + DB + auth — and the trust problem of proving you can't peek |
| watch/multi/exec settle | a job queue with exactly-once semantics |
| Scheduler cron as the game clock | a cron + retry/alerting service |
| Reddit daily post + stickied Reckoning | a bot account + OAuth + posting infra |
| User flair as consequence | nothing comparable exists off-platform |
| A resident crowd with a shared nightly rhythm | an audience you don't have |
Scale-free payoffs (percent-thresholds) mean an 8-person judging room feels the same tension as a 10k subreddit — the empty-room risk is neutralized by design.
Front-load the subreddit ban/unban round-trip; publish the-commons; run real nightly rounds so the live feed shows genuine Reckonings by judging.
Ship the two server-complete screens as UI — the Forge sheet and the Ladders sheet — plus the commit-side envelope/wax-seal micro-animation.
Faction weeks, cross-round heist arcs, lowest-unique auctions on season points, and (deferred) Devvit payments for cosmetic season passes — never pay-to-win.
One developer, ~three focused days on the engine + server + client, plus nightly live-ops through judging. Verified APIs only, a public friction log of what broke and why, and a submission-readiness gate that greps its own compliance rules.
developers.reddit.com/apps/the-commons · r/the_commons_game_dev · public repo · ≤60s video