///|
/// One correction has different prior claims over its valid span. Evidence
/// includes an unchanged value with changed provenance, useful for data review.
fn main raise {
let first = try! @temporal.Ledger::new().commit(10L, [
@temporal.Change::put(
"calibration/sensor",
try! @temporal.Span::new(0L, 10L),
"gain=1.1",
),
@temporal.Change::delete(
"calibration/sensor",
try! @temporal.Span::new(10L, 20L),
),
])
let corrected = first.commit(20L, [
@temporal.Change::put(
"calibration/sensor",
try! @temporal.Span::new(0L, 30L),
"gain=1.1",
),
])
let fragments = corrected.supersession_fragments(2)
assert_eq(fragments.length(), 3)
assert_false(fragments[0].value_changed())
assert_true(fragments[1].previous().unwrap().value() is None)
assert_true(fragments[2].previous() is None)
for fragment in fragments {
println(fragment.to_json().stringify())
}
assert_eq(corrected.get("calibration/sensor", 15L, 10L), None)
assert_eq(corrected.get("calibration/sensor", 15L, 20L), Some("gain=1.1"))
println(
"Correction evidence retains assigned, withdrawn and never-known prior states",
)
}