YASS results / UC5 — General Failure (EDFS only)
Use Case

UC5 — General Failure (EDFS only)

Abstract

Twenty per cent of the constellation produces a small, finite batch of images each. The whole constellation — both the producing satellites and every ground station — is hit by a continuous stream of non-terminal hardware faults (no Destroy). We measure how long it takes for every produced image to reach at least one ground station, and check whether EDFS is eventually able to deliver them all in spite of the fault stream. EDFS only; TUS is out of scope here.

UC5 sits between UC2 (every sat produces one file, faults active) and UC4 (one terminal failure on one producer). It's the long-duration stress test of EDFS's eventual consistency under sustained but non-catastrophic degradation.

Relationship to UC2. UC5 is essentially the same experiment as UC2 — the same constellation, the same continuous stream of non-terminal hardware faults (Destroy is excluded in both), measuring the same time-to-ground KPI — only with a different parametrization: a sparser, time-distributed workload (only ~20% of satellites produce, each a small finite batch of images over time, instead of every satellite producing one file at t=0) and a stricter 100% completeness bar. The one practical consequence worth calling out is that UC5 is EDFS-only, so there is nothing to compare against: there is no point-to-point (TUS) baseline here, because the eventual whole-set convergence under sustained relay has no point-to-point analogue (TUS would simply lose files under the fault stream). UC5 is therefore an absolute characterization of EDFS across the RF axis rather than a head-to-head.

Success Condition

The run ends successfully once a single ground station holds every image produced in the run.

Detailed description

Out of the sat_count satellites in the constellation, exactly 20% are designated producers. Each producer's agent writes N=5 images spaced by IMAGE_INTERVAL (default 2m), then exits. The total number of distinct files in flight per run is therefore floor(0.2 * sat_count) * 5 — finite and countable, as required.

While the run is in progress, the operator stamps a per-fsNode random fault schedule on every fsNode (producers, relays and ground stations alike). Allowed fault types: NetworkBandwidthReduced, NetworkFailure, DiskFull, DiskFailure. Destroy is explicitly excluded — the whole point of UC5 is to study eventual delivery under transient degradation; a destroyed producer of a file with RF=1 (no copies yet) would be UC4's loss-mode and would muddy the metric.

The seven ESTRACK ground stations receive on all files (their agent does not exit on first RECEIVED — it keeps logging until the run ends).

The run ends when (a) every file has been received by at least one GS, or (b) maxDuration fires. Both outcomes are reportable.

Main goal

Show that EDFS eventually delivers every file under sustained non-catastrophic faults, and quantify "how long is eventual?":

KPI:

Parameters

Parameter Values Notes
engine edfs only TUS would simply lose files under faults; out of scope.
sat_count 1, 2, 8, 21 Capped at 21 so every run fits a small (single-node-class) test cluster; the large-constellation points (100 / 200) are out of scope for this sized-down sweep. sat_count=1 degenerates to "one producer, no relays" — a sanity-only data point.
producer_fraction fixed at 20% producers = max(1, floor(0.2 * sat_count)). For sat_count=1/2 the floor gives 1; for sat_count=8 it's 1 (floor(1.6)=1); for sat_count=21 it's 4.
files_per_producer 5 Bounded, so we can compute completion rate cleanly.
image_interval 2m Spreads file births in time so the network has work to do throughout the run.
file_size 32M Small enough that several files can be in flight simultaneously without strangling the bandwidth model.
RF 1, 3, 5 The headline EDFS knob.
priority default Priority handling is UC3's question, not UC5's.
gs_count fixed at 7 (ESTRACK)
fault_intensity mean interval 5m, jitter 50%, duration 30-60s Same recipe as UC2, encoded directly in each behaviour's hardwareEvents.schedule with a per-run seed.
max_duration 8h Long-duration stress test by design.

Assumptions

Additional metrics

Beyond yass_file_delivery_seconds:

Charts

Delivery success (% of produced files reaching a GA) by constellation size (EDFS, mean over RF) (white-background copy: charts/uc5_delivery_by_n_light.png)
Delivery success (% of produced files reaching a GA) by constellation size (EDFS, mean over RF) (white-background copy: charts/uc5_delivery_by_n_light.png)
Delivery success (% of produced files reaching a GA) by replication factor (EDFS, mean over constellation size) (white-background copy: charts/uc5_delivery_by_rf_light.png)
Delivery success (% of produced files reaching a GA) by replication factor (EDFS, mean over constellation size) (white-background copy: charts/uc5_delivery_by_rf_light.png)

Variants (8)

variantenginesatRFproducedfiles→GSall?lastGS(s)statusdelivered %
uc5-edfs-n01-rf1 edfs1151no570 Success 100%
uc5-edfs-n02-rf1 edfs2141no508 Failed 80%
uc5-edfs-n08-rf1 edfs8151no411 Success 100%
uc5-edfs-n08-rf3 edfs8341no360 Failed 80%
uc5-edfs-n08-rf5 edfs8541no365 Failed 80%
uc5-edfs-n21-rf1 edfs211172no113 Failed 15%
uc5-edfs-n21-rf3 edfs213164no518 Failed 80%
uc5-edfs-n21-rf5 edfs215174no703 Failed 50%