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
|
@@ -35,6 +35,7 @@ const KNOWN_REGISTRIES = new Set([
|
|
|
35
35
|
"decision_contract",
|
|
36
36
|
"dual_layer_mechanism_registry",
|
|
37
37
|
"contract_registry",
|
|
38
|
+
"explicit_asset_registry",
|
|
38
39
|
]);
|
|
39
40
|
// ── 契约到 LayerMap 的转换 ──
|
|
40
41
|
function contractToLayerMap(c) {
|
|
@@ -1772,6 +1773,321 @@ const MECHANISM_CONTRACTS = [
|
|
|
1772
1773
|
},
|
|
1773
1774
|
status: "dual_layer_enforced",
|
|
1774
1775
|
},
|
|
1776
|
+
// ── 38. 全生命周期工作流导航契约 ──
|
|
1777
|
+
{
|
|
1778
|
+
mechanism_id: "mc-workflow-navigation-contract",
|
|
1779
|
+
mechanism_name: "全生命周期工作流导航契约",
|
|
1780
|
+
owner_issue_id: "问题六十五",
|
|
1781
|
+
priority: "P0",
|
|
1782
|
+
template_layer: {
|
|
1783
|
+
required: true,
|
|
1784
|
+
assets: [
|
|
1785
|
+
{ path: "templates/knowledge/rules/工作流导航契约规则.md", asset_kind: "knowledge_rule", consumption_mode: "required" },
|
|
1786
|
+
{ path: "templates/knowledge/procedures/全生命周期工作流导航.md", asset_kind: "knowledge_procedure", consumption_mode: "required" },
|
|
1787
|
+
],
|
|
1788
|
+
injected_routes: ["*"],
|
|
1789
|
+
injected_workflows: ["sf_navigation", "soloforge_next", "soloforge_stage"],
|
|
1790
|
+
target_hosts: ["claude_code"],
|
|
1791
|
+
language_policy: "zh_first",
|
|
1792
|
+
},
|
|
1793
|
+
enforcement_layer: {
|
|
1794
|
+
required: true,
|
|
1795
|
+
enforcers: ["src/engine/next_action_planner.ts", "src/engine/stale_current_task_detector.ts"],
|
|
1796
|
+
registries: ["dual_layer_mechanism_registry", "mechanism_contract_registry", "consumable_asset_registry"],
|
|
1797
|
+
entrypoints: ["planNextAction", "detectStaleCurrentTask"],
|
|
1798
|
+
state_effects: ["navigation_snapshot", "stale_task_resolution"],
|
|
1799
|
+
hard_fail_conditions: ["设计审计失败仍编码", "配置未确认仍任务", "陈旧任务阻塞新任务", "repair directive 未清零仍交付"],
|
|
1800
|
+
degradation_behavior: "降级为 advisory,不阻断",
|
|
1801
|
+
},
|
|
1802
|
+
evidence_layer: {
|
|
1803
|
+
outputs: ["NextActionPlan", "ExecutableWorkPackage", "StaleCurrentTaskResult"],
|
|
1804
|
+
reports: ["navigation_snapshot"],
|
|
1805
|
+
diagnostic_codes: ["SF-NAV-6501", "SF-NAV-6502", "SF-NAV-6503", "SF-NAV-6504"],
|
|
1806
|
+
task_context_facts: [],
|
|
1807
|
+
},
|
|
1808
|
+
verification_layer: {
|
|
1809
|
+
tests: ["tests/engine/workflow_navigation_contract.test.ts", "tests/bin/cli_next_action.test.ts", "tests/adapters/workflow_navigation_mainpath.test.ts"],
|
|
1810
|
+
runtime_checks: ["validate-release 工作流导航行为验证"],
|
|
1811
|
+
regression_cases: ["未初始化 → sf_init", "陈旧任务 → resume/archive/start_new", "设计失败 → 禁止编码"],
|
|
1812
|
+
drift_checks: ["adapter prompt 包含导航规则", "status/validate 消费同一模块"],
|
|
1813
|
+
},
|
|
1814
|
+
status: "dual_layer_enforced",
|
|
1815
|
+
},
|
|
1816
|
+
{
|
|
1817
|
+
mechanism_id: "mc-ood-solid-contract",
|
|
1818
|
+
mechanism_name: "OOD 与 SOLID 实现契约",
|
|
1819
|
+
owner_issue_id: "问题六十六",
|
|
1820
|
+
priority: "P1",
|
|
1821
|
+
template_layer: {
|
|
1822
|
+
required: true,
|
|
1823
|
+
assets: [
|
|
1824
|
+
{ path: "templates/knowledge/rules/OOD与SOLID设计规则.md", asset_kind: "knowledge_rule", consumption_mode: "required" },
|
|
1825
|
+
{ path: "templates/knowledge/procedures/OOD设计工作流.md", asset_kind: "knowledge_procedure", consumption_mode: "required" },
|
|
1826
|
+
{ path: "templates/knowledge/review_rules/SOLID代码审查规则.md", asset_kind: "review_rule", consumption_mode: "required" },
|
|
1827
|
+
{ path: "templates/knowledge/acceptance_templates/OOD设计摘要模版.md", asset_kind: "acceptance_template", consumption_mode: "supporting" },
|
|
1828
|
+
{ path: "templates/patterns/SOLID设计规范.md", asset_kind: "pattern", consumption_mode: "supporting" },
|
|
1829
|
+
],
|
|
1830
|
+
injected_routes: ["code_change", "artifact_generation", "multi_stage_plan"],
|
|
1831
|
+
injected_workflows: ["sf_expand", "sf_review", "sf_verify", "sf_deliver"],
|
|
1832
|
+
target_hosts: ["claude_code"],
|
|
1833
|
+
language_policy: "zh_first",
|
|
1834
|
+
},
|
|
1835
|
+
enforcement_layer: {
|
|
1836
|
+
required: true,
|
|
1837
|
+
enforcers: ["src/engine/ood_solid_contract.ts", "src/adapters/claude_code/tools.ts"],
|
|
1838
|
+
registries: ["dual_layer_mechanism_registry", "mechanism_contract_registry", "consumable_asset_registry"],
|
|
1839
|
+
entrypoints: ["evaluateOodDesignGate", "reviewSolidCode", "hasBlockingSolidFindings"],
|
|
1840
|
+
state_effects: ["ood_solid_summary", "ood_solid_findings"],
|
|
1841
|
+
hard_fail_conditions: ["复杂编码无设计摘要", "SRP/LSP/ISP/DIP 硬失败仍交付"],
|
|
1842
|
+
degradation_behavior: "简单任务不触发;低风险过度设计只警告",
|
|
1843
|
+
},
|
|
1844
|
+
evidence_layer: {
|
|
1845
|
+
outputs: ["OodDesignSummary", "SolidReviewFinding"],
|
|
1846
|
+
reports: ["ood_solid_findings"],
|
|
1847
|
+
diagnostic_codes: ["SF-OOD-6601", "SF-OOD-6602"],
|
|
1848
|
+
task_context_facts: ["ood_solid_summary", "ood_solid_findings"],
|
|
1849
|
+
},
|
|
1850
|
+
verification_layer: {
|
|
1851
|
+
tests: ["tests/engine/ood_solid_contract.test.ts", "tests/adapters/implementation_contract_mainpath.test.ts"],
|
|
1852
|
+
runtime_checks: ["validate-release OOD/SOLID 行为验证"],
|
|
1853
|
+
regression_cases: ["复杂服务无摘要 → blocked", "Controller 业务逻辑 → blocked", "低风险修改 → not_applicable"],
|
|
1854
|
+
drift_checks: ["模板资产与工具消费一致"],
|
|
1855
|
+
},
|
|
1856
|
+
status: "dual_layer_enforced",
|
|
1857
|
+
},
|
|
1858
|
+
{
|
|
1859
|
+
mechanism_id: "mc-backend-implementation-contract",
|
|
1860
|
+
mechanism_name: "后端实现工程契约",
|
|
1861
|
+
owner_issue_id: "问题六十七",
|
|
1862
|
+
priority: "P1",
|
|
1863
|
+
template_layer: {
|
|
1864
|
+
required: true,
|
|
1865
|
+
assets: [
|
|
1866
|
+
{ path: "templates/knowledge/rules/后端实现工程契约规则.md", asset_kind: "knowledge_rule", consumption_mode: "required" },
|
|
1867
|
+
{ path: "templates/knowledge/procedures/后端接口实现工作流.md", asset_kind: "knowledge_procedure", consumption_mode: "required" },
|
|
1868
|
+
{ path: "templates/knowledge/review_rules/后端实现工程审查规则.md", asset_kind: "review_rule", consumption_mode: "required" },
|
|
1869
|
+
{ path: "templates/knowledge/acceptance_templates/后端实现验收清单.md", asset_kind: "acceptance_template", consumption_mode: "supporting" },
|
|
1870
|
+
{ path: "templates/patterns/后端实现工程规范.md", asset_kind: "pattern", consumption_mode: "supporting" },
|
|
1871
|
+
],
|
|
1872
|
+
injected_routes: ["code_change", "artifact_generation", "multi_stage_plan"],
|
|
1873
|
+
injected_workflows: ["sf_expand", "sf_review", "sf_verify", "sf_deliver"],
|
|
1874
|
+
target_hosts: ["claude_code"],
|
|
1875
|
+
language_policy: "zh_first",
|
|
1876
|
+
},
|
|
1877
|
+
enforcement_layer: {
|
|
1878
|
+
required: true,
|
|
1879
|
+
enforcers: ["src/engine/backend_implementation_contract.ts", "src/adapters/claude_code/tools.ts"],
|
|
1880
|
+
registries: ["dual_layer_mechanism_registry", "mechanism_contract_registry", "consumable_asset_registry"],
|
|
1881
|
+
entrypoints: ["evaluateBackendImplementationGate", "reviewBackendImplementationFiles", "hasBlockingBackendFindings"],
|
|
1882
|
+
state_effects: ["backend_implementation_work_package", "backend_implementation_findings"],
|
|
1883
|
+
hard_fail_conditions: ["后端编码无工程工作包", "实体暴露/无校验/事务外调/无幂等/无安全审计仍交付"],
|
|
1884
|
+
degradation_behavior: "非后端或低风险文本任务不触发",
|
|
1885
|
+
},
|
|
1886
|
+
evidence_layer: {
|
|
1887
|
+
outputs: ["BackendImplementationWorkPackage", "BackendImplementationFinding"],
|
|
1888
|
+
reports: ["backend_implementation_findings"],
|
|
1889
|
+
diagnostic_codes: ["SF-BACKEND-6701", "SF-BACKEND-6702"],
|
|
1890
|
+
task_context_facts: ["backend_implementation_work_package", "backend_implementation_findings"],
|
|
1891
|
+
},
|
|
1892
|
+
verification_layer: {
|
|
1893
|
+
tests: ["tests/engine/backend_implementation_contract.test.ts", "tests/adapters/implementation_contract_mainpath.test.ts"],
|
|
1894
|
+
runtime_checks: ["validate-release 后端工程契约行为验证"],
|
|
1895
|
+
regression_cases: ["API 实现无工作包 → blocked", "写接口无 DTO 校验 → blocked", "事务内外部调用 → blocked"],
|
|
1896
|
+
drift_checks: ["模板资产与工具消费一致"],
|
|
1897
|
+
},
|
|
1898
|
+
status: "dual_layer_enforced",
|
|
1899
|
+
},
|
|
1900
|
+
{
|
|
1901
|
+
mechanism_id: "mc-code-maintainability-observability-contract",
|
|
1902
|
+
mechanism_name: "代码可维护性与可观测性契约",
|
|
1903
|
+
owner_issue_id: "问题六十八",
|
|
1904
|
+
priority: "P1",
|
|
1905
|
+
template_layer: {
|
|
1906
|
+
required: true,
|
|
1907
|
+
assets: [
|
|
1908
|
+
{ path: "templates/knowledge/rules/代码注释与日志契约规则.md", asset_kind: "knowledge_rule", consumption_mode: "required" },
|
|
1909
|
+
{ path: "templates/knowledge/rules/敏感信息日志规则.md", asset_kind: "knowledge_rule", consumption_mode: "required" },
|
|
1910
|
+
{ path: "templates/knowledge/review/代码可维护性与可观测性审查.md", asset_kind: "review_rule", consumption_mode: "required" },
|
|
1911
|
+
{ path: "templates/knowledge/acceptance_templates/代码注释与日志验收模板.md", asset_kind: "acceptance_template", consumption_mode: "supporting" },
|
|
1912
|
+
],
|
|
1913
|
+
injected_routes: ["code_change", "artifact_generation", "multi_stage_plan"],
|
|
1914
|
+
injected_workflows: ["sf_expand", "sf_review", "sf_verify", "sf_deliver"],
|
|
1915
|
+
target_hosts: ["claude_code"],
|
|
1916
|
+
language_policy: "zh_first",
|
|
1917
|
+
},
|
|
1918
|
+
enforcement_layer: {
|
|
1919
|
+
required: true,
|
|
1920
|
+
enforcers: ["src/engine/code_maintainability_observability_contract.ts", "src/adapters/claude_code/tools.ts"],
|
|
1921
|
+
registries: ["dual_layer_mechanism_registry", "mechanism_contract_registry", "consumable_asset_registry"],
|
|
1922
|
+
entrypoints: ["evaluateCodeObservabilityGate", "reviewCodeObservability", "detectSensitiveLogs", "hasBlockingObservabilityFindings"],
|
|
1923
|
+
state_effects: ["code_observability_work_package", "code_observability_findings"],
|
|
1924
|
+
hard_fail_conditions: [
|
|
1925
|
+
"敏感信息泄漏日志 (SF-OBS-6801)",
|
|
1926
|
+
"catch 吞异常无日志 (SF-OBS-6802)",
|
|
1927
|
+
"支付/金额/权限变更无日志 (SF-OBS-6803)",
|
|
1928
|
+
"数据修复/迁移无审计日志 (SF-OBS-6804)",
|
|
1929
|
+
"前端生产代码裸 console.log",
|
|
1930
|
+
],
|
|
1931
|
+
degradation_behavior: "纯样式、文案、简单 getter/setter、测试 fixture、低风险只读查询不触发",
|
|
1932
|
+
},
|
|
1933
|
+
evidence_layer: {
|
|
1934
|
+
outputs: ["CodeObservabilityWorkPackage", "CodeObservabilityFinding"],
|
|
1935
|
+
reports: ["code_observability_findings"],
|
|
1936
|
+
diagnostic_codes: ["SF-OBS-6801", "SF-OBS-6802", "SF-OBS-6803", "SF-OBS-6804"],
|
|
1937
|
+
task_context_facts: ["code_observability_work_package", "code_observability_findings"],
|
|
1938
|
+
},
|
|
1939
|
+
verification_layer: {
|
|
1940
|
+
tests: ["tests/engine/code_maintainability_observability_contract.test.ts", "tests/adapters/implementation_contract_mainpath.test.ts"],
|
|
1941
|
+
runtime_checks: ["validate-release 代码可维护性与可观测性行为验证"],
|
|
1942
|
+
regression_cases: ["支付无日志 → blocked", "敏感信息进日志 → blocked", "catch 吞异常 → blocked", "简单 getter 不误拦 → not_applicable"],
|
|
1943
|
+
drift_checks: ["模板资产与工具消费一致"],
|
|
1944
|
+
},
|
|
1945
|
+
status: "dual_layer_enforced",
|
|
1946
|
+
},
|
|
1947
|
+
{
|
|
1948
|
+
mechanism_id: "mc-mechanism-health",
|
|
1949
|
+
mechanism_name: "机制运行时健康度",
|
|
1950
|
+
owner_issue_id: "Q5长期机制化",
|
|
1951
|
+
priority: "P1",
|
|
1952
|
+
template_layer: {
|
|
1953
|
+
required: true,
|
|
1954
|
+
assets: [{ path: "templates/knowledge/rules/机制自治理规则.md", asset_kind: "knowledge_rule", consumption_mode: "required" }],
|
|
1955
|
+
injected_routes: ["verification", "operation"],
|
|
1956
|
+
injected_workflows: ["validate-mechanisms", "validate-release"],
|
|
1957
|
+
target_hosts: ["claude_code"],
|
|
1958
|
+
language_policy: "zh_first",
|
|
1959
|
+
},
|
|
1960
|
+
enforcement_layer: {
|
|
1961
|
+
required: true,
|
|
1962
|
+
enforcers: ["src/engine/mechanism_health_check.ts"],
|
|
1963
|
+
registries: ["dual_layer_mechanism_registry", "mechanism_contract_registry", "explicit_asset_registry"],
|
|
1964
|
+
entrypoints: ["runFullHealthCheck", "detectLazyDeadImports", "detectUnconsumedMechanismIds"],
|
|
1965
|
+
state_effects: [],
|
|
1966
|
+
hard_fail_conditions: ["lazy import 未调用", "机制资产未注册", "机制身份未消费"],
|
|
1967
|
+
degradation_behavior: "离线治理机制,仅发布和维护命令阻断",
|
|
1968
|
+
},
|
|
1969
|
+
evidence_layer: {
|
|
1970
|
+
outputs: ["MechanismHealthReport"],
|
|
1971
|
+
reports: ["mechanism_health_report"],
|
|
1972
|
+
diagnostic_codes: [],
|
|
1973
|
+
task_context_facts: [],
|
|
1974
|
+
},
|
|
1975
|
+
verification_layer: {
|
|
1976
|
+
tests: ["tests/engine/mechanism_health_check.test.ts"],
|
|
1977
|
+
runtime_checks: ["validate-release 历史问题长期机制化行为验证"],
|
|
1978
|
+
regression_cases: ["lazy import 未调用 → hard_fail", "机制资产缺失 → hard_fail"],
|
|
1979
|
+
drift_checks: ["注册表与消费路径一致"],
|
|
1980
|
+
},
|
|
1981
|
+
status: "dual_layer_enforced",
|
|
1982
|
+
},
|
|
1983
|
+
{
|
|
1984
|
+
mechanism_id: "mc-config-write-boundary",
|
|
1985
|
+
mechanism_name: "配置落盘边界",
|
|
1986
|
+
owner_issue_id: "Q6长期机制化",
|
|
1987
|
+
priority: "P2",
|
|
1988
|
+
template_layer: {
|
|
1989
|
+
required: true,
|
|
1990
|
+
assets: [{ path: "templates/knowledge/rules/配置落盘边界规则.md", asset_kind: "knowledge_rule", consumption_mode: "required" }],
|
|
1991
|
+
injected_routes: ["operation"],
|
|
1992
|
+
injected_workflows: ["init", "sync-templates"],
|
|
1993
|
+
target_hosts: ["claude_code"],
|
|
1994
|
+
language_policy: "zh_first",
|
|
1995
|
+
},
|
|
1996
|
+
enforcement_layer: {
|
|
1997
|
+
required: true,
|
|
1998
|
+
enforcers: ["src/engine/config_write_boundary.ts"],
|
|
1999
|
+
registries: ["mechanism_contract_registry", "explicit_asset_registry"],
|
|
2000
|
+
entrypoints: ["classifyConfigContext", "isWriteAllowed", "validateWriteBoundary"],
|
|
2001
|
+
state_effects: [],
|
|
2002
|
+
hard_fail_conditions: ["运行时推断自动落盘", "已有项目未确认写入"],
|
|
2003
|
+
degradation_behavior: "空项目初始化允许,已有项目需要确认",
|
|
2004
|
+
},
|
|
2005
|
+
evidence_layer: {
|
|
2006
|
+
outputs: ["ConfigWriteDecision"],
|
|
2007
|
+
reports: ["write_boundary_violation"],
|
|
2008
|
+
diagnostic_codes: [],
|
|
2009
|
+
task_context_facts: [],
|
|
2010
|
+
},
|
|
2011
|
+
verification_layer: {
|
|
2012
|
+
tests: ["tests/engine/config_write_boundary.test.ts"],
|
|
2013
|
+
runtime_checks: ["validate-release 历史问题长期机制化行为验证"],
|
|
2014
|
+
regression_cases: ["runtime inference 写配置 → blocked", "greenfield init → allowed"],
|
|
2015
|
+
drift_checks: ["CLI 写入路径与边界一致"],
|
|
2016
|
+
},
|
|
2017
|
+
status: "dual_layer_enforced",
|
|
2018
|
+
},
|
|
2019
|
+
{
|
|
2020
|
+
mechanism_id: "mc-knowledge-governance",
|
|
2021
|
+
mechanism_name: "知识治理统一入口",
|
|
2022
|
+
owner_issue_id: "Q7/Q10/Q14/Q21/Q41长期机制化",
|
|
2023
|
+
priority: "P0",
|
|
2024
|
+
template_layer: {
|
|
2025
|
+
required: true,
|
|
2026
|
+
assets: [{ path: "templates/knowledge/rules/知识治理规则.md", asset_kind: "knowledge_rule", consumption_mode: "required" }],
|
|
2027
|
+
injected_routes: ["verification", "operation", "knowledge_update"],
|
|
2028
|
+
injected_workflows: ["validate", "sync-templates", "validate-release"],
|
|
2029
|
+
target_hosts: ["claude_code"],
|
|
2030
|
+
language_policy: "zh_first",
|
|
2031
|
+
},
|
|
2032
|
+
enforcement_layer: {
|
|
2033
|
+
required: true,
|
|
2034
|
+
enforcers: ["src/engine/knowledge_governance_gate.ts"],
|
|
2035
|
+
registries: ["mechanism_contract_registry", "explicit_asset_registry"],
|
|
2036
|
+
entrypoints: ["runKnowledgeGovernanceCheck", "checkSemanticCompliance", "checkEvolutionEvidence", "checkDocumentationGovernance"],
|
|
2037
|
+
state_effects: [],
|
|
2038
|
+
hard_fail_conditions: ["知识晋级无证据", "中文语义污染", "设计文档承载未验证事实"],
|
|
2039
|
+
degradation_behavior: "validate 输出治理报告,apply 与 release gate 执行阻断",
|
|
2040
|
+
},
|
|
2041
|
+
evidence_layer: {
|
|
2042
|
+
outputs: ["KnowledgeGovernanceReport"],
|
|
2043
|
+
reports: ["knowledge_governance_report"],
|
|
2044
|
+
diagnostic_codes: [],
|
|
2045
|
+
task_context_facts: [],
|
|
2046
|
+
},
|
|
2047
|
+
verification_layer: {
|
|
2048
|
+
tests: ["tests/engine/knowledge_governance_gate.test.ts"],
|
|
2049
|
+
runtime_checks: ["validate-release 历史问题长期机制化行为验证"],
|
|
2050
|
+
regression_cases: ["知识晋级无证据 → hard_fail", "中文语义污染 → warning"],
|
|
2051
|
+
drift_checks: ["知识治理入口调用下游模块"],
|
|
2052
|
+
},
|
|
2053
|
+
status: "dual_layer_enforced",
|
|
2054
|
+
},
|
|
2055
|
+
{
|
|
2056
|
+
mechanism_id: "mc-log-governance",
|
|
2057
|
+
mechanism_name: "日志治理与用户输出纯净",
|
|
2058
|
+
owner_issue_id: "Q59/Q29长期机制化",
|
|
2059
|
+
priority: "P0",
|
|
2060
|
+
template_layer: {
|
|
2061
|
+
required: true,
|
|
2062
|
+
assets: [{ path: "templates/knowledge/rules/日志治理规则.md", asset_kind: "knowledge_rule", consumption_mode: "required" }],
|
|
2063
|
+
injected_routes: ["verification", "operation"],
|
|
2064
|
+
injected_workflows: ["sf_learn", "sf_deliver", "validate-release"],
|
|
2065
|
+
target_hosts: ["claude_code"],
|
|
2066
|
+
language_policy: "zh_first",
|
|
2067
|
+
},
|
|
2068
|
+
enforcement_layer: {
|
|
2069
|
+
required: true,
|
|
2070
|
+
enforcers: ["src/engine/log_governance.ts"],
|
|
2071
|
+
registries: ["mechanism_contract_registry", "explicit_asset_registry"],
|
|
2072
|
+
entrypoints: ["enforceLogGovernance", "evaluateFeedbackOutputQuality", "assessOutputNoise"],
|
|
2073
|
+
state_effects: [],
|
|
2074
|
+
hard_fail_conditions: ["内部噪音输出", "JSON stdout 污染", "直接 console 输出"],
|
|
2075
|
+
degradation_behavior: "默认不影响正常输出,仅阻断噪音和污染",
|
|
2076
|
+
},
|
|
2077
|
+
evidence_layer: {
|
|
2078
|
+
outputs: ["LogGovernanceReport"],
|
|
2079
|
+
reports: ["log_governance_report"],
|
|
2080
|
+
diagnostic_codes: [],
|
|
2081
|
+
task_context_facts: [],
|
|
2082
|
+
},
|
|
2083
|
+
verification_layer: {
|
|
2084
|
+
tests: ["tests/engine/log_governance.test.ts"],
|
|
2085
|
+
runtime_checks: ["validate-release 历史问题长期机制化行为验证"],
|
|
2086
|
+
regression_cases: ["内部噪音 → hard_fail", "正常中文输出 → pass"],
|
|
2087
|
+
drift_checks: ["logger 与输出治理一致"],
|
|
2088
|
+
},
|
|
2089
|
+
status: "dual_layer_enforced",
|
|
2090
|
+
},
|
|
1775
2091
|
];
|
|
1776
2092
|
// ── 已废弃机制 ID 别名映射 ──
|
|
1777
2093
|
// 旧 ID → 正式 ID。旧 ID 在 MC 中标记为 deprecated,模板/知识资产必须指向正式 ID。
|
|
@@ -2042,7 +2358,8 @@ export function validateMechanismLayerMaps(maps = MECHANISM_CONTRACTS.map(contra
|
|
|
2042
2358
|
const workflowMechanismIds = new Set(listWorkflowContracts().flatMap((w) => w.required_mechanisms));
|
|
2043
2359
|
for (const ce of m.code_enforcers) {
|
|
2044
2360
|
const ceNorm = ce.replace(/\\/g, "/");
|
|
2045
|
-
const isKnown = knownMechanismIds.size > 0 && listMechanismContracts().some((mc) => mc.owner_module.replace(/\\/g, "/") === ceNorm
|
|
2361
|
+
const isKnown = knownMechanismIds.size > 0 && listMechanismContracts().some((mc) => mc.owner_module.replace(/\\/g, "/") === ceNorm
|
|
2362
|
+
|| (mc.owner_files ?? []).some((ownerFile) => ownerFile.replace(/\\/g, "/") === ceNorm));
|
|
2046
2363
|
const isCapKnown = knownCapabilityIds.size > 0 && getAllCapabilities().some((cap) => cap.code_files.some((cf) => cf.replace(/\\/g, "/") === ceNorm));
|
|
2047
2364
|
// 检查此机制是否被任何工作流的 required_mechanisms 引用
|
|
2048
2365
|
const isWorkflowKnown = workflowMechanismIds.has(m.mechanism_id);
|