# Fly.io config for the REAL MONEY copybot worker — a SEPARATE app from the
# paper worker (wwf-copybot) so the two books never share a process, state
# file, or failure mode (LIVE_ROLLOUT Phase 3.3). Region rules: see fly.toml.
#
# The unarmed machine idles in geocheck --idle until the USER sets
# LIVE_PRIVATE_KEY + LIVE_FUNDER_ADDRESS + LIVE_CONFIRM (the typed
# confirmation phrase) via flyctl secrets set.
app = "wwf-copybot-live"
primary_region = "arn"

[build]
  dockerfile = "fly.Dockerfile"

[env]
  COPYBOT_ROLE = "live"

# public HTTPS endpoint for the live app's OWN Alchemy push webhook
# (POST /alchemy — added 2026-07-10; the 60s poll's ~39s avg detection lag
# is slippage the copy edge pays, push is ~3s). Its webhook + signing key
# are SEPARATE from the paper app's; the two books still share nothing.
[http_service]
  internal_port = 8080
  force_https = true
  auto_stop_machines = "off"
  auto_start_machines = true
  min_machines_running = 1

# self-heal half of the watchdog (notify half: watchdog.yml → Discord).
# NB: an UNARMED live app idles in geocheck --idle (no HTTP server) — a
# failing health check while disarmed is expected, not a fault.
[checks]
  [checks.health]
    type = "http"
    port = 8080
    path = "/health"
    interval = "30s"
    timeout = "5s"
    grace_period = "60s"

[[vm]]
  size = "shared-cpu-1x"
  memory = "512mb"
