| 05-tech-debt |
01 |
ui |
| react |
| typescript |
| zod |
| registry |
| backend-selection |
|
| phase |
provides |
| 05-tech-debt |
Wave-0 TDD stubs for registry shape and consumer access patterns (05-00) |
|
|
| BACKEND_REGISTRY enriched with displayName, description, fields shape |
| BackendSelectionStep driven by Object.entries(BACKEND_REGISTRY) — no hardcoded BACKENDS |
| schemas/index.ts using .fields access |
| RemoteConfigStep.tsx using .fields access |
| Dead BackendFormValues<T> export removed from schemas/index.ts |
|
| 06-new-backends |
| phase-6 |
| BackendSelectionStep |
| RemoteConfigStep |
| schemas |
|
| added |
patterns |
|
|
| Registry-driven UI: Object.entries(BACKEND_REGISTRY) replaces hardcoded arrays — adding a backend to registry auto-surfaces in UI with zero additional UI code |
| .fields access: all consumers use BACKEND_REGISTRY[type].fields, not the registry entry directly |
|
|
| created |
modified |
|
|
| src/schemas/registry.ts |
| src/schemas/index.ts |
| src/components/wizard/RemoteConfigStep.tsx |
| src/components/wizard/BackendSelectionStep.tsx |
|
|
| Registry shape change to { displayName, description, fields } makes the registry the single source of truth for both field definitions AND display metadata |
| displayName and description strings preserved exactly as in the former BACKENDS const to keep test assertions green without changes |
| BackendFormValues<T> removed — confirmed no consumers existed (tsc --noEmit: zero errors) |
|
| Registry-driven card list: Object.entries(BACKEND_REGISTRY).map(([type, entry]) => <BackendCard ... />) |
| .fields access pattern: BACKEND_REGISTRY[backendType].fields for all field iteration |
|
|
5min |
2026-03-30 |