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:
@@ -1,7 +1,12 @@
|
||||
# Wave 8 — Kitting and material
|
||||
|
||||
**Items:** `CR-009`, `CR-010`, `CR-011`, `CR-012`, `CR-013`
|
||||
**Items:** `CR-009`, `CR-010`, `CR-011`, `CR-012`, `CR-013`, and from August 18: `D6`, `D10`
|
||||
**Depends on:** wave 7 merged
|
||||
|
||||
**Build order is not task order.** `T8.6` is numbered last because it was added on August 18,
|
||||
but it **blocks `T8.5`** - the request cannot select from a list that does not exist yet. Build
|
||||
`T8.1`, `T8.2`, `T8.3`, `T8.4`, `T8.6`, then `T8.5`. Task IDs are referenced outside this repo
|
||||
and are not renumbered to make the order read left to right.
|
||||
**Decision, approved Aug 14 2026:** keep and extend Kitting, then ship it **toggled off** for
|
||||
the Micron EUV SOP. Kitting is not happening at Micron today — it is complicated by
|
||||
journeyman ratio and warehouse cost — but the team expects to get there, and prefab arguably
|
||||
@@ -59,12 +64,17 @@ everything assigned to them.
|
||||
- [ ] the dashboard filters by warehouse owner
|
||||
- [ ] removing someone from the project does not break existing work packages referencing them
|
||||
|
||||
**Confirmed August 18.** Asked whether the warehouse owner belongs to the project or to each
|
||||
work package, the answer was **on the work package**. A project default is fine as a
|
||||
convenience, but the field that notifications read is the one on the package, so a package
|
||||
retargeted to a different warehouse notifies the right person without touching the project.
|
||||
|
||||
---
|
||||
|
||||
### T8.3 — CR-011: Kitting status change notification
|
||||
|
||||
- **Items:** `CR-011`
|
||||
- **Depends on:** T8.2, T4.2 (blocking dependency `X1`)
|
||||
- **Items:** `CR-011`, `D10`
|
||||
- **Depends on:** T8.2, T7.6 (the email gate), T4.2 (blocking dependency `X1`)
|
||||
- **Blocks:** nothing
|
||||
- **Surface:** `server/` + `html/`
|
||||
- **Files:** notification service, kitting status handling
|
||||
@@ -87,6 +97,8 @@ convention, not two.
|
||||
- [ ] formatting and tone match the existing status-change email
|
||||
- [ ] rapid consecutive changes do not produce a burst of near-identical emails
|
||||
- [ ] send failures are logged and surfaced
|
||||
- [ ] the gate built at `T7.6` is reused, not re-implemented; kitting email is off by default and turned on from `admin.html` (`D10`)
|
||||
- [ ] the send path is exercised against a capture sink with the captured count asserted; no real mail leaves this branch
|
||||
|
||||
---
|
||||
|
||||
@@ -118,8 +130,8 @@ printout.
|
||||
|
||||
### T8.5 — CR-013: Lightweight material request
|
||||
|
||||
- **Items:** `CR-013`
|
||||
- **Depends on:** T8.4, T7.2 (sequencing dependency `X6`)
|
||||
- **Items:** `CR-013`, `D6`
|
||||
- **Depends on:** T8.4, T8.6, T7.2 (sequencing dependency `X6`)
|
||||
- **Blocks:** nothing
|
||||
- **Surface:** `server/` + `html/`
|
||||
- **Files:** Materials section, request model, dashboard
|
||||
@@ -145,20 +157,72 @@ delivery location and status.
|
||||
card on a 4,700px form. And do not invent a parts list — Nate's spreadsheet and the master
|
||||
material workbook have not been supplied yet (see `IMPLEMENTATION.md` section 8).
|
||||
|
||||
**Amended August 18 (`D6`).** Two answers change this task. Line items **select from a
|
||||
project material list uploaded during SOP configuration** (`T8.6`) rather than being typed
|
||||
from nothing - and free text still works when no list has been loaded, which is the state
|
||||
every project is in today. And submitting a request **notifies the warehouse owner named on
|
||||
the work package** (`CR-010`), which is the routing that replaces the informal funnel through
|
||||
one person.
|
||||
|
||||
`D6` does not open the deferred parts catalog. A project-scoped list the project uploaded is
|
||||
not a catalog: no inventory levels, no warehouse integration, no shared master data. If a
|
||||
stock count appears in the diff, it has crossed the line `IMPLEMENTATION.md` section 7 draws.
|
||||
|
||||
**Done when:**
|
||||
|
||||
- [ ] line items can be added, edited and removed, with quantity and unit
|
||||
- [ ] line items select from the `T8.6` list when one exists, and accept free text when it does not
|
||||
- [ ] needed-by date, requestor, delivery location and status all persist
|
||||
- [ ] requests appear on the dashboard, filterable by location and status
|
||||
- [ ] submitting a request notifies the warehouse owner named on the work package
|
||||
- [ ] no parts catalog, inventory count or warehouse integration exists in the diff
|
||||
- [ ] the section respects `CR-006` toggles
|
||||
- [ ] the whole flow works at 390px, since requests originate in the field
|
||||
|
||||
---
|
||||
|
||||
### T8.6 — D6: Upload the material list at SOP configuration
|
||||
|
||||
- **Items:** `D6`
|
||||
- **Depends on:** T8.1
|
||||
- **Blocks:** T8.5
|
||||
- **Surface:** `server/` + `html/`
|
||||
- **Files:** SOP wizard, material list model and routes, `T5.4`'s upload component
|
||||
|
||||
**Intent:** `CR-013` was written to accept free text because Nate's spreadsheet and the master
|
||||
material workbook had not been supplied, and they still have not been. Asked on August 18
|
||||
whether to wait for them, the answer was **build the upload path now**, the same call that was
|
||||
made for the location list at `CR-005`.
|
||||
|
||||
**Do:** Reuse `T5.4`. The location upload already does paste-or-file, validates, reports
|
||||
rejected rows with the source line number, and stays editable afterwards. Build the material
|
||||
list the same way and against the same component, not beside it.
|
||||
|
||||
Keep the field set small and obvious: description, unit, and an optional code. That is what
|
||||
`T8.5` needs to populate a line item.
|
||||
|
||||
**Do not:** add inventory levels, stock counts, pricing or a warehouse identifier. Do not make
|
||||
the list mandatory - a project with no list must still be able to raise a request. Do not
|
||||
hardcode sample part numbers; seed with an obviously-fake sample as `CR-005` does.
|
||||
|
||||
**Done when:**
|
||||
|
||||
- [ ] a material list uploads or pastes during SOP configuration and persists per project
|
||||
- [ ] rejected rows are reported with the source line and a reason
|
||||
- [ ] the list is editable after upload, and entries can be deactivated rather than deleted
|
||||
- [ ] `T8.5` line items select from it
|
||||
- [ ] a project with no list can still raise a request with free text
|
||||
- [ ] the upload component is the `T5.4` one; grep confirms there is not a second implementation
|
||||
- [ ] no inventory, pricing or stock field exists in the diff
|
||||
- [ ] the flow works at 390px
|
||||
|
||||
---
|
||||
|
||||
## Wave 8 exit criteria
|
||||
|
||||
- [ ] Kitting is fully built and toggled off for Micron EUV
|
||||
- [ ] notifications carry working deep links and a delivery location
|
||||
- [ ] notifications carry working deep links and a delivery location, and are off by default
|
||||
- [ ] the material request is the lightweight scope, nothing more
|
||||
- [ ] a material list uploads at SOP configuration and feeds the request (`D6`)
|
||||
- [ ] no guessed part numbers or floor names anywhere in the code
|
||||
- [ ] no real email left this branch; the capture sink count is recorded
|
||||
|
||||
Reference in New Issue
Block a user