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

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 (96) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE-DOCS +395 -0
  3. package/LICENSING.md +36 -0
  4. package/README.md +181 -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 +260 -0
  9. package/dist/codec.d.ts +4 -0
  10. package/dist/codec.js +41 -0
  11. package/dist/codex.d.ts +72 -0
  12. package/dist/codex.js +510 -0
  13. package/dist/contracts.d.ts +129 -0
  14. package/dist/contracts.js +1 -0
  15. package/dist/html.d.ts +5 -0
  16. package/dist/html.js +50 -0
  17. package/dist/index.d.ts +7 -0
  18. package/dist/index.js +5 -0
  19. package/dist/notes.d.ts +52 -0
  20. package/dist/notes.js +184 -0
  21. package/dist/portable.d.ts +10 -0
  22. package/dist/portable.js +71 -0
  23. package/dist/revisions.d.ts +2 -0
  24. package/dist/revisions.js +18 -0
  25. package/dist/settings.d.ts +23 -0
  26. package/dist/settings.js +100 -0
  27. package/dist/setup.d.ts +9 -0
  28. package/dist/setup.js +161 -0
  29. package/dist/source-tools.d.ts +102 -0
  30. package/dist/source-tools.js +201 -0
  31. package/dist/startup.d.ts +7 -0
  32. package/dist/startup.js +74 -0
  33. package/dist/surface-draft.d.ts +19 -0
  34. package/dist/surface-draft.js +95 -0
  35. package/dist/surface-instructions.d.ts +2 -0
  36. package/dist/surface-instructions.js +23 -0
  37. package/dist/surface-store.d.ts +36 -0
  38. package/dist/surface-store.js +181 -0
  39. package/dist/validate.d.ts +4 -0
  40. package/dist/validate.js +184 -0
  41. package/docs/n8r-surface/README.md +133 -0
  42. package/docs/n8r-surface/codex-research-transcript.md +51 -0
  43. package/docs/n8r-surface/codex-research-verification.md +176 -0
  44. package/docs/n8r-surface/command-outcomes.md +564 -0
  45. package/docs/n8r-surface/contracts.md +210 -0
  46. package/docs/n8r-surface/critical-path.md +163 -0
  47. package/docs/n8r-surface/design.md +289 -0
  48. package/docs/n8r-surface/getting-started.md +107 -0
  49. package/docs/n8r-surface/host-contract.md +176 -0
  50. package/docs/n8r-surface/implementation-decisions.md +96 -0
  51. package/docs/n8r-surface/npm-distribution.md +137 -0
  52. package/docs/n8r-surface/npm-release.md +188 -0
  53. package/docs/n8r-surface/recreation-handoff.md +117 -0
  54. package/docs/n8r-surface/researcher-discovery.md +157 -0
  55. package/docs/n8r-surface/researcher-prepared-check.md +117 -0
  56. package/docs/n8r-surface/researcher-reconciliation-trial.md +149 -0
  57. package/docs/n8r-surface/researcher-repository-check.md +95 -0
  58. package/docs/n8r-surface/researcher-skeleton-check.md +84 -0
  59. package/docs/n8r-surface/researcher-skill-verification.md +725 -0
  60. package/docs/n8r-surface/researcher-skill.md +255 -0
  61. package/docs/n8r-surface/researcher-vault.md +134 -0
  62. package/docs/n8r-surface/save-reopen-transcript.md +211 -0
  63. package/docs/n8r-surface/save-reopen-verification.md +152 -0
  64. package/docs/n8r-surface/startup-human-check.md +172 -0
  65. package/docs/n8r-surface/startup-verification.md +161 -0
  66. package/docs/n8r-surface/startup.md +151 -0
  67. package/docs/n8r-surface/surface-revisions-transcript.md +552 -0
  68. package/docs/n8r-surface/surface-revisions-verification.md +161 -0
  69. package/docs/n8r-surface/vault-setup-verification.md +210 -0
  70. package/docs/n8r-surface/verification.md +117 -0
  71. package/docs/n8r-surface/versioning.md +183 -0
  72. package/examples/researcher/README.md +92 -0
  73. package/examples/researcher/composed.surface.json +430 -0
  74. package/examples/researcher/composed.surface.yaml +283 -0
  75. package/examples/researcher/harbor-r1.research.html +193 -0
  76. package/examples/researcher/harbor-r2.research.html +226 -0
  77. package/examples/researcher/lumen-manual-edit.pending.html +271 -0
  78. package/examples/researcher/lumen-r1.research.html +271 -0
  79. package/examples/researcher/lumen-r2.research.html +280 -0
  80. package/examples/researcher/sources/harbor-api.md +16 -0
  81. package/examples/researcher/sources/harbor-auth.md +8 -0
  82. package/examples/researcher/sources/lumen-guide.md +28 -0
  83. package/examples/researcher/sources/lumen-settings.md +9 -0
  84. package/package.json +45 -4
  85. package/plugins/n8r-surface/.codex-plugin/plugin.json +31 -0
  86. package/plugins/n8r-surface/LICENSE +202 -0
  87. package/plugins/n8r-surface/LICENSE-DOCS +395 -0
  88. package/plugins/n8r-surface/LICENSING.md +36 -0
  89. package/plugins/n8r-surface/assets/icon.svg +5 -0
  90. package/plugins/n8r-surface/plugin.json +27 -0
  91. package/plugins/n8r-surface/skills/research/SKILL.md +122 -0
  92. package/plugins/n8r-surface/skills/research/agents/openai.yaml +4 -0
  93. package/plugins/n8r-surface/skills/research/references/discovery-map.md +160 -0
  94. package/plugins/n8r-surface/skills/research/references/model-meanings.md +55 -0
  95. package/plugins/n8r-surface/skills/research/references/skeleton-surface.md +105 -0
  96. package/plugins/n8r-surface/skills/research/references/working-notes.md +116 -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,16 @@
1
+ # Harbor Archive — fictional interface notes, fixture-1
2
+
3
+ Harbor Archive is a synthetic document and event archival product. It is
4
+ independent of Lumen Desk and has no built-in knowledge of summarization or AI.
5
+
6
+ ## Intake
7
+
8
+ Harbor offers separate HTTP routes for storing documents and appending audit
9
+ events. JSON request payloads are supported. Exact payload fields, limits and
10
+ authentication are not specified by this document.
11
+
12
+ ## Notifications
13
+
14
+ An optional outbound HTTP callback reports archival events. Its exact payload
15
+ and the receiver's compatibility need investigation. No integration with Lumen
16
+ Desk has been tested. No deployment or exercised request trace is supplied.
@@ -0,0 +1,8 @@
1
+ # Harbor Archive — fictional authentication note, fixture-2
2
+
3
+ This second source supplements fixture-1's interface notes. Harbor accepts OIDC
4
+ bearer tokens from a configured issuer. The issuer's identity, expected audience,
5
+ claim checks and credential bindings remain local configuration requirements.
6
+
7
+ This document establishes a supported option, not a selected issuer, successful
8
+ sign-in, reachable endpoint or exercised archival operation.