-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfeatures.json
More file actions
339 lines (339 loc) · 12.2 KB
/
features.json
File metadata and controls
339 lines (339 loc) · 12.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
{
"$schema": "./features.schema.json",
"_meta": {
"description": "Historical feature tracking snapshot for the multi-genre campaign. Status: not-started | in-progress | pass | fail | blocked",
"lastUpdated": "2026-04-29",
"planFile": null,
"historicalRoadmapsDir": "./docs/archive/roadmaps/",
"activeSessionLog": "./PROGRESS.md",
"activeDocsDir": "./docs/",
"issueTracker": "GitHub Issues",
"campaignStatus": "Roadmap V4 and ROADMAP_CITYHEIGHTS.md are complete and archived. No root roadmap is active right now; the next session should create ROADMAP_COUNTERTOP_CHAOS.md for Level 3 KITCHEN / Countertop Chaos."
},
"phase-1": {
"description": "Session Protocol Infrastructure",
"status": "pass",
"tasks": {
"docs-roadmap": {
"status": "pass",
"notes": "Completed roadmaps are archived under docs/archive/roadmaps/; the next active root roadmap should be ROADMAP_COUNTERTOP_CHAOS.md."
},
"docs-progress": {
"status": "pass",
"notes": "Canonical PROGRESS.md remains at repo root"
},
"docs-known-issues": {
"status": "pass",
"notes": "Retired from the active workflow; GitHub Issues are the active tracker and historical issue material lives under docs/archive/issues/"
},
"features-json": {
"status": "pass",
"notes": "This file"
},
"dev-init-script": {
"status": "pass",
"notes": "Uses the active root roadmap and canonical root files"
},
"commit": {
"status": "pass",
"notes": "Committed as c944986"
}
}
},
"phase-2": {
"description": "Type System Foundation",
"status": "pass",
"tasks": {
"level-id-extension": {
"status": "pass",
"notes": "LevelId = 'BEACH' in types.ts"
},
"behavior-type": {
"status": "pass",
"notes": "BehaviorType union added"
},
"obstacle-definition": {
"status": "pass",
"notes": "ObstacleDefinition interface added"
},
"level-config": {
"status": "pass",
"notes": "LevelConfig interface added with all sub-interfaces"
},
"theme-config": {
"status": "pass",
"notes": "ThemeConfig interface added"
},
"verification": {
"status": "pass",
"notes": "TypeScript compiles, game unchanged"
}
}
},
"phase-3": {
"description": "Behavior System Library",
"status": "pass",
"tasks": {
"behaviors-ts": {
"status": "pass",
"notes": "Created systems/behaviors.ts with computeSwoopY and checkPoopDrop"
},
"swoop-behavior": {
"status": "pass",
"notes": "Extracted seagull swoop easing into computeSwoopY"
},
"drop-projectile": {
"status": "pass",
"notes": "Extracted seagull poop into checkPoopDrop"
},
"bounceable": {
"status": "pass",
"notes": "Extracted into handleBounceCollision (CRAB/BEACHBALL/SEAGULL/SAND_PROJECTILE)"
},
"slow-on-contact": {
"status": "pass",
"notes": "Extracted into handleSlowCollision (SANDCASTLE/TIDEPOOL)"
},
"collision-handlers": {
"status": "pass",
"notes": "Created systems/collisionHandlers.ts with CollisionResult + 3 handlers, wired into GameEngine"
}
}
},
"phase-4": {
"description": "Level Configuration Structure",
"status": "pass",
"tasks": {
"levels-directory": {
"status": "pass",
"notes": "Created levels/ directory"
},
"beach-config": {
"status": "pass",
"notes": "Created levels/beach.ts with full BEACH_LEVEL_CONFIG"
},
"beach-patterns": {
"status": "pass",
"notes": "GameEngine reads patterns from LEVEL_REGISTRY[levelId]"
},
"level-registry": {
"status": "pass",
"notes": "levels/index.ts: LEVEL_REGISTRY, getLevelConfig"
},
"wire-gameengine": {
"status": "pass",
"notes": "GameEngine uses config for patterns, harmfulTypes, theme, boss, background, spawns"
}
}
},
"phase-5": {
"description": "Obstacle Component Refactor",
"status": "pass",
"tasks": {
"beach-obstacles": {
"status": "pass",
"notes": "levels/beach/obstacles.tsx: BeachObstacleIcon, seagull ProcessedSprite"
},
"level-context": {
"status": "pass",
"notes": "contexts/LevelContext.tsx; GameEngine LevelProvider"
},
"obstacle-component": {
"status": "pass",
"notes": "Shared COIN/SHELL/powerups; beach via context + isBeachObstacleType"
}
}
},
"phase-6": {
"description": "GameEngine Abstraction",
"status": "pass",
"tasks": {
"session-6a": {
"status": "pass",
"notes": "Optional levelConfig prop; App passes getLevelConfig('BEACH')"
},
"session-6b": {
"status": "pass",
"notes": "levelBehaviorHelpers + theme.groundKickParticles; stomp/slow/arc from behaviors"
},
"session-6c": {
"status": "pass",
"notes": "bossSystem.ts, bossComponents lazy SandMonster, abstract boss projectile spawn"
}
}
},
"phase-7": {
"description": "Level Selection UI",
"status": "pass",
"tasks": {
"level-state": {
"status": "pass",
"notes": "selectedLevel, completedLevels; GameEngine key + getLevelConfig(selectedLevel)"
},
"selection-component": {
"status": "pass",
"notes": "components/LevelSelection.tsx"
},
"context-provider": {
"status": "pass",
"notes": "LevelProvider remains in GameEngine"
},
"unlock-logic": {
"status": "pass",
"notes": "levels/catalog.ts linear unlock; handleVictory(levelBeat)"
}
}
},
"phase-8": {
"description": "Documentation & Polish",
"status": "pass",
"tasks": {
"level-dev-guide": {
"status": "pass",
"notes": "docs/architecture/level-development.md"
},
"behavior-docs": {
"status": "pass",
"notes": "docs/architecture/behavior-system.md"
},
"claude-md-update": {
"status": "pass",
"notes": "Root guidance and docs now align with the active roadmap and the docs/ taxonomy"
}
}
},
"phase-9": {
"description": "Live Balancing + Telemetry",
"status": "pass",
"tasks": {
"dev-balance-panel": {
"status": "pass",
"notes": "BalancePanel with collapsible slider groups, backtick toggle"
},
"tuning-presets": {
"status": "pass",
"notes": "Save/load/delete named presets via localStorage"
},
"hit-death-logging": {
"status": "pass",
"notes": "Damage and death events logged with context"
},
"run-summary": {
"status": "pass",
"notes": "Run summary at game over and victory"
},
"telemetry-export": {
"status": "pass",
"notes": "JSON export via BalancePanel button"
},
"verification": {
"status": "pass",
"notes": "Build passes, default tuning values match original constants"
}
}
},
"phase-10": {
"description": "Phaser-only Runtime Reset + Browser Smoke Coverage",
"status": "pass",
"tasks": {
"phaser-only-runtime": {
"status": "pass",
"notes": "Gameplay now boots only through PhaserGame; the DOM-runner fallback and legacy support subtree were retired."
},
"browser-smoke-harness": {
"status": "pass",
"notes": "Playwright smoke covers campaign boot, Kitty Closet, Phaser boot and eject, victory and game-over mutation, and Hall of Fame persistence plus ordering."
},
"verification": {
"status": "pass",
"notes": "npm test, npm run test:smoke, npx tsc --noEmit, and npm run build all pass on the 2026-04-21 session snapshot."
}
}
},
"phase-11": {
"description": "Roadmap V4 Level 1 Beach Completion Pipeline",
"status": "pass",
"tasks": {
"phase-0-pipeline-decisions": {
"status": "pass",
"notes": "Level 1 gameplay-cat strategy is locked: curated animated runner sheet first; live cat generation is optional and off the gameplay critical path."
},
"phase-1-world-art-pack": {
"status": "pass",
"notes": "Committed Beach SVG world-art pack, visual brief, prompt pack, asset manifest, RunnerScene integration, and player-review polish are complete."
},
"boss-ammo-and-bridge-hardening": {
"status": "pass",
"notes": "Boss entry now grants sufficient shell ammo, refills a small ammo floor, and Playwright smoke covers boss-practice ammo plus React/Phaser HUD sync."
},
"phase-2-runner-hero-animation": {
"status": "pass",
"notes": "Default Beach runner hero sheet, contract doc, manifest/state resolver, RunnerScene animation wiring, and focused unit coverage are complete."
},
"phase-3-runtime-integration-cleanup": {
"status": "pass",
"notes": "RunnerScene now uses the hero-sheet contract for render scale, ground-contact anchoring, and collision boxes; Beach tile layers scroll with parallax; committed asset-loading guards and browser capture verified no runtime image-model dependency."
},
"phase-4-polish-and-playtest": {
"status": "pass",
"notes": "Keyboard pause/focus, terminal score authority, HUD/readability capture artifacts, boss shell clarity, victory/game-over, replay, and Hall of Fame smoke coverage are complete for Level 1."
},
"phase-5-repeatable-level-pipeline": {
"status": "pass",
"notes": "Repeatable level-art pipeline doc, genre-aware scaffold script, reusable templates, and City Heights platformer pipeline seed docs are in place for the remaining levels."
}
}
},
"phase-12": {
"description": "City Heights Flagship Pixel Platformer Slice",
"status": "pass",
"tasks": {
"active-roadmap": {
"status": "pass",
"notes": "Created ROADMAP_CITYHEIGHTS.md as the active root roadmap."
},
"pixel-art-direction": {
"status": "pass",
"notes": "Added City Heights pixel art bible and pivoted Level 2 docs to true cozy pixel-art rules."
},
"baseline-pixel-assets": {
"status": "pass",
"notes": "Added repeatable generator and committed baseline pixel assets under assets/sprites/rooftops/."
},
"runtime-manifest-and-hero": {
"status": "pass",
"notes": "Added rooftops asset manifest, platformer hero-sheet contract/resolver, tests, and runtime loading."
},
"opening-route": {
"status": "pass",
"notes": "Seeded deterministic openingRoute geometry, enemies, hazards, coins, and power-ups before procedural generation resumes."
},
"qa-captures-and-polish": {
"status": "pass",
"notes": "Phase 6 captures cover stomp, side-hit, hazard/powerup, pause, opening-route handoff, victory, and game-over; the selected cleanup pass replaced rougher hero, enemy, hazard, and power-up baseline sprites while keeping the starry close-city backdrop."
},
"boss-finale-slice": {
"status": "pass",
"notes": "Moved the Pigeon King into the deterministic opening route with an authored bossArena contract, BOSS_FIGHT status, boss snapshots in render_game_to_text, tuned first-phase timing, larger boss/actor reads, X/ArrowDown yarn throws, valid top-stomp damage without life loss, and throw/stomp/defeat capture artifacts."
}
}
},
"phase-13": {
"description": "Countertop Chaos Level 3 Kickoff",
"status": "not-started",
"tasks": {
"active-roadmap": {
"status": "not-started",
"notes": "Next session should create ROADMAP_COUNTERTOP_CHAOS.md for KITCHEN / Countertop Chaos."
},
"source-doc-refresh": {
"status": "not-started",
"notes": "Start from docs/archive/specs/2026-04-05-countertop-chaos-launcher-design.md and docs/archive/plans/2026-04-05-countertop-chaos-implementation.md."
},
"level-art-scaffold": {
"status": "not-started",
"notes": "Use npm run scaffold:level-art -- --level KITCHEN and docs/architecture/level-art-pipeline.md before runtime changes."
}
}
}
}