4.3 KiB
4.3 KiB
Phase 8 Execution Plan: React + ELK Core Refactor
Objective
Deliver the largest Schemeta refactor to date: migrate the frontend to a robust React architecture, replace fragile placement behavior with ELK-driven layout, harden routing/labeling readability, and establish production-grade quality gates.
This phase is OSS-only and budget-neutral.
Non-Goals
- No paid/proprietary graph SDKs.
- No API contract break for
/compile,/analyze,/layout/auto,/layout/tidy. - No regression of current JSON schema compatibility.
Architecture Target
- Frontend: React + TypeScript + Vite.
- Interaction layer: React Flow primitives for node/selection/viewport interactions.
- Layout:
elkjsas primary placement engine. - Routing: Schemeta incremental router with deterministic tie-net fallback.
- State: deterministic centralized action pipeline (undo/redo transaction model).
Work Breakdown (Milestone #7)
- #37 P8-01 Frontend architecture migration to React + TS + Vite
- #38 P8-02 State model refactor with deterministic action pipeline
- #39 P8-03 Canvas subsystem rewrite with React Flow contracts
- #40 P8-04 ELK integration and constraints mapping
- #41 P8-05 Routing engine revamp (incremental reroute)
- #42 P8-06 Deterministic label placement and collision avoidance
- #43 P8-07 Symbol readability and pin-density standards
- #44 P8-08 JSON editor power-tool upgrade (schema-aware + diff apply)
- #45 P8-09 QA hardening (visual/readability gates)
- #46 P8-10 Cutover, migration, rollback
Delivery Sequence (Critical Path)
- Foundation
- Complete #37 (React app shell) and #38 (state architecture).
- Exit criteria: feature-parity shell + deterministic action store.
- Interaction rewrite
- Complete #39 on top of #37/#38.
- Exit criteria: drag/multi-select/pan/zoom/edit stable and undoable.
- Layout core
- Complete #40 with adapter boundaries for constraints.
- Exit criteria: ELK-based autolayout deterministic on fixtures.
- Routing core
- Complete #41 with local reroute and deterministic fallback behavior.
- Exit criteria: moved components reroute only affected nets.
- Readability system
- Complete #42 + #43 for labels/pin-density constraints.
- Exit criteria: baseline fixtures have no label/pin overlap failures.
- Power-user JSON workflow
- Complete #44 for schema-aware editing and safe apply previews.
- Quality gates + ship safety
- Complete #45 + #46; run cutover checklist.
Technical Design Rules
- Determinism first: all ordered traversals sort by stable keys.
- Incremental operations default: no full relayout on drag/edit unless explicit.
- Readability constraints are hard constraints, not best-effort hints.
- Feature flags for risky changes during dual-run period.
Quality Gates (Phase 8 Additions)
In addition to existing crossings/overlaps/detour metrics:
- Label collisions must be 0 in baseline fixtures.
- Pin text collisions must be 0 in baseline fixtures.
- Component overlap must remain 0.
- Drag action must not move untouched components.
- Snapshot test matrix across viewport sizes and render modes.
Risks and Mitigation
- Risk: React migration stalls on parity gaps.
- Mitigation: keep legacy UI in dual-run until parity checklist passes.
- Risk: ELK mapping mismatch with custom constraints.
- Mitigation: fallback mapping with explicit unsupported-constraint diagnostics.
- Risk: routing regressions after layout changes.
- Mitigation: incremental router tests and stress fixtures in CI.
- Risk: test flakiness due to persisted state.
- Mitigation: force deterministic test bootstrapping and storage resets.
Performance Budgets
- Compile latency p95 (sample): <= 180ms local.
- Drag-to-reroute p95 (affected nets only): <= 120ms local.
- Auto layout p95 (medium fixture): <= 600ms local.
Release Readiness Checklist
- All milestone issues closed.
- CI green for unit + UI + readability metrics.
- Dual-run comparison report attached.
- Rollback validated with documented steps.
- Release notes include migration caveats and known limitations.
Definition of Done
Phase 8 is done only when:
- React UI is default and legacy path can be disabled safely.
- ELK placement is primary in production path.
- Readability gates are enforced in CI.
- Drag/edit interactions are deterministic and locally incremental.
- JSON/AI workflows are schema-aware and operator-safe.