diff --git a/docs/COMPLETED.md b/docs/COMPLETED.md index 14e6574..dbbf5b9 100644 --- a/docs/COMPLETED.md +++ b/docs/COMPLETED.md @@ -974,13 +974,15 @@ reaches the destination only through a `commit()` rename — process-crash atomi not power-loss atomic, deliberately, since an `fsync` over a whole sample bank is a real stall) and the rollback journal (`package_rollback`'s `LandedFileJournal`, citing the `prune_fs.cpp` carve-out rather than restating it, disarmed only after -the caller's own write has returned success). **Deviation from spec:** the plan -called for asymmetric pickers — REAPER's `GetUserFileNameForRead` for import, Win32 -`GetSaveFileNameW`/SWELL `BrowseForSaveFile` for export, reasoning that the REAPER -API has no save picker. The landed `package_pickers` instead rides `GetUserFileName` -for both directions (mode 1 import, mode 0 export) — no platform split, since -`main.cpp` already aborts extension load if any needed API pointer fails to -resolve. Both pickers are `[verify — DAW]`, never exercised in a live REAPER +the caller's own write has returned success). `package_pickers` rides REAPER's own +`GetUserFileName` for both directions, as specified (mode 1 import, mode 0 export) +— the plan's "REAPER has no save picker" finding was a regex miss in the original +research, not a real gap, so there was no asymmetric-picker deviation to land: no +SWELL `BrowseForSaveFile`, no Win32 `GetSaveFileNameW`, no `GetUserFileNameForRead` +(the SDK header marks it superseded). REAPER owning the dialog on every platform is +why there's no platform split; that's separate from `main.cpp` already aborting +extension load if any needed API pointer fails to resolve, which is why no fallback +path is needed. Both pickers are `[verify — DAW]`, never exercised in a live REAPER session. **Ε-W1-T3 — `import-origin-kind`.** `OriginKind::PackageImport` appended to the