create-yss-spec 2.1.9 → 2.1.10

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.
Files changed (119) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/cli.js +82 -15
  4. package/template/.agents/skills/diagnosing-bugs/SKILL.md +2 -4
  5. package/template/.agents/skills/domain-modeling/SKILL.md +1 -1
  6. package/template/.agents/skills/grilling/SKILL.md +7 -1
  7. package/template/.agents/skills/triage/SKILL.md +2 -2
  8. package/template/.agents/skills/wait-what/SKILL.md +2 -2
  9. package/template/.agents/skills/wayfinder/SKILL.md +1 -1
  10. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +43 -91
  11. package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
  12. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
  13. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +5 -4
  14. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +4 -1
  15. package/template/.claude/skills/diagnosing-bugs/SKILL.md +2 -4
  16. package/template/.claude/skills/domain-modeling/SKILL.md +1 -1
  17. package/template/.claude/skills/grilling/SKILL.md +7 -1
  18. package/template/.claude/skills/triage/SKILL.md +2 -2
  19. package/template/.claude/skills/wait-what/SKILL.md +2 -2
  20. package/template/.claude/skills/wayfinder/SKILL.md +1 -1
  21. package/template/.claude/skills/yss-product-lifecycle/SKILL.md +43 -91
  22. package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
  23. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
  24. package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +5 -4
  25. package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +4 -1
  26. package/template/.codex/skills/diagnosing-bugs/SKILL.md +2 -4
  27. package/template/.codex/skills/domain-modeling/SKILL.md +1 -1
  28. package/template/.codex/skills/grilling/SKILL.md +7 -1
  29. package/template/.codex/skills/triage/SKILL.md +2 -2
  30. package/template/.codex/skills/wait-what/SKILL.md +2 -2
  31. package/template/.codex/skills/wayfinder/SKILL.md +1 -1
  32. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +43 -91
  33. package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
  34. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
  35. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +5 -4
  36. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +4 -1
  37. package/template/.hermes/skills/diagnosing-bugs/SKILL.md +2 -4
  38. package/template/.hermes/skills/domain-modeling/SKILL.md +1 -1
  39. package/template/.hermes/skills/grilling/SKILL.md +7 -1
  40. package/template/.hermes/skills/triage/SKILL.md +2 -2
  41. package/template/.hermes/skills/wait-what/SKILL.md +2 -2
  42. package/template/.hermes/skills/wayfinder/SKILL.md +1 -1
  43. package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +43 -91
  44. package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
  45. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
  46. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +5 -4
  47. package/template/.hermes/skills/yss-product-lifecycle/references/state-model.md +4 -1
  48. package/template/.pi/skills/diagnosing-bugs/SKILL.md +2 -4
  49. package/template/.pi/skills/domain-modeling/SKILL.md +1 -1
  50. package/template/.pi/skills/grilling/SKILL.md +7 -1
  51. package/template/.pi/skills/triage/SKILL.md +2 -2
  52. package/template/.pi/skills/wait-what/SKILL.md +2 -2
  53. package/template/.pi/skills/wayfinder/SKILL.md +1 -1
  54. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +43 -91
  55. package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
  56. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
  57. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +5 -4
  58. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +4 -1
  59. package/template/.qoder/skills/diagnosing-bugs/SKILL.md +2 -4
  60. package/template/.qoder/skills/domain-modeling/SKILL.md +1 -1
  61. package/template/.qoder/skills/grilling/SKILL.md +7 -1
  62. package/template/.qoder/skills/triage/SKILL.md +2 -2
  63. package/template/.qoder/skills/wait-what/SKILL.md +2 -2
  64. package/template/.qoder/skills/wayfinder/SKILL.md +1 -1
  65. package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +43 -91
  66. package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
  67. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
  68. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +5 -4
  69. package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +4 -1
  70. package/template/.trae/skills/diagnosing-bugs/SKILL.md +2 -4
  71. package/template/.trae/skills/domain-modeling/SKILL.md +1 -1
  72. package/template/.trae/skills/grilling/SKILL.md +7 -1
  73. package/template/.trae/skills/triage/SKILL.md +2 -2
  74. package/template/.trae/skills/wait-what/SKILL.md +2 -2
  75. package/template/.trae/skills/wayfinder/SKILL.md +1 -1
  76. package/template/.trae/skills/yss-product-lifecycle/SKILL.md +43 -91
  77. package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
  78. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
  79. package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +5 -4
  80. package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +4 -1
  81. package/template/AGENTS.md +2 -2
  82. package/template/CONTEXT.md +7 -1
  83. package/template/docs/adr/0007-lifecycle-native-work-units.md +5 -0
  84. package/template/docs/agents/skills-maintenance.md +11 -3
  85. package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +1 -1
  86. package/template/docs/process/lifecycle-artifact-map.md +19 -15
  87. package/template/docs/process/lifecycle-registry-baseline.json +15 -1
  88. package/template/docs/process/lifecycle-registry.yaml +77 -0
  89. package/template/docs/process/schemas/frontend-implementation-evidence.schema.json +39 -0
  90. package/template/docs/process/schemas/lifecycle-checkpoint.schema.json +56 -0
  91. package/template/docs/process/schemas/lifecycle-registry.schema.json +2 -2
  92. package/template/docs/process/templates/frontend-implementation-plan-template.yaml +16 -0
  93. package/template/docs/process/templates/frontend-implementation-verification-template.yaml +21 -0
  94. package/template/docs/process/templates/lifecycle-checkpoint-template.yaml +30 -0
  95. package/template/docs/process/templates/stage-checkpoint-template.md +9 -5
  96. package/template/scripts/lib/lifecycle-registry.mjs +9 -4
  97. package/template/scripts/lib/scenario-checks.mjs +37 -15
  98. package/template/scripts/lib/skill-supply-chain.mjs +33 -8
  99. package/template/scripts/verify-frontend-implementation-evidence +51 -0
  100. package/template/scripts/verify-lifecycle-checkpoint +37 -0
  101. package/template/scripts/verify-template +5 -2
  102. package/template/scripts/verify-upstream-skill-source +32 -0
  103. package/template/skills-lock.json +105 -55
  104. package/template.manifest.json +12 -0
  105. package/template.snapshot.json +4 -4
  106. package/template/.agents/skills/batch-grill-me/SKILL.md +0 -15
  107. package/template/.agents/skills/batch-grill-me/agents/openai.yaml +0 -5
  108. package/template/.claude/skills/batch-grill-me/SKILL.md +0 -15
  109. package/template/.claude/skills/batch-grill-me/agents/openai.yaml +0 -5
  110. package/template/.codex/skills/batch-grill-me/SKILL.md +0 -15
  111. package/template/.codex/skills/batch-grill-me/agents/openai.yaml +0 -5
  112. package/template/.hermes/skills/batch-grill-me/SKILL.md +0 -15
  113. package/template/.hermes/skills/batch-grill-me/agents/openai.yaml +0 -5
  114. package/template/.pi/skills/batch-grill-me/SKILL.md +0 -15
  115. package/template/.pi/skills/batch-grill-me/agents/openai.yaml +0 -5
  116. package/template/.qoder/skills/batch-grill-me/SKILL.md +0 -15
  117. package/template/.qoder/skills/batch-grill-me/agents/openai.yaml +0 -5
  118. package/template/.trae/skills/batch-grill-me/SKILL.md +0 -15
  119. package/template/.trae/skills/batch-grill-me/agents/openai.yaml +0 -5
@@ -92,41 +92,79 @@ workflow_execution_result:
92
92
  completed_requires_no_blocking_signals: true
93
93
  workflow_reference:
94
94
  required: [source, skill, invocation_mode]
95
- source: mattpocock/skills
95
+ allowed_sources: [yss-product-lifecycle, mattpocock/skills]
96
96
 
97
97
  # Matt user-invoked skills remain explicit user entry points. Lifecycle work units
98
98
  # may prepare, validate and accept their results, but cannot invoke them or create
99
99
  # their formal artifacts on their behalf.
100
100
  matt_invocation_boundary:
101
- user_invoked_skills: [ask-matt, batch-grill-me, grill-me, grill-with-docs, handoff, implement, improve-codebase-architecture, loop-me, setup-matt-pocock-skills, setup-ts-deep-modules, teach, to-questionnaire, to-spec, to-tickets, triage, wait-what, wayfinder, writing-beats, writing-fragments, writing-shape]
101
+ user_invoked_skills: [ask-matt, grill-me, grill-with-docs, handoff, implement, improve-codebase-architecture, loop-me, setup-matt-pocock-skills, setup-ts-deep-modules, teach, to-questionnaire, to-spec, to-tickets, triage, wait-what, wayfinder, writing-beats, writing-fragments, writing-shape]
102
102
  lifecycle_managed_user_entries: [setup-matt-pocock-skills, grill-with-docs, to-spec, to-tickets, implement]
103
- model_invoked_skills: [grilling, domain-modeling, code-review]
103
+ model_invoked_skills: [code-review, codebase-design, diagnosing-bugs, domain-modeling, grilling, migrate-to-shoehorn, prototype, research, resolving-merge-conflicts, scaffold-exercises, setup-pre-commit, tdd, writing-for-agents]
104
+ lifecycle_allowed_model_invoked_skills: [code-review, codebase-design, diagnosing-bugs, domain-modeling, grilling, prototype, research, tdd]
104
105
  lifecycle_may_invoke_user_invoked: false
105
106
  formal_artifact_owner: explicit-user-entry
106
- continuous_orchestration: prepare-and-validate-only
107
+ continuous_orchestration: compatibility-prepare-and-validate-only
107
108
  direct_user_entry: lifecycle-validate-and-accept
108
109
 
109
- lifecycle_workflow_references:
110
- work-unit.discovery-interview:
111
- invocation_mode: model-invoked
110
+ skill_source_contract:
111
+ lock_version: 3
112
+ source_revisions_required: [mattpocock/skills]
113
+ adaptation_ref_required_when_effective_diff: true
114
+ retired_shared_skills: [batch-grill-me]
115
+
116
+ # 生命周期默认走原生工作单元;Matt user-invoked skill 仅保留为兼容入口。
117
+ lifecycle_native_entries:
118
+ default_entry: yss-product-lifecycle
119
+ formal_artifact_owner: yss-product-lifecycle
120
+ user_confirmation_required_at: [spec-baseline, prototype-confirmation, openapi-freeze, merge-or-release]
121
+ compatibility_entries:
122
+ to-spec: lifecycle-validate-and-accept
123
+ to-tickets: lifecycle-validate-and-accept
124
+ implement: lifecycle-validate-and-accept
125
+
126
+ work_unit_routes:
127
+ work-unit.discovery-opportunity:
128
+ native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
129
+ skills: [competitive-intelligence, research]
130
+ route_by: {market_or_competitor_fact: competitive-intelligence, technical_or_standard_fact: research, no_external_fact: yss-product-lifecycle}
131
+ work-unit.discovery-requirements:
132
+ native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
112
133
  skills: [grilling, domain-modeling]
113
134
  work-unit.spec-synthesis:
114
- workflow_reference: to-spec
115
- invocation_mode: reference
116
- formal_artifact_owner: explicit-user-entry
135
+ native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
136
+ compatibility: {source: mattpocock/skills, skill: to-spec, invocation_mode: reference, formal_artifact_owner: explicit-user-entry}
137
+ skills: [domain-modeling]
138
+ human_gate: spec-baseline
139
+ work-unit.prototype-design:
140
+ native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
141
+ skills: [yss-design-system, yss-prototype-stage, product-design:index]
142
+ human_gate: prototype-confirmation
143
+ work-unit.technical-analysis:
144
+ native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
145
+ skills: [yss-openapi-governance, yss-openapi-draft-review, codebase-design, implementation-repo-onboarding, yss-router]
146
+ human_gate: openapi-freeze_if_api_impact
117
147
  work-unit.ticket-decomposition:
118
- workflow_reference: to-tickets
119
- invocation_mode: reference
120
- formal_artifact_owner: explicit-user-entry
148
+ native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
149
+ compatibility: {source: mattpocock/skills, skill: to-tickets, invocation_mode: reference, formal_artifact_owner: explicit-user-entry}
150
+ skills: [yss-router]
121
151
  work-unit.slice-implementation:
122
- workflow_reference: implement
123
- invocation_mode: reference
124
- formal_artifact_owner: explicit-user-entry
152
+ native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
153
+ compatibility: {source: mattpocock/skills, skill: implement, invocation_mode: reference, formal_artifact_owner: explicit-user-entry}
154
+ skills: [tdd, yss-router, yss-ui, yss-page-module-development]
155
+ work-unit.frontend-implementation-verification:
156
+ native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
157
+ skills: [yss-ui, yss-design-system, code-review]
158
+ applies_when: ui_impact
125
159
  work-unit.code-review:
126
- invocation_mode: model-invoked
127
- skill: code-review
160
+ native: {source: yss-product-lifecycle, skill: code-review, invocation_mode: model-invoked}
161
+ skills: [code-review]
162
+ work-unit.release-and-retrospective:
163
+ native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
164
+ skills: [yss-product-lifecycle]
165
+ human_gate: merge_or_release
128
166
 
129
- flow_preconditions:
167
+ compatibility_flow_preconditions:
130
168
  to-spec:
131
169
  required: [grill_exit, no_unresolved_runnable_blocker]
132
170
  evidence: [user_problem, mvp_and_non_goals, success_criteria, test_seam, terminology_review]
@@ -136,7 +174,7 @@ flow_preconditions:
136
174
  output: vertical-slice-tickets
137
175
  output_role: ready-for-human
138
176
  implement:
139
- required: [ready_for_agent, slice_contract_approved, slice_contract_persisted, slice_contract_current_version, build_architecture_checklist, implementation_repo, implementation_branch, ci, verification_commands, rollback_point, backend_slice_contract_if_applicable, backend_scaffold_policy_satisfied]
177
+ required: [ready_for_agent, slice_contract_approved, slice_contract_persisted, slice_contract_current_version, build_architecture_checklist, implementation_repo, implementation_branch, ci, verification_commands, rollback_point, backend_slice_contract_if_applicable, backend_scaffold_policy_satisfied, frontend_implementation_plan_if_ui_impact]
140
178
  applies_to_single_session: true
141
179
 
142
180
  grill_exit:
@@ -159,6 +197,9 @@ review_input:
159
197
  schema_version: 1
160
198
  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]
161
199
  nullable: [spec_ref]
200
+ axes: [standards, spec, ui_fidelity_if_ui_impact]
201
+ repair_invalidates_candidate: true
202
+ repair_action: recapture_candidate_and_rerun_all_axes
162
203
  modes: [committed, worktree]
163
204
  committed:
164
205
  candidate_ref: HEAD
@@ -328,14 +369,39 @@ setup_readiness:
328
369
 
329
370
  lifecycle_owned_work_units: [release, retrospective]
330
371
  lifecycle_work_unit_requirements:
331
- release: [fresh_verification, release_or_rollback_evidence, independent_review]
372
+ release: [fresh_verification, release_or_rollback_evidence, independent_review, all_triggered_gates_approved_or_not_applicable]
332
373
  retrospective: [fresh_verification, retrospective_record, governance_reflow_decision]
333
374
 
375
+ release_readiness:
376
+ required: [fresh_verification, release_or_rollback_evidence, independent_review, all_triggered_gates_approved_or_not_applicable]
377
+ conditional:
378
+ ui_impact: [gate.frontend-implementation-verified, evidence.frontend-implementation-verification]
379
+ blocked_when: [triggered_gate_blocked, triggered_gate_stale, triggered_gate_not_evaluated, missing_evidence]
380
+
334
381
  wayfinder_completion:
335
382
  required: [no_open_children, no_open_blocked_or_claimed_children, no_fog, destination_clear]
336
383
 
337
384
  ready_for_agent:
338
- required: [gates_satisfied, no_stale_artifacts, blockers_closed, implementation_context_ready, implementation_repo, implementation_branch, ci, verification_commands, rollback_point, slice_contract_approved, slice_contract_persisted, slice_contract_current_version, build_architecture_checklist, backend_slice_contract_if_applicable, backend_scaffold_policy_satisfied]
385
+ required: [gates_satisfied, no_stale_artifacts, blockers_closed, implementation_context_ready, implementation_repo, implementation_branch, ci, verification_commands, rollback_point, slice_contract_approved, slice_contract_persisted, slice_contract_current_version, build_architecture_checklist, backend_slice_contract_if_applicable, backend_scaffold_policy_satisfied, frontend_implementation_plan_if_ui_impact]
386
+
387
+ frontend_implementation_plan:
388
+ applies_when: [ui_impact]
389
+ required_before: [ready_for_agent]
390
+ required: [prototype_ref, spec_ref, route_and_page_inventory, visual_acceptance_cases, desktop_viewport, narrow_viewport, state_cases, pnpm_commands]
391
+ schema: docs/process/schemas/frontend-implementation-evidence.schema.json
392
+ validator: scripts/verify-frontend-implementation-evidence
393
+ acceptance: [kind_plan, template_false, status_approved, no_template_placeholders, readable_baseline_refs, non_empty_acceptance_cases]
394
+
395
+ frontend_implementation_verification:
396
+ applies_when: [ui_impact]
397
+ required_before: [release]
398
+ required: [prototype_ref, spec_ref, route_and_page_inventory, desktop_visual_evidence, narrow_view_visual_evidence, loading_empty_error_permission_interaction_results, console_warning_check, pnpm_commands, uncovered_differences, difference_owner]
399
+ verification: [actual_command, exit_code, executed_at, evidence_ref]
400
+ schema: docs/process/schemas/frontend-implementation-evidence.schema.json
401
+ validator: scripts/verify-frontend-implementation-evidence
402
+ acceptance: [kind_verification, template_false, status_approved, no_template_placeholders, console_warning_pass, independent_review_approved]
403
+ blocked_when: [unexplained_visual_difference, missing_visual_evidence, typecheck_only, claimed_alignment_without_evidence]
404
+ on_new_impact: [new_impacts, drift, reroute]
339
405
 
340
406
  unknown_impact:
341
407
  action: pause
@@ -6,7 +6,7 @@
6
6
  2. `setup readiness`:每个任务只执行一次,核对 tracker、五态标签和领域文档布局,并在本轮缓存结果;仅在 tracker、主远端、真实标签或配置变化时重查。
7
7
  3. 加载父 Ticket/checkpoint 与真实资产,计算最近可信阶段。
8
8
  4. 评估资产、门禁和 `stale`,选择第一个未阻塞工作单元。
9
- 5. 执行最小生命周期工作单元:只实际调用允许的 model-invoked skill;Matt user-invoked skill 仅作为 workflow reference。将结果归一化为 `Workflow Execution Result`,验收输出并回写状态与证据。
9
+ 5. 执行最小生命周期工作单元:只实际调用允许的 model-invoked skill;原生工作单元可直接持有正式资产,Matt 兼容 user-invoked skill 仅作为 workflow reference,仍由用户显式启动。将结果归一化为 `Workflow Execution Result`,验收输出并回写状态与证据。
10
10
  6. 若仍在授权和自动推进边界内,回到第 3 步;否则暂停。
11
11
 
12
12
  不要仅输出下一个提示词后结束 `orchestrate`/`resume`。不要因进入业务代码阶段而退出主控;应把实现交给专项 skill,并在返回后继续核验。
@@ -51,9 +51,9 @@ tracker 选择和冲突按 `docs/agents/issue-tracker.md` 裁决:已持久化
51
51
 
52
52
  ## Matt flow 进入条件
53
53
 
54
- - `work-unit.discovery-interview` 实际调用 `grilling` 和 `domain-modeling`。`to-spec` 只能由用户显式启动;生命周期仅在其前准备并验收,正式 Spec 默认为 `ready-for-human`。
55
- - `to-tickets` 只能由用户显式启动;生命周期仅在 OpenAPI Freeze 或无 API 影响记录后准备和验收垂直切片,初始角色统一为 `ready-for-human`。
56
- - `implement` 只能由用户显式启动;无论多会话还是单会话,生命周期都在其前后核验 `ready-for-agent` 公式、批准并持久化的 Slice Implementation Contract 和 Build Architecture Checklist。
54
+ - `work-unit.discovery-requirements` 实际调用 `grilling` 和 `domain-modeling`;`work-unit.discovery-opportunity` 按事实类型路由 `competitive-intelligence` 或 `research`。生命周期原生工作单元默认负责 Spec、Ticket 和实现资产;`to-spec`、`to-tickets`、`implement` 仅保留为显式兼容入口,结果必须回交生命周期验收。
55
+ - 原生 `work-unit.ticket-decomposition` 只能在 OpenAPI Freeze 或无 API 影响记录后创建垂直切片,初始角色统一为 `ready-for-human`;生命周期复算完整公式后才能提升 `ready-for-agent`。
56
+ - 原生 `work-unit.slice-implementation` 必须在生命周期批准并持久化 Slice Implementation Contract 和 Build Architecture Checklist 后执行;用户显式 `implement` 仍走兼容入口,不得绕过生命周期。
57
57
  - `implement` 遇到 backend `scaffold_status=required` 时,还必须满足原型确认后的脚手架策略:脚手架 Execution Result、`yss-backend-scaffold-parent` 基线、Wrapper 验证和 Router 合同重编译均已回写;否则停在工程基线,不得写业务代码。
58
58
  - `Workflow Execution Result` 出现 `drift`、`new_impacts`、`stale_candidates`、`violation`、`missing_evidence`、空 `evidence_refs` 或缺少必需字段时暂停当前工作单元;旧结果只能先经只读兼容 adapter 归一化。
59
59
 
@@ -63,6 +63,7 @@ tracker 选择和冲突按 `docs/agents/issue-tracker.md` 裁决:已持久化
63
63
  - 小改动和中等变更可由同一独立执行者完成 `code-review` 与 fresh verification,并在同一报告中分别记录 findings、命令、结果和残余风险。
64
64
  - 该执行者必须独立于实现者;新模块、高风险变更、职责冲突或需双人控制时,Reviewer 与 Verifier 分开。
65
65
  - `code-review` 是唯一默认代码审查 skill。GitLab、CI、Sonar、Alibaba Java 等治理事实作为仓库规则或专项检查输入,不再叠加第二个通用审查 skill。
66
+ - UI 影响切片将 `UI fidelity` 作为 `code-review` 的条件第三轴;任何修复都会使候选摘要失效,必须重新捕获候选并重跑 Standards、Spec、UI fidelity 和 fresh verification。
66
67
 
67
68
  ## Git 授权
68
69
 
@@ -46,10 +46,13 @@ AND 当前工作单元消费的 contract_id/version 与最新批准版本一致
46
46
  AND Backend Slice Implementation Contract(后端适用)和 Build Architecture Checklist 已完成
47
47
  AND backend 影响且 scaffold_status=required 时,原型确认后的脚手架策略、`yss-backend-scaffold-parent` 基线、Wrapper 验证和 Router 重编译均已完成
48
48
  AND 所有后续生成代码均绑定主 YSS skill、依赖闭包、允许写路径、预期证据和 YSS Skill Execution Result
49
+ AND UI 影响切片的前端实现还原计划已通过 schema 校验、`template=false`、`status=approved`,且基线引用可读取
49
50
  ```
50
51
 
51
52
  父 Ticket、Spec、设计、原型、OpenAPI Draft、wayfinder map 和 decision ticket 不得使用 `ready-for-agent`。
52
53
 
54
+ 发布前还必须满足所有已触发门禁均为 `approved` 或 `not-applicable`;UI 影响切片必须额外通过 `gate.frontend-implementation-verified`,不能只凭 fresh verification 和回滚点放行。
55
+
53
56
  用户显式运行 `to-tickets` 后,垂直切片初始角色固定为 `ready-for-human`。只有 `yss-product-lifecycle` 复算上述公式全部为真后,才能把它提升为 `ready-for-agent`;生命周期不会自动调用 `to-tickets`,其默认标签也不参与该裁决。
54
57
 
55
58
  ## Review 与 Git 授权状态
@@ -60,7 +63,7 @@ Git 动作分别保存 `commit_authorized`、`commit_scope`、`commit_authorizat
60
63
 
61
64
  ## 状态块
62
65
 
63
- 状态块位于主 tracker 的功能父 Ticket;Local Markdown 使用 `docs/.scratch/<feature>/parent-ticket.md`,远程 tracker 使用 Issue 并在本地功能包保留引用。平台不可用时才位于 stage checkpoint。只保存索引、状态、引用和因果关系:
66
+ 状态块位于主 tracker 的功能父 Ticket,并使用 `docs/process/templates/lifecycle-checkpoint-template.yaml` 的结构化形状和 `lifecycle-checkpoint.schema.json` 校验;Local Markdown 使用 `docs/.scratch/<feature>/parent-ticket.md`,可将完整 checkpoint 保存在 `docs/.scratch/<feature>/gates/lifecycle-checkpoint.yaml` 后由父 Ticket 引用,远程 tracker 使用 Issue 并在本地功能包保留引用。平台不可用时才位于 stage checkpoint。只保存索引、状态、引用和因果关系:
64
67
 
65
68
  ```yaml
66
69
  lifecycle:
@@ -47,10 +47,10 @@ README、用户指南和其他说明文档只引用或解释上述事实,不
47
47
  - 生命周期注册表中的条件门禁全部按影响面强制。命中触发条件时必须完成;未命中时只记录 `not-applicable` 及原因,不生成空文档;不得把产物、工作单元或证据统称为门禁。
48
48
  - 安全 / 权限不设独立生命周期资料或专属门禁。日常功能不做额外登记、`not-applicable` 或推导校验;只有需求或冻结资产明确要求改变认证、授权、租户隔离、敏感数据或合规行为时,才把该行为写入普通 Spec、API、架构、验收和测试 seam,并仅按实际 UI、API、Backend、Data、High-risk 影响触发既有门禁。普通 action 注册、沿用既有认证中间件、未变化的 `401` / `403`、一般字段、SQL / DDL / 迁移和上传 / 下载本身不构成安全 / 权限专项。
49
49
  - `seam-deferred` 只能显式记录风险、责任人、后续 Ticket、验证计划和目标版本或发布日期。
50
- - 新功能或较大变更先用 `grill-with-docs` 澄清,再用 `to-spec` 形成 Spec;Spec 基线和产品设计影响的完整判定以注册表和裁剪规则为准。
50
+ - 新功能或较大变更先进入 `yss-product-lifecycle` 的原生 Discovery / 需求分析工作单元;`grill-with-docs` 与 `to-spec` 仅作为用户显式兼容入口,Spec 基线和产品设计影响的完整判定以注册表和裁剪规则为准。
51
51
  - API 契约变更先形成 OpenAPI 3.1 Draft,经必要的工程基线、系统 / 数据架构和设计审查后 Freeze,再进入实现。
52
52
  - Spec Delta 只记录相对既有冻结 Spec 基线的高风险行为差异;全新产品、全新模块和低风险调整不生成 Spec Delta。
53
- - OpenAPI Freeze 或无 API 影响记录完成后,使用 `to-tickets` 拆成可独立验证的窄垂直切片,禁止只按 Adapter / Application / Domain / Infrastructure 横向拆分。
53
+ - OpenAPI Freeze 或无 API 影响记录完成后,由生命周期原生 Ticket 正式化工作单元拆成可独立验证的窄垂直切片;用户显式 `to-tickets` 仅作为兼容入口,禁止只按 Adapter / Application / Domain / Infrastructure 横向拆分。
54
54
 
55
55
  ## 6. Ticket 与状态
56
56
 
@@ -10,6 +10,8 @@
10
10
  | Agent 入口规则 | Agent 启动任务时必须先遵守的全局路由、硬门禁和禁止事项。 | 不作为 YSS 后端、前端或其他专项编码规范的完整手册。 |
11
11
  | 标准文档语言 | 面向业务、产品、架构、实施、审查、发布和复盘的持久化文档所使用的默认语言。 | 统一使用简体中文;英文专有名词、代码标识、API 路径、schema、文件名和协议 metadata 保持原样。 |
12
12
  | Matt Engineering Skills | 来自 `mattpocock/skills` 的轻量工程流程技能集合。 | 用于澄清、Spec、Ticket、实现、TDD、诊断、审查和架构治理,不替代 YSS 专项规范。 |
13
+ | 上游技能基线 | 从外部技能源锁定的可追溯 revision 及其未经项目适配的原始内容。 | 不等同于项目当前实际生效的 skill;上游更新不得直接覆盖 YSS 适配。 |
14
+ | YSS 技能适配 | 在上游技能基线之上,为 YSS 仓库身份、门禁、状态、授权和专项规范保留的可追溯差异。 | 必须同时保留上游内容哈希、有效内容哈希和适配依据,不作无记录的直接 fork。 |
13
15
  | YSS skills | 本项目内置的 YSS 工程规范技能。 | 用于 DDD、UI、OpenAPI、Repository、Controller、DTO、组件和编码规范。 |
14
16
  | 技能投影 | 从权威共享技能生成、供特定 Agent root 加载的同步副本。 | 投影不是独立维护的技能源,不应在各 Agent root 中分别修改。 |
15
17
  | Spec | 记录用户问题、解决方案、用户故事、关键决策、验收标准和测试 seam 的产品研发规格。 | 新资产统一使用 Spec;旧规格称谓只在迁移记录中保留。 |
@@ -26,6 +28,7 @@
26
28
  | UI 影响 | 会改变用户可见页面、导航、交互流程、状态呈现或权限体验的功能影响。 | 纯后端、API、批处理或数据变更不自动构成 UI 影响。 |
27
29
  | 产品设计影响 | UI 变化触及主流程、导航、权限体验、异常 / 恢复状态、状态流转或 API 反推,需要页面流、状态矩阵和原型校准。 | 文案、token、颜色、间距和无行为变化的孤立视觉修复属于 UI 影响,但不自动构成产品设计影响。 |
28
30
  | 高保真 HTML 原型 | 低保真原型评审通过后,用于在浏览器中审查真实视觉密度、交互状态和页面流的产品设计资产。 | 不等同于生产前端实现,也不替代 OpenAPI、Spec 校准或垂直切片。 |
31
+ | Visual Baseline Contract | 为生产前端还原冻结页面、视口、交互状态、参考图像和允许差异的可验收合同。 | 不是仅有一张原型截图或绝对像素匹配;每个基线必须可定位到同一视口和同一状态复验。 |
29
32
  | 垂直切片(Vertical Slice) | 贯穿所有受影响层、可独立验证的窄功能路径。 | 优先使用垂直切片,避免只按层拆分的横向任务。 |
30
33
  | Slice Implementation Contract | 阶段 7 进入实现前,由 `yss-router` 根据冻结资产和垂直切片编译、再由生命周期编排器批准的实现合同,包含 Common、Frontend、Backend、Contract 和 Cross-repo 子合同。 | Router 只能生成草案,不能自行批准、设置 `ready-for-agent` 或宣布完成;Backend 子合同仍保留额外强约束。 |
31
34
  | YSS Skill Execution Result | YSS 专项 skill 完成工作单元后返回的结构化执行证据,记录合同版本、变更文件、证据文件、实际验证、延期 seam、偏离和新增影响。 | 实现者自报 `implemented` 不构成最终通过,必须由 Router、生命周期编排器和独立 Reviewer 复核。 |
@@ -44,11 +47,14 @@
44
47
  | Harness 工程 | 串联研发生命周期阶段、门禁、产物、Agent/Skill 编排和追踪证据的工程化治理载体。 | 不等同于单个 CI 流水线或零散提示词集合。 |
45
48
  | YSS 研发操作系统 | 由生命周期控制、通用工作流、YSS 专项技能、证据反馈和技能供应链共同构成的可版本化研发治理体系。 | 不等同于单个主控 skill、某个 Agent 客户端或运行时代码平台。 |
46
49
  | 生命周期注册表 | 结构化定义主阶段、门禁、产物、工作单元、证据及其稳定标识和关系的机器可读权威资产。 | Markdown 地图、数量说明和验证 fixture 是其派生产物,不应分别维护同一结构事实。 |
50
+ | 生命周期编排器 | 持有阶段、影响面、产物状态、门禁裁决、工作单元路由和恢复条件的研发流程控制平面。 | 不替代专项技能执行业务实现,也不以文件存在或执行者自述宣布完成。 |
51
+ | 前端实现还原验证 | 证明生产前端相对冻结 Spec、交互说明、状态矩阵和高保真原型不存在未解释差异的独立验证。 | 不是绝对像素复刻、普通 type-check 或原型评审;UI 影响切片需覆盖关键视觉、状态、交互和工程证据。 |
47
52
  | 生命周期稳定 ID | 以对象类型命名空间和英文标识唯一指向一个生命周期对象的兼容身份。 | 中文名称、展示顺序和数量可以变化;已发布 ID 不得复用来表达另一种语义。 |
48
53
  | 派生产物 | 根据生命周期注册表确定性生成的结构表、数量、索引、依赖图或测试 fixture。 | 不承载需要人工解释的原理、取舍或实践建议,禁止脱离注册表分别维护。 |
49
54
  | 核心技能(Core Skill) | 默认可发现、负责生命周期控制或通用研发入口的稳定技能。 | 不包含只在特定技术影响下才需要的专项实现规则。 |
50
55
  | 专项技能(Specialist Skill) | 由 Router 根据影响面和实现合同按需选择的前端、后端、OpenAPI 或组件技能。 | 不作为所有任务的平级默认入口。 |
51
- | 试验 / 兼容技能 | 尚未达到默认支持成熟度,或仅为旧流程迁移保留的受限技能。 | 必须显式授权使用,不得进入 Router 默认技能闭包。 |
56
+ | 试验技能 | 尚未达到项目默认支持成熟度的技能。 | 只在明确试验范围内使用,不进入 Router 默认技能闭包。 |
57
+ | 显式兼容入口 | 为已有用户操作习惯保留的 user-invoked 工作流入口,写入前由生命周期编排器预检,结果回交其验收。 | 不是默认路径、过时别名或可以越过门禁的第二套生命周期。 |
52
58
  | 技能成熟度 | 描述技能从 `draft`、`verified`、`supported` 到 `deprecated` 的治理状态。 | 不等同于文件存在、已被投影或能够安装。 |
53
59
  | 技能注册表 | 记录技能身份、别名、分层、适用影响面、成熟度、新鲜度、验证和公开状态的机器可读路由资产。 | 不替代 `skills-lock.json` 的来源、hash 和投影完整性职责。 |
54
60
  | 生态发布清单 | 关联模板 schema 与 commit、CLI 版本与快照、公开技能来源与导出 hash 的跨仓发布证据。 | 不要求尚未生成的仓库 commit 互相循环引用。 |
@@ -0,0 +1,5 @@
1
+ # ADR-0007: 生命周期使用原生工作单元并保留 Matt 兼容入口
2
+
3
+ `yss-product-lifecycle` 作为 YSS 研发生命周期的唯一默认入口,持有阶段、产物状态、门禁和正式资产所有权。Spec 综合、Ticket 正式化和切片实现使用生命周期注册表中的原生工作单元;`to-spec`、`to-tickets`、`implement` 保留为用户显式调用的兼容输入,结果必须回交生命周期验收,生命周期不得自动调用这些 user-invoked skills。
4
+
5
+ 该选择避免用户手动记忆阶段切换,也避免 Matt 默认的 `ready-for-agent`、commit 等行为越过 YSS 门禁和授权。代价是生命周期需要维护原生工作单元路由和兼容适配,但两者在 `work_unit_routes` 中共享一个稳定工作单元身份、使用互斥的 `native` / `compatibility` 路由,不再形成两套执行定义。
@@ -13,7 +13,7 @@
13
13
 
14
14
  | 来源 | 固定版本 / 路径 | 用途 |
15
15
  |---|---|---|
16
- | `mattpocock/skills` | `6acc160e4e0cd062dbbbd7a1b26ae92855edf07e` / `skills/engineering` 及锁文件记录的关联路径 | 通用工程流程及关联 skills |
16
+ | `mattpocock/skills` | `0ab1b63a410a03d3627979a109c8695de27af954` / `skills/engineering` 及锁文件记录的关联路径 | 通用工程流程及关联 skills |
17
17
  | `anthropics/knowledge-work-plugins` | `sales/skills/competitive-intelligence` | 竞品与市场事实研究 |
18
18
  | 项目本地 | `.agents/skills` 或平台专属 root | YSS 适配与项目治理 skills |
19
19
 
@@ -25,7 +25,7 @@
25
25
 
26
26
  项目允许按 YSS 流程适配上游 skill,但必须同时保留可追溯的上游信息和适配后的有效哈希。
27
27
 
28
- 当前 Matt 快照为 `6acc160e4e0cd062dbbbd7a1b26ae92855edf07e`。`ask-matt` 的关联入口包括 `to-questionnaire`、`wait-what`、`writing-for-agents` 和 `PHASE-BOUNDARIES.md`;这些支持文件随共享 skill 目录一起计算 `effectiveHash`,不得单独投影或维护。
28
+ 当前 Matt 快照为 `0ab1b63a410a03d3627979a109c8695de27af954`。`ask-matt` 的关联入口包括 `to-questionnaire`、`wait-what`、`writing-for-agents` 和 `PHASE-BOUNDARIES.md`;这些支持文件随共享 skill 目录一起计算 `effectiveHash`,不得单独投影或维护。
29
29
 
30
30
  本轮升级还将生命周期适配固定为:阶段边界只写可选 `phase_boundary` 证据;`to-questionnaire` 使用 `external-input-required` 暂停并在答案回流后重新分类影响面;Matt `prototype` 使用 `prototype/<name>` 分支和单文件 HTML,YSS 高保真原型继续执行 Prototype Review、AntD CLI 校验和用户确认。人工 checkpoint 与 `diagnosing-bugs` 的输出必须脱敏,`wait-what` 不改变生命周期状态。
31
31
 
@@ -41,6 +41,12 @@
41
41
  scripts/update-skill-lock
42
42
  ```
43
43
 
44
+ 若来源来自可访问的 Matt checkout,还应显式校验锁定 revision 与每个上游目录哈希:
45
+
46
+ ```bash
47
+ scripts/verify-upstream-skill-source --source-root <matt-skills-checkout>
48
+ ```
49
+
44
50
  新增共享 skill 时先显式登记:`scripts/update-skill-lock --add=<skill-name>`;新增平台专属 skill 使用 `scripts/update-skill-lock --add-platform=<root>:<skill-name>`。脚本不会把工作区中偶然出现的未跟踪目录自动纳入发布清单。
45
51
 
46
52
  5. 执行发布阻断校验:
@@ -58,6 +64,8 @@
58
64
  ```bash
59
65
  scripts/sync-skills --check
60
66
  scripts/update-skill-lock --check
67
+ # 可选:对照锁文件中的 mattpocock/skills revision 与上游目录哈希
68
+ scripts/verify-upstream-skill-source --source-root <matt-skills-checkout>
61
69
  ```
62
70
 
63
71
  前者检查所有共享投影是否指向或匹配权威内容,后者检查 `skills-lock.json` 是否与当前完整目录树一致。过时技能不会保留兼容别名;旧版项目按 `docs/user-guide/规格与任务迁移指南.md` 一次性迁移。
@@ -73,7 +81,7 @@ YSS 技能的公开发布仓库为 `iloveZzz/yss-spec-dev-skills`,它是本模
73
81
  - 发布顺序为:同步 canonical projections → 更新 lock → `scripts/verify-template` → 导出并检查 → 独立审查 → 在 `yss-spec-dev-skills` 提交人工 PR。不得从目标仓库反向覆盖 `.agents/skills`。
74
82
  - skills.sh 通过 `npx skills add iloveZzz/yss-spec-dev-skills` 的安装遥测自动发现技能,不需要手工注册;遥测可用 `DISABLE_TELEMETRY=1` 或 `DO_NOT_TRACK` 关闭。
75
83
 
76
- 已退休或 personal 的条目(`design-an-interface`、`qa`、`request-refactor-plan`、`ubiquitous-language`、`edit-article`、`obsidian-vault`、`writing-great-skills`、`web-design-engineer`、`web-video-presentation`、`wireframe-prototype`、`wizard`、`git-guardrails-claude-code`、`claude-handoff`)不再进入 `.agents/skills`、六个共享投影根或 `skills-lock.json`。迁移时使用 `codebase-design`、`triage + to-tickets`、`to-spec + improve-codebase-architecture`、`domain-modeling`、`product-design:index`、普通人工 checkpoint 或 `handoff` 等现行路由,不创建兼容目录。
84
+ 已退休、personal 或由 YSS 有意排除的条目(`design-an-interface`、`qa`、`request-refactor-plan`、`ubiquitous-language`、`edit-article`、`obsidian-vault`、`writing-great-skills`、`web-design-engineer`、`web-video-presentation`、`wireframe-prototype`、`wizard`、`git-guardrails-claude-code`、`claude-handoff`、`batch-grill-me`)不再进入 `.agents/skills`、六个共享投影根或 `skills-lock.json`。其中 `wizard` 是最新上游仍存在但 YSS 当前有意排除的人工步骤技能,不应描述为上游已退休。迁移时使用 `codebase-design`、`triage + to-tickets`、`to-spec + improve-codebase-architecture`、`domain-modeling`、`product-design:index`、普通人工 checkpoint 或 `handoff` 等现行路由,不创建兼容目录。
77
85
 
78
86
  ## 外部工作流工具
79
87
 
@@ -4,6 +4,6 @@ Matt Pocock Engineering Skills 提供轻量的澄清、实现、TDD、诊断和
4
4
 
5
5
  ## 进入与退出
6
6
 
7
- - Matt user-invoked 的 `grill-with-docs`、`to-spec`、`to-tickets` 和 `implement` 必须由用户显式启动;YSS 生命周期只准备、校验和验收其结果。`tdd`、`code-review` 等 model-invoked skill 仍须遵守 `AGENTS.md` 的阶段、门禁和证据要求。
7
+ - Matt user-invoked 的 `grill-with-docs`、`to-spec`、`to-tickets` 和 `implement` 必须由用户显式启动,任何 skill 不得自动调用它们;YSS 生命周期只准备、校验和验收其结果。所有 Matt model-invoked skill 仍须遵守 `AGENTS.md` 的阶段、门禁和证据要求,并只能在生命周期允许的工作单元中调用。
8
8
  - `template-source` 只执行模板维护流程,不生成具体产品 Spec、原型、OpenAPI 或垂直切片 Ticket。
9
9
  - Agent 完成工作单元后返回可核验的 evidence refs、变更资产、验证命令、残余风险和下一路由。
@@ -24,21 +24,22 @@
24
24
 
25
25
  ### 2.1 条件门禁
26
26
 
27
- | 稳定 ID | 门禁 | 所属阶段 | 触发条件 | 必须留下的证据 |
28
- |---|---|---|---|---|
29
- | `gate.repository-identity-valid` | 仓库身份校验 | `stage.entry-triage` | 每次进入流程。 | `evidence.repository-identity-check` |
30
- | `gate.spec-baseline-approved` | Spec 基线批准 | `stage.spec-architecture` | 新功能、行为变化或范围扩大进入 Spec 基线。 | `evidence.approval-record` |
31
- | `gate.prototype-reviewed` | 原型评审 | `stage.product-design` | 命中产品设计影响,且低保真页面、流程、状态或 API 反推需要独立评审。 | `evidence.prototype-review-result` |
32
- | `gate.prototype-verified` | 高保真原型验证 | `stage.product-design` | 需要高保真 HTML 原型进行视觉与交互校准。 | `evidence.antd-cli-validation`、`evidence.browser-prototype-verification` |
33
- | `gate.user-confirmation` | 用户确认 | `stage.product-design` | 产品设计影响尚未被人工确认。 | `evidence.prototype-confirmation` |
34
- | `gate.openapi-draft-reviewed` | OpenAPI Draft Review | `stage.system-data-engineering` | 有 API 影响且 Draft 已生成。 | `evidence.openapi-draft-review` |
35
- | `gate.design-reviewed` | 设计审查 | `stage.system-data-engineering` | API 或架构影响。 | `evidence.design-review-result` |
36
- | `gate.openapi-frozen` | OpenAPI Freeze | `stage.system-data-engineering` | API 进入实现。 | `evidence.approval-record` |
37
- | `gate.engineering-baseline-accepted` | 工程基线 | `stage.system-data-engineering` | 后端、前端或高风险工程变化。 | `evidence.fresh-verification` |
38
- | `gate.architecture-reviewed` | 架构审查 | `stage.system-data-engineering` | 高风险或跨边界变化。 | `evidence.design-review-result` |
39
- | `gate.slice-contract-approved` | Slice Implementation Contract 批准 | `stage.ticket-formalization` | Agent 进入实现;脚手架完成后每个后续生成代码工作单元。 | `evidence.contract-approval` |
40
- | `gate.slice-ready-for-agent` | 垂直切片实现就绪 | `stage.ticket-formalization` | 垂直切片具备直接实现条件。 | `evidence.contract-approval`、`evidence.approval-record` |
41
- | `gate.release-ready` | 发布就绪 | `stage.verification-release-retrospective` | 合并、发布或阶段完成。 | `evidence.fresh-verification`、`evidence.checkpoint-and-rollback` |
27
+ | 稳定 ID | 门禁 | 所属阶段 | 触发条件 | 前置门禁 | 必须留下的证据 |
28
+ |---|---|---|---|---|---|
29
+ | `gate.repository-identity-valid` | 仓库身份校验 | `stage.entry-triage` | 每次进入流程。 | 无 | `evidence.repository-identity-check` |
30
+ | `gate.spec-baseline-approved` | Spec 基线批准 | `stage.spec-architecture` | 新功能、行为变化或范围扩大进入 Spec 基线。 | 无 | `evidence.approval-record` |
31
+ | `gate.prototype-reviewed` | 原型评审 | `stage.product-design` | 命中产品设计影响,且低保真页面、流程、状态或 API 反推需要独立评审。 | 无 | `evidence.prototype-review-result` |
32
+ | `gate.prototype-verified` | 高保真原型验证 | `stage.product-design` | 需要高保真 HTML 原型进行视觉与交互校准。 | 无 | `evidence.antd-cli-validation`、`evidence.browser-prototype-verification` |
33
+ | `gate.user-confirmation` | 用户确认 | `stage.product-design` | 产品设计影响尚未被人工确认。 | 无 | `evidence.prototype-confirmation` |
34
+ | `gate.openapi-draft-reviewed` | OpenAPI Draft Review | `stage.system-data-engineering` | 有 API 影响且 Draft 已生成。 | 无 | `evidence.openapi-draft-review` |
35
+ | `gate.design-reviewed` | 设计审查 | `stage.system-data-engineering` | API 或架构影响。 | 无 | `evidence.design-review-result` |
36
+ | `gate.openapi-frozen` | OpenAPI Freeze | `stage.system-data-engineering` | API 进入实现。 | 无 | `evidence.approval-record` |
37
+ | `gate.engineering-baseline-accepted` | 工程基线 | `stage.system-data-engineering` | 后端、前端或高风险工程变化。 | 无 | `evidence.fresh-verification` |
38
+ | `gate.architecture-reviewed` | 架构审查 | `stage.system-data-engineering` | 高风险或跨边界变化。 | 无 | `evidence.design-review-result` |
39
+ | `gate.slice-contract-approved` | Slice Implementation Contract 批准 | `stage.ticket-formalization` | Agent 进入实现;脚手架完成后每个后续生成代码工作单元。 | 无 | `evidence.contract-approval` |
40
+ | `gate.slice-ready-for-agent` | 垂直切片实现就绪 | `stage.ticket-formalization` | 垂直切片具备直接实现条件。 | 无 | `evidence.contract-approval`、`evidence.approval-record` |
41
+ | `gate.frontend-implementation-verified` | 前端实现还原验证 | `stage.verification-release-retrospective` | UI 影响切片完成实现并准备合并、发布或阶段完成。 | 无 | `evidence.frontend-implementation-verification` |
42
+ | `gate.release-ready` | 发布就绪 | `stage.verification-release-retrospective` | 合并、发布或阶段完成。 | `gate.frontend-implementation-verified` | `evidence.fresh-verification`、`evidence.checkpoint-and-rollback` |
42
43
 
43
44
  ### 2.2 生命周期产物
44
45
 
@@ -64,6 +65,8 @@
64
65
  | `artifact.parent-ticket` | 功能父 Ticket | `stage.ticket-formalization` | 每个进入追踪的功能。 |
65
66
  | `artifact.vertical-slice-ticket` | 垂直切片 Ticket | `stage.ticket-formalization` | 进入实现前。 |
66
67
  | `artifact.slice-implementation-contract` | Slice Implementation Contract | `stage.ticket-formalization` | Agent 进入实现。 |
68
+ | `artifact.frontend-implementation-plan` | 前端实现还原计划 | `stage.ticket-formalization` | UI 影响切片提升 ready-for-agent 前。 |
69
+ | `artifact.frontend-implementation-verification` | 前端实现还原验证记录 | `stage.verification-release-retrospective` | UI 影响切片完成实现并准备合并、发布或阶段完成。 |
67
70
  | `artifact.retrospective` | 复盘记录 | `stage.verification-release-retrospective` | 发布后或阶段性完成后满足复盘触发条件。 |
68
71
 
69
72
  ### 2.3 执行证据
@@ -82,6 +85,7 @@
82
85
  | `evidence.openapi-draft-review` | OpenAPI Draft 审查记录 | P0、错误、分页、幂等和契约测试审查记录。 |
83
86
  | `evidence.contract-approval` | Slice 合同批准记录 | 生命周期编排器批准且已持久化的当前版本合同引用。 |
84
87
  | `evidence.yss-skill-execution-result` | YSS Skill Execution Result | 专项 skill 的合同版本、写入、验证、延期 seam 与偏离证据。 |
88
+ | `evidence.frontend-implementation-verification` | 前端实现还原验证证据 | UI 实现相对冻结原型和 Spec 的桌面/窄屏视觉、状态、交互、控制台与 pnpm 验证记录。 |
85
89
  | `evidence.fresh-verification` | Fresh Verification 记录 | 本轮实际执行的验证命令、结果和时间。 |
86
90
  | `evidence.checkpoint-and-rollback` | Checkpoint 与回滚点 | 可追溯的变更边界、发布记录和恢复动作。 |
87
91
  <!-- lifecycle-registry:structure:end -->
@@ -1,12 +1,14 @@
1
1
  {
2
2
  "schema_version": 1,
3
3
  "registry_id": "yss.lifecycle",
4
- "semantic_sha256": "308015680acdfdd600c255ce05ef46447c0e9205a5ec0d489c149f131a2e87fc",
4
+ "semantic_sha256": "6c7251b7929c696d41e04218c927a0679d61bd38c7af0c21cde96ecdc2f7107f",
5
5
  "published_ids": [
6
6
  "artifact.architecture-review",
7
7
  "artifact.data-architecture",
8
8
  "artifact.discovery-record",
9
9
  "artifact.engineering-baseline",
10
+ "artifact.frontend-implementation-plan",
11
+ "artifact.frontend-implementation-verification",
10
12
  "artifact.functional-architecture",
11
13
  "artifact.high-fidelity-html-prototype",
12
14
  "artifact.impact-assessment",
@@ -31,6 +33,7 @@
31
33
  "evidence.contract-approval",
32
34
  "evidence.design-review-result",
33
35
  "evidence.fresh-verification",
36
+ "evidence.frontend-implementation-verification",
34
37
  "evidence.impact-assessment",
35
38
  "evidence.maintenance-intensity-checkpoint",
36
39
  "evidence.openapi-draft-review",
@@ -41,6 +44,7 @@
41
44
  "gate.architecture-reviewed",
42
45
  "gate.design-reviewed",
43
46
  "gate.engineering-baseline-accepted",
47
+ "gate.frontend-implementation-verified",
44
48
  "gate.openapi-draft-reviewed",
45
49
  "gate.openapi-frozen",
46
50
  "gate.prototype-reviewed",
@@ -60,14 +64,24 @@
60
64
  "stage.verification-release-retrospective",
61
65
  "stage.vertical-slice-implementation",
62
66
  "work-unit.attach-sync-integration",
67
+ "work-unit.code-review",
68
+ "work-unit.discovery-opportunity",
69
+ "work-unit.discovery-requirements",
63
70
  "work-unit.entry-triage",
64
71
  "work-unit.fresh-verification",
65
72
  "work-unit.independent-review",
66
73
  "work-unit.intensity-aware-review",
67
74
  "work-unit.intensity-aware-verification",
75
+ "work-unit.frontend-implementation-verification",
76
+ "work-unit.prototype-design",
77
+ "work-unit.release-and-retrospective",
68
78
  "work-unit.release-and-rollback",
69
79
  "work-unit.skill-projection-sync",
80
+ "work-unit.slice-implementation",
81
+ "work-unit.spec-synthesis",
70
82
  "work-unit.ssot-update",
83
+ "work-unit.technical-analysis",
84
+ "work-unit.ticket-decomposition",
71
85
  "work-unit.template-snapshot-build"
72
86
  ]
73
87
  }
@@ -81,6 +81,9 @@ evidence:
81
81
  - id: evidence.yss-skill-execution-result
82
82
  name: YSS Skill Execution Result
83
83
  description: 专项 skill 的合同版本、写入、验证、延期 seam 与偏离证据。
84
+ - id: evidence.frontend-implementation-verification
85
+ name: 前端实现还原验证证据
86
+ description: UI 实现相对冻结原型和 Spec 的桌面/窄屏视觉、状态、交互、控制台与 pnpm 验证记录。
84
87
  - id: evidence.fresh-verification
85
88
  name: Fresh Verification 记录
86
89
  description: 本轮实际执行的验证命令、结果和时间。
@@ -149,11 +152,17 @@ gates:
149
152
  stage: stage.ticket-formalization
150
153
  trigger: 垂直切片具备直接实现条件。
151
154
  evidence: [evidence.contract-approval, evidence.approval-record]
155
+ - id: gate.frontend-implementation-verified
156
+ name: 前端实现还原验证
157
+ stage: stage.verification-release-retrospective
158
+ trigger: UI 影响切片完成实现并准备合并、发布或阶段完成。
159
+ evidence: [evidence.frontend-implementation-verification]
152
160
  - id: gate.release-ready
153
161
  name: 发布就绪
154
162
  stage: stage.verification-release-retrospective
155
163
  trigger: 合并、发布或阶段完成。
156
164
  evidence: [evidence.fresh-verification, evidence.checkpoint-and-rollback]
165
+ requires_gates: [gate.frontend-implementation-verified]
157
166
 
158
167
  artifacts:
159
168
  - id: artifact.impact-assessment
@@ -236,6 +245,14 @@ artifacts:
236
245
  name: Slice Implementation Contract
237
246
  stage: stage.ticket-formalization
238
247
  trigger: Agent 进入实现。
248
+ - id: artifact.frontend-implementation-plan
249
+ name: 前端实现还原计划
250
+ stage: stage.ticket-formalization
251
+ trigger: UI 影响切片提升 ready-for-agent 前。
252
+ - id: artifact.frontend-implementation-verification
253
+ name: 前端实现还原验证记录
254
+ stage: stage.verification-release-retrospective
255
+ trigger: UI 影响切片完成实现并准备合并、发布或阶段完成。
239
256
  - id: artifact.retrospective
240
257
  name: 复盘记录
241
258
  stage: stage.verification-release-retrospective
@@ -290,3 +307,63 @@ work_units:
290
307
  input: 已审查 commit。
291
308
  output: release note、观察信号、回滚点。
292
309
  completion: 两仓库顺序和恢复动作明确。
310
+ - id: work-unit.discovery-opportunity
311
+ name: 机会调研
312
+ scope: project-instance
313
+ input: 用户问题、市场/竞品事实需求和现有上下文。
314
+ output: Discovery 机会结论、证据、替代方案和关键假设。
315
+ completion: 机会继续/停止建议可审查;事实已 research 或记录为假设。
316
+ - id: work-unit.discovery-requirements
317
+ name: 需求分析
318
+ scope: project-instance
319
+ input: 机会结论、用户反馈和领域词汇。
320
+ output: 用户、MVP、非目标、成功标准、测试 seam 和未决项。
321
+ completion: frontier 清空;用户确认;无 runnable blocker。
322
+ - id: work-unit.spec-synthesis
323
+ name: Spec 综合
324
+ scope: project-instance
325
+ input: 已确认的 Discovery 记录和测试 seam。
326
+ output: Spec、产品总体设计和功能架构。
327
+ completion: Spec 内容完整并进入 ready-for-human;下游推进仍需 gate.spec-baseline-approved。
328
+ - id: work-unit.prototype-design
329
+ name: 原型设计与验证
330
+ scope: project-instance
331
+ input: Spec、产品设计影响和状态矩阵。
332
+ output: 交互说明、低/高保真原型、评审、AntD CLI 和浏览器证据。
333
+ completion: 原型评审、高保真验证和用户确认门禁均通过。
334
+ - id: work-unit.technical-analysis
335
+ name: 技术分析与契约冻结
336
+ scope: project-instance
337
+ input: Spec、原型、API/数据/工程影响面。
338
+ output: OpenAPI、数据架构、工程基线、架构审查和 Slice 合同草案。
339
+ completion: 命中契约已冻结;无 API 影响有可读记录;工程基线通过。
340
+ - id: work-unit.ticket-decomposition
341
+ name: 垂直切片 Ticket 正式化
342
+ scope: project-instance
343
+ input: 冻结 Spec、设计、契约和阻塞关系。
344
+ output: 功能父 Ticket、垂直切片和批准的 Slice Implementation Contract。
345
+ completion: 切片可独立验证;生命周期复算后才能 ready-for-agent。
346
+ - id: work-unit.slice-implementation
347
+ name: 垂直切片实现
348
+ scope: project-instance
349
+ input: 当前版本 Slice Implementation Contract 和允许写路径。
350
+ output: 前后端实现、TDD 和 YSS Skill Execution Result。
351
+ completion: 行为通过 `behavior-tdd`;UI 影响完成还原验证计划;无 drift/violation。
352
+ - id: work-unit.frontend-implementation-verification
353
+ name: 前端实现还原验证
354
+ scope: project-instance
355
+ input: 冻结原型、状态矩阵、实现候选和视觉验收用例。
356
+ output: 桌面/窄屏视觉、状态、交互、console 和 pnpm 验证证据。
357
+ completion: 关键场景无未解释差异;独立 Reviewer 通过 UI fidelity 轴。
358
+ - id: work-unit.code-review
359
+ name: 独立代码审查与验证
360
+ scope: project-instance
361
+ input: 不可变候选快照、Spec、Ticket、合同和执行结果。
362
+ output: Standards、Spec、UI fidelity 三轴 Review 与 fresh verification。
363
+ completion: findings 已处理;修复后重新捕获候选并全量复审。
364
+ - id: work-unit.release-and-retrospective
365
+ name: 发布与复盘
366
+ scope: project-instance
367
+ input: 已审查候选、发布窗口和回滚点。
368
+ output: 发布/回滚证据和复盘记录。
369
+ completion: 人工发布裁决、fresh verification 和治理回流均完成。
@@ -0,0 +1,39 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://yss.dev/schemas/frontend-implementation-evidence.schema.json",
4
+ "title": "YSS 前端实现还原证据",
5
+ "type": "object",
6
+ "additionalProperties": true,
7
+ "required": ["schema_version", "kind", "template", "status", "prototype_ref", "spec_ref", "route_and_page_inventory"],
8
+ "properties": {
9
+ "schema_version": { "const": 1 },
10
+ "kind": { "enum": ["plan", "verification"] },
11
+ "template": { "type": "boolean" },
12
+ "status": { "enum": ["draft", "approved", "blocked"] },
13
+ "prototype_ref": { "type": "string", "minLength": 1 },
14
+ "spec_ref": { "type": "string", "minLength": 1 },
15
+ "route_and_page_inventory": { "type": "array", "minItems": 1 },
16
+ "visual_acceptance_cases": { "type": "array", "minItems": 1 },
17
+ "desktop_viewport": { "type": "string", "minLength": 3 },
18
+ "narrow_viewport": { "type": "string", "minLength": 3 },
19
+ "state_cases": { "type": "array", "minItems": 1 },
20
+ "pnpm_commands": { "type": "array", "minItems": 1 },
21
+ "desktop_visual_evidence": { "type": "array", "minItems": 1 },
22
+ "narrow_view_visual_evidence": { "type": "array", "minItems": 1 },
23
+ "interaction_results": { "type": "array", "minItems": 1 },
24
+ "console_warning_check": { "enum": ["pass", "blocked"] },
25
+ "uncovered_differences": { "type": "array" },
26
+ "difference_owner": { "type": ["string", "null"] },
27
+ "independent_review": { "type": "object" }
28
+ },
29
+ "allOf": [
30
+ {
31
+ "if": { "properties": { "kind": { "const": "plan" } } },
32
+ "then": { "required": ["visual_acceptance_cases", "desktop_viewport", "narrow_viewport", "state_cases", "pnpm_commands"] }
33
+ },
34
+ {
35
+ "if": { "properties": { "kind": { "const": "verification" } } },
36
+ "then": { "required": ["desktop_visual_evidence", "narrow_view_visual_evidence", "interaction_results", "console_warning_check", "pnpm_commands", "uncovered_differences", "difference_owner", "independent_review"] }
37
+ }
38
+ ]
39
+ }