@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,325 @@
1
+ {
2
+ "id": "urn:demo:relationship-capability",
3
+ "title": "Synthetic Capability Surface with integration details",
4
+ "scope": "Synthetic role/product identities only; runtime unverified.",
5
+ "revision": {
6
+ "id": "r1",
7
+ "parent": null,
8
+ "createdAt": "2026-11-08T00:00:00Z",
9
+ "author": "Synthetic author",
10
+ "reason": "Initial synthetic example"
11
+ },
12
+ "extensions": {},
13
+ "contract": "n8r.surface/0.3",
14
+ "kind": "capability",
15
+ "records": [
16
+ {
17
+ "id": "urn:demo:relationship-research",
18
+ "revision": "r1",
19
+ "digest": "sha256:615bc6f8f443b986f78a46414faf97822206bcfcc9781e8d7c03d2dcb83940a0"
20
+ }
21
+ ],
22
+ "vocabularies": [
23
+ {
24
+ "id": "urn:v:demo",
25
+ "version": "1"
26
+ }
27
+ ],
28
+ "nodes": [
29
+ {
30
+ "id": "urn:node:app",
31
+ "label": "Assistant",
32
+ "type": {
33
+ "vocabulary": "urn:v:demo",
34
+ "term": "component"
35
+ }
36
+ },
37
+ {
38
+ "id": "urn:node:mongodb",
39
+ "label": "MongoDB",
40
+ "type": {
41
+ "vocabulary": "urn:v:demo",
42
+ "term": "component"
43
+ }
44
+ },
45
+ {
46
+ "id": "urn:node:oidc",
47
+ "label": "OIDC",
48
+ "type": {
49
+ "vocabulary": "urn:v:demo",
50
+ "term": "component"
51
+ }
52
+ },
53
+ {
54
+ "id": "urn:node:saml",
55
+ "label": "SAML",
56
+ "type": {
57
+ "vocabulary": "urn:v:demo",
58
+ "term": "component"
59
+ }
60
+ },
61
+ {
62
+ "id": "urn:node:inference",
63
+ "label": "Inference service",
64
+ "type": {
65
+ "vocabulary": "urn:v:demo",
66
+ "term": "component"
67
+ }
68
+ }
69
+ ],
70
+ "exclusiveGroups": [
71
+ {
72
+ "id": "urn:group:authentication",
73
+ "members": [
74
+ "urn:cap:oidc",
75
+ "urn:cap:saml"
76
+ ]
77
+ }
78
+ ],
79
+ "coverage": [
80
+ "One synthetic product guide"
81
+ ],
82
+ "gaps": [
83
+ "Inference support unknown"
84
+ ],
85
+ "relationships": [
86
+ {
87
+ "id": "urn:cap:database",
88
+ "from": "urn:node:app",
89
+ "to": "urn:node:mongodb",
90
+ "type": {
91
+ "vocabulary": "urn:v:demo",
92
+ "term": "persists-data"
93
+ },
94
+ "state": "possible",
95
+ "basis": [
96
+ {
97
+ "record": "urn:demo:relationship-research",
98
+ "revision": "r1",
99
+ "items": [
100
+ "urn:f:database"
101
+ ]
102
+ }
103
+ ],
104
+ "conditions": [],
105
+ "note": "Supported possibility, not a selected composition",
106
+ "purpose": {
107
+ "state": "known",
108
+ "claims": [
109
+ {
110
+ "value": "Persist conversation history and user profiles.",
111
+ "basis": [
112
+ {
113
+ "record": "urn:demo:relationship-research",
114
+ "revision": "r1",
115
+ "items": [
116
+ "urn:f:database-purpose"
117
+ ]
118
+ }
119
+ ]
120
+ }
121
+ ],
122
+ "note": "Supported by synthetic source pack."
123
+ },
124
+ "integration": {
125
+ "state": "known",
126
+ "claims": [
127
+ {
128
+ "value": "MongoDB client driver using the MongoDB wire protocol.",
129
+ "basis": [
130
+ {
131
+ "record": "urn:demo:relationship-research",
132
+ "revision": "r1",
133
+ "items": [
134
+ "urn:f:database-integration"
135
+ ]
136
+ }
137
+ ]
138
+ }
139
+ ],
140
+ "note": "Supported by synthetic source pack."
141
+ },
142
+ "configuration": {
143
+ "state": "known",
144
+ "claims": [
145
+ {
146
+ "value": [
147
+ {
148
+ "owner": "urn:node:app",
149
+ "mechanism": "environment-variable",
150
+ "key": "CHAT_STORE_URI",
151
+ "location": "config/assistant.env.example"
152
+ }
153
+ ],
154
+ "basis": [
155
+ {
156
+ "record": "urn:demo:relationship-research",
157
+ "revision": "r1",
158
+ "items": [
159
+ "urn:f:database-configuration"
160
+ ]
161
+ }
162
+ ]
163
+ }
164
+ ],
165
+ "note": "Supported by synthetic source pack."
166
+ }
167
+ },
168
+ {
169
+ "id": "urn:cap:oidc",
170
+ "from": "urn:node:app",
171
+ "to": "urn:node:oidc",
172
+ "type": {
173
+ "vocabulary": "urn:v:demo",
174
+ "term": "authenticates-via"
175
+ },
176
+ "state": "possible",
177
+ "basis": [
178
+ {
179
+ "record": "urn:demo:relationship-research",
180
+ "revision": "r1",
181
+ "items": [
182
+ "urn:f:oidc"
183
+ ]
184
+ }
185
+ ],
186
+ "conditions": [
187
+ "OIDC and SAML are alternatives"
188
+ ],
189
+ "note": "Supported possibility, not a selected composition",
190
+ "purpose": {
191
+ "state": "known",
192
+ "claims": [
193
+ {
194
+ "value": "Authenticate users through an identity service.",
195
+ "basis": [
196
+ {
197
+ "record": "urn:demo:relationship-research",
198
+ "revision": "r1",
199
+ "items": [
200
+ "urn:f:oidc-purpose"
201
+ ]
202
+ }
203
+ ]
204
+ }
205
+ ],
206
+ "note": "Supported by synthetic source pack."
207
+ },
208
+ "integration": {
209
+ "state": "known",
210
+ "claims": [
211
+ {
212
+ "value": "OpenID Connect",
213
+ "basis": [
214
+ {
215
+ "record": "urn:demo:relationship-research",
216
+ "revision": "r1",
217
+ "items": [
218
+ "urn:f:oidc-integration"
219
+ ]
220
+ }
221
+ ]
222
+ }
223
+ ],
224
+ "note": "Supported by synthetic source pack."
225
+ },
226
+ "configuration": {
227
+ "state": "unknown",
228
+ "claims": [],
229
+ "note": "Not researched; no absence assertion."
230
+ }
231
+ },
232
+ {
233
+ "id": "urn:cap:saml",
234
+ "from": "urn:node:app",
235
+ "to": "urn:node:saml",
236
+ "type": {
237
+ "vocabulary": "urn:v:demo",
238
+ "term": "authenticates-via"
239
+ },
240
+ "state": "possible",
241
+ "basis": [
242
+ {
243
+ "record": "urn:demo:relationship-research",
244
+ "revision": "r1",
245
+ "items": [
246
+ "urn:f:saml"
247
+ ]
248
+ }
249
+ ],
250
+ "conditions": [
251
+ "OIDC and SAML are alternatives"
252
+ ],
253
+ "note": "Supported possibility, not a selected composition",
254
+ "purpose": {
255
+ "state": "known",
256
+ "claims": [
257
+ {
258
+ "value": "Authenticate users through an identity service.",
259
+ "basis": [
260
+ {
261
+ "record": "urn:demo:relationship-research",
262
+ "revision": "r1",
263
+ "items": [
264
+ "urn:f:saml-purpose"
265
+ ]
266
+ }
267
+ ]
268
+ }
269
+ ],
270
+ "note": "Supported by synthetic source pack."
271
+ },
272
+ "integration": {
273
+ "state": "known",
274
+ "claims": [
275
+ {
276
+ "value": "SAML 2.0",
277
+ "basis": [
278
+ {
279
+ "record": "urn:demo:relationship-research",
280
+ "revision": "r1",
281
+ "items": [
282
+ "urn:f:saml-integration"
283
+ ]
284
+ }
285
+ ]
286
+ }
287
+ ],
288
+ "note": "Supported by synthetic source pack."
289
+ },
290
+ "configuration": {
291
+ "state": "unknown",
292
+ "claims": [],
293
+ "note": "Not researched; no absence assertion."
294
+ }
295
+ },
296
+ {
297
+ "id": "urn:cap:inference",
298
+ "from": "urn:node:app",
299
+ "to": "urn:node:inference",
300
+ "type": {
301
+ "vocabulary": "urn:v:demo",
302
+ "term": "uses"
303
+ },
304
+ "state": "unknown",
305
+ "basis": [],
306
+ "conditions": [],
307
+ "note": "Unknown support",
308
+ "purpose": {
309
+ "state": "unknown",
310
+ "claims": [],
311
+ "note": "Not researched; no absence assertion."
312
+ },
313
+ "integration": {
314
+ "state": "unknown",
315
+ "claims": [],
316
+ "note": "Not researched; no absence assertion."
317
+ },
318
+ "configuration": {
319
+ "state": "unknown",
320
+ "claims": [],
321
+ "note": "Not researched; no absence assertion."
322
+ }
323
+ }
324
+ ]
325
+ }
@@ -0,0 +1,4 @@
1
+ # Fictional assistant configuration reference.
2
+ # Owner: Assistant (urn:node:app).
3
+ # Supply CHAT_STORE_URI as an environment variable for MongoDB persistence.
4
+ # No connection string or other setting value is retained in this fixture.
@@ -0,0 +1,300 @@
1
+ {
2
+ "id": "urn:demo:relationship-research",
3
+ "title": "Synthetic relationship evidence",
4
+ "scope": "Synthetic role/product identities only; runtime unverified.",
5
+ "revision": {
6
+ "id": "r1",
7
+ "parent": null,
8
+ "createdAt": "2026-11-08T00:00:00Z",
9
+ "author": "Synthetic author",
10
+ "reason": "Initial shared-relationship fixture"
11
+ },
12
+ "extensions": {},
13
+ "contract": "n8r.research/0.1",
14
+ "sources": [
15
+ {
16
+ "id": "urn:source:summary",
17
+ "location": "sources.md",
18
+ "version": "synthetic-relationships-1",
19
+ "digest": "sha256:cb9498a53d65fb16c16b7ac297b84b2d14a825297012bec9ac07df083e3c5647",
20
+ "inspectedAt": "2026-11-08T00:00:00Z",
21
+ "coverage": [
22
+ {
23
+ "path": "sources.md",
24
+ "status": "inspected",
25
+ "note": "Sanitized synthetic source pack, not raw configuration."
26
+ }
27
+ ]
28
+ },
29
+ {
30
+ "id": "urn:source:config",
31
+ "location": "config/assistant.env.example",
32
+ "version": "synthetic-1",
33
+ "digest": "sha256:d575d918e3e60fa1bf4490f7d6ceddafdcf0dba56b41b0e566a3adc8d88fe256",
34
+ "inspectedAt": "2026-11-08T00:00:00Z",
35
+ "coverage": [
36
+ {
37
+ "path": "config/assistant.env.example",
38
+ "status": "inspected",
39
+ "note": "Synthetic setting-name documentation only."
40
+ }
41
+ ]
42
+ }
43
+ ],
44
+ "findings": [
45
+ {
46
+ "id": "urn:f:database",
47
+ "subject": "urn:node:app",
48
+ "property": "supports",
49
+ "state": "known",
50
+ "note": "Synthetic source assertion; not runtime evidence.",
51
+ "claims": [
52
+ {
53
+ "value": "urn:node:mongodb",
54
+ "evidence": [
55
+ {
56
+ "source": "urn:source:summary",
57
+ "locator": "Product guide"
58
+ }
59
+ ]
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ "id": "urn:f:oidc",
65
+ "subject": "urn:node:app",
66
+ "property": "supports",
67
+ "state": "known",
68
+ "note": "Synthetic source assertion; not runtime evidence.",
69
+ "claims": [
70
+ {
71
+ "value": "urn:node:oidc",
72
+ "evidence": [
73
+ {
74
+ "source": "urn:source:summary",
75
+ "locator": "Product guide"
76
+ }
77
+ ]
78
+ }
79
+ ]
80
+ },
81
+ {
82
+ "id": "urn:f:saml",
83
+ "subject": "urn:node:app",
84
+ "property": "supports",
85
+ "state": "known",
86
+ "note": "Synthetic source assertion; not runtime evidence.",
87
+ "claims": [
88
+ {
89
+ "value": "urn:node:saml",
90
+ "evidence": [
91
+ {
92
+ "source": "urn:source:summary",
93
+ "locator": "Product guide"
94
+ }
95
+ ]
96
+ }
97
+ ]
98
+ },
99
+ {
100
+ "id": "urn:f:database-bound",
101
+ "subject": "urn:instance:demo",
102
+ "property": "urn:cap:database",
103
+ "state": "known",
104
+ "note": "Synthetic source assertion; not runtime evidence.",
105
+ "claims": [
106
+ {
107
+ "value": "urn:target:atlas",
108
+ "evidence": [
109
+ {
110
+ "source": "urn:source:summary",
111
+ "locator": "Sanitized instance configuration summary, revision 1"
112
+ }
113
+ ]
114
+ }
115
+ ]
116
+ },
117
+ {
118
+ "id": "urn:f:identity",
119
+ "subject": "urn:instance:demo",
120
+ "property": "urn:cap:oidc",
121
+ "state": "conflicting",
122
+ "note": "Synthetic source assertion; not runtime evidence.",
123
+ "claims": [
124
+ {
125
+ "value": "urn:target:oidc",
126
+ "evidence": [
127
+ {
128
+ "source": "urn:source:summary",
129
+ "locator": "Sanitized instance configuration summary, revision 1"
130
+ }
131
+ ]
132
+ },
133
+ {
134
+ "value": "urn:target:saml",
135
+ "evidence": [
136
+ {
137
+ "source": "urn:source:summary",
138
+ "locator": "Sanitized instance configuration summary, revision 1"
139
+ }
140
+ ]
141
+ }
142
+ ]
143
+ },
144
+ {
145
+ "id": "urn:f:database-purpose",
146
+ "subject": "urn:cap:database",
147
+ "property": "purpose",
148
+ "state": "known",
149
+ "note": "Synthetic source statement; no actual settings.",
150
+ "claims": [
151
+ {
152
+ "value": "Persist conversation history and user profiles.",
153
+ "evidence": [
154
+ {
155
+ "source": "urn:source:summary",
156
+ "locator": "Database integration"
157
+ }
158
+ ]
159
+ }
160
+ ]
161
+ },
162
+ {
163
+ "id": "urn:f:database-integration",
164
+ "subject": "urn:cap:database",
165
+ "property": "integration",
166
+ "state": "known",
167
+ "note": "Synthetic source statement; no actual settings.",
168
+ "claims": [
169
+ {
170
+ "value": "MongoDB client driver using the MongoDB wire protocol.",
171
+ "evidence": [
172
+ {
173
+ "source": "urn:source:summary",
174
+ "locator": "Database integration"
175
+ }
176
+ ]
177
+ }
178
+ ]
179
+ },
180
+ {
181
+ "id": "urn:f:database-configuration",
182
+ "subject": "urn:cap:database",
183
+ "property": "configuration",
184
+ "state": "known",
185
+ "note": "Synthetic source statement; no actual settings.",
186
+ "claims": [
187
+ {
188
+ "value": [
189
+ {
190
+ "owner": "urn:node:app",
191
+ "mechanism": "environment-variable",
192
+ "key": "CHAT_STORE_URI",
193
+ "location": "config/assistant.env.example"
194
+ }
195
+ ],
196
+ "evidence": [
197
+ {
198
+ "source": "urn:source:config",
199
+ "locator": "CHAT_STORE_URI comment"
200
+ }
201
+ ]
202
+ }
203
+ ]
204
+ },
205
+ {
206
+ "id": "urn:f:oidc-purpose",
207
+ "subject": "urn:cap:oidc",
208
+ "property": "purpose",
209
+ "state": "known",
210
+ "note": "Synthetic source statement; no actual settings.",
211
+ "claims": [
212
+ {
213
+ "value": "Authenticate users through an identity service.",
214
+ "evidence": [
215
+ {
216
+ "source": "urn:source:summary",
217
+ "locator": "Authentication integration"
218
+ }
219
+ ]
220
+ }
221
+ ]
222
+ },
223
+ {
224
+ "id": "urn:f:oidc-integration",
225
+ "subject": "urn:cap:oidc",
226
+ "property": "integration",
227
+ "state": "known",
228
+ "note": "Synthetic source statement; no actual settings.",
229
+ "claims": [
230
+ {
231
+ "value": "OpenID Connect",
232
+ "evidence": [
233
+ {
234
+ "source": "urn:source:summary",
235
+ "locator": "Authentication integration"
236
+ }
237
+ ]
238
+ }
239
+ ]
240
+ },
241
+ {
242
+ "id": "urn:f:saml-purpose",
243
+ "subject": "urn:cap:saml",
244
+ "property": "purpose",
245
+ "state": "known",
246
+ "note": "Synthetic source statement; no actual settings.",
247
+ "claims": [
248
+ {
249
+ "value": "Authenticate users through an identity service.",
250
+ "evidence": [
251
+ {
252
+ "source": "urn:source:summary",
253
+ "locator": "Authentication integration"
254
+ }
255
+ ]
256
+ }
257
+ ]
258
+ },
259
+ {
260
+ "id": "urn:f:saml-integration",
261
+ "subject": "urn:cap:saml",
262
+ "property": "integration",
263
+ "state": "known",
264
+ "note": "Synthetic source statement; no actual settings.",
265
+ "claims": [
266
+ {
267
+ "value": "SAML 2.0",
268
+ "evidence": [
269
+ {
270
+ "source": "urn:source:summary",
271
+ "locator": "Authentication integration"
272
+ }
273
+ ]
274
+ }
275
+ ]
276
+ }
277
+ ],
278
+ "alternatives": [
279
+ {
280
+ "id": "urn:option:oidc",
281
+ "title": "Prefer OIDC",
282
+ "findings": [
283
+ "urn:f:identity"
284
+ ],
285
+ "requirements": []
286
+ }
287
+ ],
288
+ "decisions": [
289
+ {
290
+ "id": "urn:decision:oidc",
291
+ "alternative": "urn:option:oidc",
292
+ "choice": "selected",
293
+ "reason": "Synthetic human preference; conflict unresolved.",
294
+ "by": "Synthetic reviewer",
295
+ "at": "2026-11-08T00:00:00Z"
296
+ }
297
+ ],
298
+ "questions": [],
299
+ "notes": []
300
+ }