# MoonConfig 项目申报草稿

状态：2026-10-02 的 v0.2 参赛准备稿，尚未报名或提交验收。完整冲突解决流程、独立消费验证、GitHub 源码上传及远程 CI 已完成；Mooncakes 发布尚未完成。验证证据见 [远程运行记录](ci-verification.md)。不认为仅凭本稿已满足初审要求。

- 项目名称：MoonConfig
- 作者账号：forey217
- 开源仓库：https://github.com/forey217/moonconfig
- 许可：MIT；上游测试数据另按 Apache-2.0 保留许可
- 类别建议：开发者工具 / MoonBit 生态库（以实际报名选项为准）

## 项目简介

MoonConfig 是使用 MoonBit 编写的 JSON 配置三方合并与冲突审查工具。对象的独立字段修改自动合并，同字段的不同修改逐项选择原值、某一方、删除或自定义值；确认后生成最终配置和受 base 校验保护的 JSON Patch，并由核心回放核对结果。CLI、网页及独立消费模块共用公开 API，保留大整数精度。

## 使用场景

主场景：两个人基于同一版本修改服务 JSON 配置。当前实现覆盖输入、合并、冲突候选、逐项决策、最终配置、校验补丁导出和回放。旧 base 会被拒绝；CI 场景使用退出码阻止未解决冲突或非法决策。固定的样例、运行命令和预期结果见 [完整流程](workflow.md)。

项目当前没有真实生产部署或外部用户采用数据，自带 CLI/网页仅作为功能演示。

## 生态对照与增量目标

生态已有 [tiye/recollect](https://mooncakes.io/docs/tiye/recollect) 等结构化 JSON diff/patch 工具。MoonConfig 不以 JSON 比较领域空白作为立项依据，拟聚焦基于共同版本的配置三方合并、明确的删除/null 冲突及完整审查输出。公开文档能力对照不构成竞品全面审计或性能比较。

完整冲突解决接口已实现，独立消费模块使用公开接口从本地工作区编译运行。Mooncakes 包安装和外部采用尚未验证。进度与验收证据见 [初审改进计划](review-plan.md)。

## 技术实现

使用 MoonBit 标准库 JSON，独立实现路径处理、六种补丁操作、十进制数值比较和递归三方合并。核心已通过 JavaScript、WebAssembly GC 与原生后端的远程测试；浏览器展示与 Node 文件输入输出为薄层适配。

## 当前完成情况

- MoonBit 库及 resolve、guarded_diff 等公开接口。
- CLI：diff、apply、merge、resolve、get，明确区分错误与冲突退出码，可直接导出最终配置或补丁。
- 浏览器完整审查流程，含逐项决策、非法输入拒绝、最终配置与补丁下载。
- 150 个工作区 MoonBit 测试，其中 108 个上游用例、40 个项目测试和 2 个独立消费测试；另有 3 个真实 CLI 进程测试。
- 独立消费模块、CI 场景模板和 100/1000/10000 字段的本机测量。
- 中英文说明、设计记录、MIT 许可及已通过的 GitHub Actions 验证。

## 三分钟演示脚本

1. 打开本地演示，展示独立修改：端口与日志等级同时保留。
2. 切换同字段冲突：定位 /server/port，选择自定义 9443，确认后展示最终配置与校验补丁。
3. 切换删除/null 和大整数示例，展示明确的 presence 和精确数字。
4. 用 CLI 将补丁应用到 base，再演示变化后的 base 被拒绝。
5. 运行独立消费模块，展示公开 API 接入与 CI 流程测试结果。

## 边界与计划

v0.2 数组整体处理，根删除不支持；不宣称完整 RFC 认证、最短补丁、外部采用或生产部署。待完成项为 Mooncakes 发布及干净环境安装、演示视频与正式报名。原生后端测试已在 Linux CI 通过；未验证真实生产负载。

## AI 辅助声明

实现、测试、演示与文档使用 AI 辅助生成和审查。参赛者需要阅读代码、理解合并语义、核实赛事要求并承担提交及维护责任。不得把当前草稿当作已经通过赛事审核的材料。
