@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.
- package/LICENSE +202 -0
- package/LICENSE-DOCS +395 -0
- package/LICENSING.md +36 -0
- package/README.md +181 -2
- package/dist/activity.d.ts +16 -0
- package/dist/activity.js +44 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +260 -0
- package/dist/codec.d.ts +4 -0
- package/dist/codec.js +41 -0
- package/dist/codex.d.ts +72 -0
- package/dist/codex.js +510 -0
- package/dist/contracts.d.ts +129 -0
- package/dist/contracts.js +1 -0
- package/dist/html.d.ts +5 -0
- package/dist/html.js +50 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +5 -0
- package/dist/notes.d.ts +52 -0
- package/dist/notes.js +184 -0
- package/dist/portable.d.ts +10 -0
- package/dist/portable.js +71 -0
- package/dist/revisions.d.ts +2 -0
- package/dist/revisions.js +18 -0
- package/dist/settings.d.ts +23 -0
- package/dist/settings.js +100 -0
- package/dist/setup.d.ts +9 -0
- package/dist/setup.js +161 -0
- package/dist/source-tools.d.ts +102 -0
- package/dist/source-tools.js +201 -0
- package/dist/startup.d.ts +7 -0
- package/dist/startup.js +74 -0
- package/dist/surface-draft.d.ts +19 -0
- package/dist/surface-draft.js +95 -0
- package/dist/surface-instructions.d.ts +2 -0
- package/dist/surface-instructions.js +23 -0
- package/dist/surface-store.d.ts +36 -0
- package/dist/surface-store.js +181 -0
- package/dist/validate.d.ts +4 -0
- package/dist/validate.js +184 -0
- package/docs/n8r-surface/README.md +133 -0
- package/docs/n8r-surface/codex-research-transcript.md +51 -0
- package/docs/n8r-surface/codex-research-verification.md +176 -0
- package/docs/n8r-surface/command-outcomes.md +564 -0
- package/docs/n8r-surface/contracts.md +210 -0
- package/docs/n8r-surface/critical-path.md +163 -0
- package/docs/n8r-surface/design.md +289 -0
- package/docs/n8r-surface/getting-started.md +107 -0
- package/docs/n8r-surface/host-contract.md +176 -0
- package/docs/n8r-surface/implementation-decisions.md +96 -0
- package/docs/n8r-surface/npm-distribution.md +137 -0
- package/docs/n8r-surface/npm-release.md +188 -0
- package/docs/n8r-surface/recreation-handoff.md +117 -0
- package/docs/n8r-surface/researcher-discovery.md +157 -0
- package/docs/n8r-surface/researcher-prepared-check.md +117 -0
- package/docs/n8r-surface/researcher-reconciliation-trial.md +149 -0
- package/docs/n8r-surface/researcher-repository-check.md +95 -0
- package/docs/n8r-surface/researcher-skeleton-check.md +84 -0
- package/docs/n8r-surface/researcher-skill-verification.md +725 -0
- package/docs/n8r-surface/researcher-skill.md +255 -0
- package/docs/n8r-surface/researcher-vault.md +134 -0
- package/docs/n8r-surface/save-reopen-transcript.md +211 -0
- package/docs/n8r-surface/save-reopen-verification.md +152 -0
- package/docs/n8r-surface/startup-human-check.md +172 -0
- package/docs/n8r-surface/startup-verification.md +161 -0
- package/docs/n8r-surface/startup.md +151 -0
- package/docs/n8r-surface/surface-revisions-transcript.md +552 -0
- package/docs/n8r-surface/surface-revisions-verification.md +161 -0
- package/docs/n8r-surface/vault-setup-verification.md +210 -0
- package/docs/n8r-surface/verification.md +117 -0
- package/docs/n8r-surface/versioning.md +183 -0
- package/examples/researcher/README.md +92 -0
- package/examples/researcher/composed.surface.json +430 -0
- package/examples/researcher/composed.surface.yaml +283 -0
- package/examples/researcher/harbor-r1.research.html +193 -0
- package/examples/researcher/harbor-r2.research.html +226 -0
- package/examples/researcher/lumen-manual-edit.pending.html +271 -0
- package/examples/researcher/lumen-r1.research.html +271 -0
- package/examples/researcher/lumen-r2.research.html +280 -0
- package/examples/researcher/sources/harbor-api.md +16 -0
- package/examples/researcher/sources/harbor-auth.md +8 -0
- package/examples/researcher/sources/lumen-guide.md +28 -0
- package/examples/researcher/sources/lumen-settings.md +9 -0
- package/package.json +45 -4
- package/plugins/n8r-surface/.codex-plugin/plugin.json +31 -0
- package/plugins/n8r-surface/LICENSE +202 -0
- package/plugins/n8r-surface/LICENSE-DOCS +395 -0
- package/plugins/n8r-surface/LICENSING.md +36 -0
- package/plugins/n8r-surface/assets/icon.svg +5 -0
- package/plugins/n8r-surface/plugin.json +27 -0
- package/plugins/n8r-surface/skills/research/SKILL.md +122 -0
- package/plugins/n8r-surface/skills/research/agents/openai.yaml +4 -0
- package/plugins/n8r-surface/skills/research/references/discovery-map.md +160 -0
- package/plugins/n8r-surface/skills/research/references/model-meanings.md +55 -0
- package/plugins/n8r-surface/skills/research/references/skeleton-surface.md +105 -0
- package/plugins/n8r-surface/skills/research/references/working-notes.md +116 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"contract": n8r.surface/0.1
|
|
2
|
+
"id": urn:surface:lumen-with-harbor
|
|
3
|
+
"title": Selected Lumen and Harbor composition
|
|
4
|
+
"revision":
|
|
5
|
+
"id": r1
|
|
6
|
+
"parent": null
|
|
7
|
+
"createdAt": 2026-11-04T09:00:00Z
|
|
8
|
+
"author": Synthetic researcher
|
|
9
|
+
"reason": Synthetic user selects a partial composition; no integration has been run
|
|
10
|
+
"scope": Desired composition from supplied fictional documents. Authentication, schemas and effective setup are incomplete.
|
|
11
|
+
"extensions":
|
|
12
|
+
"https://example.test/selection/v1":
|
|
13
|
+
"synthetic": true
|
|
14
|
+
"opaque":
|
|
15
|
+
"reviewed": true
|
|
16
|
+
"kind": definition
|
|
17
|
+
"records":
|
|
18
|
+
- "id": urn:research:lumen
|
|
19
|
+
"revision": r2
|
|
20
|
+
"digest": sha256:d7384fe64f1140815ddda3c7bbb2fe826a83140b445e70d839b07145c5840aca
|
|
21
|
+
- "id": urn:research:harbor
|
|
22
|
+
"revision": r2
|
|
23
|
+
"digest": sha256:8e5e492f7154b42b250ad3badea95cc73b571c6e22b4120cd957fcd9e57a0f2b
|
|
24
|
+
"vocabularies":
|
|
25
|
+
- "id": urn:n8r:vocabulary:researcher-example
|
|
26
|
+
"version": "0.1"
|
|
27
|
+
"nodes":
|
|
28
|
+
- "id": urn:component:lumen
|
|
29
|
+
"type":
|
|
30
|
+
"vocabulary": urn:n8r:vocabulary:researcher-example
|
|
31
|
+
"term": application
|
|
32
|
+
"label": Lumen Desk
|
|
33
|
+
"attributes":
|
|
34
|
+
"product":
|
|
35
|
+
"state": known
|
|
36
|
+
"note": Synthetic product
|
|
37
|
+
"value": Lumen Desk
|
|
38
|
+
"version":
|
|
39
|
+
"state": unknown
|
|
40
|
+
"note": No deployable revision supplied
|
|
41
|
+
"retries":
|
|
42
|
+
"state": omitted
|
|
43
|
+
"note": Relevant retry policy deliberately left for later research
|
|
44
|
+
"tenantLabel":
|
|
45
|
+
"state": redacted
|
|
46
|
+
"note": Withheld in this synthetic sharing case
|
|
47
|
+
"embeddedArchive":
|
|
48
|
+
"state": absent
|
|
49
|
+
"note": Settings note describes no embedded archive
|
|
50
|
+
"theme":
|
|
51
|
+
"state": out-of-scope
|
|
52
|
+
"note": UI design is outside this investigation
|
|
53
|
+
"basis":
|
|
54
|
+
- "record": urn:research:lumen
|
|
55
|
+
"revision": r2
|
|
56
|
+
"items":
|
|
57
|
+
- urn:finding:lumen:delivery
|
|
58
|
+
- urn:decision:lumen:archive
|
|
59
|
+
"requirements": []
|
|
60
|
+
- "id": urn:component:harbor
|
|
61
|
+
"type":
|
|
62
|
+
"vocabulary": urn:n8r:vocabulary:researcher-example
|
|
63
|
+
"term": service
|
|
64
|
+
"label": Harbor Archive
|
|
65
|
+
"attributes":
|
|
66
|
+
"product":
|
|
67
|
+
"state": known
|
|
68
|
+
"note": Synthetic product
|
|
69
|
+
"value": Harbor Archive
|
|
70
|
+
"version":
|
|
71
|
+
"state": unknown
|
|
72
|
+
"note": No implementation revision supplied
|
|
73
|
+
"basis":
|
|
74
|
+
- "record": urn:research:harbor
|
|
75
|
+
"revision": r2
|
|
76
|
+
"items":
|
|
77
|
+
- urn:finding:harbor:intake
|
|
78
|
+
- urn:decision:harbor:archive
|
|
79
|
+
"requirements": []
|
|
80
|
+
- "id": urn:component:identity
|
|
81
|
+
"type":
|
|
82
|
+
"vocabulary": urn:n8r:vocabulary:researcher-example
|
|
83
|
+
"term": service
|
|
84
|
+
"label": Shared identity service
|
|
85
|
+
"attributes":
|
|
86
|
+
"product":
|
|
87
|
+
"state": unknown
|
|
88
|
+
"note": Human selected a shared role; product unspecified
|
|
89
|
+
"basis":
|
|
90
|
+
- "record": urn:research:lumen
|
|
91
|
+
"revision": r2
|
|
92
|
+
"items":
|
|
93
|
+
- urn:finding:lumen:authentication
|
|
94
|
+
- urn:decision:lumen:identity
|
|
95
|
+
- "record": urn:research:harbor
|
|
96
|
+
"revision": r2
|
|
97
|
+
"items":
|
|
98
|
+
- urn:finding:harbor:authentication
|
|
99
|
+
- urn:decision:harbor:identity
|
|
100
|
+
"requirements":
|
|
101
|
+
- urn:requirement:identity
|
|
102
|
+
- "id": urn:component:inference
|
|
103
|
+
"type":
|
|
104
|
+
"vocabulary": urn:n8r:vocabulary:researcher-example
|
|
105
|
+
"term": inference-service
|
|
106
|
+
"label": Inference service
|
|
107
|
+
"attributes":
|
|
108
|
+
"modelVersion":
|
|
109
|
+
"state": unknown
|
|
110
|
+
"note": Not established by supplied sources
|
|
111
|
+
"basis":
|
|
112
|
+
- "record": urn:research:lumen
|
|
113
|
+
"revision": r2
|
|
114
|
+
"items":
|
|
115
|
+
- urn:finding:lumen:modelVersion
|
|
116
|
+
"requirements":
|
|
117
|
+
- urn:requirement:inference
|
|
118
|
+
"relationships":
|
|
119
|
+
- "id": urn:relationship:documents
|
|
120
|
+
"from": urn:component:lumen
|
|
121
|
+
"to": urn:component:harbor
|
|
122
|
+
"type":
|
|
123
|
+
"vocabulary": urn:n8r:vocabulary:researcher-example
|
|
124
|
+
"term": sends-documents
|
|
125
|
+
"claim": declared
|
|
126
|
+
"attributes":
|
|
127
|
+
"batchLimit":
|
|
128
|
+
"state": unknown
|
|
129
|
+
"note": Guide says 10; settings note says 25. Conflict remains unresolved.
|
|
130
|
+
"protocol":
|
|
131
|
+
"state": known
|
|
132
|
+
"note": Selected declared protocol
|
|
133
|
+
"value": HTTP
|
|
134
|
+
"basis":
|
|
135
|
+
- "record": urn:research:lumen
|
|
136
|
+
"revision": r2
|
|
137
|
+
"items":
|
|
138
|
+
- urn:finding:lumen:delivery
|
|
139
|
+
- urn:decision:lumen:archive
|
|
140
|
+
- "record": urn:research:harbor
|
|
141
|
+
"revision": r2
|
|
142
|
+
"items":
|
|
143
|
+
- urn:finding:harbor:intake
|
|
144
|
+
- urn:decision:harbor:archive
|
|
145
|
+
- "record": urn:research:lumen
|
|
146
|
+
"revision": r2
|
|
147
|
+
"items":
|
|
148
|
+
- urn:finding:lumen:batchLimit
|
|
149
|
+
"requirements":
|
|
150
|
+
- urn:requirement:archive-token
|
|
151
|
+
- urn:requirement:payload
|
|
152
|
+
- "id": urn:relationship:audit
|
|
153
|
+
"from": urn:component:lumen
|
|
154
|
+
"to": urn:component:harbor
|
|
155
|
+
"type":
|
|
156
|
+
"vocabulary": urn:n8r:vocabulary:researcher-example
|
|
157
|
+
"term": sends-audit
|
|
158
|
+
"claim": declared
|
|
159
|
+
"attributes":
|
|
160
|
+
"protocol":
|
|
161
|
+
"state": known
|
|
162
|
+
"note": Independent parallel route
|
|
163
|
+
"value": HTTP
|
|
164
|
+
"basis":
|
|
165
|
+
- "record": urn:research:lumen
|
|
166
|
+
"revision": r2
|
|
167
|
+
"items":
|
|
168
|
+
- urn:finding:lumen:delivery
|
|
169
|
+
- urn:decision:lumen:archive
|
|
170
|
+
- "record": urn:research:harbor
|
|
171
|
+
"revision": r2
|
|
172
|
+
"items":
|
|
173
|
+
- urn:finding:harbor:intake
|
|
174
|
+
- urn:decision:harbor:archive
|
|
175
|
+
"requirements":
|
|
176
|
+
- urn:requirement:archive-token
|
|
177
|
+
- urn:requirement:payload
|
|
178
|
+
- "id": urn:relationship:callback
|
|
179
|
+
"from": urn:component:harbor
|
|
180
|
+
"to": urn:component:lumen
|
|
181
|
+
"type":
|
|
182
|
+
"vocabulary": urn:n8r:vocabulary:researcher-example
|
|
183
|
+
"term": notifies
|
|
184
|
+
"claim": declared
|
|
185
|
+
"attributes":
|
|
186
|
+
"schema":
|
|
187
|
+
"state": unknown
|
|
188
|
+
"note": Both support callback possibilities; exact compatibility not established
|
|
189
|
+
"basis":
|
|
190
|
+
- "record": urn:research:lumen
|
|
191
|
+
"revision": r2
|
|
192
|
+
"items":
|
|
193
|
+
- urn:finding:lumen:callback
|
|
194
|
+
- urn:decision:lumen:callback
|
|
195
|
+
- "record": urn:research:harbor
|
|
196
|
+
"revision": r2
|
|
197
|
+
"items":
|
|
198
|
+
- urn:finding:harbor:callback
|
|
199
|
+
- urn:decision:harbor:callback
|
|
200
|
+
"requirements":
|
|
201
|
+
- urn:requirement:payload
|
|
202
|
+
- "id": urn:relationship:lumen-auth
|
|
203
|
+
"from": urn:component:lumen
|
|
204
|
+
"to": urn:component:identity
|
|
205
|
+
"type":
|
|
206
|
+
"vocabulary": urn:n8r:vocabulary:researcher-example
|
|
207
|
+
"term": uses-identity
|
|
208
|
+
"claim": declared
|
|
209
|
+
"attributes":
|
|
210
|
+
"protocol":
|
|
211
|
+
"state": known
|
|
212
|
+
"note": Selected option
|
|
213
|
+
"value": OIDC
|
|
214
|
+
"basis":
|
|
215
|
+
- "record": urn:research:lumen
|
|
216
|
+
"revision": r2
|
|
217
|
+
"items":
|
|
218
|
+
- urn:finding:lumen:authentication
|
|
219
|
+
- urn:decision:lumen:identity
|
|
220
|
+
"requirements":
|
|
221
|
+
- urn:requirement:identity
|
|
222
|
+
- "id": urn:relationship:harbor-auth
|
|
223
|
+
"from": urn:component:harbor
|
|
224
|
+
"to": urn:component:identity
|
|
225
|
+
"type":
|
|
226
|
+
"vocabulary": urn:n8r:vocabulary:researcher-example
|
|
227
|
+
"term": uses-identity
|
|
228
|
+
"claim": declared
|
|
229
|
+
"attributes":
|
|
230
|
+
"protocol":
|
|
231
|
+
"state": known
|
|
232
|
+
"note": Selected option
|
|
233
|
+
"value": OIDC bearer token
|
|
234
|
+
"basis":
|
|
235
|
+
- "record": urn:research:harbor
|
|
236
|
+
"revision": r2
|
|
237
|
+
"items":
|
|
238
|
+
- urn:finding:harbor:authentication
|
|
239
|
+
- urn:decision:harbor:identity
|
|
240
|
+
"requirements":
|
|
241
|
+
- urn:requirement:identity
|
|
242
|
+
- "id": urn:relationship:inference
|
|
243
|
+
"from": urn:component:lumen
|
|
244
|
+
"to": urn:component:inference
|
|
245
|
+
"type":
|
|
246
|
+
"vocabulary": urn:n8r:vocabulary:researcher-example
|
|
247
|
+
"term": uses-inference
|
|
248
|
+
"claim": declared
|
|
249
|
+
"attributes":
|
|
250
|
+
"model":
|
|
251
|
+
"state": unknown
|
|
252
|
+
"note": Source does not identify model
|
|
253
|
+
"basis":
|
|
254
|
+
- "record": urn:research:lumen
|
|
255
|
+
"revision": r2
|
|
256
|
+
"items":
|
|
257
|
+
- urn:finding:lumen:modelVersion
|
|
258
|
+
"requirements":
|
|
259
|
+
- urn:requirement:inference
|
|
260
|
+
"requirements":
|
|
261
|
+
- "id": urn:requirement:archive-token
|
|
262
|
+
"kind": secret
|
|
263
|
+
"description": Recipient supplies an appropriate local token binding; no secret value included.
|
|
264
|
+
"state": unknown
|
|
265
|
+
- "id": urn:requirement:identity
|
|
266
|
+
"kind": configuration
|
|
267
|
+
"description": Choose shared issuer, audiences and claim checks; selection does not configure a service.
|
|
268
|
+
"state": unknown
|
|
269
|
+
- "id": urn:requirement:payload
|
|
270
|
+
"kind": configuration
|
|
271
|
+
"description": Agree document/audit/callback schemas and limits.
|
|
272
|
+
"state": unknown
|
|
273
|
+
- "id": urn:requirement:inference
|
|
274
|
+
"kind": resource
|
|
275
|
+
"description": Select inference implementation, model and local bindings.
|
|
276
|
+
"state": unknown
|
|
277
|
+
"coverage":
|
|
278
|
+
- Two fictional products researched from supplied documents.
|
|
279
|
+
- Shared identity and inference roles remain partial.
|
|
280
|
+
"gaps":
|
|
281
|
+
- Integration not tested; no reachable or exercised connection evidence.
|
|
282
|
+
- Batch-limit conflict remains unresolved.
|
|
283
|
+
- No deployment bindings, effective setup or Experiment Runs supplied.
|
|
@@ -0,0 +1,193 @@
|
|
|
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>Harbor Archive 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>Harbor Archive 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:harbor</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:harbor-api</span></dd><dt>location</dt><dd><span>sources/harbor-api.md</span></dd><dt>version</dt><dd><span>fixture-1</span></dd><dt>digest</dt><dd><span>sha256:b2b87be7df05374c4cc574a1f308bd3b3444f63cd95e894121b9ea1e7be3d681</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>harbor-api.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:harbor:intake</span></dd><dt>subject</dt><dd><span>urn:component:harbor</span></dd><dt>property</dt><dd><span>intake</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:harbor-api</span></dd><dt>locator</dt><dd><span>Intake</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>Possible JSON routes; request schema unknown.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:harbor:callback</span></dd><dt>subject</dt><dd><span>urn:component:harbor</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 outbound HTTP callback</span></dd><dt>evidence</dt><dd><ol><li><dl><dt>source</dt><dd><span>urn:source:harbor-api</span></dd><dt>locator</dt><dd><span>Notifications</span></dd></dl></li></ol></dd></dl></li></ol></dd><dt>note</dt><dd><span>No compatibility claim.</span></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:finding:harbor:authentication</span></dd><dt>subject</dt><dd><span>urn:component:harbor</span></dd><dt>property</dt><dd><span>authentication</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>Initial interface note does not establish authentication.</span></dd></dl></li></ol></section>
|
|
19
|
+
<section><h2>alternatives</h2><ol><li><dl><dt>id</dt><dd><span>urn:option:harbor:archive</span></dd><dt>title</dt><dd><span>Receive document and audit requests</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:harbor:intake</span></li></ol></dd><dt>requirements</dt><dd><ol><li><span>Agree payloads, limits and authentication</span></li></ol></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:option:harbor:callback</span></dd><dt>title</dt><dd><span>Notify an HTTP receiver</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:harbor:callback</span></li></ol></dd><dt>requirements</dt><dd><ol><li><span>Configure receiver and callback validation</span></li></ol></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:option:harbor:identity</span></dd><dt>title</dt><dd><span>Investigate shared identity</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:harbor:authentication</span></li></ol></dd><dt>requirements</dt><dd><ol><li><span>Obtain an authentication source</span></li></ol></dd></dl></li></ol></section>
|
|
20
|
+
<section><h2>decisions</h2><ol><li><dl><dt>id</dt><dd><span>urn:decision:harbor:archive</span></dd><dt>alternative</dt><dd><span>urn:option:harbor:archive</span></dd><dt>choice</dt><dd><span>selected</span></dd><dt>reason</dt><dd><span>Synthetic user selects the archive role, pending interface checks.</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:harbor:callback</span></dd><dt>alternative</dt><dd><span>urn:option:harbor:callback</span></dd><dt>choice</dt><dd><span>selected</span></dd><dt>reason</dt><dd><span>Synthetic user requests archival notifications.</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:harbor:identity</span></dd><dt>alternative</dt><dd><span>urn:option:harbor:identity</span></dd><dt>choice</dt><dd><span>deferred</span></dd><dt>reason</dt><dd><span>Source evidence is incomplete.</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:harbor:auth</span></dd><dt>text</dt><dd><span>What authentication does intake support?</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:harbor:authentication</span></li></ol></dd></dl></li><li><dl><dt>id</dt><dd><span>urn:question:harbor:schema</span></dd><dt>text</dt><dd><span>Can these routes accept Lumen output after explicit mapping?</span></dd><dt>findings</dt><dd><ol><li><span>urn:finding:harbor:intake</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>Keep the two products independent until a human selects a composition.</span></dd></dl></li></ol></section>
|
|
23
|
+
<script type="application/json" id="n8r-record">{
|
|
24
|
+
"contract": "n8r.research/0.1",
|
|
25
|
+
"id": "urn:research:harbor",
|
|
26
|
+
"title": "Harbor Archive 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:harbor-api",
|
|
48
|
+
"location": "sources/harbor-api.md",
|
|
49
|
+
"version": "fixture-1",
|
|
50
|
+
"digest": "sha256:b2b87be7df05374c4cc574a1f308bd3b3444f63cd95e894121b9ea1e7be3d681",
|
|
51
|
+
"inspectedAt": "2026-11-04T09:00:00Z",
|
|
52
|
+
"coverage": [
|
|
53
|
+
{
|
|
54
|
+
"path": "harbor-api.md",
|
|
55
|
+
"status": "inspected",
|
|
56
|
+
"note": "Whole supplied synthetic document; no repository or runtime inspected."
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"findings": [
|
|
62
|
+
{
|
|
63
|
+
"id": "urn:finding:harbor:intake",
|
|
64
|
+
"subject": "urn:component:harbor",
|
|
65
|
+
"property": "intake",
|
|
66
|
+
"state": "known",
|
|
67
|
+
"claims": [
|
|
68
|
+
{
|
|
69
|
+
"value": [
|
|
70
|
+
"document HTTP route",
|
|
71
|
+
"audit HTTP route"
|
|
72
|
+
],
|
|
73
|
+
"evidence": [
|
|
74
|
+
{
|
|
75
|
+
"source": "urn:source:harbor-api",
|
|
76
|
+
"locator": "Intake"
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"note": "Possible JSON routes; request schema unknown."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "urn:finding:harbor:callback",
|
|
85
|
+
"subject": "urn:component:harbor",
|
|
86
|
+
"property": "callback",
|
|
87
|
+
"state": "known",
|
|
88
|
+
"claims": [
|
|
89
|
+
{
|
|
90
|
+
"value": "optional outbound HTTP callback",
|
|
91
|
+
"evidence": [
|
|
92
|
+
{
|
|
93
|
+
"source": "urn:source:harbor-api",
|
|
94
|
+
"locator": "Notifications"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"note": "No compatibility claim."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "urn:finding:harbor:authentication",
|
|
103
|
+
"subject": "urn:component:harbor",
|
|
104
|
+
"property": "authentication",
|
|
105
|
+
"state": "unknown",
|
|
106
|
+
"claims": [],
|
|
107
|
+
"note": "Initial interface note does not establish authentication."
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"alternatives": [
|
|
111
|
+
{
|
|
112
|
+
"id": "urn:option:harbor:archive",
|
|
113
|
+
"title": "Receive document and audit requests",
|
|
114
|
+
"findings": [
|
|
115
|
+
"urn:finding:harbor:intake"
|
|
116
|
+
],
|
|
117
|
+
"requirements": [
|
|
118
|
+
"Agree payloads, limits and authentication"
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "urn:option:harbor:callback",
|
|
123
|
+
"title": "Notify an HTTP receiver",
|
|
124
|
+
"findings": [
|
|
125
|
+
"urn:finding:harbor:callback"
|
|
126
|
+
],
|
|
127
|
+
"requirements": [
|
|
128
|
+
"Configure receiver and callback validation"
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"id": "urn:option:harbor:identity",
|
|
133
|
+
"title": "Investigate shared identity",
|
|
134
|
+
"findings": [
|
|
135
|
+
"urn:finding:harbor:authentication"
|
|
136
|
+
],
|
|
137
|
+
"requirements": [
|
|
138
|
+
"Obtain an authentication source"
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
"decisions": [
|
|
143
|
+
{
|
|
144
|
+
"id": "urn:decision:harbor:archive",
|
|
145
|
+
"alternative": "urn:option:harbor:archive",
|
|
146
|
+
"choice": "selected",
|
|
147
|
+
"reason": "Synthetic user selects the archive role, pending interface checks.",
|
|
148
|
+
"by": "Synthetic user",
|
|
149
|
+
"at": "2026-11-04T09:00:00Z"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "urn:decision:harbor:callback",
|
|
153
|
+
"alternative": "urn:option:harbor:callback",
|
|
154
|
+
"choice": "selected",
|
|
155
|
+
"reason": "Synthetic user requests archival notifications.",
|
|
156
|
+
"by": "Synthetic user",
|
|
157
|
+
"at": "2026-11-04T09:00:00Z"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"id": "urn:decision:harbor:identity",
|
|
161
|
+
"alternative": "urn:option:harbor:identity",
|
|
162
|
+
"choice": "deferred",
|
|
163
|
+
"reason": "Source evidence is incomplete.",
|
|
164
|
+
"by": "Synthetic user",
|
|
165
|
+
"at": "2026-11-04T09:00:00Z"
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
"questions": [
|
|
169
|
+
{
|
|
170
|
+
"id": "urn:question:harbor:auth",
|
|
171
|
+
"text": "What authentication does intake support?",
|
|
172
|
+
"findings": [
|
|
173
|
+
"urn:finding:harbor:authentication"
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "urn:question:harbor:schema",
|
|
178
|
+
"text": "Can these routes accept Lumen output after explicit mapping?",
|
|
179
|
+
"findings": [
|
|
180
|
+
"urn:finding:harbor:intake"
|
|
181
|
+
]
|
|
182
|
+
}
|
|
183
|
+
],
|
|
184
|
+
"notes": [
|
|
185
|
+
{
|
|
186
|
+
"by": "Synthetic researcher",
|
|
187
|
+
"at": "2026-11-04T09:00:00Z",
|
|
188
|
+
"text": "Keep the two products independent until a human selects a composition."
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
}</script>
|
|
192
|
+
</body>
|
|
193
|
+
</html>
|