///|
fn main {
  match @moonbtkit.load_fixture("mission_selector") {
    Ok(doc) => {
      let engine = @moonbtkit.new_engine(doc.tree, blackboard=doc.blackboard)
      match engine.run_until_done(max_ticks=8) {
        Ok(_) => {
          println("DOT")
          println(
            @moonbtkit.tree_to_dot(
              doc.tree,
              options=@moonbtkit.compact_visual_options(),
            ),
          )
          println("")
          println("MERMAID")
          println(
            @moonbtkit.tree_to_mermaid(
              doc.tree,
              options=@moonbtkit.compact_visual_options(),
            ),
          )
          println("")
          println("COVERAGE")
          println(
            @moonbtkit.coverage_from_trace(doc.tree, engine.trace).summary(),
          )
          println("")
          println("PROFILE")
          println(
            @moonbtkit.profile_trace("mission_selector", engine.trace).summary(),
          )
          println("")
          println("MATRIX")
          println(@moonbtkit.fixture_matrix_report().summary())
          println("")
          println("AUDIT")
          match @moonbtkit.audit_fixture("mission_selector") {
            Ok(report) => println(report.summary())
            Err(err) => println(err.message())
          }
          println("")
          println("ASSET IDENTITY")
          match @moonbtkit.inspect_asset(@moonbtkit.mission_selector_dsl()) {
            Ok(identity) => println(identity.summary())
            Err(err) => println(err.message())
          }
          println("")
          println("ASSET DIFF")
          match
            @moonbtkit.diff_dsl(
              @moonbtkit.patrol_dsl(),
              @moonbtkit.mission_selector_dsl(),
            ) {
            Ok(diff) => println(diff.summary())
            Err(err) => println(err.message())
          }
          println("")
          println("REGRESSION BASELINE")
          match
            @moonbtkit.capture_baseline(
              "mission_selector",
              @moonbtkit.mission_selector_dsl(),
            ) {
            Ok(baseline) =>
              match
                @moonbtkit.verify_baseline(
                  @moonbtkit.mission_selector_dsl(),
                  baseline,
                ) {
                Ok(report) => println(report.summary())
                Err(err) => println(err.message())
              }
            Err(err) => println(err.message())
          }
          println("")
          println("ASSET CATALOG")
          println(@moonbtkit.audit_fixture_assets().summary())
        }
        Err(err) => println("run error: " + err.message())
      }
    }
    Err(err) => println("fixture error: " + err.message())
  }
}