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.
- package/dist/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +159 -1
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/adapters/trae/trae_config.d.ts +1 -1
- package/dist/adapters/trae/trae_config.d.ts.map +1 -1
- package/dist/adapters/trae/trae_config.js +1 -1
- package/dist/adapters/trae/trae_config.js.map +1 -1
- package/dist/engine/audit_pool.d.ts.map +1 -1
- package/dist/engine/audit_pool.js +1 -0
- package/dist/engine/audit_pool.js.map +1 -1
- package/dist/engine/contract_registry.d.ts +113 -0
- package/dist/engine/contract_registry.d.ts.map +1 -0
- package/dist/engine/contract_registry.js +1159 -0
- package/dist/engine/contract_registry.js.map +1 -0
- package/dist/engine/contract_state_store.d.ts +67 -0
- package/dist/engine/contract_state_store.d.ts.map +1 -0
- package/dist/engine/contract_state_store.js +167 -0
- package/dist/engine/contract_state_store.js.map +1 -0
- package/dist/engine/debugger.d.ts.map +1 -1
- package/dist/engine/debugger.js +30 -1
- package/dist/engine/debugger.js.map +1 -1
- package/dist/engine/degradation.d.ts +58 -0
- package/dist/engine/degradation.d.ts.map +1 -0
- package/dist/engine/degradation.js +74 -0
- package/dist/engine/degradation.js.map +1 -0
- package/dist/engine/delivery_readiness.d.ts +66 -0
- package/dist/engine/delivery_readiness.d.ts.map +1 -0
- package/dist/engine/delivery_readiness.js +176 -0
- package/dist/engine/delivery_readiness.js.map +1 -0
- package/dist/engine/deprecated_contract.d.ts +21 -0
- package/dist/engine/deprecated_contract.d.ts.map +1 -0
- package/dist/engine/deprecated_contract.js +14 -0
- package/dist/engine/deprecated_contract.js.map +1 -0
- package/dist/engine/diagnostic_registry.d.ts +64 -0
- package/dist/engine/diagnostic_registry.d.ts.map +1 -0
- package/dist/engine/diagnostic_registry.js +176 -0
- package/dist/engine/diagnostic_registry.js.map +1 -0
- package/dist/engine/enforcement_guard.d.ts +84 -0
- package/dist/engine/enforcement_guard.d.ts.map +1 -0
- package/dist/engine/enforcement_guard.js +305 -0
- package/dist/engine/enforcement_guard.js.map +1 -0
- package/dist/engine/failure_report.d.ts +74 -0
- package/dist/engine/failure_report.d.ts.map +1 -0
- package/dist/engine/failure_report.js +143 -0
- package/dist/engine/failure_report.js.map +1 -0
- package/dist/engine/governance_report.d.ts +9 -1
- package/dist/engine/governance_report.d.ts.map +1 -1
- package/dist/engine/governance_report.js +16 -2
- package/dist/engine/governance_report.js.map +1 -1
- package/dist/engine/implementation_roadmap_registry.d.ts +1 -1
- package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
- package/dist/engine/implementation_roadmap_registry.js +32 -24
- package/dist/engine/implementation_roadmap_registry.js.map +1 -1
- package/dist/engine/knowledge_lifecycle.d.ts +23 -0
- package/dist/engine/knowledge_lifecycle.d.ts.map +1 -0
- package/dist/engine/knowledge_lifecycle.js +13 -0
- package/dist/engine/knowledge_lifecycle.js.map +1 -0
- package/dist/engine/language_policy.d.ts +21 -0
- package/dist/engine/language_policy.d.ts.map +1 -0
- package/dist/engine/language_policy.js +18 -0
- package/dist/engine/language_policy.js.map +1 -0
- package/dist/engine/language_policy_contract.d.ts +52 -0
- package/dist/engine/language_policy_contract.d.ts.map +1 -0
- package/dist/engine/language_policy_contract.js +78 -0
- package/dist/engine/language_policy_contract.js.map +1 -0
- package/dist/engine/mechanism_family_registry.d.ts +48 -0
- package/dist/engine/mechanism_family_registry.d.ts.map +1 -0
- package/dist/engine/mechanism_family_registry.js +197 -0
- package/dist/engine/mechanism_family_registry.js.map +1 -0
- package/dist/engine/policy_drift_detector.d.ts +20 -0
- package/dist/engine/policy_drift_detector.d.ts.map +1 -1
- package/dist/engine/policy_drift_detector.js +79 -0
- package/dist/engine/policy_drift_detector.js.map +1 -1
- package/dist/engine/retention_policy.d.ts +46 -0
- package/dist/engine/retention_policy.d.ts.map +1 -0
- package/dist/engine/retention_policy.js +124 -0
- package/dist/engine/retention_policy.js.map +1 -0
- package/dist/engine/state_update_bypass.d.ts +19 -0
- package/dist/engine/state_update_bypass.d.ts.map +1 -0
- package/dist/engine/state_update_bypass.js +17 -0
- package/dist/engine/state_update_bypass.js.map +1 -0
- package/dist/engine/task_context.d.ts.map +1 -1
- package/dist/engine/task_context.js +8 -0
- package/dist/engine/task_context.js.map +1 -1
- package/dist/engine/test_strategy.d.ts +58 -0
- package/dist/engine/test_strategy.d.ts.map +1 -0
- package/dist/engine/test_strategy.js +93 -0
- package/dist/engine/test_strategy.js.map +1 -0
- package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -1
- package/dist/engine/tool_invocation_contract_registry.js +11 -1
- package/dist/engine/tool_invocation_contract_registry.js.map +1 -1
- package/dist/engine/verification_contract.d.ts +132 -0
- package/dist/engine/verification_contract.d.ts.map +1 -0
- package/dist/engine/verification_contract.js +296 -0
- package/dist/engine/verification_contract.js.map +1 -0
- package/dist/engine/workspace_lease.d.ts +69 -0
- package/dist/engine/workspace_lease.d.ts.map +1 -0
- package/dist/engine/workspace_lease.js +153 -0
- package/dist/engine/workspace_lease.js.map +1 -0
- package/dist/types.d.ts +13 -1
- package/dist/types.d.ts.map +1 -1
- 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":"AAIA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAkC,cAAc,EAAE,MAAM,aAAa,CAAC;AACxM,OAAO,KAAK,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEjG,OAAO,EAAE,SAAS,EAAkB,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAuB,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
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) {
|