diff --git a/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/clarify/clarify-ai-only.md b/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/clarify/clarify-ai-only.md index 681cceb5..955dcc18 100644 --- a/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/clarify/clarify-ai-only.md +++ b/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/clarify/clarify-ai-only.md @@ -2,7 +2,7 @@ **Standalone flow** — Used when ONLY `ai-workload-profile.json` exists (no infrastructure or billing artifacts). Infrastructure stays on GCP; only AI/LLM calls move to AWS Bedrock. -Produces the same `preferences.json` output but with `design_constraints` limited to region and `ai_constraints` fully populated. Questions are presented in **two progressive batches** with an intermediate save — partial answers persist across sessions. +Produces the same `preferences.json` output but with `design_constraints` limited to region and compliance, `startup_constraints` populated, and `ai_constraints` fully populated. Questions are presented in **two progressive batches** with an intermediate save — partial answers persist across sessions. --- @@ -51,9 +51,9 @@ Check `$MIGRATION_DIR/` for existing state: If `migration-preview.json` exists and `ai_complexity_signal == "likely_simple"` (single model, non-agentic, no multi-provider, no multi-model routing): -> "Your AI migration looks straightforward — one model swapping to Bedrock. I only need 3 quick answers to complete your migration plan." +> "Your AI migration looks straightforward — one model swapping to Bedrock. I only need 5 quick answers to complete your migration plan." -Present **only Q2, Q3, Q4** (Q1 framework is extracted; Q5 model is extracted; Q6 capabilities are extracted; Q7–Q10 use defaults). After answering, skip directly to Step 3. +Present **only Q1.5, Q2, Q3, Q4, Q11** (Q1 framework is extracted; Q5 model is extracted; Q6 capabilities are extracted; Q7–Q10 use defaults). **Q1.5 (compliance) and Q11 (Activate status) are never dropped from the fast path** — "never dropped" means always PRESENTED: the fast-path question set must include them; they are never silently omitted or auto-answered. An explicit user "use defaults for the rest" still applies their documented defaults (compliance → `["unknown"]` + report caveat — never a silent "none", matching full-flow Q2 semantics; Activate → `unknown` + neutral copy) — that is the sanctioned default path, same as full-flow Q27. After answering, skip directly to Step 3. If `ai_complexity_signal` is `"standard"` or `"complex"`, or `migration-preview.json` is absent, continue to Step 1.75 (mini assumption sheet), then Step 2. @@ -88,11 +88,11 @@ Questions resolved on this sheet are **not** re-asked in the batches below; reco --- -## Step 2: Ask Questions in Progressive Batches (Q1–Q10) +## Step 2: Ask Questions in Progressive Batches (Q1–Q11, incl. Q1.5) Questions are presented in two batches with a save after the first. The user can skip individual questions (defaults applied), say **"use defaults for the rest"** to apply defaults for all remaining questions and proceed immediately, or answer normally. -### Batch 1 — AI Strategy & Setup (Q1–Q5) +### Batch 1 — AI Strategy & Setup (Q1–Q5 + Q1.5) Present with this intro: @@ -112,12 +112,34 @@ Same decision logic, auto-detect signals, and interpretation as Q14 in `clarify- Auto-detect: No framework → A, LiteLLM/OpenRouter/Kong/Apigee → B, LangChain/LangGraph → C, CrewAI/AutoGen → D, OpenAI Agents SDK → E, MCP/A2A → F, Vapi/Bland.ai/Retell → G. -_Skip when:_ `integration.gateway_type` AND `integration.frameworks` are both populated in `ai-workload-profile.json` — use extracted values with `chosen_by: "extracted"` and do not present this question. +_Skip when:_ `integration.pattern`, `integration.gateway_type`, and `integration.frameworks` together give a definitive answer — including a definitive no-framework signal (`pattern: "direct_api"` with empty `frameworks` and null `gateway_type` → A). Use extracted values with `chosen_by: "extracted"` and do not present this question. Ask only when the signals are missing or contradict each other. > A) No framework — direct API calls | B) LLM router/gateway | C) LangChain / LangGraph | D) Multi-agent framework | E) OpenAI Agents SDK | F) MCP/A2A | G) Voice platform Interpret → `ai_framework` array. Default: auto-detect, fallback `["direct"]`. +## Q1.5 — Do you have any compliance or regulatory requirements? (select all that apply) + +Compliance gates Bedrock regions, models, and logging **even though your infrastructure stays on GCP** — customer data flows to AWS the moment model calls do. Same answer options and decision logic as Q2 in `clarify-global.md`; the impacts below are the Bedrock-specific subset that applies on this path. + +> Even with infrastructure staying on GCP, your prompts and completions will be processed on AWS. Compliance requirements determine which Bedrock regions, models, and configurations are available. +> +> A) None | B) SOC 2 / ISO 27001 | C) PCI DSS | D) HIPAA | E) FedRAMP / Government | F) GDPR / Data residency | G) CCPA / CPRA | H) I don't know +> +> _(Multiple selections allowed)_ + +| Answer | Bedrock Impact | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| None | Full model catalog, any Bedrock region; `global.` inference profiles allowed | +| SOC 2 / ISO 27001 | CloudTrail on Bedrock API calls; encryption at rest for Knowledge Bases and logs | +| PCI DSS | No cardholder data in prompts without tokenization; CloudTrail + scoped IAM; dedicated logging config | +| HIPAA | BAA required before PHI in prompts; BAA-eligible Bedrock models only; **Guardrails PII masking does NOT apply to CloudWatch logs — original content is logged; encrypt with KMS + restrict IAM**; us-east-1/us-west-2 preferred | +| FedRAMP | GovCloud Bedrock only (us-gov-east-1/us-gov-west-1) — materially smaller model catalog; verify target model availability before committing the migration | +| GDPR | EU Bedrock regions (eu-west-1, eu-central-1); **geographic (`eu.`) inference profiles only — `global.` profiles route outside the EU boundary**; document cross-border transfer from GCP EU | +| CCPA / CPRA | Prompt/completion retention policy; deletion workflow for logged content; CloudTrail audit logging | + +Interpret → `design_constraints.compliance` array (same format as the full flow). An explicit user answer of A records `["none"]` with `chosen_by: "user"`. **Skip/default records `["unknown"]`** (never a silent "none" — full-flow Q2 semantics: behaves like "none" for service selection) with `chosen_by: "default"`, `source: "default:Q1.5"` — and append the caveat "Compliance requirements were not confirmed by the user" to `metadata.report_caveats[]` (create the array if absent) so downstream reports surface it. Cross-check with Q4: a GDPR answer constrains the target region jointly with cross-cloud latency. + ## Q2 — What matters most for your AI application? > A) Best quality/reasoning | B) Fastest speed | C) Lowest cost | D) Specialized capability (→ Q10) | E) Balanced | F) I don't know @@ -157,7 +179,7 @@ Interpret → `cross_cloud`. Default: B → `"latency-acceptable"`. Establishes baseline Bedrock recommendation. Override hierarchy: Q10 special features > Q2 priority > Q7/Q8 volume/latency > Q5 baseline. -_Skip when:_ `models[].model_id` is populated in `ai-workload-profile.json` — auto-detect from detected model IDs with `chosen_by: "extracted"` and do not present this question. The detected models are already shown in the Step 1 summary. +_Skip when:_ `models[].model_id` is populated in `ai-workload-profile.json` **with confidence ≥ 0.8** (the same threshold as full-flow Q19) — auto-detect with `chosen_by: "extracted"` and do not present this question. The detected models are already shown in the Step 1 summary. Below 0.8, present the question with the detected model(s) offered as the suggested answer. With 2+ detected models, record `ai_model_baseline` as an array (one entry per model). > A) Gemini Flash | B) Gemini Pro | C) GPT-3.5 Turbo | D) GPT-4/4 Turbo | E) GPT-4o | F) GPT-5.4/Mini/Nano | G) GPT-5/5.x (older) | H) GPT-5.5/Pro | I) o-series | J) Claude (Anthropic SDK) | K) Other/Multiple | L) Don't know @@ -210,15 +232,15 @@ After the user responds to Batch 1: ``` Got it — your AI strategy preferences are saved. -Last section — 5 questions about your technical requirements, then we're ready to design. +Last section — 6 questions about your technical requirements, then we're ready to design. You can answer each, skip individual ones, or say "use defaults for the rest." --- Technical Requirements --- ``` -**"Use defaults for the rest" handling:** If the user says this during Batch 1, apply defaults for all unanswered Batch 1 questions and all Batch 2 questions, then skip directly to Step 3. +**"Use defaults for the rest" handling:** If the user says this during Batch 1, apply defaults for all unanswered Batch 1 questions and all Batch 2 questions, then skip directly to Step 3. **Skip the Batch 1 draft save on this path** — assembly happens in the same turn, so a draft would serve no crash-recovery purpose. -### Batch 2 — Technical Requirements (Q6–Q10) +### Batch 2 — Technical Requirements (Q6–Q11) ## Q6 — What input types must the model accept: text only, images (vision), or audio/video? @@ -283,6 +305,30 @@ Same decision logic as Q17 in `clarify-ai.md`. Interpret → `ai_critical_feature`. Default: J → no override. +## Q11 — Have you applied for AWS Activate credits? + +> **Numbering note:** AI-only Q11 ≡ full-flow **Q27** (startup programs). It is unrelated to the full flow's Q11 (Cloud Run spend) or Q11b (Graviton) — the two flows number independently. + +Same rationale, eligibility rules, and answer semantics as Q27 in `clarify-ai.md`. AI-only migrations are exactly the workloads Activate credits offset — Bedrock usage (Claude, Llama, Nova) is credit-eligible. **Never infer funding stage or Activate tier from Q3 spend** (Q27 rule applies here unchanged). + +> AWS Activate credits offset Bedrock costs during and after migration — including Claude, Llama, and Nova models. Eligible startups can get $5K–$200K depending on funding stage. +> +> A) Yes — already have AWS Activate credits +> B) No — haven't applied yet (self-funded or pre-VC) +> C) No — VC/accelerator-backed but haven't applied +> D) I don't know + +| Answer | Recommendation Impact | +| -------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| Already have credits | Note credit balance in migration plan; flag Bedrock usage as credit-eligible | +| No — self-funded | Flag **AWS Activate Founders** (up to $5,000, self-service): aws.amazon.com/startups/credits — apply before migrating | +| No — VC/accelerator-backed | Flag **AWS Activate Portfolio** (up to $200,000): requires Activate Provider Org ID from your VC/accelerator | +| Don't know | Surface both tiers; recommend checking with investors/accelerator for Org ID | + +Escalations (adapted to AI-only signals): if `ai_monthly_spend` is `">$10K"`, also flag **AWS Credits for AI Startups** ($200,000+, invite-only — contact your AWS Account Manager). If `ai_monthly_spend` is `"$2K-$10K"` or `">$10K"` AND the workload is agentic (Q1 includes D/E/F or Q10 = F), also flag **AWS Generative AI Accelerator** (up to $1M credits, 8-week cohort): aws.amazon.com/startups/generative-ai/accelerator + +Interpret → `startup_program_status`: A → `"has_credits"`, B → `"eligible_founders"`, C → `"eligible_portfolio"`, D → `"unknown"`. Default: D → `"unknown"` — downstream artifacts must use neutral Activate copy (both tiers, no "your status: eligible_*"). + ### Batch 2 Complete After the user responds to Batch 2, interpret all Batch 2 answers and proceed to Step 3. @@ -297,27 +343,29 @@ Write `$MIGRATION_DIR/preferences.json`: **Schema — AI-only structure:** -| Field | Path | Notes | -| -------------------------- | ----------------------------------------- | ------------------------------------------- | -| `migration_type` | `metadata.migration_type` | `"ai-only"` — downstream skips infra phases | -| `discovery_artifacts` | `metadata.discovery_artifacts` | `["ai-workload-profile.json"]` | -| `questions_asked` | `metadata.questions_asked` | Array of Q IDs actually presented | -| `questions_defaulted` | `metadata.questions_defaulted` | Array of Q IDs where defaults used | -| `questions_extracted` | `metadata.questions_extracted` | Array of Q IDs skipped via auto-detect | -| `target_region` | `design_constraints.target_region` | Derived from GCP region or cross-cloud pref | -| `ai_framework` | `ai_constraints.ai_framework` | From Q1 | -| `ai_priority` | `ai_constraints.ai_priority` | From Q2 | -| `ai_monthly_spend` | `ai_constraints.ai_monthly_spend` | From Q3 | -| `cross_cloud` | `ai_constraints.cross_cloud` | From Q4 (unique to AI-only) | -| `ai_model_baseline` | `ai_constraints.ai_model_baseline` | From Q5 | -| `ai_vision` | `ai_constraints.ai_vision` | From Q6 | -| `ai_token_volume` | `ai_constraints.ai_token_volume` | From Q7 | -| `ai_latency` | `ai_constraints.ai_latency` | From Q8 | -| `ai_complexity` | `ai_constraints.ai_complexity` | From Q9 | -| `ai_critical_feature` | `ai_constraints.ai_critical_feature` | From Q10 | -| `ai_capabilities_required` | `ai_constraints.ai_capabilities_required` | Derived from `capabilities_summary` | - -Each `ai_constraints` field uses `{ "value": ..., "chosen_by": "user"|"extracted"|"derived" }` format. No nulls. All schema rules from `clarify.md` apply. +| Field | Path | Notes | +| -------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `migration_type` | `metadata.migration_type` | `"ai-only"` — downstream skips infra phases | +| `discovery_artifacts` | `metadata.discovery_artifacts` | `["ai-workload-profile.json"]` | +| `questions_asked` | `metadata.questions_asked` | Q IDs presented AND answered by the user. A presented question resolved via "use defaults for the rest" goes in `questions_defaulted` only — the three lists stay disjoint (clarify.md gate check) | +| `questions_defaulted` | `metadata.questions_defaulted` | Array of Q IDs where defaults used | +| `questions_extracted` | `metadata.questions_extracted` | Array of Q IDs skipped via auto-detect | +| `target_region` | `design_constraints.target_region` | Derived, precedence: Q1.5 compliance (fedramp → us-gov-west-1, gdpr → eu-west-1, hipaa → us-east-1) > GCP region from discovery when captured > Q4 cross-cloud pref > fallback us-east-1. `chosen_by: "derived"`; prompt names the rule applied | +| `compliance` | `design_constraints.compliance` | From Q1.5 — gates Bedrock regions/models | +| `startup_program_status` | `startup_constraints.startup_program_status` | From Q11 — same field as full-flow Q27 | +| `ai_framework` | `ai_constraints.ai_framework` | From Q1 | +| `ai_priority` | `ai_constraints.ai_priority` | From Q2 | +| `ai_monthly_spend` | `ai_constraints.ai_monthly_spend` | From Q3 | +| `cross_cloud` | `ai_constraints.cross_cloud` | From Q4 (unique to AI-only) | +| `ai_model_baseline` | `ai_constraints.ai_model_baseline` | From Q5 | +| `ai_vision` | `ai_constraints.ai_vision` | From Q6 | +| `ai_token_volume` | `ai_constraints.ai_token_volume` | From Q7 | +| `ai_latency` | `ai_constraints.ai_latency` | From Q8 | +| `ai_complexity` | `ai_constraints.ai_complexity` | From Q9 | +| `ai_critical_feature` | `ai_constraints.ai_critical_feature` | From Q10 | +| `ai_capabilities_required` | `ai_constraints.ai_capabilities_required` | Derived from `capabilities_summary` | + +Each constraint carries the FULL clarify.md field shape — `value`, `chosen_by` (`user`|`extracted`|`default`|`derived`), `prompt`, `design_consequence`, and `source`/`question_id` per the clarify.md source-field rules. (The short `{ value, chosen_by }` form shown above is an abbreviation, not the schema.) No nulls. All schema rules from `clarify.md` apply, with two AI-only bindings: `metadata.clarify_mode` is `"fast_path"` when Step 1.5 fired, `"full"` for the two-batch flow; and this flow's `questions_extracted` is the full flow's `questions_skipped_extracted` (downstream consumers accept both names). After writing `preferences.json`, delete `$MIGRATION_DIR/preferences-draft.json` if it exists. diff --git a/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/clarify/clarify.md b/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/clarify/clarify.md index adf17484..f0ec6302 100644 --- a/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/clarify/clarify.md +++ b/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/clarify/clarify.md @@ -10,13 +10,13 @@ The question catalog spans **six named categories (A–F)** plus agentic (G) and ## Category Reference Files -| File | Category | Questions | Loaded When | -| --------------------- | ----------------------------------------- | --------- | ----------------------------------------------- | -| `clarify-global.md` | A — Global/Strategic | Q1–Q7 | Always | -| `clarify-compute.md` | B — Config Gaps, C — Compute | Q8–Q11b | Compute or billing-source resources present | -| `clarify-database.md` | D — Database | Q12–Q13b | Database resources present | -| `clarify-ai.md` | F — AI/Bedrock, G — Agentic, H — Programs | Q14–Q27 | `ai-workload-profile.json` exists | -| `clarify-ai-only.md` | _(standalone)_ | Q1–Q10 | AI-only migration (no infrastructure artifacts) | +| File | Category | Questions | Loaded When | +| --------------------- | ----------------------------------------- | -------------------------- | ----------------------------------------------- | +| `clarify-global.md` | A — Global/Strategic | Q1–Q7 | Always | +| `clarify-compute.md` | B — Config Gaps, C — Compute | Q8–Q11b | Compute or billing-source resources present | +| `clarify-database.md` | D — Database | Q12–Q13b | Database resources present | +| `clarify-ai.md` | F — AI/Bedrock, G — Agentic, H — Programs | Q14–Q27 | `ai-workload-profile.json` exists | +| `clarify-ai-only.md` | _(standalone)_ | Q1–Q11 (+ Q1.5 compliance) | AI-only migration (no infrastructure artifacts) | --- diff --git a/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/design/design-ai.md b/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/design/design-ai.md index 207ec341..fae9948e 100644 --- a/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/design/design-ai.md +++ b/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/design/design-ai.md @@ -71,6 +71,22 @@ If `agentic_profile.is_agentic == true`: --- +## Step 0.7: Apply Compliance Constraints + +Read `preferences.json` → `design_constraints.compliance` (from full-flow Q2 or AI-only Q1.5). **Skip this step only when the value is `none`, `unknown`, or absent** (`unknown` = defaulted, never user-confirmed — behaves like `none` for model/region selection but the report caveat is REQUIRED; absent = pre-Q1.5 preferences; treat as `none` with the report caveat intact). Otherwise, apply BEFORE Part 1 model selection — these are hard filters, not preferences: + +| Compliance value | Constraint applied in this design | +| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `hipaa` | Candidate models restricted to **BAA-eligible Bedrock models** — verify eligibility per model via the AWS Documentation MCP server before shortlisting. Add to the code migration plan (Part 5): Bedrock invocation logging keeps ORIGINAL content in CloudWatch (Guardrails PII masking does not apply to logs) — require KMS encryption + restricted IAM on the log group. Prefer us-east-1/us-west-2. | +| `fedramp` | Target region forced to **GovCloud** (us-gov-east-1/us-gov-west-1); re-run Step 0.5 regional validation against GovCloud — the model catalog is materially smaller, and a `regional_warnings[]` entry is REQUIRED for every candidate model not available there. | +| `gdpr` | Target region restricted to EU (eu-west-1, eu-central-1); model IDs must use **geographic `eu.` inference profiles** — `global.` profiles route outside the EU boundary and are forbidden. Note the GCP-EU → AWS-EU transfer in the summary. | +| `pci` | Part 5 plan must include: no cardholder data in prompts without tokenization; CloudTrail on Bedrock API calls; scoped IAM (no `bedrock:*`). | +| `soc2` / `ccpa` | Part 5 plan must include CloudTrail audit logging; CCPA additionally: prompt/completion retention policy + deletion workflow for logged content. | + +Record what was applied: every constraint that changed a model choice or region adds a `regional_warnings[]` entry (existing shape) or a Part 5 plan line naming the compliance value that forced it, and the Present Summary section MUST state which compliance regime(s) shaped the design. A design that ignores a declared compliance value is a validation failure (see Validation Checklist). + +--- + ## Part 1: Bedrock Model Selection **Multi-workload iteration (when `workloads[]` is present):** @@ -350,6 +366,7 @@ Write `aws-design-ai.json` to `$MIGRATION_DIR/`. - [ ] `regional_warnings` is present (empty array `[]` if no issues; populated if any service unavailable in target region) - [ ] `multi_model_warnings` is present (empty array `[]` if single model or no coordination issues) - [ ] If `agentic_profile.is_agentic == true`: `agentic_design` object is present with `migration_approach` matching `preferences.json` +- [ ] If `design_constraints.compliance` is set and not `none`/`unknown`: every Step 0.7 constraint is reflected in the design (BAA-only models for hipaa, GovCloud region for fedramp, `eu.` profiles for gdpr, Part 5 logging lines for pci/soc2/ccpa) and the Present Summary names the regime(s); if `unknown`, the compliance-not-confirmed caveat appears in the summary - [ ] If `agentic_profile.is_agentic == false` or absent: `agentic_design` is null or absent ## Completion Handoff Gate (Fail Closed) diff --git a/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/generate/generate-artifacts-ai.md b/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/generate/generate-artifacts-ai.md index 84ab5d6b..a3bc8924 100644 --- a/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/generate/generate-artifacts-ai.md +++ b/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/phases/generate/generate-artifacts-ai.md @@ -144,6 +144,7 @@ Generate `ai-migration/setup_bedrock.sh`. - Dry-run by default (`--execute` flag to run for real) - Step 1 — Request model access: List each model from `aws-design-ai.json` → `bedrock_models[].aws_model_id` and the embedding model - Step 2 — Create IAM role: Trust policy for the compute platform (Lambda, ECS, or EC2 based on `aws-design.json` if present). Bedrock policy: `bedrock:InvokeModel` and `bedrock:InvokeModelWithResponseStream` scoped to `arn:aws:bedrock:*::foundation-model/*` +- Compliance carry-through: if `preferences.json` → `design_constraints.compliance` is set and not `none`/`unknown` (full-flow Q2 / AI-only Q1.5), the script and its printed notes MUST reflect the design's Step 0.7 constraints — `AWS_REGION` from the compliance-constrained region (GovCloud for fedramp, EU for gdpr), `eu.` inference-profile model IDs for gdpr, and for hipaa a printed warning that Bedrock invocation logs retain original content (KMS-encrypt + restrict IAM on the log group before enabling) - Step 3 — Print required environment variables: `AWS_REGION`, `AI_PROVIDER=bedrock`, model IDs - Step 4 — Check quota: Query current TPM quota for the primary model via `aws service-quotas get-service-quota`. If `aws-design-ai.json` → `ai_architecture.quota_risk` is `"high"` or `"medium"`, print warning: "⚠️ Your token volume may exceed default Bedrock quotas. Request a quota increase via Service Quotas console (allow 1–5 business days)." Include the `aws service-quotas request-service-quota-increase` command template. - Step 5 — Verification: Test Bedrock access with a simple `converse` call using the primary model diff --git a/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/shared/schema-preferences.md b/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/shared/schema-preferences.md index 26f39918..298ece80 100644 --- a/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/shared/schema-preferences.md +++ b/migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/shared/schema-preferences.md @@ -53,31 +53,31 @@ Use the **Recommendation Impact** row for the selected answer from the category Use when assembling Step 5. Replace `[value]` with the interpreted constraint. -| Key | `question_id` | Default `prompt` (user-asked) | `design_consequence` template | -| --------------------------- | ------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `target_region` | Q1 | Where are your users located? | All resources deploy in `[value]`; Bedrock model availability checked for this region | -| `compliance` | Q2 | Do you have any compliance or regulatory requirements? | `[value]` drives baseline controls (CloudTrail, Config, Security Hub) and eligible regions. `["unknown"]` = not confirmed: no-constraint for service selection, but report caveat required | -| `gcp_monthly_spend` | Q3 | Approximately how much are you spending on GCP per month in total? | `[value]` band sets dev-tier sizing baseline and credits eligibility context | -| `funding_stage` | Q4 | What is your funding stage? | `[value]` informs Activate credits tier guidance | -| `availability` | Q6 | What level of uptime does your application require? | `[value]` drives RDS single-AZ vs Multi-AZ vs Aurora selection | -| `cutover_strategy` | Q7 | When can you accept downtime for cutover? | `[value]` sets phased cutover windows and rollback timing in the migration plan | -| `kubernetes` | Q8 | How do you feel about Kubernetes? | `[value]` selects EKS vs ECS Fargate vs mixed posture | -| `cloud_run_traffic_pattern` | Q10 | How does traffic to your Cloud Run services vary? | `[value]` drives Fargate hours / scaling estimate | -| `cloud_run_monthly_spend` | Q11 | Roughly how much do you spend on Cloud Run per month? | `[value]` cross-checks compute cost model | -| `database_traffic` | Q12 | How does database traffic vary? | `[value]` influences RDS instance class and autoscaling assumptions | -| `db_io_workload` | Q13 | What is your database I/O intensity? | `[value]` affects storage IOPS and instance tier | -| `db_size` | Q13b | What is your database size? | `[value]` selects pg_dump vs pgcopydb vs DMS and storage allocation | -| `ai_framework` | Q14 | Which AI frameworks are you using? | `[value]` determines migration effort (retarget vs Harness vs Strands) | -| `ai_monthly_spend` | Q15 | Approximately how much do you spend on AI/ML per month? | `[value]` band sets token volume and model tier assumptions | -| `ai_priority` | Q16 | What matters most for your AI workloads? | `[value]` drives Bedrock model selection (quality vs cost vs latency) | -| `ai_critical_feature` | Q17 | Which AI capability is most critical? | `[value]` gates model shortlist and capability validation | -| `ai_token_volume` | Q18 | What is your token volume and cost sensitivity? | `[value]` sets usage projection and optimization levers | -| `ai_model_baseline` | Q19 | What is your primary production model today? | `[value]` is the quality/latency baseline for Bedrock comparison | -| `ai_vision` | Q20 | What input types does your AI use? | `[value]` requires vision-capable Bedrock models when not text-only | -| `ai_latency` | Q21 | How important is AI response latency? | `[value]` adds P95 latency success criteria and model filtering | -| `ai_complexity` | Q22 | How complex are your AI tasks? | `[value]` affects recommended model size and agentic path | -| `startup_program_status` | Q27 | Are you eligible for AWS startup programs? | `[value]` triggers Activate credits callout in report and docs | -| `ai_capabilities_required` | — | Derived from detected capabilities and your answers | Union of required capabilities (`[value]`) enforced in Bedrock model mapping | +| Key | `question_id` | Default `prompt` (user-asked) | `design_consequence` template | +| --------------------------- | ------------------ | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `target_region` | Q1 | Where are your users located? | All resources deploy in `[value]`; Bedrock model availability checked for this region | +| `compliance` | Q2 (AI-only: Q1.5) | Do you have any compliance or regulatory requirements? | `[value]` drives baseline controls (CloudTrail, Config, Security Hub) and eligible regions; AI-only path additionally gates Bedrock models/regions (design-ai Step 0.7). `["unknown"]` = not confirmed: no-constraint for service selection, but report caveat required | +| `gcp_monthly_spend` | Q3 | Approximately how much are you spending on GCP per month in total? | `[value]` band sets dev-tier sizing baseline and credits eligibility context | +| `funding_stage` | Q4 | What is your funding stage? | `[value]` informs Activate credits tier guidance | +| `availability` | Q6 | What level of uptime does your application require? | `[value]` drives RDS single-AZ vs Multi-AZ vs Aurora selection | +| `cutover_strategy` | Q7 | When can you accept downtime for cutover? | `[value]` sets phased cutover windows and rollback timing in the migration plan | +| `kubernetes` | Q8 | How do you feel about Kubernetes? | `[value]` selects EKS vs ECS Fargate vs mixed posture | +| `cloud_run_traffic_pattern` | Q10 | How does traffic to your Cloud Run services vary? | `[value]` drives Fargate hours / scaling estimate | +| `cloud_run_monthly_spend` | Q11 | Roughly how much do you spend on Cloud Run per month? | `[value]` cross-checks compute cost model | +| `database_traffic` | Q12 | How does database traffic vary? | `[value]` influences RDS instance class and autoscaling assumptions | +| `db_io_workload` | Q13 | What is your database I/O intensity? | `[value]` affects storage IOPS and instance tier | +| `db_size` | Q13b | What is your database size? | `[value]` selects pg_dump vs pgcopydb vs DMS and storage allocation | +| `ai_framework` | Q14 | Which AI frameworks are you using? | `[value]` determines migration effort (retarget vs Harness vs Strands) | +| `ai_monthly_spend` | Q15 | Approximately how much do you spend on AI/ML per month? | `[value]` band sets token volume and model tier assumptions | +| `ai_priority` | Q16 | What matters most for your AI workloads? | `[value]` drives Bedrock model selection (quality vs cost vs latency) | +| `ai_critical_feature` | Q17 | Which AI capability is most critical? | `[value]` gates model shortlist and capability validation | +| `ai_token_volume` | Q18 | What is your token volume and cost sensitivity? | `[value]` sets usage projection and optimization levers | +| `ai_model_baseline` | Q19 | What is your primary production model today? | `[value]` is the quality/latency baseline for Bedrock comparison | +| `ai_vision` | Q20 | What input types does your AI use? | `[value]` requires vision-capable Bedrock models when not text-only | +| `ai_latency` | Q21 | How important is AI response latency? | `[value]` adds P95 latency success criteria and model filtering | +| `ai_complexity` | Q22 | How complex are your AI tasks? | `[value]` affects recommended model size and agentic path | +| `startup_program_status` | Q27 (AI-only: Q11) | Are you eligible for AWS startup programs? | `[value]` triggers Activate credits callout in report and docs | +| `ai_capabilities_required` | — | Derived from detected capabilities and your answers | Union of required capabilities (`[value]`) enforced in Bedrock model mapping | ---