Skip to content

Ownership Matrix

Type: Reference The single source for "where does X live?" — every contract surface in re-frame2 has exactly one canonical home spec; other specs may reference the surface, but those references are informational and must not redefine the contract. Use this matrix to navigate, and to detect drift if a definition ever appears in a non-owning doc.

Every contract surface in re-frame2 has exactly one canonical home spec. Other specs may reference the surface, but those references are non-normative — they cite the canonical home rather than redefining the contract. The "Referenced in" column lists those informational mentions.

The Artefact column names the Maven artefact that ships the surface in the CLJS reference. Surfaces marked core (split pending: rf2-NNNN) are currently in day8/re-frame2 and will move to day8/re-frame2-<feature-id> under the named bead. The packaging architecture (artefact tiers, naming, independence rule) is normative in Conventions §Packaging conventions.

Contract surface Canonical home spec Artefact Referenced in (informational)
Goals, hard constraints, host-profile matrix, identity primitive, minimal-core contract 000-Vision spec-only (no runtime artefact) Principles, Implementor-Checklist, API
Registration grammar (reg-* shape, metadata map, two-form middle slot) 001-Registration day8/re-frame2 (core) API, Spec-Schemas §:rf/registration-metadata, Construction-Prompts
Registry kind taxonomy (the canonical kind keyword set) 001-Registration day8/re-frame2 (core) API, Spec-Schemas
Source-coordinate capture (macro-driven, CLJS reference) 001-Registration day8/re-frame2 (core) Tool-Pair, 009-Instrumentation (trace events carry coords)
Hot-reload semantics for registrations 001-Registration day8/re-frame2 (core) 002-Frames (sub-cache invalidation)
Registry query API (handlers, handler-meta, frame-ids, frame-meta — registrar contract) 001-Registration day8/re-frame2 (core) 002-Frames §The public registrar query API (re-tabulates alongside frame-runtime queries), Tool-Pair, 007-Stories
Frame-runtime queries (get-frame-db, snapshot-of, sub-topology, sub-cache) 002-Frames day8/re-frame2 (core) Tool-Pair, 008-Testing
Frame model, identity, lifecycle, :rf/default fallback 002-Frames day8/re-frame2 (core) API, Spec-Schemas
Event handlers (reg-event-fx, reg-event-db, the (state, event) → effects-map contract) 002-Frames day8/re-frame2 (core) API, Construction-Prompts CP-1, Pattern-AsyncEffect
Dispatch envelope (dispatch, dispatch-sync, explicit-frame addressing, two-arg form) 002-Frames day8/re-frame2 (core) API, Tool-Pair
subscribe (frame-bound and global forms; reg-sub registration surface) 002-Frames day8/re-frame2 (core) 006-ReactiveSubstrate (the runtime cache & derivation graph the surface consumes), API, Construction-Prompts CP-2
Subscription runtime — derivation graph, sub-cache, invalidation, change tracking, layer-1/2/3 semantics 006-ReactiveSubstrate day8/re-frame2 (core) 002-Frames (registration & call-site surface), 008-Testing (compute-sub)
subscribe-value (one-shot, non-reactive read; subscribe + deref + immediate unsubscribe) 006-ReactiveSubstrate day8/re-frame2 (core) API, 002-Frames (call-site surface), 008-Testing (compute-sub for the cache-bypassing pure equivalent)
unsubscribe (explicit teardown; ref-count decrement; pairs with imperative subscribe) 006-ReactiveSubstrate day8/re-frame2 (core) API, 002-Frames (call-site surface)
frame-provider (CLJS reference; React-context plumbing of frame keyword to subtree) 002-Frames day8/re-frame2 (core) 004-Views, 007-Stories
Effect-map shape (closed :db + :fx at top level) 002-Frames day8/re-frame2 (core) Spec-Schemas §:rf/effect-map, API
Effects (reg-fx) and coeffects (reg-cofx) 002-Frames day8/re-frame2 (core) API, Pattern-AsyncEffect, 011-SSR (:platforms)
Run-to-completion drain semantics 002-Frames day8/re-frame2 (core) 005-StateMachines (drain interaction), 008-Testing (synchronous triggers)
Per-frame and per-call overrides (:fx-overrides, :interceptor-overrides, :interceptors) 002-Frames day8/re-frame2 (core) 008-Testing, 007-Stories
Machines-as-event-handlers foundation hooks 002-Frames day8/re-frame2 (core) 005-StateMachines (full grammar)
View contract and reg-view (pure (state, props) → render-tree, Form-1/2/3) 004-Views day8/re-frame2 (core) API, 011-SSR, Construction-Prompts CP-4
State machine grammar and reg-machine (transition table, :always, :after, :invoke, :invoke-all, hierarchical states, :tags, :type :parallel + :regions, snapshot shape) 005-StateMachines day8/re-frame2-machines (rf2-xbtj) CP-5-MachineGuide, Pattern-NineStates, Pattern-WebSocket, Pattern-Boot, Pattern-LongRunningWork
Reactive substrate contract + reference adapters (Reagent default, plain-atom for JVM) 006-ReactiveSubstrate day8/re-frame2 (core) — substrate contract + plain-atom adapter; the Reagent adapter ships in day8/re-frame2-reagent 008-Testing, 011-SSR
UIx adapter (use-subscribe hook, flush-views! test flush, source-coord wrapping component, UIx-side frame-provider) 006-ReactiveSubstrate day8/re-frame2-uix (rf2-3yij) API, Conventions (adapter shipping convention)
Helix adapter (use-subscribe hook, flush-views! test flush, source-coord wrapping component, Helix-side frame-provider) 006-ReactiveSubstrate day8/re-frame2-helix (rf2-2qit) API, Conventions (adapter shipping convention)
Shared React frame Context (factored out so every React-shaped adapter consumes the same createContext object) 002-Frames, 006-ReactiveSubstrate day8/re-frame2 (core) — re-frame.adapter.context, CLJS-only; consumed by day8/re-frame2-reagent, day8/re-frame2-uix, and day8/re-frame2-helix API
Stories / Variants / Workspaces 007-Stories post-v1 008-Testing (portable-stories-as-tests)
Testing infrastructure (fixtures, synchronous triggers, per-test stubs, headless evaluation, framework adapters, JVM-runnable suites) 008-Testing day8/re-frame2 (core) API, 007-Stories, conformance/
Trace event model (envelope, ids, listener API) 009-Instrumentation day8/re-frame2 (core) Tool-Pair, API
Error contract (structured trace events, per-frame :on-error policy); the §Error event catalogue is the single source of truth for every :rf.error/*, :rf.warning/*, :rf.fx/*, :rf.cofx/*, :rf.ssr/*, :rf.epoch/*, :rf.http/*, :rf.frame/*, :rf.route.nav-token/* category — id · :op-type · trigger · default :recovery · :tags (per rf2-wfbn3) 009-Instrumentation day8/re-frame2 (core) API, all Specs that emit errors cite this section
Schema attachment (:spec, reg-app-schema), validation timing, dev-vs-prod elision, validator-fn extension point 010-Schemas core (split pending: rf2-p7vaday8/re-frame2-schemas) 001-Registration §Schema integration, Spec-Schemas
SSR flow (server frame lifecycle, hydration payload, :rf/hydrate, hydration-mismatch detection) 011-SSR day8/re-frame2-ssr (rf2-uo7v) 004-Views, 008-Testing, 012-Routing
:platforms metadata on reg-fx/reg-cofx; pure hiccup → HTML emitter 011-SSR day8/re-frame2 (core) — :platforms metadata; the hiccup→HTML emitter ships in day8/re-frame2-ssr (rf2-uo7v) 002-Frames, API
Route grammar, :route sub, navigation events, route-not-found, navigation-blocking, fragments, scroll restoration 012-Routing day8/re-frame2-routing (rf2-k682) 011-SSR, API
Flows (reg-flow / :rf.fx/reg-flow / :rf.fx/clear-flow, computed-state declarations materialised into app-db) 013-Flows day8/re-frame2-flows (rf2-tfw3) API, Conventions (:rf.fx/* reserved)
Managed HTTP requests (:rf.http/managed fx, args-map shape, decode pipeline, :accept normalisation, retry-with-backoff, abort surface, frame-aware reply addressing, eight-category :rf.http/* failure taxonomy, schema-reflection metadata, canned stubs, with-managed-request-stubs) 014-HTTPRequests day8/re-frame2-http (rf2-5kpd) API, Spec-Schemas, Conventions (:rf.http/* reserved), Pattern-AsyncEffect, Pattern-RemoteData, Pattern-StaleDetection, 009-Instrumentation (:rf.http/retry-attempt trace)
Runtime shapes (Malli, CLJS reference) — :rf/effect-map, :rf/registration-metadata, :rf/hydration-payload, :rf/trace-event, etc. the per-Spec owner of each shape; Spec-Schemas is the projection (collected EDN forms) — non-canonical per-surface (matches the owning Spec's row) every Spec that owns a shape
API signatures (consolidated) the per-Spec owner of each surface; API is the projection — non-canonical per-surface (matches the owning Spec's row) per-Spec owners
Migration rules (re-frame v1.x → re-frame2, CLJS reference) MIGRATION spec-only (no runtime artefact) per-Spec owners (contract content); Migration owns the rules
Pair-tool runtime contract (inspect, dispatch, hot-swap, time-travel, fx-stub, source-map) Tool-Pair core for the inspect / dispatch / hot-swap / fx-stub / source-map slices (which ride the registrar / dispatch / trace surfaces in day8/re-frame2); the time-travel slice — the re-frame.epoch namespace, :rf/epoch-record ring buffer, register-epoch-cb! / remove-epoch-cb! listener API, restore-epoch rewind, and the :rf.epoch/* trace ops — ships in day8/re-frame2-epoch (rf2-lt4e) 001-Registration, 009-Instrumentation
Reserved-namespace policy, reserved fx-ids and app-db keys Conventions spec-only (no runtime artefact) every Spec that uses a reserved id cites the Conventions list
Construction-prompt scaffolding templates Construction-Prompts spec-only (no runtime artefact) per-Spec owners (contract content); Construction-Prompts owns the scaffolding shape
Conformance fixtures (canonical interactions and expected emissions, in EDN) conformance/ spec-only (no runtime artefact) per-Spec owners (contract content); conformance owns the fixture corpus

Drift rule: if a contract surface acquires a second normative definition (a redefinition rather than a citation), that is a corpus bug. File it as a spec-review bead and resolve by collapsing back to the listed owner.