Wave 7 prep - record the Aug 18 decisions as D1-D10 and amend the waves

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>
This commit is contained in:
2026-08-18 13:29:58 -05:00
parent d092db3920
commit 0dbc240900
6 changed files with 670 additions and 45 deletions

View File

@@ -5,6 +5,9 @@ Companion document for humans: `WorkPackageSuite_Consolidated_Change_Request_R2.
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
@@ -33,9 +36,26 @@ decision. Do not reopen these without a spec revision.
| `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.
> `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
@@ -45,7 +65,7 @@ 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. |
| `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. |
@@ -66,9 +86,9 @@ be built as written, or cannot be built once, until something else lands.
| 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` |
| 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
@@ -132,6 +152,19 @@ Every one of the 55 items appears in exactly one wave, except where noted.
| 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.
@@ -161,3 +194,11 @@ them; do not invent placeholder values in their absence.
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.