///|
fn main raise {
  let before : Array[@rules.Rule] = [
    {
      id: "record",
      record: Some("service:requests"),
      expr: "sum(rate(requests_total[5m]))",
      context: "",
    },
    {
      id: "alert",
      record: None,
      expr: "service:requests > 100",
      context: "severity=warning",
    },
  ]
  let after : Array[@rules.Rule] = [
    { ..before[0], record: Some("service:requests_v2"), },
    before[1],
  ]
  let impact = @rules.compare(before, after)
  assert_eq(impact.changed, ["record"])
  assert_eq(impact.affected, ["record", "alert"])
  assert_eq(impact.uncertain, [])
  println(impact.affected.to_json().stringify())
}