v1 backlog — MoSCoW prioritization
Prioritized requirements for the Rymflux v1 release. Must = MVP. Won't = explicitly excluded from v1. Status column is the canonical snapshot, updated at each phase gate.
v1 backlog — MoSCoW prioritization
Must (MVP)
| # | Item | Rationale | FR / NFR | Status |
|---|---|---|---|---|
| M1 | Plugin manifest parsing and validation | Without manifests, plugins cannot declare their identity or capabilities | FR-PLUGIN-2 | Not started |
| M2 | Plugin filesystem discovery | Without discovery, no plugin can be installed | FR-PLUGIN-1 | Not started |
| M3 | Plugin process lifecycle (launch, request, timeout, crash recovery) | Without lifecycle, plugins cannot be used | FR-PLUGIN-3 | Not started |
| M4 | Plugin search capability (request/response protocol) | Core value: finding content across sources | FR-PLUGIN-4 | Not started |
| M5 | Plugin stream capability (URL mode) | Core value: playing audio from plugins | FR-PLUGIN-5 | Not started |
| M6 | Plugin metadata capability (get_track, get_album, get_artist) | Required for browsing and displaying content | FR-PLUGIN-6 | Not started |
| M7 | Standardized data models (Track, Album, Artist, SearchResult, StreamInfo) | Without standard models, results from different plugins are incomparable | FR-PLUGIN-4, FR-PLUGIN-5, FR-PLUGIN-6 | Not started |
| M8 | Source-agnostic playback engine (URL and file path) | Cannot play audio without it | FR-CORE-1 | Not started |
| M9 | Queue management (add, remove, reorder, persistent across rooms) | Core user expectation | FR-CORE-2 | Not started |
| M10 | Unified library with source-independent content IDs | Core platform philosophy | FR-CORE-3, FR-ID-1 | Not started |
| M11 | Parallel search manager with per-plugin timeout | Core value: cross-source search | FR-CORE-4 | Not started |
| M12 | Music Room — browse, search, player expansion | The only room in v1; the entire user-facing experience | FR-MUSIC-1, FR-MUSIC-2 | Not started |
| M13 | Home (Lobby) — continue listening, recently played, pinned rooms | Landing page and navigation hub | FR-HOME-1 | Not started |
| M14 | Room framework — registration and lifecycle | Required for any room to exist | FR-ROOM-1 | Not started |
| M15 | Reference local-files plugin | Without it, the platform has no content at launch | FR-REF-1 | Not started |
| M16 | Plugin debugging (stdout/stderr capture, plugin health) | Required for plugin developers to diagnose issues | Scope §1 | Not started |
| M17 | Plugin protocol specification (written) | Required for anyone to write a plugin | Scope §6 | Not started |
Should
| # | Item | Rationale | FR / NFR | Status |
|---|---|---|---|---|
| S1 | Room search integration (room-provided filters) | Improves search relevance per room but not required for v1 Music Room | FR-ROOM-2 | Not started |
| S2 | Room player expansion customization | Music Room can ship with a hardcoded expansion; framework API can follow | FR-ROOM-3 | Not started |
| S4 | Cross-platform support (macOS, Windows) | Linux-first v1 is viable; additional platforms increase test surface | NFR-COMPAT-1 | Not started |
| S5 | Queue durability across restarts | Important but v1 can start with in-memory queue and add persistence later | NFR-REL-3 | Not started |
| S6 | Library data integrity checks | Important but not required for initial functional release | NFR-REL-4 | Not started |
| S7 | Plugin idle timeout and resource limits | Important for long-running sessions but not required for MVP | NFR-RESC-3 | Not started |
| S8 | Keyboard navigation for core controls | Important for accessibility but can be added post-MVP | NFR-A11Y-1 | Not started |
Could
| # | Item | Rationale | Status |
|---|---|---|---|
| C1 | Plugin lyrics capability (v2) | Deferred. Protocol method, data model, and Tauri command cut from v1 scope. Revisit when a concrete plugin requests the capability. FR-MUSIC-2 lyrics scenario removed. | Not started |
| C2 | Plugin health dashboard — platform UI showing plugin logs, resource usage, and status | CLI-based debugging suffices for v1; a GUI dashboard is polish | Not started |
| C3 | Content deduplication in search results | Important for UX but complex; v1 can show duplicates and refine later | Not started |
| C4 | Screen reader support | Important but v1 is a desktop app with limited a11y resources | Not started |
| C5 | Externalized UI strings for i18n | v1 is English-only; externalization enables community translations | Not started |
| C6 | Conformance validator tool for plugin authors | Important for developer experience but not required for first plugin | Not started |
| C7 | Versioning and changelog for plugin API | Required before public API release but not for first internal plugin | Not started |
Won’t (v1)
| # | Item | Rationale | Revisit | Status |
|---|---|---|---|---|
| W1 | Additional rooms (Podcast, Audiobook, Radio, Meditation, Educational) | Room framework must be stable first | v2 | Deferred |
| W2 | Plugin hot-reload (detect new plugins without restart) | Startup scan is sufficient for v1 | v2 | Deferred |
| W3 | Plugin permissions system beyond capability declarations | Trust model (user-installed) is acceptable for v1 | v2 | Deferred |
| W4 | Official plugin SDKs (Go, Python, etc.) | Protocol spec is sufficient; SDKs reduce friction but are not required | v2 | Deferred |
| W5 | Event bus / event system | Direct calls between core components are acceptable for v1 | v2 | Deferred |
| W6 | User accounts, cloud sync, authentication | v1 is local-first and single-user | v2+ | Deferred |
| W7 | Mobile or web UIs | v1 is desktop only | v2+ | Deferred |
| W8 | Advanced playback (gapless, crossfade, audio normalization) | Standard playback is sufficient | v2+ | Deferred |
| W9 | Core-managed offline downloads | Plugins may handle their own caching | v2+ | Deferred |
| W10 | Plugin registry / app store | Manual install via directory copy is v1 | v2+ | Deferred |
| W11 | Extension points beyond plugins (search ranking plugins, recommendation plugins, widget plugins) | Plugin system must be proven first | v2+ | Deferred |
| W12 | Plugin streaming mode — pipe (raw bytes over IPC) | Binary framing on stdin/stdout is risky for v1. ADR-006 demotes this; revisit when a concrete plugin author requests it. | v2+ | Deferred |
Status
| Value | Meaning |
|---|---|
| Not started | Backlog item is not being worked |
| In progress | Actively being worked; owner set in the planning layer |
| Done | Acceptance criteria met and verified |
| Blocked | Work stopped pending an external dependency or decision |
| Deferred | Excluded from the current v1 phase path (default for Won’t) |
This table is the canonical status snapshot, updated at each phase gate. Live operational status (status, owner, sprint) is tracked in the Fibery planning layer and reconciled into this table at phase gates — see the sync policy.
Revisit cadence
- Must and Won’t are re-evaluated at each phase gate.
- Should and Could are reordered at each sprint planning.
- Items can move between buckets only with Tech Lead + Product Owner agreement (see R6 in risk register).
Related
- Functional requirements — detailed Gherkin acceptance criteria
- Non-functional requirements — measurable NFR targets
- Roadmap — themes and phases for v1
- Charter scope — scope boundaries