///|
/// 命令行入口:打印《通往宁静之路》的主体状态机。
///
///   moon run cmd/main              文字报告(默认)
///   moon run cmd/main -- report   主体状态机全表(默认面;不带子命令时同此)
///   moon run cmd/main -- mermaid   Mermaid 状态图
///   moon run cmd/main -- dot       Graphviz DOT
///   moon run cmd/main -- genesis   主线(原文顺序)
///   moon run cmd/main -- course    历程(可重入的环节序列)
///   moon run cmd/main -- naming    定名对照表(通用定名 / 原文名)
///   moon run cmd/main -- slots     驱动槽对照表(触发 → 八个槽)
///   moon run cmd/main -- loop      执行契约(位置 × 槽:迁/守/未定/同归/无路)
///   moon run cmd/main -- principle 修订所依据的主体通用性原则
///   moon run cmd/main -- intuition 直觉读法:把裁决备忘录读成背景直觉的仓库(模型整理)
///   moon run cmd/main -- ml       机器学习/DoubleML 与状态机的接口 + 因果实验
///   moon run cmd/main -- ml-export 导出状态机生成的数据集(CSV,前若干行)
///   moon run cmd/main -- multi    多主体行为规则(R1–R12)+ 场景演示
///   moon run cmd/main -- group    群体状态机(模型延伸:成员 → 群体的涌现)
///   moon run cmd/main -- society 双层次社会交往模型(论文自身的理论构造:生活世界/系统/交往)
///   moon run cmd/main -- society-mermaid 上者的 Mermaid 状态图
///   moon run cmd/main -- group-mermaid  群体机的 Mermaid 状态图
///   moon run cmd/main -- nested-mermaid 嵌套视图:11 阶段为复合状态(容器)
///   moon run cmd/main -- journey    行程视图:一次示范行走真正走过的边(局部 + 样式)
///   moon run cmd/main -- viz       三台机汇成一页自包含 HTML(浏览器直开)
///   moon run cmd/main -- evolution 进化:变异空间/适应度目标/闸门/持久化/遗传
///   moon run cmd/main -- cycle    主体循环:位置 × 驱动槽 × 因果反馈(修习与开放都过闸门)
///   moon run cmd/main -- coordinator 科研 Agent 协调器:制品/规划/证据/决策/记忆/署名/运行时
///   moon run cmd/main -- dmlref 与外部参考实现(riantr/moonbit_doubleML)对照
///   moon run cmd/main -- causal   因果诊断(0.163.3 深用):敏感性/多重检验/异质性
///   moon run cmd/main -- audit    自审计(三鉴):主体机当程序读,已知设计 vs 未预期
///   moon run cmd/main -- fleet    自审计(三鉴):群体机与社会机当程序读(无槽无终点)
///   moon run cmd/main -- mutants  迁移表变异网:三鉴有没有牙齿(只读压力测试)
///   moon run cmd/main -- mbti     接口面自审计:审本仓库自己的 .mbti(模型整理)
///   moon run cmd/main -- spec     规格导出:主体机即 JSON 数据(词汇表防漂移,模型整理)
///   moon run cmd/main -- association 未定的软关联(JPDA 面镜像):β 权重 + 歧义度 + 一致性核对(模型整理)
///   moon run cmd/main -- pathsum   泛半环路径和:最短路(tropical)+ 机器性质谓词(模型整理)
///   moon run cmd/main -- algebra   机器代数(Ragel 面):算子映射 + 主线分解 + 最小化(模型整理)
///   moon run cmd/main -- petri     Petri 网面(CarlAdam 镜像):库所/变迁/标识/发火/守恒(模型整理)
///   moon run cmd/main -- aho       回忆结构(Aho-Corasick 面):触发句前缀树 + 失败链(模型整理)
///   moon run cmd/main -- buchi     ω-视角(Büchi 面):非空性/活性潜势/停滞词(模型整理)
///   moon run cmd/main -- all       报告 + 历程 + Mermaid
fn main raise {
  let args = @env.args()
  let format = if args.length() > 1 { args[1] } else { "report" }
  match format {
    "report" => println(@sm.render_report())
    "mermaid" => println(@sm.render_mermaid())
    "dot" => println(@sm.render_dot())
    "genesis" => println(@sm.render_genesis())
    "course" => println(@sm.render_course())
    "naming" => println(@sm.render_naming_table())
    "slots" => println(@sm.render_slots())
    "loop" => println(@sm.render_loop_report())
    "principle" => println(@sm.revision_principle())
    "intuition" => println(@evolution.intuition_principle())
    "ml" => println(@ml.render_ml_report(@ml.default_ml_plan()))
    "ml-export" => println(@ml.csv_preview(@ml.make_dataset(200, 1.5, 7), 12))
    "multi" => println(@multi.render_multi_report())
    "group" => println(@group.render_group_report())
    "society" => println(@society.render_report())
    "society-mermaid" => println(@society.render_mermaid())
    "group-mermaid" => println(@group.render_mermaid())
    "nested-mermaid" => println(@sm.render_mermaid_nested())
    "journey" => println(@viz.journey())
    "viz" => println(@viz.page())
    "evolution" => println(@evolution.render_report())
    "cycle" => println(@evolution.render_cycle_report(@evolution.demo_cycle()))
    "coordinator" => println(@coordinator.render_report())
    "dmlref" => println(@dmlref.render_report())
    "causal" => println(@causal.render_report())
    "audit" => println(@audit.render_report())
    "fleet" => println(@audit.render_fleet_report())
    "mutants" => println(@audit.render_mutation_report())
    "mbti" => println(@audit.render_iface_report(@audit.scan_snapshot()))
    "spec" => println(@sm.spec_json())
    "association" => println(@evolution.render_association_report())
    "pathsum" => println(@sm.render_pathsum_report())
    "algebra" => println(@sm.render_algebra_report())
    "petri" => println(@sm.render_petri_report())
    "aho" => println(@sm.render_aho_report())
    "buchi" => println(@sm.render_buchi_report())
    "all" => {
      println(@sm.render_report())
      println("")
      println("## 历程(可重入的环节序列)")
      println("")
      println(@sm.render_course())
      println("")
      println("## 主线(原文顺序)")
      println("")
      println(@sm.render_genesis())
      println("")
      println("## Mermaid")
      println("")
      println(@sm.render_mermaid())
    }
    // 未知子命令**不再**回退到 report。回退过一次,是本机实测出来的坏处:
    // `moon run cmd/main -- audti`(拼错)会打印整份默认报告并以 0 退出——一个
    // 打错的子命令与一次成功的调用在输出上长得一模一样,而 `.dsh` 的技能文档
    // 正是教 agent 用这个 CLI 取事实的。桥(`cmd/jsoncli`)早就是对未知 kind
    // 报错的(`ok:false` + 合法清单),两个门面不该对同一张面目录给出不同答案。
    // 未知就是未知:报错、非零退出、把合法清单指出来。
    _ => {
      eprintln(
        "未知子命令:\{format}。可用子命令见本文件顶部的用法清单(report/slots/loop/audit/… 共 37 个),或跑 `moon run cmd/main -- report` 取默认报告。",
      )
      abort("unknown subcommand")
    }
  }
}