Skip to content
Rymflux Documentation
Esc
navigateopen⌘Jpreview
On this page

Non-functional requirements — Rymflux v1

Vague NFRs are not NFRs. Every row has a measurable target derived from the charter constraints and platform philosophy.

Non-functional requirements — Rymflux v1

Performance

ID Requirement Target Measurement
NFR-PERF-1 Playback start latency (stream URL) ≤ 2 seconds from play command to first audio frame, p95 Engine instrumented play_calledaudio_frame_emitted
NFR-PERF-2 Playback start latency (local file) ≤ 500ms from play command to first audio frame, p95 Engine instrumented metric
NFR-PERF-3 Plugin launch time (first request cold start) ≤ 5 seconds from request to first response byte, p95 Plugin runtime request_sentfirst_byte_received
NFR-PERF-4 Search response time (all plugins, best case) ≤ 2 seconds for 3 plugins responding within timeout, p95 Search manager query_startedresults_displayed
NFR-PERF-5 Plugin idle memory ≤ 50 MB per idle plugin process OS process RSS measurement
NFR-PERF-6 Room switch latency ≤ 300ms from user action to room UI rendered, p95 Shell switch_requestedroom_activated
NFR-PERF-7 Plugin binary size ≤ 20 MB for reference local-files plugin File size on disk

Reliability & availability

ID Requirement Target Measurement
NFR-REL-1 Core platform crash-free rate 99.5%+ of sessions (measured weekly) Crash reporting telemetry
NFR-REL-2 Plugin crash recovery Plugin crash does not crash the core. Recovery (restart + retry) within 10 seconds Plugin runtime process_exitednext_request_handled
NFR-REL-3 Queue durability across restarts Queue persistence is a Should (S5) requirement deferred to v2. No measurement target applies until the feature is implemented.
NFR-REL-4 Library data integrity Library file corruption detected on load; automatic backup restored from last known-good copy Integrity check on library load (checksum)

Security & isolation

ID Requirement Target / standard Notes
NFR-SEC-1 Plugin process isolation Plugins run as separate OS processes. A plugin crash or memory error does not affect the core or other plugins. Enforced by OS process boundaries (constraint C1)
NFR-SEC-2 Plugin filesystem access Plugin can only read/write within its own config and state directories and any explicitly granted paths Plugin manifest may declare read_paths and write_paths permissions
NFR-SEC-3 No plugin code loaded into core Core process must never load, link, or exec plugin code in its own address space Validated by design review and CI artifact scan
NFR-SEC-4 Content ID collision prevention Library content IDs are UUIDs. No two content items share a UUID. UUID v4 with collision probability < 1e-18 per 1B items

Compatibility

ID Requirement Target Notes
NFR-COMPAT-1 Desktop platform support Linux (Ubuntu 22.04+, Fedora 38+), macOS (14+), Windows (10+) Constraint C5
NFR-COMPAT-2 Plugin language support Any language that can produce a standalone executable (compiled or interpreted with shebang) Protocol is JSON over IPC; no language-specific runtime required
NFR-COMPAT-3 Audio format support (reference plugin) MP3, FLAC, OGG Vorbis, WAV, AAC (M4A) Reference plugin FFmpeg-based or uses per-platform decoders

Resource usage

ID Requirement Target Notes
NFR-RESC-1 Core platform baseline memory (idle, no plugins loaded) ≤ 120 MB RSS Startup measurement
NFR-RESC-2 Core platform baseline disk usage (application only) ≤ 200 MB installed Excludes user library data
NFR-RESC-3 Plugin idle timeout Plugin terminated after 5 minutes of inactivity (configurable) Prevents resource exhaustion from many idle plugins

Maintainability

ID Requirement Target Notes
NFR-MAINT-1 Plugin API versioning Plugin manifest declares protocol version. Core rejects plugins with unsupported major version. Breaking change requires major version bump and ADR
NFR-MAINT-2 Plugin debugging Plugin stdout and stderr captured and viewable through core diagnostics Scope FR-PLUGIN debugging
NFR-MAINT-3 Startup time (cold, no plugins) ≤ 3 seconds from launch to UI ready First-time and subsequent cold start

Accessibility

ID Requirement Standard
NFR-A11Y-1 Keyboard navigation for all core UI controls All transport controls, room navigation, and search operable via keyboard alone
NFR-A11Y-2 Screen reader support for playback status Now-playing metadata, transport state (playing/paused), and queue position announced

Internationalization

ID Requirement Notes
NFR-I18N-1 UI strings externalized to resource files v1: English only. Externalization enables community translations in v2.

Was this page helpful?