soloforge 1.1.47 → 1.1.49
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 +11 -7
- package/dist/cli/adapter_writers.d.ts +5 -0
- package/dist/cli/adapter_writers.d.ts.map +1 -1
- package/dist/cli/adapter_writers.js +25 -0
- package/dist/cli/adapter_writers.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +3 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/scope_check.d.ts +4 -0
- package/dist/cli/scope_check.d.ts.map +1 -0
- package/dist/cli/scope_check.js +51 -0
- package/dist/cli/scope_check.js.map +1 -0
- package/dist/context/adapters/claude_code/hooks.d.ts +5 -7
- package/dist/context/adapters/claude_code/hooks.d.ts.map +1 -1
- package/dist/context/adapters/claude_code/hooks.js +11 -9
- package/dist/context/adapters/claude_code/hooks.js.map +1 -1
- package/dist/context/adapters/shared/integration_guide.d.ts +3 -3
- package/dist/context/adapters/shared/integration_guide.js +18 -8
- package/dist/context/adapters/shared/integration_guide.js.map +1 -1
- package/dist/context/adapters/shared/workflow_template.js +1 -1
- package/dist/context/config/intent_schema.d.ts +793 -6
- package/dist/context/config/intent_schema.d.ts.map +1 -1
- package/dist/context/config/intent_schema.js +9 -0
- package/dist/context/config/intent_schema.js.map +1 -1
- package/dist/context/config/resolver.d.ts +9 -0
- package/dist/context/config/resolver.d.ts.map +1 -1
- package/dist/context/config/resolver.js +5 -0
- package/dist/context/config/resolver.js.map +1 -1
- package/dist/core/adversarial_review_store.d.ts +133 -0
- package/dist/core/adversarial_review_store.d.ts.map +1 -0
- package/dist/core/adversarial_review_store.js +161 -0
- package/dist/core/adversarial_review_store.js.map +1 -0
- package/dist/core/domain_transition.d.ts.map +1 -1
- package/dist/core/domain_transition.js +3 -0
- package/dist/core/domain_transition.js.map +1 -1
- package/dist/core/gate_record_store.d.ts +2 -0
- package/dist/core/gate_record_store.d.ts.map +1 -1
- package/dist/core/gate_record_store.js +17 -4
- package/dist/core/gate_record_store.js.map +1 -1
- package/dist/core/git_utils.d.ts +1 -1
- package/dist/core/git_utils.d.ts.map +1 -1
- package/dist/core/git_utils.js +8 -4
- package/dist/core/git_utils.js.map +1 -1
- package/dist/core/observer.d.ts.map +1 -1
- package/dist/core/observer.js +26 -2
- package/dist/core/observer.js.map +1 -1
- package/dist/core/task_context/constants.d.ts.map +1 -1
- package/dist/core/task_context/constants.js +4 -2
- package/dist/core/task_context/constants.js.map +1 -1
- package/dist/core/task_context/manager.d.ts +4 -4
- package/dist/core/task_context/manager.d.ts.map +1 -1
- package/dist/core/task_context/manager.js +69 -62
- package/dist/core/task_context/manager.js.map +1 -1
- package/dist/core/task_context/manager_setters.d.ts +2 -0
- package/dist/core/task_context/manager_setters.d.ts.map +1 -1
- package/dist/core/task_context/manager_setters.js +10 -0
- package/dist/core/task_context/manager_setters.js.map +1 -1
- package/dist/core/task_context/stage_fact_ownership.js +1 -1
- package/dist/core/task_context/stage_fact_ownership.js.map +1 -1
- package/dist/core/task_context/status_transitions.js +5 -5
- package/dist/core/task_context/status_transitions.js.map +1 -1
- package/dist/core/types.d.ts +29 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/waiver_store.d.ts +100 -0
- package/dist/core/waiver_store.d.ts.map +1 -0
- package/dist/core/waiver_store.js +185 -0
- package/dist/core/waiver_store.js.map +1 -0
- package/dist/domain/asset_registry/derived_registry.d.ts +10 -0
- package/dist/domain/asset_registry/derived_registry.d.ts.map +1 -1
- package/dist/domain/asset_registry/derived_registry.js +10 -0
- package/dist/domain/asset_registry/derived_registry.js.map +1 -1
- package/dist/domain/asset_registry/derived_types.d.ts +27 -0
- package/dist/domain/asset_registry/derived_types.d.ts.map +1 -1
- package/dist/domain/asset_registry/derived_types.js +10 -0
- package/dist/domain/asset_registry/derived_types.js.map +1 -1
- package/dist/domain/build/engine.d.ts +1 -0
- package/dist/domain/build/engine.d.ts.map +1 -1
- package/dist/domain/build/engine.js +34 -4
- package/dist/domain/build/engine.js.map +1 -1
- package/dist/domain/contracts/design_lifecycle_contract.d.ts.map +1 -1
- package/dist/domain/contracts/design_lifecycle_contract.js +11 -4
- package/dist/domain/contracts/design_lifecycle_contract.js.map +1 -1
- package/dist/domain/design/contract.d.ts.map +1 -1
- package/dist/domain/design/contract.js +11 -0
- package/dist/domain/design/contract.js.map +1 -1
- package/dist/domain/design/engine.d.ts +1 -0
- package/dist/domain/design/engine.d.ts.map +1 -1
- package/dist/domain/design/engine.js +35 -3
- package/dist/domain/design/engine.js.map +1 -1
- package/dist/domain/engine_helpers.d.ts +37 -0
- package/dist/domain/engine_helpers.d.ts.map +1 -1
- package/dist/domain/engine_helpers.js +86 -0
- package/dist/domain/engine_helpers.js.map +1 -1
- package/dist/domain/operate/engine.d.ts +1 -0
- package/dist/domain/operate/engine.d.ts.map +1 -1
- package/dist/domain/operate/engine.js +19 -2
- package/dist/domain/operate/engine.js.map +1 -1
- package/dist/domain/types.d.ts +6 -0
- package/dist/domain/types.d.ts.map +1 -1
- package/dist/domain/types.js.map +1 -1
- package/dist/domain/verify/engine.d.ts +1 -0
- package/dist/domain/verify/engine.d.ts.map +1 -1
- package/dist/domain/verify/engine.js +18 -1
- package/dist/domain/verify/engine.js.map +1 -1
- package/dist/gate/certainty_gate.d.ts +10 -0
- package/dist/gate/certainty_gate.d.ts.map +1 -1
- package/dist/gate/certainty_gate.js.map +1 -1
- package/dist/gate/contracts/tool_actions.d.ts +11 -2
- package/dist/gate/contracts/tool_actions.d.ts.map +1 -1
- package/dist/gate/contracts/tool_actions.js +12 -2
- package/dist/gate/contracts/tool_actions.js.map +1 -1
- package/dist/gate/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
- package/dist/gate/contracts/tool_invocation_contract_registry.js +11 -1
- package/dist/gate/contracts/tool_invocation_contract_registry.js.map +1 -1
- package/dist/gate/executors/executors_annotation.d.ts +33 -10
- package/dist/gate/executors/executors_annotation.d.ts.map +1 -1
- package/dist/gate/executors/executors_annotation.js +119 -64
- package/dist/gate/executors/executors_annotation.js.map +1 -1
- package/dist/gate/executors/executors_artifact.d.ts +20 -1
- package/dist/gate/executors/executors_artifact.d.ts.map +1 -1
- package/dist/gate/executors/executors_artifact.js +83 -123
- package/dist/gate/executors/executors_artifact.js.map +1 -1
- package/dist/gate/executors/executors_build.d.ts +2 -2
- package/dist/gate/executors/executors_build.d.ts.map +1 -1
- package/dist/gate/executors/executors_build.js +28 -126
- package/dist/gate/executors/executors_build.js.map +1 -1
- package/dist/gate/executors/executors_deploy.d.ts.map +1 -1
- package/dist/gate/executors/executors_deploy.js +35 -7
- package/dist/gate/executors/executors_deploy.js.map +1 -1
- package/dist/gate/executors/executors_external_command.d.ts.map +1 -1
- package/dist/gate/executors/executors_external_command.js +54 -2
- package/dist/gate/executors/executors_external_command.js.map +1 -1
- package/dist/gate/executors/executors_field_mapping.d.ts +7 -0
- package/dist/gate/executors/executors_field_mapping.d.ts.map +1 -0
- package/dist/gate/executors/executors_field_mapping.js +191 -0
- package/dist/gate/executors/executors_field_mapping.js.map +1 -0
- package/dist/gate/executors/executors_jacoco.d.ts +3 -0
- package/dist/gate/executors/executors_jacoco.d.ts.map +1 -0
- package/dist/gate/executors/executors_jacoco.js +70 -0
- package/dist/gate/executors/executors_jacoco.js.map +1 -0
- package/dist/gate/executors/executors_prerequisite.d.ts +1 -1
- package/dist/gate/executors/executors_prerequisite.d.ts.map +1 -1
- package/dist/gate/executors/executors_prerequisite.js +2 -62
- package/dist/gate/executors/executors_prerequisite.js.map +1 -1
- package/dist/gate/executors/executors_probe.d.ts +1 -0
- package/dist/gate/executors/executors_probe.d.ts.map +1 -1
- package/dist/gate/executors/executors_probe.js +1 -0
- package/dist/gate/executors/executors_probe.js.map +1 -1
- package/dist/gate/executors/executors_regex_scan.d.ts.map +1 -1
- package/dist/gate/executors/executors_regex_scan.js +34 -13
- package/dist/gate/executors/executors_regex_scan.js.map +1 -1
- package/dist/gate/executors/executors_scope.d.ts +7 -3
- package/dist/gate/executors/executors_scope.d.ts.map +1 -1
- package/dist/gate/executors/executors_scope.js +20 -173
- package/dist/gate/executors/executors_scope.js.map +1 -1
- package/dist/gate/executors/executors_trace.d.ts +5 -0
- package/dist/gate/executors/executors_trace.d.ts.map +1 -1
- package/dist/gate/executors/executors_trace.js +295 -4
- package/dist/gate/executors/executors_trace.js.map +1 -1
- package/dist/gate/executors/index.d.ts.map +1 -1
- package/dist/gate/executors/index.js +4 -2
- package/dist/gate/executors/index.js.map +1 -1
- package/dist/gate/gate_engine.d.ts +20 -0
- package/dist/gate/gate_engine.d.ts.map +1 -1
- package/dist/gate/gate_engine.js +58 -6
- package/dist/gate/gate_engine.js.map +1 -1
- package/dist/gate/gate_registry_bridge.d.ts +12 -2
- package/dist/gate/gate_registry_bridge.d.ts.map +1 -1
- package/dist/gate/gate_registry_bridge.js +7 -5
- package/dist/gate/gate_registry_bridge.js.map +1 -1
- package/dist/gate/middleware_gates.js +1 -1
- package/dist/gate/middleware_gates.js.map +1 -1
- package/dist/gate/release/gate_checks/checkAssetAntiBloat.d.ts.map +1 -1
- package/dist/gate/release/gate_checks/checkAssetAntiBloat.js +3 -0
- package/dist/gate/release/gate_checks/checkAssetAntiBloat.js.map +1 -1
- package/dist/gate/scope_resolver.d.ts +7 -0
- package/dist/gate/scope_resolver.d.ts.map +1 -1
- package/dist/gate/scope_resolver.js +1 -1
- package/dist/gate/scope_resolver.js.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/server/tools/index.d.ts.map +1 -1
- package/dist/server/tools/index.js +4 -2
- package/dist/server/tools/index.js.map +1 -1
- package/dist/server/tools/middleware.d.ts.map +1 -1
- package/dist/server/tools/middleware.js +1 -0
- package/dist/server/tools/middleware.js.map +1 -1
- package/dist/server/tools/schemas.d.ts +10 -0
- package/dist/server/tools/schemas.d.ts.map +1 -1
- package/dist/server/tools/schemas.js +10 -0
- package/dist/server/tools/schemas.js.map +1 -1
- package/dist/server/tools/sf_doctor.d.ts +8 -0
- package/dist/server/tools/sf_doctor.d.ts.map +1 -1
- package/dist/server/tools/sf_doctor.js +58 -2
- package/dist/server/tools/sf_doctor.js.map +1 -1
- package/dist/server/tools/sf_task.d.ts +83 -0
- package/dist/server/tools/sf_task.d.ts.map +1 -1
- package/dist/server/tools/sf_task.js +121 -4
- package/dist/server/tools/sf_task.js.map +1 -1
- package/dist/server/tools/sf_waiver.d.ts +31 -0
- package/dist/server/tools/sf_waiver.d.ts.map +1 -0
- package/dist/server/tools/sf_waiver.js +139 -0
- package/dist/server/tools/sf_waiver.js.map +1 -0
- package/dist/server/tools/sf_work.d.ts +194 -0
- package/dist/server/tools/sf_work.d.ts.map +1 -1
- package/dist/server/tools/sf_work.js +603 -40
- package/dist/server/tools/sf_work.js.map +1 -1
- package/dist/shared/paths.d.ts +4 -0
- package/dist/shared/paths.d.ts.map +1 -1
- package/dist/shared/paths.js +6 -0
- package/dist/shared/paths.js.map +1 -1
- package/dist/shared/traceability_id_utils.js +3 -3
- package/dist/shared/traceability_id_utils.js.map +1 -1
- package/dist/types/pipeline_types.d.ts +4 -1
- package/dist/types/pipeline_types.d.ts.map +1 -1
- package/dist/verify/audit/probe_executor.d.ts +4 -1
- package/dist/verify/audit/probe_executor.d.ts.map +1 -1
- package/dist/verify/audit/probe_executor.js +4 -1
- package/dist/verify/audit/probe_executor.js.map +1 -1
- package/dist/verify/audit/probe_rule.d.ts +3 -0
- package/dist/verify/audit/probe_rule.d.ts.map +1 -1
- package/dist/verify/audit/probe_rule.js +3 -0
- package/dist/verify/audit/probe_rule.js.map +1 -1
- package/dist/verify/contracts/decision_workshop.d.ts.map +1 -1
- package/dist/verify/contracts/decision_workshop.js +4 -3
- package/dist/verify/contracts/decision_workshop.js.map +1 -1
- package/dist/verify/contracts/runtime_state_recovery_registry.d.ts.map +1 -1
- package/dist/verify/contracts/runtime_state_recovery_registry.js +0 -1
- package/dist/verify/contracts/runtime_state_recovery_registry.js.map +1 -1
- package/package.json +1 -1
- package/templates/build/enforced.md +263 -68
- package/templates/build//346/263/250/351/207/212/347/272/252/345/276/213.md +48 -0
- package/templates/build//346/265/213/350/257/225/344/274/230/345/205/210/347/274/226/347/240/201.md +1 -0
- package/templates/build//346/265/213/350/257/225/350/256/241/345/210/222.md +9 -4
- package/templates/build//347/274/226/347/240/201/347/272/252/345/276/213.md +28 -1
- package/templates/design/API/346/216/245/345/217/243/350/247/204/346/240/274/346/226/207/346/241/243.md +7 -0
- package/templates/design/enforced.md +204 -14
- package/templates/design//345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201/345/257/274/350/210/252.md +9 -7
- package/templates/design//345/210/207/347/211/207/350/247/204/345/210/222.md +4 -0
- package/templates/design//345/274/200/345/217/221/345/210/207/347/211/207/350/256/241/345/210/222.md +76 -0
- package/templates/design//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/346/226/207/346/241/243.md +2 -0
- package/templates/design//346/236/266/346/236/204/350/256/276/350/256/241.md +24 -0
- package/templates/design//350/256/276/350/256/241/345/206/263/347/255/226/347/272/252/345/276/213.md +58 -0
- package/templates/design//350/256/276/350/256/241/350/264/250/351/207/217/350/246/201/347/202/271.md +58 -0
- package/templates/design//351/234/200/346/261/202/345/210/206/346/236/220.md +24 -0
- package/templates/operate/UI/350/247/206/350/247/211/351/252/214/346/224/266/347/272/252/345/276/213.md +85 -0
- package/templates/operate/enforced.md +42 -6
- package/templates/operate//345/217/221/345/270/203/350/257/264/346/230/216.md +19 -1
- package/templates/operate//351/203/250/347/275/262/351/205/215/347/275/256.md +10 -0
- package/templates/shared/enforced.md +37 -0
- package/templates/shared//345/267/245/344/275/234/346/265/201/345/257/274/350/210/252/345/245/221/347/272/246.md +1 -1
- package/templates/shared//345/267/245/344/275/234/346/265/201/347/241/254/350/247/204/345/210/231/345/245/221/347/272/246.md +2 -2
- package/templates/shared//347/240/224/350/256/250/350/256/260/345/275/225.md +54 -0
- package/templates/verify/enforced.md +92 -262
- package/templates/verify//344/272/244/344/273/230/345/256/214/345/244/207/346/200/247/345/256/241/346/237/245.md +1 -0
- package/templates/verify//344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212.md +12 -2
- package/templates/verify//345/256/241/346/237/245/346/270/205/345/215/225.md +3 -1
- package/templates/verify//346/236/266/346/236/204/350/257/255/344/271/211/347/272/242/347/272/277.md +60 -0
- package/dist/core/scope_checker.d.ts +0 -29
- package/dist/core/scope_checker.d.ts.map +0 -1
- package/dist/core/scope_checker.js +0 -53
- package/dist/core/scope_checker.js.map +0 -1
- package/dist/gate/executors/executors_openapi_sync.d.ts +0 -23
- package/dist/gate/executors/executors_openapi_sync.d.ts.map +0 -1
- package/dist/gate/executors/executors_openapi_sync.js +0 -145
- package/dist/gate/executors/executors_openapi_sync.js.map +0 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ka-guidance-UI视觉验收纪律
|
|
3
|
+
kind: guidance
|
|
4
|
+
title: UI视觉验收纪律
|
|
5
|
+
sync_policy: copy_to_project
|
|
6
|
+
status: active
|
|
7
|
+
triggers:
|
|
8
|
+
- UI 视觉
|
|
9
|
+
- 视觉验收
|
|
10
|
+
- 界面样式
|
|
11
|
+
- 前端样式
|
|
12
|
+
- 界面布局
|
|
13
|
+
- 切片交付
|
|
14
|
+
- 切片构建
|
|
15
|
+
- 前端切片
|
|
16
|
+
target_artifact:
|
|
17
|
+
- release_note
|
|
18
|
+
extra:
|
|
19
|
+
name: ui-visual-acceptance
|
|
20
|
+
scope:
|
|
21
|
+
- frontend
|
|
22
|
+
products:
|
|
23
|
+
- '*'
|
|
24
|
+
type: procedure
|
|
25
|
+
lifecycle_status: active
|
|
26
|
+
version: 1.0.0
|
|
27
|
+
last_reviewed: '2026-06-20'
|
|
28
|
+
verification_layer: L2
|
|
29
|
+
stage: operate
|
|
30
|
+
domain: operate
|
|
31
|
+
owner_mechanism: mc-stage-gate-engine
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
# UI视觉验收纪律
|
|
35
|
+
|
|
36
|
+
> **本纪律仅适用于含前端 UI 的项目。纯后端/无 UI 项目跳过本节,发布说明「UI 视觉验收」行填「无前端」。**
|
|
37
|
+
|
|
38
|
+
> **为什么是 L2 软规则**:SLICE-E2E(playwright e2e)只验**交互链路与接口响应**,不验**UI 视觉样式**(布局/颜色/间距/响应式视觉/与设计稿一致)。引擎不调 LLM、看不懂截图,**无法确定性判定"界面长得对不对"**——强行硬判必造假(有截图 ≠ 视觉对)。故 UI 视觉正确性归 **L2 客户端 AI 视觉审查**(主)+ **L3 人工确认**(兜底),引擎只做:注入本纪律提醒 + 提供发布说明留痕载体 + 文案不假装确定性验过。
|
|
39
|
+
|
|
40
|
+
## 主流程:L2 客户端 AI 视觉审查(分两层:切片级局部 + 交付前整体)
|
|
41
|
+
|
|
42
|
+
**shift-left**:视觉审查分两层——切片级做局部自查(早发现局部 bug),交付前做整体审查(跨切片一致性)。不一刀切压交付前(局部 bug 积压难倒查)。
|
|
43
|
+
|
|
44
|
+
### 切片级视觉自查(每切片交付时,软)
|
|
45
|
+
|
|
46
|
+
每完成一个含 UI 的切片(slice-gate 时),AI 看本切片涉及页面 screenshot,判**局部视觉**:本切片新增/改动页面的布局/颜色/响应式无明显错误;按钮/表单/交互元素可见可点;与已交付切片视觉无明显冲突。**软(不硬判)**:截图给 AI 看给局部结论,局部 bug 当场修不积压。
|
|
47
|
+
|
|
48
|
+
### 交付前整体审查(产出发布说明时)
|
|
49
|
+
|
|
50
|
+
交付前(产出发布说明时)对前端各端做**整体视觉审查**,**看截图判断**:
|
|
51
|
+
|
|
52
|
+
1. **布局**:核心页面在 desktop/移动 viewport 下无塌陷、无错位、关键元素可见可点
|
|
53
|
+
2. **颜色/主题**:配色与设计稿/主题一致,无对比度缺陷(文字可读)
|
|
54
|
+
3. **响应式视觉**:断点切换无溢出、无横向滚动、组件自适应
|
|
55
|
+
4. **与设计稿一致**:关键页对照设计稿/截图基线,记录差异点
|
|
56
|
+
|
|
57
|
+
**产出结论**(非"看过"二字了事):每个审查维度给 通过/差异/未覆盖,差异项附截图 ref + 说明。
|
|
58
|
+
|
|
59
|
+
## L3 兜底:人工确认主观项
|
|
60
|
+
|
|
61
|
+
以下归人工确认,AI 不得替人拍板:
|
|
62
|
+
- 主观审美(视觉风格是否"对"、品牌调性)
|
|
63
|
+
- AI 不确定的视觉差异(像素级 flaky)
|
|
64
|
+
- 设计稿未覆盖的边界视觉态
|
|
65
|
+
|
|
66
|
+
发布说明「UI 视觉验收」行须列明**需人工确认的视觉点**(对应 `manual_review_steps_zh`),人工逐项确认后方可判定交付完成。
|
|
67
|
+
|
|
68
|
+
## 留痕(发布说明「UI 视觉验收」行)
|
|
69
|
+
|
|
70
|
+
发布说明「5. 验证结果」表「UI 视觉验收」行填写:
|
|
71
|
+
- **结果**:通过 / 差异(附说明)/ 待人工确认
|
|
72
|
+
- **证据**:截图 ref + AI 视觉结论摘要 / 人工确认结果
|
|
73
|
+
|
|
74
|
+
## 诚实纪律(反造假)
|
|
75
|
+
|
|
76
|
+
- **没验标 gap,不假装 passed**:若未做视觉审查,发布说明该行填「未验收」并标限制,**不得填"通过"**——填"通过"而无证据 = 重蹈 SLICE-E2E 名不副实的覆辙。
|
|
77
|
+
- **不在确定性 e2e 里偷验视觉**:UI 视觉是 L2/L3 域,不往 SLICE-E2E 塞视觉断言冒充确定性覆盖。
|
|
78
|
+
- **纯前端无后端的项目也须做**:只要含 UI 就适用,不因"无后端接口"跳过视觉验收。
|
|
79
|
+
|
|
80
|
+
## L1 备选:视觉回归(成熟项目可选)
|
|
81
|
+
|
|
82
|
+
成熟项目可加 `playwright` `toHaveScreenshot()` 基线对比做**视觉回归**(L1 确定性,防"这次和上次不一样")。注意:
|
|
83
|
+
- 视觉回归只防**回归**,不验**设计符合度**(基线本身可能就是错的)——不替代 L2 设计符合度审查。
|
|
84
|
+
- 需建基线截图 + 维护,像素对比易 flaky(字体渲染/动画),需稳定测试环境。
|
|
85
|
+
- 新建项目默认走 L2+L3,待视觉稳定后再补 L1 回归。
|
|
@@ -11,7 +11,7 @@ checks:
|
|
|
11
11
|
- id: OPR-G01
|
|
12
12
|
executor: file_evidence
|
|
13
13
|
rule: "发布后 5xx 错误率在基线 ±20% 范围内,无突增趋势"
|
|
14
|
-
severity:
|
|
14
|
+
severity: warning
|
|
15
15
|
check_type: deterministic
|
|
16
16
|
evidence_required: ["基线错误率 / 发布后错误率 / 偏差百分比(±20% 内)"]
|
|
17
17
|
gate: operate-gate
|
|
@@ -19,7 +19,7 @@ checks:
|
|
|
19
19
|
- id: OPR-G02
|
|
20
20
|
executor: file_evidence
|
|
21
21
|
rule: "发布后 P99 延迟不超过基线的 1.5 倍"
|
|
22
|
-
severity:
|
|
22
|
+
severity: warning
|
|
23
23
|
check_type: deterministic
|
|
24
24
|
evidence_required: ["P99 基线 / 发布后 P99 / 比值(<= 1.5x)"]
|
|
25
25
|
gate: operate-gate
|
|
@@ -35,7 +35,7 @@ checks:
|
|
|
35
35
|
- id: OPR-G04
|
|
36
36
|
executor: file_evidence
|
|
37
37
|
rule: "回滚预案已在预发环境演练验证,总耗时不超过 5 分钟"
|
|
38
|
-
severity:
|
|
38
|
+
severity: warning
|
|
39
39
|
check_type: deterministic
|
|
40
40
|
evidence_required: ["回滚演练记录 + 总耗时(<= 5 分钟)"]
|
|
41
41
|
gate: operate-gate
|
|
@@ -43,25 +43,61 @@ checks:
|
|
|
43
43
|
- id: OPR-G05
|
|
44
44
|
executor: file_evidence
|
|
45
45
|
rule: "发布后数据一致性校验 SQL 全部通过,覆盖所有变更涉及的表"
|
|
46
|
-
severity:
|
|
46
|
+
severity: warning
|
|
47
47
|
check_type: deterministic
|
|
48
48
|
evidence_required: ["校验 SQL 结果 + 覆盖表/记录数"]
|
|
49
49
|
gate: operate-gate
|
|
50
50
|
target: "self"
|
|
51
|
+
- id: OPR-DEPLOY-STRUCT
|
|
52
|
+
executor: document_structure
|
|
53
|
+
rule: "部署配置须含「环境规划」「环境变量与密钥」「部署方式」「健康检查与资源」「监控告警」「回滚方案」「完成判定」章节"
|
|
54
|
+
severity: error
|
|
55
|
+
check_type: deterministic
|
|
56
|
+
evidence_required: ["deploy/部署配置.md"]
|
|
57
|
+
gate: operate-gate
|
|
58
|
+
target: "self"
|
|
51
59
|
- id: RELNOTE-STRUCT
|
|
52
60
|
executor: document_structure
|
|
53
61
|
check_type: deterministic
|
|
54
62
|
severity: warning
|
|
55
63
|
gate: operate-gate
|
|
56
64
|
required_artifact: 发布说明模版
|
|
57
|
-
rule: "
|
|
65
|
+
rule: "发布说明须含「版本信息」「变更摘要」「数据库迁移」「验证结果」「回滚方案」「部署步骤」「监控」「已知问题」「完成判定」章节"
|
|
58
66
|
evidence_required: ["docs/audits/04-发布说明.md"]
|
|
59
67
|
target: "self"
|
|
68
|
+
- id: DEPLOY-BLOCK
|
|
69
|
+
executor: document_structure
|
|
70
|
+
check_type: deterministic
|
|
71
|
+
severity: error
|
|
72
|
+
gate: operate-gate
|
|
73
|
+
required_artifact: 部署配置模版
|
|
74
|
+
rule: "部署必填表格章节(环境/变量/依赖/健康/监控/回滚)须有表格行(反退化:禁空单元格/...占位)"
|
|
75
|
+
block_check:
|
|
76
|
+
item_pattern: '^##\s+(1|2|3|5|6|7)\.'
|
|
77
|
+
require_table: true
|
|
78
|
+
min_table_rows: 1
|
|
79
|
+
evidence_required: ["部署配置模版"]
|
|
80
|
+
target: "self"
|
|
81
|
+
- id: RELEASENOTE-BLOCK
|
|
82
|
+
executor: document_structure
|
|
83
|
+
check_type: deterministic
|
|
84
|
+
severity: error
|
|
85
|
+
gate: operate-gate
|
|
86
|
+
required_artifact: 发布说明模版
|
|
87
|
+
rule: "变更摘要/验证结果章节须有表格行(反退化:禁空表/一句话代替)"
|
|
88
|
+
block_check:
|
|
89
|
+
item_pattern: '^##\s+(2|5)\.'
|
|
90
|
+
require_table: true
|
|
91
|
+
min_table_rows: 1
|
|
92
|
+
evidence_required: ["发布说明模版"]
|
|
93
|
+
target: "self"
|
|
60
94
|
---
|
|
61
95
|
|
|
62
96
|
# operate-gate 强制检查清单
|
|
63
97
|
|
|
64
|
-
|
|
98
|
+
9 条确定性检查(含 RELNOTE-STRUCT)。bridge 从此文件聚合。
|
|
99
|
+
|
|
100
|
+
> OPR-G01~G05 用 file_evidence(只验证据文件存在+非空);rule 描述的指标(5xx/P99/日志/回滚/一致性)**须人工确认**,故 severity=warning(不假装 error 确认指标)。
|
|
65
101
|
|
|
66
102
|
对应工程经验:
|
|
67
103
|
- OPR-G01
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
id: ka-
|
|
2
|
+
id: ka-artifact-发布说明
|
|
3
3
|
kind: artifact
|
|
4
4
|
title: 发布说明
|
|
5
5
|
sync_policy: copy_to_project
|
|
@@ -24,6 +24,7 @@ extra:
|
|
|
24
24
|
|
|
25
25
|
> **产物定位**:operate 阶段产出。记录发布内容/影响/验证/回滚,是上线可追溯的凭证。
|
|
26
26
|
> **核心纪律**:任何上线变更必须有回滚方案([[开发者宪法]]);发布说明须含回滚章节(operate-gate RELNOTE-STRUCT 守护)。
|
|
27
|
+
> **反退化纪律**:变更摘要/验证结果等表格须逐条填写,禁止空表、禁止「…」省略;回滚/部署步骤须是可执行的具体步骤,非一句话。
|
|
27
28
|
|
|
28
29
|
## 1. 版本信息
|
|
29
30
|
- 版本号:
|
|
@@ -36,6 +37,12 @@ extra:
|
|
|
36
37
|
|--------|---------------------------|--------------|---------|
|
|
37
38
|
| | | | |
|
|
38
39
|
|
|
40
|
+
### 前端各端版本(涉及 FE-* 时填;纯后端填"无前端")
|
|
41
|
+
|
|
42
|
+
| 端(FE-*) | 版本号 | 变更摘要 | 是否独立发布 |
|
|
43
|
+
|-----------|--------|---------|------------|
|
|
44
|
+
| FE-client-01 | | | 是/否 |
|
|
45
|
+
|
|
39
46
|
## 3. 数据库迁移
|
|
40
47
|
- [ ] 无数据库变更
|
|
41
48
|
- 迁移脚本路径:
|
|
@@ -54,6 +61,7 @@ extra:
|
|
|
54
61
|
| 单元测试 | | |
|
|
55
62
|
| 集成测试 | | |
|
|
56
63
|
| 端到端验收 | | |
|
|
64
|
+
| UI 视觉验收(前端项目填;纯后端填"无前端")| | 截图 + AI视觉结论/人工确认 |
|
|
57
65
|
|
|
58
66
|
## 6. 回滚方案
|
|
59
67
|
- 触发条件(什么情况下回滚):
|
|
@@ -80,3 +88,13 @@ extra:
|
|
|
80
88
|
- 通知对象(用户/团队/相关方):
|
|
81
89
|
- 通知内容:
|
|
82
90
|
- 通知时间:
|
|
91
|
+
|
|
92
|
+
## 完成判定
|
|
93
|
+
|
|
94
|
+
- [ ] 版本信息完整(版本号/日期/负责人)
|
|
95
|
+
- [ ] 变更摘要覆盖本次所有变更
|
|
96
|
+
- [ ] 验证结果含三类(正常/边界/异常)
|
|
97
|
+
- [ ] 回滚方案可执行
|
|
98
|
+
- [ ] 部署步骤明确可操作
|
|
99
|
+
- [ ] 前端项目:UI 视觉验收已留痕(截图+结论或人工确认);纯后端填"无前端"
|
|
100
|
+
- [ ] 变更/验证表格逐条填写,回滚与部署步骤具体可执行(非一句话)
|
|
@@ -23,6 +23,7 @@ extra:
|
|
|
23
23
|
|
|
24
24
|
> **产物定位**:operate 阶段必出。把环境、依赖、部署方式、健康检查、回滚定清楚。
|
|
25
25
|
> **核心纪律**:部署可回滚([[开发者宪法]]);配置走环境变量不硬编码([[安全加固]])。
|
|
26
|
+
> **反退化纪律**:环境变量/依赖服务/监控告警/回滚方案等表格须逐条填写真实值,禁止空单元格、禁止「…」占位。
|
|
26
27
|
> **完成判定**:见文末。
|
|
27
28
|
|
|
28
29
|
## 1. 环境规划
|
|
@@ -51,6 +52,14 @@ extra:
|
|
|
51
52
|
- 镜像/制品来源:
|
|
52
53
|
- 部署流程:构建 → 推送 → 拉起 → 健康检查 → 放量
|
|
53
54
|
|
|
55
|
+
### 多端部署矩阵(涉及前端 FE-* 时填;纯后端填"无前端,单一部署")
|
|
56
|
+
|
|
57
|
+
| 端(FE-*) | 部署方式 | 制品来源 | 域名/入口 | 与后端依赖 |
|
|
58
|
+
|-----------|---------|---------|----------|-----------|
|
|
59
|
+
| FE-client-01 | 静态托管/CDN/容器 | | | |
|
|
60
|
+
|
|
61
|
+
> 每个前端端独立部署(静态资源 CDN / 容器化),后端独立部署;端间依赖(如 admin 依赖后端 API)显式声明。
|
|
62
|
+
|
|
54
63
|
## 5. 健康检查与资源
|
|
55
64
|
| 项 | 配置 |
|
|
56
65
|
|----|------|
|
|
@@ -81,3 +90,4 @@ extra:
|
|
|
81
90
|
- [ ] 健康检查(就绪+存活)配置
|
|
82
91
|
- [ ] 监控告警覆盖错误率/延迟/资源
|
|
83
92
|
- [ ] 回滚方案有且可演练
|
|
93
|
+
- [ ] 各配置表格逐条填真实值,无空单元格/无「…」占位
|
|
@@ -59,6 +59,43 @@ checks:
|
|
|
59
59
|
- "regex_pattern_scan 扫描结果(命中须确认是否测试 fixture/文档示例,真实密钥必须改走环境变量或密钥管理)"
|
|
60
60
|
gate: shared-gate
|
|
61
61
|
target: self
|
|
62
|
+
# —— 切片级验证(slice-gate:构建镜像/docker 部署/HTTP 验收/浏览器端到端)——
|
|
63
|
+
- id: SLICE-BUILD
|
|
64
|
+
executor: external_command
|
|
65
|
+
command: docker
|
|
66
|
+
args: ["compose", "build"]
|
|
67
|
+
rule: "切片完成后构建最新本地镜像(docker compose build)。有 docker-compose.yml 硬验(error,失败=构建问题);无则跳过(新项目放行,产 compose 后自动生效)"
|
|
68
|
+
severity: error
|
|
69
|
+
check_type: deterministic
|
|
70
|
+
evidence_required: ["docker compose build exitCode=0"]
|
|
71
|
+
gate: slice-gate
|
|
72
|
+
target: self
|
|
73
|
+
- id: SLICE-UP
|
|
74
|
+
executor: docker_deployment
|
|
75
|
+
rule: "docker desktop 部署(docker-compose up)验证部署成功"
|
|
76
|
+
severity: warning
|
|
77
|
+
check_type: deterministic
|
|
78
|
+
evidence_required: ["docker compose up 成功 + 容器健康"]
|
|
79
|
+
gate: slice-gate
|
|
80
|
+
target: self
|
|
81
|
+
- id: SLICE-HTTP
|
|
82
|
+
executor: local_http_acceptance
|
|
83
|
+
rule: "HTTP 验收(可访问性)—— 服务可访问 + 核心接口返回 2xx/3xx(local_http_acceptance 逐端口 fetch 验可达;业务返回正确性归人工/E2E,非本 check 确定性覆盖)"
|
|
84
|
+
severity: warning
|
|
85
|
+
check_type: deterministic
|
|
86
|
+
evidence_required: ["HTTP 请求响应通过"]
|
|
87
|
+
gate: slice-gate
|
|
88
|
+
target: self
|
|
89
|
+
- id: SLICE-E2E
|
|
90
|
+
executor: external_command
|
|
91
|
+
command: npx
|
|
92
|
+
args: ["playwright", "test"]
|
|
93
|
+
rule: "浏览器端到端验证(前端交互 + 后端逻辑)—— playwright e2e(验交互链路与接口响应,不验 UI 视觉样式)。有 playwright.config 硬验(error,失败=e2e 问题);无跳过(Claude Code npx playwright install + 加配置后生效,新项目放行)。注:UI 视觉样式(布局/颜色/响应式视觉/与设计稿一致)属非确定性判断,不归本 e2e——归 L2 客户端 AI 视觉审查(**切片级局部自查 + 交付前整体**,见 operate 域「UI视觉验收纪律」guidance)+ L3 人工确认。"
|
|
94
|
+
severity: error
|
|
95
|
+
check_type: deterministic
|
|
96
|
+
evidence_required: ["playwright test exitCode=0"]
|
|
97
|
+
gate: slice-gate
|
|
98
|
+
target: self
|
|
62
99
|
---
|
|
63
100
|
|
|
64
101
|
# shared-gate 共享硬底线
|
|
@@ -27,7 +27,7 @@ extra:
|
|
|
27
27
|
|
|
28
28
|
导航必须把用户确认项分为三类:
|
|
29
29
|
|
|
30
|
-
1. `must_confirm`:影响业务口径、架构决策、权限模型、API
|
|
30
|
+
1. `must_confirm`:影响业务口径、架构决策、权限模型、API/数据库语义、陈旧任务处理、**系统形态与交付边界(是否前后端分离、几个端、各端技术栈)**等不可由 AI 代决的事项。只有这类确认可以阻塞推进。
|
|
31
31
|
2. `should_confirm`:确认后准确性更高,但不确认也允许继续只读分析、初始化、模版同步和低风险准备。
|
|
32
32
|
3. `auto_resolvable`:可通过命令、复验或修复动作解决的事项,不应要求用户拍板。
|
|
33
33
|
|
|
@@ -78,7 +78,7 @@ extra:
|
|
|
78
78
|
source_ref: src/context/adapters/shared/workflow_template.ts#wf-core-principles
|
|
79
79
|
- rule_id: wf-knowledge-injection
|
|
80
80
|
rule_summary: (已废弃)原三道门知识注入决策,已无运行时调用,保留作历史记录、不再注入
|
|
81
|
-
user_instruction:
|
|
81
|
+
user_instruction: (已废弃,不再注入;保留作历史记录)
|
|
82
82
|
mechanism_id: mc-knowledge-injection-boundary
|
|
83
83
|
enforcement_status: deprecated
|
|
84
84
|
source_ref: src/context/adapters/shared/workflow_template.ts#wf-knowledge-injection
|
|
@@ -146,7 +146,7 @@ extra:
|
|
|
146
146
|
source_ref: src/context/adapters/shared/workflow_template.ts#wf-no-lazy-code
|
|
147
147
|
---
|
|
148
148
|
|
|
149
|
-
#
|
|
149
|
+
# 工作流模板硬规则契约
|
|
150
150
|
|
|
151
151
|
工作流执行硬规则(条数随下方 hard_rules 清单维护,不在此硬编码)。
|
|
152
152
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ka-artifact_template-研讨记录
|
|
3
|
+
kind: artifact
|
|
4
|
+
title: 研讨记录
|
|
5
|
+
sync_policy: engine_only
|
|
6
|
+
status: active
|
|
7
|
+
extra:
|
|
8
|
+
name: deliberation-record
|
|
9
|
+
scope:
|
|
10
|
+
- '*'
|
|
11
|
+
products:
|
|
12
|
+
- '*'
|
|
13
|
+
lifecycle_status: active
|
|
14
|
+
version: 1.0.0
|
|
15
|
+
type: artifact_template
|
|
16
|
+
owner_mechanism: mc-generic-artifact
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# 研讨记录
|
|
20
|
+
|
|
21
|
+
> **用途**:对话框交互式研讨后的**总结留痕**(研讨本身在对话框与用户进行,本文件是对话收敛后 AI 写的总结,不是研讨过程)。
|
|
22
|
+
> **下游**:`act` 产出实际产物时承接本研讨结论;cross-artifact 对抗审查复核"研讨充分性"。
|
|
23
|
+
|
|
24
|
+
## 1. 疑问点扫描
|
|
25
|
+
|
|
26
|
+
逐点列出本产物的关键决策点(技术选型 / 边界假设 / 信息缺口 / 接口契约 / 异常处理 / 性能与安全取舍…),标记【有疑问】/【无疑问】:
|
|
27
|
+
|
|
28
|
+
- [决策点 1] — 【有疑问】/【无疑问】
|
|
29
|
+
- [决策点 2] — 【有疑问】/【无疑问】
|
|
30
|
+
|
|
31
|
+
## 2. 有疑问的点(完整四步法)
|
|
32
|
+
|
|
33
|
+
对每个【有疑问】的点:
|
|
34
|
+
|
|
35
|
+
### [点名称]
|
|
36
|
+
|
|
37
|
+
1. **不确定点**:到底不确定什么(信息缺口?多个候选?边界未定?假设未验证?)
|
|
38
|
+
2. **头脑风暴发散**:列出所有可能方案,暂不评判(数量优先,禁止过早否定)
|
|
39
|
+
- 方案 A:…
|
|
40
|
+
- 方案 B:…
|
|
41
|
+
3. **第一性原理收敛**:回到根本约束(用户根本需求 / 物理与成本 / 已有架构 / 可证伪事实),从公理推导,淘汰经不起追问的方案
|
|
42
|
+
4. **收敛结论 + 决策依据**:选定方案 + 为什么(必须可证伪,对抗审查会复核)
|
|
43
|
+
|
|
44
|
+
## 3. 第一性原理淘汰过程
|
|
45
|
+
|
|
46
|
+
汇总各疑问点的候选方案如何被根本约束淘汰,保留最终选择(可追溯):
|
|
47
|
+
|
|
48
|
+
- [点]:方案 A 被淘汰因为…;方案 B 胜出因为…
|
|
49
|
+
|
|
50
|
+
## 4. 收敛结论 + 无疑问点举证
|
|
51
|
+
|
|
52
|
+
- **关键决策**:基于研讨的最终选择(承接进实际产物)
|
|
53
|
+
- **无疑问点举证**(不得空泛,复杂决策必须有依据):
|
|
54
|
+
- `[点] 已确认无疑问 — 依据:…`
|