Implementation Roadmap
This document outlines the phased implementation plan for FUSION GUI.
Milestone Overview
Milestone |
Focus |
Target |
|---|---|---|
M1 |
Core: Runs + Logs + Artifacts |
Foundation |
M2 |
Progress + Config Editor |
Usability |
M3 |
Network Viewer |
Visualization |
M4 |
Polish + OSS Maturity |
Production |
Milestone 1: Core Infrastructure
Goal: Users can create runs, view logs, and download artifacts.
Backend Tasks
Task |
Files |
Description |
|---|---|---|
Project structure |
|
FastAPI app setup, configuration |
Database setup |
|
SQLite + SQLAlchemy models |
Run CRUD |
|
Create, list, get, delete runs |
Run manager service |
|
Subprocess management, process groups |
Log streaming |
|
Tail sim.log via SSE |
Artifact listing |
|
List files in run directory |
Artifact download |
|
Secure file download |
Config templates |
|
List and get templates |
Health endpoint |
|
Basic health check |
CLI entry point |
|
Launch uvicorn server |
Endpoints (M1):
POST /api/runs Create run
GET /api/runs List runs
GET /api/runs/{id} Get run
DELETE /api/runs/{id} Cancel/delete run
GET /api/runs/{id}/logs SSE log stream
GET /api/runs/{id}/artifacts List artifacts
GET /api/runs/{id}/artifacts/{p} Download artifact
GET /api/configs/templates List templates
GET /api/configs/templates/{name} Get template
GET /api/health Health check
Frontend Tasks
Task |
Files |
Description |
|---|---|---|
Project setup |
|
Vite + React + TypeScript + Tailwind |
API client |
|
Axios wrapper, type-safe API calls |
Layout |
|
Sidebar, header, main layout |
UI primitives |
|
Button, Card, Badge (shadcn/ui) |
Run list page |
|
Display all runs with status |
Run card |
|
Run summary card |
Status badge |
|
RUNNING, COMPLETED, etc. |
New run page |
|
Template selection, basic config |
Run detail page |
|
Run info + logs + artifacts |
Log viewer |
|
SSE-connected terminal-style viewer |
File browser |
|
Directory tree navigation |
SSE hook |
|
Generic SSE subscription |
Run queries |
|
TanStack Query hooks |
UI Screens (M1):
Run List: Grid/list of runs with status, actions
New Run: Template dropdown, name input, start button
Run Detail: Tabs for logs/artifacts, status header, cancel button
Tests (M1)
Backend:
test_runs.py: CRUD operations, status transitionstest_artifacts.py: Path traversal preventiontest_health.py: Health endpoint
Frontend:
RunCard.test.tsx: Rendering, click handlersLogViewer.test.tsx: SSE connection, scroll behavior
Docs Updates (M1)
Complete
04-api.mdwith M1 endpointsAdd M1 setup instructions to
07-contributing.md
CI Gates (M1)
All backend tests pass
All frontend tests pass
Lint checks pass
Build succeeds
Definition of Done (M1)
User can run
fusion guiand see the UIUser can create a run from a template
User can see real-time logs
User can browse and download artifacts
User can cancel a running simulation
Completed runs survive server restart
Milestone 2: Progress + Config Editor
Goal: Rich progress visualization and in-browser config editing.
Backend Tasks
Task |
Files |
Description |
|---|---|---|
Progress file support |
CLI modification |
Add |
Progress watcher |
|
Watch progress.jsonl, update DB |
Progress SSE |
|
Stream progress events |
Config validation |
|
Validate config without running |
Config schema |
|
Return JSON Schema for form generation |
New Endpoints (M2):
GET /api/runs/{id}/progress SSE progress stream
POST /api/configs/validate Validate config
GET /api/configs/schema Get JSON Schema
Frontend Tasks
Task |
Files |
Description |
|---|---|---|
Progress bar |
|
Determinate progress indicator |
Progress chart |
|
Real-time blocking prob chart |
Progress hook |
|
SSE progress subscription |
Config editor page |
|
Full config editing |
Config text editor |
|
INI syntax highlighting |
Config validation |
|
Show validation errors |
Log search |
|
Search/filter in logs |
Log follow toggle |
|
Auto-scroll toggle |
Dark mode |
|
Theme switching |
UI Screens (M2):
Run Detail (enhanced): Progress bar, metrics chart, ETA
Config Editor: Text editor with validation, save as template
Settings: Theme toggle
Tests (M2)
Backend:
test_progress.py: Progress parsing, SSE eventstest_config_validation.py: Various invalid configs
Frontend:
ProgressBar.test.tsx: Value updatesConfigTextEditor.test.tsx: Syntax errors
E2E (Playwright) - Required for M2:
e2e/create-run.spec.ts: Create run -> observe logs -> cancele2e/view-artifacts.spec.ts: Create run -> view artifacts -> download
See 10-testing.md for details on fake simulator mode for fast E2E.
Docs Updates (M2)
Update
03-run-directory-contract.mdwith progress.jsonl schemaDocument config validation in
04-api.md
CI Gates (M2)
Progress integration test (run simulation, verify progress events)
Config validation tests
E2E tests passing (Playwright)
Definition of Done (M2)
Progress bar shows during simulation
Real-time chart shows blocking probability
User can edit config in browser
Validation errors shown inline
Dark mode works
Log viewer has search and follow toggle
2 E2E tests passing (create/cancel run, view/download artifacts)
Milestone 3: Network Viewer
Goal: Visualize network topology with utilization data.
Backend Tasks
Task |
Files |
Description |
|---|---|---|
Topology listing |
|
List available topologies |
Topology data |
|
Get nodes/links with coordinates |
Run topology state |
|
Topology with utilization from run |
New Endpoints (M3):
GET /api/topology List topologies
GET /api/topology/{name} Get topology data
GET /api/runs/{id}/topology Get topology with run utilization
Frontend Tasks
Task |
Files |
Description |
|---|---|---|
Topology page |
|
Standalone topology viewer |
Network graph |
|
D3/React Flow visualization |
Node component |
|
Node rendering |
Link component |
|
Link with utilization color |
Node tooltip |
|
Hover details |
Path highlight |
|
Highlight selected path |
Utilization legend |
|
Color scale legend |
Run topology tab |
|
Add topology tab to run detail |
UI Screens (M3):
Topology Page: Select topology, view graph
Run Detail Topology Tab: Graph with real-time utilization
Tests (M3)
Backend:
test_topology.py: Topology data format
Frontend:
NetworkGraph.test.tsx: Renders with mock dataVisual regression tests (optional)
Docs Updates (M3)
Add topology endpoints to
04-api.mdDocument visualization features
Definition of Done (M3)
User can view any topology as a graph
Nodes and links are labeled
Utilization shown as link color
Can view topology during/after run
Pan and zoom work
Milestone 4: Polish + OSS Maturity
Goal: Production quality, excellent DX, ready for public use.
Backend Tasks
Task |
Files |
Description |
|---|---|---|
Rate limiting |
|
Optional rate limiting |
Request logging |
|
Structured request logs |
Error handling |
|
Consistent error responses |
OpenAPI improvements |
|
Better descriptions, examples |
Concurrent runs |
|
Configurable concurrency |
Frontend Tasks
Task |
Files |
Description |
|---|---|---|
Error boundaries |
|
Graceful error handling |
Loading skeletons |
|
Better loading states |
Keyboard shortcuts |
Global |
Common actions (Ctrl+N, etc.) |
Responsive design |
Various |
Mobile/tablet support |
Onboarding |
|
First-use guidance |
Run comparison |
|
Compare multiple runs |
Export results |
|
Export to CSV/JSON |
Documentation Tasks
Task |
Files |
Description |
|---|---|---|
User guide |
|
End-user documentation |
API examples |
|
cURL examples for all endpoints |
Troubleshooting |
|
Common issues and solutions |
Issue templates |
|
Bug report, feature request |
PR template |
|
PR checklist |
Tests (M4)
Additional E2E Tests:
e2e/config-editor.spec.ts: Edit config, validate, savee2e/topology-viewer.spec.ts: View topology, check utilizatione2e/run-comparison.spec.ts: Compare two runs side by side
Non-functional Tests:
Performance: API response time < 100ms (p95)
Accessibility: axe-core audit
Definition of Done (M4)
No known bugs
User guide complete
Issue templates in place
All E2E tests passing (5+ total)
Performance acceptable (< 100ms API responses)
Accessibility audit passed
Cross-browser tested (Chrome, Firefox, Safari)
Future Milestones (Post-MVP)
M5: HPC Integration
Remote job submission (SSH + SLURM)
Queue status monitoring
Remote artifact fetching
Cluster configuration UI
M6: Advanced Analytics
Run comparison dashboard
Batch job management
Custom plot generation
Report export (PDF)
M7: Collaboration (if needed)
User accounts
Shared runs
Comments/annotations
Team workspaces
Branch Strategy by Milestone
main ─────────────────────────────────────────────────────►
│ │ │
v6.1.0 v6.2.0 v6.3.0
│ │ │
develop ─┬───────────┴──────────────┴─────────────┴───────►
│ │ │
feature/gui-m1 feature/gui-m2 feature/gui-m3
Each milestone:
Branch
feature/gui-mNfromdevelopComplete all tasks in milestone
PR to
developAfter stabilization, merge
developtomainTag release
Simulator Modifications Required
The following changes to the core simulator are needed:
M1 (Required)
None - use existing CLI as-is.
M2 (Required)
Add --progress-file CLI argument:
# fusion/cli/run_sim.py
parser.add_argument(
"--progress-file",
type=str,
help="Path to write progress events (JSONL format)"
)
Modify SimulationEngine to write progress events:
# fusion/core/simulation.py
def end_iter(self, iteration: int, ...):
# Existing code...
# Write progress event
if self.progress_file:
event = {
"type": "iteration",
"ts": datetime.utcnow().isoformat(),
"erlang": self.engine_props["erlang"],
"iteration": iteration,
"total_iterations": self.engine_props["max_iters"],
"metrics": {
"blocking_prob": blocking_mean,
}
}
with open(self.progress_file, "a") as f:
f.write(json.dumps(event) + "\n")
M3 (Required)
Add topology coordinate data or use algorithmic layout:
# fusion/api/routes/topology.py
# Either:
# 1. Store coordinates in topology JSON files
# 2. Use force-directed layout algorithm
# 3. Use geographic coordinates if available