///|
fn main raise {
  let rules = [
    @runner.Rule::{ id: "adult", rule: { ">=": [{ "var": "age" }, 18] }, },
    @runner.Rule::{
      id: "discount",
      rule: { "if": [{ "var": "member" }, 10, 0] },
    },
    @runner.Rule::{ id: "invalid", rule: { "unknown_operation": 1 }, },
    @runner.Rule::{ id: "name", rule: { "var": "name" }, },
  ]
  let report = @runner.execute(
    rules,
    { "age": 25, "member": true, "name": "Ada" },
    max_steps_per_rule=100,
    max_total_steps=1000,
  )
  assert_eq(report.successful, 3)
  assert_eq(report.failed, 1)
  println(report.to_json().stringify())
}