@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.
- package/LICENSE +202 -0
- package/LICENSE-DOCS +395 -0
- package/LICENSING.md +36 -0
- package/README.md +207 -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 +412 -0
- package/dist/codec.d.ts +6 -0
- package/dist/codec.js +56 -0
- package/dist/codex.d.ts +72 -0
- package/dist/codex.js +526 -0
- package/dist/contracts.d.ts +235 -0
- package/dist/contracts.js +1 -0
- package/dist/cyclonedx-schemas/bom-1.7.schema.json +6700 -0
- package/dist/cyclonedx-schemas/cryptography-defs.schema.json +576 -0
- package/dist/cyclonedx-schemas/jsf-0.82.schema.json +240 -0
- package/dist/cyclonedx-schemas/spdx.schema.json +786 -0
- package/dist/cyclonedx-validation.d.ts +1 -0
- package/dist/cyclonedx-validation.js +45 -0
- package/dist/html.d.ts +5 -0
- package/dist/html.js +74 -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/recent.d.ts +9 -0
- package/dist/recent.js +71 -0
- package/dist/revisions.d.ts +2 -0
- package/dist/revisions.js +60 -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/skill-artifacts-cli.d.ts +1 -0
- package/dist/skill-artifacts-cli.js +13 -0
- package/dist/skill-artifacts.d.ts +15 -0
- package/dist/skill-artifacts.js +184 -0
- package/dist/skill-cyclonedx.d.ts +26 -0
- package/dist/skill-cyclonedx.js +214 -0
- package/dist/skill-presentation.d.ts +10 -0
- package/dist/skill-presentation.js +108 -0
- package/dist/skill-surface-cli.d.ts +1 -0
- package/dist/skill-surface-cli.js +37 -0
- package/dist/skill-surface-store.d.ts +7 -0
- package/dist/skill-surface-store.js +126 -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-bom.d.ts +73 -0
- package/dist/surface-bom.js +139 -0
- package/dist/surface-draft.d.ts +22 -0
- package/dist/surface-draft.js +112 -0
- package/dist/surface-instructions.d.ts +3 -0
- package/dist/surface-instructions.js +32 -0
- package/dist/surface-overview.d.ts +15 -0
- package/dist/surface-overview.js +86 -0
- package/dist/surface-store.d.ts +34 -0
- package/dist/surface-store.js +213 -0
- package/dist/surface-view.d.ts +3 -0
- package/dist/surface-view.js +50 -0
- package/dist/validate.d.ts +4 -0
- package/dist/validate.js +482 -0
- package/docs/n8r-surface/README.md +133 -0
- package/docs/n8r-surface/cli-bundles.md +72 -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 +711 -0
- package/docs/n8r-surface/contracts.md +220 -0
- package/docs/n8r-surface/critical-path.md +184 -0
- package/docs/n8r-surface/design.md +289 -0
- package/docs/n8r-surface/first-use-access.md +143 -0
- package/docs/n8r-surface/first-use-overview.md +262 -0
- package/docs/n8r-surface/getting-started.md +74 -0
- package/docs/n8r-surface/guided-journey-verification.md +137 -0
- package/docs/n8r-surface/host-contract.md +176 -0
- package/docs/n8r-surface/implementation-decisions.md +96 -0
- package/docs/n8r-surface/instance-first-research.md +209 -0
- package/docs/n8r-surface/npm-distribution.md +107 -0
- package/docs/n8r-surface/npm-release.md +315 -0
- package/docs/n8r-surface/product-direction.md +327 -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 +309 -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/security-assurance-strategy.md +267 -0
- package/docs/n8r-surface/skill-bom-verification.md +142 -0
- package/docs/n8r-surface/skill-cyclonedx-verification.md +144 -0
- package/docs/n8r-surface/skill-cyclonedx.md +85 -0
- package/docs/n8r-surface/skill-manual.md +129 -0
- package/docs/n8r-surface/skill-surface-artifacts.md +234 -0
- package/docs/n8r-surface/skill-usefulness-verification.md +135 -0
- package/docs/n8r-surface/skill-workspace-automation.md +359 -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-description-contract.md +224 -0
- package/docs/n8r-surface/surface-descriptions.md +173 -0
- package/docs/n8r-surface/surface-relationships.md +231 -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/tester-candidate.md +158 -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 +172 -0
- package/docs/n8r-surface/workspace-human-check.md +101 -0
- package/docs/n8r-surface/workspace-installation.md +68 -0
- package/docs/n8r-surface/workspace-verification.md +350 -0
- package/docs/n8r-surface/workspace.md +83 -0
- package/examples/researcher/README.md +100 -0
- package/examples/researcher/composed.surface.json +430 -0
- package/examples/researcher/composed.surface.yaml +283 -0
- package/examples/researcher/cyclonedx/configured/README.md +7 -0
- package/examples/researcher/cyclonedx/configured/manifest.json +10 -0
- package/examples/researcher/cyclonedx/configured/mapping.json +323 -0
- package/examples/researcher/cyclonedx/configured/surface-records.json +1275 -0
- package/examples/researcher/cyclonedx/configured/surface.cdx.json +79 -0
- package/examples/researcher/descriptions/README.md +29 -0
- package/examples/researcher/descriptions/bound-r1.json +141 -0
- package/examples/researcher/descriptions/bound-r2.json +153 -0
- package/examples/researcher/descriptions/capability.json +167 -0
- package/examples/researcher/descriptions/research-r1.json +153 -0
- package/examples/researcher/descriptions/research-r2.json +157 -0
- package/examples/researcher/descriptions/sources.md +24 -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/relationships/README.md +34 -0
- package/examples/researcher/relationships/bound-r1.json +346 -0
- package/examples/researcher/relationships/bound-r2.json +358 -0
- package/examples/researcher/relationships/capability.json +325 -0
- package/examples/researcher/relationships/config/assistant.env.example +4 -0
- package/examples/researcher/relationships/research-r1.json +300 -0
- package/examples/researcher/relationships/research-r2.json +304 -0
- package/examples/researcher/relationships/sources.md +38 -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/examples/researcher/surface-bom/README.md +17 -0
- package/examples/researcher/surface-bom/initial.cdx.json +188 -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 +39 -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 +163 -0
- package/plugins/n8r-surface/skills/research/agents/openai.yaml +4 -0
- package/plugins/n8r-surface/skills/research/references/artifacts.md +152 -0
- package/plugins/n8r-surface/skills/research/references/cyclonedx.md +207 -0
- package/plugins/n8r-surface/skills/research/references/discovery-map.md +178 -0
- package/plugins/n8r-surface/skills/research/references/examples/bound-r1.json +346 -0
- package/plugins/n8r-surface/skills/research/references/examples/capability.json +325 -0
- package/plugins/n8r-surface/skills/research/references/examples/research-r1.json +300 -0
- package/plugins/n8r-surface/skills/research/references/examples/surface.cdx.json +188 -0
- package/plugins/n8r-surface/skills/research/references/first-use-access.md +97 -0
- package/plugins/n8r-surface/skills/research/references/first-use-overview.md +101 -0
- package/plugins/n8r-surface/skills/research/references/instance-first.md +125 -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 +121 -0
- package/plugins/n8r-surface/skills/research/references/workspace.md +89 -0
- package/plugins/n8r-surface/skills/research/scripts/THIRD-PARTY-NOTICES.txt +273 -0
- package/plugins/n8r-surface/skills/research/scripts/artifacts.mjs +8348 -0
- package/plugins/n8r-surface/skills/research/scripts/cyclonedx.mjs +28113 -0
- package/plugins/n8r-surface/skills/research/scripts/surface.mjs +27800 -0
- package/plugins/n8r-surface/skills/research/scripts/workspace.mjs +120 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
{
|
|
2
|
+
"bomFormat": "CycloneDX",
|
|
3
|
+
"specVersion": "1.7",
|
|
4
|
+
"serialNumber": "urn:uuid:94141625-a8d3-4cec-984a-c46be305058d",
|
|
5
|
+
"version": 1,
|
|
6
|
+
"metadata": {
|
|
7
|
+
"timestamp": "2026-11-13T12:00:00Z"
|
|
8
|
+
},
|
|
9
|
+
"components": [
|
|
10
|
+
{
|
|
11
|
+
"bom-ref": "app",
|
|
12
|
+
"type": "application",
|
|
13
|
+
"name": "Synthetic Assistant"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"bom-ref": "model",
|
|
17
|
+
"type": "machine-learning-model",
|
|
18
|
+
"name": "Synthetic Model"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"services": [
|
|
22
|
+
{
|
|
23
|
+
"bom-ref": "db-a",
|
|
24
|
+
"name": "Database A"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"bom-ref": "db-b",
|
|
28
|
+
"name": "Database B"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"bom-ref": "db-c",
|
|
32
|
+
"name": "Database C"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"bom-ref": "db-d",
|
|
36
|
+
"name": "Database D"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"dependencies": [
|
|
40
|
+
{
|
|
41
|
+
"ref": "app",
|
|
42
|
+
"dependsOn": [
|
|
43
|
+
"db-b"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"compositions": [
|
|
48
|
+
{
|
|
49
|
+
"aggregate": "unknown"
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"annotations": [
|
|
53
|
+
{
|
|
54
|
+
"bom-ref": "evidence-support",
|
|
55
|
+
"subjects": [
|
|
56
|
+
"app",
|
|
57
|
+
"db-a",
|
|
58
|
+
"db-b",
|
|
59
|
+
"db-c",
|
|
60
|
+
"db-d"
|
|
61
|
+
],
|
|
62
|
+
"annotator": {
|
|
63
|
+
"individual": {
|
|
64
|
+
"name": "Researcher"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"timestamp": "2026-11-13T12:00:00Z",
|
|
68
|
+
"text": "The synthetic source describes four supported database alternatives. This does not establish a selected deployment."
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"bom-ref": "evidence-selection",
|
|
72
|
+
"subjects": [
|
|
73
|
+
"app",
|
|
74
|
+
"db-b"
|
|
75
|
+
],
|
|
76
|
+
"annotator": {
|
|
77
|
+
"individual": {
|
|
78
|
+
"name": "Researcher"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"timestamp": "2026-11-13T12:00:00Z",
|
|
82
|
+
"text": "A synthetic safe configuration projection identifies database B; connection values were not retained."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"bom-ref": "decision-1",
|
|
86
|
+
"subjects": [
|
|
87
|
+
"app"
|
|
88
|
+
],
|
|
89
|
+
"annotator": {
|
|
90
|
+
"individual": {
|
|
91
|
+
"name": "User"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"timestamp": "2026-11-13T12:00:00Z",
|
|
95
|
+
"text": "Investigate storage before model hosting."
|
|
96
|
+
}
|
|
97
|
+
],
|
|
98
|
+
"externalReferences": [
|
|
99
|
+
{
|
|
100
|
+
"type": "evidence",
|
|
101
|
+
"url": "synthetic-source-pack",
|
|
102
|
+
"comment": "Synthetic source pack; version 1; inspected support and safe projection only.",
|
|
103
|
+
"hashes": [
|
|
104
|
+
{
|
|
105
|
+
"alg": "SHA-256",
|
|
106
|
+
"content": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"citations": [
|
|
112
|
+
{
|
|
113
|
+
"bom-ref": "citation-1",
|
|
114
|
+
"pointers": [
|
|
115
|
+
"/annotations/0/text"
|
|
116
|
+
],
|
|
117
|
+
"timestamp": "2026-11-13T12:00:00Z",
|
|
118
|
+
"attributedTo": "app",
|
|
119
|
+
"note": "Synthetic fixture attribution, not real product evidence."
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"properties": [
|
|
123
|
+
{
|
|
124
|
+
"name": "n8r:surface:profile",
|
|
125
|
+
"value": "1"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "n8r:surface:objective",
|
|
129
|
+
"value": "Understand storage choices and the selected connection."
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"name": "n8r:surface:scope",
|
|
133
|
+
"value": "Synthetic assistant; no live runtime access."
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "n8r:surface:relationship",
|
|
137
|
+
"value": "{\"id\":\"storage-a\",\"from\":\"app\",\"to\":\"db-a\",\"kind\":\"dependency\",\"optionality\":\"alternative\",\"group\":\"storage\",\"support\":\"supported\",\"selection\":\"unknown\",\"observations\":[],\"evidence\":[\"evidence-support\"],\"selectionEvidence\":[],\"purpose\":\"Persist conversation state\",\"mechanism\":\"Database driver\",\"configuration\":[],\"conditions\":[],\"note\":\"Supported alternative; selection of other targets is unestablished.\"}"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "n8r:surface:relationship",
|
|
141
|
+
"value": "{\"id\":\"storage-b\",\"from\":\"app\",\"to\":\"db-b\",\"kind\":\"dependency\",\"optionality\":\"alternative\",\"group\":\"storage\",\"support\":\"supported\",\"selection\":\"selected\",\"observations\":[],\"evidence\":[\"evidence-support\"],\"selectionEvidence\":[\"evidence-selection\"],\"purpose\":\"Persist conversation state\",\"mechanism\":\"Database driver\",\"configuration\":[\"safe-projection.json: database-kind\"],\"conditions\":[],\"note\":\"Supported alternative; selection of other targets is unestablished.\"}"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"name": "n8r:surface:relationship",
|
|
145
|
+
"value": "{\"id\":\"storage-c\",\"from\":\"app\",\"to\":\"db-c\",\"kind\":\"dependency\",\"optionality\":\"alternative\",\"group\":\"storage\",\"support\":\"supported\",\"selection\":\"unknown\",\"observations\":[],\"evidence\":[\"evidence-support\"],\"selectionEvidence\":[],\"purpose\":\"Persist conversation state\",\"mechanism\":\"Database driver\",\"configuration\":[],\"conditions\":[],\"note\":\"Supported alternative; selection of other targets is unestablished.\"}"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "n8r:surface:relationship",
|
|
149
|
+
"value": "{\"id\":\"storage-d\",\"from\":\"app\",\"to\":\"db-d\",\"kind\":\"dependency\",\"optionality\":\"alternative\",\"group\":\"storage\",\"support\":\"supported\",\"selection\":\"unknown\",\"observations\":[],\"evidence\":[\"evidence-support\"],\"selectionEvidence\":[],\"purpose\":\"Persist conversation state\",\"mechanism\":\"Database driver\",\"configuration\":[],\"conditions\":[],\"note\":\"Supported alternative; selection of other targets is unestablished.\"}"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"name": "n8r:surface:relationship",
|
|
153
|
+
"value": "{\"id\":\"inference\",\"from\":\"app\",\"to\":\"model\",\"kind\":\"integration\",\"optionality\":\"unknown\",\"group\":\"\",\"support\":\"unknown\",\"selection\":\"unknown\",\"observations\":[],\"evidence\":[],\"selectionEvidence\":[],\"purpose\":\"Generate a response\",\"mechanism\":\"Unknown\",\"configuration\":[],\"conditions\":[],\"note\":\"Model serving connection remains uninvestigated.\"}"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"name": "n8r:surface:entry",
|
|
157
|
+
"value": "{\"id\":\"plan-1\",\"kind\":\"next\",\"title\":\"Inspect storage selection\",\"text\":\"Establish the selected database from a safe configuration projection.\",\"status\":\"done\",\"reason\":\"Projection supplied in this synthetic example.\",\"access\":\"Safe configuration projection\",\"evidence\":[\"evidence-selection\"],\"at\":\"2026-11-13T12:00:00Z\"}"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"name": "n8r:surface:entry",
|
|
161
|
+
"value": "{\"id\":\"choice-1\",\"kind\":\"decision\",\"title\":\"Storage first\",\"text\":\"Investigate storage before model hosting.\",\"status\":\"active\",\"reason\":\"User priority\",\"access\":\"None\",\"evidence\":[\"decision-1\"],\"at\":\"2026-11-13T12:00:00Z\"}"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"name": "n8r:surface:entry",
|
|
165
|
+
"value": "{\"id\":\"question-1\",\"kind\":\"question\",\"title\":\"Which service hosts inference?\",\"text\":\"Inspect the serving configuration to identify the model endpoint role.\",\"status\":\"open\",\"reason\":\"Source does not establish this connection.\",\"access\":\"Safe inference configuration\",\"evidence\":[],\"at\":\"2026-11-13T12:00:00Z\"}"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"name": "n8r:surface:coverage",
|
|
169
|
+
"value": "Only synthetic support and selection sources inspected."
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "n8r:surface:gap",
|
|
173
|
+
"value": "Runtime use has not been observed."
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"name": "n8r:surface:evidence",
|
|
177
|
+
"value": "{\"id\": \"evidence-support\", \"basis\": \"source\", \"sources\": [{\"index\": 0, \"locator\": \"support.md:1-20\"}], \"applicability\": \"Synthetic fixture only.\"}"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"name": "n8r:surface:evidence",
|
|
181
|
+
"value": "{\"id\": \"evidence-selection\", \"basis\": \"configuration\", \"sources\": [{\"index\": 0, \"locator\": \"safe-projection.json: database-kind\"}], \"applicability\": \"Synthetic fixture only.\"}"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"name": "n8r:surface:evidence",
|
|
185
|
+
"value": "{\"id\": \"decision-1\", \"basis\": \"user\", \"sources\": [], \"applicability\": \"Synthetic fixture only.\"}"
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Start with what the user has
|
|
2
|
+
|
|
3
|
+
Use this guide when a newcomer asks how to begin, provide sources or establish
|
|
4
|
+
access, or mentions sources this session cannot yet read. It applies across hosts;
|
|
5
|
+
no Lab, prepared workspace, repository attachment or live access is required.
|
|
6
|
+
|
|
7
|
+
## First useful response
|
|
8
|
+
|
|
9
|
+
Read accessible material before asking for more. A short description is enough
|
|
10
|
+
for a provisional map: identify the reported components and connections, their
|
|
11
|
+
basis and the consequential unknowns. A document's claim remains a document claim.
|
|
12
|
+
If no source is supplied, ask for the easiest starting point: a short description,
|
|
13
|
+
an architecture/deployment excerpt or a repository/document link.
|
|
14
|
+
|
|
15
|
+
Then recommend one useful next source, explain the question it would answer and
|
|
16
|
+
help make it accessible. For example, a deployment note's custom gateway points
|
|
17
|
+
to its endpoint configuration or entrypoint; those can reveal the next component.
|
|
18
|
+
Ask one focused question, not a checklist of every repository, account and host.
|
|
19
|
+
Use facts already supplied rather than making the user repeat them. If the user
|
|
20
|
+
cannot provide that source, offer an easier alternative and retain the partial map.
|
|
21
|
+
|
|
22
|
+
Keep a lightweight source/access record in working notes or the journal:
|
|
23
|
+
source identity, mentioned/available/read/blocked/deferred, actual access route,
|
|
24
|
+
inspected scope and next step. Available means a tool/attachment is present; read
|
|
25
|
+
means a successful scoped read occurred. A blocked source needs its reason and
|
|
26
|
+
consequence, not repeated retries. These are working-note labels, not new BOM
|
|
27
|
+
properties or evidence classifications. Do not turn this record into an intake form.
|
|
28
|
+
|
|
29
|
+
## Help establish the next access route
|
|
30
|
+
|
|
31
|
+
Discover the current host's relevant tools and supported connection/upload flows.
|
|
32
|
+
Use tools already available within the authorized scope. If a connection is needed,
|
|
33
|
+
explain the smallest supported user action; verify access by reading the selected
|
|
34
|
+
source afterward. Consult current host help or visible UI rather than inventing
|
|
35
|
+
menu names. Installing this skill supplies no repository, SSH or account access.
|
|
36
|
+
|
|
37
|
+
| User's starting point | Useful next action | What to keep explicit |
|
|
38
|
+
| --- | --- | --- |
|
|
39
|
+
| Description or document | Read the supplied text/attachment; follow relevant links or ask for one missing section. | Reported architecture, document date/version and unverified deployment claims. |
|
|
40
|
+
| GitHub or another remote repository | Read selected files through an authorized connector/API or permitted public web access. For private sources, guide the supported host sign-in/connection flow. | A link or sign-in is not a successful repository read; check repository, revision and permitted scope. |
|
|
41
|
+
| Laptop folder | If approved local tools can read it, use the selected folder. Otherwise help the user upload selected files or use a supported connected-computer route. | A web Project's uploaded files are snapshots, not a live folder mount or automatic synchronization. A local path alone is inaccessible remotely. |
|
|
42
|
+
| VPS/SSH clue | Establish target, inspection scope and an available authorized execution route. Host/user/port and an existing connection alias may identify it; ask only for missing details needed next. | An IP or SSH command supplies no credentials, network reachability or shell tool. Existing laptop access is not inherited by a cloud chat. |
|
|
43
|
+
| Existing admin UI/API | Use an approved scoped read interface and the user's supported sign-in handoff. | Public views may reveal only a small part of the setup; diagnostic operations can have side effects. |
|
|
44
|
+
|
|
45
|
+
For laptop uploads, suggest the smallest useful selection: a README section,
|
|
46
|
+
source tree excerpt, deployment manifest with sensitive values removed, or the
|
|
47
|
+
entrypoint named by existing evidence. Explain why each requested file matters.
|
|
48
|
+
Offer an archive only if the host supports inspecting it and the user prefers it;
|
|
49
|
+
do not require the whole repository. Preserve relative paths and ask for revision
|
|
50
|
+
or capture identity when available. Uploads and connected folders are alternatives,
|
|
51
|
+
not mandatory steps or permission to publish code.
|
|
52
|
+
|
|
53
|
+
For a VPS, first determine where commands could run: an authorized tool/service,
|
|
54
|
+
an explicitly connected computer with permitted SSH, or the user's own terminal.
|
|
55
|
+
Only claim SSH capability after checking the actual tools and approved connection.
|
|
56
|
+
Keep authentication in the host's supported flow or existing credential store;
|
|
57
|
+
never request passwords, tokens or private keys in chat or uploads. A key offered
|
|
58
|
+
in chat should be declined with a concrete alternative. Do not disable host-key
|
|
59
|
+
checks, expose SSH publicly or add credentials/agents to make onboarding work.
|
|
60
|
+
If the host cannot provide a supported secure access route, say so and continue
|
|
61
|
+
with available documents/source or the human-assisted route below.
|
|
62
|
+
|
|
63
|
+
## Human-assisted evidence
|
|
64
|
+
|
|
65
|
+
When direct access is unavailable and the user wants to continue, offer a small
|
|
66
|
+
read-only collection step they can perform in their own environment. Establish
|
|
67
|
+
the target/runtime first. Explain what it reads, the expected safe fields and
|
|
68
|
+
what finding they could support. Filter before output; avoid raw environment,
|
|
69
|
+
connection strings, logs and complete inspection/config dumps. Ask them to review
|
|
70
|
+
for sensitive content before sharing. Do not hide a state change in a diagnostic
|
|
71
|
+
command. An access denial remains a blocker, not a reason to bypass permissions.
|
|
72
|
+
|
|
73
|
+
Treat returned material as user-supplied evidence, with reported target, time,
|
|
74
|
+
command/scope and redactions where available. Do not claim the agent accessed the
|
|
75
|
+
host or independently observed the command. Missing metadata limits the claim;
|
|
76
|
+
keep useful partial findings rather than inventing timestamps or source hashes.
|
|
77
|
+
|
|
78
|
+
## Saving and returning
|
|
79
|
+
|
|
80
|
+
Research readiness is separate from local workspace creation. Before promising a
|
|
81
|
+
save, check the installed helper, supported Node runtime, writable destination and
|
|
82
|
+
host file-delivery tools. For explicit local workspace setup, use
|
|
83
|
+
[workspace operations](workspace.md); do not run its local-folder procedure merely
|
|
84
|
+
because a user starts research in a web Project.
|
|
85
|
+
|
|
86
|
+
If helper execution and file delivery are available in the cloud, use
|
|
87
|
+
[Surface persistence](cyclonedx.md), read back the outputs and provide the actual
|
|
88
|
+
supported download/attachment links. Distinguish cloud files/downloads from a
|
|
89
|
+
local vault and from a Project source. Do not promise persistence across chats or
|
|
90
|
+
claim an attachment action that has not occurred. Deliver retained evidence with
|
|
91
|
+
the Surface when its relative references need it, or disclose the missing sources.
|
|
92
|
+
|
|
93
|
+
If execution or delivery is unavailable, provide a useful copyable map and notes;
|
|
94
|
+
name the specific blocked save step. Do not call prose a validated saved Surface.
|
|
95
|
+
Explain what the user should retain and supply on return. Reopening starts from
|
|
96
|
+
supplied artifacts and rechecks access; it does not assume local keys, connections
|
|
97
|
+
or research were carried into a fresh session.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# A useful first security overview
|
|
2
|
+
|
|
3
|
+
For broad initial source research, help the reader understand the application
|
|
4
|
+
before explaining the saved format. Preserve a narrow question when one is given.
|
|
5
|
+
This is a bounded first pass, not an exhaustive audit or vulnerability verdict.
|
|
6
|
+
|
|
7
|
+
## Research and record
|
|
8
|
+
|
|
9
|
+
- Explain what the application does in one plain sentence. Put this in the focus
|
|
10
|
+
component's standard `description`; name that component as the presentation
|
|
11
|
+
focus using the [optional node hints](cyclonedx.md#overview-presentation-hints).
|
|
12
|
+
- Group major internal functions and external integrations only where evidence
|
|
13
|
+
establishes their placement relative to the application. A browser is not the
|
|
14
|
+
backend; a supported database option is not an installed store. Preserve shared
|
|
15
|
+
identities and paths across groups. Leave unresolved placement unclassified.
|
|
16
|
+
- Record a few consequential observations as `finding` journal entries with
|
|
17
|
+
`status: done`, evidence references, and a `reason` explaining why each matters.
|
|
18
|
+
Keep the finding and its limitation together. A source-backed execution path is
|
|
19
|
+
an investigation lead, not a demonstrated vulnerability or runtime guarantee.
|
|
20
|
+
Do not promote an unsupported inference just to fill the opening.
|
|
21
|
+
- Make coverage legible across **identity**, **authorization**, **data handling**,
|
|
22
|
+
**storage**, **secrets**, **exposure** and **observability**. Use named `coverage`
|
|
23
|
+
and `gap` strings, such as “Identity: supported sign-in options inspected” or
|
|
24
|
+
“Observability: runtime trace coverage not researched.” These labels describe
|
|
25
|
+
inspected work, not control effectiveness. Mark unresearched areas explicitly;
|
|
26
|
+
do not expand a first pass into seven exhaustive investigations.
|
|
27
|
+
- For integrations within scope, research supported options separately from
|
|
28
|
+
intended selections, safe configuration evidence and dated runtime observations.
|
|
29
|
+
“Identity provider unknown” alone does not describe supported authentication.
|
|
30
|
+
If support was not researched, say so and identify the next useful source read.
|
|
31
|
+
- Keep model-request control points distinct from actual tool execution. Preserve
|
|
32
|
+
browser-originated traffic, backend extensions and scheduled execution contexts
|
|
33
|
+
when evidenced; explain their consequences without presuming every app has them.
|
|
34
|
+
|
|
35
|
+
The generated brief uses descriptions, groups, findings, coverage/gaps and open
|
|
36
|
+
next steps. The generated HTML puts a connected overview before full relationships,
|
|
37
|
+
source evidence and investigation history. Do not hand-edit these views instead of
|
|
38
|
+
recording the relevant evidence in the BOM.
|
|
39
|
+
|
|
40
|
+
## Scope once, exceptions where needed
|
|
41
|
+
|
|
42
|
+
State common source/deployment limits in `scope`. Keep per-relationship conditions,
|
|
43
|
+
conflicts, bypasses, selection evidence and observations intact. Use `note` for
|
|
44
|
+
what is distinctive about a path instead of repeating generic deployment caveats.
|
|
45
|
+
The concise brief links to full relationship details; brevity must not erase a
|
|
46
|
+
consequential exception from its associated finding.
|
|
47
|
+
|
|
48
|
+
## Invite the next decision
|
|
49
|
+
|
|
50
|
+
Match the next step to the established investigation context:
|
|
51
|
+
|
|
52
|
+
- **Source checkout only:** recommend one concrete source-level trace, naming the
|
|
53
|
+
entry point, authorization boundary and question it can answer. Keep deployment
|
|
54
|
+
settings unverified. Research can continue without a daemon, deployed instance
|
|
55
|
+
or chosen provider. Ask about intended setup only if the user wants planning.
|
|
56
|
+
- **Intended setup:** record choices as dated user-basis evidence, then explain
|
|
57
|
+
what configuration evidence would establish them later.
|
|
58
|
+
- **Identified deployment:** inspect only the permitted target and relevant safe
|
|
59
|
+
fields. Keep configuration and dated runtime observations separate.
|
|
60
|
+
- **Context unclear:** continue useful source research; before requesting runtime
|
|
61
|
+
access, establish whether the user wants source analysis, planning or inspection
|
|
62
|
+
of an existing deployment. A checked-out Compose file identifies a declaration,
|
|
63
|
+
not a running target. An available Docker daemon is not a target identity.
|
|
64
|
+
|
|
65
|
+
## Keep the successor current and the brief short
|
|
66
|
+
|
|
67
|
+
Before each save, reconcile the current scope, findings, coverage, gaps and actions:
|
|
68
|
+
|
|
69
|
+
1. Record new evidence with its date and applicability. Preserve old observations
|
|
70
|
+
and accepted decisions in the journal and predecessor; do not rewrite their text.
|
|
71
|
+
2. Mark obsolete entries `superseded` and link a replacement with `supersedes`.
|
|
72
|
+
Mark completed actions `done`; mark out-of-scope work `deferred` with a reason.
|
|
73
|
+
For example, reachable runtime evidence supersedes an unavailable-daemon blocker
|
|
74
|
+
and completes the retry action; it does not establish a deployment's presence.
|
|
75
|
+
3. Replace obsolete current scope/gap strings in the successor. Preserve their
|
|
76
|
+
historical content in dated journal entries/evidence. Do not append contradictory
|
|
77
|
+
current statements and leave the reader to determine which applies.
|
|
78
|
+
4. Keep one recommended action `active`, with a clear result and access requirement.
|
|
79
|
+
Other genuinely useful choices can remain open or deferred in the journal.
|
|
80
|
+
5. Read the generated brief as a newcomer. Aim for roughly 400–700 words: a short
|
|
81
|
+
current scope, major areas, a few current implications, concise coverage/gaps
|
|
82
|
+
and one next action. Consolidate overlapping findings using supersession while
|
|
83
|
+
preserving each consequential exception and its evidence. A word target never
|
|
84
|
+
justifies dropping a limitation or inventing a summary.
|
|
85
|
+
|
|
86
|
+
The renderer shows at most twelve nodes, five current findings (most recently
|
|
87
|
+
recorded, not severity-ranked), seven coverage items, seven gaps and one action
|
|
88
|
+
(active first, otherwise recorded order). It explicitly links additional items to
|
|
89
|
+
full HTML detail. Complete finding text, reasons and evidence stay together;
|
|
90
|
+
long individual entries are not silently truncated. Prioritise and consolidate
|
|
91
|
+
research content before saving; list limits alone do not guarantee a short brief.
|
|
92
|
+
The journal and full map retain the complete record, including superseded entries.
|
|
93
|
+
This skill does not configure or deploy the system.
|
|
94
|
+
|
|
95
|
+
End the chat with a short statement of what the research clarified, links to the
|
|
96
|
+
brief and map (journal/detail links can follow), and the next useful question.
|
|
97
|
+
Keep format mechanics underneath. Explain the architecture/research BOM's bounded
|
|
98
|
+
machine-readable value when relevant: it is not a comprehensive dependency SBOM;
|
|
99
|
+
standard dependencies cover only the selected dependency subset. Other consumers
|
|
100
|
+
may ignore the profile's paths and evidence. Conventional SBOM linkage is future
|
|
101
|
+
work, not a claim made by this increment.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Investigate an identified running composition
|
|
2
|
+
|
|
3
|
+
Use this path when the user starts with an instance, service URL or deployed
|
|
4
|
+
composition, or continues source research with permitted instance evidence.
|
|
5
|
+
A source checkout can describe one component without describing the whole system.
|
|
6
|
+
Keep source-only work on its existing path when no instance investigation is asked
|
|
7
|
+
for. This guide adds no access adapter, credential store or runtime dependency.
|
|
8
|
+
|
|
9
|
+
For a newcomer or an inaccessible source, use [first-use access](first-use-access.md)
|
|
10
|
+
to help establish one useful source at a time. A short reported system description
|
|
11
|
+
is enough to begin; a complete access setup is not an entry requirement.
|
|
12
|
+
|
|
13
|
+
## Use the host harness
|
|
14
|
+
|
|
15
|
+
Codex/ChatGPT supplies the tools and access; the skill supplies the investigation
|
|
16
|
+
method. Discover the relevant tools actually available in this session. Prefer a
|
|
17
|
+
scoped connector or documented read API, then permitted browser or shell access.
|
|
18
|
+
Do not assume a tool name, a terminal, SSH, a local clone or a connected account.
|
|
19
|
+
A URL identifies a source; a successful scoped read establishes access.
|
|
20
|
+
|
|
21
|
+
Start with the supplied target and question. State the selected environment and
|
|
22
|
+
read-only coverage, carrying forward existing authorization. Ask only for missing
|
|
23
|
+
information needed to identify the target or permitted access. Do not make users
|
|
24
|
+
choose evidence categories or reproduce information an available source supplies.
|
|
25
|
+
|
|
26
|
+
| Source | Useful host operation | Identity and limit to retain |
|
|
27
|
+
| --- | --- | --- |
|
|
28
|
+
| Remote repository | Read selected files at a pinned revision through the available connector/API. | Repository, revision, file and inspected ranges; returned text may not be original file bytes. |
|
|
29
|
+
| Local checkout | Read relevant files and working-copy identity. | Commit plus differences and hashes of inspected bytes; not deployed build identity. |
|
|
30
|
+
| Document or URL | Read the selected page/section using its available connector or browser. | Document revision/product version, capture time and section; newer docs may not apply to the target. |
|
|
31
|
+
| Instance configuration | Read safe fields from the selected instance/admin view. | Target identity, setting scope and time; stored settings may not be loaded. |
|
|
32
|
+
| Runtime metadata | Filter to the target and project allowlisted fields before output. | Instance/container/process identity, image/build identity, state and capture time. |
|
|
33
|
+
| Existing observations | Read a permitted redacted event/trace or supplied observation. | Request correlation, participating identities, effective setup and coverage; missing events do not prove absence. |
|
|
34
|
+
|
|
35
|
+
If a source is unavailable, retain the partial graph and identify the consequence:
|
|
36
|
+
for example, storage is configured but current use is unverified. A permission
|
|
37
|
+
refusal is not a prompt to bypass that route. Ask for an authorized source or
|
|
38
|
+
human-supplied redacted evidence when needed. Do not sign in for the user, extract
|
|
39
|
+
sessions, install tools or start services to fill the gap. Follow the discovery
|
|
40
|
+
guide's [live inspection rules](discovery-map.md#inspect-live-connections-with-the-human).
|
|
41
|
+
|
|
42
|
+
## Follow the composition
|
|
43
|
+
|
|
44
|
+
Begin with the selected instance's identity and entry point, then follow evidence
|
|
45
|
+
of relevant connections. An endpoint binding can lead to a separate gateway,
|
|
46
|
+
inference provider, identity service, storage or telemetry destination. Determine
|
|
47
|
+
its role before deciding which source file, document or live view to read next.
|
|
48
|
+
Do not replace a custom endpoint with a familiar vendor because its protocol is
|
|
49
|
+
compatible. Do not add roadmap components or enumerate unrelated host resources.
|
|
50
|
+
|
|
51
|
+
Use repositories and operational documents to explain those discovered components.
|
|
52
|
+
An old deployment recipe is a navigation clue until current evidence supports it.
|
|
53
|
+
Match product documentation to the installed version; mismatches remain visible.
|
|
54
|
+
Record supported alternatives separately from the selected instance paths.
|
|
55
|
+
|
|
56
|
+
For each consequential claim, keep the evidence level precise:
|
|
57
|
+
|
|
58
|
+
- Source describes support or a code path; it does not establish selection.
|
|
59
|
+
- A safe binding establishes configured selection, with its setting scope.
|
|
60
|
+
- Process/container state establishes presence at a time, not connection use.
|
|
61
|
+
- A response establishes reachability for that operation and vantage point.
|
|
62
|
+
- A correlated request/trace can establish the exercised portion of a path,
|
|
63
|
+
within its identity, time and coverage limits.
|
|
64
|
+
|
|
65
|
+
A mounted file hash identifies inspected bytes, not necessarily the bytes loaded
|
|
66
|
+
by a running process. A model name in configuration is not catalog availability
|
|
67
|
+
or inference. A health response does not exercise storage, authentication or
|
|
68
|
+
model requests. Similarly named fields in public config and process environment
|
|
69
|
+
may have different meanings: inspect their version-specific implementation before
|
|
70
|
+
calling them equivalent or conflicting. Keep separate login, application actor,
|
|
71
|
+
provider credential and upstream identity boundaries when evidence supports them.
|
|
72
|
+
|
|
73
|
+
Read-only means the operation's behavior, not its HTTP verb. A diagnostic GET
|
|
74
|
+
may start a worker, refresh credentials or run a connection test. Use known passive
|
|
75
|
+
operations or existing evidence; leave uncertain operations uncalled. Research
|
|
76
|
+
does not send prompts or invoke tools to make an edge observable. Those are
|
|
77
|
+
separately authorized testing tasks.
|
|
78
|
+
|
|
79
|
+
## Retain evidence and continue
|
|
80
|
+
|
|
81
|
+
Keep the journal current while working when saving is authorized. State what was
|
|
82
|
+
read, what it established and the next useful question; the user can redirect or
|
|
83
|
+
stop at a useful partial result. Save through the existing [Surface helper](cyclonedx.md).
|
|
84
|
+
No special whole-Surface observed state is needed: use per-relationship evidence
|
|
85
|
+
and dated observations, with unknown composition and explicit coverage/gaps.
|
|
86
|
+
|
|
87
|
+
Keep source identity distinct from captured evidence identity. If a connector
|
|
88
|
+
returns rendered or normalized text, hash a retained safe projection only as that
|
|
89
|
+
projection, not as the original remote file. Never fabricate unavailable hashes,
|
|
90
|
+
versions or observation times. Preserve actual source capture times separately
|
|
91
|
+
from the time the BOM was saved. Do not add transport newlines before hashing
|
|
92
|
+
source bytes. See [evidence identity](cyclonedx.md#evidence-identity-and-readback).
|
|
93
|
+
|
|
94
|
+
On revisit, read the supplied predecessor, re-establish permitted access and
|
|
95
|
+
compare equivalent observations for the same target. Explain each material result
|
|
96
|
+
in ordinary language:
|
|
97
|
+
|
|
98
|
+
- **Target change:** comparable evidence establishes a changed setting/build or
|
|
99
|
+
relationship. Say which prior conclusions or tests may need revisiting.
|
|
100
|
+
- **Newly learned fact:** previously unread evidence adds detail; discovery time
|
|
101
|
+
alone does not establish when the target changed.
|
|
102
|
+
- **Unchanged checked fact:** the same scoped fact was checked again, at a new
|
|
103
|
+
time; do not generalize to unchecked parts of the system.
|
|
104
|
+
- **Lost coverage:** access or evidence is missing now; retain prior dated facts
|
|
105
|
+
without presenting them as freshly verified or treating the component as removed.
|
|
106
|
+
- **Conflict:** evidence disagrees or identities are inconsistent; preserve both
|
|
107
|
+
and name the evidence needed to resolve it. A mutable image tag is not a digest.
|
|
108
|
+
|
|
109
|
+
These are explanations, not new schema enums. Retain stable component identities,
|
|
110
|
+
previous bytes, decisions and observations. Update current scope/gaps and next
|
|
111
|
+
steps; keep old findings in history. A telemetry setting first read today may
|
|
112
|
+
predate the baseline, and a file timestamp alone does not prove historical use.
|
|
113
|
+
|
|
114
|
+
When consolidating earlier findings into a current journal summary, carry the
|
|
115
|
+
original evidence IDs for every retained configuration/source claim. A new
|
|
116
|
+
runtime-state check supports only its inspected facts; it cannot substitute for
|
|
117
|
+
those sources. Open the summary's evidence links during readback and check each
|
|
118
|
+
claim, even when the underlying graph still has correct provenance. Correct an
|
|
119
|
+
incomplete saved summary in a successor, preserving the earlier revision.
|
|
120
|
+
|
|
121
|
+
Finish with the useful composition, consequential uncertainties and one practical
|
|
122
|
+
next investigation with its access requirement. Independently read back the saved
|
|
123
|
+
BOM and generated brief/map/journal. Check that the key claims remain distinguishable
|
|
124
|
+
without this chat and that referenced retained evidence is locatable. State any
|
|
125
|
+
host persistence or navigation limitation rather than claiming a missing save.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# AI Surface Model meanings
|
|
2
|
+
|
|
3
|
+
The AI Surface Model describes connected components, configuration and relationships
|
|
4
|
+
at the detail available or useful. A language model is a component described by
|
|
5
|
+
it. There is one AI Surface Model; Lab and Experiment are descriptions within it.
|
|
6
|
+
A Lab contains Experiments. Each Experiment owns its desired setup and selected
|
|
7
|
+
Surface revision and requests resource configuration directly from its Lab.
|
|
8
|
+
The Lab owns resource configuration and local bindings. Lab / Lab Assistant
|
|
9
|
+
share one entity. The ownership chain is Lab → Experiment → Setup.
|
|
10
|
+
Bench is retired; preserve historical references as historical evidence, never
|
|
11
|
+
as current ownership or authority. Do not invent a hierarchy when it is outside
|
|
12
|
+
the supplied investigation.
|
|
13
|
+
|
|
14
|
+
Partial knowledge is useful. Preserve these distinct meanings:
|
|
15
|
+
|
|
16
|
+
| Meaning | Use |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| Known | Supported by identified evidence with a stated scope. |
|
|
19
|
+
| Unknown | The question is relevant but available evidence does not answer it. |
|
|
20
|
+
| Omitted | Deliberately left out of this description. |
|
|
21
|
+
| Redacted | Known detail withheld, such as sensitive values. |
|
|
22
|
+
| Absent | Evidence establishes absence within a specific scope. |
|
|
23
|
+
| Out of scope | Not part of the selected investigation. |
|
|
24
|
+
|
|
25
|
+
A missing field or uninspected directory does not establish absence. Evidence
|
|
26
|
+
that a product supports OIDC does not establish that this user enabled it.
|
|
27
|
+
Two HTTP routes can belong to the same service. Keep shared components, parallel
|
|
28
|
+
connections and cycles; depth is relative to a starting point, not a fixed limit.
|
|
29
|
+
Assign simple stable local labels such as `component:identity` when findings will
|
|
30
|
+
be saved or continued; add detail without silently replacing the entity.
|
|
31
|
+
|
|
32
|
+
Keep definitions separate from deployments, observations and Experiment Runs.
|
|
33
|
+
A declared connection, a reachable endpoint and an exercised interaction are
|
|
34
|
+
three different evidence claims. Source reading alone establishes none of the
|
|
35
|
+
runtime claims. Later findings must not silently rewrite what an earlier result
|
|
36
|
+
referred to. Record source, time, applicable revision and limits.
|
|
37
|
+
|
|
38
|
+
Interoperability is a bounded, versioned mapping with explicit losses. Matching
|
|
39
|
+
names, parsing JSON or reading a schema does not establish compatibility or
|
|
40
|
+
successful recreation. Distinguish a product possibility from a selected setup.
|
|
41
|
+
|
|
42
|
+
Named output profiles select content within this one model. Size, purpose and
|
|
43
|
+
deployment knowledge are independent. A profile version identifies output rules;
|
|
44
|
+
Surface definition and setup/binding revisions identify the described state.
|
|
45
|
+
Preserve those revisions and prior Run attribution when adding detail or bindings.
|
|
46
|
+
The [skeleton procedure](skeleton-surface.md) defines the provisional brief and
|
|
47
|
+
explicit reconciliation lifecycle. Detailed and recreation profiles remain future
|
|
48
|
+
directions, not implemented contracts.
|
|
49
|
+
|
|
50
|
+
This bundled reference records the draft meanings for skill 0.1.8. The repository's
|
|
51
|
+
[draft concepts](https://github.com/injectionator/n8r-surface/blob/main/spec/README.md)
|
|
52
|
+
are a moving source link; use the installed package version and digest to identify
|
|
53
|
+
the instructions actually used. Fields and serialization remain provisional. Maintainers must update this
|
|
54
|
+
reference with semantic changes; consumers do not need the source checkout to
|
|
55
|
+
read it.
|