soloforge 1.3.2 → 1.3.4
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 +14 -0
- package/dist/adapters/claude_code/server.js +1 -1
- package/dist/adapters/claude_code/server.js.map +1 -1
- package/dist/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +385 -15
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
- package/dist/adapters/shared/workflow_template.js +3 -2
- package/dist/adapters/shared/workflow_template.js.map +1 -1
- package/dist/bin/soloforge.d.ts.map +1 -1
- package/dist/bin/soloforge.js +296 -1
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/asset_manifest.d.ts.map +1 -1
- package/dist/engine/asset_manifest.js +24 -0
- package/dist/engine/asset_manifest.js.map +1 -1
- package/dist/engine/backend_implementation_contract.d.ts +51 -0
- package/dist/engine/backend_implementation_contract.d.ts.map +1 -0
- package/dist/engine/backend_implementation_contract.js +142 -0
- package/dist/engine/backend_implementation_contract.js.map +1 -0
- package/dist/engine/code_maintainability_observability_contract.d.ts +74 -0
- package/dist/engine/code_maintainability_observability_contract.d.ts.map +1 -0
- package/dist/engine/code_maintainability_observability_contract.js +473 -0
- package/dist/engine/code_maintainability_observability_contract.js.map +1 -0
- package/dist/engine/config_write_boundary.d.ts +29 -0
- package/dist/engine/config_write_boundary.d.ts.map +1 -0
- package/dist/engine/config_write_boundary.js +69 -0
- package/dist/engine/config_write_boundary.js.map +1 -0
- package/dist/engine/consumable_asset_registry.d.ts.map +1 -1
- package/dist/engine/consumable_asset_registry.js +182 -1
- package/dist/engine/consumable_asset_registry.js.map +1 -1
- package/dist/engine/diagnostic_registry.d.ts +12 -0
- package/dist/engine/diagnostic_registry.d.ts.map +1 -1
- package/dist/engine/diagnostic_registry.js +62 -0
- package/dist/engine/diagnostic_registry.js.map +1 -1
- package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -1
- package/dist/engine/dual_layer_mechanism_registry.js +318 -1
- package/dist/engine/dual_layer_mechanism_registry.js.map +1 -1
- package/dist/engine/explicit_asset_registry.d.ts.map +1 -1
- package/dist/engine/explicit_asset_registry.js +338 -0
- package/dist/engine/explicit_asset_registry.js.map +1 -1
- package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
- package/dist/engine/implementation_roadmap_registry.js +112 -2
- package/dist/engine/implementation_roadmap_registry.js.map +1 -1
- package/dist/engine/knowledge_governance_gate.d.ts +38 -0
- package/dist/engine/knowledge_governance_gate.d.ts.map +1 -0
- package/dist/engine/knowledge_governance_gate.js +123 -0
- package/dist/engine/knowledge_governance_gate.js.map +1 -0
- package/dist/engine/log_governance.d.ts +25 -0
- package/dist/engine/log_governance.d.ts.map +1 -0
- package/dist/engine/log_governance.js +76 -0
- package/dist/engine/log_governance.js.map +1 -0
- package/dist/engine/mechanism_contract_registry.d.ts +1 -0
- package/dist/engine/mechanism_contract_registry.d.ts.map +1 -1
- package/dist/engine/mechanism_contract_registry.js +172 -0
- package/dist/engine/mechanism_contract_registry.js.map +1 -1
- package/dist/engine/mechanism_health_check.d.ts +23 -0
- package/dist/engine/mechanism_health_check.d.ts.map +1 -0
- package/dist/engine/mechanism_health_check.js +140 -0
- package/dist/engine/mechanism_health_check.js.map +1 -0
- package/dist/engine/next_action_planner.d.ts +19 -0
- package/dist/engine/next_action_planner.d.ts.map +1 -0
- package/dist/engine/next_action_planner.js +453 -0
- package/dist/engine/next_action_planner.js.map +1 -0
- package/dist/engine/observability.js +1 -1
- package/dist/engine/observability.js.map +1 -1
- package/dist/engine/ood_solid_contract.d.ts +51 -0
- package/dist/engine/ood_solid_contract.d.ts.map +1 -0
- package/dist/engine/ood_solid_contract.js +115 -0
- package/dist/engine/ood_solid_contract.js.map +1 -0
- package/dist/engine/project_stage_detector.d.ts +17 -0
- package/dist/engine/project_stage_detector.d.ts.map +1 -0
- package/dist/engine/project_stage_detector.js +185 -0
- package/dist/engine/project_stage_detector.js.map +1 -0
- package/dist/engine/release_issue_scenario_registry.d.ts.map +1 -1
- package/dist/engine/release_issue_scenario_registry.js +230 -1
- package/dist/engine/release_issue_scenario_registry.js.map +1 -1
- package/dist/engine/release_readiness_gate.d.ts +3 -0
- package/dist/engine/release_readiness_gate.d.ts.map +1 -1
- package/dist/engine/release_readiness_gate.js +407 -9
- package/dist/engine/release_readiness_gate.js.map +1 -1
- package/dist/engine/stale_current_task_detector.d.ts +30 -0
- package/dist/engine/stale_current_task_detector.d.ts.map +1 -0
- package/dist/engine/stale_current_task_detector.js +168 -0
- package/dist/engine/stale_current_task_detector.js.map +1 -0
- package/dist/engine/task_stage_detector.d.ts +19 -0
- package/dist/engine/task_stage_detector.d.ts.map +1 -0
- package/dist/engine/task_stage_detector.js +201 -0
- package/dist/engine/task_stage_detector.js.map +1 -0
- package/dist/engine/team_awareness.js +6 -6
- package/dist/engine/team_awareness.js.map +1 -1
- package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -1
- package/dist/engine/tool_invocation_contract_registry.js +10 -0
- package/dist/engine/tool_invocation_contract_registry.js.map +1 -1
- package/dist/engine/workflow_navigation_contract.d.ts +115 -0
- package/dist/engine/workflow_navigation_contract.d.ts.map +1 -0
- package/dist/engine/workflow_navigation_contract.js +39 -0
- package/dist/engine/workflow_navigation_contract.js.map +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/knowledge/acceptance_templates/OOD/350/256/276/350/256/241/346/221/230/350/246/201/346/250/241/347/211/210.md +60 -0
- package/templates/knowledge/acceptance_templates//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/351/252/214/346/224/266/346/250/241/346/235/277.md +78 -0
- package/templates/knowledge/acceptance_templates//345/220/216/347/253/257/345/256/236/347/216/260/351/252/214/346/224/266/346/270/205/345/215/225.md +46 -0
- package/templates/knowledge/procedures/OOD/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +50 -0
- package/templates/knowledge/procedures//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 +100 -0
- package/templates/knowledge/procedures//345/220/216/347/253/257/346/216/245/345/217/243/345/256/236/347/216/260/345/267/245/344/275/234/346/265/201.md +50 -0
- package/templates/knowledge/review//344/273/243/347/240/201/345/217/257/347/273/264/346/212/244/346/200/247/344/270/216/345/217/257/350/247/202/346/265/213/346/200/247/345/256/241/346/237/245.md +81 -0
- package/templates/knowledge/review_rules/SOLID/344/273/243/347/240/201/345/256/241/346/237/245/350/247/204/345/210/231.md +40 -0
- package/templates/knowledge/review_rules//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/345/256/241/346/237/245/350/247/204/345/210/231.md +38 -0
- package/templates/knowledge/rules/OOD/344/270/216SOLID/350/256/276/350/256/241/350/247/204/345/210/231.md +62 -0
- package/templates/knowledge/rules//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/345/245/221/347/272/246/350/247/204/345/210/231.md +121 -0
- package/templates/knowledge/rules//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/345/245/221/347/272/246/350/247/204/345/210/231.md +55 -0
- package/templates/knowledge/rules//345/267/245/344/275/234/346/265/201/345/257/274/350/210/252/345/245/221/347/272/246/350/247/204/345/210/231.md +113 -0
- package/templates/knowledge/rules//346/225/217/346/204/237/344/277/241/346/201/257/346/227/245/345/277/227/350/247/204/345/210/231.md +69 -0
- package/templates/knowledge/rules//346/227/245/345/277/227/346/262/273/347/220/206/350/247/204/345/210/231.md +49 -0
- package/templates/knowledge/rules//346/234/272/345/210/266/350/207/252/346/262/273/347/220/206/350/247/204/345/210/231.md +48 -0
- package/templates/knowledge/rules//346/240/207/345/207/206/350/265/204/344/272/247/350/246/206/347/233/226/350/247/204/345/210/231.md +43 -0
- package/templates/knowledge/rules//346/250/241/346/235/277/350/265/204/344/272/247/345/217/257/350/247/201/346/200/247/350/247/204/345/210/231.md +44 -0
- package/templates/knowledge/rules//347/237/245/350/257/206/346/262/273/347/220/206/350/247/204/345/210/231.md +50 -0
- package/templates/knowledge/rules//351/200/232/347/224/250/345/206/263/347/255/226/347/240/224/350/256/250/350/247/204/345/210/231.md +47 -0
- package/templates/knowledge/rules//351/205/215/347/275/256/350/220/275/347/233/230/350/276/271/347/225/214/350/247/204/345/210/231.md +47 -0
- package/templates/knowledge/rules//351/252/214/346/224/266/346/250/241/346/235/277/350/276/223/345/207/272/345/245/221/347/272/246/350/247/204/345/210/231.md +46 -0
- package/templates/patterns/SOLID/350/256/276/350/256/241/350/247/204/350/214/203.md +39 -0
- package/templates/patterns//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/350/247/204/350/214/203.md +39 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 全生命周期工作流导航
|
|
3
|
+
type: procedure
|
|
4
|
+
when: '下一步, 继续, 现在能写代码吗, 工作流导航, navigation, 阶段判断, 工作包生成'
|
|
5
|
+
scope:
|
|
6
|
+
- backend
|
|
7
|
+
- frontend
|
|
8
|
+
products:
|
|
9
|
+
- '*'
|
|
10
|
+
id: ka-procedure-全生命周期工作流导航
|
|
11
|
+
asset_kind: procedure
|
|
12
|
+
lifecycle_status: active
|
|
13
|
+
authority: supporting
|
|
14
|
+
owner_mechanism_id: mc-workflow-navigation-contract
|
|
15
|
+
routes:
|
|
16
|
+
- operation
|
|
17
|
+
- multi_stage_plan
|
|
18
|
+
- artifact_generation
|
|
19
|
+
primary_triggers:
|
|
20
|
+
- 全生命周期工作流导航
|
|
21
|
+
secondary_triggers:
|
|
22
|
+
- 下一步
|
|
23
|
+
- 继续
|
|
24
|
+
- 现在能写代码吗
|
|
25
|
+
- 阶段导航
|
|
26
|
+
negative_triggers: []
|
|
27
|
+
priority: P0
|
|
28
|
+
specificity: 5
|
|
29
|
+
consumes:
|
|
30
|
+
- mc-workflow-navigation-contract
|
|
31
|
+
- current_task_context
|
|
32
|
+
- project_configuration
|
|
33
|
+
- design_artifact_audit
|
|
34
|
+
- repair_reverify_directive
|
|
35
|
+
emits:
|
|
36
|
+
- next_action_plan
|
|
37
|
+
- executable_work_package
|
|
38
|
+
- prohibited_actions
|
|
39
|
+
required_evidence:
|
|
40
|
+
- project_stage
|
|
41
|
+
- task_stage
|
|
42
|
+
version: 1.0.0
|
|
43
|
+
last_reviewed: '2026-05-26'
|
|
44
|
+
status: active
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
# 全生命周期工作流导航
|
|
48
|
+
|
|
49
|
+
本流程定义了从项目初始化到发布后的完整工作流导航决策树。
|
|
50
|
+
|
|
51
|
+
## 项目生命周期阶段
|
|
52
|
+
|
|
53
|
+
| 阶段 | 判断条件 | 下一步 |
|
|
54
|
+
|------|----------|--------|
|
|
55
|
+
| 未初始化 | .soloforge/ 不存在或无 config.yaml | 运行 soloforge init |
|
|
56
|
+
| 配置待确认 | config.yaml 存在但字段未确认 | 运行 soloforge config confirm |
|
|
57
|
+
| 知识就绪 | 配置已确认、知识库已索引 | 提交开发意图开始新任务 |
|
|
58
|
+
| 设计进行中 | 设计产物存在但未通过审计 | 完成设计并通过审计 |
|
|
59
|
+
| 实现就绪 | 设计产物已通过审计 | 制定开发切片计划 |
|
|
60
|
+
| 开发进行中 | 有任务在编码/验证阶段 | 继续编码和验证 |
|
|
61
|
+
| 交付就绪 | 任务已通过验证 | 进行交付验收 |
|
|
62
|
+
| 已发布 | 已交付上线 | 进入观察期 |
|
|
63
|
+
| 发布后观察 | 发布后验证阶段 | 监控、反馈、回滚预案 |
|
|
64
|
+
|
|
65
|
+
## 任务生命周期阶段
|
|
66
|
+
|
|
67
|
+
任务从分类到交付的完整流程:
|
|
68
|
+
|
|
69
|
+
1. 输入材料收集 → 2. 需求明确化 → 3. 决策研讨 → 4. 架构设计 → 5. 详细设计 → 6. 数据库设计 → 7. API 设计 → 8. 切片规划 → 9. 编码实现 → 10. 本地验证 → 11. 测试 → 12. 代码审查 → 13. 修复复验 → 14. 交付验收 → 15. 发布准备 → 16. 发布后观察
|
|
70
|
+
|
|
71
|
+
## 导航决策流程
|
|
72
|
+
|
|
73
|
+
1. 调用 `sf_navigation` 或 `soloforge next` 获取当前状态
|
|
74
|
+
2. 检查是否有陈旧任务需要处理
|
|
75
|
+
3. 读取返回的 work_package,按描述执行下一步
|
|
76
|
+
4. 遵守 disallowed_actions 中的禁止动作
|
|
77
|
+
5. 执行完成后运行 acceptance_commands 验证
|
|
78
|
+
6. 如需用户确认,暂停并等待确认后再继续
|
|
79
|
+
|
|
80
|
+
## 陈旧任务处理
|
|
81
|
+
|
|
82
|
+
当 current-task.json 指向旧任务时:
|
|
83
|
+
- 选择"恢复":继续旧任务从上次中断处开始
|
|
84
|
+
- 选择"归档":将旧任务标记为归档,清理指针
|
|
85
|
+
- 选择"新建":归档旧任务后开始新任务
|
|
86
|
+
- 不得绕过 SoloForge 直接操作
|
|
87
|
+
|
|
88
|
+
## 常见导航场景
|
|
89
|
+
|
|
90
|
+
**场景: 用户说"继续"**
|
|
91
|
+
→ 调用 sf_navigation 获取 work_package,按描述执行
|
|
92
|
+
|
|
93
|
+
**场景: 用户说"现在能写代码吗"**
|
|
94
|
+
→ sf_navigation 检查项目阶段和设计审计状态,返回允许或阻断原因
|
|
95
|
+
|
|
96
|
+
**场景: 用户说"审查后做什么"**
|
|
97
|
+
→ sf_navigation 检查 code_review 结果,推荐下一步验证或交付
|
|
98
|
+
|
|
99
|
+
**场景: 用户说"发布后做什么"**
|
|
100
|
+
→ sf_navigation 返回发布后观察工作包:验证、监控、反馈收集
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 后端接口实现工作流
|
|
3
|
+
type: procedure
|
|
4
|
+
when: '后端接口, Controller, DTO, API实现, 数据写入'
|
|
5
|
+
scope:
|
|
6
|
+
- backend
|
|
7
|
+
products:
|
|
8
|
+
- '*'
|
|
9
|
+
id: ka-procedure-后端接口实现工作流
|
|
10
|
+
asset_kind: procedure
|
|
11
|
+
lifecycle_status: active
|
|
12
|
+
authority: supporting
|
|
13
|
+
owner_mechanism_id: mc-backend-implementation-contract
|
|
14
|
+
routes:
|
|
15
|
+
- code_change
|
|
16
|
+
- artifact_generation
|
|
17
|
+
primary_triggers:
|
|
18
|
+
- 后端接口实现工作流
|
|
19
|
+
secondary_triggers:
|
|
20
|
+
- REST API
|
|
21
|
+
negative_triggers: []
|
|
22
|
+
priority: P1
|
|
23
|
+
specificity: 5
|
|
24
|
+
consumes:
|
|
25
|
+
- mc-backend-implementation-contract
|
|
26
|
+
emits:
|
|
27
|
+
- backend_work_package
|
|
28
|
+
- verification_result
|
|
29
|
+
required_evidence:
|
|
30
|
+
- execution_evidence
|
|
31
|
+
version: 1.0.0
|
|
32
|
+
last_reviewed: '2026-05-26'
|
|
33
|
+
status: active
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 步骤
|
|
37
|
+
|
|
38
|
+
1. 确认 OpenAPI、数据库 migration、权限与状态流转基线。
|
|
39
|
+
2. 定义请求 DTO、响应 DTO、字段校验、错误码和分页排序边界。
|
|
40
|
+
3. 定义应用服务事务边界、幂等策略、并发控制和审计事件。
|
|
41
|
+
4. 编码并执行单元、集成、权限、重复提交与契约一致性验证。
|
|
42
|
+
5. 审查 finding 清零并提供验收证据后交付。
|
|
43
|
+
|
|
44
|
+
## 工作包
|
|
45
|
+
|
|
46
|
+
| 类别 | 需明确内容 | 证据 |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| 接口边界 | DTO、统一响应、错误码、分页 | OpenAPI/测试 |
|
|
49
|
+
| 一致性 | 事务、幂等、并发、状态流转 | migration/集成测试 |
|
|
50
|
+
| 安全 | 权限、租户、审计、隐私 | 越权测试/审计日志 |
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 代码可维护性与可观测性审查
|
|
3
|
+
scope:
|
|
4
|
+
- '*'
|
|
5
|
+
products:
|
|
6
|
+
- '*'
|
|
7
|
+
id: ka-review-rule-代码可维护性与可观测性审查
|
|
8
|
+
asset_kind: review_rule
|
|
9
|
+
lifecycle_status: active
|
|
10
|
+
authority: canonical
|
|
11
|
+
owner_mechanism_id: mc-code-maintainability-observability-contract
|
|
12
|
+
routes:
|
|
13
|
+
- code_change
|
|
14
|
+
- review
|
|
15
|
+
primary_triggers:
|
|
16
|
+
- 代码审查
|
|
17
|
+
- review
|
|
18
|
+
- 验证
|
|
19
|
+
secondary_triggers:
|
|
20
|
+
- 业务代码
|
|
21
|
+
- 接口实现
|
|
22
|
+
negative_triggers:
|
|
23
|
+
- 纯文档
|
|
24
|
+
- 纯样式
|
|
25
|
+
priority: P1
|
|
26
|
+
specificity: 4
|
|
27
|
+
consumes:
|
|
28
|
+
required_evidence:
|
|
29
|
+
- execution_evidence
|
|
30
|
+
version: 1.0.0
|
|
31
|
+
last_reviewed: '2026-05-26'
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 审查维度
|
|
35
|
+
|
|
36
|
+
### 1. 日志完整性
|
|
37
|
+
检查 changed files 中:
|
|
38
|
+
- 支付/金额/退款操作是否有含对象 ID 和前后值的日志
|
|
39
|
+
- 权限拒绝是否有含操作人和拒绝原因的日志
|
|
40
|
+
- 外部调用是否有含目标、响应码和重试信息的失败日志
|
|
41
|
+
- 状态变更是否有含前后状态和触发原因的流转日志
|
|
42
|
+
- 数据修复/迁移是否有含修复前值和影响行数的审计日志
|
|
43
|
+
|
|
44
|
+
### 2. 敏感信息泄漏
|
|
45
|
+
检查所有日志输出是否:
|
|
46
|
+
- 不包含 token、password、cookie 全量
|
|
47
|
+
- 不包含身份证、手机号、银行卡全量
|
|
48
|
+
- 不包含健康隐私信息
|
|
49
|
+
|
|
50
|
+
### 3. 注释质量
|
|
51
|
+
检查 changed files 中:
|
|
52
|
+
- 复杂业务规则是否有说明"为什么"的注释
|
|
53
|
+
- 金额计算是否有设计意图注释
|
|
54
|
+
- 状态机是否有状态流转注释
|
|
55
|
+
- 不检查纯复述代码的废话注释
|
|
56
|
+
|
|
57
|
+
### 4. Logger 使用
|
|
58
|
+
检查是否使用了项目已有 logger:
|
|
59
|
+
- Java/Spring 项目是否使用 Slf4j
|
|
60
|
+
- Node 项目是否使用 pino/winston
|
|
61
|
+
- NestJS 项目是否使用 NestJS Logger
|
|
62
|
+
- 前端项目是否避免裸 console
|
|
63
|
+
|
|
64
|
+
### 5. 异常处理
|
|
65
|
+
检查 catch 块是否:
|
|
66
|
+
- 不吞异常(至少记录日志)
|
|
67
|
+
- 不只输出 "error" / "failed" 这类不可定位信息
|
|
68
|
+
|
|
69
|
+
## 审查输出格式
|
|
70
|
+
每条 finding 包含:
|
|
71
|
+
- 类别 (category)
|
|
72
|
+
- 严重度 (P0/P1/P2/P3)
|
|
73
|
+
- 文件路径
|
|
74
|
+
- 证据位置
|
|
75
|
+
- 中文修复建议
|
|
76
|
+
|
|
77
|
+
## 低风险跳过规则
|
|
78
|
+
- 纯样式、文案修改不触发审查
|
|
79
|
+
- 简单 getter/setter 不触发审查
|
|
80
|
+
- 测试 fixture 不触发审查
|
|
81
|
+
- 低风险只读查询(且已有统一 access log)不触发审查
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: SOLID代码审查规则
|
|
3
|
+
type: review_rule
|
|
4
|
+
when: '代码审查, SOLID, 面向对象设计, controller, service'
|
|
5
|
+
scope:
|
|
6
|
+
- backend
|
|
7
|
+
- frontend
|
|
8
|
+
products:
|
|
9
|
+
- '*'
|
|
10
|
+
id: ka-review-rule-SOLID代码审查规则
|
|
11
|
+
asset_kind: review_rule
|
|
12
|
+
lifecycle_status: active
|
|
13
|
+
authority: canonical
|
|
14
|
+
owner_mechanism_id: mc-ood-solid-contract
|
|
15
|
+
routes:
|
|
16
|
+
- code_change
|
|
17
|
+
primary_triggers:
|
|
18
|
+
- SOLID代码审查规则
|
|
19
|
+
secondary_triggers:
|
|
20
|
+
- 重构
|
|
21
|
+
negative_triggers: []
|
|
22
|
+
priority: P1
|
|
23
|
+
specificity: 5
|
|
24
|
+
required_evidence:
|
|
25
|
+
- code_review_findings
|
|
26
|
+
version: 1.0.0
|
|
27
|
+
last_reviewed: '2026-05-26'
|
|
28
|
+
status: active
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 阻断项
|
|
32
|
+
|
|
33
|
+
| 原则 | 阻断表现 | 修复方向 |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| SRP | Controller 承担事务、持久化或业务计算 | 下沉至应用服务并只保留协议映射 |
|
|
36
|
+
| LSP | 子类型对父契约操作抛出 unsupported | 修正抽象层级或拆分契约 |
|
|
37
|
+
| ISP | 宽接口迫使实现提供空方法/异常 | 拆分客户端特定接口 |
|
|
38
|
+
| DIP | 业务服务直接构造外部 SDK 或仓储实现 | 引入端口并通过依赖注入装配 |
|
|
39
|
+
|
|
40
|
+
OCP 的多分支扩展风险可先作为 warning,但必须记录变化维度和后续扩展方案。
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 后端实现工程审查规则
|
|
3
|
+
type: review_rule
|
|
4
|
+
when: '后端审查, Controller, DTO, 事务, 幂等, 权限'
|
|
5
|
+
scope:
|
|
6
|
+
- backend
|
|
7
|
+
products:
|
|
8
|
+
- '*'
|
|
9
|
+
id: ka-review-rule-后端实现工程审查规则
|
|
10
|
+
asset_kind: review_rule
|
|
11
|
+
lifecycle_status: active
|
|
12
|
+
authority: canonical
|
|
13
|
+
owner_mechanism_id: mc-backend-implementation-contract
|
|
14
|
+
routes:
|
|
15
|
+
- code_change
|
|
16
|
+
primary_triggers:
|
|
17
|
+
- 后端实现工程审查规则
|
|
18
|
+
secondary_triggers:
|
|
19
|
+
- 接口审查
|
|
20
|
+
negative_triggers: []
|
|
21
|
+
priority: P1
|
|
22
|
+
specificity: 5
|
|
23
|
+
required_evidence:
|
|
24
|
+
- code_review_findings
|
|
25
|
+
version: 1.0.0
|
|
26
|
+
last_reviewed: '2026-05-26'
|
|
27
|
+
status: active
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 硬失败检查
|
|
31
|
+
|
|
32
|
+
| 分类 | 失败表现 | 修复要求 |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| Controller 边界 | 入参/出参使用数据库实体 | 改为 DTO/VO 并显式映射 |
|
|
35
|
+
| 参数校验 | POST/PUT/PATCH 未校验 | 补校验注解或验证器与失败测试 |
|
|
36
|
+
| 事务 | 事务中调用 HTTP/MQ/外部 SDK | 拆分边界或采用 outbox/补偿 |
|
|
37
|
+
| 幂等 | 支付、回调或写入无幂等证据 | 补请求键/唯一约束/重复提交测试 |
|
|
38
|
+
| 安全审计 | 敏感接口无权限、租户或审计 | 补安全校验和审计证据 |
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: OOD与SOLID设计规则
|
|
3
|
+
scope:
|
|
4
|
+
- backend
|
|
5
|
+
- frontend
|
|
6
|
+
products:
|
|
7
|
+
- '*'
|
|
8
|
+
id: ka-hard-rule-OOD与SOLID设计规则
|
|
9
|
+
asset_kind: hard_rule
|
|
10
|
+
lifecycle_status: active
|
|
11
|
+
authority: canonical
|
|
12
|
+
owner_mechanism_id: mc-ood-solid-contract
|
|
13
|
+
asset_role: required
|
|
14
|
+
consumed_by:
|
|
15
|
+
- mc-ood-solid-contract
|
|
16
|
+
routes:
|
|
17
|
+
- code_change
|
|
18
|
+
- artifact_generation
|
|
19
|
+
- multi_stage_plan
|
|
20
|
+
primary_triggers:
|
|
21
|
+
- 面向对象设计
|
|
22
|
+
- SOLID
|
|
23
|
+
secondary_triggers:
|
|
24
|
+
- 领域服务
|
|
25
|
+
- 重构
|
|
26
|
+
- 策略
|
|
27
|
+
negative_triggers:
|
|
28
|
+
- 文案
|
|
29
|
+
- 样式
|
|
30
|
+
priority: P1
|
|
31
|
+
specificity: 5
|
|
32
|
+
consumes:
|
|
33
|
+
- mc-coding-readiness
|
|
34
|
+
hard_blocks:
|
|
35
|
+
- ood_summary_missing
|
|
36
|
+
- solid_hard_fail_unresolved
|
|
37
|
+
fallback: manual_required
|
|
38
|
+
required_evidence:
|
|
39
|
+
- ood_design_summary
|
|
40
|
+
- code_review_findings
|
|
41
|
+
version: 1.0.0
|
|
42
|
+
last_reviewed: '2026-05-26'
|
|
43
|
+
status: active
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 编码前门禁
|
|
47
|
+
|
|
48
|
+
复杂业务逻辑、领域模型、服务边界、策略或重构任务在编码前必须给出:
|
|
49
|
+
|
|
50
|
+
- 对象及单一职责。
|
|
51
|
+
- 对外接口与依赖方向。
|
|
52
|
+
- 可变化点与扩展方式。
|
|
53
|
+
- SRP、OCP、LSP、ISP、DIP 风险及验证方式。
|
|
54
|
+
|
|
55
|
+
## 代码审查门禁
|
|
56
|
+
|
|
57
|
+
- Controller 不承担业务计算或持久化职责。
|
|
58
|
+
- 应用/领域服务依赖抽象端口,不直接构造基础设施依赖。
|
|
59
|
+
- 子类型不能拒绝父契约操作,接口不能迫使实现提供无效操作。
|
|
60
|
+
- 同一类型或状态的多处分支应判断是否需要策略扩展点。
|
|
61
|
+
|
|
62
|
+
硬失败未清零时,不得交付。简单文案或样式修改不强行引入对象设计。
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 代码注释与日志契约规则
|
|
3
|
+
scope:
|
|
4
|
+
- '*'
|
|
5
|
+
products:
|
|
6
|
+
- '*'
|
|
7
|
+
id: ka-hard-rule-代码注释与日志契约规则
|
|
8
|
+
asset_kind: hard_rule
|
|
9
|
+
lifecycle_status: active
|
|
10
|
+
authority: canonical
|
|
11
|
+
owner_mechanism_id: mc-code-maintainability-observability-contract
|
|
12
|
+
routes:
|
|
13
|
+
- code_change
|
|
14
|
+
- artifact_generation
|
|
15
|
+
- operation
|
|
16
|
+
- multi_stage_plan
|
|
17
|
+
primary_triggers:
|
|
18
|
+
- 业务编码
|
|
19
|
+
- 接口实现
|
|
20
|
+
- 状态流转
|
|
21
|
+
- 支付
|
|
22
|
+
- 权限
|
|
23
|
+
- 迁移脚本
|
|
24
|
+
- 数据修复
|
|
25
|
+
secondary_triggers:
|
|
26
|
+
- Service
|
|
27
|
+
- Controller
|
|
28
|
+
- UseCase
|
|
29
|
+
- 异常处理
|
|
30
|
+
negative_triggers:
|
|
31
|
+
- 文案
|
|
32
|
+
- 样式
|
|
33
|
+
- getter
|
|
34
|
+
- setter
|
|
35
|
+
- fixture
|
|
36
|
+
priority: P0
|
|
37
|
+
specificity: 5
|
|
38
|
+
consumes:
|
|
39
|
+
- mc-coding-readiness
|
|
40
|
+
hard_blocks:
|
|
41
|
+
- code_observability_work_package_missing
|
|
42
|
+
- sensitive_log_leak
|
|
43
|
+
- catch_swallow
|
|
44
|
+
- missing_log_critical
|
|
45
|
+
- missing_comment_complex_unresolved
|
|
46
|
+
fallback: manual_required
|
|
47
|
+
required_evidence:
|
|
48
|
+
- code_observability_work_package
|
|
49
|
+
- review_findings
|
|
50
|
+
- verification_result
|
|
51
|
+
version: 1.0.0
|
|
52
|
+
last_reviewed: '2026-05-26'
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 注释契约
|
|
56
|
+
|
|
57
|
+
### 必须有注释
|
|
58
|
+
- 业务规则不直观时
|
|
59
|
+
- 领域不变量(如"一个长者同一时间只能有一个有效入住")
|
|
60
|
+
- 金额、账单、补贴、支付、退款、核销逻辑
|
|
61
|
+
- 状态流转逻辑(如 pending → paid → refunded)
|
|
62
|
+
- 幂等、分布式锁、事务、并发控制
|
|
63
|
+
- 权限、安全、审计判断
|
|
64
|
+
- 外部系统兼容、历史包袱、第三方接口限制
|
|
65
|
+
- 复杂 SQL、复杂查询条件、非显而易见算法
|
|
66
|
+
|
|
67
|
+
### 必须禁止
|
|
68
|
+
- 每行废话注释
|
|
69
|
+
- 复述代码字面含义的注释
|
|
70
|
+
- 注释与代码行为不一致
|
|
71
|
+
- 注释承诺了代码没有做到的安全性、幂等性或事务性
|
|
72
|
+
|
|
73
|
+
## 日志契约
|
|
74
|
+
|
|
75
|
+
### 必须有日志
|
|
76
|
+
- 用户登录、登出、认证失败
|
|
77
|
+
- 权限拒绝、越权访问
|
|
78
|
+
- 创建、修改、删除关键业务对象
|
|
79
|
+
- 状态变更、金额变更、支付、退款、补贴、核销
|
|
80
|
+
- 合同、入住、账单、证照、人员角色变更
|
|
81
|
+
- 外部 API 调用失败、超时、重试
|
|
82
|
+
- 异步任务开始、成功、失败、重试、跳过
|
|
83
|
+
- 数据修复、批处理、迁移脚本
|
|
84
|
+
- 捕获异常后继续执行
|
|
85
|
+
- 降级、兜底、补偿逻辑
|
|
86
|
+
|
|
87
|
+
### 日志必须具备
|
|
88
|
+
- 事件名或动作名
|
|
89
|
+
- 业务对象 ID
|
|
90
|
+
- 操作人或系统来源
|
|
91
|
+
- traceId / correlationId(如果项目已有)
|
|
92
|
+
- 失败原因
|
|
93
|
+
- 关键状态变化前后值
|
|
94
|
+
- 合理日志级别
|
|
95
|
+
|
|
96
|
+
### 必须禁止
|
|
97
|
+
- 裸 console.log(生产代码)
|
|
98
|
+
- 生产代码遗留调试日志
|
|
99
|
+
- catch 后无日志直接吞异常
|
|
100
|
+
- 只打印 "error"、"failed" 这类不可定位日志
|
|
101
|
+
- 打印 password、token、secret、cookie、身份证全量、手机号全量、银行卡全量、健康隐私
|
|
102
|
+
- 高频循环里刷屏日志
|
|
103
|
+
- 日志拼接大对象导致性能或隐私问题
|
|
104
|
+
|
|
105
|
+
## 项目 logger 识别
|
|
106
|
+
- Java/Spring: Slf4j + LoggerFactory
|
|
107
|
+
- Node: pino, winston, 项目封装 logger
|
|
108
|
+
- NestJS: Logger
|
|
109
|
+
- 前端: 项目封装 logger,或生产环境禁止 console
|
|
110
|
+
- 如果项目没有 logger,要求先建立项目 logger 包装
|
|
111
|
+
|
|
112
|
+
## 严重度
|
|
113
|
+
- P0 阻断: 敏感信息泄漏、catch 吞异常、支付/金额/权限变更无日志
|
|
114
|
+
- P1 阻断: 状态流转无日志、复杂规则无注释、外部调用无日志、裸 console.log
|
|
115
|
+
- P2 警告: 日志级别不合理、上下文字段不足
|
|
116
|
+
- P3 建议: 普通可读性优化
|
|
117
|
+
|
|
118
|
+
## 低风险跳过
|
|
119
|
+
- 纯样式、文案、简单 getter/setter、简单类型定义、测试 fixture
|
|
120
|
+
- 低风险只读查询且已有统一 access log
|
|
121
|
+
- 简单配置修改、一次性本地实验代码
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 后端实现工程契约规则
|
|
3
|
+
scope:
|
|
4
|
+
- backend
|
|
5
|
+
products:
|
|
6
|
+
- '*'
|
|
7
|
+
id: ka-hard-rule-后端实现工程契约规则
|
|
8
|
+
asset_kind: hard_rule
|
|
9
|
+
lifecycle_status: active
|
|
10
|
+
authority: canonical
|
|
11
|
+
owner_mechanism_id: mc-backend-implementation-contract
|
|
12
|
+
asset_role: required
|
|
13
|
+
consumed_by:
|
|
14
|
+
- mc-backend-implementation-contract
|
|
15
|
+
routes:
|
|
16
|
+
- code_change
|
|
17
|
+
- artifact_generation
|
|
18
|
+
- multi_stage_plan
|
|
19
|
+
primary_triggers:
|
|
20
|
+
- 后端实现
|
|
21
|
+
- 接口实现
|
|
22
|
+
secondary_triggers:
|
|
23
|
+
- Controller
|
|
24
|
+
- DTO
|
|
25
|
+
- 事务
|
|
26
|
+
- 幂等
|
|
27
|
+
negative_triggers:
|
|
28
|
+
- 文案
|
|
29
|
+
priority: P1
|
|
30
|
+
specificity: 5
|
|
31
|
+
consumes:
|
|
32
|
+
- mc-coding-readiness
|
|
33
|
+
hard_blocks:
|
|
34
|
+
- backend_work_package_missing
|
|
35
|
+
- backend_hard_fail_unresolved
|
|
36
|
+
fallback: manual_required
|
|
37
|
+
required_evidence:
|
|
38
|
+
- backend_work_package
|
|
39
|
+
- verification_result
|
|
40
|
+
version: 1.0.0
|
|
41
|
+
last_reviewed: '2026-05-26'
|
|
42
|
+
status: active
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 编码前必须确认
|
|
46
|
+
|
|
47
|
+
- Controller 只接收 DTO、执行校验、调用应用服务并返回统一响应对象。
|
|
48
|
+
- 写操作的事务、一致性、幂等键、并发冲突处理已定义。
|
|
49
|
+
- 权限、租户隔离、敏感字段与审计日志已定义。
|
|
50
|
+
- OpenAPI、请求/响应字段表、数据库 migration 和错误码有权威对齐依据。
|
|
51
|
+
- 验证计划包含成功、失败、重试、越权、重复提交和边界数据。
|
|
52
|
+
|
|
53
|
+
## 阻断规则
|
|
54
|
+
|
|
55
|
+
直接暴露实体、写接口无校验、事务内外部调用、高风险写入无幂等或敏感接口无安全审计证据,均不得交付。
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 工作流导航契约规则
|
|
3
|
+
scope:
|
|
4
|
+
- '*'
|
|
5
|
+
products:
|
|
6
|
+
- '*'
|
|
7
|
+
id: ka-hard-rule-工作流导航契约规则
|
|
8
|
+
asset_kind: hard_rule
|
|
9
|
+
lifecycle_status: active
|
|
10
|
+
authority: canonical
|
|
11
|
+
owner_mechanism_id: mc-workflow-navigation-contract
|
|
12
|
+
asset_role: required
|
|
13
|
+
consumed_by:
|
|
14
|
+
- mc-workflow-navigation-contract
|
|
15
|
+
- consumable_asset_registry
|
|
16
|
+
- knowledge_injection
|
|
17
|
+
routes:
|
|
18
|
+
- operation
|
|
19
|
+
- multi_stage_plan
|
|
20
|
+
- artifact_generation
|
|
21
|
+
primary_triggers:
|
|
22
|
+
- 工作流导航契约规则
|
|
23
|
+
secondary_triggers:
|
|
24
|
+
- 下一步
|
|
25
|
+
- 继续
|
|
26
|
+
- 现在能写代码吗
|
|
27
|
+
- 导航
|
|
28
|
+
- navigation
|
|
29
|
+
negative_triggers: []
|
|
30
|
+
priority: P0
|
|
31
|
+
specificity: 5
|
|
32
|
+
consumes:
|
|
33
|
+
- mc-workflow-navigation-contract
|
|
34
|
+
hard_blocks:
|
|
35
|
+
- stale_task_bypass
|
|
36
|
+
- disallowed_action_execution
|
|
37
|
+
fallback: manual_required
|
|
38
|
+
required_evidence:
|
|
39
|
+
- project_stage
|
|
40
|
+
- task_stage
|
|
41
|
+
version: 1.0.0
|
|
42
|
+
last_reviewed: '2026-05-26'
|
|
43
|
+
status: active
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 核心原则
|
|
47
|
+
|
|
48
|
+
执行任何开发动作前,必须先查询工作流导航状态。不得绕过导航机制凭经验操作。
|
|
49
|
+
|
|
50
|
+
查询方式:`soloforge next`(CLI)或 `sf_navigation`(MCP 工具)。
|
|
51
|
+
|
|
52
|
+
## 禁止动作规则
|
|
53
|
+
|
|
54
|
+
以下 7 条规则在工作流导航中强制执行:
|
|
55
|
+
|
|
56
|
+
1. **设计审计失败 → 禁止写业务代码**
|
|
57
|
+
- 条件:design_artifact_pack.status 不是 implementation_ready
|
|
58
|
+
- 阻断:sf_execute
|
|
59
|
+
- 必须先通过设计审计复验
|
|
60
|
+
|
|
61
|
+
2. **配置未确认 → 优先建议确认配置**
|
|
62
|
+
- 条件:项目阶段为 configuration_pending
|
|
63
|
+
- 阻断:除 sf_init、config_confirm 外的所有动作
|
|
64
|
+
- 必须先运行 soloforge config confirm
|
|
65
|
+
|
|
66
|
+
3. **决策未确认 → 禁止定稿架构/详细设计/代码**
|
|
67
|
+
- 条件:架构决策研讨中存在未确认域
|
|
68
|
+
- 阻断:sf_execute、sf_expand
|
|
69
|
+
- 必须先完成决策研讨并获取用户确认
|
|
70
|
+
|
|
71
|
+
4. **无开发切片计划 → 禁止大范围编码**
|
|
72
|
+
- 条件:expansion 存在但 planning 不存在
|
|
73
|
+
- 阻断:sf_execute(大范围)
|
|
74
|
+
- 必须先生成切片规划工作包
|
|
75
|
+
|
|
76
|
+
5. **修复重验指令未清零 → 禁止交付**
|
|
77
|
+
- 条件:repair_reverify_directive.blocked = true
|
|
78
|
+
- 阻断:sf_deliver
|
|
79
|
+
- 必须先完成修复和复验
|
|
80
|
+
|
|
81
|
+
6. **测试失败 → 禁止交付**
|
|
82
|
+
- 条件:verification_result.status = failed
|
|
83
|
+
- 阻断:sf_deliver
|
|
84
|
+
- 必须先修复测试
|
|
85
|
+
|
|
86
|
+
7. **本地验收缺失 → 禁止交付结论**
|
|
87
|
+
- 条件:delivery_ready 但无 local_acceptance_evidence
|
|
88
|
+
- 阻断:sf_deliver
|
|
89
|
+
- 必须先完成本地验收
|
|
90
|
+
|
|
91
|
+
## 陈旧任务处理协议
|
|
92
|
+
|
|
93
|
+
当检测到陈旧任务时(如 current-task.json 指向旧任务):
|
|
94
|
+
|
|
95
|
+
- **不得绕过 SoloForge 状态直接操作**
|
|
96
|
+
- **不得说"无需 SoloForge 状态"然后自由发挥**
|
|
97
|
+
- 必须从三个选项中选择:恢复旧任务 / 归档旧任务 / 开始新任务
|
|
98
|
+
- 旧任务文件不得静默删除,只处理 current-task 指针
|
|
99
|
+
- 选择必须留有审计痕迹
|
|
100
|
+
|
|
101
|
+
## Override 协议
|
|
102
|
+
|
|
103
|
+
用户可以显式 override 导航建议,但必须包含:
|
|
104
|
+
- override_reason:覆盖原因
|
|
105
|
+
- user_confirmation_ref:用户确认引用
|
|
106
|
+
- risk_acknowledged:已确认风险
|
|
107
|
+
|
|
108
|
+
无痕 override 不允许。
|
|
109
|
+
|
|
110
|
+
## JSON 输出契约
|
|
111
|
+
|
|
112
|
+
`soloforge next --json` 输出纯 JSON 到 stdout,无日志污染。
|
|
113
|
+
字段包含:project_stage、task_stage、confidence、stage_evidence、blocking_reasons、recommended_commands、recommended_prompt、disallowed_next_actions、work_package。
|