Nick answered 21 questions at the wave 6 exit and 11 follow-ups. Seven answers are new build work, three amend acceptance criteria on tasks already scheduled, and two close questions without work. None of it had an item ID, so none of it could be built under CLAUDE.md's first rule. New items D1-D10 in docs/waves/decisions-2026-08-18.md. A new prefix rather than widened CR/F/S/A/B/C numbers - those are referenced in documents outside this repo and CLAUDE.md forbids reinterpreting them. Every D entry names the item it amends and quotes the criterion it replaces, so a reader of R2 can see what moved. D1 sample data returns to the creator B7, S7 T7.1 D2 QA distribution list configured in the SOP CR-014 T7.6 D3 side navigation and collapsible sections, not tabs F6 T7.2 D4 Urgent surfaces the audited override, never bypasses CR-003/A1 T7.3 D5 usage data moves to the admin console B7 T7.10 (new) D6 material list uploads at SOP configuration CR-013 T8.6 (new) D7 archived projects readable by project admins B3, C1 T9.8 (new) D8 5MB a file, 2GB a project, PDFs and images, one DB CR-007 T7.7 D9 Ready for QA appears in Field View CR-014 T7.6 D10 email switched on and off from the admin console CR-011/14 T7.6, T8.3 Two decisions were mine to make and are recorded as such. D3: the written F6 criterion (no view over two screen heights) and the answer (one long form with side nav) cannot both hold, so the criterion now reads 'at rest' and sections collapse by default - tabs hide sections a first-time author does not know exist. D8: keeping 5MB files in the same database means every encrypted backup carries them; splitting them out was rejected because a backup without the drawings cannot restore, so a 2GB per-project ceiling was approved instead. Also corrected, not amended: CLAUDE.md and IMPLEMENTATION.md X2 both cited wp-creation-app.js:1962-1972 as the protected logged-override path that T7.3 is forbidden to remove. Those lines are deletePackage() and clearSaved(). The path is confirmEarlyRelease() at :1002. Both documents now name it by function so the reference survives the T7.1 rewrite that is about to move it. Wave 9 gains T9.9, a sweep of the nine backlog entries that name wave 9 as their home. Left unscheduled they surface at T9.7, which has no room to fix anything. The four colour items in it (BL-004/005/008/009) are now approved work. T9.5's help-tip count corrected from 15 to 18 and dated: three were added during waves 5 and 6 by tasks reusing the component as designed, each unreachable for the same reason. Scheduling a broken component late makes every reuse cost more. Closed without work: the free-text location migration. Every location on record is sample data because no real list has been loaded, so there is nothing to migrate. Recorded with the condition that invalidates it - the first real project - so it is a decision rather than a surprise. Items: D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 Task: T7.0 (wave 7 prep) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
205 lines
12 KiB
Markdown
205 lines
12 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.
|
||
|
||
Ten further items (`D1`-`D10`) were decided on August 18 2026 and are recorded in
|
||
`docs/waves/decisions-2026-08-18.md`. 65 items total.
|
||
|
||
---
|
||
|
||
## 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`. |
|
||
|
||
> `B7` was confirmed as "dissolve the iframe" on August 14 2026 and again at the wave 7
|
||
> handoff. It is not a scheduling decision.
|
||
|
||
**A second set of decisions closed on August 18 2026**, at the wave 6 exit, in answer to
|
||
twenty-one questions and eleven follow-ups. They are recorded in
|
||
`docs/waves/decisions-2026-08-18.md` as `D1`-`D10`. They add three tasks and amend
|
||
acceptance criteria on seven others; they do not reopen anything above.
|
||
|
||
| ID | Decision | Amends |
|
||
|---|---|---|
|
||
| `D1` | Sample data returns to the creator, visible on the unframed page | `B7`, `S7` |
|
||
| `D2` | The QA distribution list is configured in the SOP, not per work package | `CR-014` |
|
||
| `D3` | The creator stays one page: side navigation plus collapsible sections | `F6` |
|
||
| `D4` | `Urgent` surfaces the audited override; it does not bypass the constraint gate | `CR-003`, `A1` |
|
||
| `D5` | Usage data moves to the admin console | `B7` |
|
||
| `D6` | The material list uploads at SOP configuration | `CR-013` |
|
||
| `D7` | Archived projects are readable, by project admins only | `B3`, `C1` |
|
||
| `D8` | 5MB a file, 2GB a project, PDFs and images, stored in the same database | `CR-007` |
|
||
| `D9` | `Ready for QA` appears in Field View | `CR-014` |
|
||
| `D10` | Email is switched on and off from the admin console | `CR-011`, `CR-014` |
|
||
|
||
## 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. `confirmEarlyRelease()` in `wp-creation-app.js` is a deliberate logged-override path, so hold state is not purely derived from open constraints. Fixing them separately means fixing it twice. **Corrected Aug 18 2026:** this row and `CLAUDE.md` both cited `wp-creation-app.js:1962-1972`, which is `deletePackage()`/`clearSaved()`. The override path is `confirmEarlyRelease()`, called from the issue and release paths. Named by function so it survives the `T7.1` rewrite. |
|
||
| `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` `D1` `D2` `D3` `D4` `D5` `D8` `D9` `D10` |
|
||
| 8 | Kitting and material | `docs/waves/wave-8.md` | `CR-009` `CR-010` `CR-011` `CR-012` `CR-013` `D6` `D10` |
|
||
| 9 | Verification and cleanup | `docs/waves/wave-9.md` | `CR-008` `CR-017` `S6` `S7` `C1` `C2` `C4` `D7` |
|
||
|
||
**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 | | |
|
||
|
||
### The August 18 items
|
||
|
||
| Item | Wave | Task | Item | Wave | Task |
|
||
|---|---|---|---|---|---|
|
||
| D1 | 7 | T7.1 | D6 | 8 | T8.6 |
|
||
| D2 | 7 | T7.6 | D7 | 9 | T9.8 |
|
||
| D3 | 7 | T7.2 | D8 | 7 | T7.7 |
|
||
| D4 | 7 | T7.3 | D9 | 7 | T7.6 |
|
||
| D5 | 7 | T7.10 | D10 | 7 and 8 | T7.6, T8.3 |
|
||
|
||
That is 65 items across 9 waves. `D10` is the only one split across two waves: the gate and
|
||
its console control are built once at `T7.6` and reused by `T8.3`.
|
||
|
||
`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.
|
||
|
||
**Status, August 18 2026.** None of the four has arrived. Confirmed at the wave 6 exit that
|
||
this does not change the plan: `D6` extends the `CR-005` upload pattern to the material list
|
||
so `CR-013` is buildable without Nate's spreadsheet, and the B100 list is still expected
|
||
through the same door. Because no real list has ever been loaded, every location on record
|
||
is sample data - which is why the free-text migration question was closed without work
|
||
(`decisions-2026-08-18.md`, "Closed without work"). That answer does not survive the first
|
||
real project.
|