|
| 1 | +# MASTER ROADMAP - SAMPLES TO TOOLS |
| 2 | + |
| 3 | +## Status Key |
| 4 | +- [x] complete |
| 5 | +- [.] in progress |
| 6 | +- [ ] planned |
| 7 | + |
| 8 | +## Goal |
| 9 | +- Establish a single source of truth sample-data lane where sample JSON is reused by both: |
| 10 | +- sample execution (`samples/phase-xx/xxxx/index.html`) |
| 11 | +- tool preload flows (`tools/<tool>/index.html?...`) |
| 12 | +- Exclude `Phase 20 - Tool Preset Integration` from this roadmap lane. |
| 13 | + |
| 14 | +## Source Inputs |
| 15 | +- `tmp/tools_used.txt` (tool sample coverage and candidate sample list) |
| 16 | +- `samples/metadata/samples.index.metadata.json` (sample catalog metadata) |
| 17 | +- `tools/toolRegistry.js` (active tool registry and ids) |
| 18 | + |
| 19 | +## Canonical Data Contract |
| 20 | +- [ ] File naming standard: `samples/phase-xx/xxxx/sample-xxxx.json` |
| 21 | +- [ ] Required fields: |
| 22 | +- `sampleId` (string) |
| 23 | +- `phase` (string) |
| 24 | +- `title` (string) |
| 25 | +- `description` (string) |
| 26 | +- `toolHints` (array of tool ids) |
| 27 | +- `payload` (object, tool-consumable source data) |
| 28 | +- [ ] Optional fields: |
| 29 | +- `runtime` (sample-only materialization hints) |
| 30 | +- `toolState` (tool-specific hydration hints) |
| 31 | +- `provenance` (path, createdAt, version) |
| 32 | + |
| 33 | +## Launch Contract (Shared) |
| 34 | +- [ ] Standard query parameters for tool launch: |
| 35 | +- `sampleId=<id>` |
| 36 | +- `samplePresetPath=/samples/phase-xx/xxxx/sample-xxxx.json` |
| 37 | +- [ ] Tool boot behavior: |
| 38 | +- detect contract params |
| 39 | +- fetch JSON from `samplePresetPath` |
| 40 | +- validate minimal schema |
| 41 | +- map to tool state via tool-specific adapter |
| 42 | +- render status indicating source sample |
| 43 | + |
| 44 | +## Rollout Plan |
| 45 | + |
| 46 | +### Phase 1 - Foundation + One Vertical Slice |
| 47 | +- [ ] Add shared adapter guidance document for sample-to-tool loading. |
| 48 | +- [ ] Implement one full reference flow: |
| 49 | +- sample page loads `sample-xxxx.json` |
| 50 | +- same file is passed to tool launch |
| 51 | +- tool hydrates from same file |
| 52 | +- [ ] Suggested first slice: `Parallax Scene Studio` (clear, low candidate count). |
| 53 | +- [ ] Validate: |
| 54 | +- sample runs using file |
| 55 | +- tool opens from sample and loads matching content |
| 56 | +- no Phase 20 coupling |
| 57 | + |
| 58 | +### Phase 2 - Highest Value Tools (from tools_used.txt) |
| 59 | +- [ ] Parallax Scene Studio (4 candidate samples) |
| 60 | +- [ ] Performance Profiler (2 candidate samples) |
| 61 | +- [ ] Physics Sandbox (2 candidate samples) |
| 62 | +- [ ] Replay Visualizer (3 candidate samples) |
| 63 | +- [ ] Vector Asset Studio (1 candidate sample) |
| 64 | +- [ ] Vector Map Editor (1 candidate sample) |
| 65 | +- [ ] For each: |
| 66 | +- create/link `sample-xxxx.json` in selected sample folders |
| 67 | +- add/open tool link with shared launch contract |
| 68 | +- verify tool state visibly matches sample payload intent |
| 69 | + |
| 70 | +### Phase 3 - Core Editor/Workflow Tools |
| 71 | +- [ ] Sprite Editor (9 candidates) |
| 72 | +- [ ] Tilemap Studio (15 candidates) |
| 73 | +- [ ] Tile Model Converter (18 candidates) |
| 74 | +- [ ] Asset Browser / Import Hub (8 candidates) |
| 75 | +- [ ] Asset Pipeline Tool (10 candidates) |
| 76 | +- [ ] Palette Browser / Manager (6 candidates) |
| 77 | +- [ ] State Inspector (26 candidates) |
| 78 | +- [ ] For each tool: |
| 79 | +- select top 3-5 high-signal non-Phase-20 samples first |
| 80 | +- wire shared JSON loading |
| 81 | +- confirm deterministic load behavior |
| 82 | + |
| 83 | +### Phase 4 - 3D Utility Surfaces |
| 84 | +- [ ] 3D JSON Payload Normalizer (41 candidates; prioritize strict map/payload samples) |
| 85 | +- [ ] 3D Asset Viewer (31 candidates; prioritize asset-centric samples) |
| 86 | +- [ ] 3D Camera Path Editor (47 candidates; prioritize camera/path-centric samples) |
| 87 | +- [ ] Select precise, semantically aligned samples only (avoid broad keyword-only linkage). |
| 88 | + |
| 89 | +### Phase 5 - Phase 20 Decommission (After Parity) |
| 90 | +- [ ] Keep `Phase 20 - Tool Preset Integration` active until Samples2Tools parity is execution-validated. |
| 91 | +- [ ] Define parity gate: |
| 92 | +- sample-to-tool launch coverage equals or exceeds current Phase 20 matrix intent. |
| 93 | +- preset/state preload behavior is validated in replacement lane. |
| 94 | +- replacement reports exist and are repeatable. |
| 95 | +- [ ] Mark Phase 20 as `deprecated` in docs once parity gate passes. |
| 96 | +- [ ] Remove Phase 20 links from primary launch surfaces after deprecation window. |
| 97 | +- [ ] Remove Phase 20 artifacts only after final signoff (no dangling references in docs/tests/reports). |
| 98 | + |
| 99 | +## Prioritization Rules |
| 100 | +- [ ] Prefer semantically exact sample-tool matches over high volume. |
| 101 | +- [ ] Limit initial additions per tool card to 2-5 links. |
| 102 | +- [ ] Use non-Phase-20 samples only in this lane. |
| 103 | +- [ ] Maintain stable sample identity (`sample-xxxx.json`) for reproducibility. |
| 104 | + |
| 105 | +## Validation Checklist |
| 106 | +- [ ] Every linked sample has `sample-xxxx.json`. |
| 107 | +- [ ] Sample page consumes same JSON it passes to tool. |
| 108 | +- [ ] Tool launch with `samplePresetPath` succeeds without manual edits. |
| 109 | +- [ ] Tool status includes loaded sample id/path. |
| 110 | +- [ ] Metadata and tool card links resolve correctly. |
| 111 | +- [ ] No regressions to direct tool launch without sample params. |
| 112 | + |
| 113 | +## Reporting Outputs (per execution batch) |
| 114 | +- [ ] `docs/dev/reports/samples2tools_batch_<n>_summary.txt` |
| 115 | +- [ ] `docs/dev/reports/samples2tools_batch_<n>_validation.txt` |
| 116 | +- [ ] `docs/dev/reports/samples2tools_link_map_<n>.json` |
| 117 | + |
| 118 | +## Current Snapshot (from tools_used.txt) |
| 119 | +- [x] Current tagged samples across active tools: `0` (excluding Phase 20) |
| 120 | +- [x] Candidate coverage inventory exists for all active tools |
| 121 | +- [ ] Convert candidates into curated, validated sample-to-tool links |
0 commit comments