Integrates Cody Schaefer's 7ef1fcd (written against pre-R2 main) per Nick's
instruction of Aug 20. The catalog lookup arrives whole: read-only /api/assets
backed by server/assets_db.py (one SELECT, env-only MICRON_DB_URL, 503-not-500
when broken, driver errors logged not propagated), the searchable picker with
CSV import and Excel column paste, catalog rows badged and locked to the DB's
casing, manual rows visibly unvouched, and graceful absent/unreachable states.
Three conflicts, resolved as unions of both sides' intent; the adaptations and
their reasons are recorded in docs/waves/decisions-2026-08-20.md:
- renderPackage: Cody's two-column asset table inside T9.1's sectioned
add('assets', ...) frame, so the CR-006 toggle keeps governing the export.
- bootData: initAssetPicker() joins the R2 loads instead of replacing them.
- The asset card: his picker UI, plus role=status on the source note (C1).
- Six imported alert() calls converted to the creator's idioms: file errors
through toast(msg,'alert') as the drawings uploader does; the instructional
and summary messages through the T7.9 kit, which gains the one-button
wpAlertDialog shape (BL-024's console conversions will want it too).
New probe: assets_check (27) - read-only structurally, unconfigured/broken as
first-class states, no credential echo, search ranking, casing canonicalisation,
import fallback + dedup, kit-not-native summary. One sections_check pin
re-pointed with the reason in code: normaliseAsset now stamps legacy rows
source:'manual' on load, so the CR-016 check compares content, not bytes.
Battery after merge: assets_check 27/27, creator_dialogs_check 20/20,
sections_check ALL PASS, export_check 20/20, helptip_check 13/13,
mobile_check 24/24, icon_check 5/5, color_check 5/5, form_structure_check
50/51 (the one red is BL-022, unchanged, deliberate).
Item: D11 (new scope, new id per the working rules). Out-of-scope note in
completion.md amended - 'no integration code exists' was true when written.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
117 lines
7.4 KiB
Markdown
117 lines
7.4 KiB
Markdown
# 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) |
|
||
| D11 | built | merge of `origin/Micron-Assets` + integration, Aug 20 (`assets_check`); see `decisions-2026-08-20.md` |
|
||
|
||
## 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** — SUPERSEDED by D11 on Aug 20: Cody Schaefer's
|
||
Micron asset picker (read-only catalog lookup, `origin/Micron-Assets`) merged
|
||
and adapted to the R2 creator. The assets section stays a CR-006 toggle
|
||
(off on the Micron sample). This line was true when written.
|
||
- **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.
|