Docs: adopt End-of-Month slice as Decision-Gate answer + SL-1..7 plan (DR-035)
Reconcile the roadmap to the just-committed End_Of_Month_Game_Jam_Slice
("Awakening Engine Last Stand"). 9-agent grounded code audit: 13/14 slice
systems already shipped; END-2 (final siege + latching win) is the one
blocker. Decision Gate answered early as ship-the-minimum.
- DR-035 (new): adopt the slice; END-2 charge cadence LOCKED siege-survived-only
- Backlog: NEXT reframed to the slice + SL-1..SL-7 milestones (END-2 = SL-3, critical path)
- Milestones: close ledger gap (MC-1 PASS / MC-4 / base-mining / EB-1 / EB-2 / END-1) + slice row
- Path_to_Fun: top pointer (stays long-term north-star; Path B untouched)
- Slice doc: Status & Navigation cross-links
CLAUDE.md intentionally unchanged (no budget headroom; conventions doc, uncontradicted).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,8 @@
|
||||
tags:
|
||||
- roadmap
|
||||
- backlog
|
||||
updated: 2026-06-08
|
||||
- slice
|
||||
updated: 2026-06-13
|
||||
permalink: gamevault/06-roadmap/backlog
|
||||
---
|
||||
|
||||
@@ -12,15 +13,60 @@ Open / candidate work only. **Done items live in [[Milestones]] + their DR / ses
|
||||
kept to the forward-looking pool — promote an item to [[Milestones|a milestone]] when committed, then drop it here).
|
||||
Last decluttered 2026-06-08 (removed all shipped `[x]` items; their context is preserved in the linked records).
|
||||
|
||||
## NEXT — Combat-depth track (the fight, made fun)
|
||||
## NEXT — Awakening Engine Last Stand (End-of-Month Slice) ★
|
||||
|
||||
**The forward plan is [[Path_to_Fun]]** (direction [[DR-028_Combat_Primary_Verb_Depth_First]], refined 2026-06-08): combat is the primary braided verb; **depth-before-breadth**, with a **falsifiable fun-gate per milestone**. The roadmap is split into a **committed Path A** and a **provisional, NOT-scheduled Path B**, with a **mandatory logged Decision Gate** between them.
|
||||
**The active operational target for June 13–30 is the [[End_Of_Month_Game_Jam_Slice]]** — a compact top-down ARPG / survival base-defense demo (mine Ore → build Turret/Wall/Fabricator → Ore→Charge→turret-shots → survive escalating Husk waves → hold the losable Engine Core through a **final siege** → **win or lose in a 5–8 min run**, in **one compact arena**). This **answers the Path A Decision Gate early as *ship the minimum*** ([[DR-035_End_Of_Month_Slice_Adoption]]); [[Path_to_Fun]] stays the long-term north-star and **Path B stays provisional** until a ship-vs-continue note is logged *after* June 30.
|
||||
|
||||
- **Path A — the committed scope (a shippable game-with-a-point):** MC-0 instrument the box → MC-1 dash + committed-punishable Charger → MC-4 melee cone → *[Demo A: the Duel]* → EB-1 machines can die (structure loss-state) → EB-2 the felt spend (turret ammo from the factory) → *[Demo B: the Loop]* → END-1 a losable Core → END-2 final siege / win-lose → **[Decision Gate — log ship-vs-continue]**.
|
||||
- **Status 2026-06-09: MC-0 + MC-1 CODE-COMPLETE, fun-gate pending** ([[2026-06-09_MC1_Implementation]]) — 259/259 EditMode + clean netcode Play sessions + post-build adversarial review (2 confirmed findings fixed); the operator feel pass (dash snap test, telegraph read, Charger feet) + the bench (timed vs spam) + friend read are the open gate. MC-4 starts only after the MC-1 gate passes.
|
||||
- **Path B — provisional (pick ONE after the gate, re-estimate first):** MC-2 ranged + swarm + mix-director · MC-3 pure juice · MC-5 downed/revive · MC-6 multi-slot kit · EB-3 base repair · EB-4 tool-gated harvest (braided) · EB-5 craft combat power · END-5 1–4p scaling + NG+. *(END-3 Echo narrative + END-4 content-treadmill are CUT until Path A is fun and the operator wants to author.)*
|
||||
**Already shipped & code-verified (do NOT rebuild — 13/14 slice systems):** movement, dash (MC-1, fun-gate PASSED 2026-06-10), melee combo (MC-4), ranged poke; base-local Ore mining (DR-031); Turret/Wall/Fabricator palette + UITK build HUD (DR-021); Ore→Fabricator→Charge→turret economy (EB-2 / DR-033); destructible structures (EB-1 / DR-032); soft-loss Engine Core integrity + overrun flash (END-1 / DR-034); SaveData v4 + frontend menu / Continue / build menu (DR-019). The audit: 9-agent grounded gap-analysis, 2026-06-13.
|
||||
|
||||
Every milestone ends with a **play/fun-gate**, not a test count. **Path A forks are LOCKED** (2026-06-09 — [[DR-029_Path_A_Fork_Locks]] · [[Path_to_Fun#Locked decisions (Path A)]]); Path B forks stay open, locked via the same present-the-forks ritual at the Decision Gate.
|
||||
**The ONE blocker is END-2 (final siege + terminal win) — SL-3 below.** Today `GoalProgress.Charge` increments past `Target` forever with no clamp/consequence; there is a clear *loss* (Core overrun) but **no terminal *win***. END-2 must land by **June 26**. **Charge cadence LOCKED 2026-06-13: siege-survived-only** (goal +1 per survived siege; Path_to_Fun's "Both"/Aether-deposit cadence deferred post-slice). See [[DR-035_End_Of_Month_Slice_Adoption#Locked fork — END-2 charge cadence (2026-06-13)]].
|
||||
|
||||
**Critical path:** SL-1 → SL-2 → **SL-3 (END-2)** → SL-5 → SL-6 → SL-7; SL-4 (visual) runs parallel, done by Jun 23. Every milestone ends with a **falsifiable play/fun-gate**, not a test count. Full vision + visual direction + cohesion checklist + Done Definition: [[End_Of_Month_Game_Jam_Slice]].
|
||||
|
||||
### SL-1 — Scope Lock & Arena Cleanup `Jun 13-15` · risk LOW
|
||||
- **Goal:** one compact (<~20 m radius, single-camera) base-defense arena with the Core as the hero object; lock the slice doc as the frozen target; set ARPG camera framing.
|
||||
- **Tasks:** confirm compact footprint + Core centered/dominant · hide/remove non-slice noise (expedition rift/warpgate/distracting props; keep perimeter dark & quiet) · tune `PrototypeCameraRig` (today Pitch 45° / Dist 13 / FOV 55 — verify player+enemies+2 structures+Core read in one view, dash trajectory visible) · verify Ore annulus (~10–12 nodes) spacing reads · **decide Pylon** (give the 4th palette entry a job + cyan accent, or cut it — slice names only Turret/Wall/Fabricator) · confirm Save/Continue (SaveData v4) is ready, no extra polish.
|
||||
- **Fun-gate:** a new viewer IDs player/Ore/Turret/Husk/Core/ground in <1 s; arena reads as a "small industrial clearing," not a meadow; camera neither too close nor too wide.
|
||||
- **Deps:** none.
|
||||
|
||||
### SL-2 — Loop Tuning `Jun 16-19` · risk MED (live knobs)
|
||||
- **Goal:** dial the 5–8 min run — mine → build → fight → defend with readable pacing, no dead time, no constant pressure.
|
||||
- **Tasks:** baseline a full run (mine ~2 min, build 2 Turret + 1 Wall + 1 Fabricator, survive 3 sieges) · tune Ore spawn rate + build costs (Turret 10 / Wall 4 / Fabricator 30 / Pylon 2 Ore) vs the 45 s (`ScheduleIntervalTicks=2700`) siege cadence · tune Fabricator recipe (1 Ore→3 Charge/30 t) + `TurretChargeCostPerShot` so the **felt spend** bites (turrets dry out without upkeep) · tune turret damage (Husk dies in ~8–12 shots) + wave growth (`SizeBase` + `ScheduleSizePerWave`) · validate Grunt/Charger mix (Chargers occasional, lunge telegraph readable) · kill Calm "AFK >90 s" dead-time · all via the live `TuningConfig` overlay (MC-0).
|
||||
- **Fun-gate:** a fresh non-designer plays 5 min uncoached and reads mining as purposeful, building as a "prep" beat, waves as recognizable pressure, a siege death as "try again"; competent player finishes a run in 5–8 min.
|
||||
- **Deps:** SL-1.
|
||||
|
||||
### SL-3 — END-2: Final Siege & Win/Lose (PATH-A BLOCKER) `Jun 16-23 build, Jun 24 validate` · risk MED · **review-gated** ★
|
||||
- **Goal:** the goal meter means something — at `GoalProgress.Charge >= Target` arm a visibly-larger **final siege**; surviving it latches a **Victory**, breaching the Core during it latches a **Loss**; both fire a clear HUD banner. Spec: [[Path_to_Fun#END-2 — The charge means something: the cap arms a final siege, win or lose]].
|
||||
- **Charge cadence — LOCKED 2026-06-13: siege-survived-only** (goal +1 per survived siege, the existing single-writer; no Aether-deposit writer — "Both" deferred post-slice). [[DR-035_End_Of_Month_Slice_Adoption#Locked fork — END-2 charge cadence (2026-06-13)]].
|
||||
- **Tasks:** add `RunPhase{byte Normal|FinalDefense}` + `RunOutcome{byte InProgress|Victory|Loss}` on the CycleDirector (server-only single-writer, **NOT `[GhostField]`** — avoid the ghost re-hash; derive client-side) · new server-only `GoalReachedSystem` `[UpdateAfter(CyclePhaseSystem)]`: on the `Charge>=Target` edge (guarded `RunPhase==Normal` → exactly-once) **clamp `Charge`**, arm the final siege via the existing `ThreatState.PendingSiegeSize` (×`FinalSiegeMultiplier`), set `FinalDefense` · in `CyclePhaseSystem` (keep it the **sole** `WaveState`/`Phase` writer — no second writer, DR-017 cycle hazard): final-`DefendCleared`→`Victory`, final-overrun→`Loss` · add live `FinalSiegeMultiplier` (~2–3×) to `TuningConfig` · client-only HUD victory/loss banner reusing END-1's `OverrunTick` edge-detect pattern · **run the adversarial design review BEFORE coding** (netcode/determinism/single-writer) per [[validate-netcode-design-before-coding]] · 4 EditMode tests (arms once, Victory edge, Loss edge, Charge clamp).
|
||||
- **Fun-gate** (Path_to_Fun END-2): team sees the meter approach full + an Engine telegraph and **deliberately preps** (≥1 countable action); final siege `liveEnemyCount` peak ≥30 % over a normal siege; surviving fires a "we did it" banner read as game-end; final-overrun reads as "lost the final stand," distinct from a mid-run overrun.
|
||||
- **Deps:** SL-1 (arena), SL-2 (tuned baseline). **No save-schema bump** (bytes derivable on load → SaveData stays v4).
|
||||
|
||||
### SL-4 — Visual Cohesion Pass `Jun 20-23` (parallel) · risk MED
|
||||
- **Goal:** "Aether Siege Outpost" read — dark/quiet ground, cyan owned vs orange-red hostile, Core as hero; pass the slice's Visual Cohesion Checklist (slice §203–216).
|
||||
- **Tasks:** darken ground + neutral props (~40–50 %, recede them) · cyan emissive accents on player + all owned structures + Core (read at 13 m in motion) · orange-red on Husks + telegraphs · amber Ore legibility · 5–10 **dark** perimeter framing props (no sightline blockers, none brighter than Core) · post-FX: bloom only on Aether/Ore/attacks, reduce fog that washes silhouettes, subtle vignette, cool-shadow/warm-glow grade · re-test every asset import in Play (material-regression guard).
|
||||
- **Fun-gate:** a blind watcher of a 5 s clip IDs Core="base defended", cyan="owned", orange="enemy", ground="background", arena="engineered space not meadow"; cyan/orange ≥2× brighter than ground.
|
||||
- **Deps:** SL-1 (locked arena). Cut perimeter props first if it slips; keep darkening + emissive.
|
||||
|
||||
### SL-5 — Final Siege & Ending tuning `Jun 24-26` · risk MED
|
||||
- **Goal:** make the final siege feel climactic and the run a clear three-act (prep → conflict → climax/resolution); lock end-game messaging.
|
||||
- **Tasks:** tune `FinalSiegeMultiplier` (test 2.0/2.5/3.0; final peak ≥30 % over normal) · add a final-siege **telegraph** (Engine hum/sky shift/HUD "FINAL SIEGE INCOMING", ≥3–5 s warning) · validate Victory banner only on final-`DefendCleared`, Loss banner distinct from mid-run overrun · autosave the victory/loss checkpoint + clean continue/retry/quit flow (no soft-lock) · clock 3+ runs at 5–8 min · co-op: both clients see the same outcome, no desync.
|
||||
- **Fun-gate:** a new team unanimously reads the final siege as *different*, preps for it, and reads winning as winning (not "another siege cleared"); run duration 5–8 min ±1 across 3+ playthroughs.
|
||||
- **Deps:** SL-3 (END-2), SL-4 (visual reads).
|
||||
|
||||
### SL-6 — Polish & Cut `Jun 27-29` · risk MED (scope-creep)
|
||||
- **Goal:** play the whole run 5+× (solo + co-op), fix readability, cut confusing mechanics, tune feedback; screenshot-validate against the checklist.
|
||||
- **Tasks:** 5+ full cycles, log confusing/dead/balance/clutter moments · HUD legibility at 1920×1080 (known vitals↔palette overlap — fix or accept) · combat feedback weight (hit freeze-frame/flash, turret-fire + Husk-death distinct, dash i-frame read) · structure-break + Core-breach feedback unmistakable · win/loss banner unmissable (play each 3×) · **enforce a code-freeze Jun 29 noon** (blockers + readability only after) · cut/defer anything unfinished (missing anims → placeholder vanish; responsive HUD → post-jam) · take 5–8 checklist screenshots · tag a stable backup.
|
||||
- **Gate:** N/A (validation phase) — success = 5 clean playthroughs (no soft-lock/desync/progression-block), readable HUD, weighty feedback, unambiguous win/loss, screenshots match the checklist.
|
||||
- **Deps:** SL-5.
|
||||
|
||||
### SL-7 — Package `Jun 30` · risk LOW–MED (build regressions)
|
||||
- **Goal:** a reliable playable build (or reliable play path) for external viewing; no new systems, blockers-only fixes.
|
||||
- **Tasks:** build the Windows player (`ProjectM/Build`), launch → menu → Single/Host/Join → full loop → quit → Continue · verify no magenta materials / missing sprites / missing audio at 1920×1080 (watch the URP global-settings `m_AssetVersion` build blocker — reset the stamp, don't regenerate) · optional LAN Host↔Join smoke · **content + code freeze Jun 29 noon / Jun 30 8 am** · capture 2–3 hero screenshots · write a hand-off note (what shipped / known-good / deferred / next steps) + **log the formal Decision Gate** (ship-and-stop vs. one Path B milestone) per [[Path_to_Fun#The Decision Gate (MANDATORY STOP after END-2)]].
|
||||
- **Gate:** end-to-end playable, no crashes/soft-locks; a new player gets a clear win or loss in one 5–8 min run; shippable for a friend / itch demo.
|
||||
- **Deps:** SL-6. Fallback: keep the editor-Play path as the demo if the standalone build regresses.
|
||||
|
||||
> **Path B stays provisional & unscheduled** (pick ONE after the post-slice Decision-Gate note — re-estimate first): MC-2 ranged+swarm+mix-director · MC-3 pure juice · MC-5 downed/revive · MC-6 multi-slot kit · EB-3 base repair · EB-4 tool-gated harvest · EB-5 craft combat power · END-5 1–4p scaling + NG+. *(END-3 Echo narrative + END-4 content-treadmill remain CUT.)* Path B forks stay open, locked via the present-the-forks ritual ([[DR-029_Path_A_Fork_Locks]] · [[present-forks-dont-auto-decide]]). The deferred backlog below is the post-slice menu, NOT slice work.
|
||||
|
||||
## PAUSED — Inventory · Equipment · Progression (roadmap [[DR-026_Inventory_Equipment_Progression_Foundation]] / [[DR-027_Equipment_Slots_Phase1]])
|
||||
|
||||
|
||||
@@ -22,6 +22,14 @@ This is a compact top-down ARPG / survival-action base-defense demo. The player
|
||||
|
||||
The goal is not to prove the whole future game. The goal is to finish a small, fun, visually cohesive slice that makes the strongest existing systems feel like one game.
|
||||
|
||||
## Status & Navigation
|
||||
|
||||
**Active operational target — June 13–30, 2026.** This answers the [[Path_to_Fun#The Decision Gate (MANDATORY STOP after END-2)|Path A Decision Gate]] as *ship the minimum* (adopted in [[DR-035_End_Of_Month_Slice_Adoption]]). A 2026-06-13 code audit confirmed **13 of 14 systems are shipped and netcode-verified**; the one blocker is **END-2 — the final siege + a latching win condition** (targeted by June 26; today the goal meter increments forever with no consequence and there is a clear *loss* but no terminal *win*).
|
||||
|
||||
- **Tracked milestone breakdown (SL-1…SL-7):** [[Backlog#NEXT — Awakening Engine Last Stand (End-of-Month Slice) ★]] — the daily commitment.
|
||||
- **Long-term design / END-2 spec:** [[Path_to_Fun]] · **Done-ledger:** [[Milestones]] · **Adoption + open fork:** [[DR-035_End_Of_Month_Slice_Adoption]].
|
||||
- **END-2 charge cadence — LOCKED 2026-06-13:** *siege-survived-only* (goal +1 per survived siege; "Both"/Aether-deposit deferred post-slice).
|
||||
|
||||
## Why This Direction
|
||||
|
||||
The project is currently strongest when combat, base, and economy are braided together on one screen:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
tags:
|
||||
- roadmap
|
||||
- milestones
|
||||
updated: 2026-06-08
|
||||
updated: 2026-06-13
|
||||
permalink: gamevault/06-roadmap/milestones
|
||||
---
|
||||
|
||||
@@ -36,4 +36,10 @@ permalink: gamevault/06-roadmap/milestones
|
||||
| **— 2026-06-08 Direction: Combat-first + Path to Fun —** | Strategic pivot — combat is the PRIMARY braided verb (base + automation braid around it, not co-equal); **depth-before-breadth** + per-milestone fun-gates; inventory/equipment Phases 2–4 + automation breadth PAUSED; new **combat-depth track** designed then **refined same day** into a committed **Path A** (MC-0/1/4 · EB-1/2 · END-1/2 = a shippable game-with-a-point) + a provisional **Path B** with a mandatory **Decision Gate** between them (9-agent design + 3-critic refinement workflows). | 🧭 Direction set 2026-06-08 — [[DR-028_Combat_Primary_Verb_Depth_First]] · [[Path_to_Fun]] |
|
||||
| **— 2026-06-09 MC-0 + MC-1: dash + Charger duel (code)** | Path A's first combat slice: dev-telemetry instrumentation (MC-0) + the i-frame dash vs the committed, whiff-punishable Charger (MC-1) — spec'd by the mandatory pre-code review ([[2026-06-09_MC1_Build_Spec]]). | 🟡 **Code-complete 2026-06-09 — FUN-GATE PENDING** (gate 3 of 3). `DamageEvent.SourceTick` half-open negation · predicted `DashSystem` (sharpness-override blink, no processor edit) · Charger `LungeState` commit/whiff/stagger branch · `EnemyChargerMuscle` ghost in the wave pool · all four DevTelemetry counters live to the client overlay · dash juice + i-frame hit-suppression. 259/259 EditMode; netcode Play sessions clean (live negation, lunge, telemetry pipe verified); post-build 29-agent adversarial review → 2 confirmed findings fixed in-session (rollback lower-bound on the dash override; drain-order pin). Operator: feel pass + bench + friend read. [[2026-06-09_MC1_Implementation]] |
|
||||
|
||||
Promote items from [[Backlog]] here when committed. **The forward plan now lives in [[Path_to_Fun]].**
|
||||
| **— 2026-06-10 MC-1 fun-gate PASS + MC-4 combo melee (primary verb)** | MC-1's dash+Charger duel passed its operator fun-gate (*"it's fun, the dash feels fine"*) → kill-switch CLEARED. MC-4 then built melee as a combo-chain = the PRIMARY verb (ranged demoted): predicted-replicated combo `Step` (path-dependent → replicate + absolute-write), server-only cleave, finisher scaling, 9 live `TuningConfig` knobs; the MC-6 archetype byte deferred. | ✅ Done 2026-06-10 — 294/294 EditMode + Play-validated; MC-0 live-tuning (`TuningConfig`/DebugOverlay) shipped same track. [[DR-030_MC4_Combo_Melee_Primary_Verb]] · [[2026-06-10_MC0_TuningConfig_LiveTuning]] · [[2026-06-10_MC4_Combo_Melee]] |
|
||||
| **— 2026-06-11 Base-mining cohesion + camera feel** | Pull the core loop base-local: `BaseFieldSpawnSystem` tops up `RegionTag.Base` Ore around `PlotCenter` (distinct spawner singleton), scheduled base sieges need no expedition trip; expedition now dormant/hidden per-connection. ARPG camera look-ahead + zoom feel pass. | ✅ Done 2026-06-11 — [[DR-031_Base_Mining_Loop_Cohesion]] · [[2026-06-11_Base_Mining_Cohesive_Loop]] · [[2026-06-11_Camera_Feel_LookAhead_Zoom]] |
|
||||
| **— 2026-06-11 EB-1 — machines can die (structure loss-state)** | Structures bake `Health`(`[GhostField]`)+`DamageEvent`+`Destructible`; `HealthApplyDamageSystem` destroys at 0 (occupancy auto-frees); `EnemyAISystem` fortress-targets weighted-nearest players+structures; loss VFX via `StructureFeedbackSystem`. SaveData v3 per-structure HP. | ✅ Done 2026-06-11 — [[DR-032_EB1_Machines_Can_Die]] · [[2026-06-11_EB1_Machines_Can_Die]] |
|
||||
| **— 2026-06-12 EB-2 felt spend + END-1 losable Core** | **EB-2:** turret ammo = shared `Charge` (`ResourceId` 4) on the existing ledger; `TurretFireSystem` soft-fail spend; ledger-fed `Fabricator` mints Ore→Charge live-in-loop. **END-1:** `CoreIntegrity{[GhostField] Current,Max; uint OverrunTick}` on the CycleDirector; `CoreDamageSystem`/`CoreRestoreSystem`; soft-loss edge in `CyclePhaseSystem` (transient overrun flash, NO latching win yet); Core = `EnemyAISystem` fallback target. SaveData **v4**. | ✅ Done 2026-06-12 — 330/330 EditMode. [[DR-033_EB2_Felt_Spend_Charge_Economy]] · [[2026-06-12_EB2_Felt_Spend]] · [[DR-034_END1_Losable_Core]] · [[2026-06-12_END1_Losable_Core]] |
|
||||
| **— 2026-06-13 End-of-Month Game Jam Slice (ACTIVE TARGET)** | Answer the Path A Decision Gate early as **ship the minimum**: "Awakening Engine Last Stand" — a compact ARPG / base-defense demo, 5–8 min win-or-lose in **one arena**, June 30. Code audit (9-agent): **13/14 slice systems shipped**; **END-2** (final siege + latching win) is the one blocker. Single-arena scope-down + visual cohesion + loop tuning + packaging. Full milestone breakdown (SL-1…SL-7) in [[Backlog#NEXT — Awakening Engine Last Stand (End-of-Month Slice) ★]]. | 🧭 **Direction set 2026-06-13** — [[End_Of_Month_Game_Jam_Slice]] · [[DR-035_End_Of_Month_Slice_Adoption]] |
|
||||
|
||||
Promote items from [[Backlog]] here when committed. **The active target is the [[End_Of_Month_Game_Jam_Slice]]** (Path A spine ~done; END-2 the one blocker — see [[Backlog]]); the long-term plan remains [[Path_to_Fun]], answered at its [[Path_to_Fun#The Decision Gate (MANDATORY STOP after END-2)|Decision Gate]] *after* the slice ships. [[DR-035_End_Of_Month_Slice_Adoption]]
|
||||
@@ -13,6 +13,8 @@ permalink: gamevault/06-roadmap/path-to-fun
|
||||
|
||||
# Path to Fun — the north-star roadmap
|
||||
|
||||
> **[ACTIVE JUNE 13–30 → the slice]** Path A's spine is built — a 2026-06-13 code audit found **13/14 systems shipped** (MC-0/1/4 · EB-1/2 · END-1). The operator answered the [Decision Gate](#the-decision-gate-mandatory-stop-after-end2) **early, as *ship the minimum***: the immediate target is the **[[End_Of_Month_Game_Jam_Slice]]** ("Awakening Engine Last Stand"), a compact single-arena base-defense demo due June 30. The one un-built spine mechanic — **END-2** (final siege + latching win, spec'd [below](#end-2--the-charge-means-something-the-cap-arms-a-final-siege-win-or-lose)) — is the slice's critical path. This doc stays the **north-star for the full game**; the slice scopes Path A to a deliverable. Milestone breakdown: [[Backlog#NEXT — Awakening Engine Last Stand (End-of-Month Slice) ★]] · adoption: [[DR-035_End_Of_Month_Slice_Adoption]]. *(Path B is untouched and provisional; the formal ship-vs-continue note is logged after June 30.)*
|
||||
|
||||
> The plan to turn an engineering-complete foundation into a game that's fun to play. Direction locked in [[DR-028_Combat_Primary_Verb_Depth_First]]. This is the **forward** plan; [[Milestones]] stays the historical record, [[Backlog]] the loose pool. Living doc: the [Path A contract table](#path-a--the-proven-path-to-a-point-committed) is the only committed scope; everything in [Path B](#path-b--the-forever-track-provisional-not-scheduled) is provisional and re-derived after Path A's fun-gates pass.
|
||||
|
||||
## The problem this solves
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
id: DR-035
|
||||
title: End-of-Month Game Jam Slice — answer the Decision Gate as SHIP
|
||||
status: accepted
|
||||
date: 2026-06-13
|
||||
tags:
|
||||
- decision
|
||||
- roadmap
|
||||
- slice
|
||||
- game-jam
|
||||
- endgame
|
||||
- end-2
|
||||
permalink: gamevault/07-sessions/decisions/dr-035-end-of-month-slice-adoption
|
||||
---
|
||||
|
||||
# DR-035 — Adopt the End-of-Month Game Jam Slice (the Decision-Gate answer)
|
||||
|
||||
> Answers the **Path A Decision Gate** ([[Path_to_Fun#The Decision Gate (MANDATORY STOP after END-2)]]) as **option 1 — ship the minimum**, scoped to a June 30 deliverable. Spec: [[End_Of_Month_Game_Jam_Slice]]. Continues [[DR-028_Combat_Primary_Verb_Depth_First]] · [[DR-029_Path_A_Fork_Locks]]. Final mechanic spec'd at [[Path_to_Fun#END-2 — The charge means something: the cap arms a final siege, win or lose]].
|
||||
|
||||
## Context
|
||||
|
||||
Path A's spine is essentially built. A code audit (9-agent workflow, 2026-06-13) confirmed **13 of 14 slice systems are shipped and netcode-verified**: combat verbs (movement, dash MC-1, melee combo MC-4, ranged poke), base-local Ore mining (DR-031), the Turret/Wall/Fabricator build palette (DR-021), the Ore→Fabricator→Charge→turret economy (EB-2 / DR-033), destructible structures (EB-1 / DR-032), and the soft-loss Engine Core (END-1 / DR-034). The project no longer needs *more systems*; it needs the loop made into **one cohesive, winnable, visually-unified demo**.
|
||||
|
||||
The operator committed [[End_Of_Month_Game_Jam_Slice]] ("Awakening Engine Last Stand") as the working target: a compact top-down ARPG / survival base-defense run — mine, build, feed the turrets, hold the Core through a final siege, win-or-lose in **5–8 minutes**, in **one compact arena**. This is the Decision Gate answered *early* (before END-2) and answered as **ship**, with a stronger art-direction / cohesion / tuning emphasis than `Path_to_Fun` specified.
|
||||
|
||||
## Decision
|
||||
|
||||
**1. The slice is the active operational target for June 13–30.** [[End_Of_Month_Game_Jam_Slice]] is the north-star for the month; [[Path_to_Fun]] remains the long-term design reference (north-star for the *full* game). Path B stays **provisional and unscheduled** — the formal ship-vs-continue Decision-Gate note is logged *after* the slice ships, not now.
|
||||
|
||||
**2. END-2 (final siege + win condition) is the one un-built spine mechanic and the critical path.** Today `CyclePhaseSystem` increments `GoalProgress.Charge` past `Target` forever with no clamp and no consequence; there is a clear **loss** (Core overrun → transient `OverrunTick` flash, DR-034) but **no terminal win**. END-2 is spec'd in `Path_to_Fun` (a server-only `GoalReachedSystem` arming a larger final siege via the existing `ThreatState.PendingSiegeSize` entry point; `RunPhase{byte=FinalDefense}`; a latching `RunOutcome{byte=Victory|Loss}`; a client-only HUD banner reusing END-1's overrun-banner pattern; **clamp the uncapped `Charge`**). It must land by **June 26** so tuning + polish have room. See the milestone breakdown in [[Backlog#NEXT — Awakening Engine Last Stand (End-of-Month Slice)]].
|
||||
|
||||
**3. Scope collapses to ONE compact arena.** The base+expedition coordinate-region split (DR-013/DR-025) stays in code, but the expedition is **already dormant and hidden per-connection via `GhostRelevancy`** (DR-031) — so "one arena" is a *scope/visual* decision (compact footprint, Core as focal point, closer ARPG camera), not a netcode rewrite. The base biome may need re-dressing/darkening toward the slice's "small industrial clearing / dark frontier" mood (slice §Visual Direction).
|
||||
|
||||
**4. Foreground = the slice's Minimum Feature Set; everything else is CUT for the month.** Explicitly not-now (already paused/deferred, now reaffirmed): expedition polish, inventory/equipment Phases 2–4 (DR-026/027), automation presentation (Harvester/Conveyor stay null in the catalog, DR-020), tool-gated harvest (EB-4), boss/new-faction, narrative/Echo, Blender pipeline, render-style experiments, large world/biome redo. The Path B menu is untouched.
|
||||
|
||||
**5. The CLAUDE.md reconciliation is intentionally a no-op.** `CLAUDE.md` is at **40,457 / 40,960 bytes** (no headroom) and is a *conventions/gotchas* doc, not a roadmap pointer; nothing in it is contradicted by the slice (the architecture it documents — base/expedition split, relevancy, soft-loss Core — all still holds). The roadmap reconciliation lives in the vault ([[Backlog]] · [[Milestones]] · [[Path_to_Fun]] · this DR), which is the correct home and respects the size budget.
|
||||
|
||||
## Locked fork — END-2 charge cadence (2026-06-13)
|
||||
|
||||
**LOCKED: siege-survived-only** (operator decision, 2026-06-13, via the present-the-forks ritual — [[present-forks-dont-auto-decide]]). The goal meter advances **+1 per survived siege** (already how `CyclePhaseSystem` works — zero new writer). `Path_to_Fun`'s earlier "Both" cadence (surviving sieges **and** Aether deposited at the Engine) is **re-locked down to siege-survived-only for the slice** and the Aether-deposit writer is **deferred to a post-slice expansion**. Rationale: simplest single-writer, zero economy dependency, lowest risk inside the END-2 window. So END-2's scope is just the arming/clamp/win-lose edges + banner — no deposit-writer, no co-op double-count guard beyond the existing single-writer.
|
||||
|
||||
## Minor scope note
|
||||
|
||||
The build palette ships **4** entries (Turret / Wall / **Pylon** / Fabricator); the slice names **3** (Turret / Wall / Fabricator). Pylon is a cosmetic defensive beacon with no special function. SL-1 decides: give Pylon a clear gameplay/composition job + cyan accent, or cut it from the palette (subscene authoring). Not a blocker.
|
||||
|
||||
## Consequences
|
||||
|
||||
- The forward pool ([[Backlog]]) is reframed around the slice; SL-1…SL-7 become the daily commitment (see the milestone list there).
|
||||
- A post-slice session note / follow-up DR logs the **formal Decision Gate** (ship-and-stop vs. commit to one Path B milestone) after June 30 — Path B may not start until that is logged.
|
||||
- No save-schema change: `RunPhase`/`RunOutcome` are server-only single-writer bytes, derivable on load from `Charge` + phase state, so SaveData stays at **v4** (DR-034).
|
||||
Reference in New Issue
Block a user