Cross-referencing the 14,284-line Reaktor specification against the v2.1 web prototype · May 2025
Contents
✓ What the Prototype Gets Right
Layout & Information Architecture
5 screens (Graph, Run, DevTools, Deploy, Insights), type-aware inspector with 13 entity types, left sidebar with entity browser + component tree, bottom drawer with 7 tabs, breadcrumb navigation, floating graph-link card. All correct per spec.
Interactive Controls
Cmd+K search palette, graph pan/zoom/fit, edge type overlay filters, cross-mode navigation (14+ buttons wired), device mode/theme/network controls, sidebar search filtering, deploy env switching, arrow key navigation.
Data Model
38 entities across 10 types, 35 typed edges with 8 edge types, an active path trace (10-node causal chain), command bundle with 7 commands and code diffs. Reasonable for a prototype facade.
Visual Design
Dark theme with proper design tokens, type hierarchy, color-coding per entity type, graph node cards with port pins and metrics, SVG bezier edges with animation, sparklines, pipe bars, CI pipeline visualization.
! Critical Architectural Gaps
These are not missing features — they are architectural mismatches between the prototype and Reaktor's core design. Each gap means the prototype misrepresents how Reaktor actually works.
Gap 1: Graph Model Missing Core Node Types
The spec defines 8 node types with distinct behaviors forming a hierarchy. The prototype has a flat type system with 10 ad-hoc types (route, screen, ui, action, container, interactor, service, edge, db, topic) that don't map to the real hierarchy.
| Spec Node Type | Prototype | Status |
|---|---|---|
| BasicNode | No equivalent | Missing |
| ControllerNode | interactor (partial) | Partial |
| ComposeNode | screen (partial) | Partial |
| ContainerNode | container | Good |
| RouteNode | route | Good |
| ActorNode | No equivalent | Missing |
| ServiceNode | service (partial) | Partial |
| NativeNode | No equivalent | Missing |
Impact: Viewers think Reaktor is a screen→service→database chain, not a typed actor graph with supervision trees.
Gap 2: Port System is Absent
The entire ConsumerPort<T> / ProviderPort<T> system — the core of Reaktor — is not modeled. Edges connect node-to-node, not port-to-port. Port pins on graph nodes are decorative.
The spec says: "every architectural edge is typed" and "autoWire() matches by Key + Type". The prototype has untyped string connections.
Missing: typed port connections, autoWire visualization, port data flow animation, PortInvocationEvent concept, interactive port pins.
Gap 3: No Live Runtime Connection Model
The spec describes two modes: In-Process Mode (direct object access, zero latency) and Remote Mode (WebSocket debug protocol). The prototype has neither — all data is hardcoded.
Missing: connecting to running apps, live state observation, live edge animation from PortInvocationEvents, state/port data injection, node pause/resume/kill, edge breakpoints.
Gap 4: GraphCommand System Partially Represented
The command queue is well-designed but only shows SetProperty operations. Missing: AddNode, ConnectPorts, CreateSubgraph structural mutations. No ManifestDelta concept, no bidirectional code generation flow, no compilation self-healing loop.
Gap 5: Agent-as-Visitor Model Not Represented
The spec says agents are Visitors with LLM-powered decision-making, not chat interfaces. The prototype's "Code Agent" tab is a chat log. Missing: agent traversal visualization (colored overlays on graph), multiple agent types (Code/Schema/Performance/Deployment), RBAC permission model, Planning→Reasoning→Acting→Reflecting lifecycle.
■ Screen-Level Feature Gaps
Graph Screen
| Feature (from spec) | Status | Notes |
|---|---|---|
| Semantic lane layout (services left, routes center, screens right) | Done | Approximate column layout |
| Pan / zoom / fit | Done | Wheel, buttons, fit-to-view |
| Edge type filtering | Done | 8 edge types with overlay dropdown |
| Node hover tooltip | Done | Type, title, source, metrics |
| Container node rendering | Done | Dashed border style |
| Focus modes (selected/blast/trace/tests) | Done | Opacity dimming for non-focus nodes |
| Minimap | Done | Scaled projection with viewport rect |
| Port-to-port edge routing | Missing | Edges connect node centers, not typed ports |
| Live edge animation (PortInvocationEvent) | Missing | One hardcoded animated edge only |
| Node color by deployment runtime | Missing | Color by type, not by Kotlin/JVM/Worker/Hermes target |
| Dead code overlay (zero incoming edges) | Missing | |
| Agent traversal overlay | Missing | No visualization of agent visitors walking the graph |
| Mesh network overlay | Missing | Peers, connections, RTT, packet loss |
| Data tier overlay (T0-T4) | Missing | Cache layers, hit rates, replication lag |
| Actor mesh overlay | Missing | Actors, in-flight messages, supervision trees |
| Edge breakpoints | Missing | Pause graph on specific edge data flow |
| Container sub-graph nesting | Missing | Containers are flat, no visual nesting with DI scope |
Run Screen (WYSIWYG)
| Feature | Status | Notes |
|---|---|---|
| Component → graph entity selection | Done | AppleButton + GoogleButton |
| Selection overlay with dimensions | Done | Corner handles, dp labels |
| Floating graph link card | Done | Action chain, trace, 6 buttons wired |
| Device mode switching (phone/tablet/desktop) | Done | |
| Theme toggle (light/dark) | Done | |
| Network simulation overlay | Done | Offline / Slow 3G bars |
| Multiple previewable screens | Missing | Only OnboardingScreen; can't switch routes |
| Style editing (inspector → preview updates) | Missing | Inspector values not bound to preview |
| ActionRef dispatch visualization | Missing | Can't see action chains fire |
| Bridge edge visualization (React/RSD) | Missing |
DevTools / Drilldown
| Feature | Status | Notes |
|---|---|---|
| Causal trace with duration bars | Done | Waterfall timing per step |
| Cross-mode navigation from steps | Done | Graph / Deploy buttons |
| Dynamic blast radius from graph | Done | 3-hop walk, counts nodes/modules/targets |
| Multiple traces / trace picker | Missing | Single hardcoded trace |
| State injection | Missing | |
| Port data injection | Missing | |
| Navigation simulation (fire NavCommands) | Missing |
Deploy Screen
| Feature | Status | Notes |
|---|---|---|
| Partition topology visualization | Done | 6 partitions with items |
| Environment switching (Local/Staging/Production) | Done | Different CI status per env |
| Partition item → entity selection | Done | 6 items mapped |
| CI pipeline visualization | Done | 11 steps with progress bars |
| GraphManifest diff driving deployment | Missing | "Graph diff" badge is static text |
| Proxy node insertion visualization | Missing | |
| JS bundle adoption % tracking | Missing | |
| Rollback orchestration | Missing | Button exists, no-op |
Insights Screen
| Feature | Status | Notes |
|---|---|---|
| Timeline with deploy markers | Done | p95 + CVR series, deploy/spike markers |
| Metric cards with sparklines | Done | 6 metrics, up/down coding |
| Graph heatmap (p95 by entity) | Done | 4 lanes, color-coded cells |
| Time range switching | Done | 1h/24h/7d/30d with axis label updates |
| Distinct sub-tab content (7 tabs) | Missing | All 7 tabs render identical Performance content |
| Navigation heatmaps (user paths) | Missing | |
| Bus metrics panel (DLQ, outbox age) | Missing | |
| Per-RouteNode Web/App Vitals | Missing | |
| Flamegraph overlay (heat on nodes) | Missing | Heatmap exists but not linked to profiling |
★ The Five Differentiators
These are the properties that make Reaktor Desktop not another app builder. Every demo, screenshot, and prototype should make these visible:
Port-to-port connections, not node-to-node arrows
Data flows through edges in real-time
Same graph, color-coded by deploy target
They walk the graph, not chat with you
GraphCommand → CodeDiff, not diagram → code
Key insight: The prototype currently looks like a nice dashboard. Making these 5 differentiators visible — even with mock data — turns it into "this is the future of app development".
▲ Prioritized Implementation Plan
● Node Type Coverage
| Spec Node Type | Role | Prototype Type | Inspector | Graph Rendering | Runtime Color |
|---|---|---|---|---|---|
| BasicNode | Stateless logic | Missing | - | - | - |
| ControllerNode | Stateful ViewModel | interactor | ServiceInspector | Standard node | No |
| ComposeNode | UI + Controller | screen | ScreenInspector | Standard node | No |
| ContainerNode | Sub-graph group | container | ContainerInspector | Dashed border | No |
| RouteNode | Navigation dest | route | RouteInspector | Standard node | No |
| ActorNode | Mailbox + address | Missing | - | - | - |
| ServiceNode | Request handlers | service | ServiceInspector | Standard node | No |
| NativeNode | FFI bridge proxy | Missing | - | - | - |
■ Inspector Coverage by Entity Type
| Inspector | Tabs | Data Binding | Navigation | Key Gaps |
|---|---|---|---|---|
| RouteInspector | 5 tabs | Partial | Wired | Sparkline seeded data; IdeLinks no-op |
| ScreenInspector | 6 tabs | Partial | Wired | Recompose count hardcoded; source snippet always OnboardingScreen |
| UiInspector | 9 tabs | Partial | Wired | PropInput not bound to entity; layout box hardcoded; CVR hardcoded |
| ActionInspector | 4 tabs | Static | Wired | Signature always shows loginWithApple; invocation list hardcoded |
| ContainerInspector | 3 tabs | Dynamic | - | Members computed from edges (good); source section empty |
| ServiceInspector | 6 tabs | Partial | Wired | Schema always SessionPayload; RBAC hardcoded; missing transport type |
| EdgeInspector | 4 tabs | Partial | Wired | Deploy status hardcoded (always v4.2.1) |
| DbInspector | 4 tabs | Static | - | Schema SQL always d1.sessions; migration hardcoded |
| TopicInspector | 3 tabs | Static | - | Schema hardcoded EventEnvelope |
| TelemetryInspector | 2 tabs | Static | - | Schema section empty |
| TestInspector | 2 tabs | Static | - | Only identity + framework |
| ReleaseInspector | 5 tabs | Partial | Wired | Affected targets and gates hardcoded; cost estimates static |
◉ Graph Overlay / Mode Coverage
| Overlay (from spec) | Status | Description |
|---|---|---|
| Default graph view | Implemented | Nodes, edges, type badges, metrics |
| Focus modes (selected/blast/trace/tests) | Implemented | Dim non-focus nodes |
| Edge type filtering | Implemented | 8 types with checkboxes |
| Runtime color overlay | Missing | Nodes colored by Kotlin/JVM/Worker/Web/Hermes target |
| Agent traversal overlay | Missing | Colored paths showing active agent visits |
| Mesh network overlay | Missing | Peers as nodes, WebRTC connections, RTT, packet loss |
| Data tier overlay (T0-T4) | Missing | Cache layers, projection paths, hit rates |
| Actor mesh overlay | Missing | Actors, mailboxes, supervision trees, in-flight messages |
| Bus topology overlay | Missing | Pub/Sub kinds, routing, DLQ entries |
| Flamegraph heat overlay | Missing | Blue/yellow/red heat indicators on nodes from profiler data |
| Dead code overlay | Missing | Zero-incoming-edge nodes grayed out |
| Navigation heatmap overlay | Missing | User path frequency, drop-off rates |
| Lifecycle state overlay | Missing | Nodes colored by Created/Restoring/Attaching/Active/Destroying |