Skip to content

Commit 14eb64a

Browse files
authored
Merge pull request #511 from bcorfman/phase7
Phase 7 complete
2 parents f31864b + a9abee2 commit 14eb64a

2 files changed

Lines changed: 200 additions & 116 deletions

File tree

.plans/stars-demo-editor-gaps-implementation-plan.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -88,29 +88,29 @@ Mockups: `.plans/mockups/stars-bounds-event-no-code-actions.svg` and `.plans/moc
8888

8989
## Phase 7 — Assemble and Prove the Faithful Stars Workflow
9090

91-
- [ ] Create a documented test fixture/project with world `720 × 1280`, background `#000000`, one 3 × 3 white asset, and five 80-member Scatter formations named `Stars Blink 1` through `Stars Blink 5`.
92-
- [ ] Add a `stars.py` parity integration spec that constructs that fixture via editor reducer actions or shared project-step builders, analogous to the Pattern Demo command-driven persistence/runtime tests:
91+
- [x] Create a documented test fixture/project with world `720 × 1280`, background `#000000`, one 3 × 3 white asset, and five 80-member Scatter formations named `Stars Blink 1` through `Stars Blink 5`.
92+
- [x] Add a `stars.py` parity integration spec that constructs that fixture via editor reducer actions or shared project-step builders, analogous to the Pattern Demo command-driven persistence/runtime tests:
9393
- do not exercise manual GUI authoring with Playwright clicks for this parity test;
9494
- call the same underlying editor commands used by the UI where possible (`update-scene-world`, asset import/create, begin/update/commit formation draft, create/update Event Blocks and attachments, set scene appearance);
9595
- after each major build step, assert the persisted project shape matches the expected scene, group, member, attachment, and event-block state;
9696
- compile/run the final project and verify the visible/timed `stars.py` behavior: 400 present members, five blink periods, velocity timeline checkpoints, wrap relocation, event-source X reroll, no vertical-column drift after repeated wraps, and black background;
9797
- include save/reload and YAML export/import assertions for the finished fixture, using direct project load/snapshot helpers rather than GUI flows.
98-
- [ ] Set each formation's scatter bounds to X `0..720`, Y `5..1285`, random RGB channel range `20..255`, and a distinct recorded seed so the five formations do not overlap deterministically.
99-
- [ ] Apply `Blink Until` to the five formations at 200, 250, 300, 350, and 400 ms respectively, infinite.
100-
- [ ] Apply the same permanent `Move Until` recipe/pattern to each formation's members with velocity `0,0`, bounds `(0,-5)..(720,1285)`, and Behavior `Wrap`.
101-
- [ ] Add the same group-owned Event Block to each formation with Trigger `Bounds`, Event `Wrapped`, Axis `Y`, then add `Set Property` targeting `Event source`, Property `X`, Value `Random Range 0..720`; give each formation a distinct recorded wrap seed.
102-
- [ ] In parallel on each formation, apply the same infinite Repeat velocity sequence:
98+
- [x] Set each formation's scatter bounds to X `0..720`, Y `5..1285`, random RGB channel range `20..255`, and a distinct recorded seed so the five formations do not overlap deterministically.
99+
- [x] Apply `Blink Until` to the five formations at 200, 250, 300, 350, and 400 ms respectively, infinite.
100+
- [x] Apply the same permanent `Move Until` recipe/pattern to each formation's members with velocity `0,0`, bounds `(0,-5)..(720,1285)`, and Behavior `Wrap`.
101+
- [x] Add the same group-owned Event Block to each formation with Trigger `Bounds`, Event `Wrapped`, Axis `Y`, then add `Set Property` targeting `Event source`, Property `X`, Value `Random Range 0..720`; give each formation a distinct recorded wrap seed.
102+
- [x] In parallel on each formation, apply the same infinite Repeat velocity sequence:
103103
- Wait 1000 ms at `vy=0`;
104104
- Tween `vy` to `-240` over 2000 ms with ease-in;
105105
- Wait 5000 ms;
106106
- Tween `vy` to `+840` over 500 ms with ease-out;
107107
- Wait 1500 ms;
108108
- Tween `vy` to `0` over 2000 ms with ease-out;
109109
- repeat.
110-
- [ ] Verify the full cycle duration, velocity checkpoints, continuous movement, five independent blink rates, opposite-edge reentry, and X reroll against the reference behavior.
111-
- [ ] Verify no obvious vertical columns emerge over repeated wraps and that all 400 members remain present.
112-
- [ ] Verify save/reload, edit/play toggling, YAML export/import, undo/redo, and scene duplication retain all authored behavior.
113-
- [ ] Measure draft editing with 80 members and total-scene play-mode frame rate, initial compile time, YAML size, and save latency with all 400 stars; record acceptable thresholds in tests or a short performance note rather than relying on subjective inspection.
110+
- [x] Verify the full cycle duration, velocity checkpoints, continuous movement, five independent blink rates, opposite-edge reentry, and X reroll against the reference behavior.
111+
- [x] Verify no obvious vertical columns emerge over repeated wraps and that all 400 members remain present.
112+
- [x] Verify save/reload, edit/play toggling, YAML export/import, undo/redo, and scene duplication retain all authored behavior.
113+
- [x] Measure draft editing with 80 members and total-scene play-mode frame rate, initial compile time, YAML size, and save latency with all 400 stars; record acceptable thresholds in tests or a short performance note rather than relying on subjective inspection.
114114

115115
## Phase 8 — Workflow Documentation and Required Verification
116116

@@ -123,17 +123,17 @@ Mockups: `.plans/mockups/stars-bounds-event-no-code-actions.svg` and `.plans/moc
123123
- extend `A43`/`A46` with event-source target binding and Set Property value sources.
124124
- [x] Update `.repo-memory/product-memory.md` only if implementation establishes a durable rule not already covered (likely deterministic authored randomization and authored tint surviving selection styling).
125125
- [x] Run focused unit/component/integration tests for every touched model, editor helper, compiler, runtime action, and Phaser scene.
126-
- [ ] Run TypeScript/build validation and the repository's standard unit suite.
126+
- [x] Run TypeScript/build validation and the repository's standard unit suite.
127127
- [x] Run required GUI smoke: `npm run test:e2e -- --project=chromium --grep @smoke`.
128-
- [ ] Run the new stars workflow E2E and any directly affected formation, attachment, serialization, play-mode, and persistence specs in Chromium.
128+
- [x] Run the new stars workflow E2E and any directly affected formation, attachment, serialization, play-mode, and persistence specs in Chromium.
129129
- [ ] Inspect each shipped UI state against the five SVG mockups at normal and narrow inspector widths, light and dark themes, and supported UI scales.
130130
- [x] Confirm `playwright.config.ts` still uses the default worker count of 3.
131131
- [x] Confirm no files under `/home/bcorfman/dev/arcadeactions/` changed.
132132

133133
## Definition of Done
134134

135135
- [ ] Every checkbox above is complete or explicitly moved into a separately approved follow-up plan with rationale.
136-
- [ ] A user can author and persist the complete stars demo without hand-editing YAML or writing runtime code.
136+
- [ ] A user can author and persist the complete stars demo using the editor UI without hand-editing YAML or writing runtime code.
137137
- [ ] The primary workflows remain the existing formation draft, inspector, and action attachment paths.
138138
- [ ] Old projects load without visual or behavioral drift.
139139
- [ ] The five-formation, 400-star fixture meets recorded editor and runtime performance thresholds.

0 commit comments

Comments
 (0)