The plan was delivered as wp-suite-implementation-spec.zip and lived only in Downloads, so every "read CLAUDE.md first" instruction in it pointed at a file the repo did not have. Bring it in unchanged: CLAUDE.md, IMPLEMENTATION.md, and docs/waves/wave-0 through wave-9 plus backlog.md. UX-REVIEW-2026-08-14.md is committed alongside it. It is the review that produced F1-F6, S1-S13 and the A/B/C assessments, and item IDs throughout the wave files cite it, so it belongs under version control rather than sitting untracked in the working tree. No application code changes here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
164 lines
9.2 KiB
Markdown
164 lines
9.2 KiB
Markdown
# Work Package Suite — Implementation Plan
|
||
|
||
Derived from **Consolidated Change Request R2**, August 14, 2026.
|
||
Companion document for humans: `WorkPackageSuite_Consolidated_Change_Request_R2.docx`.
|
||
|
||
55 items, 9 waves, dependency-ordered. Read `CLAUDE.md` first.
|
||
|
||
---
|
||
|
||
## 1. Where this came from
|
||
|
||
Three inputs were merged to produce this plan:
|
||
|
||
| Source | Produced | IDs |
|
||
|---|---|---|
|
||
| 13 in-app feedback comments, Aug 14 2026 (01:11–01:32 PM) | Functional change requests | `CR-001`–`CR-018` |
|
||
| Micron EUV review meeting, Aug 14 2026 | Functional change requests and context | included above |
|
||
| UX review of `html/`, Aug 14 2026, branch `users/directory-super-user` | Rendering defects, structural findings, proposal assessment | `F1`–`F6`, `S1`–`S13`, `A1`–`A7`, `B1`–`B7`, `C1`–`C4` |
|
||
|
||
`F1`–`F6` were verified in a browser and are reproducible. `S1`–`S13` were read from source
|
||
and carry file and line references. `A`/`B`/`C` items assess a separately proposed UX change
|
||
list; their IDs are carried over unchanged so the two documents line up.
|
||
|
||
## 2. Decisions (all closed)
|
||
|
||
Approved by Nick Siegfried, August 14 2026. Nothing in this plan is blocked pending a
|
||
decision. Do not reopen these without a spec revision.
|
||
|
||
| ID | Decision |
|
||
|---|---|
|
||
| `CR-009` | **Keep and extend Kitting.** Build `CR-010`, `CR-011`, `CR-012`. Ship it toggled **off** for the Micron EUV SOP via the `CR-006` section toggles. Kitting is not happening at Micron today; the team expects to get there. |
|
||
| `CR-013` | **Build the lightweight material request.** Line items (description, quantity, unit), needed-by date, requestor, delivery location, status. **Defer** the parts catalog, live inventory, and warehouse integration. Sequence after the creator has real section structure (see `X6`). |
|
||
| `B7` | **Dissolve the creator iframe.** Scheduled as `T7.1`, the first task of wave 7. This is the largest engineering item in the plan and most of wave 7 depends on it. |
|
||
| `C1` | **Accessibility is in scope.** Fold it into components already being rebuilt rather than treating it as a separate pass. Rules are in `CLAUDE.md`. |
|
||
|
||
> If the `B7` decision was meant as "schedule the decision" rather than "dissolve the
|
||
> iframe", that is the one line in this plan to correct before wave 7 starts. Everything
|
||
> before wave 7 is unaffected either way.
|
||
|
||
## 3. Cross-track dependencies
|
||
|
||
These are the reason the wave order is what it is. Each row is a change request that cannot
|
||
be built as written, or cannot be built once, until something else lands.
|
||
|
||
| ID | Item | Depends on | Type | Why |
|
||
|---|---|---|---|---|
|
||
| `X1` | `CR-011`, `CR-014` | `S3` | **Blocking** | Both promise an email containing a direct link to the work package. There is no `pushState` anywhere in the app, so no work package has an addressable URL. The emails cannot be built until URL state exists. |
|
||
| `X2` | `CR-015` | `A1` | **Blocking** | The hold-not-clearing bug and the transition model are the same code. `wp-creation-app.js:1962-1972` shows a deliberate logged-override path, so hold state is not purely derived from open constraints. Fixing them separately means fixing it twice. |
|
||
| `X3` | `CR-014` | `A1` | Sequencing | `Ready for QA` is a new state and must land inside the guarded transition model, not beside it. |
|
||
| `X4` | `CR-006` | `B7` | Sequencing | Section toggles must suppress sections inside the creator, which is an iframe child until `T7.1`. |
|
||
| `X5` | `CR-004`, `CR-018` | `B4` | **Blocking** | Rollup by building, floor and sector cannot come from `localStorage`. Same data dependency that blocks the pipeline strip. |
|
||
| `X6` | `CR-013` | `F6`, `A4` | Sequencing | A material request card is a 12th card on a form already ~4,700px tall. Build it after the form has section structure. |
|
||
| `X7` | `CR-003` | `C3` | Sequencing | Priority color coding needs one source of truth for color, or Normal/High/Urgent get four implementations. |
|
||
| `X8` | `CR-007` | `F2`, `S2` | **Blocking** | Offline drawing access is a tablet feature and the app bar breaks at 390px. Uploading into a form with no autosave risks losing the upload. |
|
||
| `X9` | `CR-005` | `A4`, `F5`, `S9` | Sequencing | A new wizard step should be built during the stepper rebuild, with the read-only-looking fields and keyboard access fixed at the same time. |
|
||
| `X10` | `CR-002`, `CR-016` | `CR-006`, `C3` | Sequencing | Both removals are expressed as toggles, not deletions. Without token consolidation the toggled styling drifts. |
|
||
|
||
## 4. Wave order
|
||
|
||
| Wave | Focus | File | Items |
|
||
|---|---|---|---|
|
||
| 0 | Orientation and file map | `docs/waves/wave-0.md` | — |
|
||
| 1 | Rendering defects and tooling | `docs/waves/wave-1.md` | `F1` `F3` `F4` `F5`(interim) `S13` |
|
||
| 2 | Drawer everywhere, flat strip deleted | `docs/waves/wave-2.md` | `B1` `S4` `F2` |
|
||
| 3 | Token consolidation and button system | `docs/waves/wave-3.md` | `C3` `S5` `A3` `A5` |
|
||
| 4 | Platform prerequisites | `docs/waves/wave-4.md` | `B4` `S3` `S2` `B5` `S10` `S11` `S12` |
|
||
| 5 | Launcher and SOP wizard | `docs/waves/wave-5.md` | `A4` `B3` `S9` `CR-005` `CR-006` `CR-002` `CR-016` `S1`(wizard) |
|
||
| 6 | Work package general information | `docs/waves/wave-6.md` | `CR-001` `CR-003` `CR-004` `CR-018` `A7` |
|
||
| 7 | The creator | `docs/waves/wave-7.md` | `B7` `A1` `CR-015` `A2` `A6` `CR-014` `CR-007` `B6` `S1`(creator) `F6` |
|
||
| 8 | Kitting and material | `docs/waves/wave-8.md` | `CR-009` `CR-010` `CR-011` `CR-012` `CR-013` |
|
||
| 9 | Verification and cleanup | `docs/waves/wave-9.md` | `CR-008` `CR-017` `S6` `S7` `C1` `C2` `C4` |
|
||
|
||
**Waves 1 through 4 produce almost no field-visible change.** That is deliberate and it is
|
||
roughly the first third of the effort. It is called out here because the Micron team is
|
||
already skeptical about time spent, and silence during these waves reads as nothing
|
||
happening. The trade is that waves 5 through 8 land once instead of being rebuilt, which is
|
||
the failure mode the review documented at `work-package-suite-styles.css:336`.
|
||
|
||
### Deltas from the R2 sequence
|
||
|
||
The R2 document's nine-wave table did not place `A5`, `A7`, or `F6`. This plan places `A5`
|
||
in wave 3 (it depends on token consolidation), `A7` in wave 6 (it is general-information
|
||
surface work), and `F6` in wave 7 (its actual fix is section tabs, not a CSS change). `F2`
|
||
moves fully to wave 2 because `B1` resolves it; wave 1 only stops the clipping.
|
||
|
||
## 5. Task format
|
||
|
||
Every task in a wave file follows this shape. Do not start a task that is missing a
|
||
done-when list; flag it instead.
|
||
|
||
```markdown
|
||
### T5.4 — CR-005: Upload location lists at SOP setup
|
||
|
||
- **Items:** CR-005
|
||
- **Depends on:** T5.1
|
||
- **Blocks:** T6.3
|
||
- **Surface:** html/ + server/
|
||
- **Files:** <paths from docs/reference/file-map.md>
|
||
- **Do:** ...
|
||
- **Do not:** ...
|
||
- **Done when:**
|
||
- [ ] verifiable check
|
||
- [ ] verifiable check
|
||
```
|
||
|
||
`Done when` entries must be checkable by running or looking at something. "Confirm with
|
||
Nick" is never a done-when; it goes in the PR description.
|
||
|
||
## 6. Traceability
|
||
|
||
Every one of the 55 items appears in exactly one wave, except where noted.
|
||
|
||
| Item | Wave | Item | Wave | Item | Wave |
|
||
|---|---|---|---|---|---|
|
||
| CR-001 | 6 | F1 | 1 | A1 | 7 |
|
||
| CR-002 | 5 | F2 | 1 interim, 2 full | A2 | 7 |
|
||
| CR-003 | 6 | F3 | 1 | A3 | 1 interim, 3 full |
|
||
| CR-004 | 6 | F4 | 1 | A4 | 5 |
|
||
| CR-005 | 5 | F5 | 1 interim, 3 full | A5 | 3 |
|
||
| CR-006 | 5 | F6 | 7 | A6 | 7 |
|
||
| CR-007 | 7 | S1 | 5 wizard, 7 creator | A7 | 6 |
|
||
| CR-008 | 9 | S2 | 4 | B1 | 2 |
|
||
| CR-009 | 8 | S3 | 4 | B2 | 2 |
|
||
| CR-010 | 8 | S4 | 2 | B3 | 5 |
|
||
| CR-011 | 8 | S5 | 3 | B4 | 4 |
|
||
| CR-012 | 8 | S6 | 9 | B5 | 4 |
|
||
| CR-013 | 8 | S7 | 9 | B6 | 7 |
|
||
| CR-014 | 7 | S8 | 9 | B7 | 7 |
|
||
| CR-015 | 7 | S9 | 5 | C1 | all, audited in 9 |
|
||
| CR-016 | 5 | S10 | 4 | C2 | all, audited in 9 |
|
||
| CR-017 | 9 (guard only) | S11 | 4 | C3 | 3 |
|
||
| CR-018 | 6 | S12 | 4 | C4 | 4 and 9 |
|
||
| | | S13 | 1 | | |
|
||
|
||
`F5` and `A3` are the same defect from two sources. `C1` and `C2` are standing requirements
|
||
enforced per task under `CLAUDE.md`, with a dedicated audit in wave 9. `CR-017` is a
|
||
do-not-remove guard rather than a build.
|
||
|
||
## 7. Out of scope
|
||
|
||
Deferred by decision. Do not build these, and do not treat them as gaps:
|
||
|
||
- Full material request and inventory system, including the parts catalog and warehouse
|
||
integration. Revisit once Paul Coonrod is engaged.
|
||
- Asset database integration. Clinton's team owns that database; the Assets section is
|
||
toggled off in the interim (`CR-016`).
|
||
- CxAlloy or GC QA system integration. The QA gate is notification-only until CxAlloy lands.
|
||
- P6 activity list import and validated lookup. `CR-001` uses free text.
|
||
|
||
## 8. Inputs the plan is waiting on
|
||
|
||
These do not block code, but they block the data that makes several features real. Track
|
||
them; do not invent placeholder values in their absence.
|
||
|
||
| Input | Owner | Blocks |
|
||
|---|---|---|
|
||
| B100 floor and area list | David Leal | `CR-004`, `CR-005` real data |
|
||
| Material spreadsheet | Nate, via David Leal | `CR-013` field set |
|
||
| Master material workbook, preferred request format | Paul Coonrod | `CR-013` scope |
|
||
| QA process of record (Excel questionnaire moving into CxAlloy) | David Ramstorf, Lupe, Cody Schaefer | `CR-014` beyond notification |
|
||
|
||
Where a list is required and not yet supplied, build the upload path (`CR-005`) and seed with
|
||
an obviously-fake sample. Do not hardcode guessed floor names.
|