scene-capability-engine 3.3.5 → 3.3.10
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 +130 -78
- package/README.md +6 -6
- package/README.zh.md +6 -6
- package/bin/scene-capability-engine.js +129 -7
- package/docs/331-poc-adaptation-roadmap.md +3 -3
- package/docs/331-poc-dual-track-integration-guide.md +8 -8
- package/docs/331-poc-weekly-delivery-checklist.md +6 -6
- package/docs/README.md +4 -0
- package/docs/adopt-migration-guide.md +13 -13
- package/docs/adoption-guide.md +28 -28
- package/docs/agent-hooks-analysis.md +10 -10
- package/docs/architecture.md +13 -13
- package/docs/articles/ai-driven-development-philosophy-and-practice.en.md +3 -3
- package/docs/articles/ai-driven-development-philosophy-and-practice.md +3 -3
- package/docs/autonomous-control-guide.md +35 -35
- package/docs/command-reference.md +192 -153
- package/docs/cross-tool-guide.md +7 -7
- package/docs/developer-guide.md +8 -8
- package/docs/document-governance.md +15 -15
- package/docs/environment-management-guide.md +6 -6
- package/docs/examples/add-export-command/design.md +1 -1
- package/docs/faq.md +13 -13
- package/docs/handoff-profile-integration-guide.md +3 -3
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.json +7 -7
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.md +1 -1
- package/docs/integration-modes.md +12 -12
- package/docs/integration-philosophy.md +11 -11
- package/docs/interactive-customization/331-poc-sce-integration-checklist.md +24 -24
- package/docs/interactive-customization/README.md +43 -43
- package/docs/interactive-customization/business-mode-policy-baseline.json +33 -0
- package/docs/interactive-customization/dual-ui-mode-integration-guide.md +1 -1
- package/docs/interactive-customization/moqui-adapter-interface.md +2 -2
- package/docs/interactive-customization/moqui-copilot-integration-guide.md +1 -1
- package/docs/interactive-customization/moqui-interactive-template-playbook.md +4 -4
- package/docs/interactive-customization/phase-acceptance-evidence.md +2 -2
- package/docs/knowledge-management-guide.md +6 -6
- package/docs/manual-workflows-guide.md +4 -4
- package/docs/moqui-capability-matrix.md +3 -3
- package/docs/moqui-standard-rebuild-guide.md +8 -8
- package/docs/moqui-template-core-library-playbook.md +27 -27
- package/docs/multi-agent-coordination-guide.md +19 -19
- package/docs/multi-repo-management-guide.md +17 -17
- package/docs/quick-start-with-ai-tools.md +7 -7
- package/docs/quick-start.md +2 -2
- package/docs/release-checklist.md +4 -4
- package/docs/sce-business-mode-map.md +103 -0
- package/docs/security-governance-default-baseline.md +12 -12
- package/docs/spec-collaboration-guide.md +3 -3
- package/docs/spec-locking-guide.md +2 -2
- package/docs/spec-workflow.md +3 -3
- package/docs/starter-kit/README.md +4 -4
- package/docs/starter-kit/handoff-manifest.starter.json +2 -2
- package/docs/starter-kit/release.workflow.sample.yml +1 -1
- package/docs/steering-strategy-guide.md +15 -15
- package/docs/team-collaboration-guide.md +69 -69
- package/docs/testing-strategy.md +2 -2
- package/docs/tools/claude-guide.md +14 -4
- package/docs/tools/cursor-guide.md +14 -14
- package/docs/tools/generic-guide.md +9 -9
- package/docs/tools/kiro-guide.md +4 -4
- package/docs/tools/vscode-guide.md +13 -13
- package/docs/tools/windsurf-guide.md +6 -6
- package/docs/troubleshooting.md +22 -22
- package/docs/upgrade-guide.md +8 -8
- package/docs/value-observability-guide.md +3 -3
- package/docs/zh/README.md +6 -0
- package/docs/zh/quick-start.md +15 -15
- package/docs/zh/release-checklist.md +3 -3
- package/docs/zh/tools/claude-guide.md +16 -6
- package/docs/zh/tools/cursor-guide.md +11 -11
- package/docs/zh/tools/generic-guide.md +13 -13
- package/docs/zh/tools/kiro-guide.md +2 -2
- package/docs/zh/tools/vscode-guide.md +11 -11
- package/docs/zh/tools/windsurf-guide.md +11 -11
- package/docs/zh/value-observability-guide.md +3 -3
- package/lib/adoption/adoption-logger.js +1 -1
- package/lib/adoption/adoption-strategy.js +28 -28
- package/lib/adoption/backup-manager.js +3 -3
- package/lib/adoption/conflict-resolver.js +2 -2
- package/lib/adoption/detection-engine.js +8 -8
- package/lib/adoption/error-formatter.js +4 -4
- package/lib/adoption/file-classifier.js +6 -6
- package/lib/adoption/progress-reporter.js +1 -1
- package/lib/adoption/smart-orchestrator.js +10 -10
- package/lib/adoption/strategy-selector.js +6 -6
- package/lib/adoption/summary-generator.js +1 -1
- package/lib/adoption/template-sync.js +8 -8
- package/lib/auto/autonomous-engine.js +7 -7
- package/lib/auto/checkpoint-manager.js +1 -1
- package/lib/auto/close-loop-runner.js +12 -12
- package/lib/auto/error-recovery-manager.js +1 -1
- package/lib/auto/goal-decomposer.js +1 -1
- package/lib/auto/moqui-recovery-sequence.js +2 -2
- package/lib/auto/progress-tracker.js +1 -1
- package/lib/auto/state-manager.js +1 -1
- package/lib/backup/backup-system.js +10 -10
- package/lib/backup/selective-backup.js +4 -4
- package/lib/collab/agent-registry.js +2 -2
- package/lib/collab/contract-manager.js +1 -1
- package/lib/collab/coordinator.js +2 -2
- package/lib/collab/dependency-manager.js +1 -1
- package/lib/collab/integration-manager.js +1 -1
- package/lib/collab/metadata-manager.js +1 -1
- package/lib/collab/multi-agent-config.js +2 -2
- package/lib/collab/spec-lifecycle-manager.js +2 -2
- package/lib/collab/visualizer.js +1 -1
- package/lib/commands/adopt.js +6 -6
- package/lib/commands/auto.js +56 -56
- package/lib/commands/collab.js +2 -2
- package/lib/commands/docs.js +3 -3
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/knowledge.js +2 -2
- package/lib/commands/lock.js +1 -1
- package/lib/commands/ops.js +1 -1
- package/lib/commands/orchestrate.js +3 -3
- package/lib/commands/rollback.js +1 -1
- package/lib/commands/scene.js +135 -93
- package/lib/commands/session.js +139 -0
- package/lib/commands/spec-bootstrap.js +1 -1
- package/lib/commands/spec-gate.js +2 -2
- package/lib/commands/spec-pipeline.js +1 -1
- package/lib/commands/status.js +4 -4
- package/lib/commands/steering.js +119 -0
- package/lib/commands/value.js +1 -1
- package/lib/commands/watch.js +9 -9
- package/lib/commands/workspace-multi.js +1 -1
- package/lib/context/context-exporter.js +5 -7
- package/lib/context/prompt-generator.js +2 -2
- package/lib/environment/backup-system.js +1 -1
- package/lib/environment/environment-manager.js +2 -2
- package/lib/gitignore/gitignore-backup.js +3 -3
- package/lib/gitignore/gitignore-detector.js +13 -13
- package/lib/gitignore/gitignore-integration.js +3 -3
- package/lib/gitignore/gitignore-transformer.js +4 -4
- package/lib/gitignore/layered-rules-template.js +16 -16
- package/lib/governance/config-manager.js +1 -1
- package/lib/governance/doc-reference-checker.js +4 -4
- package/lib/governance/execution-logger.js +1 -1
- package/lib/governance/file-scanner.js +3 -3
- package/lib/interactive-customization/moqui-interactive-adapter.js +2 -2
- package/lib/knowledge/knowledge-manager.js +1 -1
- package/lib/lock/lock-manager.js +2 -2
- package/lib/lock/steering-file-lock.js +5 -5
- package/lib/lock/task-lock-manager.js +3 -3
- package/lib/operations/audit-logger.js +1 -1
- package/lib/operations/feedback-manager.js +1 -1
- package/lib/operations/operations-manager.js +3 -3
- package/lib/operations/permission-manager.js +2 -2
- package/lib/operations/template-loader.js +1 -1
- package/lib/orchestrator/agent-spawner.js +27 -2
- package/lib/orchestrator/bootstrap-prompt-builder.js +6 -6
- package/lib/orchestrator/orchestration-engine.js +1 -1
- package/lib/orchestrator/orchestrator-config.js +2 -2
- package/lib/repo/config-manager.js +3 -3
- package/lib/repo/handlers/init-handler.js +1 -1
- package/lib/repo/repo-manager.js +2 -2
- package/lib/runtime/business-mode-resolver.js +240 -0
- package/lib/runtime/session-store.js +207 -0
- package/lib/runtime/steering-contract.js +338 -0
- package/lib/scene-runtime/audit-emitter.js +1 -1
- package/lib/scene-runtime/binding-plugin-loader.js +3 -3
- package/lib/scene-runtime/eval-bridge.js +1 -1
- package/lib/scene-runtime/index.js +1 -1
- package/lib/scene-runtime/moqui-extractor.js +1 -1
- package/lib/scene-runtime/plan-compiler.js +1 -1
- package/lib/scene-runtime/policy-gate.js +1 -1
- package/lib/scene-runtime/runtime-executor.js +1 -1
- package/lib/scene-runtime/scene-loader.js +1 -1
- package/lib/spec/bootstrap/context-collector.js +1 -1
- package/lib/spec/pipeline/stage-adapters.js +3 -3
- package/lib/spec/pipeline/state-store.js +1 -1
- package/lib/spec-gate/policy/policy-loader.js +1 -1
- package/lib/spec-gate/rules/default-rules.js +6 -6
- package/lib/steering/adoption-config.js +1 -1
- package/lib/steering/compliance-error-reporter.js +3 -3
- package/lib/steering/context-sync-manager.js +2 -2
- package/lib/steering/index.js +1 -1
- package/lib/steering/spec-steering.js +2 -2
- package/lib/steering/steering-compliance-checker.js +1 -1
- package/lib/steering/steering-loader.js +4 -5
- package/lib/steering/steering-manager.js +4 -4
- package/lib/task/task-claimer.js +5 -5
- package/lib/task/task-status-store.js +2 -2
- package/lib/templates/content-generalizer.js +1 -1
- package/lib/templates/spec-reader.js +2 -2
- package/lib/templates/template-creator.js +1 -1
- package/lib/templates/template-exporter.js +3 -3
- package/lib/templates/template-manager.js +1 -1
- package/lib/upgrade/migration-engine.js +3 -3
- package/lib/upgrade/migrations/1.0.0-to-1.1.0.js +1 -1
- package/lib/utils/file-diff.js +6 -6
- package/lib/utils/tool-detector.js +10 -10
- package/lib/utils/validation.js +5 -5
- package/lib/value/metric-contract-loader.js +1 -1
- package/lib/version/version-manager.js +1 -1
- package/lib/watch/execution-logger.js +1 -1
- package/lib/watch/presets.js +8 -8
- package/lib/watch/watch-manager.js +2 -2
- package/lib/workspace/legacy-kiro-migrator.js +275 -0
- package/lib/workspace/multi/workspace-context-resolver.js +2 -2
- package/lib/workspace/multi/workspace-registry.js +2 -2
- package/lib/workspace/multi/workspace-state-manager.js +3 -3
- package/lib/workspace/workspace-manager.js +1 -1
- package/lib/workspace/workspace-sync.js +2 -2
- package/locales/en.json +4 -4
- package/locales/zh.json +4 -4
- package/package.json +9 -9
- package/template/{.kiro → .sce}/README.md +15 -15
- package/template/{.kiro → .sce}/hooks/check-spec-on-create.kiro.hook +2 -2
- package/template/{.kiro → .sce}/steering/CORE_PRINCIPLES.md +4 -4
- package/template/{.kiro → .sce}/steering/CURRENT_CONTEXT.md +1 -1
- package/template/{.kiro → .sce}/steering/ENVIRONMENT.md +3 -3
- package/template/{.kiro → .sce}/tools/backup_manager.py +3 -3
- package/template/{.kiro → .sce}/tools/configuration_manager.py +1 -1
- package/template/README.md +12 -12
- /package/template/{.kiro → .sce}/hooks/run-tests-on-save.kiro.hook +0 -0
- /package/template/{.kiro → .sce}/hooks/sync-tasks-on-edit.kiro.hook +0 -0
- /package/template/{.kiro → .sce}/specs/SPEC_WORKFLOW_GUIDE.md +0 -0
- /package/template/{.kiro → .sce}/steering/RULES_GUIDE.md +0 -0
- /package/template/{.kiro → .sce}/templates/operations/default/change-impact.md +0 -0
- /package/template/{.kiro → .sce}/templates/operations/default/deployment.md +0 -0
- /package/template/{.kiro → .sce}/templates/operations/default/feedback-response.md +0 -0
- /package/template/{.kiro → .sce}/templates/operations/default/migration-plan.md +0 -0
- /package/template/{.kiro → .sce}/templates/operations/default/monitoring.md +0 -0
- /package/template/{.kiro → .sce}/templates/operations/default/operations.md +0 -0
- /package/template/{.kiro → .sce}/templates/operations/default/rollback.md +0 -0
- /package/template/{.kiro → .sce}/templates/operations/default/tools.yaml +0 -0
- /package/template/{.kiro → .sce}/templates/operations/default/troubleshooting.md +0 -0
- /package/template/{.kiro → .sce}/tools/document_evaluator.py +0 -0
- /package/template/{.kiro → .sce}/tools/enhancement_logger.py +0 -0
- /package/template/{.kiro → .sce}/tools/error_handler.py +0 -0
- /package/template/{.kiro → .sce}/tools/improvement_identifier.py +0 -0
- /package/template/{.kiro → .sce}/tools/modification_applicator.py +0 -0
- /package/template/{.kiro → .sce}/tools/quality_gate_enforcer.py +0 -0
- /package/template/{.kiro → .sce}/tools/quality_scorer.py +0 -0
- /package/template/{.kiro → .sce}/tools/report_generator.py +0 -0
- /package/template/{.kiro → .sce}/tools/ultrawork_enhancer.py +0 -0
- /package/template/{.kiro → .sce}/tools/ultrawork_enhancer_refactored.py +0 -0
- /package/template/{.kiro → .sce}/tools/ultrawork_enhancer_v2.py +0 -0
- /package/template/{.kiro → .sce}/tools/ultrawork_enhancer_v3.py +0 -0
- /package/template/{.kiro → .sce}/tools/workflow_quality_gate.py +0 -0
package/lib/commands/adopt.js
CHANGED
|
@@ -148,7 +148,7 @@ async function adoptSmart(projectPath, options) {
|
|
|
148
148
|
// Show next steps
|
|
149
149
|
if (!dryRun) {
|
|
150
150
|
console.log(chalk.blue('💡 Next steps:'));
|
|
151
|
-
console.log(' 1. Tell your AI: "Read .
|
|
151
|
+
console.log(' 1. Tell your AI: "Read .sce/README.md to understand project methodology"');
|
|
152
152
|
console.log(' 2. Start working: Ask AI to implement features following Spec-driven approach');
|
|
153
153
|
console.log(' 3. Check progress: ' + chalk.cyan('sce status'));
|
|
154
154
|
console.log();
|
|
@@ -196,7 +196,7 @@ async function adoptInteractive(projectPath, options) {
|
|
|
196
196
|
|
|
197
197
|
if (strategy === 'fresh') {
|
|
198
198
|
console.log(' Actions:');
|
|
199
|
-
console.log(' - Create .
|
|
199
|
+
console.log(' - Create .sce/ directory structure');
|
|
200
200
|
console.log(' - Copy template files (steering, tools, docs)');
|
|
201
201
|
console.log(' - Create version.json');
|
|
202
202
|
} else if (strategy === 'partial') {
|
|
@@ -639,7 +639,7 @@ async function adoptInteractive(projectPath, options) {
|
|
|
639
639
|
|
|
640
640
|
console.log();
|
|
641
641
|
console.log(chalk.blue('💡 Next steps:'));
|
|
642
|
-
console.log(' 1. Tell your AI: "Read .
|
|
642
|
+
console.log(' 1. Tell your AI: "Read .sce/README.md to understand project methodology"');
|
|
643
643
|
console.log(' 2. Start working: Ask AI to implement features following Spec-driven approach');
|
|
644
644
|
console.log(' 3. Check progress: ' + chalk.cyan('sce status'));
|
|
645
645
|
console.log();
|
|
@@ -680,7 +680,7 @@ async function adoptInteractive(projectPath, options) {
|
|
|
680
680
|
* @param {string} projectPath - Project root path
|
|
681
681
|
*/
|
|
682
682
|
async function setupKiroMcpConfig(projectPath) {
|
|
683
|
-
const mcpConfigPath = path.join(projectPath, '.
|
|
683
|
+
const mcpConfigPath = path.join(projectPath, '.sce', 'settings', 'mcp.json');
|
|
684
684
|
|
|
685
685
|
// Don't overwrite existing config
|
|
686
686
|
if (await pathExists(mcpConfigPath)) {
|
|
@@ -700,9 +700,9 @@ async function setupKiroMcpConfig(projectPath) {
|
|
|
700
700
|
};
|
|
701
701
|
|
|
702
702
|
try {
|
|
703
|
-
await ensureDirectory(path.join(projectPath, '.
|
|
703
|
+
await ensureDirectory(path.join(projectPath, '.sce', 'settings'));
|
|
704
704
|
await writeJSON(mcpConfigPath, mcpConfig);
|
|
705
|
-
console.log(chalk.green(' ✅ Created .
|
|
705
|
+
console.log(chalk.green(' ✅ Created .sce/settings/mcp.json (shell MCP server)'));
|
|
706
706
|
} catch (error) {
|
|
707
707
|
// Non-fatal, just log warning
|
|
708
708
|
console.log(chalk.yellow(' ⚠️ Could not create MCP config: ' + error.message));
|
package/lib/commands/auto.js
CHANGED
|
@@ -15,20 +15,20 @@ const { spawnSync } = require('child_process');
|
|
|
15
15
|
|
|
16
16
|
const AUTO_ARCHIVE_SCHEMA_VERSION = '1.0';
|
|
17
17
|
const AUTO_ARCHIVE_SCHEMA_SUPPORTED_VERSIONS = new Set([AUTO_ARCHIVE_SCHEMA_VERSION]);
|
|
18
|
-
const AUTO_HANDOFF_DEFAULT_QUEUE_FILE = '.
|
|
19
|
-
const AUTO_HANDOFF_RUN_REPORT_DIR = '.
|
|
20
|
-
const AUTO_HANDOFF_RELEASE_EVIDENCE_FILE = '.
|
|
21
|
-
const AUTO_HANDOFF_EVIDENCE_REVIEW_DEFAULT_FILE = '.
|
|
22
|
-
const AUTO_HANDOFF_RELEASE_EVIDENCE_DIR = '.
|
|
23
|
-
const AUTO_HANDOFF_RELEASE_GATE_HISTORY_FILE = '.
|
|
24
|
-
const AUTO_HANDOFF_MOQUI_BASELINE_JSON_FILE = '.
|
|
25
|
-
const AUTO_HANDOFF_MOQUI_BASELINE_MARKDOWN_FILE = '.
|
|
26
|
-
const AUTO_HANDOFF_SCENE_PACKAGE_BATCH_JSON_FILE = '.
|
|
27
|
-
const AUTO_HANDOFF_SCENE_PACKAGE_BATCH_TASK_QUEUE_FILE = '.
|
|
28
|
-
const AUTO_HANDOFF_MOQUI_CAPABILITY_COVERAGE_JSON_FILE = '.
|
|
29
|
-
const AUTO_HANDOFF_MOQUI_CAPABILITY_COVERAGE_MARKDOWN_FILE = '.
|
|
30
|
-
const AUTO_HANDOFF_MOQUI_REMEDIATION_QUEUE_FILE = '.
|
|
31
|
-
const AUTO_HANDOFF_MOQUI_CLUSTER_REMEDIATION_FILE = '.
|
|
18
|
+
const AUTO_HANDOFF_DEFAULT_QUEUE_FILE = '.sce/auto/handoff-goals.lines';
|
|
19
|
+
const AUTO_HANDOFF_RUN_REPORT_DIR = '.sce/reports/handoff-runs';
|
|
20
|
+
const AUTO_HANDOFF_RELEASE_EVIDENCE_FILE = '.sce/reports/release-evidence/handoff-runs.json';
|
|
21
|
+
const AUTO_HANDOFF_EVIDENCE_REVIEW_DEFAULT_FILE = '.sce/reports/release-evidence/handoff-evidence-review.md';
|
|
22
|
+
const AUTO_HANDOFF_RELEASE_EVIDENCE_DIR = '.sce/reports/release-evidence';
|
|
23
|
+
const AUTO_HANDOFF_RELEASE_GATE_HISTORY_FILE = '.sce/reports/release-evidence/release-gate-history.json';
|
|
24
|
+
const AUTO_HANDOFF_MOQUI_BASELINE_JSON_FILE = '.sce/reports/release-evidence/moqui-template-baseline.json';
|
|
25
|
+
const AUTO_HANDOFF_MOQUI_BASELINE_MARKDOWN_FILE = '.sce/reports/release-evidence/moqui-template-baseline.md';
|
|
26
|
+
const AUTO_HANDOFF_SCENE_PACKAGE_BATCH_JSON_FILE = '.sce/reports/release-evidence/scene-package-publish-batch-dry-run.json';
|
|
27
|
+
const AUTO_HANDOFF_SCENE_PACKAGE_BATCH_TASK_QUEUE_FILE = '.sce/auto/ontology-remediation.lines';
|
|
28
|
+
const AUTO_HANDOFF_MOQUI_CAPABILITY_COVERAGE_JSON_FILE = '.sce/reports/release-evidence/moqui-capability-coverage.json';
|
|
29
|
+
const AUTO_HANDOFF_MOQUI_CAPABILITY_COVERAGE_MARKDOWN_FILE = '.sce/reports/release-evidence/moqui-capability-coverage.md';
|
|
30
|
+
const AUTO_HANDOFF_MOQUI_REMEDIATION_QUEUE_FILE = '.sce/auto/moqui-remediation.lines';
|
|
31
|
+
const AUTO_HANDOFF_MOQUI_CLUSTER_REMEDIATION_FILE = '.sce/auto/matrix-remediation.capability-clusters.json';
|
|
32
32
|
const AUTO_HANDOFF_CLI_SCRIPT_FILE = path.resolve(__dirname, '..', '..', 'bin', 'scene-capability-engine.js');
|
|
33
33
|
const MOQUI_CAPABILITY_LEXICON_INDEX = buildMoquiCapabilityLexiconIndex(MOQUI_CAPABILITY_LEXICON);
|
|
34
34
|
const AUTO_HANDOFF_POLICY_PROFILE_PRESETS = {
|
|
@@ -249,7 +249,7 @@ function registerAutoCommands(program) {
|
|
|
249
249
|
.option('--mode <mode>', 'Set default mode')
|
|
250
250
|
.action(async (options) => {
|
|
251
251
|
try {
|
|
252
|
-
const configPath = path.join(process.cwd(), '.
|
|
252
|
+
const configPath = path.join(process.cwd(), '.sce', 'auto', 'config.json');
|
|
253
253
|
|
|
254
254
|
if (options.show) {
|
|
255
255
|
const config = await loadConfig();
|
|
@@ -381,11 +381,11 @@ function registerAutoCommands(program) {
|
|
|
381
381
|
.option('--batch-session-id <id>', 'Set explicit batch session id for batch summary persistence')
|
|
382
382
|
.option('--batch-session-keep <n>', 'Keep newest N batch summary sessions after each batch run', parseInt)
|
|
383
383
|
.option('--batch-session-older-than-days <n>', 'Only prune batch summary sessions older than N days', parseInt)
|
|
384
|
-
.option('--spec-session-keep <n>', 'After run, keep newest N spec directories under .
|
|
384
|
+
.option('--spec-session-keep <n>', 'After run, keep newest N spec directories under .sce/specs', parseInt)
|
|
385
385
|
.option('--spec-session-older-than-days <n>', 'Only prune spec directories older than N days', parseInt)
|
|
386
386
|
.option('--no-spec-session-protect-active', 'Allow spec retention prune to delete active/recently referenced specs')
|
|
387
387
|
.option('--spec-session-protect-window-days <n>', 'Protection window (days) for recent session references when pruning specs', parseInt)
|
|
388
|
-
.option('--spec-session-max-total <n>', 'Spec directory budget: maximum total directories allowed under .
|
|
388
|
+
.option('--spec-session-max-total <n>', 'Spec directory budget: maximum total directories allowed under .sce/specs', parseInt)
|
|
389
389
|
.option('--spec-session-max-created <n>', 'Spec growth guard: maximum estimated created directories in this run', parseInt)
|
|
390
390
|
.option('--spec-session-max-created-per-goal <n>', 'Spec growth guard: maximum estimated created directories per processed goal', parseFloat)
|
|
391
391
|
.option('--spec-session-max-duplicate-goals <n>', 'Spec growth guard: maximum duplicate goals allowed in one batch input', parseInt)
|
|
@@ -526,11 +526,11 @@ function registerAutoCommands(program) {
|
|
|
526
526
|
.option('--batch-session-id <id>', 'Set explicit batch session id for summary persistence')
|
|
527
527
|
.option('--batch-session-keep <n>', 'Keep newest N batch summary sessions after each program run', parseInt)
|
|
528
528
|
.option('--batch-session-older-than-days <n>', 'Only prune batch summary sessions older than N days', parseInt)
|
|
529
|
-
.option('--spec-session-keep <n>', 'After run, keep newest N spec directories under .
|
|
529
|
+
.option('--spec-session-keep <n>', 'After run, keep newest N spec directories under .sce/specs', parseInt)
|
|
530
530
|
.option('--spec-session-older-than-days <n>', 'Only prune spec directories older than N days', parseInt)
|
|
531
531
|
.option('--no-spec-session-protect-active', 'Allow spec retention prune to delete active/recently referenced specs')
|
|
532
532
|
.option('--spec-session-protect-window-days <n>', 'Protection window (days) for recent session references when pruning specs', parseInt)
|
|
533
|
-
.option('--spec-session-max-total <n>', 'Spec directory budget: maximum total directories allowed under .
|
|
533
|
+
.option('--spec-session-max-total <n>', 'Spec directory budget: maximum total directories allowed under .sce/specs', parseInt)
|
|
534
534
|
.option('--spec-session-max-created <n>', 'Spec growth guard: maximum estimated created directories in this run', parseInt)
|
|
535
535
|
.option('--spec-session-max-created-per-goal <n>', 'Spec growth guard: maximum estimated created directories per processed goal', parseFloat)
|
|
536
536
|
.option('--spec-session-max-duplicate-goals <n>', 'Spec growth guard: maximum duplicate goals allowed in one batch input', parseInt)
|
|
@@ -702,11 +702,11 @@ function registerAutoCommands(program) {
|
|
|
702
702
|
.option('--batch-session-id <id>', 'Set explicit batch session id for summary persistence')
|
|
703
703
|
.option('--batch-session-keep <n>', 'Keep newest N batch summary sessions after each recovery run', parseInt)
|
|
704
704
|
.option('--batch-session-older-than-days <n>', 'Only prune batch summary sessions older than N days', parseInt)
|
|
705
|
-
.option('--spec-session-keep <n>', 'After run, keep newest N spec directories under .
|
|
705
|
+
.option('--spec-session-keep <n>', 'After run, keep newest N spec directories under .sce/specs', parseInt)
|
|
706
706
|
.option('--spec-session-older-than-days <n>', 'Only prune spec directories older than N days', parseInt)
|
|
707
707
|
.option('--no-spec-session-protect-active', 'Allow spec retention prune to delete active/recently referenced specs')
|
|
708
708
|
.option('--spec-session-protect-window-days <n>', 'Protection window (days) for recent session references when pruning specs', parseInt)
|
|
709
|
-
.option('--spec-session-max-total <n>', 'Spec directory budget: maximum total directories allowed under .
|
|
709
|
+
.option('--spec-session-max-total <n>', 'Spec directory budget: maximum total directories allowed under .sce/specs', parseInt)
|
|
710
710
|
.option('--spec-session-max-created <n>', 'Spec growth guard: maximum estimated created directories in this run', parseInt)
|
|
711
711
|
.option('--spec-session-max-created-per-goal <n>', 'Spec growth guard: maximum estimated created directories per processed goal', parseFloat)
|
|
712
712
|
.option('--spec-session-max-duplicate-goals <n>', 'Spec growth guard: maximum duplicate goals allowed in one batch input', parseInt)
|
|
@@ -1235,11 +1235,11 @@ function registerAutoCommands(program) {
|
|
|
1235
1235
|
// sce auto spec-session
|
|
1236
1236
|
const autoSpecSession = auto
|
|
1237
1237
|
.command('spec-session')
|
|
1238
|
-
.description('Manage .
|
|
1238
|
+
.description('Manage .sce/specs directory retention and cleanup');
|
|
1239
1239
|
|
|
1240
1240
|
autoSpecSession
|
|
1241
1241
|
.command('list')
|
|
1242
|
-
.description('List persisted spec directories under .
|
|
1242
|
+
.description('List persisted spec directories under .sce/specs')
|
|
1243
1243
|
.option('--limit <n>', 'Maximum specs to show (default: 20)', parseInt)
|
|
1244
1244
|
.option('--json', 'Output machine-readable JSON')
|
|
1245
1245
|
.action(async (options) => {
|
|
@@ -2665,7 +2665,7 @@ function registerAutoCommands(program) {
|
|
|
2665
2665
|
* @returns {Object} - Configuration
|
|
2666
2666
|
*/
|
|
2667
2667
|
async function loadConfig(mode) {
|
|
2668
|
-
const globalConfigPath = path.join(process.cwd(), '.
|
|
2668
|
+
const globalConfigPath = path.join(process.cwd(), '.sce', 'auto', 'config.json');
|
|
2669
2669
|
|
|
2670
2670
|
let globalConfig = {};
|
|
2671
2671
|
if (await fs.pathExists(globalConfigPath)) {
|
|
@@ -2706,7 +2706,7 @@ function applyCloseLoopOptions(command, options = {}) {
|
|
|
2706
2706
|
.option('--no-dod-collab', 'Skip DoD collaboration completed-status gate')
|
|
2707
2707
|
.option('--dod-tasks-closed', 'Require all generated tasks checklists to be fully closed')
|
|
2708
2708
|
.option('--no-dod', 'Disable all DoD gates')
|
|
2709
|
-
.option('--dod-report <path>', 'Write DoD evidence report JSON (default: .
|
|
2709
|
+
.option('--dod-report <path>', 'Write DoD evidence report JSON (default: .sce/specs/<master>/custom/dod-report.json)')
|
|
2710
2710
|
.option('--no-dod-report', 'Disable automatic DoD report archive')
|
|
2711
2711
|
.option('--resume <session-or-file>', 'Resume close-loop from a prior session id, "latest", "interrupted", or a JSON file path')
|
|
2712
2712
|
.option('--session-id <id>', 'Set explicit close-loop session id for persistence')
|
|
@@ -3157,7 +3157,7 @@ function normalizeResumeStrategy(resumeStrategyCandidate) {
|
|
|
3157
3157
|
}
|
|
3158
3158
|
|
|
3159
3159
|
function getCloseLoopBatchSummaryDir(projectPath) {
|
|
3160
|
-
return path.join(projectPath, '.
|
|
3160
|
+
return path.join(projectPath, '.sce', 'auto', 'close-loop-batch-summaries');
|
|
3161
3161
|
}
|
|
3162
3162
|
|
|
3163
3163
|
async function resolveCloseLoopBatchSummaryFile(projectPath, summaryCandidate) {
|
|
@@ -3239,7 +3239,7 @@ function normalizeRecoveryActionIndex(actionCandidate, maxActions, optionLabel =
|
|
|
3239
3239
|
}
|
|
3240
3240
|
|
|
3241
3241
|
function getCloseLoopRecoveryMemoryFile(projectPath) {
|
|
3242
|
-
return path.join(projectPath, '.
|
|
3242
|
+
return path.join(projectPath, '.sce', 'auto', 'close-loop-recovery-memory.json');
|
|
3243
3243
|
}
|
|
3244
3244
|
|
|
3245
3245
|
async function loadCloseLoopRecoveryMemory(projectPath) {
|
|
@@ -6107,7 +6107,7 @@ async function executeCloseLoopRecoveryCycle({
|
|
|
6107
6107
|
function resolveControllerQueueFile(projectPath, queueFileCandidate) {
|
|
6108
6108
|
const normalized = typeof queueFileCandidate === 'string' && queueFileCandidate.trim()
|
|
6109
6109
|
? queueFileCandidate.trim()
|
|
6110
|
-
: '.
|
|
6110
|
+
: '.sce/auto/close-loop-controller-goals.lines';
|
|
6111
6111
|
return path.isAbsolute(normalized)
|
|
6112
6112
|
? normalized
|
|
6113
6113
|
: path.join(projectPath, normalized);
|
|
@@ -7591,7 +7591,7 @@ function buildAutoHandoffPhaseCommands(projectPath, manifestPath, specs = []) {
|
|
|
7591
7591
|
const specCommands = [];
|
|
7592
7592
|
for (const specName of specs) {
|
|
7593
7593
|
const specArg = quoteCliArg(specName);
|
|
7594
|
-
const specPackagePath = quoteCliArg(`.
|
|
7594
|
+
const specPackagePath = quoteCliArg(`.sce/specs/${specName}/custom`);
|
|
7595
7595
|
specCommands.push(`sce auto spec status ${specArg} --json`);
|
|
7596
7596
|
specCommands.push(`sce auto spec instructions ${specArg} --json`);
|
|
7597
7597
|
specCommands.push(`sce scene package-validate --spec ${specArg} --spec-package custom/scene-package.json --strict --json`);
|
|
@@ -7832,7 +7832,7 @@ function collectTemplateNamesFromPayload(payload, sink = new Set(), depth = 0) {
|
|
|
7832
7832
|
|
|
7833
7833
|
async function collectLocalTemplateNames(projectPath) {
|
|
7834
7834
|
const names = new Set();
|
|
7835
|
-
const templateRoot = path.join(projectPath, '.
|
|
7835
|
+
const templateRoot = path.join(projectPath, '.sce', 'templates');
|
|
7836
7836
|
const exportRoot = path.join(templateRoot, 'exports');
|
|
7837
7837
|
const sceneTemplateRoot = path.join(templateRoot, 'scene-packages');
|
|
7838
7838
|
const registryFile = path.join(sceneTemplateRoot, 'registry.json');
|
|
@@ -7895,7 +7895,7 @@ async function buildAutoHandoffTemplateDiff(projectPath, options = {}) {
|
|
|
7895
7895
|
recommendations: compatibility === 'ready'
|
|
7896
7896
|
? []
|
|
7897
7897
|
: [
|
|
7898
|
-
'sync missing templates from handoff source into .
|
|
7898
|
+
'sync missing templates from handoff source into .sce/templates/exports or scene-packages registry',
|
|
7899
7899
|
're-run `sce auto handoff template-diff --manifest <path> --json` after sync'
|
|
7900
7900
|
]
|
|
7901
7901
|
};
|
|
@@ -8925,7 +8925,7 @@ function buildAutoHandoffRegressionRecommendations(payload = {}) {
|
|
|
8925
8925
|
if (Number.isFinite(moquiMatrixRegressionCount) && moquiMatrixRegressionCount > 0) {
|
|
8926
8926
|
push(
|
|
8927
8927
|
'Recover Moqui matrix regressions and rerun baseline gate: ' +
|
|
8928
|
-
'`sce scene moqui-baseline --include-all --compare-with .
|
|
8928
|
+
'`sce scene moqui-baseline --include-all --compare-with .sce/reports/release-evidence/moqui-template-baseline.json --json`.'
|
|
8929
8929
|
);
|
|
8930
8930
|
for (const line of buildMoquiRegressionRecoverySequenceLines({
|
|
8931
8931
|
wrapCommands: true,
|
|
@@ -12314,8 +12314,8 @@ function buildAutoHandoffPreflightCheckRecommendations(projectPath, result = {})
|
|
|
12314
12314
|
if (preflight.available !== true || preflight.parse_error) {
|
|
12315
12315
|
push(
|
|
12316
12316
|
'sce auto handoff gate-index ' +
|
|
12317
|
-
'--dir .
|
|
12318
|
-
'--out .
|
|
12317
|
+
'--dir .sce/reports/release-evidence ' +
|
|
12318
|
+
'--out .sce/reports/release-evidence/release-gate-history.json --json'
|
|
12319
12319
|
);
|
|
12320
12320
|
}
|
|
12321
12321
|
if (result.status !== 'pass' || preflight.blocked === true) {
|
|
@@ -12918,7 +12918,7 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
12918
12918
|
) {
|
|
12919
12919
|
push(
|
|
12920
12920
|
'sce scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json ' +
|
|
12921
|
-
'--dry-run --ontology-task-queue-out .
|
|
12921
|
+
'--dry-run --ontology-task-queue-out .sce/auto/ontology-remediation.lines --json'
|
|
12922
12922
|
);
|
|
12923
12923
|
}
|
|
12924
12924
|
}
|
|
@@ -12929,8 +12929,8 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
12929
12929
|
) {
|
|
12930
12930
|
push(
|
|
12931
12931
|
'sce auto handoff gate-index ' +
|
|
12932
|
-
'--dir .
|
|
12933
|
-
'--out .
|
|
12932
|
+
'--dir .sce/reports/release-evidence ' +
|
|
12933
|
+
'--out .sce/reports/release-evidence/release-gate-history.json --json'
|
|
12934
12934
|
);
|
|
12935
12935
|
}
|
|
12936
12936
|
|
|
@@ -13012,11 +13012,11 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
13012
13012
|
} else if (moquiSummary && moquiSummary.portfolio_passed === false) {
|
|
13013
13013
|
push(
|
|
13014
13014
|
'sce scene moqui-baseline --include-all ' +
|
|
13015
|
-
'--compare-with .
|
|
13015
|
+
'--compare-with .sce/reports/release-evidence/moqui-template-baseline.json --json'
|
|
13016
13016
|
);
|
|
13017
13017
|
push(
|
|
13018
13018
|
'sce scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json ' +
|
|
13019
|
-
'--dry-run --ontology-task-queue-out .
|
|
13019
|
+
'--dry-run --ontology-task-queue-out .sce/auto/ontology-remediation.lines --json'
|
|
13020
13020
|
);
|
|
13021
13021
|
}
|
|
13022
13022
|
if (moquiCoverageRegressions.length > 0) {
|
|
@@ -13026,7 +13026,7 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
13026
13026
|
);
|
|
13027
13027
|
push(
|
|
13028
13028
|
'sce scene moqui-baseline --include-all ' +
|
|
13029
|
-
'--compare-with .
|
|
13029
|
+
'--compare-with .sce/reports/release-evidence/moqui-template-baseline.json --json'
|
|
13030
13030
|
);
|
|
13031
13031
|
pushMoquiClusterFirstRecoverySequence();
|
|
13032
13032
|
if (manifestPath) {
|
|
@@ -13036,7 +13036,7 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
13036
13036
|
);
|
|
13037
13037
|
push(
|
|
13038
13038
|
`sce scene package-publish-batch --manifest ${manifestCli} ` +
|
|
13039
|
-
'--dry-run --ontology-task-queue-out .
|
|
13039
|
+
'--dry-run --ontology-task-queue-out .sce/auto/ontology-remediation.lines --json'
|
|
13040
13040
|
);
|
|
13041
13041
|
}
|
|
13042
13042
|
}
|
|
@@ -13051,7 +13051,7 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
13051
13051
|
) {
|
|
13052
13052
|
push(
|
|
13053
13053
|
`sce scene package-publish-batch --manifest ${manifestCli} ` +
|
|
13054
|
-
'--dry-run --ontology-task-queue-out .
|
|
13054
|
+
'--dry-run --ontology-task-queue-out .sce/auto/ontology-remediation.lines --json'
|
|
13055
13055
|
);
|
|
13056
13056
|
}
|
|
13057
13057
|
|
|
@@ -13095,7 +13095,7 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
13095
13095
|
) {
|
|
13096
13096
|
push(
|
|
13097
13097
|
'normalize unknown template capabilities via ' +
|
|
13098
|
-
'`node scripts/moqui-lexicon-audit.js --manifest docs/handoffs/handoff-manifest.json --template-dir .
|
|
13098
|
+
'`node scripts/moqui-lexicon-audit.js --manifest docs/handoffs/handoff-manifest.json --template-dir .sce/templates/scene-packages --fail-on-gap --json`'
|
|
13099
13099
|
);
|
|
13100
13100
|
}
|
|
13101
13101
|
|
|
@@ -14253,7 +14253,7 @@ async function buildAutoHandoffCapabilityCoverageSnapshot(projectPath, handoff =
|
|
|
14253
14253
|
};
|
|
14254
14254
|
}
|
|
14255
14255
|
|
|
14256
|
-
const templateRoot = path.join(projectPath, '.
|
|
14256
|
+
const templateRoot = path.join(projectPath, '.sce', 'templates', 'scene-packages');
|
|
14257
14257
|
if (!(await fs.pathExists(templateRoot))) {
|
|
14258
14258
|
return {
|
|
14259
14259
|
status: 'skipped',
|
|
@@ -14599,7 +14599,7 @@ function buildAutoHandoffCapabilityMatrixRecommendations(result = {}) {
|
|
|
14599
14599
|
push(
|
|
14600
14600
|
`Normalize capability lexicon gaps with strict audit: ` +
|
|
14601
14601
|
`node scripts/moqui-lexicon-audit.js --manifest ${manifestCli} ` +
|
|
14602
|
-
'--template-dir .
|
|
14602
|
+
'--template-dir .sce/templates/scene-packages --fail-on-gap --json'
|
|
14603
14603
|
);
|
|
14604
14604
|
}
|
|
14605
14605
|
if (result.remediation_queue && result.remediation_queue.file) {
|
|
@@ -16595,7 +16595,7 @@ function createBatchSessionId() {
|
|
|
16595
16595
|
}
|
|
16596
16596
|
|
|
16597
16597
|
function getCloseLoopControllerSessionDir(projectPath) {
|
|
16598
|
-
return path.join(projectPath, '.
|
|
16598
|
+
return path.join(projectPath, '.sce', 'auto', 'close-loop-controller-sessions');
|
|
16599
16599
|
}
|
|
16600
16600
|
|
|
16601
16601
|
function createControllerSessionId() {
|
|
@@ -16604,7 +16604,7 @@ function createControllerSessionId() {
|
|
|
16604
16604
|
}
|
|
16605
16605
|
|
|
16606
16606
|
function getGovernanceCloseLoopSessionDir(projectPath) {
|
|
16607
|
-
return path.join(projectPath, '.
|
|
16607
|
+
return path.join(projectPath, '.sce', 'auto', 'governance-close-loop-sessions');
|
|
16608
16608
|
}
|
|
16609
16609
|
|
|
16610
16610
|
function createGovernanceCloseLoopSessionId() {
|
|
@@ -18139,11 +18139,11 @@ async function maybePersistCloseLoopBatchSummary(summary, options, projectPath)
|
|
|
18139
18139
|
}
|
|
18140
18140
|
|
|
18141
18141
|
function getCloseLoopSessionDir(projectPath) {
|
|
18142
|
-
return path.join(projectPath, '.
|
|
18142
|
+
return path.join(projectPath, '.sce', 'auto', 'close-loop-sessions');
|
|
18143
18143
|
}
|
|
18144
18144
|
|
|
18145
18145
|
function getSpecSessionDir(projectPath) {
|
|
18146
|
-
return path.join(projectPath, '.
|
|
18146
|
+
return path.join(projectPath, '.sce', 'specs');
|
|
18147
18147
|
}
|
|
18148
18148
|
|
|
18149
18149
|
function normalizeLimit(limitCandidate, fallback) {
|
|
@@ -20810,7 +20810,7 @@ function buildGovernanceRecommendations(summary) {
|
|
|
20810
20810
|
if (!releaseGateAvailable) {
|
|
20811
20811
|
recommendations.push(
|
|
20812
20812
|
'Generate/attach release gate history asset: ' +
|
|
20813
|
-
'`sce auto handoff gate-index --dir .
|
|
20813
|
+
'`sce auto handoff gate-index --dir .sce/reports/release-evidence --out .sce/reports/release-evidence/release-gate-history.json --json`.'
|
|
20814
20814
|
);
|
|
20815
20815
|
} else {
|
|
20816
20816
|
if (releaseGatePassed === false || (Number.isFinite(releaseGatePassRate) && releaseGatePassRate < 85)) {
|
|
@@ -20843,7 +20843,7 @@ function buildGovernanceRecommendations(summary) {
|
|
|
20843
20843
|
);
|
|
20844
20844
|
recommendations.push(
|
|
20845
20845
|
'Export weekly/drift remediation pack with ' +
|
|
20846
|
-
'`node scripts/release-risk-remediation-bundle.js --gate-report .
|
|
20846
|
+
'`node scripts/release-risk-remediation-bundle.js --gate-report .sce/reports/release-evidence/release-gate.json --json`.'
|
|
20847
20847
|
);
|
|
20848
20848
|
}
|
|
20849
20849
|
if (Number.isFinite(weeklyOpsConfigWarningsTotal) && weeklyOpsConfigWarningsTotal > 0) {
|
|
@@ -20935,7 +20935,7 @@ function buildGovernanceRecommendations(summary) {
|
|
|
20935
20935
|
recommendations.push(
|
|
20936
20936
|
'Normalize capability lexicon gaps with ' +
|
|
20937
20937
|
'`node scripts/moqui-lexicon-audit.js --manifest docs/handoffs/handoff-manifest.json ' +
|
|
20938
|
-
'--template-dir .
|
|
20938
|
+
'--template-dir .sce/templates/scene-packages --fail-on-gap --json`.'
|
|
20939
20939
|
);
|
|
20940
20940
|
recommendations.push(
|
|
20941
20941
|
'Re-run strict handoff lexicon gates with ' +
|
|
@@ -20955,7 +20955,7 @@ function buildGovernanceRecommendations(summary) {
|
|
|
20955
20955
|
recommendations.push(
|
|
20956
20956
|
'Inspect Moqui baseline matrix drift with ' +
|
|
20957
20957
|
'`sce scene moqui-baseline --include-all ' +
|
|
20958
|
-
'--compare-with .
|
|
20958
|
+
'--compare-with .sce/reports/release-evidence/moqui-template-baseline.json --json`.'
|
|
20959
20959
|
);
|
|
20960
20960
|
recommendations.push(...buildMoquiRegressionRecoverySequenceLines({
|
|
20961
20961
|
wrapCommands: true,
|
|
@@ -21190,7 +21190,7 @@ function normalizeSpecName(specNameCandidate) {
|
|
|
21190
21190
|
|
|
21191
21191
|
async function resolveSpecDirectory(projectPath, specNameCandidate) {
|
|
21192
21192
|
const specName = normalizeSpecName(specNameCandidate);
|
|
21193
|
-
const specPath = path.join(projectPath, '.
|
|
21193
|
+
const specPath = path.join(projectPath, '.sce', 'specs', specName);
|
|
21194
21194
|
if (!(await fs.pathExists(specPath))) {
|
|
21195
21195
|
throw new Error(`Spec not found: ${specName}`);
|
|
21196
21196
|
}
|
|
@@ -22685,7 +22685,7 @@ function buildGovernanceCloseLoopRecommendations(finalAssessment, stopReason, st
|
|
|
22685
22685
|
base.push(
|
|
22686
22686
|
'Inspect Moqui matrix drift with ' +
|
|
22687
22687
|
'`sce scene moqui-baseline --include-all ' +
|
|
22688
|
-
'--compare-with .
|
|
22688
|
+
'--compare-with .sce/reports/release-evidence/moqui-template-baseline.json --json`.'
|
|
22689
22689
|
);
|
|
22690
22690
|
base.push(...buildMoquiRegressionRecoverySequenceLines({
|
|
22691
22691
|
wrapCommands: true,
|
|
@@ -22696,7 +22696,7 @@ function buildGovernanceCloseLoopRecommendations(finalAssessment, stopReason, st
|
|
|
22696
22696
|
base.push(
|
|
22697
22697
|
'Normalize capability lexicon gaps with ' +
|
|
22698
22698
|
'`node scripts/moqui-lexicon-audit.js --manifest docs/handoffs/handoff-manifest.json ' +
|
|
22699
|
-
'--template-dir .
|
|
22699
|
+
'--template-dir .sce/templates/scene-packages --fail-on-gap --json`.'
|
|
22700
22700
|
);
|
|
22701
22701
|
base.push(
|
|
22702
22702
|
'Re-run strict handoff gates after lexicon normalization with ' +
|
package/lib/commands/collab.js
CHANGED
|
@@ -90,7 +90,7 @@ function registerCollabCommands(program) {
|
|
|
90
90
|
console.log(chalk.gray('Type:'), status.metadata.type);
|
|
91
91
|
console.log(chalk.gray('Status:'), status.metadata.status.current);
|
|
92
92
|
if (status.metadata.assignment) {
|
|
93
|
-
console.log(chalk.gray('Assigned to:'), status.metadata.assignment.
|
|
93
|
+
console.log(chalk.gray('Assigned to:'), status.metadata.assignment.sceInstance);
|
|
94
94
|
}
|
|
95
95
|
if (status.metadata.dependencies && status.metadata.dependencies.length > 0) {
|
|
96
96
|
console.log(chalk.gray('Dependencies:'));
|
|
@@ -106,7 +106,7 @@ function registerCollabCommands(program) {
|
|
|
106
106
|
for (const { name, metadata } of status.specs) {
|
|
107
107
|
const symbol = getStatusSymbol(metadata.status.current);
|
|
108
108
|
const assignment = metadata.assignment
|
|
109
|
-
? chalk.gray(`(${metadata.assignment.
|
|
109
|
+
? chalk.gray(`(${metadata.assignment.sceInstance})`)
|
|
110
110
|
: chalk.gray('(unassigned)');
|
|
111
111
|
console.log(`${symbol} ${name} ${assignment}`);
|
|
112
112
|
}
|
package/lib/commands/docs.js
CHANGED
|
@@ -308,7 +308,7 @@ async function handleConfigDisplay(configManager, reporter) {
|
|
|
308
308
|
});
|
|
309
309
|
console.log();
|
|
310
310
|
|
|
311
|
-
console.log(chalk.gray('Configuration file: .
|
|
311
|
+
console.log(chalk.gray('Configuration file: .sce/config/docs.json'));
|
|
312
312
|
console.log(chalk.gray('To modify: sce docs config --set <key> <value>'));
|
|
313
313
|
console.log(chalk.gray('To reset: sce docs config --reset\n'));
|
|
314
314
|
|
|
@@ -446,7 +446,7 @@ async function handleReport(projectPath, reporter, options) {
|
|
|
446
446
|
const report = generateMarkdownReport(stats, history);
|
|
447
447
|
|
|
448
448
|
// Ensure reports directory exists
|
|
449
|
-
const reportsDir = path.join(projectPath, '.
|
|
449
|
+
const reportsDir = path.join(projectPath, '.sce', 'reports');
|
|
450
450
|
await fs.ensureDir(reportsDir);
|
|
451
451
|
|
|
452
452
|
// Generate filename with timestamp
|
|
@@ -790,7 +790,7 @@ async function handleCheckReferences(projectPath, reporter, options) {
|
|
|
790
790
|
// Save report if requested
|
|
791
791
|
if (options.report) {
|
|
792
792
|
const report = checker.generateReport(results);
|
|
793
|
-
const reportPath = path.join(projectPath, '.
|
|
793
|
+
const reportPath = path.join(projectPath, '.sce/reports', `doc-reference-check-${new Date().toISOString().split('T')[0]}.md`);
|
|
794
794
|
await checker.saveReport(report, reportPath);
|
|
795
795
|
console.log(chalk.green(`✅ Report saved to: ${reportPath}\n`));
|
|
796
796
|
}
|
package/lib/commands/doctor.js
CHANGED
|
@@ -204,7 +204,7 @@ function formatType(type) {
|
|
|
204
204
|
* Fix .gitignore for team collaboration
|
|
205
205
|
*
|
|
206
206
|
* Standalone command to check and fix .gitignore configuration.
|
|
207
|
-
* Replaces old blanket .
|
|
207
|
+
* Replaces old blanket .sce/ exclusion with layered strategy.
|
|
208
208
|
*/
|
|
209
209
|
async function fixGitignoreCommand() {
|
|
210
210
|
console.log(chalk.cyan('🔧 Checking .gitignore configuration...'));
|
|
@@ -33,7 +33,7 @@ function registerKnowledgeCommands(program) {
|
|
|
33
33
|
await manager.initialize();
|
|
34
34
|
|
|
35
35
|
console.log(chalk.green('✓ Knowledge base initialized'));
|
|
36
|
-
console.log(chalk.gray('\nDirectory: .
|
|
36
|
+
console.log(chalk.gray('\nDirectory: .sce/knowledge/'));
|
|
37
37
|
console.log(chalk.gray('\nNext steps:'));
|
|
38
38
|
console.log(chalk.gray(' sce knowledge add pattern "My First Pattern"'));
|
|
39
39
|
console.log(chalk.gray(' sce knowledge list'));
|
|
@@ -248,7 +248,7 @@ function registerKnowledgeCommands(program) {
|
|
|
248
248
|
console.log(chalk.gray(`Title: ${result.title}`));
|
|
249
249
|
|
|
250
250
|
if (options.backup !== false) {
|
|
251
|
-
console.log(chalk.gray('Backup created in .
|
|
251
|
+
console.log(chalk.gray('Backup created in .sce/knowledge/.backups/'));
|
|
252
252
|
}
|
|
253
253
|
|
|
254
254
|
} catch (error) {
|
package/lib/commands/lock.js
CHANGED
|
@@ -219,7 +219,7 @@ async function cleanupStaleLocks() {
|
|
|
219
219
|
*/
|
|
220
220
|
async function showMachineInfo() {
|
|
221
221
|
const workspaceRoot = process.cwd();
|
|
222
|
-
const configDir = path.join(workspaceRoot, '.
|
|
222
|
+
const configDir = path.join(workspaceRoot, '.sce', 'config');
|
|
223
223
|
const machineIdentifier = new MachineIdentifier(configDir);
|
|
224
224
|
|
|
225
225
|
const info = await machineIdentifier.getMachineInfo();
|
package/lib/commands/ops.js
CHANGED
|
@@ -40,7 +40,7 @@ async function initCommand(projectName, options = {}) {
|
|
|
40
40
|
|
|
41
41
|
console.log(chalk.green('✅ Operations specs created successfully!'));
|
|
42
42
|
console.log();
|
|
43
|
-
console.log(chalk.gray(`Location: .
|
|
43
|
+
console.log(chalk.gray(`Location: .sce/specs/${projectName}/operations/`));
|
|
44
44
|
console.log();
|
|
45
45
|
console.log(chalk.yellow('Next steps:'));
|
|
46
46
|
console.log(' 1. Fill in the operations spec documents');
|
|
@@ -11,8 +11,8 @@ const chalk = require('chalk');
|
|
|
11
11
|
const path = require('path');
|
|
12
12
|
const fs = require('fs-extra');
|
|
13
13
|
|
|
14
|
-
const SPECS_DIR = '.
|
|
15
|
-
const STATUS_FILE = '.
|
|
14
|
+
const SPECS_DIR = '.sce/specs';
|
|
15
|
+
const STATUS_FILE = '.sce/config/orchestration-status.json';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Run orchestration programmatically.
|
|
@@ -73,7 +73,7 @@ async function runOrchestration(options = {}, dependencies = {}) {
|
|
|
73
73
|
|
|
74
74
|
const bootstrapPromptBuilder = new BootstrapPromptBuilder(workspaceRoot, orchestratorConfig);
|
|
75
75
|
const machineIdentifier = new MachineIdentifier(
|
|
76
|
-
path.join(workspaceRoot, '.
|
|
76
|
+
path.join(workspaceRoot, '.sce', 'config')
|
|
77
77
|
);
|
|
78
78
|
const agentRegistry = new AgentRegistry(workspaceRoot, machineIdentifier);
|
|
79
79
|
const agentSpawner = new AgentSpawner(
|
package/lib/commands/rollback.js
CHANGED
|
@@ -128,7 +128,7 @@ async function rollbackCommand(options = {}) {
|
|
|
128
128
|
|
|
129
129
|
// 4. Confirm with user (unless --auto)
|
|
130
130
|
if (!auto) {
|
|
131
|
-
console.log(chalk.yellow('⚠️ Warning: This will replace your current .
|
|
131
|
+
console.log(chalk.yellow('⚠️ Warning: This will replace your current .sce/ directory'));
|
|
132
132
|
console.log(chalk.gray('A backup of the current state will be created first'));
|
|
133
133
|
console.log();
|
|
134
134
|
|