diff --git a/docs/reference/completion.md b/docs/reference/completion.md new file mode 100644 index 0000000..91b92da --- /dev/null +++ b/docs/reference/completion.md @@ -0,0 +1,113 @@ +# Completion — the R2 plan, reconciled (T9.7, 2026-08-19) + +All 65 items accounted for: the 55 in `IMPLEMENTATION.md` §6 and the 10 in +`docs/waves/decisions-2026-08-18.md`. Delivery references are task ids; the +branch is local-only by instruction (one task = one commit, ids in every +commit message), so the commit history IS the PR trail. Verification counts +name the probe that re-checks the item on every run. + +## Change requests + +| Item | Status | Delivered by | Notes / deviations | +|---|---|---|---| +| CR-001 | built | T6.1 (`generalinfo_check` 49) | | +| CR-002 | built | waves 1–2, field toggles T5.7; **applied to the export at T9.1** | the Micron samples now name `costCode:false, acumaticaTask:false` | +| CR-003 | built | T6.2 | three priorities, escalating order | +| CR-004 | built | T6.3 (`locations_check`, `rollup_check`) | paths, not labels | +| CR-005 | built | T5.4 | upload path; **B100 list still not supplied** (§8) | +| CR-006 | built | T5.7 (`sections_check` 95) | hidden, never deleted — pinned | +| CR-007 | built | T7.7 (`files_check` 36) | D8 numbers enforced server-side; offline verified against a killed server | +| CR-008 | built | T9.1 (`export_check` 20) | **deviation raised, not decided:** merge-vs-list — recommendation is inline images + listed PDFs; merged-PDF output needs Nick | +| CR-009 | built | T8.1 (`kitting_check`) | statuses adopted as proposed; kitting off for Micron EUV by toggle | +| CR-010 | built | T8.2 | owner on the PACKAGE (confirmed Aug 18), account-backed, orphan-safe | +| CR-011 | built | T8.3 (`kitting_notify_check` 17) | coalesced; T7.6 gate reused; sink-verified | +| CR-012 | built | T8.4 | shared location lists + detail field; prints and mails | +| CR-013 | built | T8.5 (`mreq_check` 19) | lightweight scope exactly; fences grepped | +| CR-014 | built | T7.6 (`qa_gate_check` 40) | **deviation, stated in the commit:** the email body omits location/scope — the done-when's no-customer-IP rule outranked the Do-paragraph; fuller body needs Nick | +| CR-015 | built | T7.3 (`hold_check` 50) | root cause stated (both halves); regression test specific to clear-last-constraint | +| CR-016 | built | T5.7 | | +| CR-017 | guarded | T9.2 | present, optional, rolls up; BL-023 logs the productivity factor | +| CR-018 | built | T6.4 (`rollup_check` 63) | | + +## Findings and structural items + +| Item | Status | Delivered by | Notes | +|---|---|---|---| +| F1–F5 | built | waves 1–3 | | +| F6 | built, one number open | T7.2 (5,399 → 1,954px) | **BL-022:** 2.17 screens vs the strict 2.0 encoding of “roughly two” — product call, check stays red | +| S1 | built | T5.8 wizard, T7.9 creator (`creator_dialogs_check` 20) | 79 → 21 dialogs; the 21 live on surfaces no S1 task named — **BL-024** | +| S2–S5, S9–S12 | built | waves 2–5 | | +| S6 | built | T9.3 (`icon_check` 5) | one monochrome system, mapped in `tokens.md` | +| S7 | built | T9.4 (`sample_check` 10) | one affordance, confirmed, fenced — verified against a real project | +| S8 | built | T9.5 (`helptip_check` 13) | 20 badges → buttons; **closed BL-001** | +| S13 | open | — | `seed_demo.py` still does not sign in; the smoke test does. Carried to the next revision | +| A1 | preserved | T7.3 | `confirmEarlyRelease()` by name; async now, same contract | +| A2 | built | T7.4 (`warning_check` 17) | one warning; the count on the sticky rail | +| A3–A5, A7 | built | waves 1–6 | localization re-verified through T7.10's admin edits (`cards_check`) | +| A6 | built | T7.5 (`triage_check` 16) | | +| B1–B5 | built | waves 2–5 | | +| B6 | built | T7.8 (`sticky_bar_check` 12) | | +| B7 | built | T7.1 (`frame_check` 38) | **deviation, stated in the commit:** the creator became its own page rather than merging into the parent — measured trade (0 collisions vs 21+9) | +| C1 | audited | T9.5 (`accessibility-audit.md`) | every metric probe-backed | +| C2 | audited | T9.6 (`mobile_check` 24) | screenshots committed beside the wave 0 baseline | +| C3 | built | wave 3 | | +| C4 | built | wave 4 interim, T9.9 full (`color_check` 4) | zero literals outside `theme-light.css` | + +## The August 18 decisions + +| Item | Status | Delivered by | +|---|---|---| +| D1 | built | T7.1 (sample controls visible; consolidated at T9.4 per the S7 reconciliation) | +| D2 | built | T7.6 (QA group on the SOP wizard) | +| D3 | built | T7.2 (rail + collapse; the "at rest" amendment recorded) | +| D4 | built | T7.3 (Urgent surfaces the audited path; the override names what it crosses) | +| D5 | built | T7.10 (one analytics core; admin report) | +| D6 | built | T8.6 (material list, the CR-005 pattern, one shared component) | +| D7 | built | T9.8 (`archived_check` 15) | +| D8 | built | T7.7 (5MB / PDF+image / 2GB, 80% warning) | +| D9 | built | T7.6 (Field View text pill at 390px) | +| D10 | built | T7.6 / reused T8.3 (stored setting, admin-only, audited, sink-verified) | + +## Out of scope, confirmed unbuilt + +- **Parts catalog / live inventory / warehouse integration** — `mreq_check` and + `materials_check` grep the model and the diff for stock/inventory/price + fields on every run; none exist. D6's uploaded list is project-scoped data + entry, not a catalog. +- **Asset database integration** — the assets section stays a CR-006 toggle + (off on the Micron sample); no integration code exists. +- **CxAlloy integration** — CR-014 is notification-only, as the task footnote + ordered; the platforms block stores names and URLs, nothing calls them. +- **P6 activity import** — CR-001 renders the two fields; nothing imports. + +## Outstanding inputs (IMPLEMENTATION.md §8, restated) + +- Nate's spreadsheet and the master material workbook: **still not supplied.** + D6 built the upload path so their arrival is a paste, not a build. +- The real B100 floor/area list: **still not supplied.** CR-005's upload is + ready for it; every seeded value remains obviously fake. +- SMTP host/credentials for production mail: the gate ships off; the password + is env-only. Nothing on this branch has sent a real email. + +## For the next revision + +- **BL-020** — the wizard→creator navigation prompts to leave (T4.3's guard + doing its job on what is now a page exit); product call on suppression. +- **BL-021** — `project_sop_team()` reads a path `pushSOP` never writes; the + critical-reopen mail has never reached the PM/CM. One line, needs its own + sink verification. +- **BL-022** — F6's "roughly two screens": 2.17 vs the strict 2.0. Bless it or + name the chrome to trim. +- **BL-023** — the productivity factor (actual ÷ estimated); data already + aggregated, placement needs Nick. +- **BL-024** — 21 native dialogs on admin/users/launcher; the T7.9 kit is + ready for them. +- **S13** — `seed_demo.py` sign-in. +- Product questions raised in commit messages, awaiting answers: hold + reachable from Draft/Scheduled (T7.3); CR-014 email body content (T7.6); + merged-PDF export (T9.1). +- Acceptance criteria that turned out wrong, for the next plan's calibration: + F6's height bar collided with D3's own chosen design (amended once, then + left red rather than moved again); A2's "tab count badge" predated D3 + removing tabs (the rail carried it); S1's "0 dialogs" never named the + console pages that held a quarter of them. diff --git a/docs/waves/wave-9.md b/docs/waves/wave-9.md index 33c73a2..742cfe1 100644 --- a/docs/waves/wave-9.md +++ b/docs/waves/wave-9.md @@ -307,10 +307,10 @@ criteria turned out wrong, inputs still outstanding, and follow-ups logged along ## Wave 9 exit criteria -- [ ] the export matches the final structure -- [ ] one icon system, one sample-data affordance -- [ ] accessibility metrics hit target or are documented -- [ ] the primary flow works at 390px -- [ ] archived projects are readable by project admins and invisible to everyone else (`D7`) -- [ ] the backlog has no entry still pointing at wave 9 -- [ ] every item is reconciled - all 65 +- [x] the export matches the final structure (`export_check.py`, 20 checks — required fields present, CR-002 removals absent, CR-006 suppression honoured, tablet-legible) +- [x] one icon system, one sample-data affordance (`icon_check.py`, `sample_check.py`) +- [x] accessibility metrics hit target or are documented (`docs/reference/accessibility-audit.md`; the one gap — 21 dialogs on surfaces no S1 task named — is BL-024) +- [x] the primary flow works at 390px (`mobile_check.py`, 24 checks, all seven pages; screenshots committed) +- [x] archived projects are readable by project admins and invisible to everyone else (`archived_check.py`, 15 checks) +- [x] the backlog has no entry still pointing at wave 9 (nine closed at T9.9, each with its measurement) +- [x] every item is reconciled — all 65 (`docs/reference/completion.md`)