create-yss-spec 2.2.4 → 2.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/template/.agents/skills/code-review/SKILL.md +10 -7
- package/template/.agents/skills/code-review/agents/openai.yaml +1 -1
- package/template/.agents/skills/code-review/references/yss-review-standards.md +54 -0
- package/template/.agents/skills/yss-product-lifecycle/SKILL.md +13 -12
- package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +48 -2
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +3 -1
- package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.claude/skills/code-review/SKILL.md +10 -7
- package/template/.claude/skills/code-review/agents/openai.yaml +1 -1
- package/template/.claude/skills/code-review/references/yss-review-standards.md +54 -0
- package/template/.claude/skills/yss-product-lifecycle/SKILL.md +13 -12
- package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +48 -2
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +3 -1
- package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.codex/skills/code-review/SKILL.md +10 -7
- package/template/.codex/skills/code-review/agents/openai.yaml +1 -1
- package/template/.codex/skills/code-review/references/yss-review-standards.md +54 -0
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +13 -12
- package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +48 -2
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +3 -1
- package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.cursor/skills/code-review/SKILL.md +10 -7
- package/template/.cursor/skills/code-review/agents/openai.yaml +1 -1
- package/template/.cursor/skills/code-review/references/yss-review-standards.md +54 -0
- package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +13 -12
- package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +48 -2
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +3 -1
- package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.hermes/skills/code-review/SKILL.md +10 -7
- package/template/.hermes/skills/code-review/agents/openai.yaml +1 -1
- package/template/.hermes/skills/code-review/references/yss-review-standards.md +54 -0
- package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +13 -12
- package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +48 -2
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +3 -1
- package/template/.hermes/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.pi/skills/code-review/SKILL.md +10 -7
- package/template/.pi/skills/code-review/agents/openai.yaml +1 -1
- package/template/.pi/skills/code-review/references/yss-review-standards.md +54 -0
- package/template/.pi/skills/yss-product-lifecycle/SKILL.md +13 -12
- package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +48 -2
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +3 -1
- package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.qoder/skills/code-review/SKILL.md +10 -7
- package/template/.qoder/skills/code-review/agents/openai.yaml +1 -1
- package/template/.qoder/skills/code-review/references/yss-review-standards.md +54 -0
- package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +13 -12
- package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +48 -2
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +3 -1
- package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.trae/skills/code-review/SKILL.md +10 -7
- package/template/.trae/skills/code-review/agents/openai.yaml +1 -1
- package/template/.trae/skills/code-review/references/yss-review-standards.md +54 -0
- package/template/.trae/skills/yss-product-lifecycle/SKILL.md +13 -12
- package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +48 -2
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +3 -1
- package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/AGENTS.md +21 -5
- package/template/CONTEXT.md +1 -1
- package/template/docs/agents/README.md +1 -1
- package/template/docs/agents/digital-human-roles.md +1 -1
- package/template/docs/agents/digital-human-roles.yaml +7 -6
- package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +1 -0
- package/template/docs/process/harness-process-tailoring.md +1 -0
- package/template/docs/process/implementation-repo-integration.md +10 -0
- package/template/docs/templates/review-report-template.md +36 -1
- package/template/scripts/lib/scenario-checks.mjs +9 -0
- package/template/scripts/lib/skill-registry.mjs +88 -0
- package/template/scripts/verify-digital-human-roles-scenarios +12 -0
- package/template/skills-lock.json +3 -3
- package/template.snapshot.json +4 -4
|
@@ -62,7 +62,7 @@ AND UI 影响切片的前端实现还原计划已通过 schema 校验、`templat
|
|
|
62
62
|
|
|
63
63
|
## Review 与 Git 授权状态
|
|
64
64
|
|
|
65
|
-
进入代码审查时保存 `review_mode`、`review_base_ref`、`implementation_candidate_ref`、`candidate_snapshot_ref`、`candidate_digest` 及 Spec、Ticket、合同、Checklist、YSS Execution Result
|
|
65
|
+
进入代码审查时保存 `review_mode`、`review_base_ref`、`implementation_candidate_ref`、`candidate_snapshot_ref`、`candidate_digest` 及 Spec、Ticket、合同、Checklist、YSS Execution Result 引用,并记录专项检查覆盖与机器检查结果。`worktree` 候选必须一次捕获 committed、staged、unstaged 和 untracked 文件;manifest 的按模式必填字段以及 `yss-worktree-candidate-v1`(raw path、uint64 big-endian 长度、tracked/untracked record、symlink 和不支持条目)以 `orchestration-contract.yaml.review_input` 为唯一执行定义。两个 Reviewer 消费同一不可变快照;返回后或完成 checkpoint 摘要变化则返回 `blocked` 并重新审查。Finding 分流不新增生命周期状态:`violation` 仍在当前合同路径由实现者修复后复审;`drift` / `new_impacts` 把合同标 `stale` 并走既有重路由。该清单只作为审查证据。
|
|
66
66
|
|
|
67
67
|
Git 动作分别保存 `commit_authorized`、`commit_scope`、`commit_authorization_ref`、`push_authorized`、`push_scope`、`push_authorization_ref`。只有授权值严格为 `true`、范围和用户授权引用均非空时才执行相应动作;缺失授权时保持工作区不变并记录 checkpoint 判断。`git-submodule` 另保存每仓授权、`checkout_state` 和先子后父顺序;空 gitlink、detached HEAD 或 `--force` 覆盖挂载点时不得当成普通目录 commit / 脚手架。
|
|
68
68
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: code-review
|
|
3
|
-
description: Use when the user wants to review a branch, PR, committed candidate, uncommitted work-in-progress changes, or changes since a fixed point.
|
|
3
|
+
description: Use when the user wants to review a branch, PR, committed candidate, uncommitted work-in-progress changes, or changes since a fixed point. For YSS implementation, Standards must load Slice contract required_skills plus specialist check inputs such as alibaba-java-code-style and yss-ui; do not add a second generic review skill.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Review of a pinned candidate against a fixed point on two core axes, plus UI fidelity when UI is in scope:
|
|
7
7
|
|
|
8
|
-
- **Standards** — does the code conform to this repo's documented coding standards?
|
|
8
|
+
- **Standards** — does the code conform to this repo's documented coding standards **and**, for YSS slices, the specialist check inputs compiled in [yss-review-standards.md](references/yss-review-standards.md)?
|
|
9
9
|
- **Spec** — does the code faithfully implement the originating issue / spec?
|
|
10
|
-
- **UI fidelity** (only when the change has UI impact) — does the candidate match the confirmed prototype and `yss-design-system` / `yss-ui`? Type-check or claiming "already aligned" is not a pass. Invoke those skills' verification notes; do not collapse this axis into Standards or Spec.
|
|
10
|
+
- **UI fidelity** (only when the change has UI impact) — does the candidate match the confirmed prototype and `yss-design-system` / `yss-ui`? Type-check or claiming "already aligned" is not a pass. Invoke those skills' verification notes; do not collapse this axis into Standards or Spec. YSS page-module conventions stay on Standards.
|
|
11
11
|
|
|
12
12
|
Standards and Spec run as **parallel sub-agents** so they don't pollute each other's context, then this skill aggregates their findings. When UI is in scope, add a separate UI fidelity pass after those two reports (do not merge it into either axis).
|
|
13
13
|
|
|
@@ -60,7 +60,9 @@ Look for the originating spec, in this order:
|
|
|
60
60
|
|
|
61
61
|
### 3. Identify the standards sources
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Compile sources **before** spawning reviewers. For YSS implementation candidates follow [yss-review-standards.md](references/yss-review-standards.md): run machine checks that exist in the implementation repo; then collect repo docs (`CODING_STANDARDS.md` / `CONTRIBUTING.md` if present), every Slice `required_skills` skill file, the impact-conditioned specialist inputs (`alibaba-java-code-style`, `yss-ui`, `yss-domain`, …), and `docs/templates/review-report-template.md`. Missing applicable coverage is `missing_evidence`, not a pass.
|
|
64
|
+
|
|
65
|
+
Anything in the repo that documents how code should be written, such as `CODING_STANDARDS.md` or `CONTRIBUTING.md`, remains a source. It does **not** replace YSS or Alibaba specialist inputs.
|
|
64
66
|
|
|
65
67
|
On top of whatever the repo documents, the Standards axis always carries the **smell baseline** below — a fixed set of Fowler code smells (_Refactoring_, ch.3) that applies even when a repo documents nothing. Two rules bind it:
|
|
66
68
|
|
|
@@ -87,8 +89,9 @@ Each smell reads *what it is* → *how to fix*; match it against the diff:
|
|
|
87
89
|
**Standards sub-agent prompt** — include:
|
|
88
90
|
|
|
89
91
|
- The full candidate manifest, captured candidate, `candidate_digest`, diff/inventory commands and commit list. For Worktree candidates, explicitly include every untracked file.
|
|
90
|
-
- The list of standards-source files you found in step 3, **plus the smell baseline from step 3** pasted in full
|
|
91
|
-
-
|
|
92
|
+
- The list of standards-source files you found in step 3, **plus the smell baseline from step 3** pasted in full. Paste Fowler smells in full. For YSS specialist inputs, pass the exact skill file paths; the reviewer must read them and cite `skill + rule + location`. Do not summarise away mandatory Alibaba or YSS violations to fit a word cap. The 400-word cap applies only to the Fowler smell section.
|
|
93
|
+
- Machine-check commands, exit codes and evidence from step 3. Tooling failure is a hard Standards violation.
|
|
94
|
+
- The brief: "Report — per file/hunk where relevant — (a) every place the diff violates a documented standard or a required YSS / Alibaba specialist rule: cite the skill or file and the rule; (b) any baseline smell you spot: name it and quote the hunk. Distinguish hard violations from judgement calls — documented-standard and mandatory specialist breaches can be hard, but baseline smells are always judgement calls, and a documented repo standard overrides the baseline. Skip anything the machine checks already enforced. Smell section under 400 words; specialist findings have no word cap."
|
|
92
95
|
|
|
93
96
|
**Spec sub-agent prompt** — include:
|
|
94
97
|
|
|
@@ -100,7 +103,7 @@ If the spec is missing, skip the Spec sub-agent and note this in the final repor
|
|
|
100
103
|
|
|
101
104
|
### 5. Aggregate
|
|
102
105
|
|
|
103
|
-
Present the reports under `## Standards` and `## Spec` headings, verbatim or lightly cleaned. If UI is in scope, add `## UI fidelity` from the separate pass. Do **not** merge or rerank findings — the axes are deliberately separate (see _Why separate axes_).
|
|
106
|
+
Present the reports under `## Standards` and `## Spec` headings, verbatim or lightly cleaned. If UI is in scope, add `## UI fidelity` from the separate pass. Fill `docs/templates/review-report-template.md` specialist tables as part of Standards evidence, not a fourth axis. Do **not** merge or rerank findings — the axes are deliberately separate (see _Why separate axes_). A YSS candidate with blank applicable specialist rows, skipped `required_skills`, or unaddressed mandatory violations is `blocked`, not `completed`. Do not close findings by writing implementation in the review session. `violation` / machine-check failure / blank applicable rows go back to the implementer on the original contract path, then recapture the candidate and rerun every axis. `drift` / `new_impacts` / `required_skills` mismatch mark the contract `stale` and return to Router; do not keep coding on the old contract. `not-applicable` is only for untriggered impacts; mandatory gates have no waiver, only repair or a complete `seam-deferred` record.
|
|
104
107
|
|
|
105
108
|
For Worktree mode, recapture the candidate digest after both reports return. If it differs from `candidate_digest`, mark both reports as reviewing a **stale candidate** and return `blocked`; the caller may start a new review against a new capture, but this invocation must not aggregate findings from different bytes. Recheck the same digest again at the completion/checkpoint boundary.
|
|
106
109
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# YSS 审查标准源与机器检查
|
|
2
|
+
|
|
3
|
+
本文件只服务唯一默认审查技能 `code-review`。Alibaba Java、YSS 前端 / 后端 skill 是 **Standards 轴的专项检查输入**,不是第二个通用审查 skill。
|
|
4
|
+
|
|
5
|
+
权威接线:`yss-product-lifecycle/references/orchestration-contract.yaml` 的 `work-unit.code-review.review_standards_route` 与 `review_input`。报告形状:`docs/templates/review-report-template.md`。
|
|
6
|
+
|
|
7
|
+
## 1. 编译标准源
|
|
8
|
+
|
|
9
|
+
按顺序收集,缺项写 `not-applicable` 及原因,不得省略适用项:
|
|
10
|
+
|
|
11
|
+
1. 仓库文档:`CODING_STANDARDS.md`、`CONTRIBUTING.md` 或实现仓等价文件(若存在)。
|
|
12
|
+
2. Slice Implementation Contract 的 `required_skills`:对每个技能读取 `.agents/skills/<id>/SKILL.md` 及该 skill 指明的 references。
|
|
13
|
+
3. 影响面专项检查输入(与合同并集,不得互相替代):
|
|
14
|
+
- 后端:`alibaba-java-code-style`、`yss-domain`、`yss-application`、`yss-repository`、`yss-web-controller`、`yss-dto`、`mapstruct`、`lombok`
|
|
15
|
+
- UI:`yss-ui`、`yss-design-system`、`yss-page-module-development`
|
|
16
|
+
4. 报告模板中的后端 / 前端门禁表。空着的适用行视为 `missing_evidence`。
|
|
17
|
+
|
|
18
|
+
YSS 页面模块约定(YTable、YssFormily、页面骨架等)走 Standards,不并入 UI fidelity。UI fidelity 只核原型与状态矩阵。
|
|
19
|
+
|
|
20
|
+
审查者只读这些 skill,不得用它们写实现路径。`role.test-engineer` 任务包禁止 `implement` 与脚手架生成器。
|
|
21
|
+
|
|
22
|
+
## 2. 机器检查
|
|
23
|
+
|
|
24
|
+
在派发 Standards / Spec 子审查之前,对实现仓**已登记且当前可执行**的命令实际跑一遍:
|
|
25
|
+
|
|
26
|
+
- 后端优先:切片合同里的 `./mvnw` 验证;若工程已配置 Checkstyle / P3C / Spotless / `validate`,一并执行。
|
|
27
|
+
- 前端优先:切片合同里的 `pnpm` 验证;若存在 `pnpm lint` / `pnpm type-check`,一并执行。
|
|
28
|
+
|
|
29
|
+
记录命令、退出码、时间和证据引用。退出码非 0 记为 Standards **hard violation**。
|
|
30
|
+
|
|
31
|
+
仓库没有对应工具时,该工具行写 `not-applicable` 加原因。可被工具检查的 Alibaba / ESLint 规则若工具没跑、LLM 也没按原文引用规则,不得记 `pass`。无法 lint 的分层、页面骨架、Formily 约定由 LLM 按 skill 原文引用。
|
|
32
|
+
|
|
33
|
+
## 3. 完成阻断
|
|
34
|
+
|
|
35
|
+
出现以下任一情况时,`work-unit.code-review` 不得 `completed`:
|
|
36
|
+
|
|
37
|
+
- 未消费合同 `required_skills` 或漏掉命中影响面的专项检查输入
|
|
38
|
+
- 报告模板适用行空白或只写“符合 YSS / 符合阿里规范”
|
|
39
|
+
- mandatory Alibaba 或 YSS 门禁 `violation` 未关闭
|
|
40
|
+
- 机器检查失败,或可检查规则既无工具结果也无原文引用
|
|
41
|
+
- 用第二个通用审查 skill 代替 `code-review`
|
|
42
|
+
|
|
43
|
+
## 4. Finding 分流与豁免
|
|
44
|
+
|
|
45
|
+
产品切片与模板维护使用**同一闭环**;只是强度不同:切片绑定当前 Slice Implementation Contract,模板维护绑定 L1 / L2 / L3。权威字段:`review_standards_route.finding_disposition`。
|
|
46
|
+
|
|
47
|
+
审查者只记录 finding,不得当场改实现代码。
|
|
48
|
+
|
|
49
|
+
| 类型 | 动作 |
|
|
50
|
+
|---|---|
|
|
51
|
+
| `violation`、机器检查失败、适用行空白、`missing_evidence` | 实现者在**原合同允许路径**内修复;任何修复使候选失效,必须重新捕获并重跑 Standards、Spec、UI fidelity(若命中)和 fresh verification |
|
|
52
|
+
| `drift`、`new_impacts`、`required_skills` 与真实影响不一致 | 合同标 `stale`,回 Router 或更早生命周期阶段;禁止在旧合同上继续编码 |
|
|
53
|
+
|
|
54
|
+
`not-applicable` 仅当影响面未命中。命中后的 mandatory 不得豁免;只允许修复,或写完整 `seam-deferred`(风险、责任人、后续 Ticket、验证计划、目标版本或发布日期)。禁止为日常 Alibaba / YSS 新增生物人豁免门禁;安全 / 公共 API 仍走既有 `TODO-HUMAN-REVIEW` 与生物人门禁。
|
|
@@ -11,30 +11,31 @@ description: 编排 YSS 产品或模块从机会调研到 Spec、原型、技术
|
|
|
11
11
|
|
|
12
12
|
1. 先读取 `yss-project.yaml`、`CONTEXT.md`、相关 ADR、父 Ticket/checkpoint 和当前资产。
|
|
13
13
|
2. `repository_mode=template-source` 只走模板维护流程;命中产品流程时返回 `blocked: template-source-product-artifact-forbidden`,不得生成产品 Spec、原型、OpenAPI 或切片 Ticket。
|
|
14
|
-
3. `repository_mode=project-instance` 以 `docs/process/lifecycle-registry.yaml`、`harness-process-tailoring.md` 和本目录 references
|
|
14
|
+
3. `repository_mode=project-instance` 以 `docs/process/lifecycle-registry.yaml`、`harness-process-tailoring.md` 和本目录 references 为唯一阶段、门禁和裁剪事实源;技能分层、别名、默认可发现性和运行时入口以 `docs/agents/yss-skill-registry.yaml`(`status: active`)为准,来源、版本、hash 和投影以 `skills-lock.json` 为准。数字人角色、阶段协作组、运行时绑定与会签级别以 `docs/agents/digital-human-roles.yaml` 为准;职称实例不另起编排器。
|
|
15
15
|
4. 模式:`route` 只读规划;`orchestrate` 有界推进;`resume` 重建后推进;`audit` 严格只读。未明确时使用 `route`。
|
|
16
16
|
|
|
17
17
|
Matt 的 `grill-with-docs`、`to-spec`、`to-tickets`、`implement` 等保留为显式兼容入口;默认路径是本 skill 持有的原生工作单元,由本编排器创建正式资产、维护状态并在会签门禁暂停(级别见数字人角色注册表)。兼容入口不得自动调用它们或代替其创建正式资产;Matt 只导航,不得写生命周期资产或改变门禁/Ticket 状态;任何写入前回交本编排器。
|
|
18
18
|
|
|
19
19
|
## 不可裁剪的主链
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
入口分诊 → Discovery → Spec / 功能架构 → 产品设计 → 系统 / 数据架构与工程契约 → Ticket 正式化 → 垂直切片实现(前后端 TDD)→ 验证 / 发布 / 复盘。
|
|
22
22
|
|
|
23
23
|
裁剪只允许将未命中的条件门禁标记为 `not-applicable` 并写原因;不得删除主阶段、已命中的门禁或必需产物。阶段是否完成取决于“内容 + 审查结论 + 上游新鲜度 + 可读证据”,文件存在不算通过。
|
|
24
24
|
|
|
25
25
|
## 阶段路由与技能
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
下表按 `lifecycle-registry.yaml` 的主阶段颗粒度编排;同一阶段内的多个工作单元、条件技能和门禁依赖以 references 为准。
|
|
28
|
+
|
|
29
|
+
| 主阶段 | 必需产物/门禁 | 原生工作单元与技能 | 通过条件 |
|
|
28
30
|
|---|---|---|---|
|
|
29
|
-
| 入口分诊 | 身份、影响面、最近可信阶段 | `yss-product-lifecycle` | `yss-project.yaml` 合法且影响面可解释 |
|
|
30
|
-
|
|
|
31
|
-
| Spec
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
| Ticket 正式化 | 功能父 Ticket、垂直切片、Slice Implementation Contract | 原生 `work-unit.ticket-decomposition`;`to-tickets` 为兼容入口;生命周期复算 | 依赖、验收、测试 seam
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
| 发布/复盘 | 发布/回滚证据、复盘记录 | 生命周期自有工作单元 | fresh verification、独立审查和发布裁决齐全;`gate.release-ready` 仍须生物人 |
|
|
31
|
+
| 入口分诊 `stage.entry-triage` | 身份、影响面、最近可信阶段 | `work-unit.entry-triage`;`yss-product-lifecycle` | `yss-project.yaml` 合法且影响面可解释 |
|
|
32
|
+
| Discovery `stage.discovery` | Discovery、用户/MVP/非目标/成功标准、测试 seam;命中 DDD 影响时补充领域战略设计与阶段决策包 | `work-unit.discovery-opportunity` + `work-unit.discovery-requirements` + `work-unit.domain-strategy-design` + `work-unit.stage-decision`;市场/竞品事实用 `competitive-intelligence`,技术/标准事实用 `research`;需求澄清用 `grilling`,领域建模用 `domain-modeling` / `yss-stage-decision`;`grill-with-docs` 为兼容入口 | 未决事实已 research 或 handoff,领域边界和统一语言可审查,阶段决策包完成必要批准;`gate.domain-strategy-approved`、`gate.stage-decision-package-approved` |
|
|
33
|
+
| Spec / 功能架构 `stage.spec-architecture` | Spec、产品总体设计、功能架构;必要时 Spec Delta | 原生 `work-unit.spec-synthesis`;`to-spec` 为兼容入口 | 初稿先为 `ready-for-human`;只有 Spec baseline 会签批准后资产才为 `approved` 并进入下游 |
|
|
34
|
+
| 产品设计 `stage.product-design` | 交互说明、低保真、状态矩阵、高保真 HTML、评审记录 | `work-unit.prototype-design`;`yss-design-system` → `prototype-review` → `yss-prototype-stage` → `yss-antd-design`(仅原型事实)→ Codex `product-design:index`(非 Codex 交付等价合同)。前端落地改用 `yss-ui` | `gate.prototype-reviewed`、`gate.prototype-verified`、`gate.user-confirmation` 均有证据 |
|
|
35
|
+
| 系统 / 数据架构与工程契约 `stage.system-data-engineering` | OpenAPI Draft/Freeze、数据架构、工程基线、架构审查;按领域影响执行 Tactical DDD Check | `work-unit.technical-analysis`;`yss-router` + `yss-openapi-governance` / `yss-openapi-draft-review`、`codebase-design`、`implementation-repo-onboarding`、`yss-tactical-design` | API/架构契约冻结;无 API 影响有明确记录;战术模型无未解释冲突;脚手架策略满足;`gate.openapi-draft-reviewed`、`gate.design-reviewed`、`gate.openapi-frozen`、`gate.engineering-baseline-accepted`、`gate.architecture-reviewed` |
|
|
36
|
+
| Ticket 正式化 `stage.ticket-formalization` | 功能父 Ticket、垂直切片、Slice Implementation Contract | 原生 `work-unit.ticket-decomposition`;`yss-router`;`to-tickets` 为兼容入口;生命周期复算 | 依赖、验收、测试 seam 可执行;合同已批准、持久化且为当前版本;`gate.slice-contract-approved`、`gate.slice-ready-for-agent` |
|
|
37
|
+
| 垂直切片实现 `stage.vertical-slice-implementation` | 前端/后端代码、TDD 证据、YSS Skill Execution Result | 原生 `work-unit.slice-implementation`;`yss-router` + `tdd`;前端按 `yss-ui` + `yss-page-module-development`,后端按 Router 最小闭包;`implement` 为兼容入口 | 仅接收已完成 Ticket 正式化、已绑定垂直切片且 `ready-for-agent` 公式通过的输入;只写允许路径;业务行为用 `tdd` 的 `behavior-tdd` 模式;UI 影响必须有还原计划 |
|
|
38
|
+
| 验证 / 发布 / 复盘 `stage.verification-release-retrospective` | 不可变候选快照、review 结论、fresh verification、发布 / 回滚证据、复盘记录 | `work-unit.frontend-implementation-verification` + `work-unit.code-review` + `work-unit.release-and-retrospective`;`code-review` 独立于实现者,Standards 消费合同 `required_skills` 与 YSS / Alibaba 专项检查输入;UI 影响追加 `yss-ui` + `yss-design-system` 的 UI fidelity 轴;发布 / 复盘由生命周期持有 | findings 已按合同分流处理(修复后全轴复审或 stale 回 Router);同一候选快照通过全部审查轴、专项覆盖与验证;UI 影响追加 `gate.frontend-implementation-verified`;`gate.release-ready` 仍须生物人 |
|
|
38
39
|
|
|
39
40
|
## 前端实现还原硬检查
|
|
40
41
|
|
|
@@ -26,7 +26,7 @@ Matt skills 决定如何工作;YSS 生命周期决定是否允许推进;YSS
|
|
|
26
26
|
| 切片 | 原生 `work-unit.ticket-decomposition`;`to-tickets`(用户显式兼容) | 仅在冻结/无影响记录后拆垂直切片,初始 Ticket 状态为 `ready-for-human` |
|
|
27
27
|
| 实现 | 原生 `work-unit.slice-implementation`;`implement`(用户显式兼容) | 当前合同批准并持久化后执行;内部使用 `tdd`,结果回交后再次核验 |
|
|
28
28
|
| Bug | `diagnosing-bugs`、`tdd` | 先建立红色反馈;高风险影响升级上游门禁 |
|
|
29
|
-
| 审查 | `code-review` |
|
|
29
|
+
| 审查 | `code-review` | 唯一默认代码审查入口;审查者独立且不得写实现;Standards 消费 Spec、仓库治理规则、Slice `required_skills` 和 YSS / Alibaba 专项检查输入;finding 按合同分流修复或 stale 回 Router |
|
|
30
30
|
| 跨上下文 | `handoff` | 保存来源、阶段、未决项、命令和下一责任人 |
|
|
31
31
|
| 阶段边界 | `PHASE-BOUNDARIES.md` | 按 `Continue → /clear → /handoff → subagent → /compact` 选择上下文动作;只记录证据,不扩展生命周期状态 |
|
|
32
32
|
| 解释未落地 | `wait-what` | 只重新解释当前结论,不改变阶段、门禁、Ticket 或 `ready-for-agent` |
|
|
@@ -76,7 +76,7 @@ Router 状态映射为:`draft → completed`、`blocked → blocked`、`ready-
|
|
|
76
76
|
|
|
77
77
|
## Review 候选与 Git 授权
|
|
78
78
|
|
|
79
|
-
YSS 调用 `code-review` 前必须形成 review input,至少包含 `review_mode`、`review_base_ref`、`implementation_candidate_ref`、`candidate_snapshot_ref`、`candidate_digest`、`spec_ref`、`ticket_ref`、`slice_contract_ref`、`build_architecture_checklist_ref` 和 `yss_execution_result_refs`,并满足 `orchestration-contract.yaml.review_input.manifest_required_by_mode
|
|
79
|
+
YSS 调用 `code-review` 前必须形成 review input,至少包含 `review_mode`、`review_base_ref`、`implementation_candidate_ref`、`candidate_snapshot_ref`、`candidate_digest`、`spec_ref`、`ticket_ref`、`slice_contract_ref`、`build_architecture_checklist_ref` 和 `yss_execution_result_refs`,并满足 `orchestration-contract.yaml.review_input.manifest_required_by_mode`。Standards 还必须编译 `review_standards_route`:合同 `required_skills`、影响面专项检查输入、报告模板与 `finding_disposition`;机器检查按 `run_if_present` 执行。`committed` 审查 merge-base 到不可变 `HEAD`;`worktree` 一次捕获 merge-base 到 working tree 的 committed、staged、unstaged 和 untracked 内容,使用 `yss-worktree-candidate-v1` 规定的 raw path、uint64 big-endian 长度、tracked/untracked record 和不支持条目阻断规则计算 SHA-256,让两个 Reviewer 消费同一不可变快照,并在返回和完成 checkpoint 复核摘要未变化。缺少输入、候选为空、专项覆盖缺失、未关闭 mandatory `violation`、适用行空白或摘要变化时返回 `blocked`,不能缩小审查范围、另起通用审查 skill、由审查者改实现,或合并不同候选的结论。`violation` 类 finding 交实现者在原合同路径修复后全轴复审;`drift` / `new_impacts` 使合同 `stale` 并回 Router。
|
|
80
80
|
|
|
81
81
|
Matt `implement` 的通用提交指令不构成 YSS Git 授权。只有用户明确给出 `commit_authorized` 为 `true`、非空 `commit_scope` 和 `commit_authorization_ref` 时才能 commit;只有明确给出 `push_authorized` 为 `true`、非空 `push_scope` 和 `push_authorization_ref` 时才能 push。缺少任一字段时保持工作区不变,只输出 checkpoint 判断;不得把 `orchestrate`、实现授权、当前分支、测试通过或负责人要求解释为隐含授权。`git-submodule` 还必须按仓授权、禁止 detached HEAD 提交,并先推子仓再更新父仓 gitlink。
|
|
82
82
|
|
|
@@ -308,8 +308,46 @@ work_unit_routes:
|
|
|
308
308
|
work-unit.code-review:
|
|
309
309
|
native: {source: yss-product-lifecycle, skill: code-review, invocation_mode: model-invoked}
|
|
310
310
|
primary_skill: code-review
|
|
311
|
-
supporting_skills: []
|
|
312
|
-
skills: [code-review]
|
|
311
|
+
supporting_skills: [alibaba-java-code-style, yss-ui, yss-design-system, yss-page-module-development, yss-domain, yss-application, yss-repository, yss-web-controller, yss-dto, mapstruct, lombok]
|
|
312
|
+
skills: [code-review, alibaba-java-code-style, yss-ui, yss-design-system, yss-page-module-development, yss-domain, yss-application, yss-repository, yss-web-controller, yss-dto, mapstruct, lombok]
|
|
313
|
+
review_standards_route:
|
|
314
|
+
unique_default_skill: code-review
|
|
315
|
+
second_generic_review_skill: forbidden
|
|
316
|
+
report_template: docs/templates/review-report-template.md
|
|
317
|
+
contract_required_skills: required
|
|
318
|
+
write_implementation: forbidden
|
|
319
|
+
machine_checks:
|
|
320
|
+
run_if_present: true
|
|
321
|
+
missing_tooling: not-applicable-with-reason
|
|
322
|
+
checkable_rule_without_machine: not-a-pass
|
|
323
|
+
conditional_skills:
|
|
324
|
+
backend_impact: [alibaba-java-code-style, yss-domain, yss-application, yss-repository, yss-web-controller, yss-dto, mapstruct, lombok]
|
|
325
|
+
ui_impact: [yss-ui, yss-design-system, yss-page-module-development]
|
|
326
|
+
not_applicable_reasons:
|
|
327
|
+
backend_impact: no_backend_impact
|
|
328
|
+
ui_impact: no_ui_impact
|
|
329
|
+
finding_disposition:
|
|
330
|
+
same_loop_for: [product-slice, template-maintenance]
|
|
331
|
+
intensity:
|
|
332
|
+
product-slice: slice-contract
|
|
333
|
+
template-maintenance: L1-L2-L3
|
|
334
|
+
reviewer_write_implementation: forbidden
|
|
335
|
+
repair_then_full_rereview:
|
|
336
|
+
kinds: [violation, machine_check_failure, blank_applicable_row, missing_evidence]
|
|
337
|
+
actor: implementer
|
|
338
|
+
on_original_contract: true
|
|
339
|
+
then: recapture_candidate_and_rerun_all_axes
|
|
340
|
+
stale_and_reroute:
|
|
341
|
+
kinds: [drift, new_impacts, required_skills_mismatch]
|
|
342
|
+
mark_contract: stale
|
|
343
|
+
continue_coding_on_old_contract: forbidden
|
|
344
|
+
next: router-or-earlier-lifecycle
|
|
345
|
+
exemption_policy:
|
|
346
|
+
not_applicable: impact_not_triggered_only
|
|
347
|
+
mandatory_waiver: forbidden
|
|
348
|
+
allowed_exits: [repair, seam-deferred-complete]
|
|
349
|
+
new_human_waiver_gate: forbidden
|
|
350
|
+
existing_human_gates_unchanged: true
|
|
313
351
|
applies_when: implementation_candidate_exists
|
|
314
352
|
not_applicable_reason: no_implementation_candidate
|
|
315
353
|
work-unit.release-and-retrospective:
|
|
@@ -394,7 +432,15 @@ review_input:
|
|
|
394
432
|
schema_version: 1
|
|
395
433
|
required: [review_mode, review_base_ref, implementation_candidate_ref, candidate_snapshot_ref, candidate_digest, spec_ref, ticket_ref, slice_contract_ref, build_architecture_checklist_ref, yss_execution_result_refs]
|
|
396
434
|
nullable: [spec_ref]
|
|
435
|
+
unique_default_skill: code-review
|
|
436
|
+
second_generic_review_skill: forbidden
|
|
397
437
|
axes: [standards, spec, ui_fidelity_if_ui_impact]
|
|
438
|
+
standards_sources: [repo_coding_standards, slice_contract_required_skills, specialist_check_inputs, review_report_template]
|
|
439
|
+
completed_requires_specialist_coverage: true
|
|
440
|
+
finding_disposition_required: true
|
|
441
|
+
completed_requires_no_open_mandatory_violations: true
|
|
442
|
+
completed_requires_no_blank_applicable_rows: true
|
|
443
|
+
reviewer_write_implementation: forbidden
|
|
398
444
|
repair_invalidates_candidate: true
|
|
399
445
|
repair_action: recapture_candidate_and_rerun_all_axes
|
|
400
446
|
modes: [committed, worktree]
|
|
@@ -65,7 +65,9 @@ tracker 选择和冲突按 `docs/agents/issue-tracker.md` 裁决:已持久化
|
|
|
65
65
|
- 调用 `code-review` 前先固定 review input:`review_mode`、`review_base_ref`、`implementation_candidate_ref`、`candidate_snapshot_ref`、`candidate_digest`、Spec/Ticket、Slice Implementation Contract、Build Architecture Checklist 和 YSS Skill Execution Result 引用。`committed` 模式审查不可变 `HEAD`;`worktree` 模式一次捕获 committed、staged、unstaged 和 untracked 内容。必须按 `orchestration-contract.yaml.review_input` 的 manifest 按模式必填字段及 `yss-worktree-candidate-v1` 字节流(raw path、uint64 big-endian 长度、tracked/untracked record)计算 SHA-256,两个 Reviewer 必须消费同一不可变快照。返回后或完成 checkpoint 摘要变化时返回 `blocked`,由编排器决定重新审查。候选为空、漏项或 fixed point 不可解析时阻断。
|
|
66
66
|
- 小改动和中等变更可由同一独立执行者完成 `code-review` 与 fresh verification,并在同一报告中分别记录 findings、命令、结果和残余风险。
|
|
67
67
|
- 该执行者必须独立于实现者;新模块、高风险变更、职责冲突或需双人控制时,Reviewer 与 Verifier 分开。
|
|
68
|
-
- `code-review` 是唯一默认代码审查 skill。GitLab、CI、Sonar、Alibaba Java
|
|
68
|
+
- `code-review` 是唯一默认代码审查 skill。GitLab、CI、Sonar、Alibaba Java 与 YSS 前端 / 后端 skill 作为仓库规则或专项检查输入接入 Standards 轴,由 `review_standards_route` 按影响面编译;不再叠加第二个通用审查 skill。漏掉合同 `required_skills`、适用报告行空白、mandatory `violation` 未关闭或可机器检查规则既无工具结果也无原文引用时,不得 `completed`。
|
|
69
|
+
- 产品切片与模板维护共用同一 finding 闭环,强度分别绑定 Slice 合同与 L1 / L2 / L3。`violation`、机器检查失败、适用行空白由实现者在原合同路径修复,再重新捕获候选并全轴复审。`drift`、`new_impacts`、`required_skills` 与真实影响不一致时合同 `stale`,回 Router 或更早阶段,禁止在旧合同上继续编码。审查者不得写实现。`not-applicable` 仅当影响面未命中;命中后 mandatory 不得豁免,只允许修复或完整 `seam-deferred`。禁止为日常 Alibaba / YSS 新增生物人豁免门禁。
|
|
70
|
+
- 独立 Reviewer 必须与实现者不同实例,并在能执行已登记 `pnpm` / `./mvnw` 的运行时中审查。模板源 `.cursor/environment.json` 只服务模板校验,不替代实现仓审查运行时。不为此再创建第二个 Cloud 审查环境或 `/code-review` skill。
|
|
69
71
|
- UI 影响切片将 `UI fidelity` 作为 `code-review` 的条件第三轴;任何修复都会使候选摘要失效,必须重新捕获候选并重跑 Standards、Spec、UI fidelity 和 fresh verification。
|
|
70
72
|
|
|
71
73
|
## Git 授权
|
|
@@ -62,7 +62,7 @@ AND UI 影响切片的前端实现还原计划已通过 schema 校验、`templat
|
|
|
62
62
|
|
|
63
63
|
## Review 与 Git 授权状态
|
|
64
64
|
|
|
65
|
-
进入代码审查时保存 `review_mode`、`review_base_ref`、`implementation_candidate_ref`、`candidate_snapshot_ref`、`candidate_digest` 及 Spec、Ticket、合同、Checklist、YSS Execution Result
|
|
65
|
+
进入代码审查时保存 `review_mode`、`review_base_ref`、`implementation_candidate_ref`、`candidate_snapshot_ref`、`candidate_digest` 及 Spec、Ticket、合同、Checklist、YSS Execution Result 引用,并记录专项检查覆盖与机器检查结果。`worktree` 候选必须一次捕获 committed、staged、unstaged 和 untracked 文件;manifest 的按模式必填字段以及 `yss-worktree-candidate-v1`(raw path、uint64 big-endian 长度、tracked/untracked record、symlink 和不支持条目)以 `orchestration-contract.yaml.review_input` 为唯一执行定义。两个 Reviewer 消费同一不可变快照;返回后或完成 checkpoint 摘要变化则返回 `blocked` 并重新审查。Finding 分流不新增生命周期状态:`violation` 仍在当前合同路径由实现者修复后复审;`drift` / `new_impacts` 把合同标 `stale` 并走既有重路由。该清单只作为审查证据。
|
|
66
66
|
|
|
67
67
|
Git 动作分别保存 `commit_authorized`、`commit_scope`、`commit_authorization_ref`、`push_authorized`、`push_scope`、`push_authorization_ref`。只有授权值严格为 `true`、范围和用户授权引用均非空时才执行相应动作;缺失授权时保持工作区不变并记录 checkpoint 判断。`git-submodule` 另保存每仓授权、`checkout_state` 和先子后父顺序;空 gitlink、detached HEAD 或 `--force` 覆盖挂载点时不得当成普通目录 commit / 脚手架。
|
|
68
68
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: code-review
|
|
3
|
-
description: Use when the user wants to review a branch, PR, committed candidate, uncommitted work-in-progress changes, or changes since a fixed point.
|
|
3
|
+
description: Use when the user wants to review a branch, PR, committed candidate, uncommitted work-in-progress changes, or changes since a fixed point. For YSS implementation, Standards must load Slice contract required_skills plus specialist check inputs such as alibaba-java-code-style and yss-ui; do not add a second generic review skill.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Review of a pinned candidate against a fixed point on two core axes, plus UI fidelity when UI is in scope:
|
|
7
7
|
|
|
8
|
-
- **Standards** — does the code conform to this repo's documented coding standards?
|
|
8
|
+
- **Standards** — does the code conform to this repo's documented coding standards **and**, for YSS slices, the specialist check inputs compiled in [yss-review-standards.md](references/yss-review-standards.md)?
|
|
9
9
|
- **Spec** — does the code faithfully implement the originating issue / spec?
|
|
10
|
-
- **UI fidelity** (only when the change has UI impact) — does the candidate match the confirmed prototype and `yss-design-system` / `yss-ui`? Type-check or claiming "already aligned" is not a pass. Invoke those skills' verification notes; do not collapse this axis into Standards or Spec.
|
|
10
|
+
- **UI fidelity** (only when the change has UI impact) — does the candidate match the confirmed prototype and `yss-design-system` / `yss-ui`? Type-check or claiming "already aligned" is not a pass. Invoke those skills' verification notes; do not collapse this axis into Standards or Spec. YSS page-module conventions stay on Standards.
|
|
11
11
|
|
|
12
12
|
Standards and Spec run as **parallel sub-agents** so they don't pollute each other's context, then this skill aggregates their findings. When UI is in scope, add a separate UI fidelity pass after those two reports (do not merge it into either axis).
|
|
13
13
|
|
|
@@ -60,7 +60,9 @@ Look for the originating spec, in this order:
|
|
|
60
60
|
|
|
61
61
|
### 3. Identify the standards sources
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Compile sources **before** spawning reviewers. For YSS implementation candidates follow [yss-review-standards.md](references/yss-review-standards.md): run machine checks that exist in the implementation repo; then collect repo docs (`CODING_STANDARDS.md` / `CONTRIBUTING.md` if present), every Slice `required_skills` skill file, the impact-conditioned specialist inputs (`alibaba-java-code-style`, `yss-ui`, `yss-domain`, …), and `docs/templates/review-report-template.md`. Missing applicable coverage is `missing_evidence`, not a pass.
|
|
64
|
+
|
|
65
|
+
Anything in the repo that documents how code should be written, such as `CODING_STANDARDS.md` or `CONTRIBUTING.md`, remains a source. It does **not** replace YSS or Alibaba specialist inputs.
|
|
64
66
|
|
|
65
67
|
On top of whatever the repo documents, the Standards axis always carries the **smell baseline** below — a fixed set of Fowler code smells (_Refactoring_, ch.3) that applies even when a repo documents nothing. Two rules bind it:
|
|
66
68
|
|
|
@@ -87,8 +89,9 @@ Each smell reads *what it is* → *how to fix*; match it against the diff:
|
|
|
87
89
|
**Standards sub-agent prompt** — include:
|
|
88
90
|
|
|
89
91
|
- The full candidate manifest, captured candidate, `candidate_digest`, diff/inventory commands and commit list. For Worktree candidates, explicitly include every untracked file.
|
|
90
|
-
- The list of standards-source files you found in step 3, **plus the smell baseline from step 3** pasted in full
|
|
91
|
-
-
|
|
92
|
+
- The list of standards-source files you found in step 3, **plus the smell baseline from step 3** pasted in full. Paste Fowler smells in full. For YSS specialist inputs, pass the exact skill file paths; the reviewer must read them and cite `skill + rule + location`. Do not summarise away mandatory Alibaba or YSS violations to fit a word cap. The 400-word cap applies only to the Fowler smell section.
|
|
93
|
+
- Machine-check commands, exit codes and evidence from step 3. Tooling failure is a hard Standards violation.
|
|
94
|
+
- The brief: "Report — per file/hunk where relevant — (a) every place the diff violates a documented standard or a required YSS / Alibaba specialist rule: cite the skill or file and the rule; (b) any baseline smell you spot: name it and quote the hunk. Distinguish hard violations from judgement calls — documented-standard and mandatory specialist breaches can be hard, but baseline smells are always judgement calls, and a documented repo standard overrides the baseline. Skip anything the machine checks already enforced. Smell section under 400 words; specialist findings have no word cap."
|
|
92
95
|
|
|
93
96
|
**Spec sub-agent prompt** — include:
|
|
94
97
|
|
|
@@ -100,7 +103,7 @@ If the spec is missing, skip the Spec sub-agent and note this in the final repor
|
|
|
100
103
|
|
|
101
104
|
### 5. Aggregate
|
|
102
105
|
|
|
103
|
-
Present the reports under `## Standards` and `## Spec` headings, verbatim or lightly cleaned. If UI is in scope, add `## UI fidelity` from the separate pass. Do **not** merge or rerank findings — the axes are deliberately separate (see _Why separate axes_).
|
|
106
|
+
Present the reports under `## Standards` and `## Spec` headings, verbatim or lightly cleaned. If UI is in scope, add `## UI fidelity` from the separate pass. Fill `docs/templates/review-report-template.md` specialist tables as part of Standards evidence, not a fourth axis. Do **not** merge or rerank findings — the axes are deliberately separate (see _Why separate axes_). A YSS candidate with blank applicable specialist rows, skipped `required_skills`, or unaddressed mandatory violations is `blocked`, not `completed`. Do not close findings by writing implementation in the review session. `violation` / machine-check failure / blank applicable rows go back to the implementer on the original contract path, then recapture the candidate and rerun every axis. `drift` / `new_impacts` / `required_skills` mismatch mark the contract `stale` and return to Router; do not keep coding on the old contract. `not-applicable` is only for untriggered impacts; mandatory gates have no waiver, only repair or a complete `seam-deferred` record.
|
|
104
107
|
|
|
105
108
|
For Worktree mode, recapture the candidate digest after both reports return. If it differs from `candidate_digest`, mark both reports as reviewing a **stale candidate** and return `blocked`; the caller may start a new review against a new capture, but this invocation must not aggregate findings from different bytes. Recheck the same digest again at the completion/checkpoint boundary.
|
|
106
109
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# YSS 审查标准源与机器检查
|
|
2
|
+
|
|
3
|
+
本文件只服务唯一默认审查技能 `code-review`。Alibaba Java、YSS 前端 / 后端 skill 是 **Standards 轴的专项检查输入**,不是第二个通用审查 skill。
|
|
4
|
+
|
|
5
|
+
权威接线:`yss-product-lifecycle/references/orchestration-contract.yaml` 的 `work-unit.code-review.review_standards_route` 与 `review_input`。报告形状:`docs/templates/review-report-template.md`。
|
|
6
|
+
|
|
7
|
+
## 1. 编译标准源
|
|
8
|
+
|
|
9
|
+
按顺序收集,缺项写 `not-applicable` 及原因,不得省略适用项:
|
|
10
|
+
|
|
11
|
+
1. 仓库文档:`CODING_STANDARDS.md`、`CONTRIBUTING.md` 或实现仓等价文件(若存在)。
|
|
12
|
+
2. Slice Implementation Contract 的 `required_skills`:对每个技能读取 `.agents/skills/<id>/SKILL.md` 及该 skill 指明的 references。
|
|
13
|
+
3. 影响面专项检查输入(与合同并集,不得互相替代):
|
|
14
|
+
- 后端:`alibaba-java-code-style`、`yss-domain`、`yss-application`、`yss-repository`、`yss-web-controller`、`yss-dto`、`mapstruct`、`lombok`
|
|
15
|
+
- UI:`yss-ui`、`yss-design-system`、`yss-page-module-development`
|
|
16
|
+
4. 报告模板中的后端 / 前端门禁表。空着的适用行视为 `missing_evidence`。
|
|
17
|
+
|
|
18
|
+
YSS 页面模块约定(YTable、YssFormily、页面骨架等)走 Standards,不并入 UI fidelity。UI fidelity 只核原型与状态矩阵。
|
|
19
|
+
|
|
20
|
+
审查者只读这些 skill,不得用它们写实现路径。`role.test-engineer` 任务包禁止 `implement` 与脚手架生成器。
|
|
21
|
+
|
|
22
|
+
## 2. 机器检查
|
|
23
|
+
|
|
24
|
+
在派发 Standards / Spec 子审查之前,对实现仓**已登记且当前可执行**的命令实际跑一遍:
|
|
25
|
+
|
|
26
|
+
- 后端优先:切片合同里的 `./mvnw` 验证;若工程已配置 Checkstyle / P3C / Spotless / `validate`,一并执行。
|
|
27
|
+
- 前端优先:切片合同里的 `pnpm` 验证;若存在 `pnpm lint` / `pnpm type-check`,一并执行。
|
|
28
|
+
|
|
29
|
+
记录命令、退出码、时间和证据引用。退出码非 0 记为 Standards **hard violation**。
|
|
30
|
+
|
|
31
|
+
仓库没有对应工具时,该工具行写 `not-applicable` 加原因。可被工具检查的 Alibaba / ESLint 规则若工具没跑、LLM 也没按原文引用规则,不得记 `pass`。无法 lint 的分层、页面骨架、Formily 约定由 LLM 按 skill 原文引用。
|
|
32
|
+
|
|
33
|
+
## 3. 完成阻断
|
|
34
|
+
|
|
35
|
+
出现以下任一情况时,`work-unit.code-review` 不得 `completed`:
|
|
36
|
+
|
|
37
|
+
- 未消费合同 `required_skills` 或漏掉命中影响面的专项检查输入
|
|
38
|
+
- 报告模板适用行空白或只写“符合 YSS / 符合阿里规范”
|
|
39
|
+
- mandatory Alibaba 或 YSS 门禁 `violation` 未关闭
|
|
40
|
+
- 机器检查失败,或可检查规则既无工具结果也无原文引用
|
|
41
|
+
- 用第二个通用审查 skill 代替 `code-review`
|
|
42
|
+
|
|
43
|
+
## 4. Finding 分流与豁免
|
|
44
|
+
|
|
45
|
+
产品切片与模板维护使用**同一闭环**;只是强度不同:切片绑定当前 Slice Implementation Contract,模板维护绑定 L1 / L2 / L3。权威字段:`review_standards_route.finding_disposition`。
|
|
46
|
+
|
|
47
|
+
审查者只记录 finding,不得当场改实现代码。
|
|
48
|
+
|
|
49
|
+
| 类型 | 动作 |
|
|
50
|
+
|---|---|
|
|
51
|
+
| `violation`、机器检查失败、适用行空白、`missing_evidence` | 实现者在**原合同允许路径**内修复;任何修复使候选失效,必须重新捕获并重跑 Standards、Spec、UI fidelity(若命中)和 fresh verification |
|
|
52
|
+
| `drift`、`new_impacts`、`required_skills` 与真实影响不一致 | 合同标 `stale`,回 Router 或更早生命周期阶段;禁止在旧合同上继续编码 |
|
|
53
|
+
|
|
54
|
+
`not-applicable` 仅当影响面未命中。命中后的 mandatory 不得豁免;只允许修复,或写完整 `seam-deferred`(风险、责任人、后续 Ticket、验证计划、目标版本或发布日期)。禁止为日常 Alibaba / YSS 新增生物人豁免门禁;安全 / 公共 API 仍走既有 `TODO-HUMAN-REVIEW` 与生物人门禁。
|
|
@@ -11,30 +11,31 @@ description: 编排 YSS 产品或模块从机会调研到 Spec、原型、技术
|
|
|
11
11
|
|
|
12
12
|
1. 先读取 `yss-project.yaml`、`CONTEXT.md`、相关 ADR、父 Ticket/checkpoint 和当前资产。
|
|
13
13
|
2. `repository_mode=template-source` 只走模板维护流程;命中产品流程时返回 `blocked: template-source-product-artifact-forbidden`,不得生成产品 Spec、原型、OpenAPI 或切片 Ticket。
|
|
14
|
-
3. `repository_mode=project-instance` 以 `docs/process/lifecycle-registry.yaml`、`harness-process-tailoring.md` 和本目录 references
|
|
14
|
+
3. `repository_mode=project-instance` 以 `docs/process/lifecycle-registry.yaml`、`harness-process-tailoring.md` 和本目录 references 为唯一阶段、门禁和裁剪事实源;技能分层、别名、默认可发现性和运行时入口以 `docs/agents/yss-skill-registry.yaml`(`status: active`)为准,来源、版本、hash 和投影以 `skills-lock.json` 为准。数字人角色、阶段协作组、运行时绑定与会签级别以 `docs/agents/digital-human-roles.yaml` 为准;职称实例不另起编排器。
|
|
15
15
|
4. 模式:`route` 只读规划;`orchestrate` 有界推进;`resume` 重建后推进;`audit` 严格只读。未明确时使用 `route`。
|
|
16
16
|
|
|
17
17
|
Matt 的 `grill-with-docs`、`to-spec`、`to-tickets`、`implement` 等保留为显式兼容入口;默认路径是本 skill 持有的原生工作单元,由本编排器创建正式资产、维护状态并在会签门禁暂停(级别见数字人角色注册表)。兼容入口不得自动调用它们或代替其创建正式资产;Matt 只导航,不得写生命周期资产或改变门禁/Ticket 状态;任何写入前回交本编排器。
|
|
18
18
|
|
|
19
19
|
## 不可裁剪的主链
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
入口分诊 → Discovery → Spec / 功能架构 → 产品设计 → 系统 / 数据架构与工程契约 → Ticket 正式化 → 垂直切片实现(前后端 TDD)→ 验证 / 发布 / 复盘。
|
|
22
22
|
|
|
23
23
|
裁剪只允许将未命中的条件门禁标记为 `not-applicable` 并写原因;不得删除主阶段、已命中的门禁或必需产物。阶段是否完成取决于“内容 + 审查结论 + 上游新鲜度 + 可读证据”,文件存在不算通过。
|
|
24
24
|
|
|
25
25
|
## 阶段路由与技能
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
下表按 `lifecycle-registry.yaml` 的主阶段颗粒度编排;同一阶段内的多个工作单元、条件技能和门禁依赖以 references 为准。
|
|
28
|
+
|
|
29
|
+
| 主阶段 | 必需产物/门禁 | 原生工作单元与技能 | 通过条件 |
|
|
28
30
|
|---|---|---|---|
|
|
29
|
-
| 入口分诊 | 身份、影响面、最近可信阶段 | `yss-product-lifecycle` | `yss-project.yaml` 合法且影响面可解释 |
|
|
30
|
-
|
|
|
31
|
-
| Spec
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
| Ticket 正式化 | 功能父 Ticket、垂直切片、Slice Implementation Contract | 原生 `work-unit.ticket-decomposition`;`to-tickets` 为兼容入口;生命周期复算 | 依赖、验收、测试 seam
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
| 发布/复盘 | 发布/回滚证据、复盘记录 | 生命周期自有工作单元 | fresh verification、独立审查和发布裁决齐全;`gate.release-ready` 仍须生物人 |
|
|
31
|
+
| 入口分诊 `stage.entry-triage` | 身份、影响面、最近可信阶段 | `work-unit.entry-triage`;`yss-product-lifecycle` | `yss-project.yaml` 合法且影响面可解释 |
|
|
32
|
+
| Discovery `stage.discovery` | Discovery、用户/MVP/非目标/成功标准、测试 seam;命中 DDD 影响时补充领域战略设计与阶段决策包 | `work-unit.discovery-opportunity` + `work-unit.discovery-requirements` + `work-unit.domain-strategy-design` + `work-unit.stage-decision`;市场/竞品事实用 `competitive-intelligence`,技术/标准事实用 `research`;需求澄清用 `grilling`,领域建模用 `domain-modeling` / `yss-stage-decision`;`grill-with-docs` 为兼容入口 | 未决事实已 research 或 handoff,领域边界和统一语言可审查,阶段决策包完成必要批准;`gate.domain-strategy-approved`、`gate.stage-decision-package-approved` |
|
|
33
|
+
| Spec / 功能架构 `stage.spec-architecture` | Spec、产品总体设计、功能架构;必要时 Spec Delta | 原生 `work-unit.spec-synthesis`;`to-spec` 为兼容入口 | 初稿先为 `ready-for-human`;只有 Spec baseline 会签批准后资产才为 `approved` 并进入下游 |
|
|
34
|
+
| 产品设计 `stage.product-design` | 交互说明、低保真、状态矩阵、高保真 HTML、评审记录 | `work-unit.prototype-design`;`yss-design-system` → `prototype-review` → `yss-prototype-stage` → `yss-antd-design`(仅原型事实)→ Codex `product-design:index`(非 Codex 交付等价合同)。前端落地改用 `yss-ui` | `gate.prototype-reviewed`、`gate.prototype-verified`、`gate.user-confirmation` 均有证据 |
|
|
35
|
+
| 系统 / 数据架构与工程契约 `stage.system-data-engineering` | OpenAPI Draft/Freeze、数据架构、工程基线、架构审查;按领域影响执行 Tactical DDD Check | `work-unit.technical-analysis`;`yss-router` + `yss-openapi-governance` / `yss-openapi-draft-review`、`codebase-design`、`implementation-repo-onboarding`、`yss-tactical-design` | API/架构契约冻结;无 API 影响有明确记录;战术模型无未解释冲突;脚手架策略满足;`gate.openapi-draft-reviewed`、`gate.design-reviewed`、`gate.openapi-frozen`、`gate.engineering-baseline-accepted`、`gate.architecture-reviewed` |
|
|
36
|
+
| Ticket 正式化 `stage.ticket-formalization` | 功能父 Ticket、垂直切片、Slice Implementation Contract | 原生 `work-unit.ticket-decomposition`;`yss-router`;`to-tickets` 为兼容入口;生命周期复算 | 依赖、验收、测试 seam 可执行;合同已批准、持久化且为当前版本;`gate.slice-contract-approved`、`gate.slice-ready-for-agent` |
|
|
37
|
+
| 垂直切片实现 `stage.vertical-slice-implementation` | 前端/后端代码、TDD 证据、YSS Skill Execution Result | 原生 `work-unit.slice-implementation`;`yss-router` + `tdd`;前端按 `yss-ui` + `yss-page-module-development`,后端按 Router 最小闭包;`implement` 为兼容入口 | 仅接收已完成 Ticket 正式化、已绑定垂直切片且 `ready-for-agent` 公式通过的输入;只写允许路径;业务行为用 `tdd` 的 `behavior-tdd` 模式;UI 影响必须有还原计划 |
|
|
38
|
+
| 验证 / 发布 / 复盘 `stage.verification-release-retrospective` | 不可变候选快照、review 结论、fresh verification、发布 / 回滚证据、复盘记录 | `work-unit.frontend-implementation-verification` + `work-unit.code-review` + `work-unit.release-and-retrospective`;`code-review` 独立于实现者,Standards 消费合同 `required_skills` 与 YSS / Alibaba 专项检查输入;UI 影响追加 `yss-ui` + `yss-design-system` 的 UI fidelity 轴;发布 / 复盘由生命周期持有 | findings 已按合同分流处理(修复后全轴复审或 stale 回 Router);同一候选快照通过全部审查轴、专项覆盖与验证;UI 影响追加 `gate.frontend-implementation-verified`;`gate.release-ready` 仍须生物人 |
|
|
38
39
|
|
|
39
40
|
## 前端实现还原硬检查
|
|
40
41
|
|
|
@@ -26,7 +26,7 @@ Matt skills 决定如何工作;YSS 生命周期决定是否允许推进;YSS
|
|
|
26
26
|
| 切片 | 原生 `work-unit.ticket-decomposition`;`to-tickets`(用户显式兼容) | 仅在冻结/无影响记录后拆垂直切片,初始 Ticket 状态为 `ready-for-human` |
|
|
27
27
|
| 实现 | 原生 `work-unit.slice-implementation`;`implement`(用户显式兼容) | 当前合同批准并持久化后执行;内部使用 `tdd`,结果回交后再次核验 |
|
|
28
28
|
| Bug | `diagnosing-bugs`、`tdd` | 先建立红色反馈;高风险影响升级上游门禁 |
|
|
29
|
-
| 审查 | `code-review` |
|
|
29
|
+
| 审查 | `code-review` | 唯一默认代码审查入口;审查者独立且不得写实现;Standards 消费 Spec、仓库治理规则、Slice `required_skills` 和 YSS / Alibaba 专项检查输入;finding 按合同分流修复或 stale 回 Router |
|
|
30
30
|
| 跨上下文 | `handoff` | 保存来源、阶段、未决项、命令和下一责任人 |
|
|
31
31
|
| 阶段边界 | `PHASE-BOUNDARIES.md` | 按 `Continue → /clear → /handoff → subagent → /compact` 选择上下文动作;只记录证据,不扩展生命周期状态 |
|
|
32
32
|
| 解释未落地 | `wait-what` | 只重新解释当前结论,不改变阶段、门禁、Ticket 或 `ready-for-agent` |
|
|
@@ -76,7 +76,7 @@ Router 状态映射为:`draft → completed`、`blocked → blocked`、`ready-
|
|
|
76
76
|
|
|
77
77
|
## Review 候选与 Git 授权
|
|
78
78
|
|
|
79
|
-
YSS 调用 `code-review` 前必须形成 review input,至少包含 `review_mode`、`review_base_ref`、`implementation_candidate_ref`、`candidate_snapshot_ref`、`candidate_digest`、`spec_ref`、`ticket_ref`、`slice_contract_ref`、`build_architecture_checklist_ref` 和 `yss_execution_result_refs`,并满足 `orchestration-contract.yaml.review_input.manifest_required_by_mode
|
|
79
|
+
YSS 调用 `code-review` 前必须形成 review input,至少包含 `review_mode`、`review_base_ref`、`implementation_candidate_ref`、`candidate_snapshot_ref`、`candidate_digest`、`spec_ref`、`ticket_ref`、`slice_contract_ref`、`build_architecture_checklist_ref` 和 `yss_execution_result_refs`,并满足 `orchestration-contract.yaml.review_input.manifest_required_by_mode`。Standards 还必须编译 `review_standards_route`:合同 `required_skills`、影响面专项检查输入、报告模板与 `finding_disposition`;机器检查按 `run_if_present` 执行。`committed` 审查 merge-base 到不可变 `HEAD`;`worktree` 一次捕获 merge-base 到 working tree 的 committed、staged、unstaged 和 untracked 内容,使用 `yss-worktree-candidate-v1` 规定的 raw path、uint64 big-endian 长度、tracked/untracked record 和不支持条目阻断规则计算 SHA-256,让两个 Reviewer 消费同一不可变快照,并在返回和完成 checkpoint 复核摘要未变化。缺少输入、候选为空、专项覆盖缺失、未关闭 mandatory `violation`、适用行空白或摘要变化时返回 `blocked`,不能缩小审查范围、另起通用审查 skill、由审查者改实现,或合并不同候选的结论。`violation` 类 finding 交实现者在原合同路径修复后全轴复审;`drift` / `new_impacts` 使合同 `stale` 并回 Router。
|
|
80
80
|
|
|
81
81
|
Matt `implement` 的通用提交指令不构成 YSS Git 授权。只有用户明确给出 `commit_authorized` 为 `true`、非空 `commit_scope` 和 `commit_authorization_ref` 时才能 commit;只有明确给出 `push_authorized` 为 `true`、非空 `push_scope` 和 `push_authorization_ref` 时才能 push。缺少任一字段时保持工作区不变,只输出 checkpoint 判断;不得把 `orchestrate`、实现授权、当前分支、测试通过或负责人要求解释为隐含授权。`git-submodule` 还必须按仓授权、禁止 detached HEAD 提交,并先推子仓再更新父仓 gitlink。
|
|
82
82
|
|
package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml
CHANGED
|
@@ -308,8 +308,46 @@ work_unit_routes:
|
|
|
308
308
|
work-unit.code-review:
|
|
309
309
|
native: {source: yss-product-lifecycle, skill: code-review, invocation_mode: model-invoked}
|
|
310
310
|
primary_skill: code-review
|
|
311
|
-
supporting_skills: []
|
|
312
|
-
skills: [code-review]
|
|
311
|
+
supporting_skills: [alibaba-java-code-style, yss-ui, yss-design-system, yss-page-module-development, yss-domain, yss-application, yss-repository, yss-web-controller, yss-dto, mapstruct, lombok]
|
|
312
|
+
skills: [code-review, alibaba-java-code-style, yss-ui, yss-design-system, yss-page-module-development, yss-domain, yss-application, yss-repository, yss-web-controller, yss-dto, mapstruct, lombok]
|
|
313
|
+
review_standards_route:
|
|
314
|
+
unique_default_skill: code-review
|
|
315
|
+
second_generic_review_skill: forbidden
|
|
316
|
+
report_template: docs/templates/review-report-template.md
|
|
317
|
+
contract_required_skills: required
|
|
318
|
+
write_implementation: forbidden
|
|
319
|
+
machine_checks:
|
|
320
|
+
run_if_present: true
|
|
321
|
+
missing_tooling: not-applicable-with-reason
|
|
322
|
+
checkable_rule_without_machine: not-a-pass
|
|
323
|
+
conditional_skills:
|
|
324
|
+
backend_impact: [alibaba-java-code-style, yss-domain, yss-application, yss-repository, yss-web-controller, yss-dto, mapstruct, lombok]
|
|
325
|
+
ui_impact: [yss-ui, yss-design-system, yss-page-module-development]
|
|
326
|
+
not_applicable_reasons:
|
|
327
|
+
backend_impact: no_backend_impact
|
|
328
|
+
ui_impact: no_ui_impact
|
|
329
|
+
finding_disposition:
|
|
330
|
+
same_loop_for: [product-slice, template-maintenance]
|
|
331
|
+
intensity:
|
|
332
|
+
product-slice: slice-contract
|
|
333
|
+
template-maintenance: L1-L2-L3
|
|
334
|
+
reviewer_write_implementation: forbidden
|
|
335
|
+
repair_then_full_rereview:
|
|
336
|
+
kinds: [violation, machine_check_failure, blank_applicable_row, missing_evidence]
|
|
337
|
+
actor: implementer
|
|
338
|
+
on_original_contract: true
|
|
339
|
+
then: recapture_candidate_and_rerun_all_axes
|
|
340
|
+
stale_and_reroute:
|
|
341
|
+
kinds: [drift, new_impacts, required_skills_mismatch]
|
|
342
|
+
mark_contract: stale
|
|
343
|
+
continue_coding_on_old_contract: forbidden
|
|
344
|
+
next: router-or-earlier-lifecycle
|
|
345
|
+
exemption_policy:
|
|
346
|
+
not_applicable: impact_not_triggered_only
|
|
347
|
+
mandatory_waiver: forbidden
|
|
348
|
+
allowed_exits: [repair, seam-deferred-complete]
|
|
349
|
+
new_human_waiver_gate: forbidden
|
|
350
|
+
existing_human_gates_unchanged: true
|
|
313
351
|
applies_when: implementation_candidate_exists
|
|
314
352
|
not_applicable_reason: no_implementation_candidate
|
|
315
353
|
work-unit.release-and-retrospective:
|
|
@@ -394,7 +432,15 @@ review_input:
|
|
|
394
432
|
schema_version: 1
|
|
395
433
|
required: [review_mode, review_base_ref, implementation_candidate_ref, candidate_snapshot_ref, candidate_digest, spec_ref, ticket_ref, slice_contract_ref, build_architecture_checklist_ref, yss_execution_result_refs]
|
|
396
434
|
nullable: [spec_ref]
|
|
435
|
+
unique_default_skill: code-review
|
|
436
|
+
second_generic_review_skill: forbidden
|
|
397
437
|
axes: [standards, spec, ui_fidelity_if_ui_impact]
|
|
438
|
+
standards_sources: [repo_coding_standards, slice_contract_required_skills, specialist_check_inputs, review_report_template]
|
|
439
|
+
completed_requires_specialist_coverage: true
|
|
440
|
+
finding_disposition_required: true
|
|
441
|
+
completed_requires_no_open_mandatory_violations: true
|
|
442
|
+
completed_requires_no_blank_applicable_rows: true
|
|
443
|
+
reviewer_write_implementation: forbidden
|
|
398
444
|
repair_invalidates_candidate: true
|
|
399
445
|
repair_action: recapture_candidate_and_rerun_all_axes
|
|
400
446
|
modes: [committed, worktree]
|
|
@@ -65,7 +65,9 @@ tracker 选择和冲突按 `docs/agents/issue-tracker.md` 裁决:已持久化
|
|
|
65
65
|
- 调用 `code-review` 前先固定 review input:`review_mode`、`review_base_ref`、`implementation_candidate_ref`、`candidate_snapshot_ref`、`candidate_digest`、Spec/Ticket、Slice Implementation Contract、Build Architecture Checklist 和 YSS Skill Execution Result 引用。`committed` 模式审查不可变 `HEAD`;`worktree` 模式一次捕获 committed、staged、unstaged 和 untracked 内容。必须按 `orchestration-contract.yaml.review_input` 的 manifest 按模式必填字段及 `yss-worktree-candidate-v1` 字节流(raw path、uint64 big-endian 长度、tracked/untracked record)计算 SHA-256,两个 Reviewer 必须消费同一不可变快照。返回后或完成 checkpoint 摘要变化时返回 `blocked`,由编排器决定重新审查。候选为空、漏项或 fixed point 不可解析时阻断。
|
|
66
66
|
- 小改动和中等变更可由同一独立执行者完成 `code-review` 与 fresh verification,并在同一报告中分别记录 findings、命令、结果和残余风险。
|
|
67
67
|
- 该执行者必须独立于实现者;新模块、高风险变更、职责冲突或需双人控制时,Reviewer 与 Verifier 分开。
|
|
68
|
-
- `code-review` 是唯一默认代码审查 skill。GitLab、CI、Sonar、Alibaba Java
|
|
68
|
+
- `code-review` 是唯一默认代码审查 skill。GitLab、CI、Sonar、Alibaba Java 与 YSS 前端 / 后端 skill 作为仓库规则或专项检查输入接入 Standards 轴,由 `review_standards_route` 按影响面编译;不再叠加第二个通用审查 skill。漏掉合同 `required_skills`、适用报告行空白、mandatory `violation` 未关闭或可机器检查规则既无工具结果也无原文引用时,不得 `completed`。
|
|
69
|
+
- 产品切片与模板维护共用同一 finding 闭环,强度分别绑定 Slice 合同与 L1 / L2 / L3。`violation`、机器检查失败、适用行空白由实现者在原合同路径修复,再重新捕获候选并全轴复审。`drift`、`new_impacts`、`required_skills` 与真实影响不一致时合同 `stale`,回 Router 或更早阶段,禁止在旧合同上继续编码。审查者不得写实现。`not-applicable` 仅当影响面未命中;命中后 mandatory 不得豁免,只允许修复或完整 `seam-deferred`。禁止为日常 Alibaba / YSS 新增生物人豁免门禁。
|
|
70
|
+
- 独立 Reviewer 必须与实现者不同实例,并在能执行已登记 `pnpm` / `./mvnw` 的运行时中审查。模板源 `.cursor/environment.json` 只服务模板校验,不替代实现仓审查运行时。不为此再创建第二个 Cloud 审查环境或 `/code-review` skill。
|
|
69
71
|
- UI 影响切片将 `UI fidelity` 作为 `code-review` 的条件第三轴;任何修复都会使候选摘要失效,必须重新捕获候选并重跑 Standards、Spec、UI fidelity 和 fresh verification。
|
|
70
72
|
|
|
71
73
|
## Git 授权
|