PowerRoam is the ground proof-of-concept of ComputeFollowsPower: instead of building power out to fixed compute, mobile compute roams to wherever power is cheapest, and the binding constraint is swapped from grid-lead-time to a communication-latency budget. For a batch of latency-tolerant jobs it answers:
On the ground, can dispatching jobs to the cheapest-power node within their latency budget actually beat a fixed grid-anchored site once the movement/comms cost is paid?
It dispatches each job to the cheapest-power node reachable inside its latency budget,
computes the power arbitrage net of movement cost, and emits a posture verdict:
viable, marginal, or blocked.
A three-step transform on one counterfactual (L9: what if the grid scaled at
software speed?):
L1direction reversal — flip "power → compute" to "compute → power": send compute to abundant power instead of waiting for substations.L9scale shift — from a few campuses to a swarm of thousands of roaming nodes (LEO included).L17constraint substitution — the binding constraint becomes the communication-latency budget, not the grid-lead-time.
This is the idea pool's most adventurous entry (pool-best surprise, lowest coherence), so PowerRoam is deliberately the feasibility beachhead — a ground-only, deterministic simulator of the one question everything else depends on.
- Ground first (R1). Nodes carry an
is_leoflag and the policy gateallow_leodefaults false, so LEO nodes are excluded from dispatch until feasibility is proven. Enablingallow_leoadmits them. - Latency-tolerant market only (R2). Every job carries a
latency_budget_ms; a node is a candidate only if reachable within it (theL17gate, made literal). - The economic envelope is the verdict (R4). A reachable job whose power saving does
not clear
min_arbitrage_marginafter movement cost isconditional— relocation doesn't pay — never silently dispatched.
python -m powerroam sample --output examples/scenario_sample.json
python -m powerroam dispatch --input examples/scenario_sample.json
python -m powerroam report --input examples/scenario_sample.json --output examples/powerroam_report.md{
"policy": {
"min_arbitrage_margin": 0.1, "max_latency_ms": 1000.0,
"allow_leo": false, "enforce_capacity": true
},
"nodes": [
{ "node_id": "solar-desert", "power_price": 0.01, "capacity_units": 800.0,
"latency_ms": 120.0, "move_cost_per_unit": 0.008, "is_leo": false }
],
"jobs": [
{ "job_id": "train-batch", "compute_units": 200.0,
"latency_budget_ms": 500.0, "baseline_price": 0.05 }
]
}for each job (in input order):
candidates = nodes where:
not (is_leo and not allow_leo) # R1 LEO gate
latency_ms <= min(latency_budget_ms, max_latency) # R2 / L17 latency gate
capacity_units >= compute_units # finite supply
if no candidate -> blocked (leo_disabled / latency_exceeded / no_capacity)
else best = cheapest compute_units × (power_price + move_cost_per_unit) # tie-break by node_id
net_saving = compute_units × baseline_price − best_cost
margin = net_saving / baseline_cost
margin < min_arbitrage_margin -> conditional (margin_too_thin) # R4 envelope fails
otherwise -> realizable (dispatched; capacity consumed)
The swarm posture aggregates:
- jobs dispatched and aggregate net saving > 0 →
viable(envelope holds) - jobs reachable but the arbitrage doesn't pay →
marginal - nothing reachable →
blocked(exit 1)
An unknown field, a negative magnitude, or a non-positive latency budget is a blocking issue with a nonzero exit, never a stack trace.
PowerRoam produces a ground-PoC dispatch plan and economic-envelope verdict under a declared policy, not a production scheduler, an SLA commitment, or an orbital-deployment plan. It simulates and flags; it does not run jobs.
PowerRoam is the concrete feasibility beachhead of IDEA-001 (Compute Follows Power:
Orbital Load-Roaming Swarm — CIX rank 1, pool-best surprise), reached via the
L1_DirectionReversal → L9_ScaleShift → L17_ConstraintSubstitute lens stack
(CIX-20260607-001 ← IDX-20260607-001 ← TCX-20260606-001). It is a sibling of
WasteStack,
FailureFutures,
RoboTrace,
InferMesh,
CertMesh,
SettleMesh,
SpendMesh,
ReleaseMesh,
ClimateMesh,
SovMesh,
FlowMesh, and
SignalMesh. It is the directional inverse of
WasteStack (fixed-site utilization ↔ roaming), so a roaming node can become a tenant of
a WasteStack energized site.
MIT — see LICENSE.