1 / 12
BUILT FOR REDDIT · GAMES WITH A HOOK

REDACTED

A daily mystery no single reader can solve alone.

Your dossier is censored differently from everyone else's. The comment thread is how the crowd un-redacts the truth.

Solo dev · zero runtime AI · 269 tests green

The Problem

Daily puzzle games on Reddit fear their own comment section.

  • One spoiler ruins the day → comments are treated as a hazard to be hidden.
  • Every player gets the identical puzzle → no visitor is ever needed; everyone is interchangeable.
  • Nothing on the platform makes a new reader structurally valuable to the crowd.
The Solution

REDACTED deals every viewer a different censored dossier.

  • Your handful of unredacted lines are shards the crowd doesn't have.
  • The case cannot be solved alone → the comment thread becomes the evidence board.
  • Spoilers are structurally impossible — nobody holds the whole truth.
  • Comment-reading becomes the core skill, not a hazard.
  • Every new reader — including every judge — adds information to the system.
The Magic Moment — Live Demo

One tap, and a cold stranger cracks the case the whole board was arguing about.

Seeded Case #17 · The Larchmont Fire — the 30-second judge path

twhat happens
0–5sCASE #17 · DAY 3 · 61% UNREDACTED. The board is screaming that Moran the watchman did it.
5–12sYour black bar pulses → tap → it peels to your line: "the pawn ticket was dated the 14th — two days AFTER the fire."
12–20sThe board: ~30 filed cards, a red-string contradiction already lit.
20–24sFILE MY EVIDENCE → METER 61 → 63%, YOUR LINE STRUCK DALE MORAN, RED STRING LIT.
24–30sACCUSE: the watchman's bar is struck through. Only the drifter is left standing.
Architecture & Tech Stack

All native Devvit. DOM-only client, pure server core, truth split at compile time.

LayerTech
ClientReact 19, DOM/CSS only — no canvas, no engine, flawless on phones
ServerHono over the Devvit runtime; thin route adapters
Enginesrc/server/core/* — pure, no platform imports: dealer, deduction, drip, verdict, meter
StateRedis — hashes + zsets + watch/multi/exec; no plain lists/sets
Contentoffline case-compiler: YAML → sealed bundle + solvability linter
I1 deterministic deal I2 truth never serialized I3 pivot drain I4 one accusation / tx
Why This Can Only Be Reddit

The evidence board is a view over a threaded, identity-bearing comment section physically attached to the game state.

  • asUser SUBMIT_COMMENT — your evidence card posts under your username.
  • onCommentCreate trigger reconciles thread ↔ board.
  • Server-held truth + scheduler lifecycle (case-drop / drip / verdict crons).
  • Flair ladder (Beat Cop → Detective → Inspector), stickied verdict comments.

Remove Reddit and there is no port target — the thread is the game.

The Anti-Slop Moat

Our content pipeline is a linter, not a language model.

  • Zero AI-generated content anywhere. All 3 launch cases are handcrafted.
  • Every non-culprit eliminable by ≥2 shard-disjoint combinations.
  • A Monte-Carlo of 1,000 random 60% deals — all reach the truth.
  • Run with the same deduction engine as the runtime — play and lint can never diverge.
  • Not trivia. Not collaborative storytelling — one authored ground truth, a win/lose verdict.
The Population-Elasticity Valve

How a lone judge — or a 30-member sub — still works.

  • Reserved pivots: every first-seen account is dealt a board-absent shard.
  • Reserve-aware demo seed: Case #17 leaves the crowd-favorite standing on purpose — proven at build time (lint level LD).
  • Hourly drip: after hour 12 the highest-information unfiled shard is released publicly.
  • Cold Case Archive: closed cases replay solo against their solve timeline — no liveness dependency.
Traction & Validation — Real Numbers
MetricValue
Unit tests, all green269 (vitest, real-surface Redis stub)
Launch cases, each Monte-Carlo3 × 1000/1000 deals reach truth
Runtime AI / external calls0 (http.enable: false)
Enforced invariants (unit-tested)I1–I4 + I2 truth-non-serialization (9 tests)
Sealed bundle size vs 200KB cap16.3 / 13.3 / 13.7 KB
Type-check / buildtsc --noEmit clean · vite → dist/
CI gates on Node 20type-check → vitest → lint:cases → build
VERIFIED
Competitive Advantage

The only top-ranked mechanic with zero overlap across a 205-idea corpus.

  • Novelty: per-viewer deterministic censorship — a mechanic judges haven't seen this year.
  • Polish for free: DOM-only → flawless mobile, no physics/canvas risk.
  • Spoiler-proof by construction — the one thing every daily-puzzle sub fears, made impossible.
  • The traffic spike helps us — most games degrade under load; ours improves.
Roadmap — Honest

30 / 60 / 90 days — and what is deliberately not built yet.

  • Now (shipped): 3 linted cases, the full loop, citation economy, drip valve, Cold Case Archive, reserve-aware demo seed.
  • 30 days: daily case cadence; 11 more handcrafted cases; splash meter snapshot.
  • 60 days: Case Forge — community-authored cases through the same linter. Today this is a stub — called out honestly.
  • 90 days: seasons, signed verdict posts, dossier themes.
The Ask

Open the post.
Peel line three.
The precinct needs you.

One tap on the live demo post is the pitch — no install, no account, no video required.

Solo dev Zero AI 269 tests 3 cases × 1000/1000

r/the_redacted_game_dev · github.com/edycutjong/redacted-game