You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- PASS - `npx playwright test tests/playwright/tools/AdminPlatformToolsWireframes.spec.mjs -g "Owner Operations"`:
22
+
- 2 passed.
23
+
- DavidQ owner/admin session sees storage status.
24
+
- Signed-in non-owner session is blocked from Owner Operations.
25
+
- WARN - `npm run test:workspace-v2` was run because this PR changes UI/API/storage-adjacent behavior. This command name is legacy; user-facing language remains Project Workspace.
26
+
- First run failed before PR211 behavior because the Playwright repo server helper did not load `.env` before creating the Local API router.
27
+
- Fixed the test helper to load `.env` server-side only, matching the Local API runtime path.
28
+
- Rerun improved to 3 passed / 2 failed.
29
+
- Remaining failures are outside PR211 scope: a root tools page error and Game Design/Controls repository method 500s in `RootToolsFutureState.spec.mjs`.
30
+
- PASS - Playwright V8 coverage report was produced at `docs_build/dev/reports/playwright_v8_coverage_report.txt`.
31
+
32
+
## Manual Validation Notes
33
+
- Owner Operations now includes a `Project Asset Storage Status` table.
34
+
- Safe status rows show storage configured state, endpoint, bucket, projects prefix, access key configured/hidden, and secret key configured/hidden.
35
+
- The page continues to state that secrets and configuration files are not editable from the browser.
36
+
- No inline HTML script/style/event handlers were added.
37
+
- No `start_of_day` folders or sample JSON were touched.
- PASS - Did not introduce silent fallbacks or hidden defaults.
47
+
- PASS - Did not introduce page-local product data arrays.
48
+
- PASS - Did not introduce browser storage SSoT.
49
+
- PASS - Did not introduce fake login, MEM DB, or custom auth.
50
+
- PASS - Did not modify `start_of_day` folders.
51
+
- PASS - Did not touch sample JSON.
52
+
- PASS - Did not add inline HTML script/style/event handlers.
53
+
- PASS - Used existing Theme V2 classes only on the public/root UI surface.
54
+
- PASS - Used Local API / Local DB terminology in report prose where DEV runtime is discussed.
55
+
- PASS - Produced required reports: `codex_review.diff`, `codex_changed_files.txt`, and this PR-specific report.
56
+
57
+
## Full Samples Decision
58
+
- SKIP - Full samples smoke was not run. PR211 changes Owner Operations status UI/API behavior only and does not touch samples, sample JSON, engine runtime, or shared sample launch surfaces.
- PASS - Current branch was `main` before and during implementation.
5
+
6
+
## Summary
7
+
- Wired the Assets DEV storage upload flow through the Local API repository and configured project asset storage contract.
8
+
- Removed the test-owned browser mock boundary for the affected storage path; the targeted test now uses the real Assets page, Local API repository calls, Local DB persistence, and API-owned storage read/list endpoints.
9
+
- Preserved server-side storage secrets: the browser receives read/list API routes and object keys, not access keys or secret keys.
10
+
11
+
## Requirement Checklist
12
+
- PASS - Hard stop unless current branch is `main`; branch guard passed.
13
+
- PASS - PR scope stayed on Assets real storage mode and the Local API/storage contract.
- PASS - Affected asset storage path no longer uses page-local product data arrays or browser-owned product-data behavior.
16
+
- PASS - Browser uploads through the Local API repository/service contract.
17
+
- PASS - Object writes use configured storage prefix `/dev/projects/` in the targeted storage validation.
18
+
- PASS - No storage secrets are rendered in the browser; the targeted Playwright test asserts access key and secret key text are absent.
19
+
- PASS - No fake login, MEM DB, custom auth, silent fallback, start_of_day edits, sample JSON edits, or inline HTML script/style/event handlers were added.
20
+
- PASS - DEV user-facing language uses Local API, Local DB, and SQLite terminology where touched.
- PASS - `npx playwright test tests/playwright/tools/AssetToolMockRepository.spec.mjs -g "Assets DEV storage upload list and read"`
29
+
- INFO - `docs_build/dev/reports/playwright_v8_coverage_report.txt` included as the advisory Playwright V8 coverage report for changed runtime JavaScript.
30
+
- PASS/SKIP - `node .\scripts\validate-storage-config.mjs`: `.env` loaded; live DEV storage values were not configured, so live storage validation skipped.
31
+
- FAIL (known unrelated lane failures) - `npm run test:workspace-v2`: 3 passed, 2 failed in `RootToolsFutureState.spec.mjs` due root tools page error `Cannot read properties of undefined (reading 'length')` and unrelated Game Design/Controls repository 500s. This command name is legacy; user-facing language remains Project Workspace.
32
+
33
+
## Manual Validation Notes
34
+
- Targeted storage test wrote `SMALL_PNG` through the Assets page and Local API to fake R2 storage.
35
+
- Evidence: storage server observed a `PUT` under `/dev/projects/<projectId>/image/<uploadFileName>.png`.
36
+
- Evidence: `GET /api/storage/project-assets/list?projectId=<projectId>` returned the stored key and `/dev/projects/` prefix.
37
+
- Evidence: `GET /api/storage/project-assets/read?key=<objectKey>` returned the uploaded bytes with `application/octet-stream`.
38
+
- Local DB persistence now writes only the asset runtime rows and the project row needed for the asset FK chain, not a broad browser-owned product snapshot.
39
+
40
+
## Full Samples Decision
41
+
- SKIP - Full samples smoke was not run because this PR changed a targeted Assets storage/API path and did not require shared samples runtime coverage.
- PASS - No fake login, MEM DB, custom auth, silent fallback, start_of_day edits, sample JSON edits, or inline HTML script/style/event handlers were added.
- PASS - `npx playwright test tests/playwright/tools/AssetToolMockRepository.spec.mjs -g "Assets DEV storage upload list and read"`
26
+
- INFO - `docs_build/dev/reports/playwright_v8_coverage_report.txt` included as the advisory Playwright V8 coverage report for changed runtime JavaScript.
27
+
- FAIL (known unrelated lane failures) - `npm run test:workspace-v2`: 3 passed, 2 failed in `RootToolsFutureState.spec.mjs` due root tools page error `Cannot read properties of undefined (reading 'length')` and unrelated Game Design/Controls repository 500s. This command name is legacy; user-facing language remains Project Workspace.
28
+
29
+
## Manual Validation Notes
30
+
- Targeted Playwright uploaded an image through the real Assets page and Local API storage path.
31
+
- Evidence: `GET /api/storage/project-assets/list?projectId=<projectId>` returned `/dev/projects/<projectId>/image/<fileName>.png`.
32
+
- Evidence: `GET /api/storage/project-assets/read?key=<objectKey>` returned the uploaded bytes.
33
+
- Evidence: Assets metadata displayed `Stored path: <objectKey>`, `Storage object key: <objectKey>`, and the API read URL.
34
+
- Evidence: `/api/product-data/snapshot` returned matching `asset_library_items.storedPath` and `asset_storage_objects.storedPath` for the uploaded object key.
35
+
36
+
## Full Samples Decision
37
+
- SKIP - Full samples smoke was not run because this PR changed the targeted asset metadata/storage-linking path and did not require shared samples runtime coverage.
- PASS - `npx playwright test tests/playwright/tools/AdminPlatformToolsWireframes.spec.mjs -g "Owner Operations"`
27
+
- INFO - `docs_build/dev/reports/playwright_v8_coverage_report.txt` included as the advisory Playwright V8 coverage report for changed runtime JavaScript; the final combined targeted run covered `toolbox/assets/assets.js` and reports advisory uncollected warnings for server/owner modules.
28
+
- PASS - `npm run validate:browser-env-agnostic`
29
+
- FAIL (known unrelated lane failures) - `npm run test:workspace-v2`: 3 passed, 2 failed in `RootToolsFutureState.spec.mjs` due root tools page error `Cannot read properties of undefined (reading 'length')` and unrelated Game Design/Controls repository 500s. This command name is legacy; user-facing language remains Project Workspace.
30
+
31
+
## Manual Validation Notes
32
+
- Owner test user sees the promotion foundation table with DEV, UAT, PROD, Export, Import, and Validate planning.
33
+
- Owner table text confirms Owner-only access, browser execution disabled, and destructive operations disabled.
34
+
- Promotion action `promote-dev-to-uat` returns `SKIP` and `executed=false`.
35
+
- Non-owner user remains blocked from Owner Operations and cannot see the promotion surface.
36
+
37
+
## Full Samples Decision
38
+
- SKIP - Full samples smoke was not run because this PR changed the targeted Owner Operations planning/status surface and did not require shared samples runtime coverage.
0 commit comments