chore: merge GitLink default branch Conflicts:README.md
chore: merge GitLink default branch
面向 MoonBit 的契约式校验与状态不变量基础库。
MoonInvariantKit 解决的是库作者和工具开发者经常遇到的基础问题:输入值是否在合法范围内,字符串是否为空,集合是否重复,序列是否单调,状态机定义是否存在未知状态或非确定性转移。项目把这些校验沉淀为 MoonBit 原生 API,并提供 JSON/Markdown 报告,方便 CLI、CI、文档和上层工具复用。
很多项目会把校验逻辑散落在业务代码里,既难复用,也难统一输出错误报告。MoonInvariantKit 提供小而清晰的契约式检查能力,让数据模型、配置文件、状态机和公共 API 都可以用同一套结果对象表达“通过、警告、失败和证据”。
Severity
CheckResult
ContractReport
InvariantSuite
let report = @inv.order_contract("order-1001", 2480, ["paid", "new"]) println(report.summary()) println(report.to_json())
moon check --target all moon test --target wasm moon test --target wasm-gc moon run cmd/main
MoonInvariantKit 不是 schema 解析器、不是测试框架、不是策略引擎。它聚焦可嵌入的运行时契约检查、状态机一致性校验和结构化报告输出,可作为其他 MoonBit 库的底层质量组件。
当前不解析 JSON Schema、OpenAPI 或外部 DSL,不做随机化测试,也不替代完整测试框架。后续可以扩展字段路径、嵌套对象校验、更多状态机分析和报告格式。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MoonInvariantKit
面向 MoonBit 的契约式校验与状态不变量基础库。
MoonInvariantKit 解决的是库作者和工具开发者经常遇到的基础问题:输入值是否在合法范围内,字符串是否为空,集合是否重复,序列是否单调,状态机定义是否存在未知状态或非确定性转移。项目把这些校验沉淀为 MoonBit 原生 API,并提供 JSON/Markdown 报告,方便 CLI、CI、文档和上层工具复用。
解决什么问题
很多项目会把校验逻辑散落在业务代码里,既难复用,也难统一输出错误报告。MoonInvariantKit 提供小而清晰的契约式检查能力,让数据模型、配置文件、状态机和公共 API 都可以用同一套结果对象表达“通过、警告、失败和证据”。
核心能力
Severity:信息、警告、错误三级严重度。CheckResult:单条检查结果。ContractReport:聚合报告、失败计数、最高严重度和摘要。InvariantSuite:组合检查集合。最小示例
运行
与已有项目的区别
MoonInvariantKit 不是 schema 解析器、不是测试框架、不是策略引擎。它聚焦可嵌入的运行时契约检查、状态机一致性校验和结构化报告输出,可作为其他 MoonBit 库的底层质量组件。
项目边界
当前不解析 JSON Schema、OpenAPI 或外部 DSL,不做随机化测试,也不替代完整测试框架。后续可以扩展字段路径、嵌套对象校验、更多状态机分析和报告格式。