real-money worker scaffolding (LIVE_ROLLOUT Phase 3 prep)

- start.sh: COPYBOT_ROLE=live — unarmed (missing LIVE_PRIVATE_KEY /
  LIVE_FUNDER_ADDRESS / LIVE_CONFIRM) idles in geocheck, no clone, no
  book, no orders; armed runs config.live.example.json + own state file
  copybot_state.live.json, --live, poll mode (webhook stays on paper).
- confirm_live: accepts the phrase from LIVE_CONFIRM env — the USER
  types it into flyctl secrets set (rule 0.7 human checkpoint, headless);
  wrong value aborts, unset disarms at next boot.
- config.live.example.json: Set E + pinned floors (mirrors paper),
  bankroll $50 @ 10% = $5 stakes, caps untouched (rule 0.6), leaked
  Discord webhook URL removed (ROTATE it — was committed publicly).
- fly.live.toml: separate app wwf-copybot-live, arn, no inbound, no
  checks, role env baked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
jaxperro
2026-07-08 23:17:35 -04:00
parent b433448279
commit 58b89c106a
4 changed files with 99 additions and 40 deletions
+20
View File
@@ -0,0 +1,20 @@
# 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.
#
# Poll mode only (60s; the Alchemy push webhook stays on the paper app), no
# inbound services, no health checks — 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"
[[vm]]
size = "shared-cpu-1x"
memory = "512mb"