将编号与 schema 完整性留在 Repository Governance,不扩 ESS/Loop;TRACEABILITY 锚定 Next ECR=041、Max Migration=000050。 Co-authored-by: Cursor <cursoragent@cursor.com>
4.8 KiB
4.8 KiB
Project Rules — 愈心谷
Inherits: $ESS_ROOT/product-governance/PROJECT_RULES.md(流程)
Product/DoD 权威:.ai/(不在此复制长文)
ESS Intake(本仓覆盖)
ess_intake: strict
- 权威入口:
$ESS_ROOT/governance/SESSION_BOOTSTRAP.md(G0 Mode 块) - Solo multi-role:
$ESS_ROOT/governance/AGENT_OPERATIONS.md - Execution Context: 同时只绑定 一个 Active ECR(或一个 L1 TASK);新主题 = OUT OF SCOPE,禁止顺手改码
- retro-ecr: 本仓 FAIL(须
Retrospective: true+ Original drift + Scope freeze + Process debt;不得伪装正序路径)。通用 ESS 默认为 WARN;脚本强制见后续门禁 PR,规则即时约束 Agent - Loop / Adapter: 不在本仓维护;已授权执行不扩展 ESS Intake 职责
- ESS 0.2.0-intake / Loop / Adapter: 本仓视为 FROZEN;仓库治理问题不塞进 ESS 内核或 Loop
Repository governance(仓侧 · 非 Loop)
独立于 ESS Loop。Merge / 开 ECR / 写 migration 前执行:
python scripts/repo-governance-check.py
python scripts/repo-governance-check.py --print-anchors
权威锚点:docs/TRACEABILITY.md 顶部 Next ECR · Max Migration。
ECR identity(硬规则)
ECR-NNN(及带字母/后缀的完整 identity)在仓库历史内全局唯一。
即使已 Closed,也禁止把同一编号重新解释成另一件事。- 禁止同号双义(例如两个文件都自称
# ECR-012)。 - 分叉只允许:
ECR-012-star·ECR-013A·ECR-013B等形式;不得再开第二个裸ECR-012。 - 预占: 开新 ECR 前读 TRACEABILITY Next ECR;占用后立即更新该锚点(或跑
--print-anchors核对后写回)。 - Canonical-ID: 仅作历史分叉过渡字段;长期以唯一 H1 / identity 为准,不发展成并行别名体系。
- Agent Single ECR Context 绑定的必须是上述唯一 identity(查 TRACEABILITY,勿猜)。
Migration stem(硬规则)
apps/api/migrations/下 6 位版本号唯一(禁止000015_foo与000015_bar并存)。- 禁止凭记忆递增。Create 流程:
Read repo state → Max Migration (TRACEABILITY / --print-anchors)
→ allocate next stem → write file → repo-governance-check PASS
- 并行 branch + merge 是已知攻击面;合入含 migration 的变更必须过 uniqueness 检查。
- 已发生撞号的修复说明:
docs/MIGRATION_RENUMBER.md(playbook 保留,本阶段不扩展)。
L0 / L1 UI(轻规则 · 不过度治理)
无 API / DB / Domain 新概念 / 权限 / 新业务状态、且不改既定 Acceptance → 可 L0/L1,不必为大 ECR。
若改变用户可见主路径语义 → 对照相关 Active Feature Spec 做 consistency check(不必因此自动升 L2)。
Domain invariants
- 语言契约:只用
.ai/product/lexicon.md中的愈心谷用词;禁止竞品品牌词与恐吓/吉凶话术。 - API 信封固定为
{code,message,data};不发明表名、端点、领域同义词。 - 调用链:UI →
@yuxingu/sdk→ Handler → Service → Repository → DB。 - 新功能 / 扩行为:必须有 Active
.ai/product/feature-spec/<id>.md;L2+ 另须 Approveddocs/ECR/;涉后台另须 Approveddocs/BACKEND_DESIGN/。 - 本地默认:本机
go run+ Vite;compose 只起 DB。 - Done ≠ build 通过:须过
.ai/definition-of-done.md并输出 Review Report。
Change levels(映射)
| ESS | 本仓要求 |
|---|---|
| L0 | 文档/注释/无行为;可无 ECR |
| L1 | 明确 bugfix;可无新 Feature Spec,但不得扩行为 |
| L2 | 功能行为变更 → Feature Spec Active + ECR Approved + HANDOFF |
| L2-BLOCKED | 无 Approved ECR 时禁止改 apps/ / packages/ / proto/ / migrations/ |
| L3 | 栈/包边界/架构 → ADR(.ai/adr/)+ ECR + ENGINEERING_SPEC |
Forbidden(extra)
- 猜需求继续写(ASK FIRST)
- Architect 角色改
apps//packages/生产实现 - 无 Human 批准把实验当 Live 行为推广
- 提交
config.local.yaml、.env、密钥 - 同一 review turn Approve + Modify
- 在已绑定 ECR 的 Execution Context 内「顺便」做第二功能
- 同号双义 ECR;凭记忆分配 migration 版本号
- Retro 批量追认已 merge 行为;把仓库治理机制扩进 ESS Loop
Completion
- 开场 ESS Mode 块(G0)通过且
Action: CONTINUE(或明确 L0) - 仓侧(改 ECR / migration / merge 前):
python scripts/repo-governance-check.pyPASS - ESS gate(有 ECR 时):
python scripts/ess-validate.py --phase <phase> --ecr ECR-xxx - 本仓 DoD:
.ai/definition-of-done.md+.ai/review.md - 有行为变更时更新/尊重
.ai/product/p1-status.md标签