///|
fn main raise {
  let before = @disk.Snapshot::new("demo-workspace", 1000000L, [
    @disk.Entry::new("src", Directory, 0L, 900000L),
    @disk.Entry::new("src/main.mbt", Regular, 4096L, 900000L),
    @disk.Entry::new("assets", Directory, 0L, 900000L),
    @disk.Entry::new("assets/logo.png", Regular, 65536L, 900000L),
    @disk.Entry::new("_build", Directory, 0L, 900000L),
  ])
  let after = @disk.Snapshot::new("demo-workspace", 20000000L, [
    @disk.Entry::new("src", Directory, 0L, 19000000L),
    @disk.Entry::new("src/main.mbt", Regular, 6144L, 19000000L),
    @disk.Entry::new("assets", Directory, 0L, 900000L),
    @disk.Entry::new("assets/logo.png", Regular, 65536L, 900000L),
    @disk.Entry::new("_build", Directory, 0L, 19000000L),
    @disk.Entry::new("_build/cache.bin", Regular, 1048576L, 19000000L),
  ])

  println("=== 1. Analyze a snapshot ===")
  println(@disk.render_summary(after, limit=3))

  println("\n=== 2. Explain workspace growth ===")
  let diff = @disk.compare_snapshots(before, after)
  println(@disk.render_diff_summary(diff, limit=5))

  println("\n=== 3. Rank directory growth hotspots ===")
  println(
    @disk.render_directory_hotspots(
      @disk.directory_hotspots(diff, depth=1),
      limit=5,
    ),
  )

  println("\n=== 4. Compare storage composition ===")
  println(
    @disk.render_composition_drift(
      @disk.compare_composition(before, after, Category),
      limit=5,
    ),
  )

  println("\n=== 5. Enforce a growth policy ===")
  let growth_policy = @disk.GrowthPolicy::{
    format_version: 1,
    maximum_net_growth_bytes: 2097152L,
    maximum_added_files: 10,
    maximum_removed_files: 10,
    maximum_changed_files: 10,
    maximum_single_file_growth_bytes: 2097152L,
    protected_patterns: [],
  }
  println(
    @disk.render_growth_policy_result(
      @disk.evaluate_growth_policy(before, after, growth_policy),
    ),
  )

  println("\n=== 6. Forecast storage growth ===")
  let history = @disk.append_history_snapshot(
    @disk.history_from_snapshot(before),
    after,
  )
  println(
    @disk.render_storage_forecast(
      @disk.forecast_storage(history, 7),
      capacity=Some(@disk.estimate_capacity(history, 5242880L)),
    ),
  )

  println("\n=== 7. Build a reviewable cleanup plan ===")
  let candidates = @disk.evaluate_rules(
    @disk.default_rule_set().rules,
    after,
    after.created_at,
  )
  let plan = @disk.build_cleanup_plan(
    after,
    candidates,
    "demo-quarantine",
    after.created_at,
  )
  println(@disk.render_plan(plan))

  println("\nDemo complete: no real files were read, moved, or deleted.")
}