Status: backlog Priority: P0 Created: 2026-02-22 Owner: AI Depends-on: phase8-upstream-impl-extraction Phase: 8 — Library Restructuring
Currently fulcro-rad-statecharts is a fork that contains its own copies of all fulcro-rad source files. To become an add-on library, it must:
deps.ednpom.xml to declare the fulcro-rad dependencyAfter this spec, only statechart-specific and statechart-modified files remain in this project's source tree.
Diff analysis (2026-02-22) found that 16 of 29 files had diverged from upstream. The divergences fall into categories that all lead to deletion:
->arity-tolerant, picker_options cache fix, attributes_options pathom3-batch?): upstream is better, use itinstall-statecharts!; form_render.cljc adds requires): these additions must move to this library's own namespaces (e.g. statechart.application), not shadow upstreamlog/timbre requires, use upstreamNo auth, no pathom3 — those are not concerns for this library.
com.fulcrologic/fulcro-rad {:mvn/version "LATEST"} to deps.edn :depspom.xml <dependencies> to include fulcro-radapplication.cljc: extract the 3 statechart-specific functions into com.fulcrologic.rad.statechart.application (new file in this library):
install-statecharts! — wraps scf/install-fulcro-statecharts! with URL syncstart-routing! — wraps scr/start!install-url-sync! — wraps scr/install-url-sync!
All other functions in this file (fulcro-rad-app, install-ui-controls!, secured-request-middleware, elision-predicate, elide-params, elide-ast-nodes, global-eql-transform, default-remote-error?, default-network-blacklist) are shared and come from upstream.form_render.cljc: verify the extra requires (app, rad) are not actually needed — if they are, add them where they're used in statechart code, not by shadowing upstreamrad.cljc (empty namespace stub at src/main/com/fulcrologic/rad.cljc) — it shadows the upstream namespace for no reasonAll files below are deleted. Upstream versions (from fulcro-rad dependency) take over.
| File | Namespace |
|---|---|
attributes.cljc | com.fulcrologic.rad.attributes |
ids.cljc | com.fulcrologic.rad.ids |
locale.cljc | com.fulcrologic.rad.locale |
errors.cljc | com.fulcrologic.rad.errors |
form_render_options.cljc | com.fulcrologic.rad.form-render-options |
report_render_options.cljc | com.fulcrologic.rad.report-render-options |
registered_maps.clj | com.fulcrologic.rad.registered-maps |
pathom_async.clj | com.fulcrologic.rad.pathom-async |
middleware/autojoin_options.cljc | com.fulcrologic.rad.middleware.autojoin-options |
type_support/date_time.cljc | com.fulcrologic.rad.type-support.date-time |
type_support/decimal.cljc | com.fulcrologic.rad.type-support.decimal |
type_support/js_joda_base.cljs | com.fulcrologic.rad.type-support.js-joda-base |
type_support/ten_year_timezone.cljs | com.fulcrologic.rad.type-support.ten-year-timezone |
| File | Namespace | Why upstream is better |
|---|---|---|
attributes_options.cljc | com.fulcrologic.rad.attributes-options | Missing pathom3-batch? def, doc improvements |
options_util.cljc | com.fulcrologic.rad.options-util | Missing ->arity-tolerant bug fix for CLJ arity handling |
picker_options.cljc | com.fulcrologic.rad.picker-options | Missing assoc-in time-path — breaks picker option caching |
pathom.clj | com.fulcrologic.rad.pathom | Missing p/env-plugin, sensitive-key improvements |
pathom_common.clj | com.fulcrologic.rad.pathom-common | Has sensitive-key path fix |
| File | Namespace |
|---|---|
report_render.cljc | com.fulcrologic.rad.report-render |
resolvers.cljc | com.fulcrologic.rad.resolvers |
middleware/autojoin.cljc | com.fulcrologic.rad.middleware.autojoin |
type_support/integer.cljc | com.fulcrologic.rad.type-support.integer |
| File | Namespace | What our fork did |
|---|---|---|
authorization.cljc | com.fulcrologic.rad.authorization | Replaced ~300 lines with pass-through redact stub. Auth is not in scope for this library. |
resolvers_common.cljc | com.fulcrologic.rad.resolvers-common | Auth wrapper stubbed out |
debugging.cljc | com.fulcrologic.rad.debugging | Removed UISM require |
| File | Namespace | Action before deletion |
|---|---|---|
application.cljc | com.fulcrologic.rad.application | Extract install-statecharts!, start-routing!, install-url-sync! into com.fulcrologic.rad.statechart.application |
form_render.cljc | com.fulcrologic.rad.form-render | Verify extra requires (app, rad) are used in statechart code; move if needed |
| File | Namespace | Issue |
|---|---|---|
middleware/save_middleware.cljc | com.fulcrologic.rad.middleware.save-middleware | Unused log/tempid requires |
type_support/js_date_formatter.cljs | com.fulcrologic.rad.type-support.js-date-formatter | Unused timbre require |
| File | Reason |
|---|---|
attributes_spec.cljc | Tests shared attributes code |
ids_spec.cljc | Tests shared ids code |
type_support/date_time_spec.cljc | Tests shared date-time code |
type_support/decimal_spec.cljc | Tests shared decimal code |
type_support/js_date_formatter_spec.cljs | Tests shared formatter code |
form.cljc, report.cljc, container.cljc — engine-specific codeform_options.cljc, report_options.cljc, container_options.cljc, control_options.cljc — modified option keyscontrol.cljc — multimethod conversionrouting.cljc — statecharts routing delegationform_chart.cljc, form_expressions.cljc, form_machines.cljc — NEW statecharts filesreport_chart.cljc, report_expressions.cljc — NEW statecharts filescontainer_chart.cljc, container_expressions.cljc — NEW statecharts filessc/session.cljc — NEW session conversionrendering/headless/* — NEW headless renderingserver_paginated_report.cljc, incrementally_loaded_report.cljc — statechart variantsapplication.cljc into new com.fulcrologic.rad.statechart.application namespace (creates install-statecharts!, start-routing!, install-url-sync!)form_render.cljc extra requires — trace usage, move to statechart code if neededdeps.edn (use :local/root "../fulcro-rad" during development)pom.xmlclj -e "(require ...)" for key namespaces to verify resolution from dependencyNote: Verification covers source compilation only. Test compilation will be broken until the test-migration spec is complete.
:local/root "../fulcro-rad" during development (needs impl extraction first), switch to :mvn/version for release.form_options.cljc and report_options.cljc have been modified (callback signature changes). These MUST NOT be deleted. After restructuring (later specs), shared keys will come from fulcro-rad's form-options, and only statechart-specific keys will be in statechart.form-options.application.cljc before deletionform_render.cljc extra requires traced and moved if neededdeps.edn has fulcro-rad as a dependencypom.xml declares fulcro-rad dependencyclj -e "(require 'com.fulcrologic.rad.attributes)" succeeds — resolves from dep)form_options.cljc and report_options.cljc are NOT 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 |