scene-capability-engine 3.4.5 → 3.5.0
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/CHANGELOG.md +40 -0
- package/README.md +31 -1
- package/README.zh.md +31 -1
- package/docs/command-reference.md +73 -7
- package/docs/images/wechat-qr.png +0 -0
- package/lib/adoption/adoption-strategy.js +2 -0
- package/lib/adoption/detection-engine.js +2 -0
- package/lib/adoption/file-classifier.js +3 -1
- package/lib/adoption/smart-orchestrator.js +2 -0
- package/lib/commands/errorbook.js +142 -2
- package/lib/commands/studio.js +569 -25
- package/lib/problem/problem-evaluator.js +431 -16
- package/lib/spec/domain-modeling.js +49 -4
- package/lib/studio/spec-intake-governor.js +992 -0
- package/lib/workspace/takeover-baseline.js +128 -4
- package/package.json +1 -1
- package/template/.sce/config/problem-closure-policy.json +18 -0
- package/template/.sce/config/problem-eval-policy.json +43 -1
- package/template/.sce/config/spec-domain-policy.json +9 -1
- package/template/.sce/config/studio-intake-policy.json +68 -0
- package/template/.sce/config/takeover-baseline.json +88 -1
- package/template/.sce/steering/CORE_PRINCIPLES.md +4 -2
|
@@ -23,7 +23,9 @@ const SPEC_DOMAIN_POLICY_DEFAULTS = Object.freeze({
|
|
|
23
23
|
schema_version: '1.0',
|
|
24
24
|
closed_loop_research_required: true,
|
|
25
25
|
coverage_validation_required: true,
|
|
26
|
-
fail_on_gap_default: true
|
|
26
|
+
fail_on_gap_default: true,
|
|
27
|
+
problem_contract_required: true,
|
|
28
|
+
ontology_axes_required: ['entity', 'relation', 'business_rule', 'decision_policy', 'execution_flow']
|
|
27
29
|
});
|
|
28
30
|
|
|
29
31
|
const PROBLEM_EVAL_POLICY_DEFAULTS = Object.freeze({
|
|
@@ -51,7 +53,69 @@ const PROBLEM_EVAL_POLICY_DEFAULTS = Object.freeze({
|
|
|
51
53
|
'compliance',
|
|
52
54
|
'data-loss'
|
|
53
55
|
],
|
|
54
|
-
recommendation_limit: 6
|
|
56
|
+
recommendation_limit: 6,
|
|
57
|
+
max_failed_rounds_before_debug: 2,
|
|
58
|
+
problem_contract_required_stages: ['plan', 'generate', 'apply', 'verify', 'release'],
|
|
59
|
+
problem_contract_block_stages: ['plan', 'apply', 'release'],
|
|
60
|
+
ontology_alignment_required_stages: ['plan', 'generate', 'apply', 'verify', 'release'],
|
|
61
|
+
ontology_alignment_block_stages: ['apply', 'release'],
|
|
62
|
+
ontology_required_axes: ['entity', 'relation', 'business_rule', 'decision_policy', 'execution_flow'],
|
|
63
|
+
require_ontology_evidence_binding: true,
|
|
64
|
+
ontology_evidence_min_bindings: 1,
|
|
65
|
+
convergence_required_stages: ['verify', 'release'],
|
|
66
|
+
convergence_block_stages: ['release'],
|
|
67
|
+
release_block_on_high_alerts: true,
|
|
68
|
+
release_require_governance_report: false
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
const PROBLEM_CLOSURE_POLICY_DEFAULTS = Object.freeze({
|
|
72
|
+
schema_version: '1.0',
|
|
73
|
+
enabled: true,
|
|
74
|
+
governance_report_path: '.sce/reports/interactive-governance-report.json',
|
|
75
|
+
verify: {
|
|
76
|
+
require_problem_contract: true,
|
|
77
|
+
require_domain_validation: true,
|
|
78
|
+
require_domain_coverage: true
|
|
79
|
+
},
|
|
80
|
+
release: {
|
|
81
|
+
require_problem_contract: true,
|
|
82
|
+
require_domain_validation: true,
|
|
83
|
+
require_domain_coverage: true,
|
|
84
|
+
require_verify_report: true,
|
|
85
|
+
require_governance_report: false,
|
|
86
|
+
block_on_high_governance_alerts: true
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
const STUDIO_INTAKE_POLICY_DEFAULTS = Object.freeze({
|
|
91
|
+
schema_version: '1.0',
|
|
92
|
+
enabled: true,
|
|
93
|
+
auto_create_spec: true,
|
|
94
|
+
force_spec_for_studio_plan: true,
|
|
95
|
+
prefer_existing_scene_spec: true,
|
|
96
|
+
related_spec_min_score: 45,
|
|
97
|
+
allow_new_spec_when_goal_diverges: true,
|
|
98
|
+
divergence_similarity_threshold: 0.2,
|
|
99
|
+
goal_missing_strategy: 'create_for_tracking',
|
|
100
|
+
question_only_patterns: [
|
|
101
|
+
'how', 'what', 'why', 'when', 'where', 'which', 'can', 'could', 'should', 'would',
|
|
102
|
+
'是否', '怎么', '如何', '为什么', '吗', '么'
|
|
103
|
+
],
|
|
104
|
+
change_intent_patterns: [
|
|
105
|
+
'implement', 'build', 'create', 'add', 'update', 'upgrade', 'refactor', 'fix', 'stabilize',
|
|
106
|
+
'optimize', 'deliver', 'release', 'bootstrap', 'repair', 'patch',
|
|
107
|
+
'新增', '增加', '实现', '构建', '开发', '修复', '优化', '重构', '发布', '改造', '完善', '增强'
|
|
108
|
+
],
|
|
109
|
+
spec_id: {
|
|
110
|
+
prefix: 'auto',
|
|
111
|
+
max_goal_slug_tokens: 6
|
|
112
|
+
},
|
|
113
|
+
governance: {
|
|
114
|
+
auto_run_on_plan: true,
|
|
115
|
+
max_active_specs_per_scene: 3,
|
|
116
|
+
stale_days: 14,
|
|
117
|
+
duplicate_similarity_threshold: 0.66
|
|
118
|
+
}
|
|
55
119
|
});
|
|
56
120
|
|
|
57
121
|
const TAKEOVER_DEFAULTS = Object.freeze({
|
|
@@ -70,13 +134,55 @@ const TAKEOVER_DEFAULTS = Object.freeze({
|
|
|
70
134
|
spec_domain_policy: {
|
|
71
135
|
closed_loop_research_required: true,
|
|
72
136
|
coverage_validation_required: true,
|
|
73
|
-
fail_on_gap_default: true
|
|
137
|
+
fail_on_gap_default: true,
|
|
138
|
+
problem_contract_required: true,
|
|
139
|
+
ontology_axes_required: ['entity', 'relation', 'business_rule', 'decision_policy', 'execution_flow']
|
|
74
140
|
},
|
|
75
141
|
problem_evaluation: {
|
|
76
142
|
enabled: true,
|
|
77
143
|
mode: 'required',
|
|
78
144
|
enforce_on_stages: ['plan', 'generate', 'apply', 'verify', 'release'],
|
|
79
|
-
block_on_stages: ['apply', 'release']
|
|
145
|
+
block_on_stages: ['apply', 'release'],
|
|
146
|
+
problem_contract_required_stages: ['plan', 'generate', 'apply', 'verify', 'release'],
|
|
147
|
+
problem_contract_block_stages: ['plan', 'apply', 'release'],
|
|
148
|
+
ontology_alignment_required_stages: ['plan', 'generate', 'apply', 'verify', 'release'],
|
|
149
|
+
ontology_alignment_block_stages: ['apply', 'release'],
|
|
150
|
+
convergence_required_stages: ['verify', 'release'],
|
|
151
|
+
convergence_block_stages: ['release'],
|
|
152
|
+
max_failed_rounds_before_debug: 2
|
|
153
|
+
},
|
|
154
|
+
problem_closure: {
|
|
155
|
+
enabled: true,
|
|
156
|
+
governance_report_path: '.sce/reports/interactive-governance-report.json',
|
|
157
|
+
verify: {
|
|
158
|
+
require_problem_contract: true,
|
|
159
|
+
require_domain_validation: true,
|
|
160
|
+
require_domain_coverage: true
|
|
161
|
+
},
|
|
162
|
+
release: {
|
|
163
|
+
require_problem_contract: true,
|
|
164
|
+
require_domain_validation: true,
|
|
165
|
+
require_domain_coverage: true,
|
|
166
|
+
require_verify_report: true,
|
|
167
|
+
require_governance_report: false,
|
|
168
|
+
block_on_high_governance_alerts: true
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
studio_intake: {
|
|
172
|
+
enabled: true,
|
|
173
|
+
auto_create_spec: true,
|
|
174
|
+
force_spec_for_studio_plan: true,
|
|
175
|
+
prefer_existing_scene_spec: true,
|
|
176
|
+
related_spec_min_score: 45,
|
|
177
|
+
allow_new_spec_when_goal_diverges: true,
|
|
178
|
+
divergence_similarity_threshold: 0.2,
|
|
179
|
+
goal_missing_strategy: 'create_for_tracking',
|
|
180
|
+
governance: {
|
|
181
|
+
auto_run_on_plan: true,
|
|
182
|
+
max_active_specs_per_scene: 3,
|
|
183
|
+
stale_days: 14,
|
|
184
|
+
duplicate_similarity_threshold: 0.66
|
|
185
|
+
}
|
|
80
186
|
},
|
|
81
187
|
debug_policy: {
|
|
82
188
|
prioritize_root_cause_fix: true,
|
|
@@ -346,6 +452,8 @@ async function applyTakeoverBaseline(projectPath = process.cwd(), options = {})
|
|
|
346
452
|
const sessionGovernancePath = path.join(sceRoot, 'config', 'session-governance.json');
|
|
347
453
|
const specDomainPolicyPath = path.join(sceRoot, 'config', 'spec-domain-policy.json');
|
|
348
454
|
const problemEvalPolicyPath = path.join(sceRoot, 'config', 'problem-eval-policy.json');
|
|
455
|
+
const problemClosurePolicyPath = path.join(sceRoot, 'config', 'problem-closure-policy.json');
|
|
456
|
+
const studioIntakePolicyPath = path.join(sceRoot, 'config', 'studio-intake-policy.json');
|
|
349
457
|
const reportPath = path.join(sceRoot, 'reports', 'takeover-baseline-latest.json');
|
|
350
458
|
|
|
351
459
|
const existingAdoption = await _readJsonSafe(adoptionPath, fileSystem);
|
|
@@ -354,6 +462,8 @@ async function applyTakeoverBaseline(projectPath = process.cwd(), options = {})
|
|
|
354
462
|
const existingSessionGovernance = await _readJsonSafe(sessionGovernancePath, fileSystem);
|
|
355
463
|
const existingSpecDomainPolicy = await _readJsonSafe(specDomainPolicyPath, fileSystem);
|
|
356
464
|
const existingProblemEvalPolicy = await _readJsonSafe(problemEvalPolicyPath, fileSystem);
|
|
465
|
+
const existingProblemClosurePolicy = await _readJsonSafe(problemClosurePolicyPath, fileSystem);
|
|
466
|
+
const existingStudioIntakePolicy = await _readJsonSafe(studioIntakePolicyPath, fileSystem);
|
|
357
467
|
|
|
358
468
|
const desiredAdoption = _buildAdoptionConfig(existingAdoption, nowIso, sceVersion);
|
|
359
469
|
const desiredAutoConfig = _buildAutoConfig(existingAuto);
|
|
@@ -361,6 +471,8 @@ async function applyTakeoverBaseline(projectPath = process.cwd(), options = {})
|
|
|
361
471
|
const desiredSessionGovernance = _deepMerge(existingSessionGovernance || {}, SESSION_GOVERNANCE_DEFAULTS);
|
|
362
472
|
const desiredSpecDomainPolicy = _deepMerge(existingSpecDomainPolicy || {}, SPEC_DOMAIN_POLICY_DEFAULTS);
|
|
363
473
|
const desiredProblemEvalPolicy = _deepMerge(existingProblemEvalPolicy || {}, PROBLEM_EVAL_POLICY_DEFAULTS);
|
|
474
|
+
const desiredProblemClosurePolicy = _deepMerge(existingProblemClosurePolicy || {}, PROBLEM_CLOSURE_POLICY_DEFAULTS);
|
|
475
|
+
const desiredStudioIntakePolicy = _deepMerge(existingStudioIntakePolicy || {}, STUDIO_INTAKE_POLICY_DEFAULTS);
|
|
364
476
|
|
|
365
477
|
const fileResults = [];
|
|
366
478
|
fileResults.push(await _reconcileJsonFile(adoptionPath, desiredAdoption, {
|
|
@@ -393,6 +505,16 @@ async function applyTakeoverBaseline(projectPath = process.cwd(), options = {})
|
|
|
393
505
|
apply,
|
|
394
506
|
fileSystem
|
|
395
507
|
}));
|
|
508
|
+
fileResults.push(await _reconcileJsonFile(problemClosurePolicyPath, desiredProblemClosurePolicy, {
|
|
509
|
+
projectPath,
|
|
510
|
+
apply,
|
|
511
|
+
fileSystem
|
|
512
|
+
}));
|
|
513
|
+
fileResults.push(await _reconcileJsonFile(studioIntakePolicyPath, desiredStudioIntakePolicy, {
|
|
514
|
+
projectPath,
|
|
515
|
+
apply,
|
|
516
|
+
fileSystem
|
|
517
|
+
}));
|
|
396
518
|
fileResults.push(await _reconcileSteeringContract(projectPath, {
|
|
397
519
|
apply,
|
|
398
520
|
fileSystem
|
|
@@ -441,6 +563,8 @@ module.exports = {
|
|
|
441
563
|
TAKEOVER_DEFAULTS,
|
|
442
564
|
SESSION_GOVERNANCE_DEFAULTS,
|
|
443
565
|
SPEC_DOMAIN_POLICY_DEFAULTS,
|
|
566
|
+
PROBLEM_CLOSURE_POLICY_DEFAULTS,
|
|
444
567
|
PROBLEM_EVAL_POLICY_DEFAULTS,
|
|
568
|
+
STUDIO_INTAKE_POLICY_DEFAULTS,
|
|
445
569
|
applyTakeoverBaseline
|
|
446
570
|
};
|
package/package.json
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0",
|
|
3
|
+
"enabled": true,
|
|
4
|
+
"governance_report_path": ".sce/reports/interactive-governance-report.json",
|
|
5
|
+
"verify": {
|
|
6
|
+
"require_problem_contract": true,
|
|
7
|
+
"require_domain_validation": true,
|
|
8
|
+
"require_domain_coverage": true
|
|
9
|
+
},
|
|
10
|
+
"release": {
|
|
11
|
+
"require_problem_contract": true,
|
|
12
|
+
"require_domain_validation": true,
|
|
13
|
+
"require_domain_coverage": true,
|
|
14
|
+
"require_verify_report": true,
|
|
15
|
+
"require_governance_report": false,
|
|
16
|
+
"block_on_high_governance_alerts": true
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -32,5 +32,47 @@
|
|
|
32
32
|
"compliance",
|
|
33
33
|
"data-loss"
|
|
34
34
|
],
|
|
35
|
-
"recommendation_limit": 6
|
|
35
|
+
"recommendation_limit": 6,
|
|
36
|
+
"max_failed_rounds_before_debug": 2,
|
|
37
|
+
"problem_contract_required_stages": [
|
|
38
|
+
"plan",
|
|
39
|
+
"generate",
|
|
40
|
+
"apply",
|
|
41
|
+
"verify",
|
|
42
|
+
"release"
|
|
43
|
+
],
|
|
44
|
+
"problem_contract_block_stages": [
|
|
45
|
+
"plan",
|
|
46
|
+
"apply",
|
|
47
|
+
"release"
|
|
48
|
+
],
|
|
49
|
+
"ontology_alignment_required_stages": [
|
|
50
|
+
"plan",
|
|
51
|
+
"generate",
|
|
52
|
+
"apply",
|
|
53
|
+
"verify",
|
|
54
|
+
"release"
|
|
55
|
+
],
|
|
56
|
+
"ontology_alignment_block_stages": [
|
|
57
|
+
"apply",
|
|
58
|
+
"release"
|
|
59
|
+
],
|
|
60
|
+
"ontology_required_axes": [
|
|
61
|
+
"entity",
|
|
62
|
+
"relation",
|
|
63
|
+
"business_rule",
|
|
64
|
+
"decision_policy",
|
|
65
|
+
"execution_flow"
|
|
66
|
+
],
|
|
67
|
+
"require_ontology_evidence_binding": true,
|
|
68
|
+
"ontology_evidence_min_bindings": 1,
|
|
69
|
+
"convergence_required_stages": [
|
|
70
|
+
"verify",
|
|
71
|
+
"release"
|
|
72
|
+
],
|
|
73
|
+
"convergence_block_stages": [
|
|
74
|
+
"release"
|
|
75
|
+
],
|
|
76
|
+
"release_block_on_high_alerts": true,
|
|
77
|
+
"release_require_governance_report": false
|
|
36
78
|
}
|
|
@@ -2,5 +2,13 @@
|
|
|
2
2
|
"schema_version": "1.0",
|
|
3
3
|
"closed_loop_research_required": true,
|
|
4
4
|
"coverage_validation_required": true,
|
|
5
|
-
"fail_on_gap_default": true
|
|
5
|
+
"fail_on_gap_default": true,
|
|
6
|
+
"problem_contract_required": true,
|
|
7
|
+
"ontology_axes_required": [
|
|
8
|
+
"entity",
|
|
9
|
+
"relation",
|
|
10
|
+
"business_rule",
|
|
11
|
+
"decision_policy",
|
|
12
|
+
"execution_flow"
|
|
13
|
+
]
|
|
6
14
|
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0",
|
|
3
|
+
"enabled": true,
|
|
4
|
+
"auto_create_spec": true,
|
|
5
|
+
"force_spec_for_studio_plan": true,
|
|
6
|
+
"prefer_existing_scene_spec": true,
|
|
7
|
+
"related_spec_min_score": 45,
|
|
8
|
+
"allow_new_spec_when_goal_diverges": true,
|
|
9
|
+
"divergence_similarity_threshold": 0.2,
|
|
10
|
+
"goal_missing_strategy": "create_for_tracking",
|
|
11
|
+
"question_only_patterns": [
|
|
12
|
+
"how",
|
|
13
|
+
"what",
|
|
14
|
+
"why",
|
|
15
|
+
"when",
|
|
16
|
+
"where",
|
|
17
|
+
"which",
|
|
18
|
+
"can",
|
|
19
|
+
"could",
|
|
20
|
+
"should",
|
|
21
|
+
"would",
|
|
22
|
+
"是否",
|
|
23
|
+
"怎么",
|
|
24
|
+
"如何",
|
|
25
|
+
"为什么",
|
|
26
|
+
"吗",
|
|
27
|
+
"么"
|
|
28
|
+
],
|
|
29
|
+
"change_intent_patterns": [
|
|
30
|
+
"implement",
|
|
31
|
+
"build",
|
|
32
|
+
"create",
|
|
33
|
+
"add",
|
|
34
|
+
"update",
|
|
35
|
+
"upgrade",
|
|
36
|
+
"refactor",
|
|
37
|
+
"fix",
|
|
38
|
+
"stabilize",
|
|
39
|
+
"optimize",
|
|
40
|
+
"deliver",
|
|
41
|
+
"release",
|
|
42
|
+
"bootstrap",
|
|
43
|
+
"repair",
|
|
44
|
+
"patch",
|
|
45
|
+
"新增",
|
|
46
|
+
"增加",
|
|
47
|
+
"实现",
|
|
48
|
+
"构建",
|
|
49
|
+
"开发",
|
|
50
|
+
"修复",
|
|
51
|
+
"优化",
|
|
52
|
+
"重构",
|
|
53
|
+
"发布",
|
|
54
|
+
"改造",
|
|
55
|
+
"完善",
|
|
56
|
+
"增强"
|
|
57
|
+
],
|
|
58
|
+
"spec_id": {
|
|
59
|
+
"prefix": "auto",
|
|
60
|
+
"max_goal_slug_tokens": 6
|
|
61
|
+
},
|
|
62
|
+
"governance": {
|
|
63
|
+
"auto_run_on_plan": true,
|
|
64
|
+
"max_active_specs_per_scene": 3,
|
|
65
|
+
"stale_days": 14,
|
|
66
|
+
"duplicate_similarity_threshold": 0.66
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -18,7 +18,94 @@
|
|
|
18
18
|
"spec_domain_policy": {
|
|
19
19
|
"closed_loop_research_required": true,
|
|
20
20
|
"coverage_validation_required": true,
|
|
21
|
-
"fail_on_gap_default": true
|
|
21
|
+
"fail_on_gap_default": true,
|
|
22
|
+
"problem_contract_required": true,
|
|
23
|
+
"ontology_axes_required": [
|
|
24
|
+
"entity",
|
|
25
|
+
"relation",
|
|
26
|
+
"business_rule",
|
|
27
|
+
"decision_policy",
|
|
28
|
+
"execution_flow"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"problem_evaluation": {
|
|
32
|
+
"enabled": true,
|
|
33
|
+
"mode": "required",
|
|
34
|
+
"enforce_on_stages": [
|
|
35
|
+
"plan",
|
|
36
|
+
"generate",
|
|
37
|
+
"apply",
|
|
38
|
+
"verify",
|
|
39
|
+
"release"
|
|
40
|
+
],
|
|
41
|
+
"block_on_stages": [
|
|
42
|
+
"apply",
|
|
43
|
+
"release"
|
|
44
|
+
],
|
|
45
|
+
"problem_contract_required_stages": [
|
|
46
|
+
"plan",
|
|
47
|
+
"generate",
|
|
48
|
+
"apply",
|
|
49
|
+
"verify",
|
|
50
|
+
"release"
|
|
51
|
+
],
|
|
52
|
+
"problem_contract_block_stages": [
|
|
53
|
+
"plan",
|
|
54
|
+
"apply",
|
|
55
|
+
"release"
|
|
56
|
+
],
|
|
57
|
+
"ontology_alignment_required_stages": [
|
|
58
|
+
"plan",
|
|
59
|
+
"generate",
|
|
60
|
+
"apply",
|
|
61
|
+
"verify",
|
|
62
|
+
"release"
|
|
63
|
+
],
|
|
64
|
+
"ontology_alignment_block_stages": [
|
|
65
|
+
"apply",
|
|
66
|
+
"release"
|
|
67
|
+
],
|
|
68
|
+
"convergence_required_stages": [
|
|
69
|
+
"verify",
|
|
70
|
+
"release"
|
|
71
|
+
],
|
|
72
|
+
"convergence_block_stages": [
|
|
73
|
+
"release"
|
|
74
|
+
],
|
|
75
|
+
"max_failed_rounds_before_debug": 2
|
|
76
|
+
},
|
|
77
|
+
"problem_closure": {
|
|
78
|
+
"enabled": true,
|
|
79
|
+
"governance_report_path": ".sce/reports/interactive-governance-report.json",
|
|
80
|
+
"verify": {
|
|
81
|
+
"require_problem_contract": true,
|
|
82
|
+
"require_domain_validation": true,
|
|
83
|
+
"require_domain_coverage": true
|
|
84
|
+
},
|
|
85
|
+
"release": {
|
|
86
|
+
"require_problem_contract": true,
|
|
87
|
+
"require_domain_validation": true,
|
|
88
|
+
"require_domain_coverage": true,
|
|
89
|
+
"require_verify_report": true,
|
|
90
|
+
"require_governance_report": false,
|
|
91
|
+
"block_on_high_governance_alerts": true
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"studio_intake": {
|
|
95
|
+
"enabled": true,
|
|
96
|
+
"auto_create_spec": true,
|
|
97
|
+
"force_spec_for_studio_plan": true,
|
|
98
|
+
"prefer_existing_scene_spec": true,
|
|
99
|
+
"related_spec_min_score": 45,
|
|
100
|
+
"allow_new_spec_when_goal_diverges": true,
|
|
101
|
+
"divergence_similarity_threshold": 0.2,
|
|
102
|
+
"goal_missing_strategy": "create_for_tracking",
|
|
103
|
+
"governance": {
|
|
104
|
+
"auto_run_on_plan": true,
|
|
105
|
+
"max_active_specs_per_scene": 3,
|
|
106
|
+
"stale_days": 14,
|
|
107
|
+
"duplicate_similarity_threshold": 0.66
|
|
108
|
+
}
|
|
22
109
|
},
|
|
23
110
|
"debug_policy": {
|
|
24
111
|
"prioritize_root_cause_fix": true,
|
|
@@ -211,10 +211,12 @@
|
|
|
211
211
|
- `.sce/specs/<spec>/custom/problem-domain-map.md`
|
|
212
212
|
- `.sce/specs/<spec>/custom/scene-spec.md`
|
|
213
213
|
- `.sce/specs/<spec>/custom/problem-domain-chain.json`
|
|
214
|
+
- `.sce/specs/<spec>/custom/problem-contract.json`
|
|
214
215
|
2) `problem-domain-map` 必须包含:Root Problem、Mind Map、Layered Exploration Chain、Correction Loop
|
|
215
216
|
3) `scene-spec` 必须包含:Scene Definition、Ontology Coverage、Decision & Execution Path、Acceptance & Gate
|
|
216
|
-
4) `problem-domain-chain.json` 必须包含可机读思维链:problem/ontology/hypotheses/risks/decision_execution_path/correction_loop/verification
|
|
217
|
-
5)
|
|
217
|
+
4) `problem-domain-chain.json` 必须包含可机读思维链:problem/ontology/hypotheses/risks/decision_execution_path/correction_loop/verification/problem_contract/ontology_evidence
|
|
218
|
+
5) `problem-contract.json` 必须包含:issue_statement、expected_outcome、reproduction_steps、impact_scope、forbidden_workarounds
|
|
219
|
+
6) 默认门禁强制校验上述结构,缺失即 `no-go`(`problem-closure-gate` 在 verify/release 默认启用)
|
|
218
220
|
|
|
219
221
|
**目标**: 用全局问题域视角 + 场景契约约束,减少方向性错误与盲改,提升纠偏效率
|
|
220
222
|
|