# 同类项目披露与关系说明

本文件是申报材料的必读附件，用于回答初审最常提出的问题：**"社区是否已有同类项目？本项目与它们是什么关系？"**

八月赛季多份驳回通知的直接原因就是这一点：

- "社区已经有非常多类似的项目了（使用 check, audit 等关键字进行搜索）"
- "与近期维护的 constraint-lens 核心功能实质重叠，申报书未披露该关系"
- "与已维护的 Mooncakes 审查与来源证明工具……功能重叠，申报书未说明扩展关系"
- "核心选题与近一个月内可用的 Mooncakes robots 项目重叠，当前申报未说明扩展关系"

因此本项目主动披露检索结果、逐项说明边界，而不是等评委来搜。

## 检索方法与时间

- 时间：2026-10-23。
- 渠道：mooncakes.io 文档与搜索、GitHub 仓库搜索、MoonBit 社区站点。
- 关键词：`window`、`watermark`、`event-time`、`streaming`、`session window`、`retraction`、`changelog`、`correction`、`CEP`、`late event`。

## 检出到的同类项目

### 1. Oyc996/moonwatermarkkit（0.2.0，Apache-2.0）

- **做什么**：事件时间水位线、乱序容忍、迟到分类（OnTime / Late / TooLate）、窗口分配原语、流审计摘要。`WatermarkState` 是不可变值，检查点由调用方自行持久化。
- **不做什么**：公开文档未提供有状态窗口内容、窗口聚合、撤回/替换、会话拆分、changelog。
- **与本项目的关系**：**同类底层原语，但不是同一层**。TideWeave 自行实现窗口分配与水位推进（不依赖该包，也无代码复用）。差异在于 TideWeave 维护有状态窗口，并把"修正"作为核心：撤回后重建边界与成员、原子多事件事务、终结保护、before-image 校验。
- **选择建议**：只需要"这条事件算 OnTime 还是 Late、落到哪个窗口"时，用 moonwatermarkkit 更轻；需要"已记录的窗口被更正后仍保持一致"时用 TideWeave。

### 2. zmjknn/moon-stream-quality（0.2.2）

- **做什么**：流式数据质量规则引擎，含 Schema 校验、规则评估、事件时间窗口与水位线、迟到策略（Drop / SideOutput / Accept）、检查点、死信队列、重放计划、健康报告。
- **不做什么**：公开文档未声明撤回/替换、会话拆分、原子修正与 before/after changelog；其目标是"数据质量"而非"事实修正"。
- **与本项目的关系**：**目标不同，交集仅在"迟到分类 + 检查点"**。TideWeave 不解析 Schema、不做规则编排、不做死信队列；它关注单条事实被更正后窗口如何一致重建。
- **选择建议**：需要字段级质量规则与告警，用 moon-stream-quality；需要修正语义，用 TideWeave。

### 3. yhsrtty/moon-distinct-sketch（0.2.1，Apache-2.0）

- **做什么**：概率 sketch（HLL / CountMin / TopK / MinHash / 分位），带上有界窗口、事件时间聚合、水位线、检查点与合并规划。
- **不做什么**：近似统计，不保留成员身份，公开文档未声明撤回/精确重建。
- **与本项目的关系**：**正交**。TideWeave 做精确的成员级聚合与修正，不做近似 sketch；两者可以组合（用 TideWeave 修正精确窗口，用 sketch 做超大基数估计）。

### 4. JSJ222/mooncep（0.1.0）

- **做什么**：复杂事件模式检测（CEP），按 key 识别事件序列，用调用方水位确认时间边界内的"未发生"，含检查点、NDJSON 驱动、有界资源限制。其文档明确声明 **"does not provide … event corrections/retractions"**。
- **不做什么**：不做事件修正/撤回，不做窗口聚合。
- **与本项目的关系**：**形态相似、语义不同**。两者都有 NDJSON 驱动与检查点，但 mooncep 输出"模式命中与证据"，TideWeave 输出"窗口聚合的 before/after 修正"。TideWeave 不实现模式匹配。

## 关系声明

1. TideWeave 是**独立新仓库、独立实现**，不是上述任何项目的分支、改名、包装或扩展。
2. 未复制、未移植上述项目的代码；窗口分配、水位推进、聚合、修正、检查点均为本项目自行实现。
3. 本项目不依赖上述任何包；`moon.pkg` 仅依赖 `moonbitlang/core`。
4. 若未来引入上述项目或其它第三方代码，将在 `THIRD_PARTY_NOTICES.md` 中按许可证逐项声明。
5. 本项目与申请人此前提交的 `moonbit-submit-guard`、`permscope`、`AgentCanary` 无核心业务复用；TideWeave 是新的问题域（事件时间修正），不是这些工具的续作。

## 能力对照（依据各项目公开文档）

| 能力 | moonwatermarkkit | moon-stream-quality | moon-distinct-sketch | mooncep | TideWeave |
| --- | --- | --- | --- | --- | --- |
| 事件时间水位线 | 是 | 是 | 是 | 是 | 是 |
| 迟到分类 / 容忍 | 是 | 是（三种策略） | 文档未声明 | 是（超时确认） | 是（allowed lateness） |
| 有状态窗口内容 | 否（仅分配） | 是（规则上下文） | 是（有界） | 否 | 是（成员 + 聚合） |
| 精确窗口聚合 | 否 | 否（规则评估） | 近似 | 否 | 是（count/sum/min/max + UDAF） |
| 任意结构化事件载荷 | 否（固定数值） | 文档未声明 | 否（固定统计） | 否 | 是（fields 任意属性） |
| 度量字段可配置 | 否 | 文档未声明 | 否 | 否 | 是（value_field） |
| 撤回 / 替换事件 | 否 | 文档未声明 | 否 | 否（明确声明不支持） | 是 |
| 撤回后会话拆分 | 否 | 否 | 否 | 否 | 是 |
| 原子多事件事务 + 回滚 | 否 | 文档未声明 | 否 | 部分（有界原子限制） | 是 |
| 终结窗口保护 | 仅 `is_finalized` 判定 | 文档未声明 | 否 | 否 | 是（含成员事实） |
| before/after changelog | 否 | 否 | 否 | 否 | 是（含成员来源） |
| 下游 before-image 校验 | 否 | 否 | 否 | 否 | 是（`View`） |
| 确定性检查点回放 | 调用方自持久化 | 是 | 是 | 是 | 是 |

"文档未声明"表示公开文档没有该能力描述，不推断其内部实现；如需准确结论请以对应项目源码为准。

## 结论

社区确实已有事件时间/水位线/窗口方向的 MoonBit 包，但它们的定位分别是**判定原语、数据质量、近似统计、模式检测**。TideWeave 的独立贡献是**修正层**：把"已经记录的事实被更正"建模为原子状态变更，重建受影响窗口并输出可核对、可回放、可被下游验证的变更。这也是为什么本项目把撤回与会话拆分放在首位，而不是把"又一个窗口库"作为卖点。
