|
| 1 | +# PR_26177_CHARLIE_018-sprites-testable-mvp-completion |
| 2 | + |
| 3 | +Team: Charlie |
| 4 | + |
| 5 | +Status: PASS |
| 6 | + |
| 7 | +## Scope |
| 8 | + |
| 9 | +Completed the Sprites MVP to a manually testable state without splitting additional PRs. |
| 10 | + |
| 11 | +Implemented: |
| 12 | +- Toolbox Sprites entry is active/clickable through the source-controlled registry. |
| 13 | +- `/toolbox/sprites/index.html` loads a Theme V2 Sprites workspace. |
| 14 | +- Sprites uses Web UI -> API/service contract -> asset repository. |
| 15 | +- Sprite list/create/edit/archive flows are API-backed through `/api/toolbox/sprites`. |
| 16 | +- Guest save attempts redirect to `account/sign-in.html`. |
| 17 | +- Preview/metadata surface shows product-safe metadata and explicit unavailable preview state. |
| 18 | +- Palette/Colors remains reusable color SSoT; Sprites stores `paletteColorKey` only. |
| 19 | +- Search/filter/status/category/tag controls are available. |
| 20 | +- Reference protection disables destructive delete and shows explicit unavailable Object/World reference state. |
| 21 | + |
| 22 | +## Changed Files |
| 23 | + |
| 24 | +- `assets/toolbox/sprites/js/index.js` |
| 25 | +- `docs_build/dev/reports/coverage_changed_js_guardrail.txt` |
| 26 | +- `docs_build/dev/reports/playwright_v8_coverage_report.txt` |
| 27 | +- `src/dev-runtime/persistence/tool-repositories/assets-mock-repository.js` |
| 28 | +- `src/dev-runtime/server/local-api-router.mjs` |
| 29 | +- `src/shared/toolbox/tool-metadata-inventory.js` |
| 30 | +- `tests/dev-runtime/SpritesAssetRepository.test.mjs` |
| 31 | +- `tests/playwright/tools/SpritesToolMvp.spec.mjs` |
| 32 | +- `tests/playwright/tools/ToolboxRoutePages.spec.mjs` |
| 33 | +- `toolbox/sprites/index.html` |
| 34 | + |
| 35 | +## Validation |
| 36 | + |
| 37 | +PASS `node ./scripts/run-node-test-files.mjs tests/dev-runtime/SpritesAssetRepository.test.mjs` |
| 38 | + |
| 39 | +PASS `npx playwright test tests/playwright/tools/SpritesToolMvp.spec.mjs --workers=1 --reporter=list` |
| 40 | + |
| 41 | +PASS `npx playwright test tests/playwright/tools/ToolNavigationPrevNext.spec.mjs -g "Toolbox card names link" --workers=1 --reporter=list` |
| 42 | + |
| 43 | +PASS `npx playwright test tests/playwright/tools/ToolboxRoutePages.spec.mjs -g "toolbox index shows wireframe and beta tools|toolbox status kickers" --workers=1 --reporter=list` |
| 44 | + |
| 45 | +Note: one combined Toolbox status run hit a Playwright artifact timeout after the index test passed; the exact status test was rerun independently and passed. |
| 46 | + |
| 47 | +PASS `npx playwright test tests/playwright/tools/ToolboxRoutePages.spec.mjs -g "toolbox status kickers, filters, card order, and voting controls work from registry metadata" --workers=1 --reporter=list --timeout=180000` |
| 48 | + |
| 49 | +PASS `npx playwright test tests/playwright/tools/ToolboxRoutePages.spec.mjs -g "toolbox Build Path status filters" --workers=1 --reporter=list --timeout=180000` |
| 50 | + |
| 51 | +PASS `git diff --check` |
| 52 | + |
| 53 | +PASS static scan for inline style/script/event handler usage in Sprites HTML/JS. |
| 54 | + |
| 55 | +PASS static scan for forbidden Sprites persistence patterns in Sprites HTML/JS. |
| 56 | + |
| 57 | +## Notes |
| 58 | + |
| 59 | +- No `start_of_day` files changed. |
| 60 | +- No browser storage product-data SSoT introduced. |
| 61 | +- No MEM DB, local-mem, fake-login, SQLite direction, or silent product-data fallback introduced. |
| 62 | +- Sprites deliberately reuses the existing asset repository through a Sprites API alias rather than adding a parallel database architecture. |
| 63 | +- Destructive delete remains disabled until Object/World reference contracts can verify real references. |
0 commit comments