@n8r/surface 0.0.0-stage → 0.1.0-experimental.5

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 (181) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE-DOCS +395 -0
  3. package/LICENSING.md +36 -0
  4. package/README.md +207 -2
  5. package/dist/activity.d.ts +16 -0
  6. package/dist/activity.js +44 -0
  7. package/dist/cli.d.ts +2 -0
  8. package/dist/cli.js +412 -0
  9. package/dist/codec.d.ts +6 -0
  10. package/dist/codec.js +56 -0
  11. package/dist/codex.d.ts +72 -0
  12. package/dist/codex.js +526 -0
  13. package/dist/contracts.d.ts +235 -0
  14. package/dist/contracts.js +1 -0
  15. package/dist/cyclonedx-schemas/bom-1.7.schema.json +6700 -0
  16. package/dist/cyclonedx-schemas/cryptography-defs.schema.json +576 -0
  17. package/dist/cyclonedx-schemas/jsf-0.82.schema.json +240 -0
  18. package/dist/cyclonedx-schemas/spdx.schema.json +786 -0
  19. package/dist/cyclonedx-validation.d.ts +1 -0
  20. package/dist/cyclonedx-validation.js +45 -0
  21. package/dist/html.d.ts +5 -0
  22. package/dist/html.js +74 -0
  23. package/dist/index.d.ts +7 -0
  24. package/dist/index.js +5 -0
  25. package/dist/notes.d.ts +52 -0
  26. package/dist/notes.js +184 -0
  27. package/dist/portable.d.ts +10 -0
  28. package/dist/portable.js +71 -0
  29. package/dist/recent.d.ts +9 -0
  30. package/dist/recent.js +71 -0
  31. package/dist/revisions.d.ts +2 -0
  32. package/dist/revisions.js +60 -0
  33. package/dist/settings.d.ts +23 -0
  34. package/dist/settings.js +100 -0
  35. package/dist/setup.d.ts +9 -0
  36. package/dist/setup.js +161 -0
  37. package/dist/skill-artifacts-cli.d.ts +1 -0
  38. package/dist/skill-artifacts-cli.js +13 -0
  39. package/dist/skill-artifacts.d.ts +15 -0
  40. package/dist/skill-artifacts.js +184 -0
  41. package/dist/skill-cyclonedx.d.ts +26 -0
  42. package/dist/skill-cyclonedx.js +214 -0
  43. package/dist/skill-presentation.d.ts +10 -0
  44. package/dist/skill-presentation.js +108 -0
  45. package/dist/skill-surface-cli.d.ts +1 -0
  46. package/dist/skill-surface-cli.js +37 -0
  47. package/dist/skill-surface-store.d.ts +7 -0
  48. package/dist/skill-surface-store.js +126 -0
  49. package/dist/source-tools.d.ts +102 -0
  50. package/dist/source-tools.js +201 -0
  51. package/dist/startup.d.ts +7 -0
  52. package/dist/startup.js +74 -0
  53. package/dist/surface-bom.d.ts +73 -0
  54. package/dist/surface-bom.js +139 -0
  55. package/dist/surface-draft.d.ts +22 -0
  56. package/dist/surface-draft.js +112 -0
  57. package/dist/surface-instructions.d.ts +3 -0
  58. package/dist/surface-instructions.js +32 -0
  59. package/dist/surface-overview.d.ts +15 -0
  60. package/dist/surface-overview.js +86 -0
  61. package/dist/surface-store.d.ts +34 -0
  62. package/dist/surface-store.js +213 -0
  63. package/dist/surface-view.d.ts +3 -0
  64. package/dist/surface-view.js +50 -0
  65. package/dist/validate.d.ts +4 -0
  66. package/dist/validate.js +482 -0
  67. package/docs/n8r-surface/README.md +133 -0
  68. package/docs/n8r-surface/cli-bundles.md +72 -0
  69. package/docs/n8r-surface/codex-research-transcript.md +51 -0
  70. package/docs/n8r-surface/codex-research-verification.md +176 -0
  71. package/docs/n8r-surface/command-outcomes.md +711 -0
  72. package/docs/n8r-surface/contracts.md +220 -0
  73. package/docs/n8r-surface/critical-path.md +184 -0
  74. package/docs/n8r-surface/design.md +289 -0
  75. package/docs/n8r-surface/first-use-access.md +143 -0
  76. package/docs/n8r-surface/first-use-overview.md +262 -0
  77. package/docs/n8r-surface/getting-started.md +74 -0
  78. package/docs/n8r-surface/guided-journey-verification.md +137 -0
  79. package/docs/n8r-surface/host-contract.md +176 -0
  80. package/docs/n8r-surface/implementation-decisions.md +96 -0
  81. package/docs/n8r-surface/instance-first-research.md +209 -0
  82. package/docs/n8r-surface/npm-distribution.md +107 -0
  83. package/docs/n8r-surface/npm-release.md +315 -0
  84. package/docs/n8r-surface/product-direction.md +327 -0
  85. package/docs/n8r-surface/recreation-handoff.md +117 -0
  86. package/docs/n8r-surface/researcher-discovery.md +157 -0
  87. package/docs/n8r-surface/researcher-prepared-check.md +117 -0
  88. package/docs/n8r-surface/researcher-reconciliation-trial.md +149 -0
  89. package/docs/n8r-surface/researcher-repository-check.md +95 -0
  90. package/docs/n8r-surface/researcher-skeleton-check.md +84 -0
  91. package/docs/n8r-surface/researcher-skill-verification.md +725 -0
  92. package/docs/n8r-surface/researcher-skill.md +309 -0
  93. package/docs/n8r-surface/researcher-vault.md +134 -0
  94. package/docs/n8r-surface/save-reopen-transcript.md +211 -0
  95. package/docs/n8r-surface/save-reopen-verification.md +152 -0
  96. package/docs/n8r-surface/security-assurance-strategy.md +267 -0
  97. package/docs/n8r-surface/skill-bom-verification.md +142 -0
  98. package/docs/n8r-surface/skill-cyclonedx-verification.md +144 -0
  99. package/docs/n8r-surface/skill-cyclonedx.md +85 -0
  100. package/docs/n8r-surface/skill-manual.md +129 -0
  101. package/docs/n8r-surface/skill-surface-artifacts.md +234 -0
  102. package/docs/n8r-surface/skill-usefulness-verification.md +135 -0
  103. package/docs/n8r-surface/skill-workspace-automation.md +359 -0
  104. package/docs/n8r-surface/startup-human-check.md +172 -0
  105. package/docs/n8r-surface/startup-verification.md +161 -0
  106. package/docs/n8r-surface/startup.md +151 -0
  107. package/docs/n8r-surface/surface-description-contract.md +224 -0
  108. package/docs/n8r-surface/surface-descriptions.md +173 -0
  109. package/docs/n8r-surface/surface-relationships.md +231 -0
  110. package/docs/n8r-surface/surface-revisions-transcript.md +552 -0
  111. package/docs/n8r-surface/surface-revisions-verification.md +161 -0
  112. package/docs/n8r-surface/tester-candidate.md +158 -0
  113. package/docs/n8r-surface/vault-setup-verification.md +210 -0
  114. package/docs/n8r-surface/verification.md +117 -0
  115. package/docs/n8r-surface/versioning.md +172 -0
  116. package/docs/n8r-surface/workspace-human-check.md +101 -0
  117. package/docs/n8r-surface/workspace-installation.md +68 -0
  118. package/docs/n8r-surface/workspace-verification.md +350 -0
  119. package/docs/n8r-surface/workspace.md +83 -0
  120. package/examples/researcher/README.md +100 -0
  121. package/examples/researcher/composed.surface.json +430 -0
  122. package/examples/researcher/composed.surface.yaml +283 -0
  123. package/examples/researcher/cyclonedx/configured/README.md +7 -0
  124. package/examples/researcher/cyclonedx/configured/manifest.json +10 -0
  125. package/examples/researcher/cyclonedx/configured/mapping.json +323 -0
  126. package/examples/researcher/cyclonedx/configured/surface-records.json +1275 -0
  127. package/examples/researcher/cyclonedx/configured/surface.cdx.json +79 -0
  128. package/examples/researcher/descriptions/README.md +29 -0
  129. package/examples/researcher/descriptions/bound-r1.json +141 -0
  130. package/examples/researcher/descriptions/bound-r2.json +153 -0
  131. package/examples/researcher/descriptions/capability.json +167 -0
  132. package/examples/researcher/descriptions/research-r1.json +153 -0
  133. package/examples/researcher/descriptions/research-r2.json +157 -0
  134. package/examples/researcher/descriptions/sources.md +24 -0
  135. package/examples/researcher/harbor-r1.research.html +193 -0
  136. package/examples/researcher/harbor-r2.research.html +226 -0
  137. package/examples/researcher/lumen-manual-edit.pending.html +271 -0
  138. package/examples/researcher/lumen-r1.research.html +271 -0
  139. package/examples/researcher/lumen-r2.research.html +280 -0
  140. package/examples/researcher/relationships/README.md +34 -0
  141. package/examples/researcher/relationships/bound-r1.json +346 -0
  142. package/examples/researcher/relationships/bound-r2.json +358 -0
  143. package/examples/researcher/relationships/capability.json +325 -0
  144. package/examples/researcher/relationships/config/assistant.env.example +4 -0
  145. package/examples/researcher/relationships/research-r1.json +300 -0
  146. package/examples/researcher/relationships/research-r2.json +304 -0
  147. package/examples/researcher/relationships/sources.md +38 -0
  148. package/examples/researcher/sources/harbor-api.md +16 -0
  149. package/examples/researcher/sources/harbor-auth.md +8 -0
  150. package/examples/researcher/sources/lumen-guide.md +28 -0
  151. package/examples/researcher/sources/lumen-settings.md +9 -0
  152. package/examples/researcher/surface-bom/README.md +17 -0
  153. package/examples/researcher/surface-bom/initial.cdx.json +188 -0
  154. package/package.json +45 -4
  155. package/plugins/n8r-surface/.codex-plugin/plugin.json +31 -0
  156. package/plugins/n8r-surface/LICENSE +202 -0
  157. package/plugins/n8r-surface/LICENSE-DOCS +395 -0
  158. package/plugins/n8r-surface/LICENSING.md +39 -0
  159. package/plugins/n8r-surface/assets/icon.svg +5 -0
  160. package/plugins/n8r-surface/plugin.json +27 -0
  161. package/plugins/n8r-surface/skills/research/SKILL.md +163 -0
  162. package/plugins/n8r-surface/skills/research/agents/openai.yaml +4 -0
  163. package/plugins/n8r-surface/skills/research/references/artifacts.md +152 -0
  164. package/plugins/n8r-surface/skills/research/references/cyclonedx.md +207 -0
  165. package/plugins/n8r-surface/skills/research/references/discovery-map.md +178 -0
  166. package/plugins/n8r-surface/skills/research/references/examples/bound-r1.json +346 -0
  167. package/plugins/n8r-surface/skills/research/references/examples/capability.json +325 -0
  168. package/plugins/n8r-surface/skills/research/references/examples/research-r1.json +300 -0
  169. package/plugins/n8r-surface/skills/research/references/examples/surface.cdx.json +188 -0
  170. package/plugins/n8r-surface/skills/research/references/first-use-access.md +97 -0
  171. package/plugins/n8r-surface/skills/research/references/first-use-overview.md +101 -0
  172. package/plugins/n8r-surface/skills/research/references/instance-first.md +125 -0
  173. package/plugins/n8r-surface/skills/research/references/model-meanings.md +55 -0
  174. package/plugins/n8r-surface/skills/research/references/skeleton-surface.md +105 -0
  175. package/plugins/n8r-surface/skills/research/references/working-notes.md +121 -0
  176. package/plugins/n8r-surface/skills/research/references/workspace.md +89 -0
  177. package/plugins/n8r-surface/skills/research/scripts/THIRD-PARTY-NOTICES.txt +273 -0
  178. package/plugins/n8r-surface/skills/research/scripts/artifacts.mjs +8348 -0
  179. package/plugins/n8r-surface/skills/research/scripts/cyclonedx.mjs +28113 -0
  180. package/plugins/n8r-surface/skills/research/scripts/surface.mjs +27800 -0
  181. package/plugins/n8r-surface/skills/research/scripts/workspace.mjs +120 -0
@@ -0,0 +1,430 @@
1
+ {
2
+ "contract": "n8r.surface/0.1",
3
+ "id": "urn:surface:lumen-with-harbor",
4
+ "title": "Selected Lumen and Harbor composition",
5
+ "revision": {
6
+ "id": "r1",
7
+ "parent": null,
8
+ "createdAt": "2026-11-04T09:00:00Z",
9
+ "author": "Synthetic researcher",
10
+ "reason": "Synthetic user selects a partial composition; no integration has been run"
11
+ },
12
+ "scope": "Desired composition from supplied fictional documents. Authentication, schemas and effective setup are incomplete.",
13
+ "extensions": {
14
+ "https://example.test/selection/v1": {
15
+ "synthetic": true,
16
+ "opaque": {
17
+ "reviewed": true
18
+ }
19
+ }
20
+ },
21
+ "kind": "definition",
22
+ "records": [
23
+ {
24
+ "id": "urn:research:lumen",
25
+ "revision": "r2",
26
+ "digest": "sha256:d7384fe64f1140815ddda3c7bbb2fe826a83140b445e70d839b07145c5840aca"
27
+ },
28
+ {
29
+ "id": "urn:research:harbor",
30
+ "revision": "r2",
31
+ "digest": "sha256:8e5e492f7154b42b250ad3badea95cc73b571c6e22b4120cd957fcd9e57a0f2b"
32
+ }
33
+ ],
34
+ "vocabularies": [
35
+ {
36
+ "id": "urn:n8r:vocabulary:researcher-example",
37
+ "version": "0.1"
38
+ }
39
+ ],
40
+ "nodes": [
41
+ {
42
+ "id": "urn:component:lumen",
43
+ "type": {
44
+ "vocabulary": "urn:n8r:vocabulary:researcher-example",
45
+ "term": "application"
46
+ },
47
+ "label": "Lumen Desk",
48
+ "attributes": {
49
+ "product": {
50
+ "state": "known",
51
+ "note": "Synthetic product",
52
+ "value": "Lumen Desk"
53
+ },
54
+ "version": {
55
+ "state": "unknown",
56
+ "note": "No deployable revision supplied"
57
+ },
58
+ "retries": {
59
+ "state": "omitted",
60
+ "note": "Relevant retry policy deliberately left for later research"
61
+ },
62
+ "tenantLabel": {
63
+ "state": "redacted",
64
+ "note": "Withheld in this synthetic sharing case"
65
+ },
66
+ "embeddedArchive": {
67
+ "state": "absent",
68
+ "note": "Settings note describes no embedded archive"
69
+ },
70
+ "theme": {
71
+ "state": "out-of-scope",
72
+ "note": "UI design is outside this investigation"
73
+ }
74
+ },
75
+ "basis": [
76
+ {
77
+ "record": "urn:research:lumen",
78
+ "revision": "r2",
79
+ "items": [
80
+ "urn:finding:lumen:delivery",
81
+ "urn:decision:lumen:archive"
82
+ ]
83
+ }
84
+ ],
85
+ "requirements": []
86
+ },
87
+ {
88
+ "id": "urn:component:harbor",
89
+ "type": {
90
+ "vocabulary": "urn:n8r:vocabulary:researcher-example",
91
+ "term": "service"
92
+ },
93
+ "label": "Harbor Archive",
94
+ "attributes": {
95
+ "product": {
96
+ "state": "known",
97
+ "note": "Synthetic product",
98
+ "value": "Harbor Archive"
99
+ },
100
+ "version": {
101
+ "state": "unknown",
102
+ "note": "No implementation revision supplied"
103
+ }
104
+ },
105
+ "basis": [
106
+ {
107
+ "record": "urn:research:harbor",
108
+ "revision": "r2",
109
+ "items": [
110
+ "urn:finding:harbor:intake",
111
+ "urn:decision:harbor:archive"
112
+ ]
113
+ }
114
+ ],
115
+ "requirements": []
116
+ },
117
+ {
118
+ "id": "urn:component:identity",
119
+ "type": {
120
+ "vocabulary": "urn:n8r:vocabulary:researcher-example",
121
+ "term": "service"
122
+ },
123
+ "label": "Shared identity service",
124
+ "attributes": {
125
+ "product": {
126
+ "state": "unknown",
127
+ "note": "Human selected a shared role; product unspecified"
128
+ }
129
+ },
130
+ "basis": [
131
+ {
132
+ "record": "urn:research:lumen",
133
+ "revision": "r2",
134
+ "items": [
135
+ "urn:finding:lumen:authentication",
136
+ "urn:decision:lumen:identity"
137
+ ]
138
+ },
139
+ {
140
+ "record": "urn:research:harbor",
141
+ "revision": "r2",
142
+ "items": [
143
+ "urn:finding:harbor:authentication",
144
+ "urn:decision:harbor:identity"
145
+ ]
146
+ }
147
+ ],
148
+ "requirements": [
149
+ "urn:requirement:identity"
150
+ ]
151
+ },
152
+ {
153
+ "id": "urn:component:inference",
154
+ "type": {
155
+ "vocabulary": "urn:n8r:vocabulary:researcher-example",
156
+ "term": "inference-service"
157
+ },
158
+ "label": "Inference service",
159
+ "attributes": {
160
+ "modelVersion": {
161
+ "state": "unknown",
162
+ "note": "Not established by supplied sources"
163
+ }
164
+ },
165
+ "basis": [
166
+ {
167
+ "record": "urn:research:lumen",
168
+ "revision": "r2",
169
+ "items": [
170
+ "urn:finding:lumen:modelVersion"
171
+ ]
172
+ }
173
+ ],
174
+ "requirements": [
175
+ "urn:requirement:inference"
176
+ ]
177
+ }
178
+ ],
179
+ "relationships": [
180
+ {
181
+ "id": "urn:relationship:documents",
182
+ "from": "urn:component:lumen",
183
+ "to": "urn:component:harbor",
184
+ "type": {
185
+ "vocabulary": "urn:n8r:vocabulary:researcher-example",
186
+ "term": "sends-documents"
187
+ },
188
+ "claim": "declared",
189
+ "attributes": {
190
+ "batchLimit": {
191
+ "state": "unknown",
192
+ "note": "Guide says 10; settings note says 25. Conflict remains unresolved."
193
+ },
194
+ "protocol": {
195
+ "state": "known",
196
+ "note": "Selected declared protocol",
197
+ "value": "HTTP"
198
+ }
199
+ },
200
+ "basis": [
201
+ {
202
+ "record": "urn:research:lumen",
203
+ "revision": "r2",
204
+ "items": [
205
+ "urn:finding:lumen:delivery",
206
+ "urn:decision:lumen:archive"
207
+ ]
208
+ },
209
+ {
210
+ "record": "urn:research:harbor",
211
+ "revision": "r2",
212
+ "items": [
213
+ "urn:finding:harbor:intake",
214
+ "urn:decision:harbor:archive"
215
+ ]
216
+ },
217
+ {
218
+ "record": "urn:research:lumen",
219
+ "revision": "r2",
220
+ "items": [
221
+ "urn:finding:lumen:batchLimit"
222
+ ]
223
+ }
224
+ ],
225
+ "requirements": [
226
+ "urn:requirement:archive-token",
227
+ "urn:requirement:payload"
228
+ ]
229
+ },
230
+ {
231
+ "id": "urn:relationship:audit",
232
+ "from": "urn:component:lumen",
233
+ "to": "urn:component:harbor",
234
+ "type": {
235
+ "vocabulary": "urn:n8r:vocabulary:researcher-example",
236
+ "term": "sends-audit"
237
+ },
238
+ "claim": "declared",
239
+ "attributes": {
240
+ "protocol": {
241
+ "state": "known",
242
+ "note": "Independent parallel route",
243
+ "value": "HTTP"
244
+ }
245
+ },
246
+ "basis": [
247
+ {
248
+ "record": "urn:research:lumen",
249
+ "revision": "r2",
250
+ "items": [
251
+ "urn:finding:lumen:delivery",
252
+ "urn:decision:lumen:archive"
253
+ ]
254
+ },
255
+ {
256
+ "record": "urn:research:harbor",
257
+ "revision": "r2",
258
+ "items": [
259
+ "urn:finding:harbor:intake",
260
+ "urn:decision:harbor:archive"
261
+ ]
262
+ }
263
+ ],
264
+ "requirements": [
265
+ "urn:requirement:archive-token",
266
+ "urn:requirement:payload"
267
+ ]
268
+ },
269
+ {
270
+ "id": "urn:relationship:callback",
271
+ "from": "urn:component:harbor",
272
+ "to": "urn:component:lumen",
273
+ "type": {
274
+ "vocabulary": "urn:n8r:vocabulary:researcher-example",
275
+ "term": "notifies"
276
+ },
277
+ "claim": "declared",
278
+ "attributes": {
279
+ "schema": {
280
+ "state": "unknown",
281
+ "note": "Both support callback possibilities; exact compatibility not established"
282
+ }
283
+ },
284
+ "basis": [
285
+ {
286
+ "record": "urn:research:lumen",
287
+ "revision": "r2",
288
+ "items": [
289
+ "urn:finding:lumen:callback",
290
+ "urn:decision:lumen:callback"
291
+ ]
292
+ },
293
+ {
294
+ "record": "urn:research:harbor",
295
+ "revision": "r2",
296
+ "items": [
297
+ "urn:finding:harbor:callback",
298
+ "urn:decision:harbor:callback"
299
+ ]
300
+ }
301
+ ],
302
+ "requirements": [
303
+ "urn:requirement:payload"
304
+ ]
305
+ },
306
+ {
307
+ "id": "urn:relationship:lumen-auth",
308
+ "from": "urn:component:lumen",
309
+ "to": "urn:component:identity",
310
+ "type": {
311
+ "vocabulary": "urn:n8r:vocabulary:researcher-example",
312
+ "term": "uses-identity"
313
+ },
314
+ "claim": "declared",
315
+ "attributes": {
316
+ "protocol": {
317
+ "state": "known",
318
+ "note": "Selected option",
319
+ "value": "OIDC"
320
+ }
321
+ },
322
+ "basis": [
323
+ {
324
+ "record": "urn:research:lumen",
325
+ "revision": "r2",
326
+ "items": [
327
+ "urn:finding:lumen:authentication",
328
+ "urn:decision:lumen:identity"
329
+ ]
330
+ }
331
+ ],
332
+ "requirements": [
333
+ "urn:requirement:identity"
334
+ ]
335
+ },
336
+ {
337
+ "id": "urn:relationship:harbor-auth",
338
+ "from": "urn:component:harbor",
339
+ "to": "urn:component:identity",
340
+ "type": {
341
+ "vocabulary": "urn:n8r:vocabulary:researcher-example",
342
+ "term": "uses-identity"
343
+ },
344
+ "claim": "declared",
345
+ "attributes": {
346
+ "protocol": {
347
+ "state": "known",
348
+ "note": "Selected option",
349
+ "value": "OIDC bearer token"
350
+ }
351
+ },
352
+ "basis": [
353
+ {
354
+ "record": "urn:research:harbor",
355
+ "revision": "r2",
356
+ "items": [
357
+ "urn:finding:harbor:authentication",
358
+ "urn:decision:harbor:identity"
359
+ ]
360
+ }
361
+ ],
362
+ "requirements": [
363
+ "urn:requirement:identity"
364
+ ]
365
+ },
366
+ {
367
+ "id": "urn:relationship:inference",
368
+ "from": "urn:component:lumen",
369
+ "to": "urn:component:inference",
370
+ "type": {
371
+ "vocabulary": "urn:n8r:vocabulary:researcher-example",
372
+ "term": "uses-inference"
373
+ },
374
+ "claim": "declared",
375
+ "attributes": {
376
+ "model": {
377
+ "state": "unknown",
378
+ "note": "Source does not identify model"
379
+ }
380
+ },
381
+ "basis": [
382
+ {
383
+ "record": "urn:research:lumen",
384
+ "revision": "r2",
385
+ "items": [
386
+ "urn:finding:lumen:modelVersion"
387
+ ]
388
+ }
389
+ ],
390
+ "requirements": [
391
+ "urn:requirement:inference"
392
+ ]
393
+ }
394
+ ],
395
+ "requirements": [
396
+ {
397
+ "id": "urn:requirement:archive-token",
398
+ "kind": "secret",
399
+ "description": "Recipient supplies an appropriate local token binding; no secret value included.",
400
+ "state": "unknown"
401
+ },
402
+ {
403
+ "id": "urn:requirement:identity",
404
+ "kind": "configuration",
405
+ "description": "Choose shared issuer, audiences and claim checks; selection does not configure a service.",
406
+ "state": "unknown"
407
+ },
408
+ {
409
+ "id": "urn:requirement:payload",
410
+ "kind": "configuration",
411
+ "description": "Agree document/audit/callback schemas and limits.",
412
+ "state": "unknown"
413
+ },
414
+ {
415
+ "id": "urn:requirement:inference",
416
+ "kind": "resource",
417
+ "description": "Select inference implementation, model and local bindings.",
418
+ "state": "unknown"
419
+ }
420
+ ],
421
+ "coverage": [
422
+ "Two fictional products researched from supplied documents.",
423
+ "Shared identity and inference roles remain partial."
424
+ ],
425
+ "gaps": [
426
+ "Integration not tested; no reachable or exercised connection evidence.",
427
+ "Batch-limit conflict remains unresolved.",
428
+ "No deployment bindings, effective setup or Experiment Runs supplied."
429
+ ]
430
+ }