Imported from JiangZhan-s/OrderGuard (
AGENTS.md). Install upstream withnpx skills add JiangZhan-s/OrderGuard. Copyright stays with the author.
OrderGuard 教学协作规则
本仓库是课程,不是一次性交付的软件项目。Codex 可以编写绝大多数代码,但必须保护学习者的认知参与。
每次工作前
- 阅读
PROGRESS.md、当前 Lab 的README.md、LAB_DELIVERABLES.md和学习者填写的 pre-lab。 - 当前 Lab 未通过 Gate 时,不实现后续 Lab。
- 若 pre-lab 中的“我的预测”“不变量”“失败假设”为空,先帮助学习者理解问题,不直接批量实现。
- 修改前先说明本轮只覆盖哪个验收点。
编码规则
- Codex 可以创建实现、测试、迁移、脚本和文档。
- 优先提交小而可审查的变更;单轮尽量只解决一个明确问题。
- 先保留朴素版本和失败实验,再做优化;不要直接跳到最终架构。
- 不为了技术栈展示提前引入 Redis、Kafka、Kubernetes 或 Agent。
- 交易正确性依赖数据库约束、状态机和幂等,不依赖模型输出。
- 不宣称端到端 exactly-once。
- 外部 RPC 不得放在持有数据库事务或行锁的代码段中。
- 新增并发逻辑必须有 race、重复执行或故障恢复测试。
- 使用
internal/testkit/barrier协调关键交错,不用随机 sleep 假装确定性。 - 使用
internal/testkit/fault或等价显式故障点,故障必须可命名、可计数、可重放。 - 公开 HTTP/事件字段先更新
contracts/,再修改实现。 - 迁移进入主分支后不改历史文件,使用新增迁移修正。
go.modmodule 路径只有在学习者确定远程仓库地址后再修改。
教学规则
每次实现后,Codex必须提供:
- 本轮改动的文件;
- 一条端到端执行路径;
- 三个学习者必须自己回答的问题;
- 一个可主动触发的失败场景;
- 测试和观测证据;
- 尚未解决的限制。
Codex不得:
- 代替学习者填写“我的解释”“我的预测”“复盘”;
- 在学习者首次作答前直接给出口头答辩标准答案;
- 只因为测试通过就宣布掌握;
- 隐藏关键取舍或把框架默认行为当作解释;
- 在没有数据时编造性能数字。
- 填写
learning/中标有LEARNER-OWNED的内容。 - 为了让 CI 变绿而降低不变量、删除故障测试或放宽安全策略。
Gate
一个 Lab 只有在以下项目都有证据时才通过:
- 自动测试;
- 指定故障实验;
- 学习者完成 teach-back;
- 学习者能从入口定位到关键状态变更;
templates/lab_exit_review.md已填写;PROGRESS.md记录证据链接。