scene-capability-engine 3.0.1 → 3.0.2
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 +233 -233
- package/LICENSE +2 -2
- package/README.md +8 -11
- package/README.zh.md +7 -10
- package/bin/kse.js +1 -1
- package/bin/sce.js +1 -1
- package/bin/sco.js +1 -1
- package/docs/331-poc-adaptation-roadmap.md +25 -25
- package/docs/331-poc-dual-track-integration-guide.md +26 -26
- package/docs/331-poc-weekly-delivery-checklist.md +8 -8
- package/docs/OFFLINE_INSTALL.md +10 -10
- package/docs/README.md +24 -24
- package/docs/adopt-migration-guide.md +51 -51
- package/docs/adoption-guide.md +56 -56
- package/docs/agent-hooks-analysis.md +52 -52
- package/docs/architecture.md +6 -6
- package/docs/articles/ai-driven-development-philosophy-and-practice-review.md +4 -4
- package/docs/articles/ai-driven-development-philosophy-and-practice.en.md +9 -9
- package/docs/articles/ai-driven-development-philosophy-and-practice.md +10 -10
- package/docs/autonomous-control-guide.md +89 -89
- package/docs/command-reference.md +11 -11
- package/docs/community.md +4 -4
- package/docs/cross-tool-guide.md +47 -47
- package/docs/developer-guide.md +5 -5
- package/docs/document-governance.md +91 -91
- package/docs/environment-management-guide.md +53 -53
- package/docs/examples/add-export-command/design.md +2 -2
- package/docs/examples/add-export-command/requirements.md +5 -5
- package/docs/examples/add-export-command/tasks.md +2 -2
- package/docs/faq.md +69 -69
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.json +9 -9
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.md +3 -3
- package/docs/integration-modes.md +60 -60
- package/docs/integration-philosophy.md +48 -48
- package/docs/knowledge-management-guide.md +21 -21
- package/docs/manual-workflows-guide.md +20 -20
- package/docs/moqui-capability-matrix.md +22 -22
- package/docs/moqui-template-core-library-playbook.md +20 -20
- package/docs/multi-agent-coordination-guide.md +19 -19
- package/docs/multi-repo-management-guide.md +93 -93
- package/docs/quick-start-with-ai-tools.md +36 -36
- package/docs/quick-start.md +16 -16
- package/docs/release-checklist.md +7 -7
- package/docs/releases/v1.46.2-validation.md +1 -1
- package/docs/releases/v1.46.2.md +10 -10
- package/docs/scene-runtime-guide.md +42 -42
- package/docs/spec-collaboration-guide.md +43 -43
- package/docs/spec-locking-guide.md +26 -26
- package/docs/spec-numbering-guide.md +6 -6
- package/docs/spec-workflow.md +25 -25
- package/docs/steering-strategy-guide.md +36 -36
- package/docs/team-collaboration-guide.md +23 -23
- package/docs/testing-strategy.md +2 -2
- package/docs/tools/claude-guide.md +26 -26
- package/docs/tools/cursor-guide.md +31 -31
- package/docs/tools/generic-guide.md +22 -22
- package/docs/tools/kiro-guide.md +43 -43
- package/docs/tools/vscode-guide.md +18 -18
- package/docs/tools/windsurf-guide.md +50 -50
- package/docs/troubleshooting.md +116 -116
- package/docs/upgrade-guide.md +49 -49
- package/docs/value-observability-guide.md +6 -6
- package/docs/zh/README.md +22 -22
- package/docs/zh/quick-start.md +34 -34
- package/docs/zh/release-checklist.md +6 -6
- package/docs/zh/releases/v1.46.2-validation.md +1 -1
- package/docs/zh/releases/v1.46.2.md +9 -9
- package/docs/zh/spec-numbering-guide.md +6 -6
- package/docs/zh/tools/claude-guide.md +14 -14
- package/docs/zh/tools/cursor-guide.md +18 -18
- package/docs/zh/tools/generic-guide.md +40 -40
- package/docs/zh/tools/kiro-guide.md +50 -50
- package/docs/zh/tools/vscode-guide.md +20 -20
- package/docs/zh/tools/windsurf-guide.md +49 -49
- package/docs/zh/value-observability-guide.md +6 -6
- package/docs//344/272/244/344/273/230/346/270/205/345/215/225.md +4 -4
- package/lib/adoption/adoption-logger.js +1 -1
- package/lib/adoption/adoption-strategy.js +3 -3
- package/lib/adoption/detection-engine.js +1 -1
- package/lib/adoption/error-formatter.js +17 -17
- package/lib/adoption/progress-reporter.js +2 -2
- package/lib/adoption/smart-orchestrator.js +2 -2
- package/lib/adoption/strategy-selector.js +2 -2
- package/lib/adoption/summary-generator.js +3 -3
- package/lib/auto/autonomous-engine.js +2 -2
- package/lib/auto/close-loop-runner.js +9 -9
- package/lib/backup/backup-system.js +2 -2
- package/lib/collab/collab-manager.js +2 -2
- package/lib/commands/adopt.js +16 -16
- package/lib/commands/auto.js +93 -93
- package/lib/commands/collab.js +8 -8
- package/lib/commands/docs.js +26 -26
- package/lib/commands/doctor.js +2 -2
- package/lib/commands/env.js +14 -14
- package/lib/commands/knowledge.js +13 -13
- package/lib/commands/lock.js +6 -6
- package/lib/commands/ops.js +19 -19
- package/lib/commands/orchestrate.js +5 -5
- package/lib/commands/prompt.js +3 -3
- package/lib/commands/rollback.js +4 -4
- package/lib/commands/scene.js +29 -29
- package/lib/commands/spec-bootstrap.js +1 -1
- package/lib/commands/spec-gate.js +1 -1
- package/lib/commands/spec-pipeline.js +1 -1
- package/lib/commands/task.js +1 -1
- package/lib/commands/templates.js +27 -27
- package/lib/commands/upgrade.js +8 -8
- package/lib/commands/value.js +4 -4
- package/lib/commands/watch.js +9 -9
- package/lib/commands/workflows.js +5 -5
- package/lib/commands/workspace-multi.js +17 -17
- package/lib/commands/workspace.js +5 -5
- package/lib/context/context-exporter.js +1 -1
- package/lib/context/prompt-generator.js +1 -1
- package/lib/data/moqui-capability-lexicon.json +1 -1
- package/lib/environment/environment-manager.js +1 -1
- package/lib/gitignore/gitignore-detector.js +4 -4
- package/lib/gitignore/gitignore-integration.js +2 -2
- package/lib/gitignore/gitignore-transformer.js +3 -3
- package/lib/gitignore/layered-rules-template.js +2 -2
- package/lib/governance/diagnostic-engine.js +4 -4
- package/lib/governance/doc-reference-checker.js +1 -1
- package/lib/governance/hooks-manager.js +5 -5
- package/lib/governance/reporter.js +1 -1
- package/lib/knowledge/knowledge-manager.js +6 -6
- package/lib/orchestrator/agent-spawner.js +1 -1
- package/lib/orchestrator/bootstrap-prompt-builder.js +2 -2
- package/lib/repo/config-manager.js +2 -2
- package/lib/repo/handlers/init-handler.js +3 -3
- package/lib/scene-runtime/audit-emitter.js +2 -2
- package/lib/scene-runtime/binding-plugin-loader.js +1 -1
- package/lib/scene-runtime/moqui-adapter.js +2 -2
- package/lib/scene-runtime/moqui-extractor.js +3 -3
- package/lib/scene-runtime/scene-loader.js +3 -3
- package/lib/scene-runtime/scene-template-linter.js +1 -1
- package/lib/scene-runtime/templates/scene-template-erp-query-v0.1.yaml +1 -1
- package/lib/scene-runtime/templates/scene-template-hybrid-shadow-v0.1.yaml +1 -1
- package/lib/spec/multi-spec-orchestrate.js +1 -1
- package/lib/spec-gate/rules/default-rules.js +1 -1
- package/lib/steering/adoption-config.js +1 -1
- package/lib/steering/compliance-auto-fixer.js +1 -1
- package/lib/steering/compliance-cache.js +3 -3
- package/lib/steering/compliance-error-reporter.js +1 -1
- package/lib/steering/index.js +1 -1
- package/lib/steering/steering-manager.js +7 -7
- package/lib/task/task-claimer.js +2 -1
- package/lib/templates/metadata-collector.js +6 -6
- package/lib/templates/template-creator.js +2 -2
- package/lib/templates/template-exporter.js +12 -12
- package/lib/upgrade/migration-engine.js +4 -4
- package/lib/utils/tool-detector.js +25 -25
- package/lib/utils/validation.js +3 -3
- package/lib/version/version-checker.js +13 -13
- package/lib/version/version-manager.js +7 -7
- package/lib/watch/presets.js +4 -4
- package/lib/workspace/multi/path-utils.js +1 -1
- package/lib/workspace/multi/workspace-context-resolver.js +9 -9
- package/lib/workspace/multi/workspace-registry.js +2 -2
- package/lib/workspace/multi/workspace-state-manager.js +1 -1
- package/lib/workspace/multi/workspace.js +1 -1
- package/lib/workspace/workspace-sync.js +1 -1
- package/locales/en.json +1 -1
- package/locales/zh.json +1 -1
- package/package.json +3 -5
- package/template/.kiro/README.md +40 -40
- package/template/.kiro/specs/SPEC_WORKFLOW_GUIDE.md +3 -3
- package/template/.kiro/steering/CORE_PRINCIPLES.md +3 -3
- package/template/.kiro/steering/ENVIRONMENT.md +2 -2
- package/template/README.md +3 -3
- /package/bin/{kiro-spec-engine.js → scene-capability-engine.js} +0 -0
package/lib/commands/auto.js
CHANGED
|
@@ -27,7 +27,7 @@ const AUTO_HANDOFF_SCENE_PACKAGE_BATCH_TASK_QUEUE_FILE = '.kiro/auto/ontology-re
|
|
|
27
27
|
const AUTO_HANDOFF_MOQUI_CAPABILITY_COVERAGE_JSON_FILE = '.kiro/reports/release-evidence/moqui-capability-coverage.json';
|
|
28
28
|
const AUTO_HANDOFF_MOQUI_CAPABILITY_COVERAGE_MARKDOWN_FILE = '.kiro/reports/release-evidence/moqui-capability-coverage.md';
|
|
29
29
|
const AUTO_HANDOFF_MOQUI_REMEDIATION_QUEUE_FILE = '.kiro/auto/moqui-remediation.lines';
|
|
30
|
-
const AUTO_HANDOFF_CLI_SCRIPT_FILE = path.resolve(__dirname, '..', '..', 'bin', '
|
|
30
|
+
const AUTO_HANDOFF_CLI_SCRIPT_FILE = path.resolve(__dirname, '..', '..', 'bin', 'scene-capability-engine.js');
|
|
31
31
|
const MOQUI_CAPABILITY_LEXICON_INDEX = buildMoquiCapabilityLexiconIndex(MOQUI_CAPABILITY_LEXICON);
|
|
32
32
|
|
|
33
33
|
/**
|
|
@@ -39,7 +39,7 @@ function registerAutoCommands(program) {
|
|
|
39
39
|
.command('auto')
|
|
40
40
|
.description('Autonomous execution control');
|
|
41
41
|
|
|
42
|
-
//
|
|
42
|
+
// sce auto run
|
|
43
43
|
auto
|
|
44
44
|
.command('run <spec-name>')
|
|
45
45
|
.description('Run Spec autonomously')
|
|
@@ -67,7 +67,7 @@ function registerAutoCommands(program) {
|
|
|
67
67
|
}
|
|
68
68
|
});
|
|
69
69
|
|
|
70
|
-
//
|
|
70
|
+
// sce auto create
|
|
71
71
|
auto
|
|
72
72
|
.command('create <feature-description>')
|
|
73
73
|
.description('Create and run Spec autonomously')
|
|
@@ -101,7 +101,7 @@ function registerAutoCommands(program) {
|
|
|
101
101
|
}
|
|
102
102
|
});
|
|
103
103
|
|
|
104
|
-
//
|
|
104
|
+
// sce auto status
|
|
105
105
|
auto
|
|
106
106
|
.command('status [spec-name]')
|
|
107
107
|
.description('Show autonomous execution status')
|
|
@@ -133,7 +133,7 @@ function registerAutoCommands(program) {
|
|
|
133
133
|
}
|
|
134
134
|
});
|
|
135
135
|
|
|
136
|
-
//
|
|
136
|
+
// sce auto resume
|
|
137
137
|
auto
|
|
138
138
|
.command('resume [spec-name]')
|
|
139
139
|
.description('Resume paused execution')
|
|
@@ -160,7 +160,7 @@ function registerAutoCommands(program) {
|
|
|
160
160
|
}
|
|
161
161
|
});
|
|
162
162
|
|
|
163
|
-
//
|
|
163
|
+
// sce auto stop
|
|
164
164
|
auto
|
|
165
165
|
.command('stop <spec-name>')
|
|
166
166
|
.description('Stop autonomous execution')
|
|
@@ -180,7 +180,7 @@ function registerAutoCommands(program) {
|
|
|
180
180
|
}
|
|
181
181
|
});
|
|
182
182
|
|
|
183
|
-
//
|
|
183
|
+
// sce auto config
|
|
184
184
|
auto
|
|
185
185
|
.command('config')
|
|
186
186
|
.description('Show/edit autonomous configuration')
|
|
@@ -246,7 +246,7 @@ function registerAutoCommands(program) {
|
|
|
246
246
|
return runAutoCloseLoop(normalizedGoal, effectiveOptions);
|
|
247
247
|
};
|
|
248
248
|
|
|
249
|
-
//
|
|
249
|
+
// sce auto close-loop
|
|
250
250
|
applyCloseLoopOptions(
|
|
251
251
|
auto
|
|
252
252
|
.command('close-loop [goal]')
|
|
@@ -269,7 +269,7 @@ function registerAutoCommands(program) {
|
|
|
269
269
|
}
|
|
270
270
|
});
|
|
271
271
|
|
|
272
|
-
//
|
|
272
|
+
// sce auto continue
|
|
273
273
|
applyCloseLoopOptions(
|
|
274
274
|
auto
|
|
275
275
|
.command('continue')
|
|
@@ -294,7 +294,7 @@ function registerAutoCommands(program) {
|
|
|
294
294
|
}
|
|
295
295
|
});
|
|
296
296
|
|
|
297
|
-
//
|
|
297
|
+
// sce auto close-loop-batch
|
|
298
298
|
applyCloseLoopOptions(
|
|
299
299
|
auto
|
|
300
300
|
.command('close-loop-batch [goals-file]')
|
|
@@ -443,7 +443,7 @@ function registerAutoCommands(program) {
|
|
|
443
443
|
}
|
|
444
444
|
});
|
|
445
445
|
|
|
446
|
-
//
|
|
446
|
+
// sce auto close-loop-program
|
|
447
447
|
applyCloseLoopOptions(
|
|
448
448
|
auto
|
|
449
449
|
.command('close-loop-program <goal>')
|
|
@@ -522,7 +522,7 @@ function registerAutoCommands(program) {
|
|
|
522
522
|
}
|
|
523
523
|
});
|
|
524
524
|
|
|
525
|
-
//
|
|
525
|
+
// sce auto close-loop-controller
|
|
526
526
|
auto
|
|
527
527
|
.command('close-loop-controller [queue-file]')
|
|
528
528
|
.description('Run a persistent autonomous controller that drains a goal queue via close-loop-program execution')
|
|
@@ -615,7 +615,7 @@ function registerAutoCommands(program) {
|
|
|
615
615
|
}
|
|
616
616
|
});
|
|
617
617
|
|
|
618
|
-
//
|
|
618
|
+
// sce auto close-loop-recover
|
|
619
619
|
applyCloseLoopOptions(
|
|
620
620
|
auto
|
|
621
621
|
.command('close-loop-recover [summary]')
|
|
@@ -1048,7 +1048,7 @@ function registerAutoCommands(program) {
|
|
|
1048
1048
|
}
|
|
1049
1049
|
});
|
|
1050
1050
|
|
|
1051
|
-
//
|
|
1051
|
+
// sce auto session
|
|
1052
1052
|
const autoSession = auto
|
|
1053
1053
|
.command('session')
|
|
1054
1054
|
.description('Manage close-loop session snapshots');
|
|
@@ -1171,7 +1171,7 @@ function registerAutoCommands(program) {
|
|
|
1171
1171
|
}
|
|
1172
1172
|
});
|
|
1173
1173
|
|
|
1174
|
-
//
|
|
1174
|
+
// sce auto spec-session
|
|
1175
1175
|
const autoSpecSession = auto
|
|
1176
1176
|
.command('spec-session')
|
|
1177
1177
|
.description('Manage .kiro/specs directory retention and cleanup');
|
|
@@ -1426,7 +1426,7 @@ function registerAutoCommands(program) {
|
|
|
1426
1426
|
|
|
1427
1427
|
autoHandoff
|
|
1428
1428
|
.command('plan')
|
|
1429
|
-
.description('Build an executable
|
|
1429
|
+
.description('Build an executable sce integration plan from a handoff manifest JSON')
|
|
1430
1430
|
.requiredOption('--manifest <path>', 'Path to handoff-manifest.json')
|
|
1431
1431
|
.option('--out <path>', 'Write generated integration plan JSON to file')
|
|
1432
1432
|
.option('--strict', 'Fail when manifest validation contains errors')
|
|
@@ -5192,7 +5192,7 @@ async function executeCloseLoopBatch(goalsResult, options, projectPath, mode = '
|
|
|
5192
5192
|
if (specSessionBudget && specSessionBudget.hard_fail && specSessionBudget.over_limit_before) {
|
|
5193
5193
|
throw new Error(
|
|
5194
5194
|
`Spec session budget exceeded before run: ${specSessionBudget.total_before} > ${specSessionBudget.max_total}. ` +
|
|
5195
|
-
'Run "
|
|
5195
|
+
'Run "sce auto spec-session prune ..." or raise --spec-session-max-total.'
|
|
5196
5196
|
);
|
|
5197
5197
|
}
|
|
5198
5198
|
const batchAutonomousPolicy = resolveBatchAutonomousPolicy(options, goalsResult.goals.length);
|
|
@@ -7168,8 +7168,8 @@ function buildAutoHandoffPhaseCommands(projectPath, manifestPath, specs = []) {
|
|
|
7168
7168
|
title: 'Precheck',
|
|
7169
7169
|
goal: 'Validate handoff manifest integrity and repository readiness',
|
|
7170
7170
|
commands: [
|
|
7171
|
-
`
|
|
7172
|
-
'
|
|
7171
|
+
`sce auto handoff plan --manifest ${manifestCli} --json`,
|
|
7172
|
+
'sce auto governance stats --json'
|
|
7173
7173
|
]
|
|
7174
7174
|
});
|
|
7175
7175
|
|
|
@@ -7177,10 +7177,10 @@ function buildAutoHandoffPhaseCommands(projectPath, manifestPath, specs = []) {
|
|
|
7177
7177
|
for (const specName of specs) {
|
|
7178
7178
|
const specArg = quoteCliArg(specName);
|
|
7179
7179
|
const specPackagePath = quoteCliArg(`.kiro/specs/${specName}/custom`);
|
|
7180
|
-
specCommands.push(`
|
|
7181
|
-
specCommands.push(`
|
|
7182
|
-
specCommands.push(`
|
|
7183
|
-
specCommands.push(`
|
|
7180
|
+
specCommands.push(`sce auto spec status ${specArg} --json`);
|
|
7181
|
+
specCommands.push(`sce auto spec instructions ${specArg} --json`);
|
|
7182
|
+
specCommands.push(`sce scene package-validate --spec ${specArg} --spec-package custom/scene-package.json --strict --json`);
|
|
7183
|
+
specCommands.push(`sce scene ontology validate --package ${specPackagePath} --json`);
|
|
7184
7184
|
}
|
|
7185
7185
|
phases.push({
|
|
7186
7186
|
id: 'spec-validation',
|
|
@@ -7195,8 +7195,8 @@ function buildAutoHandoffPhaseCommands(projectPath, manifestPath, specs = []) {
|
|
|
7195
7195
|
title: 'Autonomous Execution',
|
|
7196
7196
|
goal: 'Generate queue goals and run autonomous close-loop batch integration',
|
|
7197
7197
|
commands: [
|
|
7198
|
-
`
|
|
7199
|
-
`
|
|
7198
|
+
`sce auto handoff queue --manifest ${manifestCli} --out ${queueCli} --json`,
|
|
7199
|
+
`sce auto close-loop-batch ${queueCli} --format lines --json`
|
|
7200
7200
|
]
|
|
7201
7201
|
});
|
|
7202
7202
|
|
|
@@ -7205,8 +7205,8 @@ function buildAutoHandoffPhaseCommands(projectPath, manifestPath, specs = []) {
|
|
|
7205
7205
|
title: 'Observability and Governance',
|
|
7206
7206
|
goal: 'Snapshot integration evidence and plan remaining governance actions',
|
|
7207
7207
|
commands: [
|
|
7208
|
-
'
|
|
7209
|
-
'
|
|
7208
|
+
'sce auto observability snapshot --json',
|
|
7209
|
+
'sce auto governance maintain --session-keep 50 --batch-session-keep 50 --controller-session-keep 50 --json'
|
|
7210
7210
|
]
|
|
7211
7211
|
});
|
|
7212
7212
|
|
|
@@ -7253,8 +7253,8 @@ async function buildAutoHandoffPlan(projectPath, options = {}) {
|
|
|
7253
7253
|
},
|
|
7254
7254
|
phases,
|
|
7255
7255
|
recommendations: [
|
|
7256
|
-
`
|
|
7257
|
-
`
|
|
7256
|
+
`sce auto handoff queue --manifest ${quoteCliArg(handoff.manifest_file)} --out ${quoteCliArg(AUTO_HANDOFF_DEFAULT_QUEUE_FILE)} --json`,
|
|
7257
|
+
`sce auto close-loop-batch ${quoteCliArg(AUTO_HANDOFF_DEFAULT_QUEUE_FILE)} --format lines --json`
|
|
7258
7258
|
]
|
|
7259
7259
|
};
|
|
7260
7260
|
}
|
|
@@ -7317,7 +7317,7 @@ async function buildAutoHandoffQueue(projectPath, options = {}) {
|
|
|
7317
7317
|
warnings: handoff.validation.warnings
|
|
7318
7318
|
},
|
|
7319
7319
|
recommendations: [
|
|
7320
|
-
`
|
|
7320
|
+
`sce auto close-loop-batch ${quoteCliArg(options.out || AUTO_HANDOFF_DEFAULT_QUEUE_FILE)} --format lines --json`
|
|
7321
7321
|
]
|
|
7322
7322
|
};
|
|
7323
7323
|
}
|
|
@@ -7470,7 +7470,7 @@ async function buildAutoHandoffTemplateDiff(projectPath, options = {}) {
|
|
|
7470
7470
|
? []
|
|
7471
7471
|
: [
|
|
7472
7472
|
'sync missing templates from handoff source into .kiro/templates/exports or scene-packages registry',
|
|
7473
|
-
're-run `
|
|
7473
|
+
're-run `sce auto handoff template-diff --manifest <path> --json` after sync'
|
|
7474
7474
|
]
|
|
7475
7475
|
};
|
|
7476
7476
|
}
|
|
@@ -8436,18 +8436,18 @@ function buildAutoHandoffRegressionRecommendations(payload = {}) {
|
|
|
8436
8436
|
|
|
8437
8437
|
if (trend === 'degraded' || windowTrend === 'degraded') {
|
|
8438
8438
|
push(
|
|
8439
|
-
`
|
|
8439
|
+
`sce auto handoff run --manifest <path> --continue-from ${quoteCliArg(current.session_id || 'latest')} ` +
|
|
8440
8440
|
'--continue-strategy pending --json'
|
|
8441
8441
|
);
|
|
8442
8442
|
} else if (Number.isFinite(currentFailed) && currentFailed > 0) {
|
|
8443
8443
|
push(
|
|
8444
|
-
`
|
|
8444
|
+
`sce auto handoff run --manifest <path> --continue-from ${quoteCliArg(current.session_id || 'latest')} ` +
|
|
8445
8445
|
'--continue-strategy failed-only --json'
|
|
8446
8446
|
);
|
|
8447
8447
|
}
|
|
8448
8448
|
|
|
8449
8449
|
if (currentRisk === 'high') {
|
|
8450
|
-
push('
|
|
8450
|
+
push('sce auto governance stats --days 14 --json');
|
|
8451
8451
|
}
|
|
8452
8452
|
|
|
8453
8453
|
if (Number.isFinite(ontologyQuality) && ontologyQuality < 80) {
|
|
@@ -8462,12 +8462,12 @@ function buildAutoHandoffRegressionRecommendations(payload = {}) {
|
|
|
8462
8462
|
if (sceneBatchPassed === false || (Number.isFinite(sceneBatchFailureCount) && sceneBatchFailureCount > 0)) {
|
|
8463
8463
|
push(
|
|
8464
8464
|
'Resolve scene package publish-batch gate failures and rerun: ' +
|
|
8465
|
-
'`
|
|
8465
|
+
'`sce scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json --dry-run --json`.'
|
|
8466
8466
|
);
|
|
8467
8467
|
}
|
|
8468
8468
|
|
|
8469
8469
|
if ((payload.window && Number(payload.window.actual) > 0) && (payload.window.requested !== payload.window.actual)) {
|
|
8470
|
-
push('Increase regression coverage with `
|
|
8470
|
+
push('Increase regression coverage with `sce auto handoff regression --window 10 --json`.');
|
|
8471
8471
|
}
|
|
8472
8472
|
|
|
8473
8473
|
return recommendations;
|
|
@@ -11089,7 +11089,7 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
11089
11089
|
|
|
11090
11090
|
if (manifestPath && result.session_id && hasPendingOrFailed) {
|
|
11091
11091
|
push(
|
|
11092
|
-
`
|
|
11092
|
+
`sce auto handoff run --manifest ${manifestCli} ` +
|
|
11093
11093
|
`--continue-from ${quoteCliArg(result.session_id)} --continue-strategy auto --json`
|
|
11094
11094
|
);
|
|
11095
11095
|
}
|
|
@@ -11102,46 +11102,46 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
11102
11102
|
) {
|
|
11103
11103
|
push(
|
|
11104
11104
|
`Ensure manifest ontology_validation is present and passed, then rerun: ` +
|
|
11105
|
-
`
|
|
11105
|
+
`sce auto handoff run --manifest ${manifestCli} --json`
|
|
11106
11106
|
);
|
|
11107
11107
|
if (result.error.toLowerCase().includes('ontology_quality_score')) {
|
|
11108
|
-
push(`
|
|
11108
|
+
push(`sce auto handoff run --manifest ${manifestCli} --min-ontology-score 80 --json`);
|
|
11109
11109
|
}
|
|
11110
11110
|
if (result.error.toLowerCase().includes('business_rule_unmapped')) {
|
|
11111
|
-
push(`
|
|
11111
|
+
push(`sce auto handoff run --manifest ${manifestCli} --max-unmapped-rules 0 --json`);
|
|
11112
11112
|
}
|
|
11113
11113
|
if (result.error.toLowerCase().includes('decision_undecided')) {
|
|
11114
|
-
push(`
|
|
11114
|
+
push(`sce auto handoff run --manifest ${manifestCli} --max-undecided-decisions 0 --json`);
|
|
11115
11115
|
}
|
|
11116
11116
|
}
|
|
11117
11117
|
|
|
11118
11118
|
const gateActual = result && result.gates && result.gates.actual ? result.gates.actual : {};
|
|
11119
11119
|
const ontologyScore = Number(gateActual.ontology_quality_score);
|
|
11120
11120
|
if (manifestPath && Number.isFinite(ontologyScore) && ontologyScore < 80) {
|
|
11121
|
-
push(`
|
|
11121
|
+
push(`sce auto handoff run --manifest ${manifestCli} --min-ontology-score 80 --json`);
|
|
11122
11122
|
}
|
|
11123
11123
|
const unmappedRules = Number(gateActual.ontology_business_rule_unmapped);
|
|
11124
11124
|
if (manifestPath && Number.isFinite(unmappedRules) && unmappedRules > 0) {
|
|
11125
|
-
push(`
|
|
11125
|
+
push(`sce auto handoff run --manifest ${manifestCli} --max-unmapped-rules 0 --json`);
|
|
11126
11126
|
}
|
|
11127
11127
|
const undecidedDecisions = Number(gateActual.ontology_decision_undecided);
|
|
11128
11128
|
if (manifestPath && Number.isFinite(undecidedDecisions) && undecidedDecisions > 0) {
|
|
11129
|
-
push(`
|
|
11129
|
+
push(`sce auto handoff run --manifest ${manifestCli} --max-undecided-decisions 0 --json`);
|
|
11130
11130
|
}
|
|
11131
11131
|
|
|
11132
11132
|
if (result.template_diff && result.template_diff.compatibility === 'needs-sync' && manifestPath) {
|
|
11133
|
-
push(`
|
|
11133
|
+
push(`sce auto handoff template-diff --manifest ${manifestCli} --json`);
|
|
11134
11134
|
}
|
|
11135
11135
|
|
|
11136
11136
|
if (result.session_id) {
|
|
11137
|
-
push(`
|
|
11137
|
+
push(`sce auto handoff regression --session-id ${quoteCliArg(result.session_id)} --json`);
|
|
11138
11138
|
}
|
|
11139
11139
|
|
|
11140
11140
|
const releaseGatePreflight = result && result.release_gate_preflight && typeof result.release_gate_preflight === 'object'
|
|
11141
11141
|
? result.release_gate_preflight
|
|
11142
11142
|
: null;
|
|
11143
11143
|
if (releaseGatePreflight && releaseGatePreflight.blocked === true) {
|
|
11144
|
-
push('
|
|
11144
|
+
push('sce auto handoff evidence --window 5 --json');
|
|
11145
11145
|
if (
|
|
11146
11146
|
Array.isArray(releaseGatePreflight.reasons) &&
|
|
11147
11147
|
releaseGatePreflight.reasons.some(item => (
|
|
@@ -11149,7 +11149,7 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
11149
11149
|
))
|
|
11150
11150
|
) {
|
|
11151
11151
|
push(
|
|
11152
|
-
'
|
|
11152
|
+
'sce scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json ' +
|
|
11153
11153
|
'--dry-run --ontology-task-queue-out .kiro/auto/ontology-remediation.lines --json'
|
|
11154
11154
|
);
|
|
11155
11155
|
}
|
|
@@ -11160,7 +11160,7 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
11160
11160
|
releaseGatePreflight.file
|
|
11161
11161
|
) {
|
|
11162
11162
|
push(
|
|
11163
|
-
'
|
|
11163
|
+
'sce auto handoff gate-index ' +
|
|
11164
11164
|
'--dir .kiro/reports/release-evidence ' +
|
|
11165
11165
|
'--out .kiro/reports/release-evidence/release-gate-history.json --json'
|
|
11166
11166
|
);
|
|
@@ -11170,12 +11170,12 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
11170
11170
|
? result.gates.actual.risk_level.trim().toLowerCase()
|
|
11171
11171
|
: null;
|
|
11172
11172
|
if (riskLevel === 'high') {
|
|
11173
|
-
push('
|
|
11173
|
+
push('sce auto governance stats --days 14 --json');
|
|
11174
11174
|
}
|
|
11175
11175
|
|
|
11176
11176
|
if (result && result.remediation_queue && result.remediation_queue.file) {
|
|
11177
11177
|
push(
|
|
11178
|
-
`
|
|
11178
|
+
`sce auto close-loop-batch ${quoteCliArg(
|
|
11179
11179
|
toAutoHandoffCliPath(projectPath, result.remediation_queue.file)
|
|
11180
11180
|
)} --format lines --json`
|
|
11181
11181
|
);
|
|
@@ -11188,14 +11188,14 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
11188
11188
|
? moquiBaseline.summary
|
|
11189
11189
|
: null;
|
|
11190
11190
|
if (moquiBaseline && moquiBaseline.status === 'error') {
|
|
11191
|
-
push('
|
|
11191
|
+
push('sce scene moqui-baseline --json');
|
|
11192
11192
|
} else if (moquiSummary && moquiSummary.portfolio_passed === false) {
|
|
11193
11193
|
push(
|
|
11194
|
-
'
|
|
11194
|
+
'sce scene moqui-baseline --include-all ' +
|
|
11195
11195
|
'--compare-with .kiro/reports/release-evidence/moqui-template-baseline.json --json'
|
|
11196
11196
|
);
|
|
11197
11197
|
push(
|
|
11198
|
-
'
|
|
11198
|
+
'sce scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json ' +
|
|
11199
11199
|
'--dry-run --ontology-task-queue-out .kiro/auto/ontology-remediation.lines --json'
|
|
11200
11200
|
);
|
|
11201
11201
|
}
|
|
@@ -11209,7 +11209,7 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
11209
11209
|
['failed', 'error'].includes(`${scenePackageBatch.status}`.toLowerCase())
|
|
11210
11210
|
) {
|
|
11211
11211
|
push(
|
|
11212
|
-
`
|
|
11212
|
+
`sce scene package-publish-batch --manifest ${manifestCli} ` +
|
|
11213
11213
|
'--dry-run --ontology-task-queue-out .kiro/auto/ontology-remediation.lines --json'
|
|
11214
11214
|
);
|
|
11215
11215
|
}
|
|
@@ -11224,9 +11224,9 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
11224
11224
|
? capabilityCoverage.normalization
|
|
11225
11225
|
: null;
|
|
11226
11226
|
if (capabilityCoverage && capabilityCoverage.status === 'error') {
|
|
11227
|
-
push('declare manifest capabilities and rerun `
|
|
11227
|
+
push('declare manifest capabilities and rerun `sce auto handoff run` to rebuild capability coverage evidence');
|
|
11228
11228
|
} else if (capabilitySummary && capabilitySummary.passed === false) {
|
|
11229
|
-
push('complete uncovered moqui capabilities and rerun `
|
|
11229
|
+
push('complete uncovered moqui capabilities and rerun `sce auto handoff run --json`');
|
|
11230
11230
|
} else if (capabilityCoverage && capabilityCoverage.status === 'skipped') {
|
|
11231
11231
|
push('declare `capabilities` in handoff manifest to enable machine-checkable moqui capability coverage');
|
|
11232
11232
|
}
|
|
@@ -11235,7 +11235,7 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
11235
11235
|
Array.isArray(capabilityNormalization.expected_deprecated_aliases) &&
|
|
11236
11236
|
capabilityNormalization.expected_deprecated_aliases.length > 0
|
|
11237
11237
|
) {
|
|
11238
|
-
push('replace deprecated manifest capabilities with canonical Moqui capability ids and rerun `
|
|
11238
|
+
push('replace deprecated manifest capabilities with canonical Moqui capability ids and rerun `sce auto handoff run --json`');
|
|
11239
11239
|
}
|
|
11240
11240
|
|
|
11241
11241
|
return recommendations;
|
|
@@ -11842,7 +11842,7 @@ async function buildAutoHandoffScenePackageBatchSnapshot(projectPath, manifestPa
|
|
|
11842
11842
|
return {
|
|
11843
11843
|
status: 'skipped',
|
|
11844
11844
|
generated: false,
|
|
11845
|
-
reason: `
|
|
11845
|
+
reason: `sce cli script missing: ${toAutoHandoffCliPath(projectPath, AUTO_HANDOFF_CLI_SCRIPT_FILE)}`
|
|
11846
11846
|
};
|
|
11847
11847
|
}
|
|
11848
11848
|
|
|
@@ -12609,10 +12609,10 @@ function buildAutoHandoffCapabilityMatrixRecommendations(result = {}) {
|
|
|
12609
12609
|
: {};
|
|
12610
12610
|
|
|
12611
12611
|
if (templateDiff.compatibility === 'needs-sync') {
|
|
12612
|
-
push(`Sync template library and rerun:
|
|
12612
|
+
push(`Sync template library and rerun: sce auto handoff template-diff --manifest ${manifestCli} --json`);
|
|
12613
12613
|
}
|
|
12614
12614
|
if (baseline.status === 'error' || (baseline.summary && baseline.summary.portfolio_passed === false)) {
|
|
12615
|
-
push('Rebuild Moqui baseline:
|
|
12615
|
+
push('Rebuild Moqui baseline: sce scene moqui-baseline --json');
|
|
12616
12616
|
}
|
|
12617
12617
|
if (capabilityCoverage.status === 'skipped') {
|
|
12618
12618
|
push('Declare `capabilities` in handoff manifest to enable capability matrix coverage gates.');
|
|
@@ -12620,18 +12620,18 @@ function buildAutoHandoffCapabilityMatrixRecommendations(result = {}) {
|
|
|
12620
12620
|
if (coverageSummary && coverageSummary.passed === false) {
|
|
12621
12621
|
push(
|
|
12622
12622
|
`Close capability gaps with strict gate: ` +
|
|
12623
|
-
`
|
|
12623
|
+
`sce auto handoff run --manifest ${manifestCli} --min-capability-coverage ${coverageSummary.min_required_percent} --json`
|
|
12624
12624
|
);
|
|
12625
12625
|
}
|
|
12626
12626
|
if (coverageSummary && coverageSummary.semantic_passed === false) {
|
|
12627
12627
|
push(
|
|
12628
12628
|
`Backfill capability ontology semantics and rerun matrix: ` +
|
|
12629
|
-
`
|
|
12629
|
+
`sce scene package-ontology-backfill-batch --manifest ${manifestCli} --json`
|
|
12630
12630
|
);
|
|
12631
12631
|
}
|
|
12632
12632
|
if (result.remediation_queue && result.remediation_queue.file) {
|
|
12633
12633
|
push(
|
|
12634
|
-
`Replay remediation queue:
|
|
12634
|
+
`Replay remediation queue: sce auto close-loop-batch ${quoteCliArg(result.remediation_queue.file)} --format lines --json`
|
|
12635
12635
|
);
|
|
12636
12636
|
}
|
|
12637
12637
|
|
|
@@ -14299,7 +14299,7 @@ function buildProgramRemediationActions(summary, failureClusters) {
|
|
|
14299
14299
|
priority: 'high',
|
|
14300
14300
|
action: 'Resume unresolved goals from latest program/batch summary.',
|
|
14301
14301
|
reason: `${failedGoals} goals are unresolved after the current run.`,
|
|
14302
|
-
suggested_command: '
|
|
14302
|
+
suggested_command: 'sce auto close-loop-recover latest --json',
|
|
14303
14303
|
strategy_patch: {
|
|
14304
14304
|
batchAutonomous: true,
|
|
14305
14305
|
continueOnError: true,
|
|
@@ -14312,7 +14312,7 @@ function buildProgramRemediationActions(summary, failureClusters) {
|
|
|
14312
14312
|
priority: 'high',
|
|
14313
14313
|
action: 'Increase retry ceiling or split the program into smaller sub-goal groups.',
|
|
14314
14314
|
reason: 'Retry rounds were exhausted before convergence.',
|
|
14315
|
-
suggested_command: '
|
|
14315
|
+
suggested_command: 'sce auto close-loop-recover latest --batch-retry-max-rounds 15 --json',
|
|
14316
14316
|
strategy_patch: {
|
|
14317
14317
|
batchRetryUntilComplete: true,
|
|
14318
14318
|
batchRetryMaxRounds: 15
|
|
@@ -14330,7 +14330,7 @@ function buildProgramRemediationActions(summary, failureClusters) {
|
|
|
14330
14330
|
priority: 'medium',
|
|
14331
14331
|
action: 'Reduce parallel pressure and increase orchestration timeout budget.',
|
|
14332
14332
|
reason: 'Failure clusters indicate timeout/resource-pressure symptoms.',
|
|
14333
|
-
suggested_command: '
|
|
14333
|
+
suggested_command: 'sce auto close-loop-recover latest --batch-parallel 2 --batch-agent-budget 2 --json',
|
|
14334
14334
|
strategy_patch: {
|
|
14335
14335
|
batchParallel: 2,
|
|
14336
14336
|
batchAgentBudget: 2,
|
|
@@ -14345,7 +14345,7 @@ function buildProgramRemediationActions(summary, failureClusters) {
|
|
|
14345
14345
|
priority: 'medium',
|
|
14346
14346
|
action: 'Run strict quality gates early to surface deterministic failures.',
|
|
14347
14347
|
reason: 'Failure clusters indicate DoD/test/compliance gate issues.',
|
|
14348
|
-
suggested_command: '
|
|
14348
|
+
suggested_command: 'sce auto close-loop-recover latest --dod-tests "npm run test:smoke" --dod-tasks-closed --json',
|
|
14349
14349
|
strategy_patch: {
|
|
14350
14350
|
dodTests: 'npm run test:smoke',
|
|
14351
14351
|
dodTasksClosed: true
|
|
@@ -17600,24 +17600,24 @@ function buildGovernanceRecommendations(summary) {
|
|
|
17600
17600
|
);
|
|
17601
17601
|
|
|
17602
17602
|
if (failedSessions > 0) {
|
|
17603
|
-
recommendations.push('Run `
|
|
17603
|
+
recommendations.push('Run `sce auto close-loop-recover latest --recover-until-complete --json` to drain failed goals.');
|
|
17604
17604
|
}
|
|
17605
17605
|
if (pendingGoals > 0) {
|
|
17606
|
-
recommendations.push('Run `
|
|
17606
|
+
recommendations.push('Run `sce auto close-loop-controller --controller-resume latest --json` to continue pending queue work.');
|
|
17607
17607
|
}
|
|
17608
17608
|
if (riskLevel === 'low') {
|
|
17609
|
-
recommendations.push('Keep daily governance checks with `
|
|
17609
|
+
recommendations.push('Keep daily governance checks with `sce auto governance stats --days 14 --json`.');
|
|
17610
17610
|
} else if (riskLevel === 'high') {
|
|
17611
17611
|
recommendations.push('Apply stricter gate policy (`--program-gate-profile staging|prod`) before next program-scale run.');
|
|
17612
17612
|
}
|
|
17613
17613
|
if (!releaseGateAvailable) {
|
|
17614
17614
|
recommendations.push(
|
|
17615
17615
|
'Generate/attach release gate history asset: ' +
|
|
17616
|
-
'`
|
|
17616
|
+
'`sce auto handoff gate-index --dir .kiro/reports/release-evidence --out .kiro/reports/release-evidence/release-gate-history.json --json`.'
|
|
17617
17617
|
);
|
|
17618
17618
|
} else {
|
|
17619
17619
|
if (releaseGatePassed === false || (Number.isFinite(releaseGatePassRate) && releaseGatePassRate < 85)) {
|
|
17620
|
-
recommendations.push('Recheck latest release evidence with `
|
|
17620
|
+
recommendations.push('Recheck latest release evidence with `sce auto handoff evidence --window 5 --json`.');
|
|
17621
17621
|
}
|
|
17622
17622
|
if (
|
|
17623
17623
|
(Number.isFinite(driftAlertRate) && driftAlertRate > 0) ||
|
|
@@ -17625,14 +17625,14 @@ function buildGovernanceRecommendations(summary) {
|
|
|
17625
17625
|
) {
|
|
17626
17626
|
recommendations.push(
|
|
17627
17627
|
'Stabilize scene package publish-batch quality and rerun: ' +
|
|
17628
|
-
'`
|
|
17628
|
+
'`sce scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json --dry-run --json`.'
|
|
17629
17629
|
);
|
|
17630
17630
|
}
|
|
17631
17631
|
}
|
|
17632
17632
|
if (!handoffAvailable) {
|
|
17633
17633
|
recommendations.push(
|
|
17634
17634
|
'Generate handoff release evidence with ' +
|
|
17635
|
-
'`
|
|
17635
|
+
'`sce auto handoff run --manifest docs/handoffs/handoff-manifest.json --dry-run --json`.'
|
|
17636
17636
|
);
|
|
17637
17637
|
} else if (handoffTotalRuns > 0) {
|
|
17638
17638
|
if (
|
|
@@ -17640,10 +17640,10 @@ function buildGovernanceRecommendations(summary) {
|
|
|
17640
17640
|
handoffLatestGatePassed === false ||
|
|
17641
17641
|
handoffPreflightBlocked === true
|
|
17642
17642
|
) {
|
|
17643
|
-
recommendations.push('Recheck handoff quality with `
|
|
17643
|
+
recommendations.push('Recheck handoff quality with `sce auto handoff evidence --window 5 --json`.');
|
|
17644
17644
|
recommendations.push(
|
|
17645
17645
|
'Resume failed handoff goals with ' +
|
|
17646
|
-
'`
|
|
17646
|
+
'`sce auto handoff run --manifest docs/handoffs/handoff-manifest.json --continue-from latest --continue-strategy failed-only --json`.'
|
|
17647
17647
|
);
|
|
17648
17648
|
}
|
|
17649
17649
|
if (
|
|
@@ -17652,7 +17652,7 @@ function buildGovernanceRecommendations(summary) {
|
|
|
17652
17652
|
) {
|
|
17653
17653
|
recommendations.push(
|
|
17654
17654
|
'Re-run default Moqui quality gates via ' +
|
|
17655
|
-
'`
|
|
17655
|
+
'`sce auto handoff run --manifest docs/handoffs/handoff-manifest.json --dry-run --json`.'
|
|
17656
17656
|
);
|
|
17657
17657
|
}
|
|
17658
17658
|
}
|
|
@@ -18068,8 +18068,8 @@ async function buildAutoSpecInstructions(projectPath, specNameCandidate) {
|
|
|
18068
18068
|
next_actions: nextActions,
|
|
18069
18069
|
priority_open_tasks: taskChecklist.open_tasks.slice(0, 20),
|
|
18070
18070
|
recommended_commands: [
|
|
18071
|
-
`
|
|
18072
|
-
`
|
|
18071
|
+
`sce auto spec status ${specStatus.spec.name} --json`,
|
|
18072
|
+
`sce orchestrate ${specStatus.spec.name} --json`
|
|
18073
18073
|
],
|
|
18074
18074
|
document_excerpts: {
|
|
18075
18075
|
requirements: summarizeDocExcerpt(requirements.content),
|
|
@@ -18473,10 +18473,10 @@ function buildAutoGovernanceMaintenancePlan(assessment, policy, dryRun = false)
|
|
|
18473
18473
|
const failedSessions = Number(assessment && assessment.totals && assessment.totals.failed_sessions) || 0;
|
|
18474
18474
|
const pendingGoals = Number(assessment && assessment.throughput && assessment.throughput.controller_pending_goals_sum) || 0;
|
|
18475
18475
|
|
|
18476
|
-
const sessionCommand = `
|
|
18477
|
-
const batchCommand = `
|
|
18478
|
-
const controllerCommand = `
|
|
18479
|
-
const recoveryCommand = `
|
|
18476
|
+
const sessionCommand = `sce auto session prune --keep ${policy.session_keep}${dryRun ? ' --dry-run' : ''} --json`;
|
|
18477
|
+
const batchCommand = `sce auto batch-session prune --keep ${policy.batch_session_keep}${dryRun ? ' --dry-run' : ''} --json`;
|
|
18478
|
+
const controllerCommand = `sce auto controller-session prune --keep ${policy.controller_session_keep}${dryRun ? ' --dry-run' : ''} --json`;
|
|
18479
|
+
const recoveryCommand = `sce auto recovery-memory prune --older-than-days ${policy.recovery_memory_older_than_days}${dryRun ? ' --dry-run' : ''} --json`;
|
|
18480
18480
|
const releaseGateBlockState = evaluateGovernanceReleaseGateBlockState(assessment);
|
|
18481
18481
|
const releaseGateReasons = Array.isArray(releaseGateBlockState.reasons)
|
|
18482
18482
|
? releaseGateBlockState.reasons
|
|
@@ -18489,7 +18489,7 @@ function buildAutoGovernanceMaintenancePlan(assessment, policy, dryRun = false)
|
|
|
18489
18489
|
apply_supported: false,
|
|
18490
18490
|
enabled: true,
|
|
18491
18491
|
reason: `release gate quality is blocking governance loop: ${releaseGateReasons.join(', ')}`,
|
|
18492
|
-
command: '
|
|
18492
|
+
command: 'sce auto handoff evidence --window 5 --json',
|
|
18493
18493
|
blocked_reasons: releaseGateReasons
|
|
18494
18494
|
});
|
|
18495
18495
|
if (releaseGateReasons.some(item => `${item}`.includes('scene-batch') || `${item}`.includes('drift'))) {
|
|
@@ -18499,7 +18499,7 @@ function buildAutoGovernanceMaintenancePlan(assessment, policy, dryRun = false)
|
|
|
18499
18499
|
apply_supported: false,
|
|
18500
18500
|
enabled: true,
|
|
18501
18501
|
reason: 'release gate drift/scene signals need package-publish-batch remediation',
|
|
18502
|
-
command: '
|
|
18502
|
+
command: 'sce scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json --dry-run --json',
|
|
18503
18503
|
blocked_reasons: releaseGateReasons
|
|
18504
18504
|
});
|
|
18505
18505
|
}
|
|
@@ -18510,7 +18510,7 @@ function buildAutoGovernanceMaintenancePlan(assessment, policy, dryRun = false)
|
|
|
18510
18510
|
apply_supported: false,
|
|
18511
18511
|
enabled: true,
|
|
18512
18512
|
reason: 'handoff quality signals are blocking governance convergence',
|
|
18513
|
-
command: '
|
|
18513
|
+
command: 'sce auto handoff run --manifest docs/handoffs/handoff-manifest.json --dry-run --json',
|
|
18514
18514
|
blocked_reasons: releaseGateReasons
|
|
18515
18515
|
});
|
|
18516
18516
|
}
|
|
@@ -18574,7 +18574,7 @@ function buildAutoGovernanceMaintenancePlan(assessment, policy, dryRun = false)
|
|
|
18574
18574
|
reason: failedSessions > 0
|
|
18575
18575
|
? `${failedSessions} failed session(s) detected, run recovery drain`
|
|
18576
18576
|
: 'no failed sessions detected',
|
|
18577
|
-
command: '
|
|
18577
|
+
command: 'sce auto close-loop-recover latest --recover-until-complete --json'
|
|
18578
18578
|
},
|
|
18579
18579
|
{
|
|
18580
18580
|
id: 'controller-resume-latest',
|
|
@@ -18584,7 +18584,7 @@ function buildAutoGovernanceMaintenancePlan(assessment, policy, dryRun = false)
|
|
|
18584
18584
|
reason: pendingGoals > 0
|
|
18585
18585
|
? `${pendingGoals} pending controller goal(s) detected, resume controller queue`
|
|
18586
18586
|
: 'no pending controller goals detected',
|
|
18587
|
-
command: '
|
|
18587
|
+
command: 'sce auto close-loop-controller --controller-resume latest --json'
|
|
18588
18588
|
}
|
|
18589
18589
|
];
|
|
18590
18590
|
|
|
@@ -19052,18 +19052,18 @@ function buildGovernanceCloseLoopRecommendations(finalAssessment, stopReason, st
|
|
|
19052
19052
|
);
|
|
19053
19053
|
const reasons = Array.isArray(stopDetail && stopDetail.reasons) ? stopDetail.reasons : [];
|
|
19054
19054
|
if (reasons.some(item => `${item}`.includes('drift'))) {
|
|
19055
|
-
base.push('Review drift blockers with `
|
|
19055
|
+
base.push('Review drift blockers with `sce auto handoff evidence --window 5 --json`.');
|
|
19056
19056
|
}
|
|
19057
19057
|
if (reasons.some(item => `${item}`.includes('scene-batch'))) {
|
|
19058
19058
|
base.push(
|
|
19059
|
-
'Rerun and stabilize scene batch quality: `
|
|
19059
|
+
'Rerun and stabilize scene batch quality: `sce scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json --dry-run --json`.'
|
|
19060
19060
|
);
|
|
19061
19061
|
}
|
|
19062
19062
|
if (reasons.some(item => `${item}`.startsWith('handoff-'))) {
|
|
19063
|
-
base.push('Review handoff quality with `
|
|
19063
|
+
base.push('Review handoff quality with `sce auto handoff evidence --window 5 --json`.');
|
|
19064
19064
|
base.push(
|
|
19065
19065
|
'Replay failed handoff goals with ' +
|
|
19066
|
-
'`
|
|
19066
|
+
'`sce auto handoff run --manifest docs/handoffs/handoff-manifest.json --continue-from latest --continue-strategy failed-only --json`.'
|
|
19067
19067
|
);
|
|
19068
19068
|
}
|
|
19069
19069
|
return Array.from(new Set(base));
|