Skip to content

Commit 6d00c3d

Browse files
committed
oops
1 parent d231a31 commit 6d00c3d

4 files changed

Lines changed: 146 additions & 0 deletions
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# PR_26146_105-108 Bundle Validation
2+
3+
## Scope
4+
- Baseline: `PR_26146_101-104`.
5+
- Lane: `PR_26146_105-108-midi-studio-v2-game-asset-lane`.
6+
- Impacted tool: MIDI Studio V2.
7+
8+
## Implementation Summary
9+
- Added Song Setup-owned Song Library controls for Save Song, Load Song, and Duplicate Song.
10+
- Song Library save stores runtime UI assets; Load Song and Duplicate Song insert canonical `music.songs[]` entries with generated IDs.
11+
- Expanded Classification workflow with common examples, custom classification preservation, and a generated ID preview.
12+
- Added Game Usage assignment separate from Classification and persisted it to `music.songs[].director.usage`.
13+
- Kept automatic game-trigger usage wiring red/unwired with an explanatory status tooltip.
14+
- Added Export tab game-manifest readiness details for song count, classification summary, section summary, sequence summary, instrument summary, and export readiness.
15+
16+
## Validation
17+
- PASS: changed-file syntax checks:
18+
- `node --check tools/midi-studio-v2/js/controls/SongDetailsControl.js`
19+
- `node --check tools/midi-studio-v2/js/controls/SongListControl.js`
20+
- `node --check tools/midi-studio-v2/js/controls/ExportPanelControl.js`
21+
- `node --check tools/midi-studio-v2/js/MidiStudioV2App.js`
22+
- `node --check tools/midi-studio-v2/js/bootstrap.js`
23+
- `node --check tests/playwright/tools/MidiStudioV2.spec.mjs`
24+
- PASS: targeted MIDI Studio Playwright validation:
25+
- `npx playwright test tests/playwright/tools/MidiStudioV2.spec.mjs -g "validates PR105-108 song library classification usage assignment and manifest readiness" --project=playwright --workers=1 --reporter=list`
26+
- TIMEOUT: `npm run test:workspace-v2` timed out after 600 seconds with no final result in this environment.
27+
- PASS: `git diff --check`.
28+
29+
## Playwright Coverage
30+
The targeted Playwright test verifies:
31+
- Song Library save, load, and duplicate workflows
32+
- Classification example application
33+
- custom classification preservation
34+
- generated ID behavior
35+
- Game Usage assignment persistence
36+
- red/unwired future game-trigger wiring
37+
- manifest readiness summary
38+
- export readiness ownership
39+
- canonical model integrity
40+
- Play/Stop correctness
41+
42+
## Samples Decision
43+
SKIP: samples are out of scope for this MIDI Studio V2 tool-only lane.
44+
45+
## Residual Risk
46+
- The full workspace-v2 command did not complete within 600 seconds, so no final workspace pass/fail result is available from this environment.
47+
- Song Library assets are runtime UI workflow assets. Loading or duplicating a song asset writes the cloned song into the canonical song model.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# PR_26146_105-108 Classification Map
2+
3+
## Ownership
4+
- Classification remains owned by Song Details.
5+
- Classification remains a human-entered metadata field.
6+
- Song Details owns the generated ID preview because generated ID is derived from Name and Classification.
7+
8+
## Common Examples
9+
The Classification examples library includes:
10+
- Menu
11+
- Intro
12+
- Loop
13+
- Boss
14+
- Victory
15+
- Game Over
16+
- Ambient
17+
- Cutscene
18+
- Underwater
19+
- Flying
20+
- Ice
21+
- Lava
22+
- Space
23+
- Castle
24+
- Town
25+
- Dungeon
26+
- Forest
27+
- Night
28+
- Stealth
29+
- Puzzle
30+
- Chase
31+
32+
## Custom Classification Preservation
33+
- The text Classification field accepts values outside the examples library.
34+
- Custom values update the generated ID preview.
35+
- Custom values continue to drive the existing classification-guided defaults as custom metadata.
36+
37+
## Generated ID
38+
- ID remains read-only.
39+
- ID remains generated as `camelCase(Name) + "-" + Classification`.
40+
- Playwright verifies both example-driven and custom Classification ID updates.
41+
42+
## Game Usage Separation
43+
- Game Usage assignment is persisted separately at `music.songs[].director.usage`.
44+
- Classification is not overwritten by Game Usage assignment.
45+
- Automatic game-trigger wiring remains red/unwired because the runtime trigger workflow is incomplete.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# PR_26146_105-108 Manifest Readiness Audit
2+
3+
## Export Ownership
4+
- Export tab remains the owner for export readiness and rendered output workflow.
5+
- Save WAV, Save MP3, and Save OGG remain owned by the Export tab.
6+
- SoundFont and rendering pipeline controls remain visible and red/unwired.
7+
8+
## Game Manifest Readiness Summary
9+
The Export tab now shows:
10+
- Song count
11+
- Classification summary
12+
- Section summary
13+
- Sequence summary
14+
- Instrument summary
15+
- Export readiness
16+
17+
## Data Sources
18+
- Song count comes from `music.songs[]`.
19+
- Classification summary comes from `music.songs[].classification`.
20+
- Section summary comes from populated `music.songs[].studioArrangement.songSheet.sections`.
21+
- Sequence summary comes from `music.songs[].studioArrangement.songSheet.sequence`.
22+
- Instrument summary comes from `music.songs[].studioArrangement.lanes`.
23+
- Export readiness checks rendered WAV/MP3/OGG target declaration and selected-song note readiness.
24+
25+
## Validation
26+
- Playwright verifies the manifest readiness block after Song Library duplicate/load operations increase canonical song count.
27+
- Playwright verifies Classification summary, section summary, sequence summary, instrument summary, selected generated ID, export status song count, output format ownership, and Play/Stop behavior.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# PR_26146_105-108 Song Library Map
2+
3+
## Ownership
4+
- Owner surface: Song Setup.
5+
- Runtime asset store: MIDI Studio V2 Song Library UI state.
6+
- Canonical write target: `music.songs[]` and `tools.midi-studio-v2.activeSongId`.
7+
8+
## Controls
9+
- `#saveSongButton`: saves the selected canonical song as a reusable Song Library asset.
10+
- `#loadSongButton`: loads the selected Song Library asset as a new canonical song.
11+
- `#duplicateSongButton`: duplicates the selected canonical song directly into `music.songs[]`.
12+
- `#songLibrarySelect`: selects a saved Song Library asset.
13+
- `#songLibrarySummary`: reports saved asset count and last workflow result.
14+
15+
## ID Preservation
16+
- Loaded and duplicated songs preserve Classification metadata.
17+
- New canonical songs receive generated IDs from `camelCase(Name) + "-" + Classification`.
18+
- Copy names are uniqued before ID derivation to avoid hidden ID collisions.
19+
20+
## Canonical Integrity
21+
- Save Song does not mutate the canonical model.
22+
- Load Song and Duplicate Song add full cloned song objects to `music.songs[]`.
23+
- The loaded or duplicated song becomes the active selected song.
24+
- The Octave Timeline and JSON Details refresh from the selected canonical song.
25+
26+
## Validation
27+
- Playwright verifies saved asset count, duplicate insertion, load insertion, active song ID, selected song name, and canonical song count.

0 commit comments

Comments
 (0)