Summary
Workspace::migrate_unsigned_sidecars (S-D24, PR #455) is the core verb that admits a pre-signed-path library's unsigned sidecars as signed assets. It has no CLI driver yet: its only call sites are its tests. A user with such a library currently sees Workspace::open warn about unmigrated sidecars and has no command to run.
Deliverable
capsule library migrate [--passphrase-stdin] [--retain-days N] (default retention 30, the value capsule-cli/src/demo.rs uses) that opens the workspace, resolves the default album at open exactly as the other verbs do (capsule-cli/src/lib.rs ensure_album at open), calls Workspace::migrate_unsigned_sidecars(&UnsignedMigrationOptions { fallback_album, trash_retain_days }), and prints the UnsignedMigrationReport (migrated / trashed / stacks / skipped with each MigrationSkip reason), with help text in locales/ per the i18n rule.
capsule library open/status (or the existing verb that reports library state) surfaces Workspace::unmigrated_sidecars() so the count is visible before the user runs the migration.
- A CLI-surface artifact update (
mise run cli-surface).
Why not in PR #455
PR #450 (S-B17) owns capsule-cli/src/{lib.rs, cli/commands.rs, cli/help.rs} in the same run and moves help text into catalogs; a Migrate arm there would have conflicted on all three files. Recorded as decision 11 in PR #455.
Refs #412, #455.
Summary
Workspace::migrate_unsigned_sidecars(S-D24, PR #455) is the core verb that admits a pre-signed-path library's unsigned sidecars as signed assets. It has no CLI driver yet: its only call sites are its tests. A user with such a library currently seesWorkspace::openwarn about unmigrated sidecars and has no command to run.Deliverable
capsule library migrate [--passphrase-stdin] [--retain-days N](default retention 30, the valuecapsule-cli/src/demo.rsuses) that opens the workspace, resolves the default album at open exactly as the other verbs do (capsule-cli/src/lib.rsensure_albumat open), callsWorkspace::migrate_unsigned_sidecars(&UnsignedMigrationOptions { fallback_album, trash_retain_days }), and prints theUnsignedMigrationReport(migrated / trashed / stacks / skipped with eachMigrationSkipreason), with help text inlocales/per the i18n rule.capsule library open/status(or the existing verb that reports library state) surfacesWorkspace::unmigrated_sidecars()so the count is visible before the user runs the migration.mise run cli-surface).Why not in PR #455
PR #450 (S-B17) owns
capsule-cli/src/{lib.rs, cli/commands.rs, cli/help.rs}in the same run and moves help text into catalogs; aMigratearm there would have conflicted on all three files. Recorded as decision 11 in PR #455.Refs #412, #455.