This is a rewritten, modern view of your roadmap, aligned with the current server reality: /v1/analyze, /v1/jobs, /v1/plugins, /v1/stream, and a job‑centric execution model. It preserves your intent but removes /run as a first‑class concept.
- Plugin load & environment alignment
- Ensure all plugins (OCR, YOLO tracker) are installed in editable mode
- Confirm CPU/GPU environments load the same plugin paths
- Add diagnostics to print active plugin file and entrypoint resolution
- BasePlugin contract
- All plugins subclass
BasePlugin - Handlers resolve from string names to bound methods
- Contract validation passes end‑to‑end for each plugin
- All plugins subclass
- YOLO plugin wiring
- YOLO tracker loads via entrypoints without errors
- Model weights and device selection (CPU/GPU) are correctly configured
on_load()instantiates models and logs success
- Image tracking
- Reinstate player, ball, pitch detection and tracking
- Validate JSON‑serializable outputs and schemas
- Smoke test notebook
YOLO_Tracker_Smoke_Test.ipynbruns plugin on test images- Visualize detections and validate schema compliance
- Plugin discovery
- Tests for entrypoints → registry → plugin instances
- Execution paths
- Tests for valid plugin execution via the canonical API
- Error‑path tests: missing plugin, invalid args, bad input
- Registry behavior
- Ensure consistent plugin registration and reload behavior
(In the modern model, these tests should target /v1/analyze + /v1/jobs, not /run.)
- Client‑side unification
- Introduce a unified “analyze” helper (replacing
runTool) that:- calls
/v1/analyze - polls
/v1/jobs/{id} - returns a stable result object
- calls
- OCR and YOLO flows both use this unified path
- Introduce a unified “analyze” helper (replacing
- Observability
- Structured logging for each analysis invocation
- Optional retry wrappers for transient network/JSON errors
- Frame‑level metrics (duration, success, error) where applicable
- MCP surface
- Auto‑generate MCP schemas from plugin manifests
- Map MCP tool calls to
/v1/analyze+/v1/jobs
- Testing
- MCP integration tests for OCR and YOLO
- MCP error‑path tests (invalid tool, invalid args, plugin errors)
- Plugin invariants
- CI: enforce
BasePlugininheritance - CI: enforce manifest exists for every plugin
- CI: enforce at least one plugin loads successfully
- CI: enforce
- Response invariants
- CI: enforce JSON‑only responses from public endpoints
- CI: enforce job results are always JSON‑serializable
- Architecture invariants
- CI: forbid reintroduction of legacy
/runpaths - CI: forbid bypassing the job model for long‑running work
- CI: forbid reintroduction of legacy
- Server
/v1/analyzeas the single entrypoint for analysis/v1/jobs,/v1/jobs/{id}for async tracking/v1/plugins,/v1/plugins/{plugin}/manifestfor discovery
- Web‑UI
- Upload flow uses
analyzeImage+pollJob - Jobs view lists and inspects jobs
- Results panel renders job results (not tool responses)
- WebSocket streaming uses
/v1/streamfor live camera
- Upload flow uses
- Cleanup
- Remove
runPluginTool,ToolExecutionResponse, and tool‑centric execution assumptions - Keep tools only as schema/UX hints, not execution units
- Remove
- Backend
- Video ingestion, frame extraction, YOLO tracking, and aggregated job results
- Job model
- Progress, cancellation, and timeouts tuned for video workloads
- Web‑UI
- Video upload, job‑aware VideoTracker component, overlays, playback controls
- Guardrails
- Integration tests from upload → job → UI
- CI checks for YOLO tracker correctness and schema stability
-
Architecture
- Ordered pipelines of tools within a single plugin
- REST endpoint
/video/pipelinefor frame-based execution - WebSocket support for streaming pipeline execution
- Pipeline validation (plugin_id, tool existence, same-plugin constraint)
-
Backend Services
VideoPipelineServicefor ordered tool execution- Pipeline models and validation
- Pipeline logging (step index, tool name, duration)
- Update
VisionAnalysisServiceto use pipeline model
-
Web‑UI
PipelineToolSelectorcomponent for multi-select tools- WebSocket frame payload includes
plugin_id + tools[] - REST endpoint payload includes
plugin_id + tools[] - No silent fallback to default tools
-
Governance
PHASE_13_FOLDER_STRUCTURE.md(mandatory file placement)PHASE_13_PR_TEMPLATE.md(PR format and review checklist)PHASE_13_MIGRATION_CHECKLIST.md(step-by-step implementation)PHASE_13_DEV_ONBOARDING.md(developer guide)pipeline_rules.md(pipeline governance rules)
-
Testing
- REST pipeline tests
- WebSocket pipeline tests
- Pipeline validation tests
- Logging tests (step information captured)
- No cross-plugin pipelines possible
- All tests must pass in CI
-
Sign-Off
- All pipelines execute tools in order
- No silent fallbacks
- Full coverage of pipeline scenarios
- Logging shows each pipeline step
- Phase 13 locked in repo structure