Files
orbit/AGENTS.md

18 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Orbit 开发约定
- Orbit 是通用平台。代码、文档和示例不得包含接入方项目名称或行业定制规则。
- 服务端分为公共能力、Pulse 与 Weave;SDK 是独立 Go module,不引用服务端模型或存储实现。
- 新增或修改数据模型必须提供中文注释,覆盖模型职责及每个持久化字段的含义。明确单位、可空语义、版本/幂等/租约/预算等约束,避免仅重复字段名。
- SQL 数据表和字段同步维护中文 COMMENT;已应用的迁移不得回改,后续演进新增前向迁移。
- 数据库禁止外键及级联删除。关联关系由服务端在同一事务中按命名空间校验;保留查询索引、唯一约束和 CHECK。历史外键由 000008 前向移除,后续迁移不得重新引入,真实 MySQL 回归必须断言外键为 0。
- Pulse 涉及用量的事务先锁应用额度再锁队列,恢复和调度遵守同一顺序;不得在已锁队列后新增应用额度锁。应用额度与身份行分离,不能升级认证共享锁。
- 优先级冻结为 0–9,每级30秒排序优势;dispatch_at 是数据库生成排序字段,不能替代 available_at 的实际就绪检查。节点按认证应用与队列轮转领取,内存轮转/空探测缓存不得授予执行权或改变持久化配额。
- 状态变更、租约、门控、许可、事件及审计必须按设计的事务边界实现,不用内存状态代替持久化确认。
- 研发任务持续更新 docs/08-development-plan.md。接口、SDK、可运行示例和对应回归随功能同步交付。
- 模型/迁移变更运行真实 MySQL 集成测试;执行和恢复变更覆盖竞争、重复、迟到及故障场景。以实际测试报告判断完成,不把设计文档当作已实现能力。
- 编译和基础回归入口是 make test、make vet、make build;隔离数据库端到端回归入口是 make integration。
- 结果日志的序号在独立命名空间流行锁下分配,与任务状态及原事件同事务提交;禁止用最大事件ID或时间戳推断提交水位。生产者不得锁订阅行。
- 创建订阅先锁队列再锁流行;消费按订阅→交付持锁,不能再取得任务、队列、额度或流行锁。ACK只验证最近代次及证明,过期未被替代的证明仍可确认;重复确认不能再次扣减pending_count。
- 可靠订阅已完成核心、HTTP/WSS及管理SDK;事件消费SDK、可运行Inbox示例和真实订阅进程故障回归完成前,不标记P3订阅能力完成。