@@ -470,6 +470,7 @@ func providerRecommendationUseCases() []string {
470470 "self-hosted" ,
471471 "team-cloud" ,
472472 "versioned-workspace" ,
473+ "warm-start" ,
473474 "windows" ,
474475 "worker-runtime" ,
475476 }
@@ -555,6 +556,10 @@ func normalizeProviderRecommendationUseCase(value string) (string, bool) {
555556 "forkable-workspaces" , "durable-workspace" , "stateful-workspace" ,
556557 "snapshot-fork" :
557558 return "versioned-workspace" , true
559+ case "warm-start" , "warm" , "warmup" , "warm-up" , "warm-pool" , "warm-pools" ,
560+ "prewarm" , "pre-warm" , "prewarmed" , "pre-warmed" , "low-latency-start" ,
561+ "low-latency" , "reuse-state" , "reuse-runtime" :
562+ return "warm-start" , true
558563 case "windows" , "win" :
559564 return "windows" , true
560565 case "worker" , "worker-runtime" , "module" , "module-run" :
@@ -1251,6 +1256,44 @@ func scoreProviderRecommendation(entry providerMatrixEntry, useCase string) (int
12511256 if hasFeature (FeatureCleanup ) {
12521257 add (8 , "can clean up provider-owned workspace resources" )
12531258 }
1259+ case "warm-start" :
1260+ hasWarmSignal := hasFeature (FeatureCacheVolume ) || hasFeature (FeatureRunSession ) ||
1261+ hasFeature (FeaturePauseResume ) || hasFeature (FeatureCheckpoint ) ||
1262+ hasFeature (FeatureFork ) || hasFeature (FeatureRestore ) ||
1263+ hasFeature (FeatureSnapshot ) || strings .HasPrefix (category , "local-" )
1264+ if ! hasWarmSignal {
1265+ break
1266+ }
1267+ if strings .HasPrefix (category , "local-" ) {
1268+ add (45 , "local runtime avoids cloud cold starts" )
1269+ }
1270+ if hasFeature (FeatureCacheVolume ) {
1271+ add (35 , "can reuse dependency/cache volumes" )
1272+ }
1273+ if hasFeature (FeatureRunSession ) {
1274+ add (30 , "can reuse retained run sessions" )
1275+ }
1276+ if hasFeature (FeaturePauseResume ) {
1277+ add (28 , "can pause and resume warm runtime state" )
1278+ }
1279+ if hasFeature (FeatureCheckpoint ) || hasFeature (FeatureFork ) || hasFeature (FeatureRestore ) || hasFeature (FeatureSnapshot ) {
1280+ add (25 , "can reuse prepared workspace state" )
1281+ }
1282+ if hasFeature (FeatureCrabboxSync ) || hasFeature (FeatureArchiveSync ) {
1283+ add (16 , "can seed warm state from the current checkout" )
1284+ }
1285+ if category == "ci-proof-runner" {
1286+ add (14 , "CI proof runner is optimized for repeated validation loops" )
1287+ }
1288+ if hasFeature (FeatureCleanup ) {
1289+ add (12 , "can clean up warm-start resources" )
1290+ }
1291+ if hasFeature (FeatureRunProof ) || hasFeature (FeatureRunArtifacts ) || hasFeature (FeatureRunDownloads ) {
1292+ add (8 , "can retain evidence without keeping every run hot" )
1293+ }
1294+ if hasTarget (targetLinux ) || hasTarget (targetWorkerRuntime ) {
1295+ add (6 , "supports common warm-start targets" )
1296+ }
12541297 case "windows" :
12551298 if hasTarget (targetWindows + "/" + WindowsModeNormal ) {
12561299 add (80 , "supports native Windows" )
@@ -1340,6 +1383,7 @@ func printProviderRecommendationUseCases(out io.Writer) {
13401383 fmt .Fprintln (out , " crabbox providers recommend run-session" )
13411384 fmt .Fprintln (out , " crabbox providers recommend team-cloud" )
13421385 fmt .Fprintln (out , " crabbox providers recommend versioned-workspace" )
1386+ fmt .Fprintln (out , " crabbox providers recommend warm-start" )
13431387 fmt .Fprintln (out , " crabbox providers recommend forkable-workspace --workspace fork" )
13441388}
13451389
0 commit comments