@konitif/workbench 0.284.1 → 0.285.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +0 -0
- package/README.md +57 -52
- package/package.json +5 -4
- package/reference/README.md +10 -0
- package/reference/catalog.json +356 -0
- package/reference/diagrams.json +298 -0
package/LICENSE.md
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
@@ -1,54 +1,59 @@
|
|
|
1
1
|
# @konitif/workbench
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
`@konitif/workbench
|
|
46
|
-
`
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
3
|
+
Workspace composition, docking, registries and hosting contracts for KONITIF
|
|
4
|
+
applications.
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
npm install @konitif/workbench
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## What it provides
|
|
13
|
+
|
|
14
|
+
- Workspace, layout, panel and shell contracts.
|
|
15
|
+
- Tool and widget admission, registries and hosting adapters.
|
|
16
|
+
- Runtime lifecycle, checkpoint, recovery and observability contracts.
|
|
17
|
+
- Project preflight and repository-quality contracts.
|
|
18
|
+
- Explicit workspace persistence, synchronization and surface ports.
|
|
19
|
+
|
|
20
|
+
## Authority boundary
|
|
21
|
+
|
|
22
|
+
Workbench owns workspace and runtime coordination contracts. It does not own
|
|
23
|
+
hosted domain modules, UI projections, model assets or application policy.
|
|
24
|
+
Widgets and tools retain their own definitions; Workbench admits and hosts them.
|
|
25
|
+
Physical implementations remain in `@konitif/physics` and are only exposed here
|
|
26
|
+
through a compatibility entry.
|
|
27
|
+
|
|
28
|
+
## Quick start
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import { createWorkspace, validateWorkspace } from '@konitif/workbench/hosting';
|
|
32
|
+
|
|
33
|
+
const workspace = createWorkspace();
|
|
34
|
+
const issues = validateWorkspace(workspace);
|
|
35
|
+
|
|
36
|
+
if (issues.length > 0) {
|
|
37
|
+
console.error(issues);
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Public entry points
|
|
42
|
+
|
|
43
|
+
| Entry | Purpose |
|
|
44
|
+
| --- | --- |
|
|
45
|
+
| `@konitif/workbench` | Complete Workbench contract surface. |
|
|
46
|
+
| `@konitif/workbench/hosting` | Focused workspace hosting operations. |
|
|
47
|
+
| `@konitif/workbench/workspace-contracts` | State-orchestration contracts without host adapters. |
|
|
48
|
+
| `@konitif/workbench/physics-runtime` | Transitional forwarding entry for headless Physics contracts. |
|
|
49
|
+
|
|
50
|
+
## Reference
|
|
51
|
+
|
|
52
|
+
See [`reference/`](reference/) for the machine-readable capability catalog and
|
|
53
|
+
authority diagrams. Layout state and executable composition remain distinct
|
|
54
|
+
authorities even when projected by the same application shell.
|
|
55
|
+
|
|
56
|
+
## License
|
|
57
|
+
|
|
58
|
+
Source-available under [PolyForm Noncommercial 1.0.0](LICENSE.md), not OSI open
|
|
59
|
+
source. Commercial use requires separate written authorization.
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@konitif/workbench",
|
|
3
3
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
4
|
-
"version": "0.
|
|
5
|
-
"description": "
|
|
4
|
+
"version": "0.285.0",
|
|
5
|
+
"description": "Workspace composition, docking, registries and hosting contracts for KONITIF.",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git+https://github.com/LeMouf/konitif-workbench.git"
|
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
"dist",
|
|
38
38
|
"LICENSE.md",
|
|
39
39
|
"README.md",
|
|
40
|
-
"package.json"
|
|
40
|
+
"package.json",
|
|
41
|
+
"reference"
|
|
41
42
|
],
|
|
42
43
|
"scripts": {
|
|
43
44
|
"build": "node scripts/build.mjs",
|
|
@@ -46,7 +47,7 @@
|
|
|
46
47
|
},
|
|
47
48
|
"dependencies": {
|
|
48
49
|
"@konitif/tools": "0.284.3",
|
|
49
|
-
"@konitif/physics": "0.
|
|
50
|
+
"@konitif/physics": "0.285.0",
|
|
50
51
|
"@konitif/widgets": "0.285.0",
|
|
51
52
|
"@konitif/temporal": "0.284.1",
|
|
52
53
|
"@konitif/core": "0.284.2"
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Workbench reference
|
|
2
|
+
|
|
3
|
+
This directory contains authored, machine-readable documentation for
|
|
4
|
+
`@konitif/workbench`.
|
|
5
|
+
|
|
6
|
+
- [`catalog.json`](catalog.json) groups workspace, runtime and hosting contracts.
|
|
7
|
+
- [`diagrams.json`](diagrams.json) describes authority, derivation and recovery flows.
|
|
8
|
+
|
|
9
|
+
These files support documentation tooling. They are not workspace snapshots,
|
|
10
|
+
runtime state or an executable application manifest.
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0.0",
|
|
3
|
+
"package": "@konitif/workbench",
|
|
4
|
+
"intent": "Provide the contracts and authorities of a composable work environment independently of its UI projections.",
|
|
5
|
+
"clusters": [
|
|
6
|
+
{
|
|
7
|
+
"id": "runtime-domain",
|
|
8
|
+
"title": "Runtime authority",
|
|
9
|
+
"summary": "Lifecycle, plans, checkpoints, observations, suspension, and resumption of a Workbench execution.",
|
|
10
|
+
"authority": "Canonical runtime session state, distinct from the executed definition and its projections.",
|
|
11
|
+
"owns": [
|
|
12
|
+
"runtime sessions",
|
|
13
|
+
"lifecycle transitions",
|
|
14
|
+
"correlated observations"
|
|
15
|
+
],
|
|
16
|
+
"doesNotOwn": [
|
|
17
|
+
"authored composition",
|
|
18
|
+
"workspace layout",
|
|
19
|
+
"external physical effect"
|
|
20
|
+
],
|
|
21
|
+
"workflow": [
|
|
22
|
+
"Admit",
|
|
23
|
+
"Execute",
|
|
24
|
+
"Observe",
|
|
25
|
+
"Resume"
|
|
26
|
+
],
|
|
27
|
+
"sourcePrefixes": [
|
|
28
|
+
"domain/runtime/"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "composition-domain",
|
|
33
|
+
"title": "Executable composition",
|
|
34
|
+
"summary": "Canonical plans and assemblies that describe what can be executed independently of their editor.",
|
|
35
|
+
"authority": "Versioned, commandable composition artifact.",
|
|
36
|
+
"owns": [
|
|
37
|
+
"executable structure",
|
|
38
|
+
"semantic revision",
|
|
39
|
+
"dependencies"
|
|
40
|
+
],
|
|
41
|
+
"doesNotOwn": [
|
|
42
|
+
"visual positions",
|
|
43
|
+
"runtime session",
|
|
44
|
+
"derived result"
|
|
45
|
+
],
|
|
46
|
+
"workflow": [
|
|
47
|
+
"Declare",
|
|
48
|
+
"Validate",
|
|
49
|
+
"Version",
|
|
50
|
+
"Derive"
|
|
51
|
+
],
|
|
52
|
+
"sourcePrefixes": [
|
|
53
|
+
"domain/composition/"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "workspace-layout-domain",
|
|
58
|
+
"title": "Workspace and layout",
|
|
59
|
+
"summary": "Organization of surfaces, panels, zones, and spatial interactions in a work environment.",
|
|
60
|
+
"authority": "Workspace configuration, separate from the meaning of open subjects.",
|
|
61
|
+
"owns": [
|
|
62
|
+
"layout tree",
|
|
63
|
+
"panels",
|
|
64
|
+
"modes and preferences"
|
|
65
|
+
],
|
|
66
|
+
"doesNotOwn": [
|
|
67
|
+
"executed composition",
|
|
68
|
+
"internal tool state"
|
|
69
|
+
],
|
|
70
|
+
"workflow": [
|
|
71
|
+
"Compose",
|
|
72
|
+
"Arrange",
|
|
73
|
+
"Persist",
|
|
74
|
+
"Rehydrate"
|
|
75
|
+
],
|
|
76
|
+
"sourcePrefixes": [
|
|
77
|
+
"domain/workspace/",
|
|
78
|
+
"domain/layout/",
|
|
79
|
+
"domain/panel/",
|
|
80
|
+
"domain/workbench/"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "extensions-domain",
|
|
85
|
+
"title": "Tools, widgets, and surfaces",
|
|
86
|
+
"summary": "Extension contracts that let the Workbench host capabilities without owning them.",
|
|
87
|
+
"authority": "Admission and resolution of portable contributions.",
|
|
88
|
+
"owns": [
|
|
89
|
+
"extension contracts",
|
|
90
|
+
"contribution identities",
|
|
91
|
+
"required capabilities"
|
|
92
|
+
],
|
|
93
|
+
"doesNotOwn": [
|
|
94
|
+
"hosted domain implementation",
|
|
95
|
+
"concrete UI rendering"
|
|
96
|
+
],
|
|
97
|
+
"workflow": [
|
|
98
|
+
"Define",
|
|
99
|
+
"Register",
|
|
100
|
+
"Resolve",
|
|
101
|
+
"Host"
|
|
102
|
+
],
|
|
103
|
+
"sourcePrefixes": [
|
|
104
|
+
"domain/tool/",
|
|
105
|
+
"domain/widget/",
|
|
106
|
+
"domain/surface/"
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "project-launch-domain",
|
|
111
|
+
"title": "Project, launch, and repository",
|
|
112
|
+
"summary": "Contracts for identifying, preflighting, qualifying, and admitting a project into the Workbench.",
|
|
113
|
+
"authority": "Project admission decision and associated diagnostics.",
|
|
114
|
+
"owns": [
|
|
115
|
+
"project manifests",
|
|
116
|
+
"launch steps",
|
|
117
|
+
"repository diagnostics"
|
|
118
|
+
],
|
|
119
|
+
"doesNotOwn": [
|
|
120
|
+
"repository content",
|
|
121
|
+
"proof of general validity"
|
|
122
|
+
],
|
|
123
|
+
"workflow": [
|
|
124
|
+
"Identify",
|
|
125
|
+
"Inspect",
|
|
126
|
+
"Qualify",
|
|
127
|
+
"Admit"
|
|
128
|
+
],
|
|
129
|
+
"sourcePrefixes": [
|
|
130
|
+
"domain/project/",
|
|
131
|
+
"domain/launch/",
|
|
132
|
+
"domain/repository/",
|
|
133
|
+
"domain/repo-quality/"
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"id": "temporal-physics-domain",
|
|
138
|
+
"title": "Time, physics, and input",
|
|
139
|
+
"summary": "Coordinate, history, physics calculation, and input contracts used by hosted capabilities.",
|
|
140
|
+
"authority": "Shared calculation and coordination models without ownership of external hardware.",
|
|
141
|
+
"owns": [
|
|
142
|
+
"temporal coordinates",
|
|
143
|
+
"physics models",
|
|
144
|
+
"input intents"
|
|
145
|
+
],
|
|
146
|
+
"doesNotOwn": [
|
|
147
|
+
"system clock",
|
|
148
|
+
"external physical subject",
|
|
149
|
+
"device"
|
|
150
|
+
],
|
|
151
|
+
"workflow": [
|
|
152
|
+
"Describe",
|
|
153
|
+
"Calculate",
|
|
154
|
+
"Sample",
|
|
155
|
+
"Observe"
|
|
156
|
+
],
|
|
157
|
+
"sourcePrefixes": [
|
|
158
|
+
"domain/temporal/",
|
|
159
|
+
"domain/physics/",
|
|
160
|
+
"domain/input/"
|
|
161
|
+
]
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"id": "presentation-foundations",
|
|
165
|
+
"title": "Presentation foundations",
|
|
166
|
+
"summary": "Language, icons, design system, shell, and presentation metadata independent of components.",
|
|
167
|
+
"authority": "Presentation contracts consumable by multiple projections.",
|
|
168
|
+
"owns": [
|
|
169
|
+
"descriptors",
|
|
170
|
+
"translations",
|
|
171
|
+
"visual identities"
|
|
172
|
+
],
|
|
173
|
+
"doesNotOwn": [
|
|
174
|
+
"DOM",
|
|
175
|
+
"Svelte components",
|
|
176
|
+
"business state"
|
|
177
|
+
],
|
|
178
|
+
"workflow": [
|
|
179
|
+
"Declare",
|
|
180
|
+
"Resolve",
|
|
181
|
+
"Project"
|
|
182
|
+
],
|
|
183
|
+
"sourcePrefixes": [
|
|
184
|
+
"domain/i18n/",
|
|
185
|
+
"domain/icon/",
|
|
186
|
+
"domain/design-system/",
|
|
187
|
+
"domain/presentation/",
|
|
188
|
+
"domain/shell/",
|
|
189
|
+
"domain/shared/"
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"id": "workspace-application",
|
|
194
|
+
"title": "Workspace application",
|
|
195
|
+
"summary": "Use cases for composing and manipulating workspaces.",
|
|
196
|
+
"authority": "Application orchestration of the workspace.",
|
|
197
|
+
"owns": [
|
|
198
|
+
"command routing",
|
|
199
|
+
"sessions",
|
|
200
|
+
"snapshots"
|
|
201
|
+
],
|
|
202
|
+
"doesNotOwn": [
|
|
203
|
+
"domain model",
|
|
204
|
+
"UI components"
|
|
205
|
+
],
|
|
206
|
+
"workflow": [
|
|
207
|
+
"Receive",
|
|
208
|
+
"Coordinate",
|
|
209
|
+
"Project"
|
|
210
|
+
],
|
|
211
|
+
"sourcePrefixes": [
|
|
212
|
+
"application/workspace/",
|
|
213
|
+
"application/layout/",
|
|
214
|
+
"application/shell/"
|
|
215
|
+
]
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"id": "runtime-application",
|
|
219
|
+
"title": "Runtime application",
|
|
220
|
+
"summary": "Plans, observations, checkpoints, and offload for the Workbench runtime.",
|
|
221
|
+
"authority": "Observable runtime coordination.",
|
|
222
|
+
"owns": [
|
|
223
|
+
"plans",
|
|
224
|
+
"checkpoints",
|
|
225
|
+
"observability"
|
|
226
|
+
],
|
|
227
|
+
"doesNotOwn": [
|
|
228
|
+
"external business effect"
|
|
229
|
+
],
|
|
230
|
+
"workflow": [
|
|
231
|
+
"Plan",
|
|
232
|
+
"Execute",
|
|
233
|
+
"Observe"
|
|
234
|
+
],
|
|
235
|
+
"sourcePrefixes": [
|
|
236
|
+
"application/runtime/"
|
|
237
|
+
]
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"id": "registries-and-project",
|
|
241
|
+
"title": "Project and registries",
|
|
242
|
+
"summary": "Manifests and registries that resolve available capabilities.",
|
|
243
|
+
"authority": "Application-level admission and resolution.",
|
|
244
|
+
"owns": [
|
|
245
|
+
"manifests",
|
|
246
|
+
"registries",
|
|
247
|
+
"translations"
|
|
248
|
+
],
|
|
249
|
+
"doesNotOwn": [
|
|
250
|
+
"registered implementations"
|
|
251
|
+
],
|
|
252
|
+
"workflow": [
|
|
253
|
+
"Declare",
|
|
254
|
+
"Register",
|
|
255
|
+
"Resolve"
|
|
256
|
+
],
|
|
257
|
+
"sourcePrefixes": [
|
|
258
|
+
"application/project/",
|
|
259
|
+
"application/registry/",
|
|
260
|
+
"application/i18n/"
|
|
261
|
+
]
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"id": "experiments-and-preflight",
|
|
265
|
+
"title": "Experiments and preflight",
|
|
266
|
+
"summary": "Controlled campaigns, observation recording, and preliminary repository verification.",
|
|
267
|
+
"authority": "Explicit experiment protocol and preflight decision.",
|
|
268
|
+
"owns": [
|
|
269
|
+
"campaigns",
|
|
270
|
+
"experimental observations",
|
|
271
|
+
"repository diagnostics"
|
|
272
|
+
],
|
|
273
|
+
"doesNotOwn": [
|
|
274
|
+
"general scientific result",
|
|
275
|
+
"repository content"
|
|
276
|
+
],
|
|
277
|
+
"workflow": [
|
|
278
|
+
"Prepare",
|
|
279
|
+
"Execute",
|
|
280
|
+
"Record"
|
|
281
|
+
],
|
|
282
|
+
"sourcePrefixes": [
|
|
283
|
+
"application/experiment/",
|
|
284
|
+
"application/repository/",
|
|
285
|
+
"domain/experiment/"
|
|
286
|
+
]
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"id": "infrastructure",
|
|
290
|
+
"title": "Infrastructure",
|
|
291
|
+
"summary": "Replaceable persistence and communication adapters.",
|
|
292
|
+
"authority": "Port implementation, not domain authority.",
|
|
293
|
+
"owns": [
|
|
294
|
+
"adapters",
|
|
295
|
+
"transport",
|
|
296
|
+
"storage"
|
|
297
|
+
],
|
|
298
|
+
"doesNotOwn": [
|
|
299
|
+
"business rules"
|
|
300
|
+
],
|
|
301
|
+
"workflow": [
|
|
302
|
+
"Adapt",
|
|
303
|
+
"Transmit",
|
|
304
|
+
"Restore"
|
|
305
|
+
],
|
|
306
|
+
"sourcePrefixes": [
|
|
307
|
+
"infrastructure/"
|
|
308
|
+
]
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"id": "temporal",
|
|
312
|
+
"title": "Temporal structures",
|
|
313
|
+
"summary": "Workbench compatibility contracts over the independent temporal layer.",
|
|
314
|
+
"authority": "Shared temporal model.",
|
|
315
|
+
"owns": [
|
|
316
|
+
"coordinates",
|
|
317
|
+
"dialects",
|
|
318
|
+
"projections"
|
|
319
|
+
],
|
|
320
|
+
"doesNotOwn": [
|
|
321
|
+
"external clock"
|
|
322
|
+
],
|
|
323
|
+
"workflow": [
|
|
324
|
+
"Declare",
|
|
325
|
+
"Resolve",
|
|
326
|
+
"Project"
|
|
327
|
+
],
|
|
328
|
+
"sourcePrefixes": [
|
|
329
|
+
"temporal/"
|
|
330
|
+
]
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"id": "boot-and-stage",
|
|
334
|
+
"title": "Initialization and staging",
|
|
335
|
+
"summary": "Prepares a session and its changes before admission.",
|
|
336
|
+
"authority": "Reversible preparation.",
|
|
337
|
+
"owns": [
|
|
338
|
+
"boot",
|
|
339
|
+
"preflight",
|
|
340
|
+
"staging"
|
|
341
|
+
],
|
|
342
|
+
"doesNotOwn": [
|
|
343
|
+
"committed state"
|
|
344
|
+
],
|
|
345
|
+
"workflow": [
|
|
346
|
+
"Prepare",
|
|
347
|
+
"Verify",
|
|
348
|
+
"Admit"
|
|
349
|
+
],
|
|
350
|
+
"sourcePrefixes": [
|
|
351
|
+
"boot/",
|
|
352
|
+
"stage/"
|
|
353
|
+
]
|
|
354
|
+
}
|
|
355
|
+
]
|
|
356
|
+
}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0.0",
|
|
3
|
+
"package": "@konitif/workbench",
|
|
4
|
+
"diagrams": [
|
|
5
|
+
{
|
|
6
|
+
"id": "workbench-authority-flow",
|
|
7
|
+
"title": "From project to Workbench projection",
|
|
8
|
+
"kind": "mechanism",
|
|
9
|
+
"summary": "Workbench contracts separate project admission, workspace state, execution, and observation.",
|
|
10
|
+
"nodes": [
|
|
11
|
+
{
|
|
12
|
+
"id": "manifest",
|
|
13
|
+
"label": "Project manifest",
|
|
14
|
+
"description": "Required and provided capabilities are declared."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "registry",
|
|
18
|
+
"label": "Registries",
|
|
19
|
+
"description": "Compatible tools, widgets, and dialects are resolved."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "workspace",
|
|
23
|
+
"label": "Workspace",
|
|
24
|
+
"description": "Panels, sessions, and artifacts are coordinated."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "plan",
|
|
28
|
+
"label": "Runtime plan",
|
|
29
|
+
"description": "An admitted execution is prepared.",
|
|
30
|
+
"tone": "runtime"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "observation",
|
|
34
|
+
"label": "Observation",
|
|
35
|
+
"description": "Checkpoints, diagnostics, and reported effects are captured.",
|
|
36
|
+
"tone": "observation"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "projection",
|
|
40
|
+
"label": "UI projection",
|
|
41
|
+
"description": "Surfaces make state manipulable.",
|
|
42
|
+
"tone": "projection"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"edges": [
|
|
46
|
+
{
|
|
47
|
+
"from": "manifest",
|
|
48
|
+
"to": "registry"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"from": "registry",
|
|
52
|
+
"to": "workspace"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"from": "workspace",
|
|
56
|
+
"to": "plan"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"from": "plan",
|
|
60
|
+
"to": "observation"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"from": "observation",
|
|
64
|
+
"to": "projection"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"caption": "Workbench remains usable through its contracts even if its current UI projection disappears."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "five-authority-planes",
|
|
71
|
+
"title": "Five authority planes that must remain distinct",
|
|
72
|
+
"kind": "boundary",
|
|
73
|
+
"summary": "A higher-order composition remains explicit when every state has one authority and an identifiable lifetime.",
|
|
74
|
+
"nodes": [
|
|
75
|
+
{
|
|
76
|
+
"id": "artifact",
|
|
77
|
+
"label": "Executable artifact",
|
|
78
|
+
"description": "Identity, structure, and revision of the subject to realize."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "workspace",
|
|
82
|
+
"label": "Workspace",
|
|
83
|
+
"description": "Surfaces, layout, modes, and working preferences."
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"id": "editable",
|
|
87
|
+
"label": "Editable projection",
|
|
88
|
+
"description": "Selection, zoom, positions, and local drafts.",
|
|
89
|
+
"tone": "projection"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "derived",
|
|
93
|
+
"label": "Derived artifact",
|
|
94
|
+
"description": "Reproducible result identified by its sources and configuration.",
|
|
95
|
+
"tone": "observation"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"id": "session",
|
|
99
|
+
"label": "Runtime session",
|
|
100
|
+
"description": "Current lifecycle, admitted commands, effects, and observations.",
|
|
101
|
+
"tone": "runtime"
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"edges": [
|
|
105
|
+
{
|
|
106
|
+
"from": "artifact",
|
|
107
|
+
"to": "workspace"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"from": "workspace",
|
|
111
|
+
"to": "editable"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"from": "editable",
|
|
115
|
+
"to": "derived"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"from": "derived",
|
|
119
|
+
"to": "session"
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"caption": "These planes cooperate but never silently transfer their identity or authority."
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"id": "workspace-command-roundtrip",
|
|
126
|
+
"title": "Round trip of a semantic change",
|
|
127
|
+
"kind": "lifecycle",
|
|
128
|
+
"summary": "An editable projection requests a change; only the canonical authority can create the revision later observed by surfaces.",
|
|
129
|
+
"nodes": [
|
|
130
|
+
{
|
|
131
|
+
"id": "gesture",
|
|
132
|
+
"label": "Surface gesture",
|
|
133
|
+
"description": "The user manipulates a projection.",
|
|
134
|
+
"tone": "projection"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"id": "intent",
|
|
138
|
+
"label": "Typed intent",
|
|
139
|
+
"description": "The gesture is translated without mutating the domain."
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"id": "route",
|
|
143
|
+
"label": "Command routing",
|
|
144
|
+
"description": "The capability and its authority are resolved."
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "commit",
|
|
148
|
+
"label": "Canonical commit",
|
|
149
|
+
"description": "The admitted command produces a new revision.",
|
|
150
|
+
"tone": "runtime"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"id": "snapshot",
|
|
154
|
+
"label": "Observable snapshot",
|
|
155
|
+
"description": "The new state is published to readers.",
|
|
156
|
+
"tone": "observation"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": "reproject",
|
|
160
|
+
"label": "Reprojection",
|
|
161
|
+
"description": "All legitimate surfaces converge on this reading.",
|
|
162
|
+
"tone": "projection"
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"edges": [
|
|
166
|
+
{
|
|
167
|
+
"from": "gesture",
|
|
168
|
+
"to": "intent"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"from": "intent",
|
|
172
|
+
"to": "route"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"from": "route",
|
|
176
|
+
"to": "commit"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"from": "commit",
|
|
180
|
+
"to": "snapshot"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"from": "snapshot",
|
|
184
|
+
"to": "reproject"
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
"caption": "A resize, zoom, or purely visual move stops in the projection and does not follow this cycle."
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"id": "derived-artifact-invalidation",
|
|
191
|
+
"title": "Produce and invalidate a derived artifact",
|
|
192
|
+
"kind": "mechanism",
|
|
193
|
+
"summary": "Workbench can reuse a result only while every source that determines it still matches.",
|
|
194
|
+
"nodes": [
|
|
195
|
+
{
|
|
196
|
+
"id": "sources",
|
|
197
|
+
"label": "Versioned sources",
|
|
198
|
+
"description": "Canonical revision, assets, and dependencies are identified."
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"id": "configuration",
|
|
202
|
+
"label": "Configuration",
|
|
203
|
+
"description": "Evaluator, runtime, and relevant conditions complete the key."
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "key",
|
|
207
|
+
"label": "Derivation key",
|
|
208
|
+
"description": "The reproducible identity of the computation is built."
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"id": "result",
|
|
212
|
+
"label": "Derived result",
|
|
213
|
+
"description": "The computation and its useful observations are preserved.",
|
|
214
|
+
"tone": "observation"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"id": "reuse",
|
|
218
|
+
"label": "Reuse or recompute",
|
|
219
|
+
"description": "An equal key allows reading; a changed dependency invalidates its cone.",
|
|
220
|
+
"tone": "runtime"
|
|
221
|
+
}
|
|
222
|
+
],
|
|
223
|
+
"edges": [
|
|
224
|
+
{
|
|
225
|
+
"from": "sources",
|
|
226
|
+
"to": "configuration"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"from": "configuration",
|
|
230
|
+
"to": "key"
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"from": "key",
|
|
234
|
+
"to": "result"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"from": "result",
|
|
238
|
+
"to": "reuse"
|
|
239
|
+
}
|
|
240
|
+
],
|
|
241
|
+
"caption": "A layout change does not invalidate an independent semantic result."
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"id": "refresh-and-recovery",
|
|
245
|
+
"title": "Refresh, reconnection, and idempotent recovery",
|
|
246
|
+
"kind": "lifecycle",
|
|
247
|
+
"summary": "Recovery distinguishes persisted configuration, reread authority, and compatible session to avoid duplicate commands and revisions.",
|
|
248
|
+
"nodes": [
|
|
249
|
+
{
|
|
250
|
+
"id": "persisted",
|
|
251
|
+
"label": "Persisted configuration",
|
|
252
|
+
"description": "Layout, preferences, and references are restored."
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"id": "reread",
|
|
256
|
+
"label": "Reread authorities",
|
|
257
|
+
"description": "External and canonical states are checked before display."
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"id": "resolve",
|
|
261
|
+
"label": "Resolve the session",
|
|
262
|
+
"description": "A compatible session is resumed or a new one is explicitly created."
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"id": "reconcile",
|
|
266
|
+
"label": "Reconcile",
|
|
267
|
+
"description": "Cached, stale, unknown, ready, and failed remain distinct.",
|
|
268
|
+
"tone": "runtime"
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"id": "observe",
|
|
272
|
+
"label": "Publish the reading",
|
|
273
|
+
"description": "The projection receives a coherent snapshot without duplication.",
|
|
274
|
+
"tone": "observation"
|
|
275
|
+
}
|
|
276
|
+
],
|
|
277
|
+
"edges": [
|
|
278
|
+
{
|
|
279
|
+
"from": "persisted",
|
|
280
|
+
"to": "reread"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"from": "reread",
|
|
284
|
+
"to": "resolve"
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"from": "resolve",
|
|
288
|
+
"to": "reconcile"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"from": "reconcile",
|
|
292
|
+
"to": "observe"
|
|
293
|
+
}
|
|
294
|
+
],
|
|
295
|
+
"caption": "A repeated equivalent observation creates no new session, command, or revision."
|
|
296
|
+
}
|
|
297
|
+
]
|
|
298
|
+
}
|