21 KiB
Temporal & Scenario Analysis - Implementation Checklist
Phase 1: Core State Management (Week 1-2)
Data Model Setup
-
Create
/src/types/temporal.ts- Define
StateTypeenum - Define
TemporalMetadatainterface - Define
ScenarioMetadatainterface - Define
StateRelationshipinterface - Define
AnalysisStateinterface - Define
StateDiffinterface - Define
ActorJourneyinterface - Define
Timelineinterface - Define
ScenarioTreeinterface
- Define
-
Update
/src/stores/persistence/types.ts- Add
statesproperty toConstellationDocument - Add
supportsStatesto document metadata - Ensure backward compatibility
- Add
-
Create migration helper
- Function to enable states for existing documents
- Function to create initial state from current graph
- Test migration with sample documents
State Store Implementation
- Create
/src/stores/stateStore.ts- Basic store structure with Zustand
- State CRUD operations
createState()loadState()deleteState()updateStateMetadata()
- State retrieval
getState()getAllStates()getStatesByType()
- Navigation helpers
getNextState()getPreviousState()
Snapshot Functionality
- Create
/src/utils/stateSnapshot.tscaptureCurrentGraph()- serialize current graph staterestoreGraphFromState()- load state into graphvalidateStateData()- ensure data integrity- Handle edge cases (empty graph, large graphs)
Basic UI Integration
-
Update
/src/components/Toolbar/Toolbar.tsx- Add "Capture State" button
- Add current state indicator
- Add loading/saving state indicators
-
Create
/src/components/TemporalAnalysis/StateSelector.tsx- Basic dropdown UI
- List all states
- Click to load state
- Show current state indicator
- Search/filter functionality
-
Create hooks
/src/hooks/useStateManagement.tsuseCurrentState()useCaptureState()useLoadState()
Integration with Workspace
- Update
/src/stores/workspaceStore.ts- Add
captureCurrentState()action - Add
restoreState()action - Ensure states saved with document
- Handle state data in export/import
- Add
Testing
- Test state creation
- Test state loading
- Test state persistence
- Test with empty graphs
- Test with large graphs (100+ nodes)
- Test edge cases (missing data, corrupted states)
Phase 2: Temporal Analysis (Week 3-4)
Timeline Data Management
- Extend
/src/stores/stateStore.ts- Timeline CRUD operations
createTimeline()deleteTimeline()updateTimeline()
- Timeline state management
addStateToTimeline()removeStateFromTimeline()reorderTimeline()
- Timeline queries
getStatesByTimeline()getTimelineStates()(ordered)
- Timeline CRUD operations
Temporal Metadata
- Create
/src/components/TemporalAnalysis/StateMetadataEditor.tsx- Temporal metadata form
- Date/time picker
- Sequence number input
- Label input
- Period range inputs
- Display format selector
- Notes/description textarea
- Tags input
- Temporal metadata form
Timeline Panel UI
-
Create
/src/components/TemporalAnalysis/TimelinePanel.tsx- Horizontal timeline visualization
- State markers on timeline
- Click to load state
- Drag to scrub timeline
- Zoom in/out on timeline
- Pan timeline horizontally
- State creation controls
- Timeline selector dropdown (multiple timelines)
-
Timeline styling
- Color-coded state markers
- Current state highlight
- Hover effects
- Responsive design
- Collapsible panel
Timeline Navigation
-
Add keyboard shortcuts
←Previous state in timeline→Next state in timelineHomeFirst stateEndLast state
-
Navigation buttons
- Previous/Next buttons
- Jump to start/end
- State counter (e.g., "3 of 12")
Integration
-
Update
/src/App.tsx- Add TimelinePanel to layout
- Handle panel visibility toggle
- Handle panel resize
-
Update
/src/components/Menu/MenuBar.tsx- Add "States" menu
- "View Timeline" action
- "Create Timeline" action
Testing
- Test timeline creation
- Test state ordering
- Test timeline navigation
- Test keyboard shortcuts
- Test with multiple timelines
- Test timeline visualization with many states (20+)
Phase 3: Comparison & Diff Analysis (Week 5-6)
Diff Calculation Engine
-
Create
/src/utils/stateDiff.tscalculateStateDiff()function- Actor comparison logic
- Detect added actors
- Detect removed actors
- Detect modified actors (label, type, position, metadata)
- Relation comparison logic
- Detect added relations
- Detect removed relations
- Detect modified relations (type, directionality, strength)
- Summary statistics calculation
- Performance optimization for large graphs
-
Create
/src/hooks/useStateDiff.tsuseComparison()hookuseDiffCalculation()hook- Memoization for expensive calculations
Visual Diff on Graph
-
Create
/src/components/Editor/DiffOverlay.tsx- Overlay mode component
- Color coding for changes
- Green for added (actors/relations)
- Red for removed (actors/relations)
- Yellow/orange for modified
- Change badges/icons on nodes
- Toggle overlay on/off
- Opacity control for overlay
-
Update
/src/components/Editor/GraphEditor.tsx- Integrate DiffOverlay
- Apply diff styling to nodes/edges
- Animated transitions for diff highlights
Comparison View UI
-
Create
/src/components/TemporalAnalysis/ComparisonView.tsx- Modal/panel for comparison
- State selectors (From/To)
- Comparison mode selector
- Side-by-side
- Overlay
- Tabbed
- Graph visualization for both states
- Synchronized panning/zooming
- Difference highlighting
- Summary statistics panel
-
Create
/src/components/TemporalAnalysis/StateDiffViewer.tsx- List of changes (actors/relations)
- Filter by change type (added/removed/modified)
- Click to highlight on graph
- Export changes as report
Change Summary
- Create
/src/components/TemporalAnalysis/ChangeSummary.tsx- Statistics dashboard
- Total actors (before/after)
- Total relations (before/after)
- Added/removed/modified counts
- Change breakdown by type
- Visual charts (pie chart, bar chart)
- Export to CSV/JSON
- Statistics dashboard
Quick Compare
-
Add to TimelinePanel
- "Compare" button on state markers
- Right-click context menu "Compare with..."
- Select two states to compare
-
Add to state selector
- Checkbox mode to select multiple states
- "Compare Selected" button
Export Comparison Report
- Report generation
- PDF export with diff summary
- JSON export of diff data
- HTML report with interactive visualization
- Include screenshots of both states
Testing
- Test diff calculation accuracy
- Test with various graph sizes
- Test comparison view UI
- Test visual diff overlay
- Test export functionality
- Performance test with large diffs
Phase 4: Scenario Branching (Week 7-8)
Scenario Data Model
- Extend
/src/stores/stateStore.ts- Scenario tree management
createScenarioBranch()addStateToScenario()deleteScenarioBranch()
- Scenario queries
getStatesByScenario()getScenarioTree()getScenarioBranches()
- Scenario tree management
Scenario Creation UI
- Create
/src/components/TemporalAnalysis/ScenarioCreator.tsx- "Branch from here" button/dialog
- Scenario metadata form
- Label input
- Description textarea
- Assumptions list input
- Probability/confidence selector
- Color picker for branch
- Parent state selection
- Create and switch to scenario
Scenario Tree Visualization
-
Extend TimelinePanel for scenarios
- Vertical branching layout
- Branch lines/connectors
- Branch labels
- Branch color coding
- Collapse/expand branches
- Scenario navigation controls
-
Alternative: Tree view component
- Hierarchical tree visualization
- Collapsible nodes
- Click to load state
- Branch context menu (edit, delete, compare)
Scenario Metadata Editor
- Update StateMetadataEditor
- Scenario-specific fields
- Assumptions editor (add/remove/edit)
- Probability slider
- Confidence level selector
- Branch color picker
Scenario Navigation
-
Scenario switcher
- Dropdown to select branch
- Filter timeline by scenario
- Visual indicator of current branch
-
Branch comparison
- "Compare branches" action
- Select multiple scenarios
- Side-by-side comparison
- Outcome analysis
Integration
-
Update menu bar
- "Create Scenario" menu item
- "Manage Scenarios" menu item
-
Update state selector
- Group states by scenario
- Scenario branch indicators
Testing
- Test scenario creation
- Test branch visualization
- Test scenario navigation
- Test with multiple branches
- Test nested scenarios (if supported)
- Test scenario deletion
Phase 5: Actor Tracking & Journeys (Week 9-10)
Journey Calculation
-
Create
/src/utils/actorJourney.tsgetActorJourney()function- Track actor across states
- Detect first/last appearance
- Calculate property changes
- Track relationship evolution
- Performance optimization
-
Create
/src/hooks/useActorJourney.tsuseActorJourney()hookuseMultiActorJourney()hook- Memoization
Journey Viewer UI
- Create
/src/components/TemporalAnalysis/ActorJourneyViewer.tsx- Actor selection interface
- Dropdown or autocomplete
- Search by label
- Select from graph click
- Timeline visualization
- Horizontal timeline
- Actor appearance markers
- Property change indicators
- Property evolution display
- Label changes
- Type changes
- Position changes
- Relationship changes display
- Relations added/removed
- Relation type changes
- Relation strength changes
- Actor selection interface
Multi-Actor Comparison
- Select multiple actors
- Overlay journeys on same timeline
- Compare property evolution
- Compare relationship dynamics
- Identify interaction points
Journey Export
- Export journey data
- CSV export
- JSON export
- PDF report with visualizations
- Include:
- Actor metadata
- State sequence
- Property changes
- Relationship changes
- Summary statistics
Integration
-
Add to right panel
- "View Journey" button on actor selection
- Quick journey view
-
Add to menu bar
- "Actor Journeys" menu item
- Keyboard shortcut (Ctrl+J)
Testing
- Test journey calculation
- Test with various actor types
- Test with actors that appear/disappear
- Test multi-actor comparison
- Test export functionality
Phase 6: Animation & Presentation (Week 11-12)
Animation Engine
-
Create
/src/utils/stateAnimation.tsinterpolateStates()function- Position interpolation
- Opacity interpolation (fade in/out)
- Size interpolation
- Color interpolation
- Easing functions (linear, ease-in-out, etc.)
-
Create
/src/hooks/useStateAnimation.tsuseAnimation()hook- Animation state management
- Frame rate control
- Performance optimization
Animation Controls
-
Create
/src/components/TemporalAnalysis/StateAnimator.tsx- Play/pause button
- Step forward/backward buttons
- Speed control slider
- Loop toggle
- Progress bar
- Frame counter
- Quality settings (performance vs. smoothness)
-
Integrate with TimelinePanel
- Animation controls bar
- Visual playhead on timeline
- Click timeline to jump to state
Animation Modes
- Sequential (state A → B → C)
- Comparison (fade between two states)
- Journey (follow actor across states)
- Custom sequence (user-selected states)
Presentation Mode
- Create
/src/components/TemporalAnalysis/PresentationMode.tsx- Full-screen mode
- Slideshow interface
- State sequence selector
- Auto-advance with timer
- Manual navigation (arrow keys)
- Annotation overlays
- Title for each state
- Notes/narration text
- Key insights callouts
- Exit presentation (Esc key)
Export Capabilities (Stretch Goal)
- Export animation
- Animated GIF export
- Video export (WebM/MP4) - may require server-side
- Frame sequence export (PNG images)
- Interactive HTML export
Integration
-
Add to menu bar
- "Animate Timeline" menu item
- "Presentation Mode" menu item
- Keyboard shortcut (Ctrl+Shift+P)
-
Add to timeline panel
- Play button
- Presentation mode button
Testing
- Test animation smoothness
- Test with various animation speeds
- Test with large state transitions
- Test presentation mode navigation
- Performance test with complex graphs
- Test on different screen sizes
Phase 7: ChromaDB Integration (Week 13-14)
ChromaDB Setup
-
Install ChromaDB dependencies
- Add to package.json
- Configure ChromaDB client
-
Create
/src/utils/chromaIntegration.ts- Initialize ChromaDB client
- Connection management
- Error handling
Collection Setup
-
Create collections
constellation_states- state metadataactor_journeys- actor trajectoriesstate_comparisons- cached comparisonsannotations- user notes and insights
-
Define schemas
- Metadata fields
- Embedding strategies
- Query filters
State Indexing
-
Create indexing functions
indexState()- index single statebatchIndexStates()- index multiple statesupdateStateIndex()- update existing indexremoveStateIndex()- remove from index
-
Generate embeddings
- Combine label, description, notes, assumptions
- Use ChromaDB's built-in embedding
- Handle long text (truncation/summarization)
Semantic Search
-
Create search functions
searchStates()- general searchfindSimilarStates()- similarity searchsearchByTags()- tag-based searchsearchByTimeRange()- temporal search
-
Create
/src/components/TemporalAnalysis/StateSearch.tsx- Search input
- Search filters (type, timeline, scenario, tags)
- Results list
- Click to load state
- Relevance scoring display
Pattern Recognition
-
Implement pattern detection
- Identify similar network structures
- Find recurring patterns
- Detect anomalies
- Trend analysis
-
Create pattern visualization
- Display pattern clusters
- Highlight similar states
- Generate insights
Annotation Storage
-
Store annotations in ChromaDB
- Link to specific states
- Link to specific changes
- Support rich text
- Support tags
-
Create annotation search
- Search within annotations
- Find states by annotation content
Caching Strategy
-
Cache diff calculations
- Store diff results in ChromaDB
- Retrieve cached diffs
- Invalidate cache on state changes
-
Cache journey calculations
- Store journey data
- Update on relevant state changes
Integration
-
Add to state store
indexStateForSearch()actionsearchStates()action
-
Add to UI
- Search box in state selector
- "Find similar" button on states
- Pattern insights panel
Testing
- Test indexing performance
- Test search accuracy
- Test similarity detection
- Test caching effectiveness
- Test with large state collections (100+ states)
Phase 8: Advanced Features (Week 15-16)
Automatic State Capture
-
Implement auto-capture
- Periodic snapshots (e.g., every 10 minutes)
- Significant change detection (threshold-based)
- User-configurable triggers
- Auto-cleanup of old snapshots
-
Settings UI
- Enable/disable auto-capture
- Configure frequency
- Configure retention policy
State Templates
-
Template creation
- Save state as template
- Template metadata (name, description, category)
- Template preview
-
Template application
- Browse template library
- Apply template to create new state
- Customize template on application
-
Template management
- Edit templates
- Delete templates
- Import/export templates
Collaborative Features (Stretch Goal)
-
Sharing
- Export shareable link to timeline
- Export shareable link to scenario
- Embed code for presentations
-
Comments
- Comment on specific states
- Reply to comments
- @mentions
- Resolve comments
-
Approvals (Stretch Goal)
- Submit state for review
- Approve/reject states
- Review workflow
Advanced Analytics
-
Network metrics over time
- Density evolution
- Centrality changes
- Clustering coefficient
- Path lengths
-
Statistical analysis
- Correlation analysis
- Regression models
- Predictive analytics
-
Export to analysis tools
- Export time-series data
- Export to CSV for Excel/R/Python
- API for external tools
Testing
- Test auto-capture functionality
- Test template system
- Test collaborative features
- Test analytics calculations
- Integration testing with all phases
Final Polish & Documentation
Performance Optimization
- Profile performance bottlenecks
- Optimize diff calculation
- Optimize rendering for many states
- Lazy loading for large timelines
- Implement virtualization where needed
Error Handling
- Graceful degradation for missing data
- User-friendly error messages
- Rollback on failed operations
- Data validation throughout
Accessibility
- Keyboard navigation for all features
- Screen reader support
- High contrast mode support
- Focus indicators
- ARIA labels
Documentation
-
User guide (see TEMPORAL_QUICK_START.md)
- Getting started tutorial
- Feature walkthroughs
- Best practices
- FAQ
-
Developer documentation
- API reference
- Type definitions
- Architecture overview
- Extension guide
-
Video tutorials
- Overview video
- Feature-specific videos
- Advanced use cases
Testing
- Unit tests for all utilities
- Integration tests for stores
- Component tests for UI
- E2E tests for workflows
- Performance benchmarks
- User acceptance testing
Release
- Version bump
- Changelog
- Migration guide for existing users
- Announcement post/blog
- Update README
Success Metrics
Track these metrics post-release:
-
Feature adoption rate
- % of users who enable states
- % of documents with states
- Average states per document
-
Usage patterns
- Temporal vs. scenario usage
- Most used features (comparison, animation, journeys)
- Average session time with states
-
Performance
- State creation time
- Diff calculation time
- Animation frame rate
- ChromaDB query latency
-
User satisfaction
- User feedback/ratings
- Support tickets related to states
- Feature requests
Notes
- Each phase builds on the previous one
- Test thoroughly before moving to next phase
- Gather user feedback early and often
- Iterate based on actual usage patterns
- Keep performance in mind throughout
- Document as you go
Current Status: Not started Next Step: Begin Phase 1 - Core State Management