///|
fn main raise {
let codec = @ec.Codec::new(3, 2)
let encoded = codec.encode_all([b"block-a", b"block-b", b"block-c"])
let plan = codec.plan_costed([true, true, true, true, true], [
100L, 80L, 2L, 1L, 1L,
])
let fetched : Array[Bytes?] = Array::make(5, None)
for i in plan.plan().selected_indices() {
fetched[i] = Some(encoded[i])
}
assert_eq(codec.reconstruct_selected(fetched, [0])[0], b"block-a")
let risks = codec.assess_domains([true, true, true, true, false], [
"rack-a", "rack-a", "rack-b", "rack-c", "rack-c",
])
assert_false(risks[0].recoverable())
println(
"Cost-aware fetch reconstructs the requested block; correlated rack loss exposes insufficient surviving shards",
)
}