Skip to content

Commit 1f3d277

Browse files
committed
Validate MVP path and align tool status inventory - PR_26160_088-mvp-path-validation-and-status-alignment
1 parent 06cbce7 commit 1f3d277

13 files changed

Lines changed: 319 additions & 59 deletions

docs_build/dev/PROJECT_INSTRUCTIONS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,12 +262,14 @@ The authoritative tool status values are:
262262
- `wireframe`
263263
- `beta`
264264
- `complete`
265+
- `deprecated`
265266

266267
Status definitions:
267268
- `planned`: Not designed yet. No meaningful UI. No ownership defined.
268269
- `wireframe`: Tool exists. User can understand workflow. Data ownership is defined. Not functionally usable.
269270
- `beta`: Functionally usable. Can be used in a real game. May still contain incomplete workflows, placeholder data, UI cleanup issues, unused fields, missing validation, or incomplete code review.
270271
- `complete`: Functionally usable. Code reviewed. Dead code removed. Invalid fields removed. UI cleaned up. No known placeholder data. No known invalid controls. Ready for long-term support.
272+
- `deprecated`: Tool remains supported but is not recommended for new workflows. Must remain deprecated before removal.
271273

272274
UAT rule:
273275
- A tool required for the current MVP game path must be `beta` or `complete` before UAT.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
docs_build/dev/PROJECT_INSTRUCTIONS.md
2+
docs_build/dev/reports/codex_changed_files.txt
3+
docs_build/dev/reports/codex_review.diff
4+
docs_build/dev/reports/coverage_changed_js_guardrail.txt
5+
docs_build/dev/reports/mvp-path-validation-and-status-alignment-report.md
6+
docs_build/dev/reports/playwright_v8_coverage_report.txt
7+
src/dev-runtime/guest-seeds/tool-metadata-inventory.js
8+
src/dev-runtime/server/mock-api-router.mjs
9+
tests/playwright/tools/BuildPathProgressSimplification.spec.mjs
10+
tests/playwright/tools/ToolboxAdminMetadataSsot.spec.mjs
11+
tests/playwright/tools/ToolboxRoutePages.spec.mjs
12+
toolbox/toolRegistry.js
13+
toolbox/tools-page-accordions.js
99.2 KB
Binary file not shown.

docs_build/dev/reports/coverage_changed_js_guardrail.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ Source: Playwright/Chromium built-in V8 coverage from the active Playwright run.
77

88
Changed runtime JS files considered:
99
(0%) src/dev-runtime/guest-seeds/tool-metadata-inventory.js - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only
10+
(0%) src/dev-runtime/server/mock-api-router.mjs - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only
1011
(0%) toolbox/toolRegistry.js - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only
11-
(93%) admin/tool-votes.js - executed lines 406/406; executed functions 53/57
12-
(96%) toolbox/tools-page-accordions.js - executed lines 960/960; executed functions 110/114
12+
(84%) toolbox/tools-page-accordions.js - executed lines 965/965; executed functions 92/109
1313

1414
Guardrail warnings:
1515
(0%) src/dev-runtime/guest-seeds/tool-metadata-inventory.js - WARNING: changed runtime JS file missing from coverage; advisory only
16+
(0%) src/dev-runtime/server/mock-api-router.mjs - WARNING: changed runtime JS file missing from coverage; advisory only
1617
(0%) toolbox/toolRegistry.js - WARNING: changed runtime JS file missing from coverage; advisory only
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
# PR_26160_088 MVP Path Validation And Status Alignment Report
2+
3+
## Branch Validation
4+
5+
| Check | Status | Evidence |
6+
| --- | --- | --- |
7+
| Current branch is `main` | PASS | `git branch --show-current` returned `main`. |
8+
| Expected branch is `main` | PASS | Main branch execution guard satisfied before edits. |
9+
| Local branches found | PASS | `git branch --format "%(refname:short)"` returned `main`. |
10+
11+
## Implementation Summary
12+
13+
- Added authoritative `deprecated` release-channel governance to `docs_build/dev/PROJECT_INSTRUCTIONS.md`.
14+
- Added `deprecated` to the DB-backed Toolbox release-channel contract and compatibility stub.
15+
- Marked Build Game as DB-backed `status: Deprecated` / `releaseChannel: deprecated`.
16+
- Added a Theme V2 swatch mapping for deprecated status through the server toolbox contract.
17+
- Updated Toolbox rendering so deprecated tools are supported, voteable, filterable, and opt-in visible for non-admin users.
18+
- Updated targeted Playwright coverage for status counts, tooltips, Admin Tool Votes state editing, Build Path ordering, and MVP-path reconciliation.
19+
20+
## PR 085 Completion Review
21+
22+
| Requirement | Status | Evidence |
23+
| --- | --- | --- |
24+
| Add authoritative tool status governance | PASS | `docs_build/dev/PROJECT_INSTRUCTIONS.md` contains `## TOOL STATUS GOVERNANCE`. |
25+
| Define `planned`, `wireframe`, `beta`, `complete` | PASS | Existing governance section defines all four statuses. |
26+
| Add MVP UAT rule requiring beta or complete | PASS | Existing governance section states MVP-path tools must be `beta` or `complete` before UAT. |
27+
| Preserve existing valid values | PASS | Existing values remain; PR088 adds `deprecated` as a new valid value. |
28+
29+
## PR 086 Completion Review
30+
31+
| Requirement | Status | Evidence |
32+
| --- | --- | --- |
33+
| Update Toolbox/Admin status tooltip hover text from governance | PASS | `src/dev-runtime/guest-seeds/tool-metadata-inventory.js` exports shared `TOOL_RELEASE_CHANNEL_HELP_TEXT`; `/api/toolbox/registry/snapshot` exposes it. |
34+
| Tooltip appears in Toolbox Build Path | PASS | `toolbox/tools-page-accordions.js` uses release-channel help text on filter buttons and Build Path status cells. |
35+
| Tooltip appears in Admin Tool Votes | PASS | `admin/tool-votes.js` consumes the same contract; targeted `ToolboxAdminMetadataSsot` and `ToolboxRoutePages` Playwright lanes passed. |
36+
| Avoid duplicate hardcoded definitions where shared metadata exists | PASS | Runtime source remains the shared toolbox contract; `toolbox/toolRegistry.js` remains compatibility-only. |
37+
38+
## PR 087 Completion Review
39+
40+
| Requirement | Status | Evidence |
41+
| --- | --- | --- |
42+
| Update DB-backed order for paddle + ball MVP path | PASS | API probe from `getActiveToolRegistry()` shows Project Workspace, Game Design, Colors, Assets, Game Configuration, Objects, Controls, Hitboxes, Events, Saved Data, Debug, Game Testing, Publish, Project Journey in the expected current DB-backed order. |
43+
| Move Project Journey after Game Testing | PASS | Project Journey order is `14`, after Game Testing order `12` and Publish order `13`. |
44+
| Include Publish in MVP path | PASS | Publish exists as DB-backed tool metadata at order `13`. |
45+
| Move Particles group from Audio to Design | PASS | Targeted `ToolboxAdminMetadataSsot` validates Particles group is `Design`. |
46+
| Preserve MIDI and Music as separate tools | PASS | Targeted `ToolboxAdminMetadataSsot` validates MIDI and Music remain separate Audio rows. |
47+
| Ensure every MVP-path tool is beta or complete before UAT | FAIL for readiness, PASS for no false advancement | Current DB-backed MVP-path records still include planned/wireframe tools that lack evidence for beta. PR088 keeps those statuses honest and reports them as UAT blockers instead of advancing without evidence. |
48+
49+
## Deprecated Status Alignment
50+
51+
| Requirement | Status | Evidence |
52+
| --- | --- | --- |
53+
| Add new status `deprecated` | PASS | `TOOL_RELEASE_CHANNELS` now includes `deprecated`; Admin Tool Votes state select includes Deprecated. |
54+
| Add governance for deprecated status | PASS | `PROJECT_INSTRUCTIONS.md` defines: Tool remains supported but is not recommended for new workflows. Must remain deprecated before removal. |
55+
| Mark Build Game deprecated if Publish + Project Journey now own responsibilities | PASS | `src/dev-runtime/guest-seeds/tool-metadata-inventory.js` marks Build Game `Deprecated` / `deprecated`. Build Game remains supported and opt-in visible. |
56+
| Update Build Path counts to include deprecated | PASS | Targeted Playwright validates `Deprecated (1)` filter/count and Build Game visibility when selected. |
57+
| Do not advance tool status without evidence | PASS | No planned/wireframe MVP-path tool was promoted. |
58+
59+
## MVP Path Reconciliation From DB-Backed Inventory
60+
61+
Source: `getActiveToolRegistry()` from `src/dev-runtime/guest-seeds/tool-metadata-inventory.js`.
62+
63+
DB-backed inventory count: 43.
64+
65+
Release-channel counts:
66+
67+
| Status | Count |
68+
| --- | ---: |
69+
| planned | 33 |
70+
| wireframe | 3 |
71+
| beta | 5 |
72+
| complete | 1 |
73+
| deprecated | 1 |
74+
75+
Intended MVP-path count: 15.
76+
77+
Resolved MVP-path entries: 15.
78+
79+
Unique current tool records used: 14, because Vector Asset Studio is currently merged into Assets.
80+
81+
| Intended MVP Tool | Actual DB-Backed Tool Record | Mapping | Status | Valid Status | UAT Readiness |
82+
| --- | --- | --- | --- | --- | --- |
83+
| Project Workspace | Project Workspace | exact | beta | PASS | PASS |
84+
| Game Design | Game Design | exact | beta | PASS | PASS |
85+
| Colors | Colors | exact | complete | PASS | PASS |
86+
| Assets | Assets | exact | beta | PASS | PASS |
87+
| Vector Asset Studio | Assets | merged | beta | PASS | PASS through Assets vector ownership |
88+
| Game Configuration | Game Configuration | exact | beta | PASS | PASS |
89+
| Objects | Objects | exact | planned | PASS | BLOCKER |
90+
| Controls | Controls | exact | planned | PASS | BLOCKER |
91+
| Hitboxes | Hitboxes | exact | planned | PASS | BLOCKER |
92+
| Events | Events | exact | planned | PASS | BLOCKER |
93+
| Saved Data | Saved Data | exact | wireframe | PASS | BLOCKER |
94+
| Debug | Debug | exact | planned | PASS | BLOCKER |
95+
| Game Testing | Game Testing | exact | planned | PASS | BLOCKER |
96+
| Publish | Publish | exact | planned | PASS | BLOCKER |
97+
| Project Journey | Project Journey | exact | beta | PASS | PASS |
98+
99+
## Renamed/Merged/Missing Tool Report
100+
101+
| Requested Tool | Result | Evidence |
102+
| --- | --- | --- |
103+
| Vector Asset Studio | MERGED | No active DB-backed record or active route exists. Current Assets tool owns vector creation scope in its DB-backed description and status. |
104+
| Objects | FOUND | DB-backed record exists with status `planned`. |
105+
| Controls | FOUND | DB-backed record exists with status `planned`. |
106+
| Hitboxes | FOUND | DB-backed record exists with status `planned`. |
107+
| Events | FOUND | DB-backed record exists with status `planned`. |
108+
| Publish | FOUND | DB-backed record exists with status `planned`. |
109+
| Project Journey | FOUND | DB-backed record exists with status `beta`. |
110+
111+
No requested MVP-path entry is unresolved after applying the Vector Asset Studio -> Assets merge mapping.
112+
113+
## Validation
114+
115+
| Lane | Status | Notes |
116+
| --- | --- | --- |
117+
| Branch guard | PASS | Current branch `main`. |
118+
| Changed-file syntax | PASS | `node --check` passed for changed JS and spec files. |
119+
| API/DB inventory probe | PASS | Confirmed 43 tools, deprecated channel, Build Game deprecated, and 15 MVP-path mappings. |
120+
| Toolbox/Admin Tool Votes Playwright | PASS | `npx playwright test tests/playwright/tools/ToolboxAdminMetadataSsot.spec.mjs --reporter=line` passed 4/4 after standalone rerun. |
121+
| Build Path Playwright | PASS | `npx playwright test tests/playwright/tools/BuildPathProgressSimplification.spec.mjs --reporter=line` passed 4/4. |
122+
| Toolbox status/count/ordering Playwright | PASS | `npx playwright test tests/playwright/tools/ToolboxRoutePages.spec.mjs --reporter=line` passed 8/8. |
123+
| Static diff check | PASS | `git diff --check` passed with Windows line-ending warnings only before generated review artifacts were staged. Source/report files excluding generated `codex_review.diff` also passed `git diff --cached --check -- . ':!docs_build/dev/reports/codex_review.diff'`. |
124+
| Playwright V8 coverage | PASS advisory | `docs_build/dev/reports/playwright_v8_coverage_report.txt` updated; `toolbox/tools-page-accordions.js` covered at 84%. Server/dev-runtime changed files are not browser-collected and are listed as advisory warnings. |
125+
126+
One parallel rerun of `ToolboxAdminMetadataSsot` hit a Playwright artifact cleanup race (`ENOENT` trace zip). The same lane was immediately rerun standalone and passed 4/4.
127+
128+
## Impacted Lanes
129+
130+
- Toolbox Build Path status counts and ordering.
131+
- Admin Tool Votes status contract and state select.
132+
- Toolbox tile status tooltips, deprecated visibility, and voting support.
133+
134+
## Skipped Lanes
135+
136+
| Lane | Reason |
137+
| --- | --- |
138+
| Full samples validation | Explicitly out of scope; no sample loader/framework changes. |
139+
| Unrelated tool runtime lanes | PR changes are scoped to Toolbox/Admin Tool Votes status inventory and tests. |
140+
141+
## Manual Test Notes
142+
143+
- Deprecated tools are not default-visible for non-admin users.
144+
- Selecting the Deprecated filter reveals Build Game as a supported but not recommended workflow.
145+
- Build Game remains linkable and voteable; planned/wireframe MVP blockers were not promoted without evidence.

docs_build/dev/reports/playwright_v8_coverage_report.txt

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,42 +12,37 @@ Note: entry percentages use function coverage when available, otherwise line cov
1212
Note: coverage entries are aggregated across every page/tool where coverageReporter.start(page) and coverageReporter.stop(page) ran.
1313

1414
Exercised tool entry points detected:
15-
(70%) Toolbox Index - exercised 9 runtime JS files
15+
(81%) Toolbox Index - exercised 3 runtime JS files
1616
(0%) Tool Template V2 - not exercised by this Playwright run
1717
(74%) Theme V2 Shared JS - exercised 2 runtime JS files
1818

1919
Changed runtime JS files covered:
2020
(0%) src/dev-runtime/guest-seeds/tool-metadata-inventory.js - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only
21+
(0%) src/dev-runtime/server/mock-api-router.mjs - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only
2122
(0%) toolbox/toolRegistry.js - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only
22-
(93%) admin/tool-votes.js - executed lines 406/406; executed functions 53/57
23-
(96%) toolbox/tools-page-accordions.js - executed lines 960/960; executed functions 110/114
23+
(84%) toolbox/tools-page-accordions.js - executed lines 965/965; executed functions 92/109
2424

2525
Files with executed line/function counts where available:
2626
(38%) src/engine/api/session-api-client.js - executed lines 34/34; executed functions 3/8
27-
(55%) toolbox/project-journey/project-journey.js - executed lines 1002/1002; executed functions 54/99
28-
(58%) src/engine/api/server-api-client.js - executed lines 159/159; executed functions 11/19
29-
(58%) toolbox/colors/colors.js - executed lines 1848/1848; executed functions 119/204
27+
(50%) src/engine/api/toolbox-votes-api-client.js - executed lines 46/46; executed functions 3/6
28+
(53%) src/engine/api/server-api-client.js - executed lines 159/159; executed functions 10/19
3029
(64%) assets/theme-v2/js/tool-display-mode.js - executed lines 209/209; executed functions 9/14
31-
(71%) toolbox/assets/assets.js - executed lines 519/519; executed functions 42/59
30+
(64%) toolbox/tool-registry-api-client.js - executed lines 152/152; executed functions 16/25
3231
(77%) assets/theme-v2/js/gamefoundry-partials.js - executed lines 603/603; executed functions 43/56
33-
(83%) src/engine/api/toolbox-votes-api-client.js - executed lines 46/46; executed functions 5/6
34-
(89%) toolbox/tool-registry-api-client.js - executed lines 152/152; executed functions 25/28
35-
(93%) admin/tool-votes.js - executed lines 406/406; executed functions 53/57
36-
(96%) toolbox/tools-page-accordions.js - executed lines 960/960; executed functions 110/114
37-
(100%) toolbox/assets/assets-api-client.js - executed lines 17/17; executed functions 3/3
38-
(100%) toolbox/colors/palette-api-client.js - executed lines 28/28; executed functions 4/4
39-
(100%) toolbox/project-journey/project-journey-api-client.js - executed lines 13/13; executed functions 2/2
32+
(78%) admin/tool-votes.js - executed lines 406/406; executed functions 43/55
33+
(84%) toolbox/tools-page-accordions.js - executed lines 965/965; executed functions 92/109
4034
(100%) toolbox/project-workspace/project-workspace-api-client.js - executed lines 12/12; executed functions 2/2
4135

4236
Uncovered or low-coverage changed JS files:
4337
(0%) src/dev-runtime/guest-seeds/tool-metadata-inventory.js - WARNING: uncovered changed runtime JS file; advisory only
38+
(0%) src/dev-runtime/server/mock-api-router.mjs - WARNING: uncovered changed runtime JS file; advisory only
4439
(0%) toolbox/toolRegistry.js - WARNING: uncovered changed runtime JS file; advisory only
4540

4641
Changed JS files considered:
4742
(0%) src/dev-runtime/guest-seeds/tool-metadata-inventory.js - changed JS file not collected as browser runtime coverage
43+
(0%) src/dev-runtime/server/mock-api-router.mjs - changed JS file not collected as browser runtime coverage
4844
(0%) tests/playwright/tools/BuildPathProgressSimplification.spec.mjs - changed JS file not collected as browser runtime coverage
4945
(0%) tests/playwright/tools/ToolboxAdminMetadataSsot.spec.mjs - changed JS file not collected as browser runtime coverage
5046
(0%) tests/playwright/tools/ToolboxRoutePages.spec.mjs - changed JS file not collected as browser runtime coverage
5147
(0%) toolbox/toolRegistry.js - changed JS file not collected as browser runtime coverage
52-
(93%) admin/tool-votes.js - changed JS file with browser V8 coverage
53-
(96%) toolbox/tools-page-accordions.js - changed JS file with browser V8 coverage
48+
(84%) toolbox/tools-page-accordions.js - changed JS file with browser V8 coverage

src/dev-runtime/guest-seeds/tool-metadata-inventory.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,24 @@ export const TOOL_RELEASE_CHANNELS = Object.freeze([
1313
"planned",
1414
"wireframe",
1515
"beta",
16-
"complete"
16+
"complete",
17+
"deprecated"
1718
]);
1819

1920
export const TOOL_RELEASE_CHANNEL_LABELS = Object.freeze({
2021
planned: "Planned",
2122
wireframe: "Wireframe",
2223
beta: "Beta",
23-
complete: "Complete"
24+
complete: "Complete",
25+
deprecated: "Deprecated"
2426
});
2527

2628
export const TOOL_RELEASE_CHANNEL_HELP_TEXT = Object.freeze({
2729
planned: "Not designed yet.\nNo meaningful UI.\nNo ownership defined.",
2830
wireframe: "Tool exists.\nUser can understand workflow.\nData ownership is defined.\nNot functionally usable.",
2931
beta: "Functionally usable.\nCan be used in a real game.\nMay still contain incomplete workflows, placeholder data, UI cleanup issues, unused fields, missing validation, or incomplete code review.",
30-
complete: "Functionally usable.\nCode reviewed.\nDead code removed.\nInvalid fields removed.\nUI cleaned up.\nNo known placeholder data.\nNo known invalid controls.\nReady for long-term support."
32+
complete: "Functionally usable.\nCode reviewed.\nDead code removed.\nInvalid fields removed.\nUI cleaned up.\nNo known placeholder data.\nNo known invalid controls.\nReady for long-term support.",
33+
deprecated: "Tool remains supported but is not recommended for new workflows.\nMust remain deprecated before removal."
3134
});
3235

3336
export const TOOL_REGISTRY_REQUIRED_METADATA_FIELDS = Object.freeze([
@@ -58,7 +61,7 @@ const RELEASE_CHANNEL_BY_STATUS = Object.freeze({
5861
"Under Construction": "beta",
5962
Planned: "planned",
6063
Hidden: "planned",
61-
Deprecated: "planned"
64+
Deprecated: "deprecated"
6265
});
6366

6467
export const TOOL_REGISTRY = Object.freeze([
@@ -657,8 +660,8 @@ export const TOOL_REGISTRY = Object.freeze([
657660
"requires": [
658661
"game-configuration"
659662
],
660-
"status": "Wireframe",
661-
"releaseChannel": "wireframe",
663+
"status": "Deprecated",
664+
"releaseChannel": "deprecated",
662665
"progressChecklist": [
663666
"Review readiness",
664667
"Static wireframe text only"

src/dev-runtime/server/mock-api-router.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const TOOLBOX_RELEASE_CHANNEL_SWATCHES = Object.freeze({
9797
wireframe: "swatch-blue",
9898
beta: "swatch-gold",
9999
complete: "swatch-green",
100+
deprecated: "swatch-purple",
100101
});
101102
const TOOLBOX_ROLE_FOCUS_TOOLS = Object.freeze({
102103
Owner: null,

tests/playwright/tools/BuildPathProgressSimplification.spec.mjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,10 @@ test("Toolbox removes Progress view and renders the DB-backed Build Path table",
106106

107107
await expect(page.locator("[data-toolbox-status-filter]")).toHaveText([
108108
"Planned (29)",
109-
"Wireframe (4)",
109+
"Wireframe (3)",
110110
"Beta (5)",
111111
"Complete (1)",
112+
"Deprecated (1)",
112113
]);
113114
const rows = await buildPathRows(page);
114115
expect(rows).toEqual([

0 commit comments

Comments
 (0)