soloforge 1.3.1 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -3
- package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
- package/dist/adapters/claude_code/claude_md.js +4 -0
- package/dist/adapters/claude_code/claude_md.js.map +1 -1
- package/dist/adapters/claude_code/tools.d.ts +10 -10
- package/dist/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +603 -18
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/adapters/shared/workflow_template.d.ts +26 -0
- package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
- package/dist/adapters/shared/workflow_template.js +140 -46
- package/dist/adapters/shared/workflow_template.js.map +1 -1
- package/dist/bin/soloforge.d.ts.map +1 -1
- package/dist/bin/soloforge.js +316 -54
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/asset_manifest.d.ts +7 -1
- package/dist/engine/asset_manifest.d.ts.map +1 -1
- package/dist/engine/asset_manifest.js +41 -18
- 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/consumable_asset_registry.d.ts.map +1 -1
- package/dist/engine/consumable_asset_registry.js +159 -0
- package/dist/engine/consumable_asset_registry.js.map +1 -1
- package/dist/engine/consumption_trace_store.d.ts +8 -8
- package/dist/engine/consumption_trace_store.d.ts.map +1 -1
- package/dist/engine/consumption_trace_store.js +11 -7
- package/dist/engine/consumption_trace_store.js.map +1 -1
- package/dist/engine/decision_workshop.d.ts +160 -0
- package/dist/engine/decision_workshop.d.ts.map +1 -0
- package/dist/engine/decision_workshop.js +279 -0
- package/dist/engine/decision_workshop.js.map +1 -0
- package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -1
- package/dist/engine/dual_layer_mechanism_registry.js +300 -2
- package/dist/engine/dual_layer_mechanism_registry.js.map +1 -1
- package/dist/engine/explicit_asset_registry.d.ts +30 -0
- package/dist/engine/explicit_asset_registry.d.ts.map +1 -0
- package/dist/engine/explicit_asset_registry.js +3712 -0
- package/dist/engine/explicit_asset_registry.js.map +1 -0
- package/dist/engine/implementation_roadmap_registry.d.ts +2 -2
- package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
- package/dist/engine/implementation_roadmap_registry.js +110 -16
- package/dist/engine/implementation_roadmap_registry.js.map +1 -1
- package/dist/engine/intent_expander.d.ts.map +1 -1
- package/dist/engine/intent_expander.js +46 -2
- package/dist/engine/intent_expander.js.map +1 -1
- package/dist/engine/intent_router.d.ts +1 -1
- package/dist/engine/intent_router.d.ts.map +1 -1
- package/dist/engine/intent_router.js +2 -1
- package/dist/engine/intent_router.js.map +1 -1
- package/dist/engine/knowledge_injection_boundary.d.ts +3 -0
- package/dist/engine/knowledge_injection_boundary.d.ts.map +1 -1
- package/dist/engine/knowledge_injection_boundary.js +48 -5
- package/dist/engine/knowledge_injection_boundary.js.map +1 -1
- package/dist/engine/mechanism_contract_registry.d.ts +1 -1
- package/dist/engine/mechanism_contract_registry.d.ts.map +1 -1
- package/dist/engine/mechanism_contract_registry.js +142 -2
- package/dist/engine/mechanism_contract_registry.js.map +1 -1
- 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/observed_consumption.d.ts +54 -0
- package/dist/engine/observed_consumption.d.ts.map +1 -0
- package/dist/engine/observed_consumption.js +377 -0
- package/dist/engine/observed_consumption.js.map +1 -0
- 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 +64 -0
- package/dist/engine/release_issue_scenario_registry.d.ts.map +1 -0
- package/dist/engine/release_issue_scenario_registry.js +1362 -0
- package/dist/engine/release_issue_scenario_registry.js.map +1 -0
- package/dist/engine/release_readiness_gate.d.ts +1 -1
- package/dist/engine/release_readiness_gate.d.ts.map +1 -1
- package/dist/engine/release_readiness_gate.js +721 -47
- package/dist/engine/release_readiness_gate.js.map +1 -1
- package/dist/engine/release_tool_harness.d.ts +71 -0
- package/dist/engine/release_tool_harness.d.ts.map +1 -0
- package/dist/engine/release_tool_harness.js +161 -0
- package/dist/engine/release_tool_harness.js.map +1 -0
- package/dist/engine/scaffolder.d.ts.map +1 -1
- package/dist/engine/scaffolder.js +144 -7
- package/dist/engine/scaffolder.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/standard_asset_contract.d.ts +75 -0
- package/dist/engine/standard_asset_contract.d.ts.map +1 -0
- package/dist/engine/standard_asset_contract.js +388 -0
- package/dist/engine/standard_asset_contract.js.map +1 -0
- package/dist/engine/standard_asset_coverage.d.ts +45 -0
- package/dist/engine/standard_asset_coverage.d.ts.map +1 -0
- package/dist/engine/standard_asset_coverage.js +220 -0
- package/dist/engine/standard_asset_coverage.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/template_asset_contract_registry.d.ts +162 -0
- package/dist/engine/template_asset_contract_registry.d.ts.map +1 -0
- package/dist/engine/template_asset_contract_registry.js +598 -0
- package/dist/engine/template_asset_contract_registry.js.map +1 -0
- package/dist/engine/template_asset_visibility.d.ts +109 -0
- package/dist/engine/template_asset_visibility.d.ts.map +1 -0
- package/dist/engine/template_asset_visibility.js +321 -0
- package/dist/engine/template_asset_visibility.js.map +1 -0
- package/dist/engine/template_init_sync.d.ts +68 -0
- package/dist/engine/template_init_sync.d.ts.map +1 -0
- package/dist/engine/template_init_sync.js +218 -0
- package/dist/engine/template_init_sync.js.map +1 -0
- package/dist/engine/template_manifest_io.d.ts +10 -0
- package/dist/engine/template_manifest_io.d.ts.map +1 -1
- package/dist/engine/template_manifest_io.js +63 -30
- package/dist/engine/template_manifest_io.js.map +1 -1
- package/dist/engine/template_mechanism_auditor.d.ts +3 -1
- package/dist/engine/template_mechanism_auditor.d.ts.map +1 -1
- package/dist/engine/template_mechanism_auditor.js +27 -24
- package/dist/engine/template_mechanism_auditor.js.map +1 -1
- package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -1
- package/dist/engine/tool_invocation_contract_registry.js +21 -1
- 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/knowledge/index_manager.d.ts +20 -0
- package/dist/knowledge/index_manager.d.ts.map +1 -1
- package/dist/knowledge/index_manager.js +234 -3
- package/dist/knowledge/index_manager.js.map +1 -1
- package/dist/types.d.ts +44 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- 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//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_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//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/240/207/345/207/206/350/265/204/344/272/247/350/246/206/347/233/226/350/247/204/345/210/231.md +72 -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 +71 -0
- package/templates/knowledge/rules//347/224/250/346/210/267/345/217/215/351/246/210/345/245/221/347/272/246/350/247/204/345/210/231.md +62 -1
- 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 +77 -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 +96 -0
- package/templates/patterns/SOLID/350/256/276/350/256/241/350/247/204/350/214/203.md +39 -0
- package/templates/patterns//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/350/247/204/350/214/203.md +39 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 项目阶段检测器 — 问题六十五。
|
|
3
|
+
*
|
|
4
|
+
* 综合项目状态(配置、知识、设计产物、任务)判断当前项目生命周期阶段。
|
|
5
|
+
* 不只看一个字段,综合 config、knowledge、design、task 多维信号。
|
|
6
|
+
*/
|
|
7
|
+
import fs from "node:fs";
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
import { resolveProjectConfig, getProjectKnowledgeDir } from "../knowledge/loader.js";
|
|
10
|
+
import { debug } from "./logger.js";
|
|
11
|
+
/**
|
|
12
|
+
* 检测项目当前所处阶段。
|
|
13
|
+
* 综合判断: config 存在性/确认状态、knowledge 可用性、设计产物状态、任务执行状态。
|
|
14
|
+
*/
|
|
15
|
+
export async function detectProjectStage(projectPath) {
|
|
16
|
+
debug("项目阶段检测", "开始检测", projectPath);
|
|
17
|
+
const soloforgeDir = path.join(projectPath, ".soloforge");
|
|
18
|
+
const configPath = path.join(soloforgeDir, "config.yaml");
|
|
19
|
+
// 1. 未初始化
|
|
20
|
+
if (!fs.existsSync(soloforgeDir)) {
|
|
21
|
+
return "uninitialized";
|
|
22
|
+
}
|
|
23
|
+
// 2. 已初始化但未持久化配置,不能重复建议 init
|
|
24
|
+
if (!fs.existsSync(configPath)) {
|
|
25
|
+
return "configuration_pending";
|
|
26
|
+
}
|
|
27
|
+
// 3. 配置未确认
|
|
28
|
+
const evidencePath = path.join(soloforgeDir, "config.evidence.json");
|
|
29
|
+
if (!fs.existsSync(evidencePath)) {
|
|
30
|
+
return "configuration_pending";
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const evidenceRaw = JSON.parse(fs.readFileSync(evidencePath, "utf-8"));
|
|
34
|
+
const confirmedFields = Object.values(evidenceRaw.fields ?? {});
|
|
35
|
+
const allConfirmed = confirmedFields.length > 0
|
|
36
|
+
&& confirmedFields.every((f) => f.confidence === "high"
|
|
37
|
+
&& (f.confidence_source === "confirmed" || f.confidence_source === "detected"));
|
|
38
|
+
if (!allConfirmed) {
|
|
39
|
+
return "configuration_pending";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return "configuration_pending";
|
|
44
|
+
}
|
|
45
|
+
// 3. 知识就绪检查
|
|
46
|
+
let config;
|
|
47
|
+
try {
|
|
48
|
+
const resolved = await resolveProjectConfig(projectPath);
|
|
49
|
+
config = resolved.config;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return "configuration_pending";
|
|
53
|
+
}
|
|
54
|
+
const knowledgeDir = getProjectKnowledgeDir(config);
|
|
55
|
+
const hasKnowledge = fs.existsSync(knowledgeDir);
|
|
56
|
+
if (!hasKnowledge) {
|
|
57
|
+
return "knowledge_ready";
|
|
58
|
+
}
|
|
59
|
+
// 4-6. 检查任务状态和设计产物
|
|
60
|
+
const stateDir = path.join(soloforgeDir, "state");
|
|
61
|
+
let hasDesignInProgress = false;
|
|
62
|
+
let hasDesignReady = false;
|
|
63
|
+
let hasExecutingTask = false;
|
|
64
|
+
let hasVerifiedDeliveryReady = false;
|
|
65
|
+
let hasDelivered = false;
|
|
66
|
+
if (fs.existsSync(stateDir)) {
|
|
67
|
+
const taskFiles = fs.readdirSync(stateDir).filter((f) => f.startsWith("task-") && f.endsWith(".json"));
|
|
68
|
+
for (const tf of taskFiles) {
|
|
69
|
+
try {
|
|
70
|
+
const task = JSON.parse(fs.readFileSync(path.join(stateDir, tf), "utf-8"));
|
|
71
|
+
// 设计产物检查
|
|
72
|
+
const designPack = task.design_artifact_pack;
|
|
73
|
+
if (designPack) {
|
|
74
|
+
if (designPack.status === "implementation_ready" || designPack.status === "confirmed") {
|
|
75
|
+
hasDesignReady = true;
|
|
76
|
+
}
|
|
77
|
+
else if (designPack.status && designPack.status !== "superseded") {
|
|
78
|
+
hasDesignInProgress = true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// 任务执行状态
|
|
82
|
+
const status = task.status;
|
|
83
|
+
if (["executing", "verifying", "learning"].includes(status)) {
|
|
84
|
+
hasExecutingTask = true;
|
|
85
|
+
}
|
|
86
|
+
// 交付就绪
|
|
87
|
+
if (status === "done" && task.verification?.status === "passed") {
|
|
88
|
+
if (task.delivery?.delivery_executed) {
|
|
89
|
+
hasDelivered = true;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
hasVerifiedDeliveryReady = true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
// 忽略损坏的任务文件
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// 8. 已发布
|
|
102
|
+
if (hasDelivered) {
|
|
103
|
+
return "released";
|
|
104
|
+
}
|
|
105
|
+
// 7. 交付就绪
|
|
106
|
+
if (hasVerifiedDeliveryReady) {
|
|
107
|
+
return "delivery_ready";
|
|
108
|
+
}
|
|
109
|
+
// 6. 开发中
|
|
110
|
+
if (hasExecutingTask) {
|
|
111
|
+
return "development_in_progress";
|
|
112
|
+
}
|
|
113
|
+
// 5. 实现就绪(设计通过审计)
|
|
114
|
+
if (hasDesignReady) {
|
|
115
|
+
return "implementation_ready";
|
|
116
|
+
}
|
|
117
|
+
// 4. 设计进行中
|
|
118
|
+
if (hasDesignInProgress) {
|
|
119
|
+
return "design_in_progress";
|
|
120
|
+
}
|
|
121
|
+
// 3. 知识就绪(默认)
|
|
122
|
+
return "knowledge_ready";
|
|
123
|
+
}
|
|
124
|
+
/** 项目阶段中文标签映射 */
|
|
125
|
+
const PROJECT_STAGE_LABELS = {
|
|
126
|
+
uninitialized: "未初始化",
|
|
127
|
+
configuration_pending: "配置待确认",
|
|
128
|
+
knowledge_ready: "知识就绪",
|
|
129
|
+
design_in_progress: "设计进行中",
|
|
130
|
+
implementation_ready: "实现就绪",
|
|
131
|
+
development_in_progress: "开发进行中",
|
|
132
|
+
delivery_ready: "交付就绪",
|
|
133
|
+
released: "已发布",
|
|
134
|
+
post_release_observation: "发布后观察",
|
|
135
|
+
};
|
|
136
|
+
/** 项目阶段中文描述 */
|
|
137
|
+
const PROJECT_STAGE_DESCRIPTIONS = {
|
|
138
|
+
uninitialized: "项目尚未运行 soloforge init,缺少 .soloforge/ 目录或配置文件",
|
|
139
|
+
configuration_pending: "配置文件存在但字段尚未确认,建议运行 soloforge config confirm 确认关键字段",
|
|
140
|
+
knowledge_ready: "配置已确认、知识库已就绪,可以开始接收开发任务",
|
|
141
|
+
design_in_progress: "架构/数据库/API 设计产物正在进行中,尚未通过审计",
|
|
142
|
+
implementation_ready: "设计产物已通过审计复验,可以开始编码实现",
|
|
143
|
+
development_in_progress: "已有任务在编码/验证阶段",
|
|
144
|
+
delivery_ready: "任务已通过验证,准备交付",
|
|
145
|
+
released: "已发布上线",
|
|
146
|
+
post_release_observation: "发布后观察期,建议验证、监控、收集反馈",
|
|
147
|
+
};
|
|
148
|
+
/** 项目阶段必要证据 */
|
|
149
|
+
const PROJECT_STAGE_EVIDENCE = {
|
|
150
|
+
uninitialized: [],
|
|
151
|
+
configuration_pending: [".soloforge/config.yaml 存在"],
|
|
152
|
+
knowledge_ready: ["config 已确认", "knowledge 目录存在"],
|
|
153
|
+
design_in_progress: ["design_artifact_pack 状态非 implementation_ready"],
|
|
154
|
+
implementation_ready: ["design_artifact_pack.status === implementation_ready"],
|
|
155
|
+
development_in_progress: ["存在 executing/verifying/learning 状态任务"],
|
|
156
|
+
delivery_ready: ["任务验证通过", "delivery readiness 评估通过"],
|
|
157
|
+
released: ["delivery 已执行"],
|
|
158
|
+
post_release_observation: ["已发布"],
|
|
159
|
+
};
|
|
160
|
+
/** 项目阶段可能的下一阶段 */
|
|
161
|
+
const PROJECT_STAGE_NEXT = {
|
|
162
|
+
uninitialized: ["configuration_pending"],
|
|
163
|
+
configuration_pending: ["knowledge_ready", "uninitialized"],
|
|
164
|
+
knowledge_ready: ["design_in_progress", "development_in_progress"],
|
|
165
|
+
design_in_progress: ["implementation_ready"],
|
|
166
|
+
implementation_ready: ["development_in_progress"],
|
|
167
|
+
development_in_progress: ["delivery_ready"],
|
|
168
|
+
delivery_ready: ["released"],
|
|
169
|
+
released: ["post_release_observation"],
|
|
170
|
+
post_release_observation: [],
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* 获取项目阶段的中文解释。
|
|
174
|
+
*/
|
|
175
|
+
export function explainProjectStage(stage) {
|
|
176
|
+
return {
|
|
177
|
+
stage,
|
|
178
|
+
level: "project",
|
|
179
|
+
label_zh: PROJECT_STAGE_LABELS[stage],
|
|
180
|
+
description_zh: PROJECT_STAGE_DESCRIPTIONS[stage],
|
|
181
|
+
required_evidence: PROJECT_STAGE_EVIDENCE[stage],
|
|
182
|
+
next_possible_stages: PROJECT_STAGE_NEXT[stage],
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=project_stage_detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project_stage_detector.js","sourceRoot":"","sources":["../../src/engine/project_stage_detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 发布问题场景注册表 — 结构化场景定义 + 真实生产入口执行证据。
|
|
3
|
+
*
|
|
4
|
+
* R11: 所有 MCP 工具链场景使用 ToolInvocationObservation 记录。
|
|
5
|
+
* 确认通过 sf_expand 的 decision_workshop / architecture_decision_workshop 输入,
|
|
6
|
+
* 不再直接修改 TaskContext 确认研讨域。
|
|
7
|
+
*/
|
|
8
|
+
export interface ScenarioExecutionResult {
|
|
9
|
+
scenario_id: string;
|
|
10
|
+
status: "pass" | "fail";
|
|
11
|
+
evidence?: string;
|
|
12
|
+
error?: string;
|
|
13
|
+
duration_ms?: number;
|
|
14
|
+
/** 真实入口 trace: 由 ToolInvocationObservation 生成 */
|
|
15
|
+
production_trace?: {
|
|
16
|
+
tool_entrypoint: string;
|
|
17
|
+
diagnostic_codes: string[];
|
|
18
|
+
gates_consumed: string[];
|
|
19
|
+
};
|
|
20
|
+
behavioral_proof?: {
|
|
21
|
+
task_id: string;
|
|
22
|
+
blocked_task_id?: string;
|
|
23
|
+
delivered_task_id?: string;
|
|
24
|
+
contract_blocked?: boolean;
|
|
25
|
+
repair_directive_cleared?: boolean;
|
|
26
|
+
artifact_status?: string;
|
|
27
|
+
acceptance_confirmation_ref?: string;
|
|
28
|
+
delivery_succeeded?: boolean;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export interface ScenarioEntry {
|
|
32
|
+
scenario_id: string;
|
|
33
|
+
covering_problem: string;
|
|
34
|
+
test_files: string[];
|
|
35
|
+
/** 真实生产入口标识 */
|
|
36
|
+
production_entrypoint: string;
|
|
37
|
+
/** 明确的预期结果描述 */
|
|
38
|
+
expected_outcome: string;
|
|
39
|
+
/** 执行函数: 运行真实生产逻辑产生执行证据 */
|
|
40
|
+
runner: () => Promise<ScenarioExecutionResult>;
|
|
41
|
+
}
|
|
42
|
+
/** 获取全量场景定义 */
|
|
43
|
+
export declare function getReleaseIssueScenarios(): ScenarioEntry[];
|
|
44
|
+
/**
|
|
45
|
+
* 验证 发布问题场景覆盖:
|
|
46
|
+
* - 所有场景必须有 runner + production_entrypoint + expected_outcome
|
|
47
|
+
* - 所有引用测试文件的场景: 测试文件必须存在
|
|
48
|
+
* - 返回结构化验证结果
|
|
49
|
+
*/
|
|
50
|
+
export declare function validateReleaseIssueScenarios(rootDir: string): {
|
|
51
|
+
valid: boolean;
|
|
52
|
+
missing_tests: string[];
|
|
53
|
+
missing_runners: string[];
|
|
54
|
+
missing_entrypoints: string[];
|
|
55
|
+
tautology_suspects: string[];
|
|
56
|
+
scenario_count: number;
|
|
57
|
+
covered_problems: string[];
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* 运行所有场景,收集执行证据。
|
|
61
|
+
* 每个场景必须有 runner,无 runner 视为 fail。
|
|
62
|
+
*/
|
|
63
|
+
export declare function executeReleaseIssueScenarios(): Promise<ScenarioExecutionResult[]>;
|
|
64
|
+
//# sourceMappingURL=release_issue_scenario_registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release_issue_scenario_registry.d.ts","sourceRoot":"","sources":["../../src/engine/release_issue_scenario_registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,gBAAgB,CAAC,EAAE;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,gBAAgB,CAAC,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,2BAA2B,CAAC,EAAE,MAAM,CAAC;QACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe;IACf,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAChD;AAs0CD,eAAe;AACf,wBAAgB,wBAAwB,IAAI,aAAa,EAAE,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,GACd;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAC;IAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAAE,CAqCzL;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAavF"}
|