Workbench Feature Gap Analysis
Prototype gap analysis covering screen-level gaps, differentiators, and implementation priorities.
Cross-referencing the 14,284-line Reaktor specification against the v2.1 web prototype · May 2025
| Metric | Value |
|---|---|
| Entities modeled | 38 |
| Lines of prototype code | 6,102 |
| Spec coverage | ~35% |
| Critical architectural gaps | 5 |
Contents
- 1. What the Prototype Gets Right
- 2. Critical Architectural Gaps (5)
- 3. Screen-Level Feature Gaps
- 4. The Five Differentiators That Must Be Visible
- 5. Prioritized Implementation Plan
- 6. Node Type Coverage
- 7. Inspector Coverage by Entity Type
- 8. Overlay / Mode Coverage
✓ 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:
- The graph is typed — Port-to-port connections, not node-to-node arrows.
- The graph is live — Data flows through edges in real-time.
- The graph spans runtimes — Same graph, color-coded by deploy target.
- Agents are visitors — They walk the graph, not chat with you.
- Code is truth — 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
Tier 1 Makes the Vision Click — High Visual Impact
1Port-to-port edges — Change edge model to connect typed port slots. Render port slots on nodes. Makes graph look like Unreal Blueprints.CriticalMedium
2Live edge animation — Simulated PortInvocationEvent flow. Edges pulse with data. Even fake data transforms static diagram into living system.CriticalMedium
3Runtime color-coding — Nodes colored by deployment target (Kotlin=gray, JVM=blue, Worker=orange, Web=cyan, Hermes=green). Communicates multi-runtime story instantly.HighSmall
4Insights sub-tab content — Each of 7 tabs shows distinct content (errors list, trace waterfall, cost breakdown, etc.).HighMedium
5Inspector data binding — Connect inspector fields to actual entity data. Different entities show different schemas/ports/metrics.HighMedium
Tier 2 Differentiators — What Makes This NOT FlutterFlow
6Agent traversal overlay — Show simulated agent walking the graph. Colored path lights up nodes. Most unique Reaktor concept.HighMedium
7Data tier overlay — T0 (SQLite) → T1 (Durable Objects) → T2 (Postgres) → T3 (Memgraph) → T4 (R2). Cache hit rates per tier.MediumMedium
8GraphCommand diversity — Show AddNode, ConnectPorts, CreateSubgraph operations in command queue, not just SetProperty.MediumSmall
9Multiple previewable screens — Run screen route switching (/onboarding, /chats, /chats/{id}) with different preview per route.MediumLarge
10Navigation simulation — Fire NavCommand from graph → Run screen navigates. "The graph IS the runtime."MediumLarge
Tier 3 Completeness — Demo Day Polish
11IDE deep links — Open in IntelliJ/VS Code via URL protocol (idea:// / vscode://)LowSmall
12Multiple traces in DevTools — Trace picker dropdown, not single hardcoded traceLowSmall
13Actor node type — Add ActorNode entities with mailbox depth, address, supervision strategy to data modelMediumMedium
14GraphManifest diff in deploy — Compute and display actual node/edge additions/removals/changesLowSmall
15Bus metrics in insights — publish/consume latency, DLQ depth, outbox age gaugesLowSmall
16Notification flow visualizationLowMedium
● 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 |
Generated from analysis of Reaktor specification (14,284 lines) vs prototype codebase (6,102 lines) · reaktor.build
Related docs
- Strategic Roadmap - Use for strategic framing and product sequencing.
- Engine Report - Use when reviewing what was implemented and what remains.
- Desktop v3 - Use to inspect the current visual target and interaction model.
- Koog Workbench - Use before wiring real agent behavior into reaktorDesktop.
- UI & Design System - Use before touching reaktor-ui tokens/components/theming, designing the tactile runtime (interaction/physics/field/skins/host-tree/reconciler), or planning adaptive layouts and AI/server-driven UI.
- Visual Language - Use when designing the node-based authoring/orchestration language and its editor, compiler, and agentic surface.