SCAV MANAGER — STATE OF THE GAME

Complete snapshot as of Mon Oct 26, 2026 · Snapshot Schema v25 · 21 Live OpenSpec Capabilities (+ storytelling signed off)

Current Position M2.5 → M3 Bridge Electricity + Storytelling Ch. 1 signed off
OpenSpec Capabilities 21 Built / 2 Signed Off workshop-electricity · tutorial-ahead-dialogue
Playtest Feedback 46 / 47 Done 47-workshop-art, npc-stalls & stall-containers landed
Living World Scale 7 × 7 km · ~150 Cast 6 stall looks · 10 Workshop spots · Store CRT
Next Milestone M3 First Playable Slice Electricity + Storytelling Ch. 1 → Android APK + 1:1 clock

1. Master Milestone Roadmap & Dependency Chain

Order: P0 (retired) → M1 (done) → M0 (done) → M2 (built) → M2.5 (active: Electricity + Storytelling Ch. 1) → M3 → M4 (Go/No-Go) → M5 → M6 → M7 → M8
P0 Retired Oct 13
Local Browser Prototype Oct 8 – Oct 12, 2026
  • 11-scene local prototype (bar, ledger, route-runner)
  • Proved early feel, then deleted in e12e2e2 (+ _p0 tables removed Oct 18) in favour of server-authoritative spatial world
M1 Done Oct 15
Living World Skeleton Oct 12 – Oct 15, 2026
  • Deterministic sim (advance(), mulberry32 RNG)
  • Free-moving scavengers, A* pathfinding, 7×7 km map
  • Contention (fight/negotiate), wild encounters, bodies & salvage
  • SQLite WAL journal + pruned versioned snapshots
  • Rules 6–8 tuned & 7-day × 4-seed soak green
M0 Done Oct 22
Server, Webclient & k3s Oct 14 – Oct 22, 2026
  • Built: server/m1.ts + server/web.ts + src/main.ts watch-map
  • Built & Approved: k3s manifests, zero-downtime Git push deploy (server/supervisor.ts), deploy:image, verified on scav-app.byte.pm
  • Deferred note: off-site SQLite backup (no bucket for now)
M2 Built · Exit Check
Traders Join (Multiplayer) Oct 15 – Oct 22, 2026
  • Built: Anonymous accounts, rate limits, 6 town stall slots, loyalty, loyal opening regular
  • Built: Depleting POIs, SCOUT / SCAVENGE / FETCH orders, Key-Lock requirements (#30), Dead Scavenger Diaries (#35)
  • Built: First-person Play Shell, PDA Map, Fog, Radiation Clouds, GPS dot, Carousel Radio Index/Debrief, ~150 NPC Cast
M2.5 7/8 Landed · 2 Signed Off
Economy, Power & Storytelling Ch. 1 Oct 22 – Oct 26, 2026
  • 1–5. Core Economy (Done): item-quality, food, raw-materials, crafting, gear-trade, 47-workshop-art
  • 6. npc-stalls & stall-containers (Done Oct 25): Soup & Stitch + Rust Foundry niche workshops; Store CRT Terminal & 4 stacking container columns
  • 7. workshop-electricity (Signed Off Oct 26): Generator at Spot 0 (fetched at Old Depot) consumes Gasoline per work-second on plugged-in tables; Still distils Crude → Gasoline into Generator tank for Blackout recovery; Milling Machine at Train Wreck; fuelcan (crude + plastic) → Lamp
  • 8. tutorial-ahead-dialogue / storytelling Ch. 1 (Signed Off Oct 26): Loyal regular counter dialogue at AHEAD guides Chapter 1 (Old Depot → Generator → Farm Still & Carpentry → Gasoline) via LocationBits
M4 Go / No-Go Gate
Fun-Proof with Friends After M3
  • 3–10 friends on Android sharing one server
  • No new features — 2–3 tuning passes on numbers & pacing
  • Server event log analysis + short feedback form
  • Exit: Do rivals & lost scouts feel tense and fun?
M5 Planned
Depth of Core Loop Post Fun-Proof
  • Several regions + expanded geography (rope cliffs, Stealth open fields, locked rail yards)
  • Dynamic land: seasons, freezing water, rare zone events
  • Composite gear lock-and-key matrix
  • Automatic buy/sell orders (offline fairness)
  • Cross-trader diary recovery & more Crafting Stations
M6 Planned
Attention & Audience Later
  • Full customer queue at the counter (who to serve vs. automate)
  • Appeal system (RimWorld/DF style: furniture & stock shape which NPCs visit, replacing simple distance/loyalty rule)
  • Trust & Loadout Control: directly equip trusted regulars
M7 & M8 Planned
Public Radio & Platforms Long-Term
  • M7 Civilian Radio: public channel, rival triangulation, weather/terrain signal disruption, buildable long-range radio towers, WebSockets check
  • M8 Platforms: iOS (TestFlight/App Store), Steam Deck (Linux/Electron + gamepad), multi-world sharding if D3 triggers

2. Chronological Development Timeline (Oct 8 – Oct 24, 2026 & Forward)

How the codebase evolved from prototype to today's 21-capability living world
Oct 08 – 12
Vision, Roadmap & P0 Prototype: Tech stack chosen (TS + SQLite + Phaser/Capacitor). P0 local browser prototype built to test feel, then M1 moved ahead of M0 to prove the server-side living world first.
Oct 13 – 15
M1 Living World Completed: P0 deleted (e12e2e2). Deterministic event-queue sim (src/sim.ts), A* terrain navigation, autonomous scavengers, fights/negotiation, SQLite WAL journal + snapshot pruning, and M1 soak tuning (Rules 6–8, D1–D4) signed off.
Oct 15 – 16
M2 Server Core & 7×7 km Map: Anonymous accounts, rate limits, 6 trader stall slots, loyalty, depleting POIs (Rule 9), scout hiring (POST /mission), and private dated intel reports (POST /apply, GET /map). Map scaled to 7×7 km (6 km/h walk) with 46 organic terrain polygons and watch-map visual polish (items 00–19).
Oct 17 – 18
Bun Migration & M2 Screens: Runtime migrated from Node to Bun (ADR 0002). Agent-safe layout split (src/watch/*). Map Screen pan/zoom/cards, Areas vs. POIs, Mission Creator with missing-gear checks & skill pips, stamped Debrief trip logs, and NPC blinking avatars shipped.
Oct 19 – 20
First-Person Stall, NPC Cast & Video Gate: First-person Play Shell, worker-baked player ground, Fog-and-Reveal along walked paths, ~150 pre-authored NPC Cast + Cast Editor, Start Screen stall picker, FETCH missions, Unlock Machine Graph, A* 4-ary heap speedup, and Playwright e2e:boot video review gate.
Oct 21
Radiation Clouds, Split Radio & Navigation: Radiation moved exclusively into world Radiation Clouds (heavy 0.8 vs light 0.1; Geiger reveals Clouds rather than unlocking bits), GPS live dot over fog, Radio Screen split view (Index on top + Debrief below), LocationBits tap-to-map, RadioLED unread vs. amber unapplied marks, and thin amber Area outlines.
Oct 22
Diaries, Key-Lock Requirements, M0 Approval & M2.5 Kickoff: Dead Scavenger Diary FETCH (#35), Key-Lock per-object requirements (#30), Military Radio rename (#36), diagonal look arrows (#38), mobile map touch fix (#39), instant Index switching (#40), Build ID (#41), play.html Front Door, docs/crafting.html + docs/loot.html, M0 k3s deploy approved, and item-quality shipped.
Oct 23
M2.5 Supply Chain (Food, Raw Materials, Crafting Workshop) & UI Polish: Landed food (field biome, Shrooms/Crops/Meat/Canned Food), raw-materials (wood, herbs, salvage by biome/place), and crafting (6th look: Workshop hall LEFT of shelf, 8 fetchable Crafting Stations, 5-slot Queue + Loop, choreographies). Also shipped scrollable Index carousel (#42), loyal opening regular (`stall-loyal-regulars`), workshop noises rumour (#43), scout-attributed Map cards (#44), open-screen RadioLED auto-read (#45), and consolidated e2e-journeys.
Oct 24 – 25
M2.5 Gear Trade, Workshop Art, NPC Stalls & Store Containers: Landed gear-trade, 46-mission-route-knowledge, 47-workshop-art (pixel-art Workshop hall & 16×12 item sprites), npc-stalls (Soup & Stitch and Rust Foundry niche workshops), and stall-containers (integrated upper-wall Store CRT Terminal, Counter Ledger, and 4 stacking columns of live-capacity containers).
Oct 26 (Today)
Workshop Electricity & Storytelling (Chapter 1) Signed Off: Two OpenSpec changes signed off to complete the M2.5 → M3 bridge: workshop-electricity (Generator fetched at Old Depot, Gasoline distilled at Still exclusively into the Generator's tank, per-work-second electricity draw on plugged-in tables, Blackout pause & recovery, Milling Machine moved to Train Wreck, fuelcan takes crude + plastic for Lamp) and tutorial-ahead-dialogue (new storytelling capability: Chapter 1 counter dialogue at AHEAD where the loyal regular advises the next step using LocationBits).
Next Up
Land workshop-electricity + tutorial-ahead-dialogue → M3 First Playable Slice: Implement the Generator & Blackout recovery loop and Storytelling Chapter 1, then move to M3 — the slice on a real phone at 1:1 real time (speed/pause server-admin only), Capacitor APK + weak-phone perf spike, visitor patience, and local notifications.

3. What is Implemented Today (Live on main)

21 OpenSpec Capabilities + M1 Core

Living World & Determinism

M1 · src/sim/
  • Stepping-proof advance(): Mulberry32 seeded RNG; one large step equals many small steps.
  • 7 × 7 km Zone Map: Polygons for streets, rails + switches, woods + fringes, open fields, terraced hills, cliff rings, quarry pit, floodwater basins, and sea.
  • A* Navigation: 4-unit grid, personality routing (reckless cut through, cautious detour), Athletics climb/swim & waders modifiers.
  • Contention & Encounters: FCFS source contention + mid-road Observation vs. Stealth encounters and wildlife attacks.

Economy: Quality, Food, Loot & Workshop

M2.5 · Built 5/5
  • Item Quality (item-quality): 0–100 Quality on every unit (Hold of Units), gear wear by use, food spoilage over time, place-based found Quality, QualityCostFactor pricing.
  • Food & Raw Materials (food, loot-tables): Layered biome + place loot tables (Shrooms, Wild Crops, Meat, Canned Food, Wood, Herbs, 5 Scrap types; visualized in docs/loot.html).
  • The Workshop (crafting): 6th stall look (LEFT of the shelf), 9 Crafting Stations (fetched via object bits or built), 5-slot Crafting Queue with drag-reorder, LOOP toggle, and station choreographies.
  • Gear Trade (gear-trade, landed Oct 24): the stall sells his crafts — scavengers buy gear & food from him first, by survival gaps and personality wishes (NPC counter fallback); a mission needing kit is bought from his stock at SEND or refused with nothing spent.

NPC Cast & Trader Stalls

npc-cast · trader-stalls
  • ~150 Pre-Authored Cast (npcs.json): Name, temperament, behaviours, voice prompt, and blinking pixel avatar; permadeath records w.gone.
  • Standalone Cast Editor: bun run cast for reviewing, editing, and adding cast members locally.
  • 6 Town Stall Slots: Claimed via Start Screen map picker; 2,000c starting purse; opens with 2 regulars at the stall (first already loyal).
  • Loyalty & Decay: +1 per visit (shortens perceived distance, lengthens rest up to cap 10); decays after 7 days trader inactivity.

Missions, Key-Lock FETCH & Diaries

mission-creator · fetch-orders
  • 3 Mission Goals: SCOUT (look only, no stock draw), SCAVENGE (loot haul to hiring stall), and FETCH (unique object bit, Crafting Station, or fallen diary).
  • Key-Lock Progression (#30): Special object bits carry per-object skill & gear requirements (needs, e.g. Mechanics ≥ 2 for Milling Machine) and grey-gate SEND.
  • Dead Scavenger Diary (#35): Spotting a body logs an IntelBit → pins <Name>'s Journal POI → FETCH recovers the dead scout's report, walked fog, and noticed Clouds.

Play Shell (6 Looks), PDA Map & Radio

play-shell · map-screen · mission-screen
  • 6-Look First-Person Stall: AHEAD (window), DOWN (PDA Map), RIGHT (Radio Screen + auto-clearing RadioLED #45), LEFT (shelf/stock/purse), FAR-LEFT (Workshop hall), UP (sky menu + build ID), plus ↙/↗ diagonal buttons.
  • PDA Map Screen: Worker-baked zone tiles, desktop + mobile pinch/drag, thin amber Area outlines, POI dots, scout-attributed place cards with tiny avatar (#44), and live GPS dot over fog.
  • Split Radio Screen: Single-row scrollable Index carousel (#42) on top + instant headerless Debrief log below with amber IntelBits and brass LocationBits.

Server, Persistence & Video Gates

db.ts · e2e:boot · deploy
  • SQLite WAL + Snapshot v23: Append-only event journal pruned at snapshots (flat ~150 KB storage) with strict migrate() chain.
  • Zero-Downtime k3s Git Deploy: Approved on scav-app.byte.pm; server/supervisor.ts + server/web.ts buffers requests during ~100 ms world reload on git push k3s main.
  • Consolidated Journey Gates: bun run e2e:boot (journey + phone scenarios with per-beat jump markers on bun run review), soak, balance, unlock-graph.html, crafting.html, and loot.html.

4. What is Ongoing Right Now

Signed Off · Oct 26, 2026
Item / Change Status Details
Workshop Electricity & Generator
openspec/changes/workshop-electricity/
Signed Off (0/5) Adds the non-interactive generator at Workshop Spot 0 (fetched at Old Depot, depot-generator), gasoline distilled from crude at the unpowered still exclusively into the Generator's tank (tankCap: 6), per-work-second electricity draw on plugged-in tables (sewing, solder, printer, lab, bench), Blackout pause & recovery, fuelcan (crude + plastic at still) feeding light, and Milling Machine moved to train-wreck-bench.
Storytelling · Chapter 1 (Tutorial)
openspec/changes/tutorial-ahead-dialogue/
Signed Off (0/5) Introduces the storytelling capability: the trader's loyal regular greets him in a person-card Dialogue scene at the AHEAD counter and guides Chapter 1 (scout Old Depot → fetch Generator → scout Farm for Still & Carpentry table → distil Gasoline) with place names rendered as navigation-only LocationBits (.locbit) and no free IntelBits.
M2 Multiplayer Exit Check Milestone Exit Two browsers on two anonymous accounts competing for the same scavengers, depleting sources, and armed scout clashes.

5. Vision & Research Not Yet on the Roadmap

Unscheduled / Open
Topic Source What's Envisioned
Trader Price-Setting vision.md §1 Explicitly out of M2 & M2.5 (prices use fixed base × markup × QualityCostFactor). Player-controlled price tuning per item waits for a future economy pass.
Factions & Bounties vision.md §7 / Open Bandits vs. headhunters ("most wanted" board repels bandits, attracts headhunters), faction allegiances, and authored storyline quests.
Moving Radiation Clouds vision.md §8 Radiation Clouds are static polygons today; vision states that later "they will move" across the map over time.
Stale Intel Expiry UI vision.md Open Report dates are recorded since M2, and dynamic ground makes knowledge stale in M5, but explicit stale-intel expiry UI on the map/cards is unscheduled.
Trader-to-Trader Trade & Anti-Griefing vision.md §8 / roadmap.md Direct player-to-player trade/chat (out of M2.5/M3) and long-term multiplayer contention/griefing protections.
Geodata & Hydrology Worldgen Pipelines research_notes/ Deep research on Copernicus GLO-30 DEM terrain import (map-lab.html), hydrology/climate simulation, and procedural settlement/road topology.