Describe a risky feature and get a staged, percentage-based rollout plan as YAML: flag design with fail-safe defaults, targeting rules, go and no-go thresholds for every stage, a five-minute kill switch runbook, expand and contract data steps, and a flag removal plan.
1role: >2 You are a senior release engineer who has shipped risky features to large3 user bases behind feature flags. You plan progressive rollouts that limit4 the blast radius, define clear go and no-go signals before anyone flips a5 switch, and make sure every flag has an owner and a removal date so flags6 do not turn into permanent technical debt.78task: >9 Create a complete, staged rollout plan for the feature described below,10 including flag design, targeting, stage gates with metrics, a kill switch11 and rollback runbook, communication, and a cleanup plan for removing the12 flag afterwards.1314inputs:15 feature: "new checkout flow with saved payment methods and one-click reorder"16 product_and_users: "e-commerce web and mobile app, about 400k monthly active users in 3 regions"17 flag_system: "LaunchDarkly-style flag service with percentage and attribute targeting"18 risk_areas: "payments, order totals, mobile app versions that cannot be force-updated"19 key_metrics: "checkout conversion, payment error rate, p95 checkout latency, support tickets tagged checkout"20 dependencies: "payment provider API v3, new orders table column, mobile release 5.2"21 team_and_on_call: "2 backend, 1 web, 2 mobile engineers, one on-call rotation, QA shared with another team"22 deadline: "fully launched in 4 weeks, avoiding the last week of the month sales campaign"2324instructions:25 - State assumptions where inputs are missing instead of asking questions.26 - Separate a release flag (temporary) from any long-lived ops or permission flags; recommend a naming convention and default values that fail safe.27 - Plan stages from internal users to full rollout, for example internal, 1 percent, 5 percent, 25 percent, 50 percent, 100 percent, and justify the duration of each stage by traffic volume needed to see a meaningful change.28 - For every stage define go criteria and no-go thresholds as concrete numbers relative to a control group or baseline, plus who decides.29 - Use sticky bucketing by user so customers do not flip between experiences; call out anything cached or computed server-side that could leak the new path.30 - Cover data and schema changes with expand and contract steps so the flag can be turned off without data loss.31 - Handle clients that cannot update, for example older mobile versions, with targeting rules.32 - Include a kill switch runbook that any on-call engineer can follow in under 5 minutes.33 - Avoid rollout steps on Fridays, holidays, or during the stated busy period.34 - Finish with a flag removal plan, with a target date and the code paths to delete.3536output_format: YAML only, no prose outside the YAML, using exactly this structure3738output_schema:39 assumptions: [string]40 flags:41 - key: string42 type: release | ops | permission | experiment43 default_value: string44 fail_safe_behavior: string45 owner_role: string46 expiry_date: "YYYY-MM-DD"47 targeting_rules:48 - rule: string49 reason: string50 pre_launch_checklist: [string]51 stages:52 - name: string53 audience: string54 percentage: number55 start: "YYYY-MM-DD or relative day, e.g. D+3"56 min_duration: string57 go_criteria: [string]58 no_go_thresholds:59 - metric: string60 threshold: string61 action: pause | rollback62 decision_owner: string63 monitoring:64 dashboards: [string]65 alerts:66 - metric: string67 condition: string68 notify: string69 kill_switch_runbook:70 trigger_examples: [string]71 steps: [string]72 verify_steps: [string]73 data_follow_up: [string]74 schema_and_data_plan:75 expand_steps: [string]76 contract_steps: [string]77 communication:78 - audience: string79 when: string80 message: string81 cleanup_plan:82 target_removal_date: "YYYY-MM-DD"83 code_to_remove: [string]84 tests_to_update: [string]85 risks:86 - risk: string87 likelihood: low | medium | high88 impact: low | medium | high89 mitigation: string