Orchestrata Ultimate › Plans › plan_vizint_phase_6 › roadmap

VizInt Command Center — Gap Closure Roadmap

Source: plans/plan_vizint_phase_6/roadmap.md at 8a2cb42ad · last changed 2026-07-27 · first committed 2026-05-26 · 322 lines.

Prose pending.

Plan text

VizInt Command Center — Gap Closure Roadmap

Status: All 4 Sprints Complete | Target: 100% Requirements + 90% Constitutional Compliance
Current: ~86% Requirements (253/294) | 44% Constitutional (63/142)
Gap: 41 Requirements | 79 Constitutional Items to reach 90%


Executive Summary

The Command Center is functionally complete for all P1 and P2 gadgets. The remaining work falls into four categories:

  1. Gadget Polish (29 requirements): Deferred work, task detail panels, file tree deep-dive, export features
  2. Personal Gadgets (8 requirements): Todoist, Email, Calendar integrations + Web Crypto token storage
  3. Observability & Resilience (40 constitutional items): Debug panel, error boundaries, metrics, recovery
  4. Code Quality & Documentation (45 constitutional items): JSDoc, error handling, API docs, testing standards

Estimated Effort: ~120 hours (3 weeks at full-time, 6 weeks at 50%)

Priority Order: Resilience → Gadget Polish → Observability → Personal Gadgets → Documentation


Part I: Requirements Gap Analysis (52 Missing)

Category A: Project Explorer Deep-Dive (9 requirements | 18h)

ID Requirement Effort Blockers
REQ-016-005 Iteration summary with gap trend 2h Needs Neo4j Iteration node queries
REQ-016-006 File tree with pagination 3h knowledge.nodes pagination API exists
REQ-016-007 Directory expand/collapse 2h Pure UI
REQ-016-008 Real-time file search 2h Debounced filter on fetched data
REQ-016-009 File entry metadata (classes, functions) 2h Already in knowledge.nodes response
REQ-016-010 Click file → KGExplorer navigation 2h Bus event + KGExplorer filter param
REQ-016-012 Sparkline trends on KG counts 3h Reuse QA Dashboard sparkline component
REQ-016-013 Auto-refresh every 60s 1h setInterval + existing subscription
REQ-016-014 Click count → KGExplorer filtered 1h Bus event with node_type filter

Implementation Strategy: Add a FileTree sub-component to ProjectExplorer. Use existing knowledge.nodes pagination. Extract sparkline as reusable CanvasSparkline class. Use ctx.bus.emit('kg-explorer:filter', { node_type }) for cross-gadget navigation.

Category B: Session Manager Enhancements (10 requirements | 24h)

ID Requirement Effort Blockers
REQ-016-016 Status badges (green pulse, grey, red) 2h Pure CSS
REQ-016-017 Recent iterations list 2h Neo4j query
REQ-016-018 Click session → SessionManager select 1h Bus event
REQ-016-019 Click iteration → IterationBrowser 2h New gadget or redirect
REQ-016-020 Auto-refresh on events 1h Already subscribed
REQ-016-033 Deferred work prioritized list 4h New sub-component
REQ-016-034–039 Deferred work CRUD + persistence 8h RPC methods needed
REQ-016-040–042 Log work input + display 4h RPC + UI

Implementation Strategy: Add DeferredWorkPanel and WorkLogPanel sub-components. Backend needs session.deferredWork RPCs (list, add, update, delete) and session.logWork. Store deferred work in session context.json.

Category C: Volk Status Polish (3 requirements | 6h)

ID Requirement Effort
REQ-016-089 Detail panel updated via lifecycle events 2h
REQ-016-091 Compact mode (<400px) 2h
REQ-016-092–093 Layout auto-switch + manual toggle 2h

Category D: Task Board Detail Panel (7 requirements | 16h)

ID Requirement Effort
REQ-016-137–141 Detail panel slide-out with inline editing 10h
REQ-016-142–144 Gateway persistence + conflict resolution 6h

Implementation Strategy: Slide-out panel pattern (reuse property panel from KGExplorer). Backend needs projects.taskUpdate RPC. Conflict resolution via last-write-wins with timestamp comparison.

Category E: Claude Chat Search (1 requirement | 2h)

ID Requirement Effort
REQ-016-118 Message keyword filter 2h

Category F: Audit Trail Export (4 requirements | 6h)

ID Requirement Effort
REQ-016-185–188 CSV/JSON export with filters 6h

Category G: Personal Gadgets (8 requirements | 32h)

ID Requirement Effort Notes
REQ-016-235–238 TodoistGadget 12h API token, today's tasks, toggle, quick-add
REQ-016-239 EmailGadget 8h Unread count, sender/subject previews
REQ-016-240 CalendarGadget 8h Today's events with time blocks
REQ-016-241 Web Crypto token encryption 4h Encrypt before localStorage
REQ-016-242 Personal gadgets offline-capable — Already satisfied by architecture

Decision Point: Todoist/Email/Calendar gadgets are P3 (nice-to-have). They add significant value for daily driver usage but are not required for core orchestrata functionality. Recommendation: Implement Web Crypto token storage first (unblocks all personal gadgets), then Todoist as the highest-value personal gadget.


Part II: Constitutional Gap Analysis (120 Missing)

Article I: Agent Autonomy (10 items | 4h)

All items are behavioral guarantees already satisfied by the architecture but not formally verified:

Verification: Add integration tests proving no gadget bypasses the gateway. Mark as verified.

Article II: Prolog SSOT (10 items | 8h)

Implementation: Add governance.evaluate and governance.rules RPC handlers. Ensure AuditTrail renders raw JSON without reformatting.

Article III: Session Isolation (12 items | 12h)

Critical for production safety. Requires:

  1. Session-scoped test_id equivalent for all gadget data operations
  2. session_id parameter on all RPC calls
  3. Per-session localStorage namespace
  4. Gadget state reset on session switch

Implementation: Add sessionScope wrapper to StateSync. Prefix all localStorage keys with active session ID. Clear gadget state on session.close event.

Article IV: Hooks for Extensibility (10 items | 16h)

Implementation: Add plugin API surface to Registry, NotificationManager, and Theme system.

Article V: Minimal Core (8 items | 4h)

Mostly verified. Remaining:

Article VI: JS ES2024 Standards (11 items | 20h)

High-impact code quality work:

Article VII: Testing Without Mocks (10 items | 16h)

Implementation: Add tests/integration/ directory with tests against real gateway server.

Article VIII: Observability (20 items | 40h)

Largest single category. Requires building:

  1. MetricsCollector class (CONST-VIII-001–010): Track render times, RPC latency, event delivery, memory, FPS, errors
  2. DebugPanel gadget (CONST-VIII-016): Toggle overlay showing subscriptions, RPC queue, bus traffic
  3. PerformanceOverlay (CONST-VIII-017): FPS counter, memory gauge, render time histogram
  4. GadgetHealthIndicator (CONST-VIII-015): Error/loading states in chrome titlebar

Architecture:

// lib/metrics.js
export class MetricsCollector {
  recordRender(gadgetId, duration) {}
  recordRpcLatency(method, duration) {}
  recordEventDelivery(topic, latency) {}
  recordError(gadgetId, error) {}
  getSnapshot() {}
}

Article IX: Graceful Degradation (20 items | 32h)

Critical for production reliability:

  1. ErrorBoundary (CONST-IX-006, 007, 014): Wrap each gadget mount in try/catch, show error state with retry button
  2. RPC Queue (CONST-IX-003, 013): Bridge already queues 100 calls; verify flush on reconnect
  3. Auto-re-subscription (CONST-IX-008, 012): Track active subscriptions, re-subscribe after reconnect
  4. localStorage Quota (CONST-IX-010): Measure usage, evict oldest entries
  5. Read-only mode (CONST-IX-001): Disable inputs when bridge disconnected

Article X: Versioning (10 items | 12h)

Article XI: Documentation (10 items | 16h)


Part III: Prioritized Implementation Plan

Sprint 1: Resilience Foundation (Week 1 | 40h)

Goal: Close all Article IX degradation items + Article VIII observability core

Day Task Hours Deliverable
1 ErrorBoundary wrapper for gadget mount 6 Error state UI + retry button
1 Bridge RPC queue verification 2 Test: queue fills, drains on reconnect
2 Auto-re-subscription on reconnect 6 Track subs, re-subscribe after reconnect
2 Read-only mode when disconnected 4 CSS class gadget--readonly, input disabling
3 MetricsCollector core 8 lib/metrics.js with render/RPC/event tracking
4 DebugPanel gadget 8 Toggle overlay: subs, RPC queue, bus traffic
4 PerformanceOverlay 4 FPS counter, memory gauge
5 GadgetHealthIndicator in chrome 4 Error/loading dots in titlebar
5 localStorage quota handling 4 Measure, evict, warn

Exit Criteria: All 20 Article IX items verified. 10 Article VIII items verified.

Sprint 2: Gadget Polish (Week 2 | 40h)

Goal: Close 29 requirements in Categories A–F

Day Task Hours Deliverable
1 FileTree sub-component 6 Expandable tree, search, metadata
1 ProjectExplorer → KGExplorer navigation 2 Bus events for cross-gadget filtering
2 Sparkline extraction + KG counts 4 Reusable CanvasSparkline class
2 Session status badges + iterations 4 CSS pulse animation, iteration list
3 DeferredWorkPanel 8 CRUD UI, priority sorting
3 WorkLogPanel 4 Input + history list
4 Backend RPCs: session.deferredWork, session.logWork 6 Python handlers + tests
4 Volk Status detail panel + compact mode 4 Slide-out panel, responsive layout
5 Task Board detail panel 6 Slide-out with inline editing
5 Audit Trail CSV/JSON export 4 Download generation

Exit Criteria: All Category A–F requirements checked. Backend RPCs pass tests.

Sprint 3: Code Quality & Standards (Week 3 | 40h)

Goal: Close Article VI, VII, X + documentation

Day Task Hours Deliverable
1 JSDoc all public APIs 8 20 files documented
1 structuredClone migration 4 Replace JSON.parse(JSON.stringify())
2 Error handling audit 6 try/catch on all async operations
2 Function length refactor 4 Split functions > 40 lines
3 Event listener cleanup audit 4 Verify all unmount() remove listeners
3 Console.log → logger audit 4 Redirect all console.* to logger()
4 Gateway version check 4 gateway.info call + banner
4 CSS property prefixing 4 --cc-* prefix audit + migration
5 Integration tests 6 tests/integration/ against real gateway
5 Documentation: API docs + plugin guide 6 Markdown docs for all public APIs

Exit Criteria: All Article VI items verified. Article VII integration tests passing. API docs complete.

Sprint 4: Personal Gadgets & Final Polish (Week 4 | 32h)

Goal: Web Crypto, Todoist gadget, remaining constitutional items

Day Task Hours Deliverable
1 Web Crypto token encryption 6 lib/crypto.js encrypt/decrypt
1 Plugin API: registry.loadFromURL 4 Dynamic gadget loading
2 TodoistGadget 10 API token auth, tasks, toggle, quick-add
3 Article I + II verification 4 Integration tests + audit
3 Article III session isolation 6 Session-scoped StateSync
4 Article IV extensibility hooks 6 Theme injection, notification handlers
4 Article V verification 2 Dependency audit
5 Final compliance run 4 Full constitutional + requirements audit

Exit Criteria: ≥90% constitutional compliance (128/142). 100% requirements completion.


Part IV: Risk Register

Risk Likelihood Impact Mitigation
Backend RPC gaps block frontend work Medium High Define RPC contracts first, mock until backend ready
Web Crypto API not supported in test env Low Medium Fallback to plain localStorage in tests
KGExplorer force-directed graph too slow Medium Medium Offload to Web Worker, cap node count
ErrorBoundary catches break gadget state Medium High Test error injection per gadget
Integration tests flaky with real gateway Medium Medium Retry logic, health checks before tests

Part V: Verification Checklist

Per-Sprint Gates

Before starting next sprint:

Final Gate (End of Sprint 4)