Morgan Lunt bec8d7c93a
code-modernization: vendor d3, viewer robustness, status command, pipeline fixes
Viewer (assets/topology-viewer.html):
- inline a minified d3 subset (hierarchy/pack, zoom, selection,
  interpolateZoom, ease; ISC license) instead of loading from a CDN —
  the page is now fully self-contained and works on air-gapped networks
- handle duplicate node ids (unique-suffix; edges bind to the first
  occurrence) and store parent references directly, fixing
  level-of-detail and selection corruption with messy generated data
- share one reveal rule between drawing, edge culling, and hit-testing
  so edges no longer draw into collapsed containers
- pre-bucket edges by kind and keep a per-node adjacency map; the
  hover/selection pass no longer scans every edge each frame
- cancel in-flight fly-to animations when a new one starts; clamp
  fly-to zoom to the zoom extent; derive max zoom from the smallest
  leaf so deep estates stay reachable
- render dead-end candidates (new deadEnds field) with a dashed
  outline and a sidebar badge
- clicking a node during a flow walkthrough exits the walkthrough;
  search results clear on selection and Escape; surrogate-safe label
  truncation; clearer stats line; explicit empty-topology message

Commands:
- new /modernize-status: read-only progress report — artifact inventory
  with timestamps, staleness flags, secrets-hygiene checks, next step
- map: deadEnds in the topology schema; datastore names must be logical
  identifiers with credentials stripped from URLs/DSNs
- brief: read topology.json + .mmd files (not the interactive HTML);
  staleness check against inputs; effort unit aligned to person-months
- transform: secret-safe characterization-test prompt; diff -y fallback
  when delta is missing; credential-safe diff selection
- reimagine: target vision is everything after the first argument (was
  silently truncated to one word); masking rules in spec/scaffold/
  handoff prompts
- brief/transform/reimagine: human-approval gates phrased as explicit
  stop-and-wait instead of 'enter plan mode'
- preflight: delta in the tool table; brief added to the verdict list
- README: preflight/status in the workflow; legacy/ deny list also
  covers Write; plugin + marketplace descriptions updated
2026-06-09 08:48:04 -07:00

2.2 KiB

description argument-hint
Where am I in the modernization workflow — artifact inventory, staleness, secrets hygiene, next step <system-dir>

Report where the modernization of $1 stands, in one screen. This is a read-only command — inspect, never modify.

1 — Artifact inventory

Check analysis/$1/ and modernized/$1*/ and build a table — one row per workflow stage, with the artifact's presence and modification time:

Stage Artifacts
preflight PREFLIGHT.md
assess ASSESSMENT.md, ARCHITECTURE.mmd
map topology.json, TOPOLOGY.html, *.mmd, extract_topology.*
extract-rules BUSINESS_RULES.md, DATA_OBJECTS.md
brief MODERNIZATION_BRIEF.md (note whether the approval block is signed)
harden SECURITY_FINDINGS.md, security_remediation.patch
transform / reimagine each modernized/$1*/<module>/ dir — note test presence and whether TRANSFORMATION_NOTES.md exists

2 — Staleness

Flag any artifact older than an upstream artifact it derives from:

  • MODERNIZATION_BRIEF.md older than ASSESSMENT.md, topology.json, or BUSINESS_RULES.md → the brief no longer reflects discovery; recommend re-running /modernize-brief.
  • TOPOLOGY.html older than topology.json → re-run the injection step from /modernize-map.
  • Any TRANSFORMATION_NOTES.md older than BUSINESS_RULES.md → the module may not implement the latest rule set; list which.

3 — Secrets hygiene

  • Does analysis/.gitignore exist and cover SECRETS.local.md / *.local.patch? (git check-ignore when in a git repo.)
  • If SECRETS.local.md exists: confirm it is NOT tracked (git ls-files --error-unmatch, expect failure) and has never been committed (git log --all --oneline -- <path>, expect empty). If either check fails, say so prominently and recommend rotation plus history scrubbing.

4 — Verdict

End with three lines:

  • Where you are — the furthest completed stage and roughly how much of the system it covers (e.g. "mapped 100%, 2 of 14 modules transformed").
  • What's stale — or "nothing".
  • Next command — the single most useful next step, with a one-line reason.