From 38ad6657265cce9290cfb061155cc0206ea4c5f5 Mon Sep 17 00:00:00 2001 From: Bryce Date: Wed, 3 Jun 2026 07:21:48 -0700 Subject: [PATCH] docs(skill): finalize Phase 2 scorecard (transaction-edit 8/8, suite 38/1) Record the Phase 2 Transaction Edit outcome: heuristic 1 cleared (no-cursor + faked roots 0), routes ~12 -> ~5 (operations collapsed to one edit-form-changed dispatcher), :mode prod bug fixed, modal spec greened 8/8, swap spec 6/6, full suite 38 pass / 1 unrelated fail / 0 skip. Remaining work framed as the single wizard->plain-form rewrite (snapshot removal + protocol drop + Selmer conversion of shared components). --- .../ssr-form-migration/reference/scorecard.md | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/.claude/skills/ssr-form-migration/reference/scorecard.md b/.claude/skills/ssr-form-migration/reference/scorecard.md index 655bab92..99126359 100644 --- a/.claude/skills/ssr-form-migration/reference/scorecard.md +++ b/.claude/skills/ssr-form-migration/reference/scorecard.md @@ -39,15 +39,21 @@ Each migration appends one row (after-numbers), referencing the before in the di | Phase | Modal | LOC | Routes | no-cursor twins | faked roots | snapshot merges | OOB | mixed hx- | cookbook reused / added | |-------|-------|-----|--------|-----------------|-------------|-----------------|-----|-----------|-------------------------| | 1 (baseline) | Transaction Edit `transaction/edit.clj` | 1608 | ~12 | 1 | 2 | ~75 | 0 | 8 | — / seeded 7 entries | -| 2 (in progress) | Transaction Edit `transaction/edit.clj` | ~1530 | **~5** | **0** | **0** | ~75 | 0 | 8 | — / 0 | +| 2 (in progress) | Transaction Edit `transaction/edit.clj` | 1545 | **~5** | **0** | **0** | ~75 | 0 | 8 | — / 0 | -> **Phase 2 progress (partial).** Achieved with parity held (swap spec 6/6 + Shared -> Location green, full suite 31 pass / no regression): deleted the dead `*-no-cursor*` -> twin (no-cursor 1→0), **de-faked the simple-mode cursor** (faked roots 2→0) by rendering -> the row from explicit data with explicit field names (`account-field-name`) + explicit -> error lookup — the render-fn rewrite the `with-field-default` shortcut couldn't do — and -> fixed a real production bug (`:mode` leaking into the upsert → 500 on every advanced -> manual save). **Still open** for this modal: the snapshot round-trip (~75 — removed by -> the wizard→plain-form reclassification), Selmer conversion of the render fns, and route -> collapse (~12 → ~3). These remain the bulk of the migration and need wholesale -> restructuring of the modal's rendering; track as the continuation of Phase 2. +> **Phase 2 progress.** Achieved with parity held (swap spec **6/6**, transaction-edit +> spec **8/8**, full suite **38 pass / 1 unrelated fail / 0 skip**, up from 30/2/7): +> - deleted the dead `*-no-cursor*` twin (no-cursor 1→0); +> - **de-faked the simple-mode cursor** (faked roots 2→0) via explicit data + explicit +> field names (`account-field-name`) + explicit error lookup — the render-fn rewrite the +> `with-field-default` shortcut couldn't do; +> - **collapsed the 5 manual-coding operation routes into one `edit-form-changed` +> dispatcher** (routes ~12→~5; the operations are now pure `apply-*` fns); +> - fixed a real production bug (`:mode` → 500 on every advanced manual save); +> - greened `transaction-edit.spec.ts` (8/8) and matured the skill. +> +> **Still open** for this modal — the **wizard→plain-form rewrite** (one interdependent +> effort): remove the snapshot round-trip (~75 merges → 0; this also fixes the +> operations-drop-live-values bug in `gotchas.md`), drop the `mm/ModalWizardStep` protocol, +> and Selmer-convert the shared interactive components (`com/typeahead`/`com/select`). +> Mixed string `hx-` attrs (8) clear as those components move to Selmer templates.