scene-capability-engine 3.6.54 → 3.6.56
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 +26 -0
- package/README.md +11 -2
- package/README.zh.md +11 -2
- package/bin/scene-capability-engine.js +12 -0
- package/docs/app-intent-apply-contract.md +263 -0
- package/docs/autonomous-control-guide.md +10 -0
- package/docs/command-reference.md +34 -0
- package/docs/examples/app-intent-phase1/.sce/app/collections/planning-workbench.json +34 -0
- package/docs/examples/app-intent-phase1/.sce/app/collections/sales-workbench.json +40 -0
- package/docs/examples/app-intent-phase1/.sce/app/collections/warehouse-kiosk.json +35 -0
- package/docs/examples/app-intent-phase1/.sce/app/scene-profiles/planning-desktop.json +23 -0
- package/docs/examples/app-intent-phase1/.sce/app/scene-profiles/sales-desktop.json +24 -0
- package/docs/examples/app-intent-phase1/.sce/app/scene-profiles/warehouse-tablet.json +23 -0
- package/docs/examples/app-intent-phase1/README.md +29 -0
- package/docs/magicball-app-collection-phase-1.md +170 -0
- package/docs/magicball-cli-invocation-examples.md +41 -0
- package/docs/magicball-integration-doc-index.md +21 -6
- package/docs/magicball-integration-issue-tracker.md +42 -3
- package/docs/magicball-sce-adaptation-guide.md +38 -9
- package/docs/releases/README.md +3 -0
- package/docs/releases/v3.6.55.md +18 -0
- package/docs/releases/v3.6.56.md +19 -0
- package/docs/spec-workflow.md +40 -0
- package/docs/zh/releases/README.md +3 -0
- package/docs/zh/releases/v3.6.55.md +18 -0
- package/docs/zh/releases/v3.6.56.md +19 -0
- package/lib/app/collection-store.js +127 -0
- package/lib/app/install-apply-runner.js +192 -0
- package/lib/app/install-plan-service.js +410 -0
- package/lib/app/scene-workspace-store.js +132 -0
- package/lib/commands/app.js +281 -0
- package/lib/commands/device.js +194 -0
- package/lib/commands/scene.js +228 -0
- package/lib/commands/spec-strategy.js +73 -0
- package/lib/device/current-device.js +158 -0
- package/lib/device/device-override-store.js +157 -0
- package/lib/spec/complexity-strategy.js +636 -0
- package/package.json +1 -1
- package/template/.sce/README.md +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.6.56] - 2026-03-17
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Added Spec `129-00-complex-problem-program-escalation` to formalize how SCE should decide between `single-spec`, `multi-spec-program`, and `research-program` for highly entangled problems.
|
|
14
|
+
- Added read-only `sce spec strategy assess` so SCE can explicitly recommend `single-spec`, `multi-spec-program`, or `research-program` from either a broad goal or an existing Spec.
|
|
15
|
+
- Added copy-ready phase-1 app intent examples under `docs/examples/app-intent-phase1/.sce/app/collections` and `docs/examples/app-intent-phase1/.sce/app/scene-profiles`, covering sales desktop, planning desktop, and warehouse tablet scenarios.
|
|
16
|
+
- Added `docs/app-intent-apply-contract.md` to document the stable JSON contract for `sce app collection apply --json` and `sce scene workspace apply --json`.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- MagicBall-facing docs and command reference now point directly to copy-ready sample assets, explicit apply JSON contract guidance, and the phase-2 direction of lightweight user-intent sync rather than device-state sync.
|
|
20
|
+
- Spec workflow and autonomous-control guidance now explicitly describe when a problem should escalate from one Spec to a coordinated program-level path.
|
|
21
|
+
|
|
22
|
+
## [3.6.55] - 2026-03-16
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
- Added `sce device current` as a read-only current-device identity projection that avoids persisting a machine-id file when no persistent device id exists yet.
|
|
26
|
+
- Added `sce device override show|upsert` so local per-device add/remove overlays can be inspected and updated through explicit CLI governance instead of hand-editing `.sce/state/device/device-override.json`.
|
|
27
|
+
- Added `sce app collection list/show` as file-backed intent read models rooted at `.sce/app/collections/*.json`.
|
|
28
|
+
- Added `sce scene workspace list/show` as file-backed scene-profile read models rooted at `.sce/app/scene-profiles/*.json`.
|
|
29
|
+
- Added `sce app install-state list` so MagicBall and CLI users can inspect current cross-app installation facts from one local device-oriented view.
|
|
30
|
+
- Added plan-first `sce app collection apply` and `sce scene workspace apply` diff commands with guarded explicit execution. `--execute` now reuses existing runtime install/uninstall only when the plan is fully resolvable; unresolved collections, missing app bundles, and active-release protection still block execution.
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
- `sce app runtime install` and `sce app runtime uninstall` now stamp runtime installation metadata with the current device identifier and hostname, making local installation facts attributable without introducing a second install-management mechanism.
|
|
34
|
+
- Collection/workspace resolution now respects file-backed local device overrides at `.sce/state/device/device-override.json` and item-level `capability_tags`, so per-device add/remove decisions and capability mismatch skips are explained in the generated plan instead of being silently ignored.
|
|
35
|
+
|
|
10
36
|
## [3.6.54] - 2026-03-16
|
|
11
37
|
|
|
12
38
|
### Added
|
package/README.md
CHANGED
|
@@ -163,7 +163,12 @@ For IDEs, AI shells, or custom frontends, the most important SCE surfaces are:
|
|
|
163
163
|
|
|
164
164
|
MagicBall-specific integration surfaces now also include:
|
|
165
165
|
|
|
166
|
+
- `sce device current`
|
|
167
|
+
- `sce device override show|upsert`
|
|
166
168
|
- `sce app bundle list|show|register`
|
|
169
|
+
- `sce app collection list|show|apply`
|
|
170
|
+
- `sce app install-state list`
|
|
171
|
+
- `sce scene workspace list|show|apply`
|
|
167
172
|
- `sce app registry status|configure|sync*`
|
|
168
173
|
- `sce app runtime show|releases|install|activate|uninstall`
|
|
169
174
|
- `sce app engineering show|attach|hydrate|activate`
|
|
@@ -178,6 +183,10 @@ Demo remote registries:
|
|
|
178
183
|
- `magicball-app-service-catalog`
|
|
179
184
|
- demo app key: `customer-order-demo`
|
|
180
185
|
|
|
186
|
+
Scene-oriented install-management references:
|
|
187
|
+
- examples: `docs/examples/app-intent-phase1/.sce/app/...`
|
|
188
|
+
- apply JSON contract: `docs/app-intent-apply-contract.md`
|
|
189
|
+
|
|
181
190
|
---
|
|
182
191
|
|
|
183
192
|
## Documentation
|
|
@@ -218,5 +227,5 @@ MIT. See [LICENSE](LICENSE).
|
|
|
218
227
|
|
|
219
228
|
---
|
|
220
229
|
|
|
221
|
-
**Version**: 3.6.
|
|
222
|
-
**Last Updated**: 2026-03-
|
|
230
|
+
**Version**: 3.6.56
|
|
231
|
+
**Last Updated**: 2026-03-17
|
package/README.zh.md
CHANGED
|
@@ -168,7 +168,12 @@ SCE 默认是强治理的。
|
|
|
168
168
|
|
|
169
169
|
面向 MagicBall 的当前关键接口还包括:
|
|
170
170
|
|
|
171
|
+
- `sce device current`
|
|
172
|
+
- `sce device override show|upsert`
|
|
171
173
|
- `sce app bundle list|show|register`
|
|
174
|
+
- `sce app collection list|show|apply`
|
|
175
|
+
- `sce app install-state list`
|
|
176
|
+
- `sce scene workspace list|show|apply`
|
|
172
177
|
- `sce app registry status|configure|sync*`
|
|
173
178
|
- `sce app runtime show|releases|install|activate|uninstall`
|
|
174
179
|
- `sce app engineering show|attach|hydrate|activate`
|
|
@@ -183,6 +188,10 @@ SCE 默认是强治理的。
|
|
|
183
188
|
- `magicball-app-service-catalog`
|
|
184
189
|
- 示例 app key:`customer-order-demo`
|
|
185
190
|
|
|
191
|
+
面向场景的安装管理参考:
|
|
192
|
+
- 示例:`docs/examples/app-intent-phase1/.sce/app/...`
|
|
193
|
+
- apply JSON 契约:`docs/app-intent-apply-contract.md`
|
|
194
|
+
|
|
186
195
|
---
|
|
187
196
|
|
|
188
197
|
## 文档入口
|
|
@@ -223,5 +232,5 @@ MIT,见 [LICENSE](LICENSE)。
|
|
|
223
232
|
|
|
224
233
|
---
|
|
225
234
|
|
|
226
|
-
**版本**:3.6.
|
|
227
|
-
**最后更新**:2026-03-
|
|
235
|
+
**版本**:3.6.56
|
|
236
|
+
**最后更新**:2026-03-17
|
|
@@ -21,6 +21,7 @@ const { registerSpecPipelineCommand } = require('../lib/commands/spec-pipeline')
|
|
|
21
21
|
const { registerSpecGateCommand } = require('../lib/commands/spec-gate');
|
|
22
22
|
const { registerSpecDomainCommand } = require('../lib/commands/spec-domain');
|
|
23
23
|
const { registerSpecRelatedCommand } = require('../lib/commands/spec-related');
|
|
24
|
+
const { registerSpecStrategyCommand } = require('../lib/commands/spec-strategy');
|
|
24
25
|
const { registerTimelineCommands } = require('../lib/commands/timeline');
|
|
25
26
|
const { registerValueCommands } = require('../lib/commands/value');
|
|
26
27
|
const { registerTaskCommands } = require('../lib/commands/task');
|
|
@@ -67,6 +68,7 @@ const program = new Command();
|
|
|
67
68
|
* - `sce spec gate ...` -> `sce spec-gate ...`
|
|
68
69
|
* - `sce spec domain ...` -> `sce spec-domain ...`
|
|
69
70
|
* - `sce spec related ...` -> `sce spec-related ...`
|
|
71
|
+
* - `sce spec strategy ...` -> `sce spec-strategy ...`
|
|
70
72
|
* - `sce spec create <name> ...` -> `sce create-spec <name> ...`
|
|
71
73
|
* - `sce spec <name> ...` -> `sce create-spec <name> ...` (legacy)
|
|
72
74
|
*
|
|
@@ -111,6 +113,11 @@ function normalizeSpecCommandArgs(argv) {
|
|
|
111
113
|
return normalized;
|
|
112
114
|
}
|
|
113
115
|
|
|
116
|
+
if (commandToken === 'strategy') {
|
|
117
|
+
normalized.splice(commandIndex, 2, 'spec-strategy');
|
|
118
|
+
return normalized;
|
|
119
|
+
}
|
|
120
|
+
|
|
114
121
|
if (commandToken === 'create') {
|
|
115
122
|
normalized.splice(commandIndex, 2, 'create-spec');
|
|
116
123
|
return normalized;
|
|
@@ -414,6 +421,9 @@ registerSpecDomainCommand(program);
|
|
|
414
421
|
// Spec related lookup command
|
|
415
422
|
registerSpecRelatedCommand(program);
|
|
416
423
|
|
|
424
|
+
// Spec strategy assessment command
|
|
425
|
+
registerSpecStrategyCommand(program);
|
|
426
|
+
|
|
417
427
|
// 系统诊断命令
|
|
418
428
|
program
|
|
419
429
|
.command('doctor')
|
|
@@ -1054,7 +1064,9 @@ registerStateCommands(program);
|
|
|
1054
1064
|
registerCapabilityCommands(program);
|
|
1055
1065
|
|
|
1056
1066
|
const { registerAppCommands } = require('../lib/commands/app');
|
|
1067
|
+
const { registerDeviceCommands } = require('../lib/commands/device');
|
|
1057
1068
|
const { registerModeCommands } = require('../lib/commands/mode');
|
|
1069
|
+
registerDeviceCommands(program);
|
|
1058
1070
|
registerAppCommands(program);
|
|
1059
1071
|
registerModeCommands(program);
|
|
1060
1072
|
const { registerPmCommands } = require('../lib/commands/pm');
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# App Intent Apply Contract
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
|
|
5
|
+
This document defines the JSON response contract for:
|
|
6
|
+
|
|
7
|
+
- `sce app collection apply --collection <id> --json`
|
|
8
|
+
- `sce scene workspace apply --workspace <id> --json`
|
|
9
|
+
|
|
10
|
+
Both commands share the same payload shape. The only stable differences are:
|
|
11
|
+
|
|
12
|
+
- `mode`
|
|
13
|
+
- `summary.source_type`
|
|
14
|
+
- `summary.source_id`
|
|
15
|
+
- `plan.source`
|
|
16
|
+
|
|
17
|
+
## Top-Level Payload
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"mode": "app-collection-apply",
|
|
22
|
+
"generated_at": "2026-03-16T12:00:00.000Z",
|
|
23
|
+
"execute_supported": true,
|
|
24
|
+
"executed": false,
|
|
25
|
+
"execution_blocked_reason": null,
|
|
26
|
+
"execution": {
|
|
27
|
+
"results": [],
|
|
28
|
+
"preflight_failures": []
|
|
29
|
+
},
|
|
30
|
+
"current_device": {},
|
|
31
|
+
"device_override": {},
|
|
32
|
+
"summary": {},
|
|
33
|
+
"plan": {}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Field meanings
|
|
38
|
+
|
|
39
|
+
| Field | Type | Meaning |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| `mode` | string | `app-collection-apply` or `scene-workspace-apply` |
|
|
42
|
+
| `generated_at` | string | ISO timestamp |
|
|
43
|
+
| `execute_supported` | boolean | Current implementation supports explicit execution |
|
|
44
|
+
| `executed` | boolean | `true` only when `--execute` was requested and the plan really ran |
|
|
45
|
+
| `execution_blocked_reason` | string or null | Blocking reason when execution did not run |
|
|
46
|
+
| `execution.results` | array | Per-action execution result list |
|
|
47
|
+
| `execution.preflight_failures` | array | Preflight failures when execution is blocked by runtime readiness |
|
|
48
|
+
| `current_device` | object | Current device identity and capability projection |
|
|
49
|
+
| `device_override` | object | Normalized local device override from `.sce/state/device/device-override.json` |
|
|
50
|
+
| `summary` | object | Top-level counts for UI summary |
|
|
51
|
+
| `plan` | object | Full desired-set and action diff contract |
|
|
52
|
+
|
|
53
|
+
## Summary Contract
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"source_type": "app-collection",
|
|
58
|
+
"source_id": "sales-workbench",
|
|
59
|
+
"desired_app_count": 4,
|
|
60
|
+
"install_count": 2,
|
|
61
|
+
"activate_count": 1,
|
|
62
|
+
"uninstall_count": 1,
|
|
63
|
+
"keep_count": 0,
|
|
64
|
+
"skip_count": 1
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Plan Contract
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"source": {
|
|
73
|
+
"type": "app-collection",
|
|
74
|
+
"id": "sales-workbench",
|
|
75
|
+
"name": "Sales Workbench"
|
|
76
|
+
},
|
|
77
|
+
"current_device": {
|
|
78
|
+
"device_id": "desktop-01",
|
|
79
|
+
"capability_tags": ["desktop", "win32", "x64"]
|
|
80
|
+
},
|
|
81
|
+
"device_override": {
|
|
82
|
+
"removed_apps": ["crm"],
|
|
83
|
+
"added_apps": [
|
|
84
|
+
{
|
|
85
|
+
"app_key": "notes",
|
|
86
|
+
"required": false
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
"desired_apps": [],
|
|
91
|
+
"unresolved_collections": [],
|
|
92
|
+
"unresolved_apps": [],
|
|
93
|
+
"actions": [],
|
|
94
|
+
"counts": {
|
|
95
|
+
"install": 0,
|
|
96
|
+
"activate": 0,
|
|
97
|
+
"uninstall": 0,
|
|
98
|
+
"keep": 0,
|
|
99
|
+
"skip": 0
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### `desired_apps[]`
|
|
105
|
+
|
|
106
|
+
Each item is the resolved desired app set after collection/workspace expansion and local device override merge.
|
|
107
|
+
|
|
108
|
+
| Field | Type | Meaning |
|
|
109
|
+
| --- | --- | --- |
|
|
110
|
+
| `app_id` | string or null | Preferred explicit app identity when supplied |
|
|
111
|
+
| `app_key` | string or null | Preferred route and registry key |
|
|
112
|
+
| `required` | boolean | App is intended as required in the resolved desired set |
|
|
113
|
+
| `allow_local_remove` | boolean | Whether local removal is allowed in intent metadata |
|
|
114
|
+
| `priority` | number or null | Lower number means higher priority |
|
|
115
|
+
| `default_entry` | string or null | Preferred initial route |
|
|
116
|
+
| `capability_tags` | array | Capability filter merged from contributing items |
|
|
117
|
+
| `metadata` | object | Free-form metadata |
|
|
118
|
+
| `sources` | array | Provenance list such as `collection:<id>` or `workspace:<id>` |
|
|
119
|
+
|
|
120
|
+
### `actions[]`
|
|
121
|
+
|
|
122
|
+
Each item is the device-oriented diff result that the UI should render before execution.
|
|
123
|
+
|
|
124
|
+
| Field | Type | Meaning |
|
|
125
|
+
| --- | --- | --- |
|
|
126
|
+
| `app_id` | string or null | Resolved app id |
|
|
127
|
+
| `app_key` | string or null | Resolved app key |
|
|
128
|
+
| `app_name` | string or null | Human-readable bundle name when known |
|
|
129
|
+
| `decision` | string | `install`, `activate`, `uninstall`, `keep`, or `skip` |
|
|
130
|
+
| `reason` | string | Why this decision was generated |
|
|
131
|
+
| `install_status` | string | Current install status from bundle projection |
|
|
132
|
+
| `installed_release_id` | string or null | Currently installed release on this device |
|
|
133
|
+
| `active_release_id` | string or null | Currently active release |
|
|
134
|
+
| `required` | boolean | Whether the resolved desired set marks this as required |
|
|
135
|
+
| `sources` | array | Provenance list for desired entries; removals may be empty |
|
|
136
|
+
|
|
137
|
+
### Stable `decision` values
|
|
138
|
+
|
|
139
|
+
| Decision | Meaning |
|
|
140
|
+
| --- | --- |
|
|
141
|
+
| `install` | Desired app is not installed on this device |
|
|
142
|
+
| `activate` | Installed release exists but is not the active release |
|
|
143
|
+
| `uninstall` | App is installed but no longer desired on this device |
|
|
144
|
+
| `keep` | App already matches desired state |
|
|
145
|
+
| `skip` | Plan cannot safely execute this item automatically |
|
|
146
|
+
|
|
147
|
+
### Stable `reason` values currently emitted
|
|
148
|
+
|
|
149
|
+
| Reason | Meaning |
|
|
150
|
+
| --- | --- |
|
|
151
|
+
| `desired-app-not-installed` | Install candidate |
|
|
152
|
+
| `installed-release-not-active` | Activate candidate |
|
|
153
|
+
| `desired-app-already-installed` | Keep candidate |
|
|
154
|
+
| `not-desired-on-current-device` | Uninstall candidate |
|
|
155
|
+
| `device-capability-mismatch` | Desired app filtered out by capability tags |
|
|
156
|
+
| `app-bundle-not-found` | Desired app does not resolve to a known bundle |
|
|
157
|
+
| `active-release-protected` | Installed app is active and cannot be auto-uninstalled |
|
|
158
|
+
|
|
159
|
+
## Execution Contract
|
|
160
|
+
|
|
161
|
+
### `execution_blocked_reason`
|
|
162
|
+
|
|
163
|
+
Current stable values:
|
|
164
|
+
|
|
165
|
+
- `null`
|
|
166
|
+
- `unresolved-collections`
|
|
167
|
+
- `unresolved-app-bundles`
|
|
168
|
+
- `active-release-protected`
|
|
169
|
+
- comma-joined combinations such as `unresolved-collections,active-release-protected`
|
|
170
|
+
- `install-preflight-failed`
|
|
171
|
+
- `invalid-plan-action`
|
|
172
|
+
|
|
173
|
+
### `execution.results[]`
|
|
174
|
+
|
|
175
|
+
Returned only when execution actually runs.
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
[
|
|
179
|
+
{
|
|
180
|
+
"app_ref": "crm",
|
|
181
|
+
"decision": "install",
|
|
182
|
+
"success": true,
|
|
183
|
+
"summary": {
|
|
184
|
+
"app_id": "app.crm",
|
|
185
|
+
"install_status": "installed",
|
|
186
|
+
"installed_release_id": "rel.crm.1",
|
|
187
|
+
"active_release_id": "rel.crm.1"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### `execution.preflight_failures[]`
|
|
194
|
+
|
|
195
|
+
Returned when execution is blocked because install/activate candidates are not runtime-ready.
|
|
196
|
+
|
|
197
|
+
```json
|
|
198
|
+
[
|
|
199
|
+
{
|
|
200
|
+
"app_ref": "crm",
|
|
201
|
+
"reason": "no-installable-runtime-release"
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Current stable preflight reasons:
|
|
207
|
+
|
|
208
|
+
- `no-installable-runtime-release`
|
|
209
|
+
- `no-activatable-installed-release`
|
|
210
|
+
|
|
211
|
+
## Example: Plan Only
|
|
212
|
+
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"mode": "scene-workspace-apply",
|
|
216
|
+
"execute_supported": true,
|
|
217
|
+
"executed": false,
|
|
218
|
+
"execution_blocked_reason": null,
|
|
219
|
+
"summary": {
|
|
220
|
+
"source_type": "scene-workspace",
|
|
221
|
+
"source_id": "sales-desktop",
|
|
222
|
+
"desired_app_count": 4,
|
|
223
|
+
"install_count": 2,
|
|
224
|
+
"activate_count": 1,
|
|
225
|
+
"uninstall_count": 0,
|
|
226
|
+
"keep_count": 1,
|
|
227
|
+
"skip_count": 0
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Example: Executed
|
|
233
|
+
|
|
234
|
+
```json
|
|
235
|
+
{
|
|
236
|
+
"mode": "app-collection-apply",
|
|
237
|
+
"execute_supported": true,
|
|
238
|
+
"executed": true,
|
|
239
|
+
"execution_blocked_reason": null,
|
|
240
|
+
"execution": {
|
|
241
|
+
"results": [
|
|
242
|
+
{
|
|
243
|
+
"app_ref": "crm",
|
|
244
|
+
"decision": "install",
|
|
245
|
+
"success": true
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"app_ref": "todo",
|
|
249
|
+
"decision": "uninstall",
|
|
250
|
+
"success": true
|
|
251
|
+
}
|
|
252
|
+
],
|
|
253
|
+
"preflight_failures": []
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Frontend Guidance
|
|
259
|
+
|
|
260
|
+
- Treat `plan.actions` as the primary render contract for the diff table.
|
|
261
|
+
- Treat `summary` as the primary count badge contract.
|
|
262
|
+
- Treat `execution.results` as post-run feedback only; do not infer the plan from it.
|
|
263
|
+
- Use `execution_blocked_reason` and per-action `reason` together. One tells you why the full plan could not run; the other tells you why each row exists.
|
|
@@ -87,6 +87,16 @@ sce auto close-loop-program \
|
|
|
87
87
|
--program-audit-out .sce/reports/close-loop-program-audit.json \
|
|
88
88
|
--json
|
|
89
89
|
|
|
90
|
+
Use this path when the problem is broader than one Spec and already clearly points to multiple coordinated implementation tracks.
|
|
91
|
+
|
|
92
|
+
If the problem is still too unclear for direct implementation splitting, treat it as a research-first program and clarify domains/contracts/rules before expecting stable executable tasks from child Specs.
|
|
93
|
+
|
|
94
|
+
Suggested preflight:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
sce spec strategy assess --goal "broad complex goal" --json
|
|
98
|
+
```
|
|
99
|
+
|
|
90
100
|
# Controller command: drain queue goals with autonomous close-loop-program runtime
|
|
91
101
|
sce auto close-loop-controller .sce/auto/program-queue.lines \
|
|
92
102
|
--dequeue-limit 2 \
|
|
@@ -80,11 +80,18 @@ sce spec domain refresh --spec 01-00-feature-name --scene scene.customer-order-i
|
|
|
80
80
|
sce spec related --query "customer order inventory reconciliation drift" --scene scene.customer-order-inventory --json
|
|
81
81
|
sce spec related --spec 01-00-feature-name --limit 8 --json
|
|
82
82
|
|
|
83
|
+
# Assess whether one Spec is enough before decomposition
|
|
84
|
+
sce spec strategy assess --goal "broad complex goal" --json
|
|
85
|
+
sce spec strategy assess --spec 01-00-feature-name --json
|
|
86
|
+
|
|
83
87
|
# Multi-Spec mode defaults to orchestrate routing
|
|
84
88
|
sce spec bootstrap --specs "spec-a,spec-b" --max-parallel 3
|
|
85
89
|
sce spec pipeline run --specs "spec-a,spec-b" --max-parallel 3
|
|
86
90
|
sce spec gate run --specs "spec-a,spec-b" --max-parallel 3
|
|
87
91
|
|
|
92
|
+
# Very broad / entangled goals can use program mode first
|
|
93
|
+
sce auto close-loop-program "broad complex goal" --program-goals 4 --json
|
|
94
|
+
|
|
88
95
|
# Show Spec progress
|
|
89
96
|
sce status --verbose
|
|
90
97
|
```
|
|
@@ -93,6 +100,7 @@ Spec session governance:
|
|
|
93
100
|
- `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).
|
|
94
101
|
- When multiple active scenes exist, you must pass `--scene` explicitly.
|
|
95
102
|
- Multi-Spec orchestrate fallback (`--specs ...`) follows the same scene binding and writes per-spec child-session archive records.
|
|
103
|
+
- `sce spec strategy assess` is read-only and should be used when you are not sure whether the current problem still fits one Spec.
|
|
96
104
|
- `spec bootstrap` always generates problem-domain, scene-spec, and `problem-contract` artifacts to force domain-first exploration.
|
|
97
105
|
- `spec gate` now hard-fails when either of the following is missing or structurally incomplete:
|
|
98
106
|
- `.sce/specs/<spec>/custom/problem-domain-map.md`
|
|
@@ -104,6 +112,7 @@ Spec session governance:
|
|
|
104
112
|
- `scene-spec.md` must include `Closed-Loop Research Contract`
|
|
105
113
|
- `problem-domain-chain.json` must include `research_coverage` contract
|
|
106
114
|
- `sce spec domain coverage` reports coverage dimensions (scene boundary, entity/relation/rules/policy/flow, failure signals, debug evidence plan, verification gate).
|
|
115
|
+
- When one Spec cannot produce stable executable tasks, prefer escalating to a coordinated multi-Spec or program path instead of forcing more blind decomposition into the same Spec.
|
|
107
116
|
|
|
108
117
|
### Timeline Snapshots
|
|
109
118
|
|
|
@@ -378,11 +387,26 @@ sce workspace team
|
|
|
378
387
|
### App Bundle & MagicBall Mode Projection
|
|
379
388
|
|
|
380
389
|
```bash
|
|
390
|
+
# Current device baseline
|
|
391
|
+
sce device current --json
|
|
392
|
+
sce device override show --json
|
|
393
|
+
sce device override upsert --input device-override.patch.json --json
|
|
394
|
+
|
|
381
395
|
# List/show/register app bundles
|
|
382
396
|
sce app bundle list --json
|
|
383
397
|
sce app bundle show --app customer-order-demo --json
|
|
384
398
|
sce app bundle register --input bundle.json --json
|
|
385
399
|
|
|
400
|
+
# File-backed app collection intent
|
|
401
|
+
sce app collection list --json
|
|
402
|
+
sce app collection show --collection sales-workbench --json
|
|
403
|
+
sce app collection apply --collection sales-workbench --json
|
|
404
|
+
|
|
405
|
+
# File-backed scene workspace intent
|
|
406
|
+
sce scene workspace list --json
|
|
407
|
+
sce scene workspace show --workspace sales --json
|
|
408
|
+
sce scene workspace apply --workspace sales --json
|
|
409
|
+
|
|
386
410
|
# Configure and sync remote registries
|
|
387
411
|
sce app registry status --json
|
|
388
412
|
sce app registry configure --bundle-index-url <path-or-url> --service-index-url <path-or-url> --json
|
|
@@ -395,6 +419,10 @@ sce app runtime install --app customer-order-demo --release <release-id> --json
|
|
|
395
419
|
sce app runtime activate --app customer-order-demo --release <release-id> --json
|
|
396
420
|
sce app runtime uninstall --app customer-order-demo --release <release-id> --json
|
|
397
421
|
|
|
422
|
+
# Cross-app local install-state view
|
|
423
|
+
sce app install-state list --json
|
|
424
|
+
sce app install-state list --install-status installed --json
|
|
425
|
+
|
|
398
426
|
# Engineering projection
|
|
399
427
|
sce app engineering show --app customer-order-demo --json
|
|
400
428
|
sce app engineering attach --app customer-order-demo --repo <repo-url> --branch main --json
|
|
@@ -407,6 +435,12 @@ sce mode ontology home --app customer-order-demo --json
|
|
|
407
435
|
sce mode engineering home --app customer-order-demo --json
|
|
408
436
|
```
|
|
409
437
|
|
|
438
|
+
Device override notes:
|
|
439
|
+
- `sce device override show` returns the normalized local per-device overlay from `.sce/state/device/device-override.json`.
|
|
440
|
+
- `sce device override upsert --input <json>` merges only explicitly provided fields; omitted fields remain unchanged so local override policy is not blindly replaced.
|
|
441
|
+
- Copy-ready collection/workspace examples live under `docs/examples/app-intent-phase1/.sce/app/...`.
|
|
442
|
+
- Stable JSON contract for both apply commands is documented in `docs/app-intent-apply-contract.md`.
|
|
443
|
+
|
|
410
444
|
### PM Delivery Data Plane
|
|
411
445
|
|
|
412
446
|
```bash
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"collection_id": "planning-workbench",
|
|
3
|
+
"name": "Planning Workbench",
|
|
4
|
+
"description": "MRP, scheduling, and inventory analysis bundle for planning teams.",
|
|
5
|
+
"status": "active",
|
|
6
|
+
"tags": ["planning", "mrp", "inventory"],
|
|
7
|
+
"items": [
|
|
8
|
+
{
|
|
9
|
+
"app_key": "mrp",
|
|
10
|
+
"required": true,
|
|
11
|
+
"allow_local_remove": false,
|
|
12
|
+
"priority": 10,
|
|
13
|
+
"default_entry": "mrp/workbench"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"app_key": "scheduling",
|
|
17
|
+
"required": true,
|
|
18
|
+
"allow_local_remove": false,
|
|
19
|
+
"priority": 20,
|
|
20
|
+
"default_entry": "schedule/board"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"app_key": "inventory-insight",
|
|
24
|
+
"required": false,
|
|
25
|
+
"allow_local_remove": true,
|
|
26
|
+
"priority": 30,
|
|
27
|
+
"default_entry": "inventory/analysis"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"metadata": {
|
|
31
|
+
"owner_role": "planner",
|
|
32
|
+
"recommended_device_profile": "desktop-planning"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"collection_id": "sales-workbench",
|
|
3
|
+
"name": "Sales Workbench",
|
|
4
|
+
"description": "Daily sales follow-up, quotation, and customer visit bundle for desktop users.",
|
|
5
|
+
"status": "active",
|
|
6
|
+
"tags": ["sales", "crm", "quotation"],
|
|
7
|
+
"items": [
|
|
8
|
+
{
|
|
9
|
+
"app_key": "crm",
|
|
10
|
+
"required": true,
|
|
11
|
+
"allow_local_remove": false,
|
|
12
|
+
"priority": 10,
|
|
13
|
+
"default_entry": "crm/home"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"app_key": "quotation",
|
|
17
|
+
"required": true,
|
|
18
|
+
"allow_local_remove": false,
|
|
19
|
+
"priority": 20,
|
|
20
|
+
"default_entry": "quotation/dashboard"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"app_key": "customer-visit",
|
|
24
|
+
"required": false,
|
|
25
|
+
"allow_local_remove": true,
|
|
26
|
+
"priority": 30,
|
|
27
|
+
"default_entry": "visit/agenda"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"app_key": "notes",
|
|
31
|
+
"required": false,
|
|
32
|
+
"allow_local_remove": true,
|
|
33
|
+
"priority": 40
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"metadata": {
|
|
37
|
+
"owner_role": "sales",
|
|
38
|
+
"recommended_device_profile": "desktop-sales"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"collection_id": "warehouse-kiosk",
|
|
3
|
+
"name": "Warehouse Kiosk",
|
|
4
|
+
"description": "Lightweight warehouse execution bundle for tablet or kiosk devices.",
|
|
5
|
+
"status": "active",
|
|
6
|
+
"tags": ["warehouse", "tablet", "barcode"],
|
|
7
|
+
"items": [
|
|
8
|
+
{
|
|
9
|
+
"app_key": "barcode-scan",
|
|
10
|
+
"required": true,
|
|
11
|
+
"allow_local_remove": false,
|
|
12
|
+
"priority": 10,
|
|
13
|
+
"capability_tags": ["tablet"],
|
|
14
|
+
"default_entry": "scan/inbound"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"app_key": "inbound-receipt",
|
|
18
|
+
"required": true,
|
|
19
|
+
"allow_local_remove": false,
|
|
20
|
+
"priority": 20,
|
|
21
|
+
"capability_tags": ["tablet"]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"app_key": "label-print",
|
|
25
|
+
"required": false,
|
|
26
|
+
"allow_local_remove": true,
|
|
27
|
+
"priority": 30,
|
|
28
|
+
"capability_tags": ["tablet"]
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"metadata": {
|
|
32
|
+
"owner_role": "warehouse",
|
|
33
|
+
"recommended_device_profile": "tablet-kiosk"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"workspace_id": "planning-desktop",
|
|
3
|
+
"name": "Planning Desktop Workspace",
|
|
4
|
+
"description": "Desktop planning workspace that combines MRP, scheduling, and supply review.",
|
|
5
|
+
"status": "active",
|
|
6
|
+
"tags": ["planning", "desktop"],
|
|
7
|
+
"collection_refs": ["planning-workbench"],
|
|
8
|
+
"default_entry": "mrp/workbench",
|
|
9
|
+
"layout_hint": "wide-dashboard",
|
|
10
|
+
"items": [
|
|
11
|
+
{
|
|
12
|
+
"app_key": "supply-risk",
|
|
13
|
+
"required": false,
|
|
14
|
+
"allow_local_remove": true,
|
|
15
|
+
"priority": 40,
|
|
16
|
+
"capability_tags": ["desktop"]
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"metadata": {
|
|
20
|
+
"persona": "production-planner",
|
|
21
|
+
"device_type": "desktop"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"workspace_id": "sales-desktop",
|
|
3
|
+
"name": "Sales Desktop Workspace",
|
|
4
|
+
"description": "Desktop-first workspace for sales follow-up, quotation, and optional analytics.",
|
|
5
|
+
"status": "active",
|
|
6
|
+
"tags": ["sales", "desktop"],
|
|
7
|
+
"collection_refs": ["sales-workbench"],
|
|
8
|
+
"default_entry": "crm/home",
|
|
9
|
+
"layout_hint": "two-column",
|
|
10
|
+
"items": [
|
|
11
|
+
{
|
|
12
|
+
"app_key": "analytics",
|
|
13
|
+
"required": false,
|
|
14
|
+
"allow_local_remove": true,
|
|
15
|
+
"priority": 50,
|
|
16
|
+
"capability_tags": ["desktop"],
|
|
17
|
+
"default_entry": "analytics/sales-pipeline"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"metadata": {
|
|
21
|
+
"persona": "sales-representative",
|
|
22
|
+
"device_type": "desktop"
|
|
23
|
+
}
|
|
24
|
+
}
|