| R1 |
Plugin adoption is too low. No one writes plugins, and the platform has no content. |
Medium |
Critical |
Ship with a reference plugin (local files). Publish plugin dev guide on day one. Provide SDK snippets in 2-3 languages. Target a concrete community (e.g., music hobbyists, self-hosted media enthusiasts). |
Core team |
| R2 |
Room framework is too rigid or too vague. Room authors either fight the API or get no guidance from it. |
Medium |
High |
Start with one reference room implementation (Music). Iterate on the room API based on actual experience building it. Avoid over-generalizing before the second room exists. |
Tech lead |
| R3 |
Plugin protocol specification has ambiguities that cause incompatible implementations. |
Medium |
High |
Write a spec-first protocol. Provide a validation tool that plugin authors can run against their implementation. Write a reference plugin in a second language to validate the spec before publishing. |
Tech lead |
| R4 |
Content ID collisions across plugins. Two plugins independently produce the same content with different IDs (or different content with the same ID). |
Medium |
Medium |
Library content IDs are opaque UUIDs, not plugin-scoped identifiers (see constraint C4). The separate plugin→content resolution table uses (plugin_id, foreign_id). The deduplication layer operates on this resolution table and is advisory — it can be improved without affecting the core library schema. |
Core team |
| R5 |
Performance: plugins slow down search. A single slow plugin blocks the entire search experience. |
Medium |
Medium |
Parallel search with a configurable timeout per plugin. Results arrive incrementally. A slow plugin does not block other results from being displayed. |
Core team |
| R6 |
Platform scope creeps beyond v1. Rooms, event systems, sync, and mobile are added before the core is stable. |
High |
High |
Clear scope document (see scope.md). ADR requirement for any scope addition. Tech lead sign-off on every feature that exceeds the v1 boundary. |
Product owner, Tech lead |
| R7 |
Desktop platform fragmentation. Linux audio (PulseAudio/PipeWire), macOS CoreAudio, and Windows WASAPI diverge in capability or behavior. |
Medium |
Medium |
Abstract audio backend. Start with one platform (Linux) and verify portability before expanding. Use a cross-platform audio library. |
Core team |
| R8 |
Plugin crashes take down the core. A plugin segfaults and the core crashes or becomes unstable. |
Medium |
Critical |
Plugins are separate processes, not loaded libraries. The core must handle plugin process exit (expected or unexpected) gracefully. Timeout and restart logic in the plugin runtime. |
Core team |
| R9 |
Room framework couples rooms to a specific UI toolkit, limiting future platform portability. |
Low |
Medium |
Define the room API in terms of data and behavior, not UI primitives. Room authors return data structures; the shell renders them. The rendering layer can be replaced without changing rooms. |
Tech lead |
| R10 |
Insufficient documentation discourages plugin and room authors. |
Medium |
High |
Documentation is a v1 deliverable (see scope.md). Treat docs with the same quality bar as code. Include worked examples. |
Platform operator |