///|
/// Telemetry replay must know which device metadata was used in an earlier
/// report and which metadata field operators now believe applied then.
fn main raise {
  let month = try! @temporal.Span::new(0L, 30L)
  let base = try! @temporal.Ledger::new()
  let initial = try! base.commit(1L, [
    @temporal.Change::put("sensor/7/factor", month, "1.00"),
    @temporal.Change::put("sensor/7/site", month, "line-a"),
  ])
  let report_day = 12L
  let reported = initial.snapshot(report_day, 1L)
  assert_eq(reported.length(), 2)
  println("Initial report used factor 1.00 at line-a")

  // The operator learns on intake step 5 that days [10, 15) had a different
  // calibration, then learns on step 7 that the device moved on day 20.
  let calibrated = try! initial.commit(5L, [
    @temporal.Change::put(
      "sensor/7/factor",
      try! @temporal.Span::new(10L, 15L),
      "1.05",
    ),
  ])
  let moved = try! calibrated.commit(7L, [
    @temporal.Change::put(
      "sensor/7/site",
      try! @temporal.Span::new(20L, 30L),
      "line-b",
    ),
  ])
  assert_eq(moved.get("sensor/7/factor", report_day, 1L), Some("1.00"))
  assert_eq(moved.get("sensor/7/factor", report_day, 7L), Some("1.05"))
  assert_eq(moved.get("sensor/7/site", 25L, 7L), Some("line-b"))
  println("Corrected replay uses factor 1.05 for day 12")

  let factor_coverage = try! moved.coverage("sensor/7/factor", month, 7L)
  assert_eq(factor_coverage.assigned(), 30L)
  assert_eq(factor_coverage.values().length(), 2)
  assert_eq(factor_coverage.values()[0].duration(), 25L)
  assert_eq(factor_coverage.values()[1].duration(), 5L)
  println("Factor 1.00 covers 25 days; factor 1.05 covers 5 days")

  let combined = try! moved.snapshot_timeline(
    ["sensor/7/factor", "sensor/7/site"],
    month,
    7L,
  )
  assert_eq(combined.length(), 4)
  assert_eq(combined[1].value("sensor/7/factor"), Some("1.05"))
  assert_eq(combined[3].value("sensor/7/site"), Some("line-b"))
  println("Aligned metadata timeline contains four change-point slices")

  // A downstream consumer can export only this device's calibration history.
  let projected = moved.select_keys(["sensor/7/factor"])
  assert_eq(projected.history_count("sensor/7/site"), 0)
  assert_eq(projected.history_count("sensor/7/factor"), 2)
  println("Calibration-only archive omits unrelated site history")
}