Slice
workspace_remove (from #410) lands with nine parameters and keeps #[allow(clippy::too_many_arguments)]. Three of them — clones, storage, cache_dir — are one thing: the opened records and where they live, which dl already bundles as Records behind its ColdPath (dl/src/session.rs:151-171).
#340 moves that bundle into core. Once it is there, collapse those three parameters onto it and drop the allow:
workspace_remove(context, refresh, records, devpod_home, workspace_id, insistence, notices) -> Result<RemoveOutcome, NotRun>
Deliberately not done in #410: inventing a second bundle in core while #340 is moving the first one is two overlapping types for one concept. #395 records that reasoning.
Also finish the transitive half of api's re-exports for this surface under whatever rule #340 settles for Launch — the payload types a consumer must name to inspect a refusal rather than merely match it (Losses, CouldNotTell, VolumeSweep, Removed, RemoveWorkspaceError, Exit, NotRun). One rule for both verbs, applied once.
Red first
The existing api-paths-only test from #410 is the harness: rewrite its call to the collapsed signature and it must still compile and still refuse. Add a case that binds and reads a refusal's payload — RemovalRefused::WouldLose { losses, .. } and reads losses — using api paths only. Red before the re-exports exist.
public-api.api.txt and public-api.rest.txt are hand-edited here too (nightly-only generator; see #410), CI authoritative.
Ordering
Blocked on #340, which relocates the bundle this depends on.
Slice
workspace_remove(from #410) lands with nine parameters and keeps#[allow(clippy::too_many_arguments)]. Three of them —clones,storage,cache_dir— are one thing: the opened records and where they live, which dl already bundles asRecordsbehind itsColdPath(dl/src/session.rs:151-171).#340 moves that bundle into core. Once it is there, collapse those three parameters onto it and drop the allow:
workspace_remove(context, refresh, records, devpod_home, workspace_id, insistence, notices) -> Result<RemoveOutcome, NotRun>Deliberately not done in #410: inventing a second bundle in core while #340 is moving the first one is two overlapping types for one concept. #395 records that reasoning.
Also finish the transitive half of
api's re-exports for this surface under whatever rule #340 settles forLaunch— the payload types a consumer must name to inspect a refusal rather than merely match it (Losses,CouldNotTell,VolumeSweep,Removed,RemoveWorkspaceError,Exit,NotRun). One rule for both verbs, applied once.Red first
The existing api-paths-only test from #410 is the harness: rewrite its call to the collapsed signature and it must still compile and still refuse. Add a case that binds and reads a refusal's payload —
RemovalRefused::WouldLose { losses, .. }and readslosses— usingapipaths only. Red before the re-exports exist.public-api.api.txtandpublic-api.rest.txtare hand-edited here too (nightly-only generator; see #410), CI authoritative.Ordering
Blocked on #340, which relocates the bundle this depends on.