resolveRecommended function

Blueprint resolveRecommended({
  1. required String projectName,
  2. required String description,
  3. required String organization,
  4. required String destination,
  5. required Set<String> targetPlatforms,
  6. required bool gitPreference,
  7. required ValidationProfile validationProfile,
  8. required RecipeLock lock,
  9. SetupMode setupMode = SetupMode.recommended,
})

Resolves the Recommended preset to a schema_version: 3 Blueprint.

The v1-shaped fields (Blueprint.recipeId/Blueprint.recipeVersion/ Blueprint.engineVersion) are populated from lock as a bridge to the still-fixed-stack staging pipeline (Stager().stage) — composable, selection-driven resolution lands in T068. They never appear in the v2 wire contract (Blueprint.toJson omits them for schema 2); they exist only so the existing 0.1 compatibility/staging machinery, which is reused unchanged per plan.md, keeps working during this preset's plan review.

Implementation

Blueprint resolveRecommended({
  required String projectName,
  required String description,
  required String organization,
  required String destination,
  required Set<String> targetPlatforms,
  required bool gitPreference,
  required ValidationProfile validationProfile,
  required RecipeLock lock,
  // Overridable so a caller seeding from the Recommended selections for a
  // different provenance (e.g. Customize's Phase-3 bridge, before T029/T030
  // land) records the mode the developer actually chose (data-model.md §3:
  // setupMode is provenance, not the selections themselves).
  SetupMode setupMode = SetupMode.recommended,
}) => Blueprint(
  schemaVersion: 3,
  projectName: projectName,
  description: description,
  organization: organization,
  destination: destination,
  flutterSdkRequirement: lock.flutterRange,
  targetPlatforms: targetPlatforms,
  recipeId: lock.recipeId,
  recipeVersion: lock.recipeVersion,
  engineVersion: lock.engineVersion,
  validationProfile: validationProfile,
  gitPreference: gitPreference,
  setupMode: setupMode,
  singleSelections: recommendedSingleSelections,
  multiSelections: recommendedMultiSelections,
);