///|
/// Three complete downstream workflows using only the public API.
fn main {
  try {
    // Packaging: read a developer's Info.plist, patch it, emit binary artifact.
    let source = @moonplist.decode_xml(
      "CFBundleIdentifierorg.example.appCFBundleVersion1",
    )
    let updated = @moonplist.apply_patch(source, [
      @moonplist.Test("/CFBundleVersion", @moonplist.Text("1")),
      @moonplist.Replace("/CFBundleVersion", @moonplist.Text("2")),
      @moonplist.Add("/LSUIElement", @moonplist.Boolean(true)),
    ])
    let artifact = @moonplist.encode(updated, @moonplist.Binary)
    assert_true(
      @moonplist.lookup(@moonplist.decode(artifact), "/CFBundleVersion") ==
      @moonplist.Text("2"),
    )
    println("packaging: binary artifact verified")

    // Configuration interchange: data/date are preserved, not JSON-encoded strings.
    let config = @moonplist.Dict([
      ("payload", @moonplist.Data(b"\x00\xff")),
      (
        "created",
        @moonplist.Date(@moonplist.parse_date("2024-02-29T12:30:59Z")),
      ),
    ])
    let binary = @moonplist.encode(config, @moonplist.Binary)
    let xml = @moonplist.convert(binary, @moonplist.Xml)
    assert_true(@moonplist.equivalent(@moonplist.decode(xml), config))
    println("interchange: typed data and UTC date preserved")

    // Inspection/change planning: binary UID is queryable but never silently lost.
    let indexed = @moonplist.Dict([
      ("objects", @moonplist.List([@moonplist.Uid(42UL)])),
    ])
    let inspected = @moonplist.decode(
      @moonplist.encode(indexed, @moonplist.Binary),
    )
    assert_true(
      @moonplist.lookup(inspected, "/objects/0") == @moonplist.Uid(42UL),
    )
    let target = @moonplist.insert(inspected, "/name", @moonplist.Text("index"))
    let plan = @moonplist.diff(inspected, target)
    assert_true(
      @moonplist.equivalent(@moonplist.apply_patch(inspected, plan), target),
    )
    assert_true(
      try {
        ignore(@moonplist.encode(target, @moonplist.Xml))
        false
      } catch {
        _ => true
      },
    )
    println(
      "inspection: UID query, semantic diff, explicit XML rejection verified",
    )
  } catch {
    _ => abort("workflow failed")
  }
}