swactor/crates/simulation/scenarios/topology/partition_heal.toml
Zachery Aaron Shores-Chmielewski f7bd49c4b8 feat(sim): add swim host adapter and network model
Restructures the crate to the SIM_SPEC six-component model (engine, network, host,
bundle, evaluator, scenario) and relocates SIM_SPEC.md into the crate. Adds the SWIM
host adapter wrapping production distribution::swim::SwimNode, the swim codec, a
virtual network model, the scenario loader, an assertion evaluator, deterministic RNG,
property-based tests, and reproduction/smoke/topology scenario TOMLs; drops the
detector/divergence/lint/postproc/spec/runtime modules and prior spec docs.


Signed-off-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
2026-05-24 13:05:11 +04:00

71 lines
1.4 KiB
TOML

# Partition the cluster into {a} | {b, c} for 5s, then heal. Asserts the
# cluster converges back to all-Alive within a bounded window.
# Expected verdict: pass-now.
name = "partition_heal"
seed = 7
duration_ns = 90_000_000_000
[default_tick]
period_ns = 200_000_000
[default_link]
latency_ns = 5_000_000
jitter_stddev_ns = 1_000_000
loss_prob_ppm = 0
reorder_prob_ppm = 0
bandwidth_bps = 100_000_000
cold_dial_penalty_ns = 50_000_000
cache_warm_after_ns = 100_000_000
cache_invalidate_after_idle_ns = 30_000_000_000
[[peers]]
id = "a"
kind = "swim"
initial_state = "alive"
kind_config = { probe_interval_ns = 1_000_000_000, suspicion_timeout_ns = 5_000_000_000 }
[[peers]]
id = "b"
kind = "swim"
initial_state = "alive"
kind_config = { probe_interval_ns = 1_000_000_000, suspicion_timeout_ns = 5_000_000_000 }
[[peers]]
id = "c"
kind = "swim"
initial_state = "alive"
kind_config = { probe_interval_ns = 1_000_000_000, suspicion_timeout_ns = 5_000_000_000 }
[[links]]
from = "a"
to = "b"
[[links]]
from = "b"
to = "a"
[[links]]
from = "a"
to = "c"
[[links]]
from = "c"
to = "a"
[[links]]
from = "b"
to = "c"
[[links]]
from = "c"
to = "b"
[[mutations]]
kind = "partition"
at_ns = 10_000_000_000
peers_a = ["a"]
peers_b = ["b", "c"]
[[mutations]]
kind = "heal"
at_ns = 30_000_000_000
[[assertions]]
kind = "convergence_after"
after_ns = 30_000_000_000
within_ns = 30_000_000_000
peers = ["a", "b", "c"]