Open source v0.4.3 The Primer Starlink-class paths

The language that treats Starlink like Starlink.

Classic congestion control assumes a stable path and a stable RTT. Low Earth orbit has neither. VELA makes path epochs, mobility loss, and statistical contracts first-class, so the next controller can keep more of the bandwidth you already pay for.

The break

Your dish is not a fiber drop.

Starlink-class links hand over every 12 to 60 seconds. RTT jumps tens of milliseconds. Capacity flickers. Packets vanish because a beam moved, not because a buffer filled. CUBIC treats that as congestion and collapses. BBR keeps a stale min-RTT across the hop and sizes the window for a path that no longer exists.

Handover

A new satellite, a new delay, a new bottleneck. Last epoch's samples are lies.

Mobility loss

A burst with no queue is not a full buffer. Recovery should hold, not cut.

Lucky seeds

One orbit can flatter a controller. A win that cannot survive five is not a win.

The language

Samples die with their epoch.

VELA is not prettier Python. It is a type system and a compose kernel for LEO controllers. Reading a min-RTT after a reconfiguration is a type error. Loss is a closed taxonomy. Dual-gate claims are contracts the eval harness actually runs. The public flagship compose is Reach, observe-only. It names LeoAware. It does not write a cruise integrator.

  • First-class path epochs and automatic sample invalidation
  • Mobility vs congestive vs unknown, with different recovery
  • No-oracle: the endpoint cannot see the next hop
  • Compose lists so a new chase cannot silently double-cut the window
  • Multi-seed dual-gate contracts, optional Jain on leo_multi
lang vela 0.1

controller Reach {
  posture observe
  compose Detect + SoftReprobe + Calendar + IntervalBw
        + WriteBudget + DualGateGuard

  signals:
    epoch: Epoch
    rtt: Sample<ms> @ epoch
    bw: Interval<bps> @ epoch
    delay_ratio: Ratio
    p_ho: Prob

  on Reconfig(e) match e {
    RttHop => {
      invalidate min_rtt, bw
      enter Reprobe(cut: 0.58, explore: 1.15 * rtt, fill: 1.85 * rtt)
    }
    Flicker => {
      invalidate min_rtt, bw
      enter Reprobe(cut: 0.58, explore: 1.15 * rtt, fill: 1.85 * rtt)
    }
  }

  on Loss(k) match k {
    Mobility   => hold
    Congestive => cut(0.72)
    Unknown    => require delay_ratio > 1.35
                  then cut(0.72) else hold
  }
}

contract DualGate vs BBRv3approx {
  seeds = [13, 7, 42, 99, 123]
  scenario leo_fast_ho duration 90s
  assert mean(goodput) >= baseline.goodput
  assert mean(p95)     <= baseline.p95
  assert terrestrial.goodput >= 77 Mbps
}

The Primer

Walk Reach without a dish.

Five beats. Same flagship compose. This tab is a reading primer, not an eval. Last beat stays in this browser. A shared ?beat= link wins. Numbers that would look like a win stay on OrbitStack progress and in results/eval_*.json. The 0.58 cut is load-bearing. Do not soften it here.

Samples die with their epoch.

rtt: Sample<ms> @ epoch is not a float. After a hop, last epoch's min-RTT is a type error. That is the whole point of VELA.

signals:
  epoch: Epoch
  rtt: Sample<ms> @ epoch
  bw: Interval<bps> @ epoch
Epoch
One sky. Samples are stamped to it. Reconfig starts a new one.
RttHop / Flicker
Both invalidate min_rtt and bw, then Reprobe at cut 0.58. Flicker is not a missing fill.
Mobility loss
Hold. A burst with no queue is not CUBIC's collapse.
Observe-only
Reach names LeoAware. It does not write a cruise integrator. Closed writes stay closed.

Honesty

Open source. Not a firmware flash.

VELA is MIT open source at github.com/Pitchfork-and-Torch/vela (v0.4.3). It does not flash your dish. It does not promise plus-N megabits on a particular terminal tonight. The running, measured congestion controller on this network is OrbitStack / LeoAware. VELA exists so that controller can be composed, checked, and extended for space internet without unnamed flags or lying numbers.

Optional path hints (ASCENT-D) stay fail-closed. If the hint is missing or corrupt, the endpoint controller is still defined. That is the only story that matches Starlink today.

Questions

Will this make my Starlink faster today?
Not as a kit update. VELA is how the next controller gets written. OrbitStack is the live science surface.
Is the language open source?
Yes. MIT at github.com/Pitchfork-and-Torch/vela. v0.4.3: no-oracle, affine samples, WriteCap split/borrow, hybrid automata.
Does this need SpaceX cooperation?
No. Endpoint-only is the default. Hints are optional and fail-closed.
What is The Primer?
A five-beat walkthrough of Reach on this page. Epoch types, reconfig, typed loss, observe-only compose, dual-gate contract. It does not run seeds in the browser.