Files
digital-psychology/docs/PROJECT_RULES.md
T
jackyu66gitandCursor ad45d17dff chore(repo): 仓侧治理门禁 — ECR/migration 身份唯一
将编号与 schema 完整性留在 Repository Governance,不扩 ESS/Loop;TRACEABILITY 锚定 Next ECR=041、Max Migration=000050。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 14:26:30 +08:00

4.8 KiB
Raw Blame History

Project Rules — 愈心谷

Inherits: $ESS_ROOT/product-governance/PROJECT_RULES.md(流程)
Product/DoD 权威:.ai/(不在此复制长文)

ESS Intake(本仓覆盖)

ess_intake: strict
  • 权威入口: $ESS_ROOT/governance/SESSION_BOOTSTRAP.mdG0 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_foo000015_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

  1. 语言契约:只用 .ai/product/lexicon.md 中的愈心谷用词;禁止竞品品牌词与恐吓/吉凶话术。
  2. API 信封固定为 {code,message,data};不发明表名、端点、领域同义词。
  3. 调用链:UI → @yuxingu/sdk → Handler → Service → Repository → DB。
  4. 新功能 / 扩行为:必须有 Active .ai/product/feature-spec/<id>.mdL2+ 另须 Approved docs/ECR/涉后台另须 Approved docs/BACKEND_DESIGN/
  5. 本地默认:本机 go run + Vitecompose 只起 DB。
  6. 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

Forbiddenextra

  • 猜需求继续写(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

  1. 开场 ESS Mode 块(G0)通过且 Action: CONTINUE(或明确 L0
  2. 仓侧(改 ECR / migration / merge 前):python scripts/repo-governance-check.py PASS
  3. ESS gate(有 ECR 时):python scripts/ess-validate.py --phase <phase> --ecr ECR-xxx
  4. 本仓 DoD.ai/definition-of-done.md + .ai/review.md
  5. 有行为变更时更新/尊重 .ai/product/p1-status.md 标签