@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,271 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'">
7
+ <title>Lumen Desk research</title>
8
+ <style>body{font:17px/1.55 system-ui,sans-serif;max-width:72rem;margin:3rem auto;padding:0 1.5rem;color:#18252d;background:#faf9f5}h1{line-height:1.2}h2{font-size:1.2rem;border-bottom:1px solid #b8c8c9;padding-bottom:.3rem}section{margin:2rem 0}dt{font-weight:650;color:#234c54}dd{margin:0 0 .6rem 1.3rem}li{margin:.75rem 0}span{white-space:pre-wrap;overflow-wrap:anywhere}.empty{color:#56656c;font-style:italic}header p{max-width:55rem}</style>
9
+ </head>
10
+ <body>
11
+ <header><p>Research record · experimental 0.1</p><h1>Lumen Desk research</h1><p>Source research describes possibilities. It does not establish a running integration. The embedded data owns the facts; visible edits require review before continuation.</p></header>
12
+ <section><h2>contract</h2><span>n8r.research/0.1</span></section>
13
+ <section><h2>id</h2><span>urn:research:lumen</span></section>
14
+ <section><h2>revision</h2><dl><dt>id</dt><dd><span>r1</span></dd><dt>parent</dt><dd><span>null</span></dd><dt>createdAt</dt><dd><span>2026-11-04T09:00:00Z</span></dd><dt>author</dt><dd><span>Synthetic researcher</span></dd><dt>reason</dt><dd><span>Inspect supplied fictional documents</span></dd></dl></section>
15
+ <section><h2>scope</h2><span>Only the named synthetic documents; source research provides no runtime evidence.</span></section>
16
+ <section><h2>extensions</h2><dl><dt>https://example.test/research-context/v1</dt><dd><dl><dt>synthetic</dt><dd><span>true</span></dd><dt>preserve</dt><dd><ol><li><span>unrecognized metadata</span></li><li><span>null</span></li><li><span>1</span></li></ol></dd></dl></dd></dl></section>
17
+ <section><h2>sources</h2><ol><li><dl><dt>id</dt><dd><span>urn:source:lumen-guide</span></dd><dt>location</dt><dd><span>sources/lumen-guide.md</span></dd><dt>version</dt><dd><span>fixture-1</span></dd><dt>digest</dt><dd><span>sha256:98d3374c79c166b37f0debb4ffb5e457eda1385dd7847b042cbad674cac98693</span></dd><dt>inspectedAt</dt><dd><span>2026-11-04T09:00:00Z</span></dd><dt>coverage</dt><dd><ol><li><dl><dt>path</dt><dd><span>lumen-guide.md</span></dd><dt>status</dt><dd><span>inspected</span></dd><dt>note</dt><dd><span>Whole supplied synthetic document; no repository or runtime inspected.</span></dd></dl></li></ol></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:source:lumen-settings</span></dd><dt>location</dt><dd><span>sources/lumen-settings.md</span></dd><dt>version</dt><dd><span>fixture-1</span></dd><dt>digest</dt><dd><span>sha256:e94431bce92dc374a3aa58e31c8af78f7dfc61d7b34510ef38552d600d2489b7</span></dd><dt>inspectedAt</dt><dd><span>2026-11-04T09:00:00Z</span></dd><dt>coverage</dt><dd><ol><li><dl><dt>path</dt><dd><span>lumen-settings.md</span></dd><dt>status</dt><dd><span>inspected</span></dd><dt>note</dt><dd><span>Whole supplied synthetic document; no repository or runtime inspected.</span></dd></dl></li></ol></dd></dl></li></ol></section>
18
+ <section><h2>findings</h2><ol><li><dl><dt>id</dt><dd><span>urn:finding:lumen:delivery</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>delivery</span></dd><dt>state</dt><dd><span>known</span></dd><dt>claims</dt><dd><ol><li><dl><dt>value</dt><dd><ol><li><span>document HTTP route</span></li><li><span>audit HTTP route</span></li></ol></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-guide</span></dd><dt>locator</dt><dd><span>Delivery options</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>Supported possibility; recipient schema not established.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:lumen:batchLimit</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>batchLimit</span></dd><dt>state</dt><dd><span>conflicting</span></dd><dt>claims</dt><dd><ol><li><dl><dt>value</dt><dd><span>10</span></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-guide</span></dd><dt>locator</dt><dd><span>Delivery options</span></dd></dl></li></ol></dd></dl></li><li><dl><dt>value</dt><dd><span>25</span></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-settings</span></dd><dt>locator</dt><dd><span>Opening paragraph</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>Documents disagree; no source precedence or chosen value.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:lumen:modelVersion</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>modelVersion</span></dd><dt>state</dt><dd><span>unknown</span></dd><dt>claims</dt><dd><p class="empty">No entries recorded.</p></dd><dt>note</dt><dd><span>Neither document identifies the model version.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:lumen:authentication</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>authentication</span></dd><dt>state</dt><dd><span>known</span></dd><dt>claims</dt><dd><ol><li><dl><dt>value</dt><dd><span>OIDC</span></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-guide</span></dd><dt>locator</dt><dd><span>Components</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>External identity option; no issuer selected by source.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:lumen:callback</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>callback</span></dd><dt>state</dt><dd><span>known</span></dd><dt>claims</dt><dd><ol><li><dl><dt>value</dt><dd><span>optional HTTP receiver</span></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-guide</span></dd><dt>locator</dt><dd><span>Callback option</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>Opt-in receiver with unverified payload compatibility.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:lumen:embeddedArchive</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>embeddedArchive</span></dd><dt>state</dt><dd><span>absent</span></dd><dt>claims</dt><dd><ol><li><dl><dt>value</dt><dd><span>embedded archive database</span></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-settings</span></dd><dt>locator</dt><dd><span>Second paragraph</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>Absent only in the composition described by this settings note.</span></dd></dl></li></ol></section>
19
+ <section><h2>alternatives</h2><ol><li><dl><dt>id</dt><dd><span>urn:option:lumen:archive</span></dd><dt>title</dt><dd><span>Send documents and audit events to an archive</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:lumen:delivery</span></li><li><span>urn:finding:lumen:batchLimit</span></li></ol></dd><dt>requirements</dt><dd><ol><li><span>Agree schemas and batch limit</span></li></ol></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:option:lumen:identity</span></dd><dt>title</dt><dd><span>Use an external identity service</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:lumen:authentication</span></li></ol></dd><dt>requirements</dt><dd><ol><li><span>Choose issuer and local credentials</span></li></ol></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:option:lumen:callback</span></dd><dt>title</dt><dd><span>Receive archival callbacks</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:lumen:callback</span></li></ol></dd><dt>requirements</dt><dd><ol><li><span>Agree callback format and validation</span></li></ol></dd></dl></li></ol></section>
20
+ <section><h2>decisions</h2><ol><li><dl><dt>id</dt><dd><span>urn:decision:lumen:archive</span></dd><dt>alternative</dt><dd><span>urn:option:lumen:archive</span></dd><dt>choice</dt><dd><span>selected</span></dd><dt>reason</dt><dd><span>Synthetic user wants archival delivery in the proposed composition.</span></dd><dt>by</dt><dd><span>Synthetic user</span></dd><dt>at</dt><dd><span>2026-11-04T09:00:00Z</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:decision:lumen:identity</span></dd><dt>alternative</dt><dd><span>urn:option:lumen:identity</span></dd><dt>choice</dt><dd><span>selected</span></dd><dt>reason</dt><dd><span>Synthetic user selects a shared identity role; actual issuer remains unknown.</span></dd><dt>by</dt><dd><span>Synthetic user</span></dd><dt>at</dt><dd><span>2026-11-04T09:00:00Z</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:decision:lumen:callback</span></dd><dt>alternative</dt><dd><span>urn:option:lumen:callback</span></dd><dt>choice</dt><dd><span>deferred</span></dd><dt>reason</dt><dd><span>Wait for the human to decide whether callbacks belong in the definition.</span></dd><dt>by</dt><dd><span>Synthetic user</span></dd><dt>at</dt><dd><span>2026-11-04T09:00:00Z</span></dd></dl></li></ol></section>
21
+ <section><h2>questions</h2><ol><li><dl><dt>id</dt><dd><span>urn:question:lumen:batch</span></dd><dt>text</dt><dd><span>Which batch limit applies to the intended version?</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:lumen:batchLimit</span></li></ol></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:question:lumen:model</span></dd><dt>text</dt><dd><span>Which inference implementation and model are intended?</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:lumen:modelVersion</span></li></ol></dd></dl></li></ol></section>
22
+ <section><h2>notes</h2><ol><li><dl><dt>by</dt><dd><span>Synthetic researcher</span></dd><dt>at</dt><dd><span>2026-11-04T09:00:00Z</span></dd><dt>text</dt><dd><span>Imported source markup is data: &lt;script&gt;alert(&quot;source text only&quot;)&lt;/script&gt;</span></dd></dl></li></ol></section>
23
+ <script type="application/json" id="n8r-record">{
24
+ "contract": "n8r.research/0.1",
25
+ "id": "urn:research:lumen",
26
+ "title": "Lumen Desk research",
27
+ "revision": {
28
+ "id": "r1",
29
+ "parent": null,
30
+ "createdAt": "2026-11-04T09:00:00Z",
31
+ "author": "Synthetic researcher",
32
+ "reason": "Inspect supplied fictional documents"
33
+ },
34
+ "scope": "Only the named synthetic documents; source research provides no runtime evidence.",
35
+ "extensions": {
36
+ "https://example.test/research-context/v1": {
37
+ "synthetic": true,
38
+ "preserve": [
39
+ "unrecognized metadata",
40
+ null,
41
+ 1
42
+ ]
43
+ }
44
+ },
45
+ "sources": [
46
+ {
47
+ "id": "urn:source:lumen-guide",
48
+ "location": "sources/lumen-guide.md",
49
+ "version": "fixture-1",
50
+ "digest": "sha256:98d3374c79c166b37f0debb4ffb5e457eda1385dd7847b042cbad674cac98693",
51
+ "inspectedAt": "2026-11-04T09:00:00Z",
52
+ "coverage": [
53
+ {
54
+ "path": "lumen-guide.md",
55
+ "status": "inspected",
56
+ "note": "Whole supplied synthetic document; no repository or runtime inspected."
57
+ }
58
+ ]
59
+ },
60
+ {
61
+ "id": "urn:source:lumen-settings",
62
+ "location": "sources/lumen-settings.md",
63
+ "version": "fixture-1",
64
+ "digest": "sha256:e94431bce92dc374a3aa58e31c8af78f7dfc61d7b34510ef38552d600d2489b7",
65
+ "inspectedAt": "2026-11-04T09:00:00Z",
66
+ "coverage": [
67
+ {
68
+ "path": "lumen-settings.md",
69
+ "status": "inspected",
70
+ "note": "Whole supplied synthetic document; no repository or runtime inspected."
71
+ }
72
+ ]
73
+ }
74
+ ],
75
+ "findings": [
76
+ {
77
+ "id": "urn:finding:lumen:delivery",
78
+ "subject": "urn:component:lumen",
79
+ "property": "delivery",
80
+ "state": "known",
81
+ "claims": [
82
+ {
83
+ "value": [
84
+ "document HTTP route",
85
+ "audit HTTP route"
86
+ ],
87
+ "evidence": [
88
+ {
89
+ "source": "urn:source:lumen-guide",
90
+ "locator": "Delivery options"
91
+ }
92
+ ]
93
+ }
94
+ ],
95
+ "note": "Supported possibility; recipient schema not established."
96
+ },
97
+ {
98
+ "id": "urn:finding:lumen:batchLimit",
99
+ "subject": "urn:component:lumen",
100
+ "property": "batchLimit",
101
+ "state": "conflicting",
102
+ "claims": [
103
+ {
104
+ "value": 10,
105
+ "evidence": [
106
+ {
107
+ "source": "urn:source:lumen-guide",
108
+ "locator": "Delivery options"
109
+ }
110
+ ]
111
+ },
112
+ {
113
+ "value": 25,
114
+ "evidence": [
115
+ {
116
+ "source": "urn:source:lumen-settings",
117
+ "locator": "Opening paragraph"
118
+ }
119
+ ]
120
+ }
121
+ ],
122
+ "note": "Documents disagree; no source precedence or chosen value."
123
+ },
124
+ {
125
+ "id": "urn:finding:lumen:modelVersion",
126
+ "subject": "urn:component:lumen",
127
+ "property": "modelVersion",
128
+ "state": "unknown",
129
+ "claims": [],
130
+ "note": "Neither document identifies the model version."
131
+ },
132
+ {
133
+ "id": "urn:finding:lumen:authentication",
134
+ "subject": "urn:component:lumen",
135
+ "property": "authentication",
136
+ "state": "known",
137
+ "claims": [
138
+ {
139
+ "value": "OIDC",
140
+ "evidence": [
141
+ {
142
+ "source": "urn:source:lumen-guide",
143
+ "locator": "Components"
144
+ }
145
+ ]
146
+ }
147
+ ],
148
+ "note": "External identity option; no issuer selected by source."
149
+ },
150
+ {
151
+ "id": "urn:finding:lumen:callback",
152
+ "subject": "urn:component:lumen",
153
+ "property": "callback",
154
+ "state": "known",
155
+ "claims": [
156
+ {
157
+ "value": "optional HTTP receiver",
158
+ "evidence": [
159
+ {
160
+ "source": "urn:source:lumen-guide",
161
+ "locator": "Callback option"
162
+ }
163
+ ]
164
+ }
165
+ ],
166
+ "note": "Opt-in receiver with unverified payload compatibility."
167
+ },
168
+ {
169
+ "id": "urn:finding:lumen:embeddedArchive",
170
+ "subject": "urn:component:lumen",
171
+ "property": "embeddedArchive",
172
+ "state": "absent",
173
+ "claims": [
174
+ {
175
+ "value": "embedded archive database",
176
+ "evidence": [
177
+ {
178
+ "source": "urn:source:lumen-settings",
179
+ "locator": "Second paragraph"
180
+ }
181
+ ]
182
+ }
183
+ ],
184
+ "note": "Absent only in the composition described by this settings note."
185
+ }
186
+ ],
187
+ "alternatives": [
188
+ {
189
+ "id": "urn:option:lumen:archive",
190
+ "title": "Send documents and audit events to an archive",
191
+ "findings": [
192
+ "urn:finding:lumen:delivery",
193
+ "urn:finding:lumen:batchLimit"
194
+ ],
195
+ "requirements": [
196
+ "Agree schemas and batch limit"
197
+ ]
198
+ },
199
+ {
200
+ "id": "urn:option:lumen:identity",
201
+ "title": "Use an external identity service",
202
+ "findings": [
203
+ "urn:finding:lumen:authentication"
204
+ ],
205
+ "requirements": [
206
+ "Choose issuer and local credentials"
207
+ ]
208
+ },
209
+ {
210
+ "id": "urn:option:lumen:callback",
211
+ "title": "Receive archival callbacks",
212
+ "findings": [
213
+ "urn:finding:lumen:callback"
214
+ ],
215
+ "requirements": [
216
+ "Agree callback format and validation"
217
+ ]
218
+ }
219
+ ],
220
+ "decisions": [
221
+ {
222
+ "id": "urn:decision:lumen:archive",
223
+ "alternative": "urn:option:lumen:archive",
224
+ "choice": "selected",
225
+ "reason": "Synthetic user wants archival delivery in the proposed composition.",
226
+ "by": "Synthetic user",
227
+ "at": "2026-11-04T09:00:00Z"
228
+ },
229
+ {
230
+ "id": "urn:decision:lumen:identity",
231
+ "alternative": "urn:option:lumen:identity",
232
+ "choice": "selected",
233
+ "reason": "Synthetic user selects a shared identity role; actual issuer remains unknown.",
234
+ "by": "Synthetic user",
235
+ "at": "2026-11-04T09:00:00Z"
236
+ },
237
+ {
238
+ "id": "urn:decision:lumen:callback",
239
+ "alternative": "urn:option:lumen:callback",
240
+ "choice": "deferred",
241
+ "reason": "Wait for the human to decide whether callbacks belong in the definition.",
242
+ "by": "Synthetic user",
243
+ "at": "2026-11-04T09:00:00Z"
244
+ }
245
+ ],
246
+ "questions": [
247
+ {
248
+ "id": "urn:question:lumen:batch",
249
+ "text": "Which batch limit applies to the intended version?",
250
+ "findings": [
251
+ "urn:finding:lumen:batchLimit"
252
+ ]
253
+ },
254
+ {
255
+ "id": "urn:question:lumen:model",
256
+ "text": "Which inference implementation and model are intended?",
257
+ "findings": [
258
+ "urn:finding:lumen:modelVersion"
259
+ ]
260
+ }
261
+ ],
262
+ "notes": [
263
+ {
264
+ "by": "Synthetic researcher",
265
+ "at": "2026-11-04T09:00:00Z",
266
+ "text": "Imported source markup is data: \u003cscript\u003ealert(\"source text only\")\u003c/script\u003e"
267
+ }
268
+ ]
269
+ }</script>
270
+ </body>
271
+ </html>
@@ -0,0 +1,280 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'">
7
+ <title>Lumen Desk research</title>
8
+ <style>body{font:17px/1.55 system-ui,sans-serif;max-width:72rem;margin:3rem auto;padding:0 1.5rem;color:#18252d;background:#faf9f5}h1{line-height:1.2}h2{font-size:1.2rem;border-bottom:1px solid #b8c8c9;padding-bottom:.3rem}section{margin:2rem 0}dt{font-weight:650;color:#234c54}dd{margin:0 0 .6rem 1.3rem}li{margin:.75rem 0}span{white-space:pre-wrap;overflow-wrap:anywhere}.empty{color:#56656c;font-style:italic}header p{max-width:55rem}</style>
9
+ </head>
10
+ <body>
11
+ <header><p>Research record · experimental 0.1</p><h1>Lumen Desk research</h1><p>Source research describes possibilities. It does not establish a running integration. The embedded data owns the facts; visible edits require review before continuation.</p></header>
12
+ <section><h2>contract</h2><span>n8r.research/0.1</span></section>
13
+ <section><h2>id</h2><span>urn:research:lumen</span></section>
14
+ <section><h2>revision</h2><dl><dt>id</dt><dd><span>r2</span></dd><dt>parent</dt><dd><dl><dt>id</dt><dd><span>urn:research:lumen</span></dd><dt>revision</dt><dd><span>r1</span></dd><dt>digest</dt><dd><span>sha256:2090eba14648036a81065f9aeb68ad36f3a504199ae7c06a41f1c89c2c49eb43</span></dd></dl></dd><dt>createdAt</dt><dd><span>2026-11-04T09:10:00Z</span></dd><dt>author</dt><dd><span>Synthetic user</span></dd><dt>reason</dt><dd><span>Review and reconcile a manually edited callback decision</span></dd></dl></section>
15
+ <section><h2>scope</h2><span>Only the named synthetic documents; source research provides no runtime evidence.</span></section>
16
+ <section><h2>extensions</h2><dl><dt>https://example.test/research-context/v1</dt><dd><dl><dt>synthetic</dt><dd><span>true</span></dd><dt>preserve</dt><dd><ol><li><span>unrecognized metadata</span></li><li><span>null</span></li><li><span>1</span></li></ol></dd></dl></dd></dl></section>
17
+ <section><h2>sources</h2><ol><li><dl><dt>id</dt><dd><span>urn:source:lumen-guide</span></dd><dt>location</dt><dd><span>sources/lumen-guide.md</span></dd><dt>version</dt><dd><span>fixture-1</span></dd><dt>digest</dt><dd><span>sha256:98d3374c79c166b37f0debb4ffb5e457eda1385dd7847b042cbad674cac98693</span></dd><dt>inspectedAt</dt><dd><span>2026-11-04T09:00:00Z</span></dd><dt>coverage</dt><dd><ol><li><dl><dt>path</dt><dd><span>lumen-guide.md</span></dd><dt>status</dt><dd><span>inspected</span></dd><dt>note</dt><dd><span>Whole supplied synthetic document; no repository or runtime inspected.</span></dd></dl></li></ol></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:source:lumen-settings</span></dd><dt>location</dt><dd><span>sources/lumen-settings.md</span></dd><dt>version</dt><dd><span>fixture-1</span></dd><dt>digest</dt><dd><span>sha256:e94431bce92dc374a3aa58e31c8af78f7dfc61d7b34510ef38552d600d2489b7</span></dd><dt>inspectedAt</dt><dd><span>2026-11-04T09:00:00Z</span></dd><dt>coverage</dt><dd><ol><li><dl><dt>path</dt><dd><span>lumen-settings.md</span></dd><dt>status</dt><dd><span>inspected</span></dd><dt>note</dt><dd><span>Whole supplied synthetic document; no repository or runtime inspected.</span></dd></dl></li></ol></dd></dl></li></ol></section>
18
+ <section><h2>findings</h2><ol><li><dl><dt>id</dt><dd><span>urn:finding:lumen:delivery</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>delivery</span></dd><dt>state</dt><dd><span>known</span></dd><dt>claims</dt><dd><ol><li><dl><dt>value</dt><dd><ol><li><span>document HTTP route</span></li><li><span>audit HTTP route</span></li></ol></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-guide</span></dd><dt>locator</dt><dd><span>Delivery options</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>Supported possibility; recipient schema not established.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:lumen:batchLimit</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>batchLimit</span></dd><dt>state</dt><dd><span>conflicting</span></dd><dt>claims</dt><dd><ol><li><dl><dt>value</dt><dd><span>10</span></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-guide</span></dd><dt>locator</dt><dd><span>Delivery options</span></dd></dl></li></ol></dd></dl></li><li><dl><dt>value</dt><dd><span>25</span></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-settings</span></dd><dt>locator</dt><dd><span>Opening paragraph</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>Documents disagree; no source precedence or chosen value.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:lumen:modelVersion</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>modelVersion</span></dd><dt>state</dt><dd><span>unknown</span></dd><dt>claims</dt><dd><p class="empty">No entries recorded.</p></dd><dt>note</dt><dd><span>Neither document identifies the model version.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:lumen:authentication</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>authentication</span></dd><dt>state</dt><dd><span>known</span></dd><dt>claims</dt><dd><ol><li><dl><dt>value</dt><dd><span>OIDC</span></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-guide</span></dd><dt>locator</dt><dd><span>Components</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>External identity option; no issuer selected by source.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:lumen:callback</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>callback</span></dd><dt>state</dt><dd><span>known</span></dd><dt>claims</dt><dd><ol><li><dl><dt>value</dt><dd><span>optional HTTP receiver</span></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-guide</span></dd><dt>locator</dt><dd><span>Callback option</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>Opt-in receiver with unverified payload compatibility.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:lumen:embeddedArchive</span></dd><dt>subject</dt><dd><span>urn:component:lumen</span></dd><dt>property</dt><dd><span>embeddedArchive</span></dd><dt>state</dt><dd><span>absent</span></dd><dt>claims</dt><dd><ol><li><dl><dt>value</dt><dd><span>embedded archive database</span></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:lumen-settings</span></dd><dt>locator</dt><dd><span>Second paragraph</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>Absent only in the composition described by this settings note.</span></dd></dl></li></ol></section>
19
+ <section><h2>alternatives</h2><ol><li><dl><dt>id</dt><dd><span>urn:option:lumen:archive</span></dd><dt>title</dt><dd><span>Send documents and audit events to an archive</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:lumen:delivery</span></li><li><span>urn:finding:lumen:batchLimit</span></li></ol></dd><dt>requirements</dt><dd><ol><li><span>Agree schemas and batch limit</span></li></ol></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:option:lumen:identity</span></dd><dt>title</dt><dd><span>Use an external identity service</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:lumen:authentication</span></li></ol></dd><dt>requirements</dt><dd><ol><li><span>Choose issuer and local credentials</span></li></ol></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:option:lumen:callback</span></dd><dt>title</dt><dd><span>Receive archival callbacks</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:lumen:callback</span></li></ol></dd><dt>requirements</dt><dd><ol><li><span>Agree callback format and validation</span></li></ol></dd></dl></li></ol></section>
20
+ <section><h2>decisions</h2><ol><li><dl><dt>id</dt><dd><span>urn:decision:lumen:archive</span></dd><dt>alternative</dt><dd><span>urn:option:lumen:archive</span></dd><dt>choice</dt><dd><span>selected</span></dd><dt>reason</dt><dd><span>Synthetic user wants archival delivery in the proposed composition.</span></dd><dt>by</dt><dd><span>Synthetic user</span></dd><dt>at</dt><dd><span>2026-11-04T09:00:00Z</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:decision:lumen:identity</span></dd><dt>alternative</dt><dd><span>urn:option:lumen:identity</span></dd><dt>choice</dt><dd><span>selected</span></dd><dt>reason</dt><dd><span>Synthetic user selects a shared identity role; actual issuer remains unknown.</span></dd><dt>by</dt><dd><span>Synthetic user</span></dd><dt>at</dt><dd><span>2026-11-04T09:00:00Z</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:decision:lumen:callback</span></dd><dt>alternative</dt><dd><span>urn:option:lumen:callback</span></dd><dt>choice</dt><dd><span>selected</span></dd><dt>reason</dt><dd><span>Include callbacks as a desired, unverified connection.</span></dd><dt>by</dt><dd><span>Synthetic user</span></dd><dt>at</dt><dd><span>2026-11-04T09:10:00Z</span></dd></dl></li></ol></section>
21
+ <section><h2>questions</h2><ol><li><dl><dt>id</dt><dd><span>urn:question:lumen:batch</span></dd><dt>text</dt><dd><span>Which batch limit applies to the intended version?</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:lumen:batchLimit</span></li></ol></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:question:lumen:model</span></dd><dt>text</dt><dd><span>Which inference implementation and model are intended?</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:lumen:modelVersion</span></li></ol></dd></dl></li></ol></section>
22
+ <section><h2>notes</h2><ol><li><dl><dt>by</dt><dd><span>Synthetic researcher</span></dd><dt>at</dt><dd><span>2026-11-04T09:00:00Z</span></dd><dt>text</dt><dd><span>Imported source markup is data: &lt;script&gt;alert(&quot;source text only&quot;)&lt;/script&gt;</span></dd></dl></li><li><dl><dt>by</dt><dd><span>Synthetic user</span></dd><dt>at</dt><dd><span>2026-11-04T09:10:00Z</span></dd><dt>text</dt><dd><span>The synthetic user manually requested callbacks. Both the visible edit and the old data were reviewed; this successor retains the source claims and unresolved compatibility.</span></dd></dl></li></ol></section>
23
+ <script type="application/json" id="n8r-record">{
24
+ "contract": "n8r.research/0.1",
25
+ "id": "urn:research:lumen",
26
+ "title": "Lumen Desk research",
27
+ "revision": {
28
+ "id": "r2",
29
+ "parent": {
30
+ "id": "urn:research:lumen",
31
+ "revision": "r1",
32
+ "digest": "sha256:2090eba14648036a81065f9aeb68ad36f3a504199ae7c06a41f1c89c2c49eb43"
33
+ },
34
+ "createdAt": "2026-11-04T09:10:00Z",
35
+ "author": "Synthetic user",
36
+ "reason": "Review and reconcile a manually edited callback decision"
37
+ },
38
+ "scope": "Only the named synthetic documents; source research provides no runtime evidence.",
39
+ "extensions": {
40
+ "https://example.test/research-context/v1": {
41
+ "synthetic": true,
42
+ "preserve": [
43
+ "unrecognized metadata",
44
+ null,
45
+ 1
46
+ ]
47
+ }
48
+ },
49
+ "sources": [
50
+ {
51
+ "id": "urn:source:lumen-guide",
52
+ "location": "sources/lumen-guide.md",
53
+ "version": "fixture-1",
54
+ "digest": "sha256:98d3374c79c166b37f0debb4ffb5e457eda1385dd7847b042cbad674cac98693",
55
+ "inspectedAt": "2026-11-04T09:00:00Z",
56
+ "coverage": [
57
+ {
58
+ "path": "lumen-guide.md",
59
+ "status": "inspected",
60
+ "note": "Whole supplied synthetic document; no repository or runtime inspected."
61
+ }
62
+ ]
63
+ },
64
+ {
65
+ "id": "urn:source:lumen-settings",
66
+ "location": "sources/lumen-settings.md",
67
+ "version": "fixture-1",
68
+ "digest": "sha256:e94431bce92dc374a3aa58e31c8af78f7dfc61d7b34510ef38552d600d2489b7",
69
+ "inspectedAt": "2026-11-04T09:00:00Z",
70
+ "coverage": [
71
+ {
72
+ "path": "lumen-settings.md",
73
+ "status": "inspected",
74
+ "note": "Whole supplied synthetic document; no repository or runtime inspected."
75
+ }
76
+ ]
77
+ }
78
+ ],
79
+ "findings": [
80
+ {
81
+ "id": "urn:finding:lumen:delivery",
82
+ "subject": "urn:component:lumen",
83
+ "property": "delivery",
84
+ "state": "known",
85
+ "claims": [
86
+ {
87
+ "value": [
88
+ "document HTTP route",
89
+ "audit HTTP route"
90
+ ],
91
+ "evidence": [
92
+ {
93
+ "source": "urn:source:lumen-guide",
94
+ "locator": "Delivery options"
95
+ }
96
+ ]
97
+ }
98
+ ],
99
+ "note": "Supported possibility; recipient schema not established."
100
+ },
101
+ {
102
+ "id": "urn:finding:lumen:batchLimit",
103
+ "subject": "urn:component:lumen",
104
+ "property": "batchLimit",
105
+ "state": "conflicting",
106
+ "claims": [
107
+ {
108
+ "value": 10,
109
+ "evidence": [
110
+ {
111
+ "source": "urn:source:lumen-guide",
112
+ "locator": "Delivery options"
113
+ }
114
+ ]
115
+ },
116
+ {
117
+ "value": 25,
118
+ "evidence": [
119
+ {
120
+ "source": "urn:source:lumen-settings",
121
+ "locator": "Opening paragraph"
122
+ }
123
+ ]
124
+ }
125
+ ],
126
+ "note": "Documents disagree; no source precedence or chosen value."
127
+ },
128
+ {
129
+ "id": "urn:finding:lumen:modelVersion",
130
+ "subject": "urn:component:lumen",
131
+ "property": "modelVersion",
132
+ "state": "unknown",
133
+ "claims": [],
134
+ "note": "Neither document identifies the model version."
135
+ },
136
+ {
137
+ "id": "urn:finding:lumen:authentication",
138
+ "subject": "urn:component:lumen",
139
+ "property": "authentication",
140
+ "state": "known",
141
+ "claims": [
142
+ {
143
+ "value": "OIDC",
144
+ "evidence": [
145
+ {
146
+ "source": "urn:source:lumen-guide",
147
+ "locator": "Components"
148
+ }
149
+ ]
150
+ }
151
+ ],
152
+ "note": "External identity option; no issuer selected by source."
153
+ },
154
+ {
155
+ "id": "urn:finding:lumen:callback",
156
+ "subject": "urn:component:lumen",
157
+ "property": "callback",
158
+ "state": "known",
159
+ "claims": [
160
+ {
161
+ "value": "optional HTTP receiver",
162
+ "evidence": [
163
+ {
164
+ "source": "urn:source:lumen-guide",
165
+ "locator": "Callback option"
166
+ }
167
+ ]
168
+ }
169
+ ],
170
+ "note": "Opt-in receiver with unverified payload compatibility."
171
+ },
172
+ {
173
+ "id": "urn:finding:lumen:embeddedArchive",
174
+ "subject": "urn:component:lumen",
175
+ "property": "embeddedArchive",
176
+ "state": "absent",
177
+ "claims": [
178
+ {
179
+ "value": "embedded archive database",
180
+ "evidence": [
181
+ {
182
+ "source": "urn:source:lumen-settings",
183
+ "locator": "Second paragraph"
184
+ }
185
+ ]
186
+ }
187
+ ],
188
+ "note": "Absent only in the composition described by this settings note."
189
+ }
190
+ ],
191
+ "alternatives": [
192
+ {
193
+ "id": "urn:option:lumen:archive",
194
+ "title": "Send documents and audit events to an archive",
195
+ "findings": [
196
+ "urn:finding:lumen:delivery",
197
+ "urn:finding:lumen:batchLimit"
198
+ ],
199
+ "requirements": [
200
+ "Agree schemas and batch limit"
201
+ ]
202
+ },
203
+ {
204
+ "id": "urn:option:lumen:identity",
205
+ "title": "Use an external identity service",
206
+ "findings": [
207
+ "urn:finding:lumen:authentication"
208
+ ],
209
+ "requirements": [
210
+ "Choose issuer and local credentials"
211
+ ]
212
+ },
213
+ {
214
+ "id": "urn:option:lumen:callback",
215
+ "title": "Receive archival callbacks",
216
+ "findings": [
217
+ "urn:finding:lumen:callback"
218
+ ],
219
+ "requirements": [
220
+ "Agree callback format and validation"
221
+ ]
222
+ }
223
+ ],
224
+ "decisions": [
225
+ {
226
+ "id": "urn:decision:lumen:archive",
227
+ "alternative": "urn:option:lumen:archive",
228
+ "choice": "selected",
229
+ "reason": "Synthetic user wants archival delivery in the proposed composition.",
230
+ "by": "Synthetic user",
231
+ "at": "2026-11-04T09:00:00Z"
232
+ },
233
+ {
234
+ "id": "urn:decision:lumen:identity",
235
+ "alternative": "urn:option:lumen:identity",
236
+ "choice": "selected",
237
+ "reason": "Synthetic user selects a shared identity role; actual issuer remains unknown.",
238
+ "by": "Synthetic user",
239
+ "at": "2026-11-04T09:00:00Z"
240
+ },
241
+ {
242
+ "id": "urn:decision:lumen:callback",
243
+ "alternative": "urn:option:lumen:callback",
244
+ "choice": "selected",
245
+ "reason": "Include callbacks as a desired, unverified connection.",
246
+ "by": "Synthetic user",
247
+ "at": "2026-11-04T09:10:00Z"
248
+ }
249
+ ],
250
+ "questions": [
251
+ {
252
+ "id": "urn:question:lumen:batch",
253
+ "text": "Which batch limit applies to the intended version?",
254
+ "findings": [
255
+ "urn:finding:lumen:batchLimit"
256
+ ]
257
+ },
258
+ {
259
+ "id": "urn:question:lumen:model",
260
+ "text": "Which inference implementation and model are intended?",
261
+ "findings": [
262
+ "urn:finding:lumen:modelVersion"
263
+ ]
264
+ }
265
+ ],
266
+ "notes": [
267
+ {
268
+ "by": "Synthetic researcher",
269
+ "at": "2026-11-04T09:00:00Z",
270
+ "text": "Imported source markup is data: \u003cscript\u003ealert(\"source text only\")\u003c/script\u003e"
271
+ },
272
+ {
273
+ "by": "Synthetic user",
274
+ "at": "2026-11-04T09:10:00Z",
275
+ "text": "The synthetic user manually requested callbacks. Both the visible edit and the old data were reviewed; this successor retains the source claims and unresolved compatibility."
276
+ }
277
+ ]
278
+ }</script>
279
+ </body>
280
+ </html>
@@ -0,0 +1,34 @@
1
+ # Shared node-and-relationship examples
2
+
3
+ Start here for the revised #50 verification. These developer-authored fixtures
4
+ exercise [contract 0.3](../../../docs/n8r-surface/surface-relationships.md). The
5
+ fictional assistant and setting names are not findings about LibreChat or any
6
+ real deployment. Earlier [0.2 fixtures](../descriptions/README.md) stay unchanged.
7
+
8
+ | File | What to inspect |
9
+ | --- | --- |
10
+ | [Capability](capability.json) | Component nodes and relationship edges with purpose, integration mechanism, configuration references and individual evidence. |
11
+ | [Bound r1](bound-r1.json) | The same relationship structure and identities, annotated with configured Atlas, conflicting identity and unknown inference bindings. |
12
+ | [Bound r2](bound-r2.json) | Same relationship ID, role endpoints and purpose; changed concrete database target. |
13
+ | [Research r1](research-r1.json), [research r2](research-r2.json) | Support evidence, property-level findings, source hashes/locators, human decisions and immutable predecessor references. |
14
+ | [Source pack](sources.md) | Synthetic purpose, protocol, alternatives, configuration summaries and uncertainty. |
15
+ | [Config reference](config/assistant.env.example) | Setting name and owner, without an actual setting value. |
16
+
17
+ `urn:v:demo` version `1` gives node type `component` and edge types `persists-data`
18
+ (stores application data), `authenticates-via` (uses an identity service), and `uses`
19
+ (generic possible dependence with the specific integration unresearched). Types do
20
+ not imply protocol compatibility or exercised connections. Known configuration
21
+ metadata does not establish a configured instance binding.
22
+
23
+ The database edge's `from`/`to` connect Assistant and the MongoDB role. The Bound
24
+ edge's `binding` identifies Atlas as the configured target; its successor selects
25
+ self-hosted MongoDB without changing the role graph or rewriting the earlier file.
26
+ Missing details stay unknown. Conflicts remain visible alongside human preference.
27
+
28
+ Follow the [human inspection and runnable readback](../../../docs/n8r-surface/surface-relationships.md#human-verification-task-list).
29
+ The library checks are offline after dependency setup; no CLI or AI runner is
30
+ required. They do not establish installed-skill acceptance or model conformance.
31
+
32
+ Machine-readable fixtures and the config example use [Apache-2.0](../../../LICENSE).
33
+ This guide and synthetic source prose use [CC-BY-4.0](../../../LICENSE-DOCS); credit
34
+ AI Surface Model contributors. No third-party source material is included.