scene-capability-engine 3.3.23 → 3.3.25

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 CHANGED
@@ -7,6 +7,64 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+ - Errorbook registry health command for centralized registry governance:
12
+ - `sce errorbook health-registry`
13
+ - validates registry config readability, source/index reachability, and index bucket-to-shard resolution
14
+ - New script gate:
15
+ - `node scripts/errorbook-registry-health-gate.js`
16
+ - supports strict mode via `SCE_REGISTRY_HEALTH_STRICT=1`
17
+
18
+ ### Changed
19
+ - `prepublishOnly` now runs `gate:errorbook-registry-health` in advisory mode before `errorbook-release` gate.
20
+ - Autonomous execution defaults are now hard-set to autonomous progression:
21
+ - `lib/auto/config-schema.js` default mode changed to `aggressive`
22
+ - default checkpoints now skip phase/final review pauses (`phaseCompletion=false`, `finalReview=false`)
23
+ - default safety confirmations for production/external/destructive are disabled in autonomous mode baseline
24
+ - `sce auto run/create` CLI defaults now use `--mode aggressive`
25
+ - Steering hard rule strengthened: when the same issue fails target validation for 2 consecutive fix rounds, the 3rd round must switch to debug-log-driven diagnosis first (no blind patching without evidence).
26
+ - `errorbook record` now enforces the same policy operationally:
27
+ - from the 3rd repeated record attempt of the same fingerprint, debug evidence becomes mandatory
28
+ - accepted signals include `--verification "debug: ..."`, `debug-evidence` tag, or debug trace/log references
29
+ - Spec workflow now enforces domain-first scene modeling:
30
+ - `spec bootstrap` auto-generates mandatory artifacts:
31
+ - `.sce/specs/<spec>/custom/problem-domain-map.md`
32
+ - `.sce/specs/<spec>/custom/scene-spec.md`
33
+ - `.sce/specs/<spec>/custom/problem-domain-chain.json`
34
+ - `spec gate` hard-fail rule `domain_scene_modeling` now validates both markdown structure and machine-readable chain payload:
35
+ - `problem/ontology/hypotheses/risks/decision_execution_path/correction_loop/verification`
36
+ - Added explicit domain modeling command set (also available via `sce spec domain ...` route):
37
+ - `sce spec-domain init --spec <id>`
38
+ - `sce spec-domain validate --spec <id> [--fail-on-error]`
39
+ - `sce spec-domain refresh --spec <id>`
40
+ - Studio plan/generate now consume domain modeling context for correction guidance:
41
+ - `sce studio plan` supports `--spec <id>` to ingest `.sce/specs/<spec>/custom/problem-domain-chain.json` deterministically
42
+ - when `--spec` is omitted, `plan` auto-selects the latest scene-matching chain (`scene_id`)
43
+ - `sce studio generate` writes chain-aware metadata and `generate` stage report at `.sce/reports/studio/generate-<job-id>.json`
44
+ - `sce studio verify` / `sce studio release` now include domain-chain metadata in reports and pass `spec_id` into auto errorbook failure capture
45
+ - Added historical related-spec retrieval for faster new-problem analysis:
46
+ - new command: `sce spec-related` (alias route: `sce spec related`)
47
+ - supports query/scene/spec-seeded lookup and relevance ranking
48
+ - `sce studio plan` now auto-loads related historical specs into job metadata (`source.related_specs`)
49
+
50
+ ## [3.3.23] - 2026-02-27
51
+
52
+ ### Added
53
+ - Adoption/default template coverage now includes central registry and orchestrator configs across init/adopt/upgrade flows:
54
+ - `.sce/config/errorbook-registry.json`
55
+ - `.sce/config/orchestrator.json`
56
+ - Adoption config classification and backup critical-file handling now include:
57
+ - `config/errorbook-registry.json`
58
+ - `config/orchestrator.json`
59
+
60
+ ### Changed
61
+ - Errorbook registry template defaults are now enabled out of the box:
62
+ - `enabled: true`
63
+ - `sources[central].enabled: true`
64
+ - Central registry defaults point to the official shared registry:
65
+ - `https://raw.githubusercontent.com/heguangyong/sce-errorbook-registry/main/registry/errorbook-registry.json`
66
+ - `https://raw.githubusercontent.com/heguangyong/sce-errorbook-registry/main/registry/errorbook-registry.index.json`
67
+
10
68
  ## [3.3.22] - 2026-02-27
11
69
 
12
70
  ### Added
@@ -19,6 +19,8 @@ const { registerSteeringCommands } = require('../lib/commands/steering');
19
19
  const { registerSpecBootstrapCommand } = require('../lib/commands/spec-bootstrap');
20
20
  const { registerSpecPipelineCommand } = require('../lib/commands/spec-pipeline');
21
21
  const { registerSpecGateCommand } = require('../lib/commands/spec-gate');
22
+ const { registerSpecDomainCommand } = require('../lib/commands/spec-domain');
23
+ const { registerSpecRelatedCommand } = require('../lib/commands/spec-related');
22
24
  const { registerValueCommands } = require('../lib/commands/value');
23
25
  const VersionChecker = require('../lib/version/version-checker');
24
26
  const {
@@ -55,6 +57,8 @@ const program = new Command();
55
57
  * - `sce spec bootstrap ...` -> `sce spec-bootstrap ...`
56
58
  * - `sce spec pipeline ...` -> `sce spec-pipeline ...`
57
59
  * - `sce spec gate ...` -> `sce spec-gate ...`
60
+ * - `sce spec domain ...` -> `sce spec-domain ...`
61
+ * - `sce spec related ...` -> `sce spec-related ...`
58
62
  * - `sce spec create <name> ...` -> `sce create-spec <name> ...`
59
63
  * - `sce spec <name> ...` -> `sce create-spec <name> ...` (legacy)
60
64
  *
@@ -89,6 +93,16 @@ function normalizeSpecCommandArgs(argv) {
89
93
  return normalized;
90
94
  }
91
95
 
96
+ if (commandToken === 'domain') {
97
+ normalized.splice(commandIndex, 2, 'spec-domain');
98
+ return normalized;
99
+ }
100
+
101
+ if (commandToken === 'related') {
102
+ normalized.splice(commandIndex, 2, 'spec-related');
103
+ return normalized;
104
+ }
105
+
92
106
  if (commandToken === 'create') {
93
107
  normalized.splice(commandIndex, 2, 'create-spec');
94
108
  return normalized;
@@ -332,6 +346,12 @@ registerSpecPipelineCommand(program);
332
346
  // Spec gate command
333
347
  registerSpecGateCommand(program);
334
348
 
349
+ // Spec domain modeling command
350
+ registerSpecDomainCommand(program);
351
+
352
+ // Spec related lookup command
353
+ registerSpecRelatedCommand(program);
354
+
335
355
  // 系统诊断命令
336
356
  program
337
357
  .command('doctor')
@@ -562,8 +562,16 @@ your-project/
562
562
  │ │ ├── ENVIRONMENT.md
563
563
  │ │ ├── CURRENT_CONTEXT.md
564
564
  │ │ └── RULES_GUIDE.md
565
+ │ ├── config/ # Runtime/adoption baseline configs
566
+ │ │ ├── studio-security.json
567
+ │ │ ├── orchestrator.json
568
+ │ │ └── errorbook-registry.json
565
569
  │ ├── tools/ # Ultrawork tools
566
570
  │ │ └── ultrawork_enhancer.py
571
+ │ ├── hooks/ # Default hooks
572
+ │ │ ├── check-spec-on-create.sce.hook
573
+ │ │ ├── run-tests-on-save.sce.hook
574
+ │ │ └── sync-tasks-on-edit.sce.hook
567
575
  │ ├── backups/ # Automatic backups
568
576
  │ │ └── adopt-{timestamp}/
569
577
  │ └── README.md
@@ -433,7 +433,7 @@ sce auto stop
433
433
 
434
434
  ## Execution Modes
435
435
 
436
- ### Conservative Mode (Default)
436
+ ### Conservative Mode
437
437
 
438
438
  **Best for**: Production features, critical systems, first-time users
439
439
 
@@ -479,7 +479,7 @@ sce auto stop
479
479
  }
480
480
  ```
481
481
 
482
- ### Aggressive Mode
482
+ ### Aggressive Mode (Default)
483
483
 
484
484
  **Best for**: Rapid prototyping, experimental features, experienced users
485
485
 
@@ -511,13 +511,13 @@ Location: `.sce/auto/config.json`
511
511
  ```json
512
512
  {
513
513
  "version": "1.0.0",
514
- "mode": "balanced",
514
+ "mode": "aggressive",
515
515
  "checkpoints": {
516
516
  "requirementsReview": false,
517
517
  "designReview": false,
518
518
  "tasksReview": false,
519
- "phaseCompletion": true,
520
- "finalReview": true,
519
+ "phaseCompletion": false,
520
+ "finalReview": false,
521
521
  "errorThreshold": 3
522
522
  },
523
523
  "errorRecovery": {
@@ -527,9 +527,9 @@ Location: `.sce/auto/config.json`
527
527
  "learningEnabled": true
528
528
  },
529
529
  "safety": {
530
- "requireProductionConfirmation": true,
531
- "requireExternalResourceConfirmation": true,
532
- "requireDestructiveOperationConfirmation": true,
530
+ "requireProductionConfirmation": false,
531
+ "requireExternalResourceConfirmation": false,
532
+ "requireDestructiveOperationConfirmation": false,
533
533
  "allowedOperations": [],
534
534
  "blockedOperations": []
535
535
  },
@@ -2,8 +2,8 @@
2
2
 
3
3
  > Quick reference for all `sce` commands
4
4
 
5
- **Version**: 2.0.0
6
- **Last Updated**: 2026-02-26
5
+ **Version**: 3.3.23
6
+ **Last Updated**: 2026-02-27
7
7
 
8
8
  ---
9
9
 
@@ -57,6 +57,10 @@ sce create-spec 01-00-feature-name
57
57
 
58
58
  # Bootstrap full Spec draft (requirements/design/tasks)
59
59
  sce spec bootstrap --name 01-00-feature-name --scene scene.customer-order-inventory --non-interactive
60
+ # Bootstrap now also generates mandatory scene artifacts:
61
+ # - .sce/specs/<spec>/custom/problem-domain-map.md
62
+ # - .sce/specs/<spec>/custom/scene-spec.md
63
+ # - .sce/specs/<spec>/custom/problem-domain-chain.json (machine-readable chain model)
60
64
 
61
65
  # Run pipeline for one Spec
62
66
  sce spec pipeline run --spec 01-00-feature-name --scene scene.customer-order-inventory
@@ -64,6 +68,15 @@ sce spec pipeline run --spec 01-00-feature-name --scene scene.customer-order-inv
64
68
  # Run gate for one Spec
65
69
  sce spec gate run --spec 01-00-feature-name --scene scene.customer-order-inventory --json
66
70
 
71
+ # Maintain domain modeling artifacts explicitly
72
+ sce spec domain init --spec 01-00-feature-name --scene scene.customer-order-inventory --json
73
+ sce spec domain validate --spec 01-00-feature-name --fail-on-error --json
74
+ sce spec domain refresh --spec 01-00-feature-name --scene scene.customer-order-inventory --json
75
+
76
+ # Find related historical specs before starting a new analysis
77
+ sce spec related --query "customer order inventory reconciliation drift" --scene scene.customer-order-inventory --json
78
+ sce spec related --spec 01-00-feature-name --limit 8 --json
79
+
67
80
  # Multi-Spec mode defaults to orchestrate routing
68
81
  sce spec bootstrap --specs "spec-a,spec-b" --max-parallel 3
69
82
  sce spec pipeline run --specs "spec-a,spec-b" --max-parallel 3
@@ -77,6 +90,11 @@ Spec session governance:
77
90
  - `spec bootstrap|pipeline run|gate run` must bind to an active scene primary session (`--scene <scene-id>` or implicit binding from latest/unique active scene).
78
91
  - When multiple active scenes exist, you must pass `--scene` explicitly.
79
92
  - Multi-Spec orchestrate fallback (`--specs ...`) follows the same scene binding and writes per-spec child-session archive records.
93
+ - `spec bootstrap` always generates problem-domain and scene-spec artifacts to force domain-first exploration.
94
+ - `spec gate` now hard-fails when either of the following is missing or structurally incomplete:
95
+ - `.sce/specs/<spec>/custom/problem-domain-map.md`
96
+ - `.sce/specs/<spec>/custom/scene-spec.md`
97
+ - `.sce/specs/<spec>/custom/problem-domain-chain.json`
80
98
 
81
99
  ### Value Metrics
82
100
 
@@ -362,6 +380,9 @@ sce errorbook export --status promoted --min-quality 75 --out .sce/errorbook/exp
362
380
  # Sync central registry (GitHub raw URL or local file) to local cache
363
381
  sce errorbook sync-registry --source https://raw.githubusercontent.com/heguangyong/sce-errorbook-registry/main/registry/errorbook-registry.json --json
364
382
 
383
+ # Validate registry config/source/index health
384
+ sce errorbook health-registry --json
385
+
365
386
  # Promote only after strict gate checks pass
366
387
  sce errorbook promote <entry-id> --json
367
388
 
@@ -389,11 +410,17 @@ sce errorbook release-gate --min-risk high --fail-on-block --json
389
410
 
390
411
  # Git managed hard gate (default in prepublish and studio release preflight)
391
412
  node scripts/git-managed-gate.js --fail-on-violation --json
413
+
414
+ # Registry health gate (advisory by default; strict when env enabled)
415
+ node scripts/errorbook-registry-health-gate.js --json
416
+ SCE_REGISTRY_HEALTH_STRICT=1 node scripts/errorbook-registry-health-gate.js --json
392
417
  ```
393
418
 
394
419
  Curated quality policy (`宁缺毋滥,优胜略汰`) defaults:
395
420
  - `record` requires: `title`, `symptom`, `root_cause`, and at least one `fix_action`.
396
421
  - Fingerprint dedup is automatic; repeated records merge evidence and increment occurrence count.
422
+ - Repeated-failure hard rule: from attempt `#3` of the same fingerprint (two failed rounds already happened), record must include debug evidence.
423
+ Recommended forms: `--verification "debug: ..."` or tag `debug-evidence` or debug trace/log file references.
397
424
  - `promote` enforces strict gate:
398
425
  - `root_cause` present
399
426
  - `fix_actions` non-empty
@@ -414,6 +441,10 @@ Curated quality policy (`宁缺毋滥,优胜略汰`) defaults:
414
441
  - `sync-registry` pulls external registry JSON into local cache (`.sce/errorbook/registry-cache.json`) for unified `find` retrieval.
415
442
  - `find --include-registry --registry-mode remote` supports direct remote query for large registries (no full local sync required).
416
443
  - Recommended for large registries: maintain a remote index file (`registry/errorbook-registry.index.json`) and shard files, then provide `index_url` in registry config.
444
+ - Since `v3.3.23`, `sce init` / `sce adopt` default baseline includes enabled central registry config in `.sce/config/errorbook-registry.json`.
445
+ - `health-registry` validates config readability, source/index accessibility, and index-to-shard resolution before release.
446
+ - `gate:errorbook-registry-health` runs in advisory mode by default during `prepublishOnly`.
447
+ Set `SCE_REGISTRY_HEALTH_STRICT=1` to fail release when registry health reports errors.
417
448
  - `git-managed-gate` blocks release when:
418
449
  - worktree has uncommitted changes
419
450
  - branch has no upstream
@@ -428,6 +459,8 @@ Curated quality policy (`宁缺毋滥,优胜略汰`) defaults:
428
459
  ```bash
429
460
  # Build a plan from chat/session context (scene is mandatory and becomes the primary session anchor)
430
461
  sce studio plan --scene scene.customer-order-inventory --from-chat session-20260226 --goal "customer+order+inventory demo" --json
462
+ # Recommended: bind spec explicitly so Studio can ingest problem-domain-chain deterministically
463
+ sce studio plan --scene scene.customer-order-inventory --spec 01-00-customer-order-inventory --from-chat session-20260226 --goal "customer+order+inventory demo" --json
431
464
 
432
465
  # Generate patch bundle metadata (scene is inherited from plan)
433
466
  sce studio generate --target 331 --json
@@ -460,11 +493,16 @@ SCE_STUDIO_REQUIRE_AUTH=1 SCE_STUDIO_AUTH_PASSWORD=top-secret sce studio apply -
460
493
 
461
494
  Stage guardrails are enforced by default:
462
495
  - `plan` requires `--scene`; SCE binds one active primary session per scene
496
+ - `plan --spec <id>` (recommended) ingests `.sce/specs/<spec>/custom/problem-domain-chain.json` into studio job context
497
+ - when `--spec` is omitted, `plan` auto-resolves the latest matching spec chain by `scene_id` when available
498
+ - `plan` auto-searches related historical specs by `scene + goal` and writes top candidates into job metadata (`source.related_specs`)
463
499
  - successful `release` auto-archives current scene session and auto-opens the next scene cycle session
464
500
  - `generate` requires `plan`
501
+ - `generate` consumes the plan-stage domain-chain context and writes chain-aware metadata/report (`.sce/reports/studio/generate-<job-id>.json`)
465
502
  - `apply` requires `generate`
466
503
  - `verify` requires `apply`
467
504
  - `release` requires `verify`
505
+ - `verify` / `release` reports and failure auto-records inherit `spec_id + domain-chain` context for better root-cause traceability
468
506
 
469
507
  Studio gate execution defaults:
470
508
  - `verify --profile standard` runs executable gates (unit test script when available, interactive governance report when present, scene package publish-batch dry-run when handoff manifest exists)
@@ -544,6 +582,7 @@ Multi-agent merge governance default:
544
582
  ```bash
545
583
  # One-command close-loop execution:
546
584
  # goal -> auto master/sub decomposition -> collab metadata -> orchestration -> terminal result
585
+ # default behavior is enforced autonomous progression (no per-step confirmation pauses)
547
586
  sce auto close-loop "build autonomous close-loop and master/sub orchestration"
548
587
  # default sub-spec count is auto-selected by goal complexity (typically 3-5)
549
588
 
@@ -87,6 +87,7 @@ Notes:
87
87
  - `url` must be a raw JSON URL (`raw.githubusercontent.com`) or use a local file path.
88
88
  - `search_mode` supports `cache|remote|hybrid` (recommended: `remote` for very large registries).
89
89
  - Local cache file is used by cache/hybrid mode.
90
+ - Since `v3.3.23`, `sce init` / `sce adopt` template baselines include this config by default (central source enabled).
90
91
 
91
92
  ## 4) Daily Workflow
92
93
 
@@ -106,6 +107,11 @@ sce errorbook sync-registry --source https://raw.githubusercontent.com/heguangyo
106
107
  ```bash
107
108
  sce errorbook find --query "approve order timeout" --include-registry --json
108
109
  sce errorbook find --query "approve order timeout" --include-registry --registry-mode remote --json
110
+
111
+ # Validate central registry health (config/source/index/shard)
112
+ sce errorbook health-registry --json
113
+ # Optional strict gate in CI/release
114
+ SCE_REGISTRY_HEALTH_STRICT=1 node scripts/errorbook-registry-health-gate.js --json
109
115
  ```
110
116
 
111
117
  ## 5) Governance Rules
@@ -114,3 +120,9 @@ sce errorbook find --query "approve order timeout" --include-registry --registry
114
120
  - Do not publish sensitive tenant/customer data.
115
121
  - Temporary mitigation entries must remain bounded and governed (exit criteria, cleanup task, deadline).
116
122
  - Keep central registry append-only by PR review; deprecate low-value entries through normal curation.
123
+ - Recommended central repo gates:
124
+ - `node scripts/validate-registry.js`
125
+ - `node scripts/check-index-coverage.js --min-coverage 85`
126
+ - Recommended project-side release gates:
127
+ - `npm run gate:errorbook-registry-health` (advisory default)
128
+ - `SCE_REGISTRY_HEALTH_STRICT=1 npm run gate:errorbook-registry-health` (strict)
@@ -5,14 +5,14 @@
5
5
 
6
6
  const DEFAULT_CONFIG = {
7
7
  version: '1.0.0',
8
- mode: 'balanced',
8
+ mode: 'aggressive',
9
9
 
10
10
  checkpoints: {
11
11
  requirementsReview: false,
12
12
  designReview: false,
13
13
  tasksReview: false,
14
- phaseCompletion: true,
15
- finalReview: true,
14
+ phaseCompletion: false,
15
+ finalReview: false,
16
16
  errorThreshold: 5
17
17
  },
18
18
 
@@ -24,9 +24,9 @@ const DEFAULT_CONFIG = {
24
24
  },
25
25
 
26
26
  safety: {
27
- requireProductionConfirmation: true,
28
- requireExternalResourceConfirmation: true,
29
- requireDestructiveOperationConfirmation: true,
27
+ requireProductionConfirmation: false,
28
+ requireExternalResourceConfirmation: false,
29
+ requireDestructiveOperationConfirmation: false,
30
30
  allowedOperations: [],
31
31
  blockedOperations: []
32
32
  },
@@ -74,7 +74,7 @@ const MODE_PRESETS = {
74
74
  designReview: false,
75
75
  tasksReview: false,
76
76
  phaseCompletion: false,
77
- finalReview: true,
77
+ finalReview: false,
78
78
  errorThreshold: 10
79
79
  }
80
80
  }
@@ -104,7 +104,7 @@ function registerAutoCommands(program) {
104
104
  auto
105
105
  .command('run <spec-name>')
106
106
  .description('Run Spec autonomously')
107
- .option('-m, --mode <mode>', 'Execution mode (conservative|balanced|aggressive)', 'balanced')
107
+ .option('-m, --mode <mode>', 'Execution mode (conservative|balanced|aggressive)', 'aggressive')
108
108
  .action(async (specName, options) => {
109
109
  try {
110
110
  console.log(chalk.blue(`Starting autonomous execution: ${specName}`));
@@ -133,7 +133,7 @@ function registerAutoCommands(program) {
133
133
  .command('create <feature-description>')
134
134
  .description('Create and run Spec autonomously')
135
135
  .option('-n, --name <name>', 'Spec name')
136
- .option('-m, --mode <mode>', 'Execution mode', 'balanced')
136
+ .option('-m, --mode <mode>', 'Execution mode', 'aggressive')
137
137
  .action(async (description, options) => {
138
138
  try {
139
139
  const specName = options.name || generateSpecName(description);