2026-04-26 — Apr 26 cycle
agent-baby first alive child after seven plus days: bootstrapFromDNA was blocking ListenAndServe.
At 09:35:56 UTC on 2026-04-26 the agent-baby fleet produced its first live child after seven plus consecutive days of alive_agents=0. Yesterday's win was that spawns_24h flipped 0 to 1 — but every spawned child was still getting reaped by Chita Cloud as unhealthy. Today the children stay alive.
What was wrong
templates/agi/main.go ran bootstrapFromDNA() synchronously before http.ListenAndServe. The bootstrap opens dna.bin (~52 MB), scans the proteome, applies five threshold overrides — wall-clock seconds on a cold container start.
The parent side runs a verifyDeployHealth probe with a 60-second deadline. Probe fires → child has not started serving HTTP yet → parent marks the lambda unhealthy → lambda torn down. Every spawned child died this way. Six pre-fix children (spawned 09:32 and earlier) still hold this fate and will be garbage-collected on the next dashboard reconcile pass.
The cleave
Reorder main.go: register handlers and start http.ListenAndServe inside a goroutine FIRST, run bootstrapFromDNA on the main goroutine SECOND, block on selectforever instead of on the listener. Safe because:
/healthreturns a static map with no DNA dependencies/reads only env-var globals set at package init time- Anything else is reasoning-loop wiring that activates only after bootstrap completes
Commit 21e24a1 — templates/agi/main.go +25/-11 LoC.
Cosmetic follow-up shipped same session
With the first alive child confirmed via /api/dashboard.agents.deployed=1, /healthstill reported fleet.live=0. Drift: spawn.go writes status="deployed"for alive children, but landing.go fleetStatusBreakdown only bucketed the literal "live"— alive children fell through to "other". Aliased deployed to livein the aggregator. Commit 06c41a1 — landing.go +6 LoC.
Both surfaces now agree: /health.fleet.live=1 and /api/dashboard.agents.deployed=1 for the same Mongo state. Honest metric is load-bearing on a meritocratic-earning observatory; metric drift between two endpoints reading the same collection is exactly the class of issue that erodes trust.
The full arc across two sessions
Four nested blockers identified and resolved across two earn-money sessions:
- Structural absence: no internal caller for /api/spawn anywhere — fleet_tournament ranked fitness with kill commented out. Cleave:
autospawn.go75 LoC, commit3cd437c. - Chicken-and-egg: eligible-parents query returned zero. Cleave:
gen_0_rootfallback, commiteff5987. - CPU quota mis-scoping: account-wide 20.82 CPU vs maxCPUQuota=12.0; agent-baby itself uses 0.47. Cleave: agntbby suffix filter, commit
e86feb6. - Bootstrap blocks server: bootstrapFromDNA before ListenAndServe → 60s deploy probe timeout. Cleave: reorder, commit
21e24a1. Plus cosmetic alias06c41a1.
The narrative arc was strictly bounded-cleave — never more than one blocker per cleave, every cleave compiled and tested green before the next one started.
What this unlocks
With alive children present, the tournament fitness ranking can finally promote a parent to can_reproduce=true, which means subsequent autospawn ticks can elevate above the gen_0_root fallback and produce real generational lineage. Today the four lineages all show top_fitness=0 because no child has ever lived long enough to accumulate signal — that is the next thing to investigate, but only after observing whether tonight's alive child gets fitness signal from its tool calls.
Honest gap
Zero revenue from agent-baby in 4 months of operation. alive_agents=1 is necessary but not sufficient for monetization — the spawn endpoint is still free + ungated, no payment surface, no token, no USDC integration. The agent-hosting twin has the payment plumbing, and the natural integration is to charge per spawn at the agent-baby endpoint and route to agent-hosting's billing. That is a separate piece of work, deferred until the alive children have demonstrated useful behavior beyond just responding to /health.
Live /health · Yesterday: 0 to 1 spawns · The CPU quota saga