Two Must requirements whose user-facing mechanism does not exist. Both are currently carried as **PARTIAL** rows, which reads as verification debt; they are feature gaps.
FR-STATE-030 — save and recall a named preset
The requirement is that a user can save the current state as a named preset and recall it, interchangeably between the standalone app and the CLAP plugin.
UiIntent (crates/namir-ui/src/host.rs) has exactly seven variants — SetParam, ResetParamToDefault, LibraryQueryChanged, LoadLibraryEntry, RescanLibraryRequested, CancelScanRequested, DismissNotice. None saves or loads a preset.
AppHost::save_state / load_state exist in crates/namir-app/src/host.rs, and their own doc comment says outright that this is "not a UiIntent today". Their only caller in the tree is a test.
namir-clap has no equivalent at all.
The document format is built and tested (namir-state, docs/04-state-and-preset-format.md, xtask preset). What is missing is any way for a user to reach it. "Save my tone and get it back" is the flagship story for the U2/U3 user classes.
FR-LIB-010 — nominate one or more library directories
Library roots are hard-coded to <config_dir>/Library by namir_worker::library::LibraryService::open_at/open_default. AppSettings has no roots field, and there is no add-root or remove-root intent. A user with their NAM captures and IRs anywhere else has no way to point Namir at them short of moving their files.
Scope
Both need the same shape of work: new UiIntent variants, new UiSnapshot fields, and bridges in both product shells (namir-app/src/host.rs and namir-clap/src/ui_host.rs, which implement UiHost independently by design). FR-LIB-010 additionally needs roots persisted in settings, and a directory picker — which must respect NFR-PORT-030's "no blocking dialog on an audio-affecting path" clause.
These are two of nine unbuilt user surfaces found in a sweep of the 66 partials; see also #26 (audio-device panel). Together they are large enough to be a milestone phase rather than exit-checklist items.
Two Must requirements whose user-facing mechanism does not exist. Both are currently carried as
**PARTIAL**rows, which reads as verification debt; they are feature gaps.FR-STATE-030 — save and recall a named preset
The requirement is that a user can save the current state as a named preset and recall it, interchangeably between the standalone app and the CLAP plugin.
UiIntent(crates/namir-ui/src/host.rs) has exactly seven variants —SetParam,ResetParamToDefault,LibraryQueryChanged,LoadLibraryEntry,RescanLibraryRequested,CancelScanRequested,DismissNotice. None saves or loads a preset.AppHost::save_state/load_stateexist incrates/namir-app/src/host.rs, and their own doc comment says outright that this is "not aUiIntenttoday". Their only caller in the tree is a test.namir-claphas no equivalent at all.The document format is built and tested (
namir-state,docs/04-state-and-preset-format.md,xtask preset). What is missing is any way for a user to reach it. "Save my tone and get it back" is the flagship story for the U2/U3 user classes.FR-LIB-010 — nominate one or more library directories
Library roots are hard-coded to
<config_dir>/Librarybynamir_worker::library::LibraryService::open_at/open_default.AppSettingshas no roots field, and there is no add-root or remove-root intent. A user with their NAM captures and IRs anywhere else has no way to point Namir at them short of moving their files.Scope
Both need the same shape of work: new
UiIntentvariants, newUiSnapshotfields, and bridges in both product shells (namir-app/src/host.rsandnamir-clap/src/ui_host.rs, which implementUiHostindependently by design). FR-LIB-010 additionally needs roots persisted in settings, and a directory picker — which must respect NFR-PORT-030's "no blocking dialog on an audio-affecting path" clause.These are two of nine unbuilt user surfaces found in a sweep of the 66 partials; see also #26 (audio-device panel). Together they are large enough to be a milestone phase rather than exit-checklist items.