1{2 "_comment": "Dyno type -> Fargate sizing. DIRECT LOOKUP: read fargate_cpu/fargate_memory columns; do NOT recompute them. heroku_cpu_share/heroku_memory_mb are PROVENANCE ONLY (why this row meets-or-exceeds the source) — never derive the fargate values from them. fargate_cpu in CPU units (1024 = 1 vCPU); fargate_memory in MiB. All rows are valid Fargate CPU/memory pairings.",3 "_match": "exact, case-insensitive, on formation config.dyno_type",4 "_on_not_found": "reject the formation; produce NO Fargate entry; append warning 'Unsupported dyno type: {dyno_type}. Cannot map to Fargate. Please contact support or provide manual sizing.'; continue",5 "_desired_count": {6 "from": "formation config.quantity",7 "min": 0,8 "max"
9 "on_out_of_range": "clamp to nearest boundary AND append a warning naming the clamp"
10 },
11 "_load_balancer": "true iff process_type == 'web' (also emits a separate ALB service entry); false otherwise",
12 "rows": {
13 "eco": {
14 "heroku_cpu_share": "1x",
15 "heroku_memory_mb": 512,
16 "fargate_cpu": 256,
17 "fargate_memory": 512,
18 "_note": "Smallest legal Fargate task size (256 CPU units permits 512/1024/2048 MiB only). Heroku Eco is a shared $5/month 1000 dyno-hour pool and Eco dynos sleep when idle; the Fargate task is always-on and billed per second, so the cost SHAPE changes even though the size matches. See the Eco dyno rule in references/shared/heroku-pricing-cache.md."
19 },
20 "basic": {
21 "heroku_cpu_share": "1x",
22 "heroku_memory_mb": 512,
23 "fargate_cpu": 256,
24 "fargate_memory": 512,
25 "_note": "Smallest legal Fargate task size (256 CPU units permits 512/1024/2048 MiB only). Basic dynos never sleep, so this is a like-for-like always-on mapping."