soloforge 1.2.19 → 1.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  2. package/dist/adapters/claude_code/tools.js +159 -1
  3. package/dist/adapters/claude_code/tools.js.map +1 -1
  4. package/dist/adapters/trae/trae_config.d.ts +1 -1
  5. package/dist/adapters/trae/trae_config.d.ts.map +1 -1
  6. package/dist/adapters/trae/trae_config.js +1 -1
  7. package/dist/adapters/trae/trae_config.js.map +1 -1
  8. package/dist/engine/audit_pool.d.ts.map +1 -1
  9. package/dist/engine/audit_pool.js +1 -0
  10. package/dist/engine/audit_pool.js.map +1 -1
  11. package/dist/engine/contract_registry.d.ts +113 -0
  12. package/dist/engine/contract_registry.d.ts.map +1 -0
  13. package/dist/engine/contract_registry.js +1159 -0
  14. package/dist/engine/contract_registry.js.map +1 -0
  15. package/dist/engine/contract_state_store.d.ts +67 -0
  16. package/dist/engine/contract_state_store.d.ts.map +1 -0
  17. package/dist/engine/contract_state_store.js +167 -0
  18. package/dist/engine/contract_state_store.js.map +1 -0
  19. package/dist/engine/debugger.d.ts.map +1 -1
  20. package/dist/engine/debugger.js +30 -1
  21. package/dist/engine/debugger.js.map +1 -1
  22. package/dist/engine/degradation.d.ts +58 -0
  23. package/dist/engine/degradation.d.ts.map +1 -0
  24. package/dist/engine/degradation.js +74 -0
  25. package/dist/engine/degradation.js.map +1 -0
  26. package/dist/engine/delivery_readiness.d.ts +66 -0
  27. package/dist/engine/delivery_readiness.d.ts.map +1 -0
  28. package/dist/engine/delivery_readiness.js +176 -0
  29. package/dist/engine/delivery_readiness.js.map +1 -0
  30. package/dist/engine/deprecated_contract.d.ts +21 -0
  31. package/dist/engine/deprecated_contract.d.ts.map +1 -0
  32. package/dist/engine/deprecated_contract.js +14 -0
  33. package/dist/engine/deprecated_contract.js.map +1 -0
  34. package/dist/engine/diagnostic_registry.d.ts +64 -0
  35. package/dist/engine/diagnostic_registry.d.ts.map +1 -0
  36. package/dist/engine/diagnostic_registry.js +176 -0
  37. package/dist/engine/diagnostic_registry.js.map +1 -0
  38. package/dist/engine/enforcement_guard.d.ts +84 -0
  39. package/dist/engine/enforcement_guard.d.ts.map +1 -0
  40. package/dist/engine/enforcement_guard.js +305 -0
  41. package/dist/engine/enforcement_guard.js.map +1 -0
  42. package/dist/engine/failure_report.d.ts +74 -0
  43. package/dist/engine/failure_report.d.ts.map +1 -0
  44. package/dist/engine/failure_report.js +143 -0
  45. package/dist/engine/failure_report.js.map +1 -0
  46. package/dist/engine/governance_report.d.ts +9 -1
  47. package/dist/engine/governance_report.d.ts.map +1 -1
  48. package/dist/engine/governance_report.js +16 -2
  49. package/dist/engine/governance_report.js.map +1 -1
  50. package/dist/engine/implementation_roadmap_registry.d.ts +1 -1
  51. package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
  52. package/dist/engine/implementation_roadmap_registry.js +32 -24
  53. package/dist/engine/implementation_roadmap_registry.js.map +1 -1
  54. package/dist/engine/knowledge_lifecycle.d.ts +23 -0
  55. package/dist/engine/knowledge_lifecycle.d.ts.map +1 -0
  56. package/dist/engine/knowledge_lifecycle.js +13 -0
  57. package/dist/engine/knowledge_lifecycle.js.map +1 -0
  58. package/dist/engine/language_policy.d.ts +21 -0
  59. package/dist/engine/language_policy.d.ts.map +1 -0
  60. package/dist/engine/language_policy.js +18 -0
  61. package/dist/engine/language_policy.js.map +1 -0
  62. package/dist/engine/language_policy_contract.d.ts +52 -0
  63. package/dist/engine/language_policy_contract.d.ts.map +1 -0
  64. package/dist/engine/language_policy_contract.js +78 -0
  65. package/dist/engine/language_policy_contract.js.map +1 -0
  66. package/dist/engine/mechanism_family_registry.d.ts +48 -0
  67. package/dist/engine/mechanism_family_registry.d.ts.map +1 -0
  68. package/dist/engine/mechanism_family_registry.js +197 -0
  69. package/dist/engine/mechanism_family_registry.js.map +1 -0
  70. package/dist/engine/policy_drift_detector.d.ts +20 -0
  71. package/dist/engine/policy_drift_detector.d.ts.map +1 -1
  72. package/dist/engine/policy_drift_detector.js +79 -0
  73. package/dist/engine/policy_drift_detector.js.map +1 -1
  74. package/dist/engine/retention_policy.d.ts +46 -0
  75. package/dist/engine/retention_policy.d.ts.map +1 -0
  76. package/dist/engine/retention_policy.js +124 -0
  77. package/dist/engine/retention_policy.js.map +1 -0
  78. package/dist/engine/state_update_bypass.d.ts +19 -0
  79. package/dist/engine/state_update_bypass.d.ts.map +1 -0
  80. package/dist/engine/state_update_bypass.js +17 -0
  81. package/dist/engine/state_update_bypass.js.map +1 -0
  82. package/dist/engine/task_context.d.ts.map +1 -1
  83. package/dist/engine/task_context.js +8 -0
  84. package/dist/engine/task_context.js.map +1 -1
  85. package/dist/engine/test_strategy.d.ts +58 -0
  86. package/dist/engine/test_strategy.d.ts.map +1 -0
  87. package/dist/engine/test_strategy.js +93 -0
  88. package/dist/engine/test_strategy.js.map +1 -0
  89. package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -1
  90. package/dist/engine/tool_invocation_contract_registry.js +11 -1
  91. package/dist/engine/tool_invocation_contract_registry.js.map +1 -1
  92. package/dist/engine/verification_contract.d.ts +132 -0
  93. package/dist/engine/verification_contract.d.ts.map +1 -0
  94. package/dist/engine/verification_contract.js +296 -0
  95. package/dist/engine/verification_contract.js.map +1 -0
  96. package/dist/engine/workspace_lease.d.ts +69 -0
  97. package/dist/engine/workspace_lease.d.ts.map +1 -0
  98. package/dist/engine/workspace_lease.js +153 -0
  99. package/dist/engine/workspace_lease.js.map +1 -0
  100. package/dist/types.d.ts +13 -1
  101. package/dist/types.d.ts.map +1 -1
  102. package/package.json +3 -2
@@ -0,0 +1,197 @@
1
+ /**
2
+ * 机制族实现映射 — 问题十五 (Mechanism Family Implementation Map)。
3
+ *
4
+ * 核心规则:
5
+ * - 每个设计机制族必须有 MechanismFamilyImplementation
6
+ * - enforced 必须有 tests 和 lifecycle tests
7
+ * - 机制族状态与真实实现不一致必须报告
8
+ */
9
+ const BUILTIN_MECHANISMS = [
10
+ {
11
+ mechanism_id: "mf-intent-router",
12
+ name: "意图路由",
13
+ design_section: "第三部分",
14
+ implementation_state: "implemented",
15
+ owner_module: "engine/intent_router",
16
+ contract_id: "route_decision_contract",
17
+ workflow_ids: ["workflow_contract"],
18
+ guard_ids: [],
19
+ verification_ids: ["contract_governance"],
20
+ failure_ids: ["failure_recovery_contract"],
21
+ degradation_ids: [],
22
+ test_files: ["tests/engine/intent_router.test.ts"],
23
+ lifecycle_test_files: ["tests/engine/route_decision_contract.test.ts"],
24
+ known_gaps: [],
25
+ hard_fail_boundary: ["路由决策必须与设计结论一致"],
26
+ },
27
+ {
28
+ mechanism_id: "mf-workflow-engine",
29
+ name: "工作流引擎",
30
+ design_section: "第四部分",
31
+ implementation_state: "implemented",
32
+ owner_module: "engine/workflow_contract_registry",
33
+ contract_id: "workflow_contract",
34
+ workflow_ids: [],
35
+ guard_ids: ["guard-write-readonly"],
36
+ verification_ids: ["contract_governance"],
37
+ failure_ids: ["failure_recovery_contract"],
38
+ degradation_ids: [],
39
+ test_files: ["tests/engine/workflow_contract_registry.test.ts"],
40
+ lifecycle_test_files: ["tests/engine/workflow_contract_registry.test.ts"],
41
+ known_gaps: [],
42
+ hard_fail_boundary: ["workflow 必须与设计结论一致"],
43
+ },
44
+ {
45
+ mechanism_id: "mf-enforcement-guard",
46
+ name: "强制护栏",
47
+ design_section: "第四部分",
48
+ implementation_state: "implemented",
49
+ owner_module: "engine/enforcement_guard",
50
+ contract_id: "command_execution_contract",
51
+ workflow_ids: ["workflow_contract"],
52
+ guard_ids: ["guard-write-readonly", "guard-write-scope"],
53
+ verification_ids: [],
54
+ failure_ids: ["failure_recovery_contract"],
55
+ degradation_ids: ["degradation_contract"],
56
+ test_files: ["tests/engine/enforcement_guard.test.ts"],
57
+ lifecycle_test_files: [],
58
+ known_gaps: ["lifecycle tests 待补充"],
59
+ hard_fail_boundary: ["只读路由写入必须阻断"],
60
+ },
61
+ {
62
+ mechanism_id: "mf-verification",
63
+ name: "验证机制",
64
+ design_section: "第四部分",
65
+ implementation_state: "implemented",
66
+ owner_module: "engine/verifier",
67
+ contract_id: "main_path_integration_contract",
68
+ workflow_ids: [],
69
+ guard_ids: [],
70
+ verification_ids: ["verification_contract"],
71
+ failure_ids: [],
72
+ degradation_ids: [],
73
+ test_files: ["tests/engine/verifier.test.ts"],
74
+ lifecycle_test_files: [],
75
+ known_gaps: [],
76
+ hard_fail_boundary: [],
77
+ },
78
+ {
79
+ mechanism_id: "mf-failure-recovery",
80
+ name: "失败恢复",
81
+ design_section: "第四部分",
82
+ implementation_state: "implemented",
83
+ owner_module: "engine/failure_classifier",
84
+ contract_id: "failure_recovery_contract",
85
+ workflow_ids: [],
86
+ guard_ids: [],
87
+ verification_ids: [],
88
+ failure_ids: ["failure_recovery_contract"],
89
+ degradation_ids: [],
90
+ test_files: ["tests/engine/failure_classifier.test.ts"],
91
+ lifecycle_test_files: [],
92
+ known_gaps: [],
93
+ hard_fail_boundary: ["deterministic 不得无限重试"],
94
+ },
95
+ {
96
+ mechanism_id: "mf-knowledge-injection",
97
+ name: "知识注入",
98
+ design_section: "第五部分",
99
+ implementation_state: "implemented",
100
+ owner_module: "engine/knowledge_injection_boundary",
101
+ contract_id: "knowledge_injection_contract",
102
+ workflow_ids: [],
103
+ guard_ids: ["guard-knowledge-injectable"],
104
+ verification_ids: [],
105
+ failure_ids: [],
106
+ degradation_ids: [],
107
+ test_files: ["tests/engine/knowledge_injection_boundary.test.ts"],
108
+ lifecycle_test_files: [],
109
+ known_gaps: [],
110
+ hard_fail_boundary: [],
111
+ },
112
+ {
113
+ mechanism_id: "mf-contract-registry",
114
+ name: "统一契约注册表",
115
+ design_section: "第七节",
116
+ implementation_state: "implemented",
117
+ owner_module: "engine/contract_registry",
118
+ contract_id: "contract_governance",
119
+ workflow_ids: [],
120
+ guard_ids: [],
121
+ verification_ids: ["contract_governance"],
122
+ failure_ids: [],
123
+ degradation_ids: [],
124
+ test_files: ["tests/engine/contract_registry.test.ts"],
125
+ lifecycle_test_files: ["tests/engine/contract_registry.test.ts"],
126
+ known_gaps: [],
127
+ hard_fail_boundary: ["未登记契约不得 hard fail"],
128
+ },
129
+ ];
130
+ let runtimeMechanisms = null;
131
+ function getRegistry() {
132
+ if (!runtimeMechanisms) {
133
+ runtimeMechanisms = new Map();
134
+ for (const m of BUILTIN_MECHANISMS) {
135
+ runtimeMechanisms.set(m.mechanism_id, { ...m, test_files: [...m.test_files], lifecycle_test_files: [...m.lifecycle_test_files] });
136
+ }
137
+ }
138
+ return runtimeMechanisms;
139
+ }
140
+ /** 列出所有机制族 */
141
+ export function listAllMechanisms() {
142
+ return [...getRegistry().values()];
143
+ }
144
+ /** 按 ID 获取 */
145
+ export function getMechanismById(id) {
146
+ return getRegistry().get(id);
147
+ }
148
+ /** 注册新机制族 */
149
+ export function registerMechanism(m) {
150
+ const reg = getRegistry();
151
+ if (reg.has(m.mechanism_id)) {
152
+ return { success: false, error: `机制族 ${m.mechanism_id} 已存在` };
153
+ }
154
+ reg.set(m.mechanism_id, { ...m, test_files: [...m.test_files], lifecycle_test_files: [...m.lifecycle_test_files] });
155
+ return { success: true };
156
+ }
157
+ /**
158
+ * 验证机制族实现一致性。
159
+ */
160
+ export function validateMechanismFamilies() {
161
+ const findings = [];
162
+ for (const m of getRegistry().values()) {
163
+ // enforced 但无 lifecycle tests
164
+ if (m.implementation_state === "implemented" && m.lifecycle_test_files.length === 0 && m.hard_fail_boundary.length > 0) {
165
+ findings.push({
166
+ mechanism_id: m.mechanism_id,
167
+ severity: "warning",
168
+ rule: "implemented_needs_lifecycle_tests",
169
+ message_zh: `机制族 ${m.name} 已实现且有 hard_fail_boundary 但无 lifecycle tests`,
170
+ });
171
+ }
172
+ // 设计文档有机制族但没有 owner module
173
+ if (!m.owner_module) {
174
+ findings.push({
175
+ mechanism_id: m.mechanism_id,
176
+ severity: "hard_fail",
177
+ rule: "mechanism_needs_owner",
178
+ message_zh: `机制族 ${m.name} 缺少 owner_module`,
179
+ });
180
+ }
181
+ // 无测试
182
+ if (m.test_files.length === 0) {
183
+ findings.push({
184
+ mechanism_id: m.mechanism_id,
185
+ severity: "warning",
186
+ rule: "mechanism_needs_tests",
187
+ message_zh: `机制族 ${m.name} 无测试文件`,
188
+ });
189
+ }
190
+ }
191
+ return findings;
192
+ }
193
+ /** 重置注册表(测试用) */
194
+ export function resetMechanismRegistry() {
195
+ runtimeMechanisms = null;
196
+ }
197
+ //# sourceMappingURL=mechanism_family_registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mechanism_family_registry.js","sourceRoot":"","sources":["../../src/engine/mechanism_family_registry.ts"],"names":[],"mappings":"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"}
@@ -49,4 +49,24 @@ export interface DriftSummaryReport {
49
49
  * 生成内容
50
50
  */
51
51
  export declare function generateDriftSummary(policies: PolicyRefType[], report: DriftReport): DriftSummaryReport;
52
+ import type { ContractRegistryEntry, ContractGovernanceFinding } from "./contract_registry.js";
53
+ export interface ContractDriftEntry {
54
+ contract_id: string;
55
+ type: DriftType | "contract_not_registered" | "contract_no_test" | "contract_dependency_missing" | "contract_removed_referenced";
56
+ detail: string;
57
+ }
58
+ export interface ContractDriftReport {
59
+ total_contracts: number;
60
+ drift_count: number;
61
+ drifts: ContractDriftEntry[];
62
+ governance_findings: ContractGovernanceFinding[];
63
+ }
64
+ /**
65
+ * 契约漂移扫描 — 基于 Unified Contract Registry 检测契约与代码/测试/依赖的一致性。
66
+ * 扩展 policy drift,使 drift 能按 contract_id 归因。
67
+ */
68
+ export declare function detectContractDrift(contracts: ContractRegistryEntry[], existingFiles: Set<string>, knownWorkflowRefs?: Array<{
69
+ workflow_id: string;
70
+ contract_refs: string[];
71
+ }>): ContractDriftReport;
52
72
  //# sourceMappingURL=policy_drift_detector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy_drift_detector.d.ts","sourceRoot":"","sources":["../../src/engine/policy_drift_detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GACjB,qBAAqB,GACrB,qBAAqB,GACrB,sBAAsB,GACtB,sBAAsB,GACtB,uBAAuB,GACvB,kCAAkC,GAClC,wBAAwB,CAAC;AAE7B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC3E,KAAK,SAAS,GAAG,aAAa,CAAC;AAE/B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CACpC;AAgBD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,WAAW,CAyIpE;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,UAAU,EAAE,CAAC;IAChC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,EAAE,EACzB,MAAM,EAAE,WAAW,GAClB,kBAAkB,CAyCpB"}
1
+ {"version":3,"file":"policy_drift_detector.d.ts","sourceRoot":"","sources":["../../src/engine/policy_drift_detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GACjB,qBAAqB,GACrB,qBAAqB,GACrB,sBAAsB,GACtB,sBAAsB,GACtB,uBAAuB,GACvB,kCAAkC,GAClC,wBAAwB,CAAC;AAE7B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC3E,KAAK,SAAS,GAAG,aAAa,CAAC;AAE/B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CACpC;AAgBD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,WAAW,CAyIpE;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,UAAU,EAAE,CAAC;IAChC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,EAAE,EACzB,MAAM,EAAE,WAAW,GAClB,kBAAkB,CAyCpB;AAID,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAE/F,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,GAAG,yBAAyB,GAAG,kBAAkB,GAAG,6BAA6B,GAAG,6BAA6B,CAAC;IACjI,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,mBAAmB,EAAE,yBAAyB,EAAE,CAAC;CAClD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,qBAAqB,EAAE,EAClC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,iBAAiB,CAAC,EAAE,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAC1E,mBAAmB,CA+ErB"}
@@ -194,4 +194,83 @@ export function generateDriftSummary(policies, report) {
194
194
  console.error("[soloForge] 策略漂移: 汇总完成 — total:", summaries.length, ", ok:", ok, ", missing:", missing, ", stale:", stale, ", unassigned:", unassigned.length);
195
195
  return { total: summaries.length, missing, stale, ok, unassigned_drifts: unassigned, policies: summaries };
196
196
  }
197
+ /**
198
+ * 契约漂移扫描 — 基于 Unified Contract Registry 检测契约与代码/测试/依赖的一致性。
199
+ * 扩展 policy drift,使 drift 能按 contract_id 归因。
200
+ */
201
+ export function detectContractDrift(contracts, existingFiles, knownWorkflowRefs) {
202
+ console.error("[soloForge] 策略漂移: detectContractDrift() 开始执行,契约", contracts.length, "条");
203
+ const drifts = [];
204
+ const governanceFindings = [];
205
+ const contractMap = new Map(contracts.map((c) => [c.contract_id, c]));
206
+ for (const contract of contracts) {
207
+ // 契约的 owner_files 必须存在
208
+ for (const f of contract.owner_files) {
209
+ if (!existingFiles.has(f)) {
210
+ drifts.push({
211
+ contract_id: contract.contract_id,
212
+ type: "policy_without_code",
213
+ detail: `契约 ${contract.contract_id} 的 owner_file ${f} 不存在`,
214
+ });
215
+ }
216
+ }
217
+ // 契约的 test_files 必须存在
218
+ for (const f of contract.test_files) {
219
+ if (!existingFiles.has(f)) {
220
+ drifts.push({
221
+ contract_id: contract.contract_id,
222
+ type: "policy_without_tests",
223
+ detail: `契约 ${contract.contract_id} 的 test_file ${f} 不存在`,
224
+ });
225
+ }
226
+ }
227
+ // enforced 契约必须有 lifecycle tests
228
+ if (contract.state === "enforced" && contract.lifecycle_test_files.length === 0) {
229
+ drifts.push({
230
+ contract_id: contract.contract_id,
231
+ type: "enforced_without_lifecycle_tests",
232
+ detail: `enforced 契约 ${contract.contract_id} 无 lifecycle_test_files`,
233
+ });
234
+ }
235
+ // 契约依赖必须存在
236
+ for (const depId of contract.depends_on) {
237
+ if (!contractMap.has(depId)) {
238
+ drifts.push({
239
+ contract_id: contract.contract_id,
240
+ type: "contract_dependency_missing",
241
+ detail: `契约 ${contract.contract_id} 依赖不存在的契约 ${depId}`,
242
+ });
243
+ }
244
+ }
245
+ }
246
+ // 检查 workflow 引用的契约
247
+ if (knownWorkflowRefs) {
248
+ for (const wf of knownWorkflowRefs) {
249
+ for (const refId of wf.contract_refs) {
250
+ const contract = contractMap.get(refId);
251
+ if (!contract) {
252
+ drifts.push({
253
+ contract_id: refId,
254
+ type: "contract_not_registered",
255
+ detail: `工作流 ${wf.workflow_id} 引用未登记的契约 ${refId}`,
256
+ });
257
+ }
258
+ else if (contract.state === "removed") {
259
+ drifts.push({
260
+ contract_id: refId,
261
+ type: "contract_removed_referenced",
262
+ detail: `工作流 ${wf.workflow_id} 引用已移除的契约 ${refId}`,
263
+ });
264
+ }
265
+ }
266
+ }
267
+ }
268
+ console.error("[soloForge] 策略漂移: 契约漂移扫描完成 — drifts:", drifts.length);
269
+ return {
270
+ total_contracts: contracts.length,
271
+ drift_count: drifts.length,
272
+ drifts,
273
+ governance_findings: governanceFindings,
274
+ };
275
+ }
197
276
  //# sourceMappingURL=policy_drift_detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy_drift_detector.js","sourceRoot":"","sources":["../../src/engine/policy_drift_detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy_drift_detector.js","sourceRoot":"","sources":["../../src/engine/policy_drift_detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * 保留策略 — 问题三十八 (Observability Storage Contract) 的清理规则。
3
+ *
4
+ * 核心规则:
5
+ * - evidence 必须可追溯且有 retention/cleanup 规则
6
+ * - cleanup 不得删除仍被 TaskContext / GovernanceReport 引用的 evidence
7
+ * - cleanup 默认 dry-run
8
+ * - 日志/审计/metric 不得存 secret、完整 prompt、大段 stdout/stderr
9
+ */
10
+ export type RecordStatus = "active" | "archived" | "pending_cleanup" | "protected";
11
+ export interface RetentionPolicy {
12
+ policy_id: string;
13
+ record_type: "evidence" | "audit_event" | "task_context" | "metric_sample" | "user_summary";
14
+ max_age_days: number;
15
+ max_count: number;
16
+ dry_run_default: boolean;
17
+ protected_while_referenced: boolean;
18
+ redact_before_storage: boolean;
19
+ forbidden_content: string[];
20
+ }
21
+ export interface RetentionCheckResult {
22
+ policy_id: string;
23
+ total_records: number;
24
+ eligible_for_cleanup: number;
25
+ protected_records: number;
26
+ dry_run: boolean;
27
+ cleanup_candidates: string[];
28
+ }
29
+ /** 列出所有保留策略 */
30
+ export declare function listRetentionPolicies(): RetentionPolicy[];
31
+ /** 按记录类型获取策略 */
32
+ export declare function getRetentionPolicy(recordType: RetentionPolicy["record_type"]): RetentionPolicy | undefined;
33
+ /**
34
+ * 检查记录是否包含禁止内容。
35
+ */
36
+ export declare function checkForbiddenContent(recordType: RetentionPolicy["record_type"], content: string): string[];
37
+ /**
38
+ * 评估清理候选。
39
+ * 默认 dry-run,不执行实际删除。
40
+ */
41
+ export declare function evaluateCleanup(recordType: RetentionPolicy["record_type"], records: Array<{
42
+ id: string;
43
+ age_days: number;
44
+ is_referenced: boolean;
45
+ }>, dryRun?: boolean): RetentionCheckResult;
46
+ //# sourceMappingURL=retention_policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention_policy.d.ts","sourceRoot":"","sources":["../../src/engine/retention_policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,CAAC;IAC5F,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,0BAA0B,EAAE,OAAO,CAAC;IACpC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAuDD,eAAe;AACf,wBAAgB,qBAAqB,IAAI,eAAe,EAAE,CAEzD;AAED,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,eAAe,CAAC,aAAa,CAAC,GAAG,eAAe,GAAG,SAAS,CAE1G;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,eAAe,CAAC,aAAa,CAAC,EAC1C,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAUV;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,eAAe,CAAC,aAAa,CAAC,EAC1C,OAAO,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAAC,EACxE,MAAM,UAAO,GACZ,oBAAoB,CAoCtB"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * 保留策略 — 问题三十八 (Observability Storage Contract) 的清理规则。
3
+ *
4
+ * 核心规则:
5
+ * - evidence 必须可追溯且有 retention/cleanup 规则
6
+ * - cleanup 不得删除仍被 TaskContext / GovernanceReport 引用的 evidence
7
+ * - cleanup 默认 dry-run
8
+ * - 日志/审计/metric 不得存 secret、完整 prompt、大段 stdout/stderr
9
+ */
10
+ const BUILTIN_RETENTION_POLICIES = [
11
+ {
12
+ policy_id: "retention-evidence",
13
+ record_type: "evidence",
14
+ max_age_days: 90,
15
+ max_count: 1000,
16
+ dry_run_default: true,
17
+ protected_while_referenced: true,
18
+ redact_before_storage: true,
19
+ forbidden_content: ["secret", "api_key", "password", "token"],
20
+ },
21
+ {
22
+ policy_id: "retention-audit",
23
+ record_type: "audit_event",
24
+ max_age_days: 180,
25
+ max_count: 5000,
26
+ dry_run_default: true,
27
+ protected_while_referenced: false,
28
+ redact_before_storage: true,
29
+ forbidden_content: ["secret", "raw_stdout", "raw_stderr"],
30
+ },
31
+ {
32
+ policy_id: "retention-task-context",
33
+ record_type: "task_context",
34
+ max_age_days: 30,
35
+ max_count: 100,
36
+ dry_run_default: true,
37
+ protected_while_referenced: true,
38
+ redact_before_storage: true,
39
+ forbidden_content: ["raw_prompt", "chain_of_thought", "secret", "raw_stdout", "raw_stderr"],
40
+ },
41
+ {
42
+ policy_id: "retention-metric",
43
+ record_type: "metric_sample",
44
+ max_age_days: 60,
45
+ max_count: 10000,
46
+ dry_run_default: true,
47
+ protected_while_referenced: false,
48
+ redact_before_storage: true,
49
+ forbidden_content: ["user_data_raw"],
50
+ },
51
+ {
52
+ policy_id: "retention-user-summary",
53
+ record_type: "user_summary",
54
+ max_age_days: 30,
55
+ max_count: 500,
56
+ dry_run_default: true,
57
+ protected_while_referenced: false,
58
+ redact_before_storage: false,
59
+ forbidden_content: ["secret"],
60
+ },
61
+ ];
62
+ /** 列出所有保留策略 */
63
+ export function listRetentionPolicies() {
64
+ return [...BUILTIN_RETENTION_POLICIES];
65
+ }
66
+ /** 按记录类型获取策略 */
67
+ export function getRetentionPolicy(recordType) {
68
+ return BUILTIN_RETENTION_POLICIES.find((p) => p.record_type === recordType);
69
+ }
70
+ /**
71
+ * 检查记录是否包含禁止内容。
72
+ */
73
+ export function checkForbiddenContent(recordType, content) {
74
+ const policy = getRetentionPolicy(recordType);
75
+ if (!policy)
76
+ return [];
77
+ const found = [];
78
+ for (const forbidden of policy.forbidden_content) {
79
+ if (content.toLowerCase().includes(forbidden.toLowerCase())) {
80
+ found.push(forbidden);
81
+ }
82
+ }
83
+ return found;
84
+ }
85
+ /**
86
+ * 评估清理候选。
87
+ * 默认 dry-run,不执行实际删除。
88
+ */
89
+ export function evaluateCleanup(recordType, records, dryRun = true) {
90
+ const policy = getRetentionPolicy(recordType);
91
+ if (!policy) {
92
+ return {
93
+ policy_id: "unknown",
94
+ total_records: records.length,
95
+ eligible_for_cleanup: 0,
96
+ protected_records: 0,
97
+ dry_run: true,
98
+ cleanup_candidates: [],
99
+ };
100
+ }
101
+ let eligible = 0;
102
+ let protected_count = 0;
103
+ const candidates = [];
104
+ for (const record of records) {
105
+ if (record.age_days > policy.max_age_days) {
106
+ if (policy.protected_while_referenced && record.is_referenced) {
107
+ protected_count++;
108
+ }
109
+ else {
110
+ eligible++;
111
+ candidates.push(record.id);
112
+ }
113
+ }
114
+ }
115
+ return {
116
+ policy_id: policy.policy_id,
117
+ total_records: records.length,
118
+ eligible_for_cleanup: eligible,
119
+ protected_records: protected_count,
120
+ dry_run: dryRun || policy.dry_run_default,
121
+ cleanup_candidates: candidates,
122
+ };
123
+ }
124
+ //# sourceMappingURL=retention_policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention_policy.js","sourceRoot":"","sources":["../../src/engine/retention_policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * 状态更新旁路检测 — 问题三十四 (State Update Bypass)。
3
+ *
4
+ * 检测和阻止绕过正常状态更新管道的旁路操作。
5
+ */
6
+ /** 旁路检测结果 */
7
+ export interface BypassCheckResult {
8
+ /** 是否检测到旁路 */
9
+ bypass_detected: boolean;
10
+ /** 旁路类型 */
11
+ bypass_type: string | null;
12
+ /** 描述信息 */
13
+ description: string;
14
+ }
15
+ /**
16
+ * 检查给定的状态更新操作是否存在旁路。
17
+ */
18
+ export declare function checkStateUpdateBypass(_operation: string): BypassCheckResult;
19
+ //# sourceMappingURL=state_update_bypass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state_update_bypass.d.ts","sourceRoot":"","sources":["../../src/engine/state_update_bypass.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,aAAa;AACb,MAAM,WAAW,iBAAiB;IAChC,cAAc;IACd,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,CAM5E"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * 状态更新旁路检测 — 问题三十四 (State Update Bypass)。
3
+ *
4
+ * 检测和阻止绕过正常状态更新管道的旁路操作。
5
+ */
6
+ // ── 检测函数 ──
7
+ /**
8
+ * 检查给定的状态更新操作是否存在旁路。
9
+ */
10
+ export function checkStateUpdateBypass(_operation) {
11
+ return {
12
+ bypass_detected: false,
13
+ bypass_type: null,
14
+ description: "未检测到旁路操作",
15
+ };
16
+ }
17
+ //# sourceMappingURL=state_update_bypass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state_update_bypass.js","sourceRoot":"","sources":["../../src/engine/state_update_bypass.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,aAAa;AAEb;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO;QACL,eAAe,EAAE,KAAK;QACtB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,UAAU;KACxB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"task_context.d.ts","sourceRoot":"","sources":["../../src/engine/task_context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task_context.d.ts","sourceRoot":"","sources":["../../src/engine/task_context.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { AuditPool } from "./audit_pool.js";
8
8
  import { DiffOwnershipStore } from "./diff_ownership_store.js";
9
9
  import { ScopeLeaseStore } from "./scope_lease.js";
10
10
  import { ConflictGate } from "./conflict_gate.js";
11
+ import { evaluateStateGuard } from "./enforcement_guard.js";
11
12
  /**
12
13
  * 任务上下文管理器 — 管理任务的完整生命周期状态持久化。
13
14
  *
@@ -151,6 +152,13 @@ export class TaskContextManager {
151
152
  if (!VALID_TRANSITIONS[ctx.status].includes(status)) {
152
153
  throw new Error(`无效状态转换: ${ctx.status} → ${status}`);
153
154
  }
155
+ // Batch2: 状态护栏 — 阻断 failed/blocked/requires_human → done
156
+ if (["failed", "blocked", "requires_human"].includes(ctx.status) && status === "done") {
157
+ const guardFindings = evaluateStateGuard(ctx.status, "completed", "task_context_contract");
158
+ if (guardFindings.length > 0 && guardFindings[0].blocked) {
159
+ throw new Error(`Batch2 状态护栏阻断: ${guardFindings[0].reason_zh}`);
160
+ }
161
+ }
154
162
  // 事实前置条件校验:防止无数据伪推进
155
163
  if (ctx.status === "classifying" && status === "expanding") {
156
164
  if (!ctx.classification) {