Status: backlog Priority: P1 Created: 2026-02-22 Owner: AI Depends-on: phase8-deps-and-identical-cleanup Phase: 8 — Library Restructuring
Beyond form and report, several other namespaces must move under the com.fulcrologic.rad.statechart.* prefix to avoid conflicts with upstream fulcro-rad. This spec covers routing, session, container, and control — all the remaining statechart-specific namespaces.
Move com.fulcrologic.rad.routing → com.fulcrologic.rad.statechart.routing
This namespace is a thin delegation layer to com.fulcrologic.statecharts.integration.fulcro.routing. It provides:
route-to!, back!, route-forward!force-continue-routing!, abandon-route-change!, route-denied?edit!, create!, view! (form routing helpers)rstate, istate (re-exported from statecharts routing for convenience)The old com.fulcrologic.rad.routing in fulcro-rad wraps Dynamic Router — completely different. No conflict after the move.
Move com.fulcrologic.rad.sc.session → com.fulcrologic.rad.statechart.session
This aligns with the statechart.* prefix convention. The sc abbreviation was used early in development; the cleanup analysis specifies full word statechart.
Functions: ident->session-id, session-id->ident, form-session-id, report-session-id, container-session-id.
Move container statechart code:
com.fulcrologic.rad.container → com.fulcrologic.rad.statechart.containercom.fulcrologic.rad.container-chart → com.fulcrologic.rad.statechart.container-chartcom.fulcrologic.rad.container-expressions → com.fulcrologic.rad.statechart.container-expressionsContainer is deferred for impl extraction (no container.impl in upstream fulcro-rad yet), but the namespace still needs to move for consistency.
Move com.fulcrologic.rad.control → com.fulcrologic.rad.statechart.control
This namespace was converted from map-dispatch to multimethod and uses scf/send! with ident->session-id. It is engine-specific and must move.
Move engine-specific options:
com.fulcrologic.rad.container-options → com.fulcrologic.rad.statechart.container-optionscom.fulcrologic.rad.control-options → com.fulcrologic.rad.statechart.control-optionsNote: form-options and report-options are handled by the options-namespace-split spec.
| Current Path | New Path |
|---|---|
src/main/.../rad/routing.cljc | src/main/.../rad/statechart/routing.cljc |
src/main/.../rad/sc/session.cljc | src/main/.../rad/statechart/session.cljc |
src/main/.../rad/container.cljc | src/main/.../rad/statechart/container.cljc |
src/main/.../rad/container_chart.cljc | src/main/.../rad/statechart/container_chart.cljc |
src/main/.../rad/container_expressions.cljc | src/main/.../rad/statechart/container_expressions.cljc |
src/main/.../rad/container_options.cljc | src/main/.../rad/statechart/container_options.cljc |
src/main/.../rad/control.cljc | src/main/.../rad/statechart/control.cljc |
src/main/.../rad/control_options.cljc | src/main/.../rad/statechart/control_options.cljc |
Also delete the old src/main/.../rad/sc/ directory after moving session.
Every file that requires any moved namespace must be updated. Key consumers:
statechart.form requires session, routingstatechart.report requires session, routing, controlstatechart.container requires session, routingstatechart.form-expressions may require sessionstatechart.report-expressions may require sessionform, report, controlsrc/main/.../rad/statechart/Note: Verification covers source compilation only (clj -e "(require ...)" for source namespaces). Test compilation will be broken until the test-migration spec is complete.
src/main/com/fulcrologic/rad/sc/ directory — DELETE after moving sessionsrc/main/com/fulcrologic/rad/rendering/headless/report.cljc — requires rad.control, rad.form, rad.report, rad.routing (update to statechart.*)src/main/com/fulcrologic/rad/rendering/headless/form.cljc — requires rad.form (update to statechart.form)src/main/com/fulcrologic/rad/rendering/headless/controls.cljc — update requires for moved namespacessrc/main/com/fulcrologic/rad/rendering/headless/plugin.cljc — update requires for moved namespacessrc/main/com/fulcrologic/rad/rendering/headless/field.cljc — update requires for moved namespacescom.fulcrologic.rad.statechart.routing provides route-to!, edit!, create!, view!com.fulcrologic.rad.statechart.session provides ident->session-id, session-id->identcom.fulcrologic.rad.statechart.container provides defsc-container macrocom.fulcrologic.rad.statechart.control provides multimethod-based render-control, run!rad.sc.session or rad.routing or rad.container or rad.control remainrad/sc/ directory is deletedCan you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |