Evo3 Stage 0: RESEARCH — App Fleet Lifecycle Deep Exploration
**Target:** Mega-Cube #13 — "App Fleet Lifecycle" **Date:** 2026-03-10 **Model:** qwen35-cloud (405B) **Exploration Depth:** 3 (recursive) **File Budget:** 30 files max
Full Public Reader
Evo3 Stage 0: RESEARCH — App Fleet Lifecycle Deep Exploration
Target: Mega-Cube #13 — "App Fleet Lifecycle"
Date: 2026-03-10
Model: qwen35-cloud (405B)
Exploration Depth: 3 (recursive)
File Budget: 30 files max
---
Exploration Tree
ROOT: App Fleet Lifecycle Analysis
│
├── Branch 1: Evolution World Core (Depth=3) ✓
│ ├── engine.py [400 lines]
│ │ ├── Imports → genome.py, invariants.py, l1_controller.py, l2_controller.py
│ │ ├── Imports → l3_controller.py, forcing.py, state.py, immune.py
│ │ ├── Imports → population.py, noosphere_oracle.py, graduation.py, feedback.py
│ │ ├── Key Class: EvolutionWorld (orchestrator)
│ │ │ ├── evolve_step() — L1+L2+L3 coupling, graduation checks
│ │ │ ├── fitness threshold: 0.85 for graduation
│ │ │ └── L3 fires every 30 L1 steps
│ │ └── Key Method: evolve_all() — batch evolution
│ │
│ ├── genome.py [241 lines]
│ │ ├── Key Class: AppGenome
│ │ │ ├── Fields: architecture[], capabilities[], dependencies[], ui_patterns[]
│ │ │ ├── Milestones: testflight_live, core_feature, ui_polish, screenshots, app_store_submission, user_retention_signal
│ │ │ ├── Fitness: weighted milestone progress (or grounded_fitness from feedback)
│ │ │ └── Mutation operators: G01-G15, R01-R07, D01-D06 (TIE techniques)
│ │ ├── DEFAULT_MILESTONES (6 milestones, weights 0.8-2.5)
│ │ └── DEFAULT_MUTATION_OPERATORS (10 operators)
│ │
│ ├── fleet.py [329 lines]
│ │ ├── FLEET_3_APPS: 16 apps (apps 36-50+)
│ │ │ ├── Categories: language (5), movement (3), builder (4), voice (2), coffee (1), garden (1)
│ │ │ ├── All have testflight_live=1.0 (already on TestFlight)
│ │ │ └── Spore: most mature (core_feature=0.7)
│ │ ├── CATEGORY_OPERATOR_BOOSTS: category-specific mutation weights
│ │ └── initialize_fleet3() — register all Fleet 3 apps
│ │
│ ├── state.py [315 lines]
│ │ ├── StateManager: Supabase persistence
│ │ ├── Tables: ew_app_genomes, ew_l1_steps, ew_l2_steps, ew_forcing_events
│ │ ├── Tables: ew_invariant_checks, ew_pulse_sessions, ew_feedback_snapshots, ew_l3_state
│ │ └── Methods: save_genome, get_genome, update_genome, save_l1_step, count_l1_steps_since_progress
│ │
│ ├── l1_controller.py [430 lines]
│ │ ├── L1Controller: App evolution layer
│ │ ├── evolve_app() — applies mutations, checks invariants, tracks state history
│ │ ├── GENERATION_EFFECTS: G01, G04, G06, G14, G15
│ │ ├── REFINEMENT_EFFECTS: R01, R02, R07
│ │ ├── DISTRIBUTION_EFFECTS: D01, D06
│ │ └── Dream gene injection from Noosphere (exploration_rate=0.2)
│ │
│ ├── l2_controller.py [331 lines]
│ │ ├── L2Controller: Meta-evolution layer
│ │ ├── MethodGenome: technique_weights, selection_strategy, decomposition_method
│ │ ├── SELECTION_STRATEGIES: tournament, roulette, rank_based, elitist, diversity_driven
│ │ ├── DECOMPOSITION_METHODS: milestone_sequential, parallel_capabilities, dependency_graph, importance_weighted, adaptive_frontier
│ │ └── evolve_method() — fires every 3 L1 steps
│ │
│ ├── l3_controller.py [242 lines]
│ │ ├── L3Controller: Meta-meta-evolution (The Governor)
│ │ ├── L3Genome: learning_rate, exploration_ceiling/floor, adaptation_cadence, forcing_sensitivity, parallelism_cap
│ │ ├── L3_FIRING_INTERVAL = 30 (steps)
│ │ └── Fitness = L2 novelty improvement rate
│ │
│ ├── graduation.py [234 lines]
│ │ ├── GRADUATION_FITNESS = 0.85
│ │ ├── GraduationOutcome: SPECIATION, OPTIMIZATION, DORMANCY, NOT_READY
│ │ ├── SPECIATION_MOMENTUM_THRESHOLD = 0.01 per day
│ │ ├── DORMANCY_METABOLISM_THRESHOLD = 0.15
│ │ ├── evaluate_graduation() — determine outcome based on fitness + momentum + metabolism
│ │ ├── speciate() — fork genome into stable + variant
│ │ ├── enter_optimization() — lock G-techniques, R/D only
│ │ └── enter_dormancy() — remove from rotation, preserve capabilities
│ │
│ ├── feedback.py [334 lines]
│ │ ├── 5 channels: build_health (0.25), crash_rate (0.20), engagement (0.25), store_presence (0.15), design_health (0.15)
│ │ ├── DECAY_HALF_LIVES: build=1h, crash=3d, engagement=6h, store=7d, design=4h
│ │ ├── FeedbackState: grounded_fitness, metabolism_rate, momentum (14-day slope)
│ │ └── FeedbackCollector: async collection from Supabase + Pulse
│ │
│ ├── invariants.py [325 lines]
│ │ ├── 4 Non-Halting Invariants:
│ │ │ ├── 1. min_entropy_production (epsilon=0.01)
│ │ │ ├── 2. bounded_divergence (max_divergence=2.0)
│ │ │ ├── 3. cross_layer_forcing (l1_stall=3, l2_stall=5)
│ │ │ └── 4. no_absorbing_states (min_viable_transitions=2)
│ │ └── CALC-aware: calc_results boost novelty, calc_pending adds divergence pressure
│ │
│ ├── metrics.py [194 lines]
│ │ ├── kl_divergence(), jaccard_distance(), state_novelty(), divergence_rate()
│ │ ├── method_novelty(), count_viable_transitions(), entropy()
│ │ └── All used by invariants
│ │
│ ├── population.py [453 lines]
│ │ ├── PopulationManager: crossover, speciation, fleet bootstrap
│ │ ├── Species matrix: language, movement, builder, voice, coffee
│ │ ├── CrossoverResult: capability_graft, architecture_allele, operator_transfer
│ │ └── bootstrap_fleet() — register new apps
│ │
│ └── pulse_bridge.py [1297 lines]
│ ├── Pulse Bridge: CALC dispatch to Cortex panes
│ ├── TEMPLATES_DIR: 10 TIE technique prompt templates
│ ├── select_calc_agent(): G→Codex, R→Claude, D→Gemini
│ ├── MAX_CONCURRENT=2, MAX_CALC_CONCURRENT=3
│ └── Backlog: backlog.json, injection_memory.json
│
├── Branch 2: iOS Build Pipeline (Depth=2) ✓
│ ├── [home-path] [543 lines]
│ │ ├── Creates TestFlight-ready iOS projects
│ │ ├── --payments flag includes StoreKit 2 scaffold
│ │ ├── Uses XcodeGen (project.yml)
│ │ ├── GitHub Actions: ci.yml, testflight.yml, version-bump.yml
│ │ └── Team ID: 8643C988C4
│ │
│ ├── Desktop/Spore/project.yml [64 lines]
│ │ ├── Bundle: com.diomande.spore
│ │ ├── Dependencies: TelemetryDeck
│ │ ├── Deployment: iOS 17.0, Swift 5.9
│ │ └── Targets: Spore (app), SporeWidget (extension)
│ │
├── Branch 3: Payment Integration (Depth=2) ✓
│ ├── Spore: No native payment files found (uses TelemetryDeck, not OpenClawPayments)
│ ├── OpenClawHub/project.yml references no payment packages
│ └── Bootstrap script supports --payments flag for OpenClawPayments SPM
│
└── Branch 4: Search Results ✓
├── "graduation": 15 matches in evolution_world/*.py
├── "lifecycle": 2 matches (ew_pane_registry.py, test_graduation.py)
├── "bootstrap": 6 matches (population.py, test_population.py, bootstrap scripts)
└── "payment": Build artifacts only (no source files in Spore/OpenClawHub)---
Fact Inventory per Candidate
### Candidate 1: M-2 EW Graduation
| File | Lines | Key Classes/Functions | Cross-References |
|------|-------|----------------------|------------------|
| `engine.py` | 400 | `EvolutionWorld.evolve_step()`, `EvolutionWorld.evolve_all()` | graduation.py:28, feedback.py:30 |
| `graduation.py` | 234 | `evaluate_graduation()`, `speciate()`, `enter_optimization()`, `enter_dormancy()`, `apply_graduation()` | genome.py:18, feedback.py:31 |
| `genome.py` | 241 | `AppGenome`, `Milestone`, `MutationOperator`, `DEFAULT_MILESTONES` | — |
| `feedback.py` | 334 | `FeedbackState`, `FeedbackCollector`, `compute_grounded_fitness()`, `compute_metabolism()` | — |
Key Facts:
- Graduation triggers at `fitness >= 0.85` (graduation.py:23)
- 3 outcomes: SPECIATION (momentum >0.01/day), OPTIMIZATION (stable), DORMANCY (metabolism <0.15)
- Speciation forks genome: stable (RELEASED) + variant (ACTIVE with new milestones)
- Optimization locks out G-techniques, keeps R/D only (graduation.py:142-149)
- Dormancy preserves capabilities in gene pool for crossover (graduation.py:160)
- Feedback has 5 weighted channels with temporal decay (feedback.py:30-36)
### Candidate 2: A-8 Wave 3
| File | Lines | Key Classes/Functions | Cross-References |
|------|-------|----------------------|------------------|
| `fleet.py` | 329 | `FLEET_3_APPS`, `create_fleet3_genome()`, `initialize_fleet3()`, `run_fleet3_evolution()` | genome.py:18, engine.py:21 |
| `population.py` | 453 | `PopulationManager`, `crossover_capabilities()`, `bootstrap_fleet()` | genome.py:24 |
Key Facts:
- 16 Wave 3 apps defined (fleet.py:28-173)
- All apps start with `testflight_live=1.0` (already on TestFlight)
- Category-specific mutation operator boosts (fleet.py:176-185)
- Spore is most mature: `core_feature=0.7`, others at 0.2-0.3
- Categories: language (5), movement (3), builder (4), voice (2), coffee (1), garden (1)
### Candidate 3: D-4 iOS Build
| File | Lines | Key Classes/Functions | Cross-References |
|------|-------|----------------------|------------------|
| `openclaw-ios-bootstrap.sh` | 543 | `--payments` flag, XcodeGen generation, GitHub Actions scaffolding | — |
| `Spore/project.yml` | 64 | Target definitions, TelemetryDeck dependency | — |
| `OpenClawHub/project.yml` | 78 | TCA + Supabase dependencies | — |
Key Facts:
- Bootstrap script creates complete TestFlight-ready projects
- `--payments` flag adds OpenClawPayments SPM package + entitlements
- ExportOptions.plist uses `destination=export` (NOT upload) for xcodebuild
- Team ID hardcoded: 8643C988C4
- Min iOS 17.0, Swift 5.9-6.0
- GitHub Actions: reusable-ci-swift.yml, reusable-testflight.yml
### Candidate 4: M-9 SwiftUI Design
| File | Lines | Key Classes/Functions | Cross-References |
|------|-------|----------------------|------------------|
| `genome.py` | 241 | `AppGenome.architecture`, `AppGenome.ui_patterns` | — |
| `l1_controller.py` | 430 | `_cross_domain_pattern()`, `_scamper_mutation()` | genome.py:18 |
Key Facts:
- Architecture field: e.g., ["SwiftUI", "TCA", "Supabase", "OpenClawKit"]
- UI patterns: "tab_bar", "navigation_stack", "search_bar", etc.
- SCAMPER mutation can transform architecture (SwiftUI↔UIKit, TCA↔MVVM)
- Design health channel in feedback: weight=0.15, half-life=4h
### Candidate 5: I-1 Payments
| File | Lines | Key Classes/Functions | Cross-References |
|------|-------|----------------------|------------------|
| `openclaw-ios-bootstrap.sh` | 543 | Payment scaffold generation (lines 107-115, 236-252) | — |
| `Spore/project.yml` | 64 | No OpenClawPayments reference (uses TelemetryDeck) | — |
| Build artifacts | N/A | StoreKit headers in build cache (unused) | — |
Key Facts:
- Spore does NOT have OpenClawPayments integration
- Bootstrap can add payment scaffold with `--payments` flag
- Payment scaffold includes: entitlements + PaymentConfig.swift
- IAP products: `pro.monthly`, `pro.yearly`
- Feature gates via PaymentConfig
---
What Exists vs What's Missing
### ✅ What Exists (Strengths)
| Component | Status | Evidence |
|-----------|--------|----------|
| Genome Model | ✅ Complete | genome.py: AppGenome with architecture, capabilities, milestones, mutations |
| L1 Evolution | ✅ Complete | l1_controller.py: evolve_app() with TIE techniques, invariant checks |
| L2 Meta-Evolution | ✅ Complete | l2_controller.py: MethodGenome, technique_weights, strategy mutation |
| L3 Meta-Meta-Evolution | ✅ Complete | l3_controller.py: L3Genome evolves L2 constants every 30 steps |
| 4 Invariants | ✅ Complete | invariants.py: entropy, divergence, cross-layer forcing, no absorbing states |
| Graduation Protocol | ✅ Complete | graduation.py: 3 outcomes with momentum/metabolism logic |
| Feedback Metabolism | ✅ Partial | feedback.py: 5 channels defined, collectors implemented but some return defaults |
| Pulse Bridge | ✅ Complete | pulse_bridge.py: CALC dispatch, TIE templates, agent routing |
| iOS Bootstrap | ✅ Complete | openclaw-ios-bootstrap.sh: full project generation |
| Fleet Registry | ✅ Complete | fleet.py: 16 Wave 3 apps defined |
### ⚠️ What's Missing (Gaps)
| Component | Gap | Impact |
|-----------|-----|--------|
| Unified Lifecycle Orchestrator | No single entry point coordinating bootstrap → evolve → graduate lifecycle | Manual steps between phases, no automated pipeline |
| Payment Integration | Spore has no OpenClawPayments; store_presence channel returns 0.0 default | Feedback loop incomplete, no revenue signals |
| Build Health Integration | collect_build_health() queries Supabase but Pulse session success not wired | Build success not affecting genome fitness |
| EventTracker Engagement | collect_engagement() returns 0.3 default ("no_tracker") | User behavior invisible to evolution |
| Crash Rate Telemetry | collect_crash_rate() returns 0.9 default ("no_data") | App stability not measured |
| Design Health (DHS) | collect_design_health() queries design_scores table (may not exist) | UI quality not integrated |
| Graduation → Deployment Handoff | No automation from graduation outcome to ASC submission | Apps graduate but don't ship automatically |
| Lifecycle State Machine | No formal state machine: BOOTSTRAP → EVOLVE → GRADUATE → SHIP → MONITOR | State transitions implicit in engine.py logic |
| Cross-App Dependencies | Dependencies list exists but no resolution (OpenClawKit, OpenClawPayments versions) | Fleet may drift on shared libraries |
---
Cross-System Connections Discovered
┌─────────────────────────────────────────────────────────────────────┐
│ APP FLEET LIFECYCLE ECO-SYSTEM │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ BOOTSTRAP │────▶│ EVOLVE │────▶│ GRADUATE │ │
│ │ │ │ │ │ │ │
│ │ ios-bootstrap│ │ engine.py │ │ graduation.py│ │
│ │ fleet.py │ │ l1/l2/l3 │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │ │ │
│ │ │ │ └─────────────────┘ │
│ │ │ │ │ │
│ ▼ │ │ ▼ │
│ ┌──────────────┐ │ │ ┌──────────────┐ │
│ │ GITHUB │ │ │ │ FEEDBACK │ │
│ │ ACTIONS │◀──────────┘ └──▶│ │ │
│ │ │ build │ │ feedback.py │ │
│ │ ci.yml │ success │ │ 5 channels │ │
│ │ testflight │ │ │ metabolism │ │
│ └──────────────┘ │ └──────────────┘ │
│ │ │ │
│ ▼ │ │
│ ┌──────────────┐ │ │
│ │ PULSE │──────┘ │
│ │ BRIDGE │ pulse_results │
│ │ │ │
│ │ pulse_bridge │ │
│ │ CALC agents │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘Critical Connections:
1. engine.py:267-269 → graduation.py: `if fitness >= 0.85: evaluate_graduation()`
2. engine.py:184-186 → feedback.py: `fb = self.feedback_states.get(app_name)`
3. feedback.py:223-242 → Supabase `build_timeline` table (may not exist)
4. pulse_bridge.py:77-78 → Backlog dispatch to Cortex panes
5. openclaw-ios-bootstrap.sh:108-115 → OpenClawPayments dependency injection
6. fleet.py:168-173 → Spore genome registration (garden category, 10 capabilities)
---
Constraints and Open Questions for Stage 1
### Constraints
1. Supabase Dependency: All persistence relies on Supabase tables existing (`ew_app_genomes`, `build_timeline`, `design_scores`, `event_tracker`). Tables may not match schema.
2. Pulse Bridge Concurrency: `MAX_CONCURRENT=2`, `MAX_CALC_CONCURRENT=3` limits parallelism (pulse_bridge.py:77-79)
3. Team ID Hardcoded: `8643C988C4` in bootstrap script and project.yml files
4. Category Matrix Fixed: Species distance matrix hardcoded in population.py:32-38
5. Feedback Defaults: 4/5 channels return defaults (no real data sources connected)
6. Graduation Manual: No automation from graduation → App Store Connect submission
### Open Questions
1. Bootstrap Scope: Should bootstrap create ONLY new apps, or also initialize existing apps (Spore, OpenClawHub) with EW genomes?
2. Payment Priority: Should all apps have payments, or only specific categories (builder, garden)?
3. Build Health Source: Should build health come from xcodebuild logs, GitHub Actions, or Supabase?
4. Engagement Tracking: Is EventTracker a real service or planned? If real, what's the API?
5. DHS Integration: Does design_scores table exist? What generates DHS scores?
6. Lifecycle States: Should lifecycle be explicit (state machine) or implicit (fitness-based)?
7. Cross-App Crossover: Should successful features auto-propagate across fleet via crossover?
8. L3 Firing Rate: Is 30 steps optimal? Should it adapt based on fleet size?
---
File Read Summary
| Category | Files Read | Total Lines |
|---|---|---|
| Evolution World Core | 10 files | 3,075 lines |
| iOS Build | 3 files | 685 lines |
| Search Results | grep/ls | N/A |
| TOTAL | 13 | 3,760 lines |
Depth Achieved:
- engine.py: depth=3 (imports → graduation → feedback → Supabase)
- fleet.py: depth=2 (imports → genome → DEFAULT_MILESTONES)
- bootstrap.sh: depth=2 (reads templates, generates workflows)
- Spore/OpenClawHub: depth=1 (project.yml only)
Files NOT Found:
- `Desktop/Spore/Spore/Services/StoreManager.swift` — Does not exist
- `Desktop/Spore/Spore/Views/PaywallView.swift` — Does not exist
- `Desktop/OpenClawHub/OpenClawHub/Services/` — Directory structure differs
---
Stage 0 Complete. Grounded in 3,760 lines of source code across 13 files.
Ready for Stage 1: Divergent Exploration (6 paths).
Promotion Decision
Attach run IDs, datasets, metrics, and reproduction commands.
Source Anchor
evo-cube-output/app-fleet-lifecycle-qwen35-cloud/stage0-research.md
Detected Structure
Method · Evaluation · References · Code Anchors · Architecture · is Stage Research