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
|
@@ -15,17 +15,44 @@ checks:
|
|
|
15
15
|
severity: error
|
|
16
16
|
gate: design-gate
|
|
17
17
|
required_artifact: 需求分析模版
|
|
18
|
-
rule: "
|
|
18
|
+
rule: "需求分析文档须含「需求来源」「根本目标」「功能点清单」「非功能需求」「用户角色」「外部接口」「系统形态与交付边界」「完成判定」章节"
|
|
19
19
|
evidence_required:
|
|
20
20
|
- "docs/context/需求分析.md"
|
|
21
21
|
target: self
|
|
22
|
+
- id: REQ-ID-FMT
|
|
23
|
+
executor: regex_pattern_scan
|
|
24
|
+
rule: "需求 REQ ID 须纯数字(REQ-001)或中文模块段(REQ-用户-01);禁止字母/字母数字模块段(REQ-M01-01)与占位符(REQ-NNN)——cross_validation 正则只认纯数字/中文模块段,前置校验避免产出后双向改 ID"
|
|
25
|
+
severity: error
|
|
26
|
+
check_type: deterministic
|
|
27
|
+
pattern: '/REQ-[A-Za-z]/'
|
|
28
|
+
languages: [通用]
|
|
29
|
+
required_artifact: 需求分析模版
|
|
30
|
+
evidence_required: ["regex_pattern_scan 扫描结果(SRS 无 REQ-字母模块段/占位符命中)"]
|
|
31
|
+
gate: design-gate
|
|
32
|
+
target: self
|
|
22
33
|
- id: ARCH-STRUCT
|
|
23
34
|
executor: document_structure
|
|
24
35
|
check_type: deterministic
|
|
25
36
|
severity: error
|
|
26
37
|
gate: design-gate
|
|
27
38
|
required_artifact: 架构设计模版
|
|
28
|
-
rule: "
|
|
39
|
+
rule: "架构设计文档须含「决策记录」「约束条件」「模块划分」「架构组成」「安全架构」「技术选型」「风险与回滚」「产物适用性」「完成判定」章节"
|
|
40
|
+
evidence_required:
|
|
41
|
+
- "docs/architecture/01-架构设计文档.md"
|
|
42
|
+
target: self
|
|
43
|
+
# —— 前端模块化结构(ARCH-FE-STRUCT:§6.3 端模块清单 FE-*,承接需求 §9 系统形态)——
|
|
44
|
+
- id: ARCH-FE-STRUCT
|
|
45
|
+
executor: document_structure
|
|
46
|
+
check_type: deterministic
|
|
47
|
+
severity: warning
|
|
48
|
+
gate: design-gate
|
|
49
|
+
required_artifact: 架构设计模版
|
|
50
|
+
rule: "架构 §6.3 端模块清单含 FE-* ID 表格行(承接需求 §9 端清单);纯后端项目填「不适用」放行(warning 级不强阻断)"
|
|
51
|
+
block_check:
|
|
52
|
+
item_pattern: '端模块清单'
|
|
53
|
+
required_marks: ['FE-']
|
|
54
|
+
require_table: true
|
|
55
|
+
min_table_rows: 1
|
|
29
56
|
evidence_required:
|
|
30
57
|
- "docs/architecture/01-架构设计文档.md"
|
|
31
58
|
target: self
|
|
@@ -35,7 +62,7 @@ checks:
|
|
|
35
62
|
severity: error
|
|
36
63
|
gate: design-gate
|
|
37
64
|
required_artifact: 数据库设计文档模版
|
|
38
|
-
rule: "
|
|
65
|
+
rule: "数据库设计文档须含「目标数据库」「实体与关系」「表字段」「约束」「Migration」「回滚」「映射表」「真实验证证据」「完成判定」章节"
|
|
39
66
|
evidence_required:
|
|
40
67
|
- "docs/design/01-数据库设计文档.md"
|
|
41
68
|
target: self
|
|
@@ -45,27 +72,190 @@ checks:
|
|
|
45
72
|
severity: warning
|
|
46
73
|
gate: design-gate
|
|
47
74
|
required_artifact: API接口规格文档模版
|
|
48
|
-
rule: "API
|
|
75
|
+
rule: "API 接口规格文档须含「Endpoint」「请求体字段」「响应体字段」「错误与副作用」「验收场景」「完成判定」章节"
|
|
49
76
|
evidence_required:
|
|
50
77
|
- "docs/design/02-API接口规格文档.md"
|
|
51
78
|
target: self
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
79
|
+
- id: API-BLOCK
|
|
80
|
+
executor: document_structure
|
|
81
|
+
check_type: deterministic
|
|
82
|
+
severity: error
|
|
83
|
+
gate: design-gate
|
|
84
|
+
required_artifact: API接口规格文档模版
|
|
85
|
+
rule: "每个 endpoint 块须含基本信息/响应体/错误与副作用/验收场景 且有表格(反退化:禁前详后废/表格→文字/同上占位)"
|
|
86
|
+
block_check:
|
|
87
|
+
item_pattern: '^###\s+Endpoint'
|
|
88
|
+
required_marks: ['基本信息', '响应体', '错误与副作用', '验收场景']
|
|
89
|
+
require_table: true
|
|
90
|
+
min_table_rows: 4
|
|
91
|
+
evidence_required: ["docs/design/02-API接口规格文档.md"]
|
|
92
|
+
target: self
|
|
93
|
+
- id: SLICE-PLAN-STRUCT
|
|
94
|
+
executor: document_structure
|
|
95
|
+
rule: "开发切片计划须含「PHASE」「SLC」「AC」「完成判定」章节"
|
|
96
|
+
severity: error
|
|
97
|
+
check_type: deterministic
|
|
98
|
+
required_artifact: 切片计划模版
|
|
99
|
+
evidence_required: ["docs/architecture/02-开发切片计划.md"]
|
|
100
|
+
gate: design-gate
|
|
101
|
+
target: self
|
|
102
|
+
# —— 产物间一致性(cross_validation:ID 引用一致+覆盖,确定性)——
|
|
103
|
+
- id: XVAL-ARCH-REQ
|
|
104
|
+
executor: cross_validation
|
|
105
|
+
rule: "REQ-* 一致性+覆盖率"
|
|
106
|
+
severity: error
|
|
107
|
+
check_type: deterministic
|
|
108
|
+
required_artifact: 架构设计模版
|
|
109
|
+
evidence_required: ["需求分析模版"]
|
|
110
|
+
gate: design-gate
|
|
111
|
+
target: self
|
|
112
|
+
- id: XVAL-API-REQ
|
|
113
|
+
executor: cross_validation
|
|
114
|
+
rule: "REQ-* 一致性+覆盖率"
|
|
115
|
+
severity: warning
|
|
116
|
+
check_type: deterministic
|
|
117
|
+
required_artifact: API接口规格文档模版
|
|
118
|
+
evidence_required: ["需求分析模版"]
|
|
119
|
+
gate: design-gate
|
|
120
|
+
target: self
|
|
121
|
+
- id: XVAL-ARCH-API
|
|
122
|
+
executor: cross_validation
|
|
123
|
+
rule: "DD-A* 一致性(架构引用的 API ID 须在 API 文档存在;不强制覆盖率——架构不逐一引用所有 API ID)"
|
|
124
|
+
severity: warning
|
|
125
|
+
check_type: deterministic
|
|
126
|
+
required_artifact: 架构设计模版
|
|
127
|
+
evidence_required: ["API接口规格文档模版"]
|
|
128
|
+
gate: design-gate
|
|
129
|
+
target: self
|
|
130
|
+
- id: XVAL-ARCH-DB
|
|
131
|
+
executor: cross_validation
|
|
132
|
+
rule: "DD-T* 一致性(架构引用的 DB ID 须在 DB 文档存在;不强制覆盖率——架构不逐一引用所有 DB ID)"
|
|
133
|
+
severity: warning
|
|
134
|
+
check_type: deterministic
|
|
135
|
+
required_artifact: 架构设计模版
|
|
136
|
+
evidence_required: ["数据库设计文档模版"]
|
|
137
|
+
gate: design-gate
|
|
138
|
+
target: self
|
|
139
|
+
- id: XVAL-SLC
|
|
140
|
+
executor: cross_validation
|
|
141
|
+
rule: "ARCH-*/FE-* 一致性+覆盖率"
|
|
142
|
+
severity: warning
|
|
143
|
+
check_type: deterministic
|
|
144
|
+
required_artifact: 切片计划模版
|
|
145
|
+
evidence_required: ["架构设计模版"]
|
|
60
146
|
gate: design-gate
|
|
61
147
|
target: self
|
|
148
|
+
# —— 产物适用性强制(治本「按需产出」:声明适用必产/不适用放行)——
|
|
149
|
+
- id: XVAL-DBAPI-APPLICABILITY
|
|
150
|
+
executor: applicability_check
|
|
151
|
+
rule: "design_doc 产物适用性强制:database_design/api_specification 声明「适用」须产出对应产物,声明「不适用」放行(前端/无后端按需不产),未声明须表态"
|
|
152
|
+
severity: error
|
|
153
|
+
check_type: deterministic
|
|
154
|
+
required_artifact: 架构设计模版
|
|
155
|
+
evidence_required: ["数据库设计文档模版", "API接口规格文档模版"]
|
|
156
|
+
gate: design-gate
|
|
157
|
+
target: self
|
|
158
|
+
# —— 引用/附件完整性由 handleVerify 系统校验(从 contract produces 的 references/companion_files 派生,所有域所有产物自动全覆盖,不再单点 check)——
|
|
159
|
+
# —— 附件校验(openapi.yaml,external_command redocly lint)——
|
|
160
|
+
- id: OPENAPI-LINT
|
|
161
|
+
executor: external_command
|
|
162
|
+
command: npx
|
|
163
|
+
args: ["@redocly/cli", "lint", "--config", "redocly.yaml", "docs/api/openapi.yaml"]
|
|
164
|
+
rule: "openapi.yaml 须通过 redocly lint --config redocly.yaml(SoloForge 锁定规则;YAML 语法+OpenAPI 规范;缺文件/无 redocly 判失败)"
|
|
165
|
+
severity: warning
|
|
166
|
+
check_type: deterministic
|
|
167
|
+
evidence_required: ["redocly lint 输出(exitCode 0 通过)"]
|
|
168
|
+
gate: design-gate
|
|
169
|
+
target: self
|
|
170
|
+
# —— 字段映射校验(数据库 §3/§7 ↔ schema.sql 真实字段,确定性)——
|
|
171
|
+
- id: FMAP-DB-SCHEMA
|
|
172
|
+
executor: field_mapping_validation
|
|
173
|
+
rule: "表.字段 一致性+覆盖率"
|
|
174
|
+
severity: error
|
|
175
|
+
check_type: deterministic
|
|
176
|
+
required_artifact: 数据库设计文档模版
|
|
177
|
+
evidence_required: ["docs/design/schema.sql"]
|
|
178
|
+
gate: design-gate
|
|
179
|
+
target: self
|
|
180
|
+
- id: SLICE-BLOCK
|
|
181
|
+
executor: document_structure
|
|
182
|
+
check_type: deterministic
|
|
183
|
+
severity: error
|
|
184
|
+
gate: design-gate
|
|
185
|
+
required_artifact: 切片计划模版
|
|
186
|
+
rule: "每个 SLC 块须含涉及 ARCH / AC 验收标准 且有字段表格(反退化:禁前详后废/同上占位)"
|
|
187
|
+
block_check:
|
|
188
|
+
item_pattern: '^###\s+SLC-'
|
|
189
|
+
required_marks: ['涉及 ARCH', 'AC-']
|
|
190
|
+
require_table: true
|
|
191
|
+
min_table_rows: 5
|
|
192
|
+
evidence_required: ["docs/architecture/02-开发切片计划.md"]
|
|
193
|
+
target: self
|
|
194
|
+
- id: SLICE-DIMENSION
|
|
195
|
+
executor: slice_verifiability_check
|
|
196
|
+
check_type: deterministic
|
|
197
|
+
severity: error
|
|
198
|
+
gate: design-gate
|
|
199
|
+
required_artifact: 切片计划模版
|
|
200
|
+
rule: "切片维度硬约束:① 骨架/基础设施切片 ≤ 2(防按端/技术层横切——切片须垂直端到端业务价值 前端→后端→DB,基础设施只占 1~2 例外切片,不得每端/每层一个骨架);② 每切片验收契约完整(可独立验证/验收范围/部署要求/E2E验证项,无通配占位)"
|
|
201
|
+
evidence_required: ["docs/architecture/02-开发切片计划.md"]
|
|
202
|
+
target: self
|
|
203
|
+
- id: DB-BLOCK
|
|
204
|
+
executor: document_structure
|
|
205
|
+
check_type: deterministic
|
|
206
|
+
severity: error
|
|
207
|
+
gate: design-gate
|
|
208
|
+
required_artifact: 数据库设计文档模版
|
|
209
|
+
rule: "数据库必填表格章节(实体/表字段/约束索引/Migration/API映射/SQL证据)须有表格行(反退化:禁空表/文字代替)"
|
|
210
|
+
block_check:
|
|
211
|
+
item_pattern: '^##\s+(1|2|3|4|6|7|8)\.'
|
|
212
|
+
require_table: true
|
|
213
|
+
min_table_rows: 1
|
|
214
|
+
evidence_required: ["docs/design/01-数据库设计文档.md"]
|
|
215
|
+
target: self
|
|
216
|
+
- id: REQ-BLOCK
|
|
217
|
+
executor: document_structure
|
|
218
|
+
check_type: deterministic
|
|
219
|
+
severity: error
|
|
220
|
+
gate: design-gate
|
|
221
|
+
required_artifact: 需求分析模版
|
|
222
|
+
rule: "需求必填表格章节(功能点/NFR/角色/外部接口/系统形态端清单等)须有表格行(反退化:禁空表/示例行后省略)"
|
|
223
|
+
block_check:
|
|
224
|
+
item_pattern: '^##\s+[2-9]\.'
|
|
225
|
+
require_table: true
|
|
226
|
+
min_table_rows: 1
|
|
227
|
+
evidence_required: ["docs/context/需求分析.md"]
|
|
228
|
+
target: self
|
|
229
|
+
# —— 系统形态研讨兜底(REQ-DELIB:涉及前端时强制 deliberate 研讨系统形态并留痕;纯后端跳过)——
|
|
230
|
+
- id: REQ-DELIB
|
|
231
|
+
executor: requirement_deliberation_gate
|
|
232
|
+
check_type: deterministic
|
|
233
|
+
severity: error
|
|
234
|
+
gate: design-gate
|
|
235
|
+
required_artifact: 需求分析模版
|
|
236
|
+
rule: "涉及前端(§9 形态含前后端分离/多端/纯前端,或端清单非空)时,须先 sf_work action=deliberate domain=design target=requirement_analysis 研讨系统形态并留痕研讨记录(docs/研讨记录/设计/需求分析-研讨记录.md);纯后端跳过"
|
|
237
|
+
evidence_required: ["docs/研讨记录/设计/需求分析-研讨记录.md"]
|
|
238
|
+
target: self
|
|
239
|
+
- id: ARCH-BLOCK
|
|
240
|
+
executor: document_structure
|
|
241
|
+
check_type: deterministic
|
|
242
|
+
severity: error
|
|
243
|
+
gate: design-gate
|
|
244
|
+
required_artifact: 架构设计模版
|
|
245
|
+
rule: "架构必填表格章节(需求概要/约束/技术选型/风险/横切)须有表格行(反退化:禁其余同上/一句话代替)"
|
|
246
|
+
block_check:
|
|
247
|
+
item_pattern: '^##\s+(2|3|7|10|11)\.'
|
|
248
|
+
require_table: true
|
|
249
|
+
min_table_rows: 1
|
|
250
|
+
evidence_required: ["docs/architecture/01-架构设计文档.md"]
|
|
251
|
+
target: self
|
|
62
252
|
---
|
|
63
253
|
|
|
64
254
|
# design-gate 强制检查清单
|
|
65
255
|
|
|
66
256
|
design 阶段产物结构与决策质量检查。bridge 从此文件聚合。
|
|
67
257
|
|
|
68
|
-
- **REQ-STRUCT / ARCH-STRUCT / DB-STRUCT / API-STRUCT**:产物必含章节(document_structure
|
|
69
|
-
-
|
|
258
|
+
- **REQ-STRUCT / ARCH-STRUCT / DB-STRUCT / API-STRUCT**:产物必含章节(document_structure,确定性;ARCH-STRUCT 含「架构决策记录 ADR」章节——决策留痕+选型依据)
|
|
259
|
+
- 设计主观纪律(选型变更须经用户确认 / 改老系统须兼容性分析)→ 软下限《设计决策纪律》guidance 注入(原 DES-C-REVIEW semantic 拆出)
|
|
70
260
|
|
|
71
261
|
> 代码层正则检查(Controller 不含业务逻辑、写操作须事务等 ARC-*)已迁至 build-gate,那里才是代码实现阶段的归属。
|
|
@@ -5,13 +5,13 @@ title: 全生命周期工作流导航
|
|
|
5
5
|
sync_policy: internal
|
|
6
6
|
status: active
|
|
7
7
|
triggers:
|
|
8
|
-
- 下一步
|
|
9
|
-
- 继续
|
|
10
8
|
- 现在能写代码吗
|
|
11
9
|
- 工作流导航
|
|
12
10
|
- navigation
|
|
13
11
|
- 阶段判断
|
|
14
12
|
- 工作包生成
|
|
13
|
+
- 项目阶段
|
|
14
|
+
- 生命周期
|
|
15
15
|
extra:
|
|
16
16
|
name: full-lifecycle-navigation
|
|
17
17
|
type: procedure
|
|
@@ -57,19 +57,21 @@ extra:
|
|
|
57
57
|
|
|
58
58
|
1. 输入材料收集 → 2. 需求明确化 → 3. 决策研讨 → 4. 架构设计 → 5. 详细设计 → 6. 数据库设计 → 7. API 设计 → 8. 切片规划 → 9. 编码实现 → 10. 本地验证 → 11. 测试 → 12. 代码审查 → 13. 修复复验 → 14. 交付验收 → 15. 发布准备 → 16. 发布后观察
|
|
59
59
|
|
|
60
|
+
> 步骤 2「需求明确化」含**系统形态研讨**:确定是否前后端分离、几个端、各端技术栈,结论写进需求 §9(涉及前端时强制研讨留痕,REQ-DELIB 兜底;下游架构 §6.3 据端清单 FE-* 模块化前端)。
|
|
61
|
+
|
|
60
62
|
## 导航决策流程
|
|
61
63
|
|
|
62
|
-
1. 调用 `sf_task action=query`
|
|
64
|
+
1. 调用 `sf_task action=query` 获取当前状态
|
|
63
65
|
2. 检查配置完整性:resolveConfig 返回 missing 时,优先补充不可探测字段
|
|
64
66
|
3. 检查是否有陈旧任务需要处理
|
|
65
67
|
4. 读取 `confirmation_decisions`
|
|
66
68
|
- `must_confirm` 非空时,先让用户选择,不得继续执行会被阻断的动作
|
|
67
69
|
- `should_confirm` 非空时,明确说明建议确认的收益,但允许继续只读或低风险准备
|
|
68
70
|
- `auto_resolvable` 非空时,按推荐命令修复或复验,不把它伪装成业务确认
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
5. 读取返回的 work_package,按描述执行下一步
|
|
72
|
+
6. 遵守 disallowed_actions 中的禁止动作
|
|
73
|
+
7. 执行完成后运行 acceptance_commands 验证
|
|
74
|
+
8. 如需用户确认,必须列出具体确认项、选项和不确认影响,不能笼统说“需要确认”
|
|
73
75
|
|
|
74
76
|
## 空项目确认口径
|
|
75
77
|
|
|
@@ -44,6 +44,10 @@ extra:
|
|
|
44
44
|
4. **依赖有序**:被依赖的切片先做;循环依赖必须打破
|
|
45
45
|
5. **爆炸半径可控**(改老系统):每个切片可独立回滚,不牵连全局
|
|
46
46
|
|
|
47
|
+
> **硬约束(design-gate SLICE-DIMENSION 兜底)**:骨架/基础设施切片 ≤ 2(超过 design verify 拦截)。多端项目合并为一个「全端骨架 + DB」切片,不每端一个骨架;其余切片必须垂直(端到端业务 前端→后端→DB)。
|
|
48
|
+
>
|
|
49
|
+
> **为什么必须垂直(shift-left 早验的结构前提)**:垂直切片每片端到端可独立跑 → slice-gate 每片能早验(SLICE-BUILD/UP/HTTP/E2E 交互 + 视觉局部自查)。横切(按端/技术层)单片跑不通全链路 → slice-gate 空转 → 所有早验失效、bug 积压到交付前。骨架无业务可验=验证空转,故限 ≤2(业界 walking skeleton 例外,通常 1)。
|
|
50
|
+
|
|
47
51
|
## 切片清单格式
|
|
48
52
|
|
|
49
53
|
| 切片ID | 目标 | 涉及模块 | 上游依赖 | 主链路入口 | 验收标准 | 预估 |
|
package/templates/design//345/274/200/345/217/221/345/210/207/347/211/207/350/256/241/345/210/222.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ka-artifact_template-开发切片计划
|
|
3
|
+
kind: artifact
|
|
4
|
+
title: 开发切片计划
|
|
5
|
+
sync_policy: copy_to_project
|
|
6
|
+
status: active
|
|
7
|
+
extra:
|
|
8
|
+
name: development-slice-plan
|
|
9
|
+
scope:
|
|
10
|
+
- '*'
|
|
11
|
+
products:
|
|
12
|
+
- '*'
|
|
13
|
+
lifecycle_status: active
|
|
14
|
+
version: 1.0.0
|
|
15
|
+
last_reviewed: '2026-06-21'
|
|
16
|
+
type: artifact_template
|
|
17
|
+
domain: design
|
|
18
|
+
owner_mechanism: mc-generic-artifact
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# 开发切片计划
|
|
22
|
+
|
|
23
|
+
> **产物定位**:design 域最后产出(架构设计完成后),把项目拆成可独立开发、独立验证的切片。
|
|
24
|
+
> **核心纪律**:每个切片须引用架构 ARCH-* / DD-* / FE-*(承接设计),声明 AC-* 验收标准(可独立验证)。
|
|
25
|
+
> **反退化纪律**:每个 `SLC-*` 必须完整重复其字段表格(目标/涉及 ARCH-*/涉及 DD-*/涉及 FE-*/变更文件/上游依赖/主链路入口/AC-* 验收标准/预估),禁止退化——
|
|
26
|
+
> - 禁止「前详后废」(前几个切片完整、后面的退化成一行文字或省略字段)
|
|
27
|
+
> - 禁止「(同上格式)」「见上文」「…」等偷懒占位(模板自身曾以此示范,已纠正)
|
|
28
|
+
> - 字段表格不得用一行文字代替
|
|
29
|
+
> 任一切片字段表不完整 = 未完成。
|
|
30
|
+
> **下游**:build 域按切片顺序编码,每切片完成跑 slice-gate(docker 构建/部署/HTTP/E2E)。
|
|
31
|
+
|
|
32
|
+
## PHASE-* 阶段划分
|
|
33
|
+
|
|
34
|
+
| PHASE | 目标 | 包含切片 | 前置依赖 |
|
|
35
|
+
|-------|------|----------|----------|
|
|
36
|
+
| PHASE-1 | (如:核心链路打通) | SLC-01~SLC-03 | 无 |
|
|
37
|
+
| PHASE-2 | (如:扩展功能) | SLC-04~SLC-06 | PHASE-1 |
|
|
38
|
+
|
|
39
|
+
## SLC-* 切片清单
|
|
40
|
+
|
|
41
|
+
### SLC-01 切片名称
|
|
42
|
+
|
|
43
|
+
| 字段 | 内容 |
|
|
44
|
+
|------|------|
|
|
45
|
+
| 目标 | 本切片完成什么(一句话) |
|
|
46
|
+
| 涉及 ARCH-* | 引用的架构模块 ID(如 ARCH-01/ARCH-03) |
|
|
47
|
+
| 涉及 DD-* | 引用的设计产物 ID(如 DD-A01/DD-T02) |
|
|
48
|
+
| 涉及 FE-* | 引用的前端端 ID(如 FE-client-01),纯后端切片填"无" |
|
|
49
|
+
| 变更文件 | 本切片涉及的文件清单(预估) |
|
|
50
|
+
| 上游依赖 | 前置切片(如无填"无") |
|
|
51
|
+
| 主链路入口 | 本切片验证的入口(如 POST /api/v1/users) |
|
|
52
|
+
| AC-* 验收标准 | 切片完成的可验证条件(至少 1 条) |
|
|
53
|
+
| 预估 | 复杂度(S/M/L) |
|
|
54
|
+
|
|
55
|
+
### SLC-02 切片名称
|
|
56
|
+
|
|
57
|
+
| 字段 | 内容 |
|
|
58
|
+
|------|------|
|
|
59
|
+
| 目标 | 本切片完成什么(一句话) |
|
|
60
|
+
| 涉及 ARCH-* | 引用的架构模块 ID |
|
|
61
|
+
| 涉及 DD-* | 引用的设计产物 ID |
|
|
62
|
+
| 涉及 FE-* | 引用的前端端 ID(如 FE-admin-01),纯后端切片填"无" |
|
|
63
|
+
| 变更文件 | 本切片涉及的文件清单 |
|
|
64
|
+
| 上游依赖 | 前置切片(如无填"无") |
|
|
65
|
+
| 主链路入口 | 本切片验证的入口 |
|
|
66
|
+
| AC-* 验收标准 | 切片完成的可验证条件(至少 1 条) |
|
|
67
|
+
| 预估 | 复杂度(S/M/L) |
|
|
68
|
+
|
|
69
|
+
## 完成判定
|
|
70
|
+
|
|
71
|
+
- [ ] 每个 SLC 引用至少 1 个 ARCH-* 或 DD-*(承接设计)
|
|
72
|
+
- [ ] 每个 SLC 声明至少 1 个 AC-* 验收标准(可独立验证)
|
|
73
|
+
- [ ] 所有架构模块(ARCH-*)被至少 1 个 SLC 覆盖(XVAL-SLC 校验)
|
|
74
|
+
- [ ] 所有前端端模块(FE-*)被至少 1 个骨架 SLC 覆盖(XVAL-SLC 校验 ARCH-*/FE-*;前端骨架切片含路由/状态/API service 壳)
|
|
75
|
+
- [ ] 切片粒度可独立 docker 部署 + 浏览器验证(slice-gate 可执行)
|
|
76
|
+
- [ ] 每个 SLC 字段表格完整(无偷懒占位、无一字段降级为文字)
|
|
@@ -23,6 +23,7 @@ extra:
|
|
|
23
23
|
|
|
24
24
|
> **产物定位**:涉及数据模型/建表时产出(按需)。把表结构、关系、敏感级别、迁移回滚定清楚。
|
|
25
25
|
> **核心纪律**:字段映射精确到 表.字段;migration 成对(up+down)可回滚([[兼容性与迁移评估]])。
|
|
26
|
+
> **反退化纪律**:标 `[Always]` 的表格(实体列表/表字段/约束索引/API映射/SQL证据等)必须逐条填充,禁止空表、禁止用一行文字代替表格、禁止「…」占位;表多时每张表都填全字段,不得「其余表同上」。
|
|
26
27
|
> **完成判定**:见文末。
|
|
27
28
|
|
|
28
29
|
> **根本目标引用**:本产物的 `fundamental_need` 见需求分析文档 §1.3。
|
|
@@ -137,3 +138,4 @@ extra:
|
|
|
137
138
|
- [ ] migration 成对(up + down),回滚脚本已验证
|
|
138
139
|
- [ ] 敏感字段标注敏感级别 + 保护方式
|
|
139
140
|
- [ ] SQL 执行证据为真实运行结果(非静态分析)
|
|
141
|
+
- [ ] 标 [Always] 的表格均已逐条填充,无空表/无文字代替/无「其余同上」占位
|
|
@@ -24,6 +24,7 @@ extra:
|
|
|
24
24
|
|
|
25
25
|
> **产物定位**:架构阶段(4 阶段第 2 步)的产出。把"怎么做"想清楚,承接需求分析的 fundamental_need。
|
|
26
26
|
> **核心纪律**:每条架构决策须有 ADR 留痕([[开发者宪法]]),技术选型须有依据而非凭主流([[证据驱动与反幻觉]]),须考虑回滚/兼容/安全。
|
|
27
|
+
> **反退化纪律**:模块划分/技术选型/风险登记 等表格与列表必须逐条填写,禁止「其余模块同上」「…」省略、禁止用一句话代替表格行。
|
|
27
28
|
> **完成判定**:见文末。
|
|
28
29
|
|
|
29
30
|
## 1. 决策记录与范围
|
|
@@ -32,6 +33,9 @@ extra:
|
|
|
32
33
|
- 输入证据引用:
|
|
33
34
|
|
|
34
35
|
## 2. 需求概要
|
|
36
|
+
|
|
37
|
+
> 填需求分析 §2 的**真实 REQ 编号**(如 REQ-001,非占位符 REQ-NNN)。design-gate cross_validation 校验架构↔需求的 REQ-* 一致性+覆盖率。
|
|
38
|
+
|
|
35
39
|
| REQ-ID | 需求摘要 | 对应架构模块 |
|
|
36
40
|
|--------|---------|-------------|
|
|
37
41
|
|
|
@@ -72,6 +76,15 @@ extra:
|
|
|
72
76
|
- 状态管理策略
|
|
73
77
|
- 组件分层
|
|
74
78
|
|
|
79
|
+
#### 端模块清单(承接需求 §9 系统形态,每端一个 FE-* 模块;无前端项目填「不适用」)
|
|
80
|
+
|
|
81
|
+
| 端 ID(FE-*) | 端名称 | 项目目录 | 技术栈 | 职责 | 对应需求 §9 端 |
|
|
82
|
+
|--------------|--------|---------|--------|------|--------------|
|
|
83
|
+
| FE-client-01 | | client-portal | | | |
|
|
84
|
+
| FE-shared | shared | shared | | 类型/API client/工具共享 | |
|
|
85
|
+
|
|
86
|
+
> 端 ID **单段**命名(FE-client-01/FE-admin-01,禁多段横杠 FE-client-portal-01)——承接校验正则约束。「项目目录」是 build 域工程目录(`根/{目录}/src/`),build scope 据此放行写入;后端工程目录固定 `backend/`(§6.2)。XVAL-SLC 校验每个 FE-* 被切片覆盖;纯后端项目填「不适用」。
|
|
87
|
+
|
|
75
88
|
### 6.4 安全架构
|
|
76
89
|
- 认证与授权方案
|
|
77
90
|
- 数据加密策略
|
|
@@ -90,6 +103,15 @@ extra:
|
|
|
90
103
|
> 选型须有依据(性能/成本/团队熟悉度/生态),禁止"业界主流所以选它"。详见 [[决策与选型]]。
|
|
91
104
|
|
|
92
105
|
## 8. 专项产物引用
|
|
106
|
+
|
|
107
|
+
**产物适用性声明**(必填,XVAL 按此判定 database_design / api_specification 是否需产出):
|
|
108
|
+
- 数据库设计文档:____ — 依据:...(填「适用」或「不适用」;不适用例:纯前端无后端持久化;适用则下方填引用)
|
|
109
|
+
- API接口规格文档:____ — 依据:...(填「适用」或「不适用」;不适用例:无对外 API / 纯内部模块;适用则下方填引用)
|
|
110
|
+
|
|
111
|
+
> 列出本架构涉及的接口/表真实编号(cross_validation 校验 DD-A*/DD-T* 跨文档一致+覆盖率):
|
|
112
|
+
> - 接口 ID(对应 API 规格):DD-A01、DD-A02 ...
|
|
113
|
+
> - 表 ID(对应数据库设计):DD-T01、DD-T02 ...
|
|
114
|
+
|
|
93
115
|
- 数据库设计:`docs/design/01-数据库设计文档.md`
|
|
94
116
|
- API 规格:`docs/design/02-API接口规格文档.md`
|
|
95
117
|
- OpenAPI:`docs/api/openapi.yaml`
|
|
@@ -127,3 +149,5 @@ extra:
|
|
|
127
149
|
- [ ] 含风险登记 + 回滚方案(RTO/RPO)
|
|
128
150
|
- [ ] 跨横切关注点(日志/错误/缓存/配置)有方案
|
|
129
151
|
- [ ] 引用的数据库/API 专项产物路径有效
|
|
152
|
+
- [ ] §6.3 前端架构含端模块清单(FE-* ID,单段命名,承接需求 §9 端清单)
|
|
153
|
+
- [ ] 模块/选型/风险等表格逐条填写,无「其余同上」省略、无一句话代替
|
package/templates/design//350/256/276/350/256/241/345/206/263/347/255/226/347/272/252/345/276/213.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ka-guidance-设计决策纪律
|
|
3
|
+
kind: guidance
|
|
4
|
+
title: 设计决策纪律
|
|
5
|
+
sync_policy: engine_only
|
|
6
|
+
status: active
|
|
7
|
+
triggers:
|
|
8
|
+
- 技术选型
|
|
9
|
+
- 决策记录
|
|
10
|
+
- 框架选型
|
|
11
|
+
- 中间件选型
|
|
12
|
+
- 数据库选型
|
|
13
|
+
- 改造
|
|
14
|
+
- 重构方案
|
|
15
|
+
- 选型变更
|
|
16
|
+
- 兼容性分析
|
|
17
|
+
- 回滚方案
|
|
18
|
+
extra:
|
|
19
|
+
name: design-decision-discipline
|
|
20
|
+
scope:
|
|
21
|
+
- '*'
|
|
22
|
+
products:
|
|
23
|
+
- '*'
|
|
24
|
+
type: constraint
|
|
25
|
+
lifecycle_status: active
|
|
26
|
+
version: 1.0.0
|
|
27
|
+
domain: design
|
|
28
|
+
owner_mechanism: mc-workflow-contract
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# 设计决策纪律
|
|
32
|
+
|
|
33
|
+
> **来源**:从 design-gate 的 `DES-C-REVIEW`(semantic advisory,不阻断)拆出的**主观 / 须人确认**部分。
|
|
34
|
+
> 确定性的(ADR 章节、选型依据)已并入 `ARCH-STRUCT` 硬检查;本文件承载**不可机器判定**的纪律——靠 triggers 注入 + AI/用户自觉。
|
|
35
|
+
|
|
36
|
+
## 须用户确认(Agent 不得自动变更)
|
|
37
|
+
|
|
38
|
+
- **重大技术选型状态变更**(换框架 / 换数据库 / 换中间件 / 换部署形态)须经**用户确认**,Agent 不得自行变更
|
|
39
|
+
- 架构风格的根本性变更(如单体→微服务、同步→异步)须用户拍板
|
|
40
|
+
- 确认方式:在对话框明确告知变更影响,等用户确认后才写入 ADR
|
|
41
|
+
|
|
42
|
+
> 为何软:机器无法判定"是否经用户确认"(需对话记录)。靠本纪律提醒 Agent 主动确认。
|
|
43
|
+
|
|
44
|
+
## 改老系统须兼容性分析(brownfield)
|
|
45
|
+
|
|
46
|
+
- 改造已有系统前,须产出**兼容性分析**:影响哪些现有功能 / 接口 / 数据 / 调用方
|
|
47
|
+
- 须有**回滚方案**:变更失败如何恢复(ARCH-STRUCT 的「风险与回滚」章节承载)
|
|
48
|
+
- 兼容性分析可写入架构设计文档或 [[兼容性与迁移评估]]
|
|
49
|
+
|
|
50
|
+
## 决策方法论(选型依据)
|
|
51
|
+
|
|
52
|
+
- 技术选型须有**可证伪依据**:性能 / 成本 / 团队熟悉度 / 生态 / 已有架构约束
|
|
53
|
+
- **禁止**仅凭"业界主流 / 大厂在用"作唯一依据
|
|
54
|
+
- 每条决策在 ADR 记录:**上下文 → 候选方案 → 依据 → 结论**
|
|
55
|
+
|
|
56
|
+
## 关联
|
|
57
|
+
- 确定性部分(ADR 章节存在)→ `ARCH-STRUCT` 硬检查
|
|
58
|
+
- [[决策与选型]](选型方法论)/ [[兼容性与迁移评估]](迁移分析)/ [[证据驱动与反幻觉]](依据可证伪)
|
package/templates/design//350/256/276/350/256/241/350/264/250/351/207/217/350/246/201/347/202/271.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ka-guidance-设计质量要点
|
|
3
|
+
kind: guidance
|
|
4
|
+
title: 设计质量要点
|
|
5
|
+
sync_policy: engine_only
|
|
6
|
+
status: active
|
|
7
|
+
triggers:
|
|
8
|
+
- 非功能需求
|
|
9
|
+
- NFR
|
|
10
|
+
- 性能预算
|
|
11
|
+
- 可用性
|
|
12
|
+
- SLA
|
|
13
|
+
- 安全设计
|
|
14
|
+
- 威胁建模
|
|
15
|
+
- 权限模型
|
|
16
|
+
- 数据分类
|
|
17
|
+
- 设计质量
|
|
18
|
+
extra:
|
|
19
|
+
name: design-quality-essentials
|
|
20
|
+
scope:
|
|
21
|
+
- '*'
|
|
22
|
+
products:
|
|
23
|
+
- '*'
|
|
24
|
+
type: constraint
|
|
25
|
+
lifecycle_status: active
|
|
26
|
+
version: 1.0.0
|
|
27
|
+
domain: design
|
|
28
|
+
owner_mechanism: mc-stage-gate-engine
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# 设计质量要点
|
|
32
|
+
|
|
33
|
+
> **为什么是软规则**:`document_structure` 只查章节**存在**,不查**内容质量**。以下是要点内容质量(NFR 是否真量化、安全设计是否充分)——机器难确定性判,靠本 guidance 注入 + cross-artifact 对抗审查(用户方/攻击方/合规方)复核。强行硬判会假覆盖。
|
|
34
|
+
|
|
35
|
+
## NFR 须量化(非功能需求要有可测量数值)
|
|
36
|
+
|
|
37
|
+
禁止模糊表述,须有**具体数值**:
|
|
38
|
+
- 性能:响应 `< 3s`、QPS `>= 1000`、P99 `< 500ms`(非"快"/"高性能")
|
|
39
|
+
- 可用性:SLA `99.9%`、RTO `< 5min`、RPO `< 1min`
|
|
40
|
+
- 安全:加密算法(AES-256)、密码策略、会话超时
|
|
41
|
+
- 容量:用户数/数据量上限
|
|
42
|
+
|
|
43
|
+
**对抗审查用户方复核**:NFR 是否真量化(有数值);架构的 NFR 目标值是否与需求分析的 NFR 一致(避免需求 < 3s、架构写 < 5s 的漂移)。
|
|
44
|
+
|
|
45
|
+
## 安全设计须有深度(不止"有章节")
|
|
46
|
+
|
|
47
|
+
`ARCH-STRUCT` 验证「安全架构」章节存在,但内容须覆盖:
|
|
48
|
+
- **威胁建模**:关键资产的威胁路径与缓解
|
|
49
|
+
- **权限模型**:认证/授权方案(RBAC/ABAC、数据权限)
|
|
50
|
+
- **数据分类**:敏感数据识别 + 加密/脱敏/传输保护
|
|
51
|
+
- **信任边界**:内外网边界、服务间信任、第三方接入
|
|
52
|
+
|
|
53
|
+
**对抗审查攻击方/合规方复核**:安全设计是否真覆盖上述(非空章节/泛泛而谈)。
|
|
54
|
+
|
|
55
|
+
## 关联
|
|
56
|
+
- [[设计决策纪律]](决策须 ADR + 用户确认)
|
|
57
|
+
- [[证据驱动与反幻觉]](NFR/安全依据可证伪)
|
|
58
|
+
- cross-artifact 对抗审查:用户方(NFR 量化/一致)、攻击方(安全威胁)、合规方(安全规范)维度复核
|
|
@@ -24,6 +24,7 @@ extra:
|
|
|
24
24
|
|
|
25
25
|
> **产物定位**:需求阶段(4 阶段第 1 步)的产出。把"做什么"想清楚,不是"怎么做"。
|
|
26
26
|
> **核心纪律**([[工程执行总纲]]):先暴露阻塞困惑,禁止把模糊需求直接转成方案;区分事实/假设/需确认。[[证据驱动与反幻觉]]:需求声明要有来源证据。
|
|
27
|
+
> **反退化纪律**:功能点清单/非功能需求/角色 等表格必须逐条填写真实内容,禁止空表、禁止只填示例行后省略、禁止「…」占位。
|
|
27
28
|
> **完成判定**:见文末,不满足不算交付。
|
|
28
29
|
|
|
29
30
|
## 1. 需求来源
|
|
@@ -86,10 +87,33 @@ confirmed_by: <!-- 用户确认标记,未确认不得进入实现 -->
|
|
|
86
87
|
|
|
87
88
|
> 若系统无外部依赖,显式标注"本系统无外部接口依赖"。
|
|
88
89
|
|
|
90
|
+
## 9. 系统形态与交付边界
|
|
91
|
+
|
|
92
|
+
> 决定系统长什么样:是否前后端分离、几个端、各端技术栈。这是下游架构 §6.3 前端模块化(`FE-*` 端 ID)的依据,**须与用户研讨确认(非 AI 代决,属 must_confirm)**。
|
|
93
|
+
> 纯后端 API 项目:形态填「纯后端 API」,端清单留空(REQ-DELIB 不强制研讨前端形态)。
|
|
94
|
+
|
|
95
|
+
- 系统形态:纯后端 API / 前后端分离 / 多端 / 纯前端
|
|
96
|
+
- 是否有前端:是/否
|
|
97
|
+
|
|
98
|
+
### 端清单(有前端时逐端填写,每端对应架构 §6.3 一个 FE-* 端模块)
|
|
99
|
+
|
|
100
|
+
| 端 ID(FE-*) | 端名称 | 形态 | 技术栈 | 职责 | 本期交付 |
|
|
101
|
+
|--------------|--------|------|--------|------|---------|
|
|
102
|
+
| FE-client-01 | | Web/移动/桌面 | | | 是/否 |
|
|
103
|
+
|
|
104
|
+
> 端 ID 用**单段**命名(`FE-client-01`/`FE-admin-01`),不用多段(非 `FE-client-portal-01`)——承接校验正则约束。
|
|
105
|
+
|
|
106
|
+
### 交付边界
|
|
107
|
+
- 本期交付的端:
|
|
108
|
+
- 后续迭代的端:
|
|
109
|
+
- 前后端契约方式:RESTful / GraphQL / BFF
|
|
110
|
+
|
|
89
111
|
## 完成判定
|
|
90
112
|
|
|
113
|
+
- [ ] §9 系统形态与交付边界已填写(形态/端清单/技术栈已与用户研讨确认;涉及前端时须有研讨记录)
|
|
91
114
|
- [ ] `fundamental_need` 是用户目标而非解决方案,且 `confirmed_by` 已标记
|
|
92
115
|
- [ ] 每个 REQ 有验收标准(可验证,非"功能正常"模糊表述)
|
|
93
116
|
- [ ] 阻塞级未确认项已解决或已升级
|
|
94
117
|
- [ ] NFR 有量化验收指标
|
|
95
118
|
- [ ] 无证据的需求声明已标注来源/不确定
|
|
119
|
+
- [ ] 各表格逐条填写真实内容,无空表/无示例行后省略/无「…」占位
|