Skip to content

PLAN — UIForge Execution Plan

Initiative: INIT-UIFORGE-003 Status: Draft Date: 2026-09-10 Home repo: github.com/plexusone/uiforge

Phases

Phase Theme RMIs Exit Criteria
1 Extraction & Foundation RMI-UIFORGE-101…105 go build ./..., gofmt, go vet, go test ./..., golangci-lint run all clean; schemas regenerate deterministically and pass schemakit lint --property-case camelCase; both renderer packages install, build, test, and lint green; golden fixtures validate via the registry
2 Lit Renderer Maturity RMI-UIFORGE-106…110 Lit renderer reaches layout parity (split-pane, tabs, application-shell) and engine parity (expression/state/interaction) with React for core.* components; shared spec-types package consumed by both renderers; conformance suite drives both renderers from the same fixtures
3 Platform Hardening RMI-UIFORGE-111…115 Profile constraints enforced at validation; external component manifests loadable/versioned; npm publish pipeline + Node CI; PageSpec authoring utilities; runtime adapter generalized
4 Design System & Application Components RMI-UIFORGE-116…120 DSS documents drive theming through the theme package; renderers consume the DSS semantic vocabulary; application.* pack renders forms/records/actions in both renderers; children/slots and navigation reach parity
5 Data & Extensions RMI-UIFORGE-121…125 Lit data runtime resolves external sources with loading/error states; third-party authoring documented; capability enforcement at runtime

Working Agreements

  • Library-first: importable packages; no CLI/server in this repo for v0.x.
  • Go types in uispec/ are the source of truth; never hand-edit generated schemas.
  • Renderer DOM vocabulary (data-uiforge-*) is a compatibility contract across renderers — changes require updating both renderers and their tests together.
  • Conventional commits; RMI trailers once IDs are registered in the tracking system.

Risks

Risk Mitigation
Renderer drift (React vs Lit) Shared DOM vocabulary asserted in both test suites; Phase 2 conformance suite runs both renderers against the same golden fixtures
IR churn before v1 apiVersion gate; additive-only changes within ui.plexusone.dev/v1; PageSpec diffing (pkg/diff) supports migration tooling
Duplicated TS spec types diverge Short-term: minimal subset in the Lit package only; resolved by RMI-UIFORGE-109 shared spec package
CI toolchain skew go.mod pinned at 1.26.6 to match shared CI's GOTOOLCHAIN=local cache