accrete-kit 0.0.0-stage → 0.1.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.
Files changed (134) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/LICENSE +21 -0
  3. package/README.md +148 -2
  4. package/bin/accrete-kit.mjs +4 -0
  5. package/dist/kernel/darwin-arm64/LICENSE +21 -0
  6. package/dist/kernel/darwin-arm64/THIRD-PARTY-NOTICES +5780 -0
  7. package/dist/kernel/darwin-arm64/accrete +0 -0
  8. package/dist/kernel/darwin-arm64/licenses/RUST-COPYRIGHT-library.html +7038 -0
  9. package/dist/kernel/darwin-arm64/licenses/musl-COPYRIGHT +193 -0
  10. package/dist/kernel/darwin-arm64/licenses/rust/Apache-2.0.txt +73 -0
  11. package/dist/kernel/darwin-arm64/licenses/rust/BSD-2-Clause.txt +9 -0
  12. package/dist/kernel/darwin-arm64/licenses/rust/CC-BY-SA-4.0.txt +427 -0
  13. package/dist/kernel/darwin-arm64/licenses/rust/GCC-exception-3.1.txt +30 -0
  14. package/dist/kernel/darwin-arm64/licenses/rust/GPL-2.0-only.txt +133 -0
  15. package/dist/kernel/darwin-arm64/licenses/rust/GPL-3.0-or-later.txt +202 -0
  16. package/dist/kernel/darwin-arm64/licenses/rust/ISC.txt +7 -0
  17. package/dist/kernel/darwin-arm64/licenses/rust/LLVM-exception.txt +15 -0
  18. package/dist/kernel/darwin-arm64/licenses/rust/MIT.txt +9 -0
  19. package/dist/kernel/darwin-arm64/licenses/rust/NCSA.txt +29 -0
  20. package/dist/kernel/darwin-arm64/licenses/rust/OFL-1.1.txt +43 -0
  21. package/dist/kernel/darwin-arm64/licenses/rust/Unicode-3.0.txt +39 -0
  22. package/dist/kernel/darwin-x64/LICENSE +21 -0
  23. package/dist/kernel/darwin-x64/THIRD-PARTY-NOTICES +5780 -0
  24. package/dist/kernel/darwin-x64/accrete +0 -0
  25. package/dist/kernel/darwin-x64/licenses/RUST-COPYRIGHT-library.html +7038 -0
  26. package/dist/kernel/darwin-x64/licenses/musl-COPYRIGHT +193 -0
  27. package/dist/kernel/darwin-x64/licenses/rust/Apache-2.0.txt +73 -0
  28. package/dist/kernel/darwin-x64/licenses/rust/BSD-2-Clause.txt +9 -0
  29. package/dist/kernel/darwin-x64/licenses/rust/CC-BY-SA-4.0.txt +427 -0
  30. package/dist/kernel/darwin-x64/licenses/rust/GCC-exception-3.1.txt +30 -0
  31. package/dist/kernel/darwin-x64/licenses/rust/GPL-2.0-only.txt +133 -0
  32. package/dist/kernel/darwin-x64/licenses/rust/GPL-3.0-or-later.txt +202 -0
  33. package/dist/kernel/darwin-x64/licenses/rust/ISC.txt +7 -0
  34. package/dist/kernel/darwin-x64/licenses/rust/LLVM-exception.txt +15 -0
  35. package/dist/kernel/darwin-x64/licenses/rust/MIT.txt +9 -0
  36. package/dist/kernel/darwin-x64/licenses/rust/NCSA.txt +29 -0
  37. package/dist/kernel/darwin-x64/licenses/rust/OFL-1.1.txt +43 -0
  38. package/dist/kernel/darwin-x64/licenses/rust/Unicode-3.0.txt +39 -0
  39. package/dist/kernel/kernel.json +17 -0
  40. package/dist/kernel/linux-arm64/LICENSE +21 -0
  41. package/dist/kernel/linux-arm64/THIRD-PARTY-NOTICES +5780 -0
  42. package/dist/kernel/linux-arm64/accrete +0 -0
  43. package/dist/kernel/linux-arm64/licenses/RUST-COPYRIGHT-library.html +7038 -0
  44. package/dist/kernel/linux-arm64/licenses/musl-COPYRIGHT +193 -0
  45. package/dist/kernel/linux-arm64/licenses/rust/Apache-2.0.txt +73 -0
  46. package/dist/kernel/linux-arm64/licenses/rust/BSD-2-Clause.txt +9 -0
  47. package/dist/kernel/linux-arm64/licenses/rust/CC-BY-SA-4.0.txt +427 -0
  48. package/dist/kernel/linux-arm64/licenses/rust/GCC-exception-3.1.txt +30 -0
  49. package/dist/kernel/linux-arm64/licenses/rust/GPL-2.0-only.txt +133 -0
  50. package/dist/kernel/linux-arm64/licenses/rust/GPL-3.0-or-later.txt +202 -0
  51. package/dist/kernel/linux-arm64/licenses/rust/ISC.txt +7 -0
  52. package/dist/kernel/linux-arm64/licenses/rust/LLVM-exception.txt +15 -0
  53. package/dist/kernel/linux-arm64/licenses/rust/MIT.txt +9 -0
  54. package/dist/kernel/linux-arm64/licenses/rust/NCSA.txt +29 -0
  55. package/dist/kernel/linux-arm64/licenses/rust/OFL-1.1.txt +43 -0
  56. package/dist/kernel/linux-arm64/licenses/rust/Unicode-3.0.txt +39 -0
  57. package/dist/kernel/linux-x64/LICENSE +21 -0
  58. package/dist/kernel/linux-x64/THIRD-PARTY-NOTICES +5780 -0
  59. package/dist/kernel/linux-x64/accrete +0 -0
  60. package/dist/kernel/linux-x64/licenses/RUST-COPYRIGHT-library.html +7038 -0
  61. package/dist/kernel/linux-x64/licenses/musl-COPYRIGHT +193 -0
  62. package/dist/kernel/linux-x64/licenses/rust/Apache-2.0.txt +73 -0
  63. package/dist/kernel/linux-x64/licenses/rust/BSD-2-Clause.txt +9 -0
  64. package/dist/kernel/linux-x64/licenses/rust/CC-BY-SA-4.0.txt +427 -0
  65. package/dist/kernel/linux-x64/licenses/rust/GCC-exception-3.1.txt +30 -0
  66. package/dist/kernel/linux-x64/licenses/rust/GPL-2.0-only.txt +133 -0
  67. package/dist/kernel/linux-x64/licenses/rust/GPL-3.0-or-later.txt +202 -0
  68. package/dist/kernel/linux-x64/licenses/rust/ISC.txt +7 -0
  69. package/dist/kernel/linux-x64/licenses/rust/LLVM-exception.txt +15 -0
  70. package/dist/kernel/linux-x64/licenses/rust/MIT.txt +9 -0
  71. package/dist/kernel/linux-x64/licenses/rust/NCSA.txt +29 -0
  72. package/dist/kernel/linux-x64/licenses/rust/OFL-1.1.txt +43 -0
  73. package/dist/kernel/linux-x64/licenses/rust/Unicode-3.0.txt +39 -0
  74. package/dist/scaffold/assets/contract/cli-v1.json +296 -0
  75. package/dist/scaffold/assets/contract/example-inputs.json +38 -0
  76. package/dist/scaffold/assets/contract/input-drafts.schema.json +654 -0
  77. package/dist/scaffold/assets/generated/cli-commands.md +288 -0
  78. package/dist/scaffold/assets/generated/release.json +11 -0
  79. package/dist/scaffold/assets/skills/accrete-data/SKILL.md +73 -0
  80. package/dist/scaffold/assets/skills/accrete-data/references/commands.md +193 -0
  81. package/dist/scaffold/assets/skills/accrete-data/references/objects-and-native-work.md +123 -0
  82. package/dist/scaffold/assets/skills/accrete-data/references/remote-and-retention.md +98 -0
  83. package/dist/scaffold/assets/skills/accrete-memory/SKILL.md +61 -0
  84. package/dist/scaffold/assets/skills/accrete-memory/references/commands.md +124 -0
  85. package/dist/scaffold/assets/skills/accrete-memory/references/handovers-and-remote-work.md +78 -0
  86. package/dist/scaffold/assets/skills/accrete-memory/references/writing-and-continuity.md +101 -0
  87. package/dist/scaffold/assets/skills/accrete-models/SKILL.md +46 -0
  88. package/dist/scaffold/assets/skills/accrete-models/references/cli.md +117 -0
  89. package/dist/scaffold/assets/skills/accrete-models/references/objects.md +67 -0
  90. package/dist/scaffold/assets/skills/accrete-models/references/working-practice.md +48 -0
  91. package/dist/scaffold/assets/skills/accrete-results/SKILL.md +69 -0
  92. package/dist/scaffold/assets/skills/accrete-results/references/activities-and-relations.md +116 -0
  93. package/dist/scaffold/assets/skills/accrete-results/references/commands.md +191 -0
  94. package/dist/scaffold/assets/skills/accrete-results/references/scientific-practice.md +89 -0
  95. package/dist/scaffold/assets/skills/accrete-tools/SKILL.md +51 -0
  96. package/dist/scaffold/assets/skills/accrete-tools/references/cli.md +87 -0
  97. package/dist/scaffold/assets/skills/accrete-tools/references/objects.md +66 -0
  98. package/dist/scaffold/assets/skills/accrete-tools/references/working-practice.md +51 -0
  99. package/dist/scaffold/assets/template/.accrete/PROJECT.md +31 -0
  100. package/dist/scaffold/assets/template/.accrete/config-examples/local-compute.toml.example +27 -0
  101. package/dist/scaffold/assets/template/.accrete/config-examples/local-workstation.toml.example +21 -0
  102. package/dist/scaffold/assets/template/.accrete/config-examples/project.toml.example +27 -0
  103. package/dist/scaffold/assets/template/.accrete/docs/cli-contract.md +393 -0
  104. package/dist/scaffold/assets/template/.accrete/docs/configuration.md +117 -0
  105. package/dist/scaffold/assets/template/.accrete/docs/coordinator.md +102 -0
  106. package/dist/scaffold/assets/template/.accrete/docs/long-term-work.md +108 -0
  107. package/dist/scaffold/assets/template/.accrete/docs/overview.md +118 -0
  108. package/dist/scaffold/assets/template/.accrete/docs/remote-work.md +125 -0
  109. package/dist/scaffold/assets/template/.accrete/docs/subagents.md +78 -0
  110. package/dist/scaffold/assets/template/.accrete/examples/README.md +78 -0
  111. package/dist/scaffold/assets/template/.accrete/examples/data-register.json +19 -0
  112. package/dist/scaffold/assets/template/.accrete/examples/iteration-close.json +5 -0
  113. package/dist/scaffold/assets/template/.accrete/examples/iteration-open.json +8 -0
  114. package/dist/scaffold/assets/template/.accrete/examples/memory-entry.md +10 -0
  115. package/dist/scaffold/assets/template/.accrete/examples/model-register.json +7 -0
  116. package/dist/scaffold/assets/template/.accrete/examples/observation.md +9 -0
  117. package/dist/scaffold/assets/template/.accrete/examples/result-amend.json +5 -0
  118. package/dist/scaffold/assets/template/.accrete/examples/result-record.json +11 -0
  119. package/dist/scaffold/assets/template/.accrete/examples/tool-admit.json +8 -0
  120. package/dist/scaffold/assets/template/.accrete/examples/tool-retire.json +3 -0
  121. package/dist/scaffold/assets/template/.accrete/examples/tool-update.json +3 -0
  122. package/dist/scaffold/assets/template/.gitattributes +17 -0
  123. package/dist/scaffold/assets/template/AGENTS.md +23 -0
  124. package/dist/scaffold/assets/template/CLAUDE.md +5 -0
  125. package/dist/scaffold/assets/template/_gitignore +12 -0
  126. package/dist/scaffold/config/defaults.toml +20 -0
  127. package/dist/scaffold/manifest.json +622 -0
  128. package/lib/cli.mjs +188 -0
  129. package/lib/fsutil.mjs +135 -0
  130. package/lib/install.mjs +439 -0
  131. package/lib/kernel.mjs +76 -0
  132. package/lib/scaffold.mjs +129 -0
  133. package/lib/workspace.mjs +278 -0
  134. package/package.json +18 -4
@@ -0,0 +1,654 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:accrete:template:input-drafts:v1",
4
+ "title": "ACCRETE v1 caller input drafts",
5
+ "description": "Caller payload shapes accepted by the accrete CLI. Select a definition through $defs; the root does not identify a command. This is not a persisted object envelope, identity allocator, runtime dependency, or scientific acceptance schema. Additional project extension fields are preserved. Paths, revisions, relationships, and merged documents receive mechanical validation in the CLI.",
6
+ "$comment": "Example drafts intentionally contain visible adaptation markers. A schema-valid draft is not necessarily ready to submit and does not establish that a referenced repository, path, revision, or object exists.",
7
+ "$defs": {
8
+ "nonemptyString": {
9
+ "type": "string",
10
+ "minLength": 1
11
+ },
12
+ "safeId": {
13
+ "type": "string",
14
+ "pattern": "^(?!\\.{1,2}$)[A-Za-z0-9._-]{1,180}$",
15
+ "description": "A stable object ID: 1-180 ASCII letters, digits, dots, underscores or hyphens, and not . or .. The Kernel generates a UUID when none is supplied."
16
+ },
17
+ "nullableString": {
18
+ "type": [
19
+ "string",
20
+ "null"
21
+ ]
22
+ },
23
+ "repository": {
24
+ "type": "object",
25
+ "properties": {
26
+ "checkout": {
27
+ "$ref": "#/$defs/nonemptyString",
28
+ "description": "Existing checkout. Treated exactly like --checkout: it creates the host-local binding and is removed from the portable descriptor. --checkout wins if both are given."
29
+ },
30
+ "locator": {
31
+ "type": "string",
32
+ "description": "Portable repository hint. The Kernel does not clone or fetch it."
33
+ },
34
+ "arrangement": {
35
+ "type": "string",
36
+ "description": "Free description of how the repository relates to the project, such as external or submodule."
37
+ }
38
+ },
39
+ "additionalProperties": true
40
+ },
41
+ "modelRegister": {
42
+ "type": "object",
43
+ "properties": {
44
+ "id": {
45
+ "$ref": "#/$defs/safeId",
46
+ "description": "Optional stable caller ID for an idempotent create."
47
+ },
48
+ "name": {
49
+ "$ref": "#/$defs/nonemptyString"
50
+ },
51
+ "description": {
52
+ "type": "string"
53
+ },
54
+ "aliases": {
55
+ "type": "array",
56
+ "items": {
57
+ "$ref": "#/$defs/nonemptyString"
58
+ }
59
+ },
60
+ "repository": {
61
+ "$ref": "#/$defs/repository"
62
+ },
63
+ "source_scope": {
64
+ "type": "array",
65
+ "items": {
66
+ "$ref": "#/$defs/nonemptyString"
67
+ },
68
+ "description": "Optional repository-relative program paths. --source-scope replaces this list."
69
+ }
70
+ },
71
+ "additionalProperties": true,
72
+ "description": "Supply repository here or --checkout on the command. Flags override matching fields."
73
+ },
74
+ "modelUpdate": {
75
+ "type": "object",
76
+ "propertyNames": {
77
+ "not": {
78
+ "$ref": "#/$defs/reservedField"
79
+ }
80
+ },
81
+ "additionalProperties": true,
82
+ "description": "JSON Merge Patch of editable Model fields."
83
+ },
84
+ "reservedField": {
85
+ "enum": [
86
+ "format",
87
+ "kind",
88
+ "id",
89
+ "project_id",
90
+ "created_at",
91
+ "updated_at"
92
+ ]
93
+ },
94
+ "iterationOpen": {
95
+ "type": "object",
96
+ "properties": {
97
+ "id": {
98
+ "$ref": "#/$defs/safeId"
99
+ },
100
+ "name": {
101
+ "$ref": "#/$defs/nonemptyString"
102
+ },
103
+ "purpose": {
104
+ "$ref": "#/$defs/nonemptyString"
105
+ },
106
+ "branch": {
107
+ "$ref": "#/$defs/nonemptyString",
108
+ "description": "New branch for a created worktree; without it Git creates a detached worktree."
109
+ },
110
+ "worktree": {
111
+ "$ref": "#/$defs/nonemptyString",
112
+ "description": "Working path, relative to the project root unless absolute. Created unless existing is true. Without it no storage is allocated."
113
+ },
114
+ "start": {
115
+ "$ref": "#/$defs/nonemptyString",
116
+ "description": "Starting revision; defaults to HEAD. An attached existing worktree supplies its own HEAD."
117
+ },
118
+ "existing": {
119
+ "type": "boolean",
120
+ "default": false,
121
+ "description": "Attach an existing worktree of the same repository instead of creating one. Requires worktree."
122
+ }
123
+ },
124
+ "additionalProperties": true,
125
+ "description": "Fields use the same names as the command's flags; flags override."
126
+ },
127
+ "iterationClose": {
128
+ "type": "object",
129
+ "properties": {
130
+ "outcome": {
131
+ "$ref": "#/$defs/nonemptyString",
132
+ "description": "Authored outcome; no fixed enumeration. Required from this file or --outcome."
133
+ },
134
+ "summary": {
135
+ "type": "string"
136
+ },
137
+ "commits": {
138
+ "type": "array",
139
+ "items": {
140
+ "$ref": "#/$defs/nonemptyString"
141
+ },
142
+ "description": "Relevant Git commits, when known. Each one is retained under refs/accrete/retained/."
143
+ }
144
+ },
145
+ "additionalProperties": true
146
+ },
147
+ "toolSource": {
148
+ "type": "object",
149
+ "required": [
150
+ "path"
151
+ ],
152
+ "properties": {
153
+ "path": {
154
+ "$ref": "#/$defs/nonemptyString"
155
+ },
156
+ "mode": {
157
+ "enum": [
158
+ "live",
159
+ "retained"
160
+ ]
161
+ },
162
+ "revision": {
163
+ "$ref": "#/$defs/nullableString",
164
+ "description": "Known source revision; retained mode requires matching usable material and an explicit revision."
165
+ }
166
+ },
167
+ "allOf": [
168
+ {
169
+ "if": {
170
+ "properties": {
171
+ "mode": {
172
+ "const": "retained"
173
+ }
174
+ },
175
+ "required": [
176
+ "mode"
177
+ ]
178
+ },
179
+ "then": {
180
+ "required": [
181
+ "revision"
182
+ ],
183
+ "properties": {
184
+ "revision": {
185
+ "$ref": "#/$defs/nonemptyString"
186
+ }
187
+ }
188
+ }
189
+ }
190
+ ],
191
+ "additionalProperties": true
192
+ },
193
+ "toolAdmit": {
194
+ "type": "object",
195
+ "properties": {
196
+ "id": {
197
+ "$ref": "#/$defs/safeId"
198
+ },
199
+ "name": {
200
+ "$ref": "#/$defs/nonemptyString"
201
+ },
202
+ "description": {
203
+ "type": "string"
204
+ },
205
+ "aliases": {
206
+ "type": "array",
207
+ "items": {
208
+ "$ref": "#/$defs/nonemptyString"
209
+ }
210
+ },
211
+ "source": {
212
+ "$ref": "#/$defs/toolSource"
213
+ }
214
+ },
215
+ "additionalProperties": true,
216
+ "description": "Supply source here or --source on the command. Flags override matching fields."
217
+ },
218
+ "toolSourcePatch": {
219
+ "type": [
220
+ "object",
221
+ "null"
222
+ ],
223
+ "properties": {
224
+ "path": {
225
+ "$ref": "#/$defs/nullableString"
226
+ },
227
+ "mode": {
228
+ "enum": [
229
+ "live",
230
+ "retained",
231
+ null
232
+ ]
233
+ },
234
+ "revision": {
235
+ "$ref": "#/$defs/nullableString"
236
+ }
237
+ },
238
+ "additionalProperties": true,
239
+ "description": "Partial source merge patch; null deletes a key. The CLI validates the resulting complete source selection."
240
+ },
241
+ "toolUpdate": {
242
+ "type": "object",
243
+ "propertyNames": {
244
+ "not": {
245
+ "$ref": "#/$defs/reservedField"
246
+ }
247
+ },
248
+ "properties": {
249
+ "name": {
250
+ "$ref": "#/$defs/nullableString"
251
+ },
252
+ "description": {
253
+ "$ref": "#/$defs/nullableString"
254
+ },
255
+ "aliases": {
256
+ "type": [
257
+ "array",
258
+ "null"
259
+ ],
260
+ "items": {
261
+ "$ref": "#/$defs/nonemptyString"
262
+ }
263
+ },
264
+ "source": {
265
+ "$ref": "#/$defs/toolSourcePatch"
266
+ }
267
+ },
268
+ "additionalProperties": true,
269
+ "description": "JSON Merge Patch of editable Tool fields. Null removes a key, arrays replace whole arrays, and unknown extension fields remain open. The CLI validates the merged document and expected revision."
270
+ },
271
+ "retire": {
272
+ "type": "object",
273
+ "properties": {
274
+ "reason": {
275
+ "$ref": "#/$defs/nonemptyString",
276
+ "description": "Stored on the descriptor."
277
+ }
278
+ },
279
+ "additionalProperties": true,
280
+ "description": "Optional --from document for tool retire, model retire and data retire."
281
+ },
282
+ "dataContent": {
283
+ "type": "object",
284
+ "properties": {
285
+ "kind": {
286
+ "enum": [
287
+ "file",
288
+ "directory",
289
+ "collection",
290
+ "external"
291
+ ],
292
+ "description": "Taken from --path when one is given; otherwise defaults to external."
293
+ },
294
+ "mode": {
295
+ "enum": [
296
+ "closed",
297
+ "live"
298
+ ],
299
+ "default": "closed",
300
+ "description": "closed for an intended fixed edition; live for mutable material."
301
+ },
302
+ "format": {
303
+ "type": "string"
304
+ },
305
+ "edition": {
306
+ "description": "Optional human description of the intended edition. It is not a transfer selector."
307
+ },
308
+ "size_bytes": {
309
+ "type": "integer",
310
+ "minimum": 0
311
+ },
312
+ "sha256": {
313
+ "type": "string",
314
+ "pattern": "^[0-9a-fA-F]{64}$",
315
+ "description": "SHA-256 of a regular file's bytes. Do not fabricate uncomputed values; a backend ETag is not a SHA-256."
316
+ }
317
+ },
318
+ "additionalProperties": true
319
+ },
320
+ "dataOrigin": {
321
+ "type": "object",
322
+ "properties": {
323
+ "description": {
324
+ "type": "string"
325
+ },
326
+ "result_id": {
327
+ "$ref": "#/$defs/safeId",
328
+ "description": "Generating Result. --result sets this field."
329
+ },
330
+ "uri": {
331
+ "type": "string",
332
+ "description": "Provider or origin locator. Credentials remain in native configuration."
333
+ }
334
+ },
335
+ "additionalProperties": true
336
+ },
337
+ "dataLocation": {
338
+ "type": "object",
339
+ "required": [
340
+ "path"
341
+ ],
342
+ "properties": {
343
+ "id": {
344
+ "$ref": "#/$defs/safeId",
345
+ "description": "Generated deterministically from name, kind, path, host and version fields when omitted."
346
+ },
347
+ "name": {
348
+ "$ref": "#/$defs/nonemptyString",
349
+ "description": "A configured location name supplies its kind and root or remote. Names need not be unique; an ambiguous name has to be selected by location ID."
350
+ },
351
+ "kind": {
352
+ "enum": [
353
+ "filesystem",
354
+ "rclone",
355
+ "external"
356
+ ],
357
+ "description": "Defaults to the configured location's kind, otherwise filesystem. external is an opaque locator the Kernel never transfers."
358
+ },
359
+ "host": {
360
+ "$ref": "#/$defs/nonemptyString",
361
+ "description": "Filesystem locations default to the current host."
362
+ },
363
+ "path": {
364
+ "$ref": "#/$defs/nonemptyString"
365
+ },
366
+ "availability": {
367
+ "type": "string",
368
+ "description": "A dated observation, not a promise."
369
+ },
370
+ "version": {
371
+ "description": "Opaque backend version selector, retained as supplied. data materialize refuses a source carrying one."
372
+ },
373
+ "version_id": {
374
+ "description": "Opaque backend version selector, retained as supplied. data materialize refuses a source carrying one."
375
+ },
376
+ "s3_version_at": {
377
+ "description": "Opaque backend version selector, retained as supplied. data materialize refuses a source carrying one."
378
+ },
379
+ "managed": {
380
+ "const": false,
381
+ "default": false,
382
+ "description": "Caller locations are borrowed. Only data materialize establishes managed ownership; true is refused."
383
+ }
384
+ },
385
+ "additionalProperties": true
386
+ },
387
+ "dataRegister": {
388
+ "type": "object",
389
+ "properties": {
390
+ "id": {
391
+ "$ref": "#/$defs/safeId"
392
+ },
393
+ "name": {
394
+ "$ref": "#/$defs/nonemptyString"
395
+ },
396
+ "description": {
397
+ "type": "string"
398
+ },
399
+ "content": {
400
+ "$ref": "#/$defs/dataContent"
401
+ },
402
+ "origin": {
403
+ "$ref": "#/$defs/dataOrigin"
404
+ },
405
+ "replaces": {
406
+ "$ref": "#/$defs/safeId",
407
+ "description": "Earlier Data ID that this corrected edition replaces."
408
+ },
409
+ "locations": {
410
+ "type": "array",
411
+ "items": {
412
+ "$ref": "#/$defs/dataLocation"
413
+ }
414
+ }
415
+ },
416
+ "additionalProperties": true,
417
+ "description": "Describe intended material without requiring byte copying, hashing, local availability, or a generating Result."
418
+ },
419
+ "dataAmend": {
420
+ "type": "object",
421
+ "propertyNames": {
422
+ "not": {
423
+ "anyOf": [
424
+ {
425
+ "$ref": "#/$defs/reservedField"
426
+ },
427
+ {
428
+ "const": "locations"
429
+ }
430
+ ]
431
+ }
432
+ },
433
+ "additionalProperties": true,
434
+ "description": "JSON Merge Patch of descriptive Data fields. Closed content cannot change; locations change through data location add, materialize and evict."
435
+ },
436
+ "modelAssociation": {
437
+ "type": "object",
438
+ "required": [
439
+ "model_id"
440
+ ],
441
+ "properties": {
442
+ "model_id": {
443
+ "$ref": "#/$defs/safeId"
444
+ },
445
+ "role": {
446
+ "type": "string"
447
+ },
448
+ "commit": {
449
+ "$ref": "#/$defs/nullableString",
450
+ "description": "Execution-associated Git commit when known; omit or null when unknown."
451
+ },
452
+ "dirty": {
453
+ "type": [
454
+ "boolean",
455
+ "null"
456
+ ]
457
+ }
458
+ },
459
+ "additionalProperties": true
460
+ },
461
+ "toolAssociation": {
462
+ "type": "object",
463
+ "required": [
464
+ "tool_id"
465
+ ],
466
+ "properties": {
467
+ "tool_id": {
468
+ "$ref": "#/$defs/safeId"
469
+ },
470
+ "revision": {
471
+ "$ref": "#/$defs/nullableString"
472
+ }
473
+ },
474
+ "additionalProperties": true
475
+ },
476
+ "dataAssociation": {
477
+ "type": "object",
478
+ "required": [
479
+ "data_id"
480
+ ],
481
+ "properties": {
482
+ "data_id": {
483
+ "$ref": "#/$defs/safeId"
484
+ },
485
+ "role": {
486
+ "type": "string"
487
+ }
488
+ },
489
+ "additionalProperties": true
490
+ },
491
+ "resultAssociation": {
492
+ "type": "object",
493
+ "required": [
494
+ "result_id"
495
+ ],
496
+ "properties": {
497
+ "result_id": {
498
+ "$ref": "#/$defs/safeId"
499
+ },
500
+ "role": {
501
+ "type": "string"
502
+ }
503
+ },
504
+ "additionalProperties": true
505
+ },
506
+ "observation": {
507
+ "type": "object",
508
+ "properties": {
509
+ "text": {
510
+ "type": "string"
511
+ }
512
+ },
513
+ "additionalProperties": true,
514
+ "description": "One observation. result observe appends members with text, observed_at and operation_id; other domain fields are free."
515
+ },
516
+ "resultRecord": {
517
+ "type": "object",
518
+ "properties": {
519
+ "id": {
520
+ "$ref": "#/$defs/safeId"
521
+ },
522
+ "name": {
523
+ "$ref": "#/$defs/nonemptyString",
524
+ "description": "Short label. The index name column falls back to activity."
525
+ },
526
+ "activity": {
527
+ "$ref": "#/$defs/nonemptyString",
528
+ "description": "Human description of what was done."
529
+ },
530
+ "description": {
531
+ "type": "string"
532
+ },
533
+ "models": {
534
+ "type": "array",
535
+ "items": {
536
+ "$ref": "#/$defs/modelAssociation"
537
+ }
538
+ },
539
+ "tools": {
540
+ "type": "array",
541
+ "items": {
542
+ "$ref": "#/$defs/toolAssociation"
543
+ }
544
+ },
545
+ "inputs": {
546
+ "type": "array",
547
+ "items": {
548
+ "$ref": "#/$defs/dataAssociation"
549
+ }
550
+ },
551
+ "outputs": {
552
+ "type": "array",
553
+ "items": {
554
+ "$ref": "#/$defs/dataAssociation"
555
+ }
556
+ },
557
+ "execution": {
558
+ "description": "Free-form domain JSON describing execution. Keep historical execution time and later observation time distinct."
559
+ },
560
+ "observations": {
561
+ "type": "array",
562
+ "items": {
563
+ "$ref": "#/$defs/observation"
564
+ },
565
+ "description": "Observations in order; no universal scientific metric schema."
566
+ },
567
+ "related_results": {
568
+ "type": "array",
569
+ "items": {
570
+ "$ref": "#/$defs/resultAssociation"
571
+ }
572
+ }
573
+ },
574
+ "additionalProperties": true,
575
+ "description": "A useful activity description may be recorded before, during, or after execution with incomplete metadata. No name, activity, Model, Tool, Data, environment, or successful outcome is universally required."
576
+ },
577
+ "resultAmend": {
578
+ "type": "object",
579
+ "propertyNames": {
580
+ "not": {
581
+ "$ref": "#/$defs/reservedField"
582
+ }
583
+ },
584
+ "properties": {
585
+ "name": {
586
+ "$ref": "#/$defs/nullableString"
587
+ },
588
+ "activity": {
589
+ "$ref": "#/$defs/nullableString"
590
+ },
591
+ "models": {
592
+ "type": [
593
+ "array",
594
+ "null"
595
+ ],
596
+ "items": {
597
+ "$ref": "#/$defs/modelAssociation"
598
+ }
599
+ },
600
+ "tools": {
601
+ "type": [
602
+ "array",
603
+ "null"
604
+ ],
605
+ "items": {
606
+ "$ref": "#/$defs/toolAssociation"
607
+ }
608
+ },
609
+ "inputs": {
610
+ "type": [
611
+ "array",
612
+ "null"
613
+ ],
614
+ "items": {
615
+ "$ref": "#/$defs/dataAssociation"
616
+ }
617
+ },
618
+ "outputs": {
619
+ "type": [
620
+ "array",
621
+ "null"
622
+ ],
623
+ "items": {
624
+ "$ref": "#/$defs/dataAssociation"
625
+ }
626
+ },
627
+ "execution": {
628
+ "description": "JSON Merge Patch value for execution; null removes the field."
629
+ },
630
+ "observations": {
631
+ "type": [
632
+ "array",
633
+ "null"
634
+ ],
635
+ "items": {
636
+ "$ref": "#/$defs/observation"
637
+ },
638
+ "description": "Replaces the whole array; null removes it. Use result observe to append."
639
+ },
640
+ "related_results": {
641
+ "type": [
642
+ "array",
643
+ "null"
644
+ ],
645
+ "items": {
646
+ "$ref": "#/$defs/resultAssociation"
647
+ }
648
+ }
649
+ },
650
+ "additionalProperties": true,
651
+ "description": "JSON Merge Patch of editable Result fields. Preserve other array members when replacing an array. The CLI checks expected revision and the resulting document, and does not change scientific interpretation on the caller's behalf."
652
+ }
653
+ }
654
+ }