@n8r/surface 0.1.0-experimental.2 → 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/README.md +30 -4
- package/dist/cli.js +174 -22
- package/dist/codec.d.ts +2 -0
- package/dist/codec.js +22 -7
- package/dist/codex.d.ts +1 -1
- package/dist/codex.js +26 -10
- package/dist/contracts.d.ts +108 -2
- 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.js +27 -3
- package/dist/recent.d.ts +9 -0
- package/dist/recent.js +71 -0
- package/dist/revisions.js +42 -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/surface-bom.d.ts +73 -0
- package/dist/surface-bom.js +139 -0
- package/dist/surface-draft.d.ts +6 -3
- package/dist/surface-draft.js +20 -3
- package/dist/surface-instructions.d.ts +2 -1
- package/dist/surface-instructions.js +10 -1
- package/dist/surface-overview.d.ts +15 -0
- package/dist/surface-overview.js +86 -0
- package/dist/surface-store.d.ts +5 -7
- package/dist/surface-store.js +34 -2
- package/dist/surface-view.d.ts +3 -0
- package/dist/surface-view.js +50 -0
- package/dist/validate.js +298 -0
- package/docs/n8r-surface/cli-bundles.md +72 -0
- package/docs/n8r-surface/command-outcomes.md +151 -4
- package/docs/n8r-surface/contracts.md +10 -0
- package/docs/n8r-surface/critical-path.md +21 -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 +55 -88
- package/docs/n8r-surface/guided-journey-verification.md +137 -0
- package/docs/n8r-surface/implementation-decisions.md +14 -14
- package/docs/n8r-surface/instance-first-research.md +209 -0
- package/docs/n8r-surface/npm-distribution.md +39 -69
- package/docs/n8r-surface/npm-release.md +141 -14
- package/docs/n8r-surface/product-direction.md +327 -0
- package/docs/n8r-surface/researcher-skill.md +105 -51
- 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/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/tester-candidate.md +158 -0
- package/docs/n8r-surface/versioning.md +55 -66
- 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 +8 -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/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/surface-bom/README.md +17 -0
- package/examples/researcher/surface-bom/initial.cdx.json +188 -0
- package/package.json +1 -1
- package/plugins/n8r-surface/.codex-plugin/plugin.json +2 -2
- package/plugins/n8r-surface/LICENSING.md +3 -0
- package/plugins/n8r-surface/plugin.json +2 -2
- package/plugins/n8r-surface/skills/research/SKILL.md +79 -38
- 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 +20 -2
- 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/working-notes.md +6 -1
- 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
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
# n8r-surface Researcher: start an investigation
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
For candidate 0.1.14, use the [first-use overview check](first-use-overview.md).
|
|
4
|
+
The [0.1.13 tester guide](tester-candidate.md) retains pinned baseline installation
|
|
5
|
+
and host boundaries; use the exact 0.1.14 PR revision for the new check. Installation versions and
|
|
6
|
+
branch references below describe historical rehearsals, not the current candidate.
|
|
7
|
+
|
|
8
|
+
**Previously accepted standalone skill 0.1.11:** produces working notes and checked
|
|
9
|
+
Capability/Bound Surface bundles using the host's source access and conversation.
|
|
10
|
+
The skill and [accepted two-product verification](skill-usefulness-verification.md)
|
|
11
|
+
are merged in PRs #54 and #58. It needs neither the `n8r-surface` executable nor
|
|
12
|
+
an npm release. Related to [#17](https://github.com/injectionator/n8r-surface/issues/17).
|
|
13
|
+
|
|
14
|
+
The team installation below pins merged commit
|
|
15
|
+
[`5eed2ac9a31933caa2ae306e4b407e327d147bf7`](https://github.com/injectionator/n8r-surface/commit/5eed2ac9a31933caa2ae306e4b407e327d147bf7).
|
|
16
|
+
Its plugin files are identical to the accepted trial revision `8e4cb3a`.
|
|
17
|
+
This is an identified repository distribution; no separate skill 0.1.11 tag or
|
|
18
|
+
GitHub Release has been published. Tagging, uploading and publication require
|
|
19
|
+
separate authorization. Skill delivery remains first; CLI and Labs work is deferred.
|
|
20
|
+
|
|
21
|
+
**Verified host:** Codex CLI 0.166.0 app-server with ChatGPT sign-in and
|
|
22
|
+
`gpt-6-astra`; the accepted artifact trial used Node.js 26.13.0. Checked artifacts
|
|
23
|
+
and workspace helpers require Node.js 22, 24 or 26 and persistent filesystem
|
|
24
|
+
access. ChatGPT desktop/Work picker, invocation and uninstall/reinstall acceptance
|
|
25
|
+
remain pending. A CLI installation result does not establish desktop availability.
|
|
12
26
|
|
|
13
27
|
The primary result is a partial **AI Surface graph**, with evidence and unresolved
|
|
14
28
|
connections. It is not an inventory of every application feature or setting.
|
|
@@ -22,49 +36,59 @@ For a compact security brief and explicit reconciliation, use the
|
|
|
22
36
|
[Skeleton Surface walkthrough](researcher-skeleton-check.md). This provisional
|
|
23
37
|
Markdown profile adds no validated structured-output contract.
|
|
24
38
|
|
|
25
|
-
|
|
39
|
+
For workspace-only setup and recognition, use the
|
|
40
|
+
[workspace contract](workspace.md), [isolated candidate installation](workspace-installation.md)
|
|
41
|
+
and [short human check](workspace-human-check.md). The workspace helper requires
|
|
42
|
+
Node.js 22, 24 or 26 and a persistent local filesystem. Desktop workspace
|
|
43
|
+
acceptance is pending; a cloud-only chat cannot perform local setup.
|
|
44
|
+
|
|
45
|
+
## Install or update 0.1.11
|
|
46
|
+
|
|
47
|
+
Prerequisites: Git, Codex CLI 0.166.0 and network access to GitHub. These commands
|
|
48
|
+
change the selected Codex home's plugin registration and cache. Research uses your
|
|
49
|
+
existing ChatGPT sign-in; installation itself needs no inference credentials.
|
|
50
|
+
No manual clone, npm install or build of n8r-surface is needed.
|
|
26
51
|
|
|
27
|
-
|
|
52
|
+
For an existing installation, first record its source and version:
|
|
28
53
|
|
|
29
54
|
```sh
|
|
30
55
|
codex plugin list --marketplace n8r-surface --json
|
|
31
56
|
```
|
|
32
57
|
|
|
33
|
-
|
|
34
|
-
|
|
58
|
+
When replacing an earlier Git or local marketplace registration, remove only this
|
|
59
|
+
marketplace registration before running the pinned installation below:
|
|
35
60
|
|
|
36
61
|
```sh
|
|
37
|
-
codex plugin marketplace
|
|
38
|
-
codex plugin add n8r-surface@n8r-surface --json
|
|
39
|
-
codex plugin list --marketplace n8r-surface --json
|
|
62
|
+
codex plugin marketplace remove n8r-surface --json
|
|
40
63
|
```
|
|
41
64
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
marketplace
|
|
45
|
-
|
|
46
|
-
Refreshing the
|
|
65
|
+
This removes the marketplace snapshot, not research saved outside the plugin cache.
|
|
66
|
+
Skip removal for a first installation. A commit-pinned marketplace stays pinned;
|
|
67
|
+
`marketplace upgrade` does not select a newer commit. Use this remove/add procedure
|
|
68
|
+
with the next approved revision when deliberately updating. Keep the old source/ref
|
|
69
|
+
if you will need to restore it. Refreshing the app alone does not update the snapshot.
|
|
47
70
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
71
|
+
From any directory:
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
codex plugin marketplace add injectionator/n8r-surface --ref 5eed2ac9a31933caa2ae306e4b407e327d147bf7 --json
|
|
75
|
+
codex plugin add n8r-surface@n8r-surface --json
|
|
76
|
+
codex plugin list --marketplace n8r-surface --json
|
|
77
|
+
```
|
|
53
78
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
79
|
+
Expected: each command exits 0; the list has exactly one installed/enabled
|
|
80
|
+
`n8r-surface@n8r-surface`, version `0.1.11`. The installation path varies.
|
|
81
|
+
For a rehearsal that leaves your active installation alone, use the temporary
|
|
82
|
+
`CODEX_HOME` procedure in [isolated installation](workspace-installation.md#isolated-maintainer-installation),
|
|
83
|
+
substituting the pinned revision and expected version above. That page's 0.1.9
|
|
84
|
+
results are historical.
|
|
57
85
|
|
|
58
|
-
|
|
59
|
-
codex plugin marketplace add injectionator/n8r-surface --ref feat/17-skeleton-surface --json
|
|
60
|
-
codex plugin add n8r-surface@n8r-surface --json
|
|
61
|
-
codex plugin list --marketplace n8r-surface --json
|
|
62
|
-
```
|
|
86
|
+
## RESEARCH-01: investigate and continue
|
|
63
87
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
88
|
+
1. **Check the installation.** Complete the installation above and verify 0.1.11.
|
|
89
|
+
Use a local Codex chat with access to the selected checkout and writable notes
|
|
90
|
+
folder. Work-mode trials remain subject to the separate
|
|
91
|
+
[human acceptance](researcher-skill-verification.md#remaining-work-mode-acceptance).
|
|
68
92
|
2. **Open your source.** Start a local chat with your LibreChat folder selected.
|
|
69
93
|
In Work, select **n8r-surface Researcher** via `@`; the qualified skill is
|
|
70
94
|
`n8r-surface:research`. Refresh/restart the app if the installed version is
|
|
@@ -111,8 +135,9 @@ fresh-chat continuation. **Outcome Z:** a useful explanation and preserved,
|
|
|
111
135
|
readable successor notes with source evidence, choices and gaps. See
|
|
112
136
|
[observed results and remaining limits](researcher-skill-verification.md).
|
|
113
137
|
|
|
114
|
-
These
|
|
115
|
-
|
|
138
|
+
These checks cover working notes. Skill 0.1.11 also provides the separate
|
|
139
|
+
[checked artifact workflow](skill-surface-artifacts.md); Lab adaptation remains
|
|
140
|
+
outside this repository. RESEARCH-01 does not establish the
|
|
116
141
|
complete installed-command E2E-01/E2E-02 cases.
|
|
117
142
|
|
|
118
143
|
## Package and standards
|
|
@@ -132,12 +157,12 @@ These are packaging contracts; host behavior still needs its own rehearsal.
|
|
|
132
157
|
|
|
133
158
|
- [plugin.json](../../plugins/n8r-surface/plugin.json) uses Agent Plugins 1.0.0.
|
|
134
159
|
- [.codex-plugin/plugin.json](../../plugins/n8r-surface/.codex-plugin/plugin.json)
|
|
135
|
-
is the compatibility manifest
|
|
160
|
+
is the compatibility manifest used by the verified Codex CLI 0.166.0. Keep
|
|
136
161
|
identity, version and presentation metadata aligned with the portable manifest.
|
|
137
162
|
Both use the same skill files; no second instruction copy is maintained.
|
|
138
163
|
- [The repository marketplace](../../.agents/plugins/marketplace.json) exposes
|
|
139
164
|
`n8r-surface@n8r-surface` as available, without forcing installation.
|
|
140
|
-
- Plugin and skill version `0.1.
|
|
165
|
+
- Plugin and skill version `0.1.11` identify this experimental skill distribution. Increment
|
|
141
166
|
them when changing distributed instructions; record the Git revision and
|
|
142
167
|
installed file digest with test results. This is separate from the npm version.
|
|
143
168
|
|
|
@@ -148,8 +173,8 @@ and [licensing explanation](../../LICENSING.md).
|
|
|
148
173
|
|
|
149
174
|
## Maintainer installation from a local candidate
|
|
150
175
|
|
|
151
|
-
Use this route only when developing the plugin itself. CLI 0.
|
|
152
|
-
|
|
176
|
+
Use this route only when developing the plugin itself. Use Codex CLI 0.166.0;
|
|
177
|
+
other host versions need their own verification. Record `codex --version`
|
|
153
178
|
and `git rev-parse HEAD`. If this marketplace is already registered from GitHub,
|
|
154
179
|
run `codex plugin marketplace remove n8r-surface` before changing its source to
|
|
155
180
|
the local checkout. The CLI rejects that source change otherwise. This removes
|
|
@@ -162,7 +187,7 @@ codex plugin list --marketplace n8r-surface --json
|
|
|
162
187
|
```
|
|
163
188
|
|
|
164
189
|
Expected: each command exits 0. The installed list contains exactly one
|
|
165
|
-
`n8r-surface@n8r-surface`, version `0.1.
|
|
190
|
+
`n8r-surface@n8r-surface`, version `0.1.11`, installed and enabled. The installation
|
|
166
191
|
path varies by computer. `alreadyAdded: true` is fine on a repeated marketplace
|
|
167
192
|
registration. Do not register a second copy of the skill in `.agents/skills`.
|
|
168
193
|
|
|
@@ -174,7 +199,7 @@ codex plugin remove n8r-researcher@n8r-surface --json
|
|
|
174
199
|
|
|
175
200
|
The renamed package replaces that candidate; saved research stays in place.
|
|
176
201
|
|
|
177
|
-
|
|
202
|
+
For the pending ChatGPT desktop acceptance trial, open Plugins and select the **n8r-surface** source. Verify
|
|
178
203
|
**n8r-surface Researcher** is installed. Refresh/restart the app if the new marketplace
|
|
179
204
|
or version is absent, as the packaging guide requires. Then start a fresh Work
|
|
180
205
|
chat. Loading instructions in this development chat is not this acceptance test.
|
|
@@ -201,7 +226,7 @@ is not access in a cloud chat.
|
|
|
201
226
|
> and gaps, and ask the next question that would help me choose a setup.
|
|
202
227
|
> Save working research notes that I can reopen.
|
|
203
228
|
|
|
204
|
-
Expected: the skill identifies version `0.1.
|
|
229
|
+
Expected: the skill identifies version `0.1.11`, reads the two actual documents,
|
|
205
230
|
cites evidence and saves a readable note outside the plugin cache. Independently
|
|
206
231
|
open that note. Both conflicting batch maxima (10 and 25) and the unknown model
|
|
207
232
|
version must survive; optional features must not become user selections. The
|
|
@@ -240,16 +265,45 @@ publishing or deleting the source repository.
|
|
|
240
265
|
|
|
241
266
|
## Prepare a shareable ZIP
|
|
242
267
|
|
|
243
|
-
From
|
|
268
|
+
From this repository root with the pinned revision available locally:
|
|
244
269
|
|
|
245
270
|
```sh
|
|
246
271
|
n8r_skill_zip=$(mktemp -d)
|
|
247
|
-
git archive --format=zip --output="$n8r_skill_zip/n8r-surface.zip"
|
|
248
|
-
python3 -m zipfile -l "$n8r_skill_zip/n8r-surface.zip"
|
|
272
|
+
git archive --format=zip --output="$n8r_skill_zip/n8r-surface-0.1.11.zip" 5eed2ac9a31933caa2ae306e4b407e327d147bf7:plugins/n8r-surface
|
|
273
|
+
python3 -m zipfile -l "$n8r_skill_zip/n8r-surface-0.1.11.zip"
|
|
274
|
+
shasum -a 256 "$n8r_skill_zip/n8r-surface-0.1.11.zip"
|
|
249
275
|
```
|
|
250
276
|
|
|
251
|
-
Expected: exit 0; the archive has both manifests, one skill with its
|
|
277
|
+
Expected: exit 0; the archive has both manifests, one skill with its references, synthetic shape examples, workspace/artifact helpers
|
|
278
|
+
and third-party notice
|
|
252
279
|
and OpenAI metadata, the icon and licence files. It contains no Git history,
|
|
253
280
|
source-repository research data, credentials or node_modules. The output directory
|
|
254
281
|
varies. Archive only the committed plugin subtree so paused/untracked work cannot
|
|
255
282
|
enter the package. Uploading or publishing the ZIP remains a separate action.
|
|
283
|
+
|
|
284
|
+
## Installation rehearsal — 9 November 2026
|
|
285
|
+
|
|
286
|
+
Codex CLI 0.166.0 on macOS installed the pinned merged revision from GitHub in a
|
|
287
|
+
fresh temporary Codex home. A separate temporary home installed 0.1.8 at
|
|
288
|
+
`3effc41bf7e8466651722b7b4c64035f862b1901`, then exercised the documented
|
|
289
|
+
marketplace removal and pinned add/install/list sequence. All commands exited 0;
|
|
290
|
+
each final list contained one installed/enabled 0.1.11 entry. All 20 installed
|
|
291
|
+
files matched the pinned plugin subtree byte-for-byte. A synthetic research note
|
|
292
|
+
outside the cache remained unchanged during replacement. The prepared ZIP's 20
|
|
293
|
+
files also matched that subtree exactly.
|
|
294
|
+
|
|
295
|
+
Raw command receipts and file comparisons remain in the private verification
|
|
296
|
+
vault. The active host installation was unchanged. This verifies repository
|
|
297
|
+
installation, replacement and ZIP preparation; it adds no inference, desktop
|
|
298
|
+
lifecycle or multi-component research acceptance. The accepted research evidence
|
|
299
|
+
remains the [8 November trial](skill-usefulness-verification.md).
|
|
300
|
+
|
|
301
|
+
## Checked artifacts in 0.1.11
|
|
302
|
+
|
|
303
|
+
The skill now supports standalone Capability/Bound JSON, research HTML and a
|
|
304
|
+
brief through bundled resources. See the [artifact task and human
|
|
305
|
+
verification](skill-surface-artifacts.md) for prerequisites, privacy limits,
|
|
306
|
+
revision behavior and evidence. The [accepted two-product trial](skill-usefulness-verification.md)
|
|
307
|
+
covers Capability, Bound and fresh-session revision on bounded LibreChat and Open
|
|
308
|
+
WebUI source packs. It does not establish a live deployment or the proposed
|
|
309
|
+
incremental LibreChat + Atlas + inference-service demonstration.
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# Strategic direction: AI Surface security assurance
|
|
2
|
+
|
|
3
|
+
Agreed direction, 12 November 2026. Tracked in
|
|
4
|
+
[issue #64](https://github.com/injectionator/n8r-surface/issues/64).
|
|
5
|
+
This document captures the destination and proposed delivery milestones. It does
|
|
6
|
+
not claim an implemented framework, accepted assurance levels or runtime results.
|
|
7
|
+
|
|
8
|
+
## Purpose and primary reader
|
|
9
|
+
|
|
10
|
+
Provide a practical security assurance framework for people building and operating
|
|
11
|
+
AI Surfaces, supported by professional services, reusable guidance and tools.
|
|
12
|
+
The primary reader is the consultant advising a security engineer or architect,
|
|
13
|
+
who helps the system owner decide what protection is needed and whether the
|
|
14
|
+
evidence supports operation, release or a corrective change.
|
|
15
|
+
|
|
16
|
+
The consultant must be able to explain the expected security capabilities,
|
|
17
|
+
applicable controls, implementation options, verification procedures and remaining
|
|
18
|
+
risk in language the owner can act on. The owner selects or approves the policy,
|
|
19
|
+
required assurance level and any exceptions with that advice. Assessment records
|
|
20
|
+
identify the assessor and the basis for each judgment; automation supplies evidence
|
|
21
|
+
and repeatable checks without silently making the owner's risk decision.
|
|
22
|
+
|
|
23
|
+
The intended service is to define the security expected of an AI Surface, discover
|
|
24
|
+
how it is implemented, and demonstrate through observable testing whether the
|
|
25
|
+
running system meets those expectations. Retain the evidence needed to explain
|
|
26
|
+
its posture and verify improvements. A readable framework and a useful assessment
|
|
27
|
+
are deliverables in their own right; the tools support their production and reuse.
|
|
28
|
+
|
|
29
|
+
This is a strategic use of the independently usable AI Surface Model. There remains
|
|
30
|
+
one model. The framework must work across different compositions, including
|
|
31
|
+
applications, agents, models, tools, data services and their external dependencies.
|
|
32
|
+
Unknown or inaccessible service internals remain explicit coverage limits.
|
|
33
|
+
|
|
34
|
+
## From policy to implementation and observable verification
|
|
35
|
+
|
|
36
|
+
| Layer | Required content and intended use |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| Policy and security objectives | Protected assets, intended users and authority, threats, obligations, scope and acceptable behaviour. |
|
|
39
|
+
| Security capabilities and levels | Human-readable capability areas and versioned L1/L2-style profiles stating which requirements and verification obligations apply. |
|
|
40
|
+
| Controls | Requirement, rationale, applicability, responsible party, protected resources/paths, enforcement points, dependencies and exceptions. |
|
|
41
|
+
| Implementation guidance | Concrete steps and configuration requirements for named component versions and compositions; alternatives that satisfy the same intent. |
|
|
42
|
+
| Verification procedures | Static inspection and live probes/attacks, prerequisites, authorized scope, expected outcomes, required observation points and failure/inconclusive criteria. |
|
|
43
|
+
| Assessment and improvement | Findings, evidence, conformance, coverage, limitations, remediation and repeat verification against an identified successor setup. |
|
|
44
|
+
|
|
45
|
+
Security capabilities here mean abilities such as enforcing user authority; they
|
|
46
|
+
are not synonymous with a Capability Surface, which describes supported component
|
|
47
|
+
and integration possibilities. L1/L2 are intended framework concepts, not existing
|
|
48
|
+
levels or product ratings. Their control membership, applicability rules and
|
|
49
|
+
verification depth still need definition. Decide explicitly whether a level adds
|
|
50
|
+
controls, stronger evidence or both. Version policies and profiles so later changes
|
|
51
|
+
do not silently change earlier assessments.
|
|
52
|
+
|
|
53
|
+
Each control entry should let a practitioner answer: what is required, why it
|
|
54
|
+
applies, where it is enforced, how to implement it, how to verify it, and what
|
|
55
|
+
counts as sufficient evidence. A component's controls may depend on controls
|
|
56
|
+
provided by another service. Evaluate complete paths as well as isolated nodes.
|
|
57
|
+
|
|
58
|
+
## Bidirectional assessment of static and live Surfaces
|
|
59
|
+
|
|
60
|
+
Work downwards from policy to controls, implementation and tests, and upwards from
|
|
61
|
+
discovered components and behaviour to the requirements they support or violate.
|
|
62
|
+
Neither direction requires a complete inventory before useful work can begin.
|
|
63
|
+
|
|
64
|
+
Static inputs include repositories, documentation, inventories and configuration
|
|
65
|
+
artifacts. Live inputs include running instances, effective configuration, service
|
|
66
|
+
connections, user/role context, logs and permitted observations or probe results.
|
|
67
|
+
Bind these to the relevant component and relationship identities, source revisions,
|
|
68
|
+
effective setup, time and test Run. Repository configuration can differ from the
|
|
69
|
+
effective running setup; preserve and investigate that disagreement.
|
|
70
|
+
|
|
71
|
+
Keep these judgments separate:
|
|
72
|
+
|
|
73
|
+
- **Required:** a policy/profile makes a control applicable to an identified scope.
|
|
74
|
+
- **Claimed or configured:** documentation, code or instance configuration provides
|
|
75
|
+
evidence about the implementation, with its own limitations.
|
|
76
|
+
- **Demonstrated:** a scoped observation or test supports or contradicts a claim
|
|
77
|
+
about the running system under stated conditions.
|
|
78
|
+
|
|
79
|
+
These judgments complement Capability/Bound/Observed evidence distinctions; they
|
|
80
|
+
are not replacements or automatic conversions. Configuration does not establish
|
|
81
|
+
runtime effectiveness. Missing evidence is unknown, not proof of an absent
|
|
82
|
+
control; a supported finding of absence must explain the examined scope.
|
|
83
|
+
|
|
84
|
+
Link policy requirements to controls; controls to protected nodes, relationships
|
|
85
|
+
and paths; implementations to enforcement components and configuration; and
|
|
86
|
+
verification procedures/results to the exact claims and setup they assess. Users
|
|
87
|
+
must be able to navigate from a component to its controls and tests, or from a
|
|
88
|
+
control to every known implementation, uncovered path and outstanding question.
|
|
89
|
+
|
|
90
|
+
## Domain, identity and control-aware runtime paths
|
|
91
|
+
|
|
92
|
+
Assess the paths an LLM can assemble at runtime against the security framework.
|
|
93
|
+
A test needs business meaning: which actor, acting from which context, attempts
|
|
94
|
+
which operation on which resource, under which policy? HR records, CRM accounts,
|
|
95
|
+
financial transactions and clinical data introduce different permissions and
|
|
96
|
+
consequences. Trace authentication, authorization and accounting across the path,
|
|
97
|
+
including changes from the initiating user to delegated or service identities.
|
|
98
|
+
|
|
99
|
+
The circuit analogy describes how a request can connect tools, data and services
|
|
100
|
+
into an execution path. It is an explanatory view of the same AI Surface Model,
|
|
101
|
+
not a separate model or a claim that the LLM controls every connection. Host logic,
|
|
102
|
+
tool availability, permissions and external systems also determine execution.
|
|
103
|
+
The following synthetic diagram illustrates one candidate path, not live evidence:
|
|
104
|
+
|
|
105
|
+
```mermaid
|
|
106
|
+
flowchart LR
|
|
107
|
+
U[User and request context] --> A[Application and LLM]
|
|
108
|
+
A -->|Proposed tool call| G[Tool gateway]
|
|
109
|
+
G -->|Executed request| C[Service authorization]
|
|
110
|
+
C -->|Permitted operation| D[Protected business data]
|
|
111
|
+
C -->|Denied operation| X[Denial]
|
|
112
|
+
P[Policy and control requirements] -.-> G
|
|
113
|
+
P -.-> C
|
|
114
|
+
G -.-> E[Correlated execution evidence]
|
|
115
|
+
C -.-> E
|
|
116
|
+
D -.-> E
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The illustrated enforcement points are candidates to investigate; their presence,
|
|
120
|
+
coverage and effectiveness require evidence. A real path may branch, run in
|
|
121
|
+
parallel, retry, loop or invoke further agents. Finite tools do not imply a small
|
|
122
|
+
set of histories: arguments, state and repeated operations can produce an enormous
|
|
123
|
+
or unbounded execution space. Do not promise exhaustive testing of arbitrary
|
|
124
|
+
human inputs or every possible circuit.
|
|
125
|
+
|
|
126
|
+
Assess the intended protection of each technique against explicit requirements:
|
|
127
|
+
input constraints, actor/task-specific tool access, per-action authorization,
|
|
128
|
+
sequence/state restrictions, approval bound to the executed action, execution/data
|
|
129
|
+
budgets, and detection/interruption. These are candidate control families, not an
|
|
130
|
+
adopted catalog. Input filtering or an LLM guardrail must not receive credit for
|
|
131
|
+
service authorization without evidence that it enforces the relevant requirement.
|
|
132
|
+
Individually permitted operations may combine into a forbidden business outcome.
|
|
133
|
+
|
|
134
|
+
The assessment must identify which control held or failed. If the model proposes
|
|
135
|
+
a prohibited read and the service denies it, downstream authorization held for
|
|
136
|
+
that attempt even if a guardrail did not. If the model refuses after a tool has
|
|
137
|
+
retrieved protected data, investigate the retrieval and disclosure separately.
|
|
138
|
+
If the response invents a record without retrieval, assess integrity rather than
|
|
139
|
+
claiming demonstrated unauthorized data access. Prompt injection is one means of
|
|
140
|
+
exercising these boundaries; direct requests, retrieved content, tool outputs and
|
|
141
|
+
stateful sequences can test the same business rule. Existing probe engines can
|
|
142
|
+
supply inputs; the framework supplies context, expectations and evidence criteria.
|
|
143
|
+
|
|
144
|
+
### Proof, counterexamples and bounded tests
|
|
145
|
+
|
|
146
|
+
| Conclusion | Required basis and limit |
|
|
147
|
+
| --- | --- |
|
|
148
|
+
| Proved within stated assumptions | An identified property and explicit model/scope, justified assumptions and a suitable proof or exhaustive analysis of a bounded state space. Establish how the analyzed model corresponds to the deployed setup; a model proof alone is not proof of the whole live service. |
|
|
149
|
+
| Disproved by a counterexample | A traceable execution violating the exact claim under its applicable conditions. One valid counterexample defeats a universal claim, even if the behavior is intermittent; it does not establish prevalence or failure of unrelated controls. |
|
|
150
|
+
| Supported by bounded testing | Identified cases, repetitions, outcomes and observation coverage. Report the tested conditions and unexplored space; passing samples do not prove all paths safe. |
|
|
151
|
+
| Inconclusive or blocked | Missing prerequisites, ambiguous attribution or insufficient telemetry. State what evidence would resolve the judgment; no observed failure does not imply a pass. |
|
|
152
|
+
|
|
153
|
+
For probabilistic behavior, retain model/provider version where available, relevant
|
|
154
|
+
settings, prompts and source context subject to privacy rules, initial state,
|
|
155
|
+
identity/role, setup revision, attempts and observed outcomes. Record unknown
|
|
156
|
+
provider details and changes. Repeated trials can characterize the sampled
|
|
157
|
+
conditions; do not infer a general failure probability without a justified sampling
|
|
158
|
+
method. Keep a retained counterexample even if later attempts cannot reproduce it.
|
|
159
|
+
|
|
160
|
+
### Proposed Labs view: watch and replay the circuit
|
|
161
|
+
|
|
162
|
+
A proposed n8r-labs consumer capability is to draw observed execution paths as
|
|
163
|
+
events arrive and replay them afterwards. It should help the consultant see the
|
|
164
|
+
initiating and effective identities, proposed versus executed tool calls, data
|
|
165
|
+
movement, control decisions and resulting effects, with links back to the policy
|
|
166
|
+
and evidence. A denied operation may be an exercised enforcement point without
|
|
167
|
+
being a completed data-access path. A configured control without decision evidence
|
|
168
|
+
must not be displayed as an observed successful check.
|
|
169
|
+
|
|
170
|
+
Such a view depends on sufficiently correlated, authorized telemetry. Make missing
|
|
171
|
+
instrumentation, delayed events, uncertain ordering and inferred links visible;
|
|
172
|
+
chronological proximity alone does not establish causality. Describe observed data
|
|
173
|
+
movement only to the granularity supported by evidence, without exposing protected
|
|
174
|
+
payloads. Preserve the Run and effective setup so replay cannot silently substitute
|
|
175
|
+
today's configuration for the one tested. The visualization is a view onto evidence,
|
|
176
|
+
not proof of complete execution coverage.
|
|
177
|
+
|
|
178
|
+
This records a consumer outcome and evidence requirements only. Labs UI design,
|
|
179
|
+
instrumentation, event transport/storage and implementation belong in the separate
|
|
180
|
+
n8r-labs repository. A static evidence-linked path is enough for the first framework
|
|
181
|
+
slice; live animation is not a prerequisite for proving a bounded control failure.
|
|
182
|
+
|
|
183
|
+
## Demonstrating conformance and reporting posture
|
|
184
|
+
|
|
185
|
+
The distinguishing outcome is observable testing of control effectiveness.
|
|
186
|
+
Probes and attacks must test explicit expected behaviour, including legitimate
|
|
187
|
+
use, and retain enough downstream evidence to explain the result. A model refusal
|
|
188
|
+
alone does not establish that a tool made no prohibited request or disclosed no
|
|
189
|
+
protected data. Correlate initiating and effective identities, executed operations,
|
|
190
|
+
authorization decisions, returned data and effects where relevant.
|
|
191
|
+
|
|
192
|
+
For example, a tenant-isolation requirement leads to inspection of identity
|
|
193
|
+
propagation and authorization, then authorized cross-user retrieval probes on a
|
|
194
|
+
controlled composition. A successful prohibited read contradicts the control claim
|
|
195
|
+
even if configuration inspection passed. After a defensive change, repeat both
|
|
196
|
+
prohibited and legitimate access and preserve the original setup and evidence.
|
|
197
|
+
A passing test supports the exercised conditions, not every possible attack.
|
|
198
|
+
Missing telemetry or unavailable prerequisites produce an inconclusive or blocked
|
|
199
|
+
verification result, not a pass.
|
|
200
|
+
|
|
201
|
+
The strategic goal includes scoring a service against an agreed profile. Report
|
|
202
|
+
conformance, assessment coverage, evidence strength/freshness and critical failures
|
|
203
|
+
separately. A score must name its policy/profile version, applicable scope,
|
|
204
|
+
assessment time and evidence basis. Untested controls must not appear as passes;
|
|
205
|
+
exclusions and accepted exceptions must remain visible. Critical failures must not
|
|
206
|
+
be hidden by averaging many easy passes. Numeric formulas, weights, level gates,
|
|
207
|
+
expiry rules and treatment of exceptions remain design work; no current Surface
|
|
208
|
+
artifact earns a framework score merely by validating or being saved.
|
|
209
|
+
|
|
210
|
+
The consultant's report should show the target level, requirement-by-requirement
|
|
211
|
+
judgments, supporting and contrary evidence, gaps, prioritized corrections and the
|
|
212
|
+
owner's recorded decisions. Use concise defaults with explanations and evidence
|
|
213
|
+
within one request, following the [presentation guidance](product-direction.md#presentation-brief-by-default-explanation-within-reach).
|
|
214
|
+
|
|
215
|
+
## Existing work and proposed next milestones
|
|
216
|
+
|
|
217
|
+
Status snapshot: 12 November 2026. Milestones below are a recommended sequence,
|
|
218
|
+
not implementation authorization or release commitments. Close the existing
|
|
219
|
+
acceptance loop while developing the first bounded framework example.
|
|
220
|
+
|
|
221
|
+
| Work or milestone | Position and contribution | Evidence needed to advance |
|
|
222
|
+
| --- | --- | --- |
|
|
223
|
+
| Discovery and durable descriptions | Capability/Bound contract, standalone skill 0.1.11 and two-product verification merged in #53/#54/#58. These provide identities, relationships, evidence and revision preservation. | Retain the accepted bounded evidence; do not reinterpret it as security-posture acceptance. |
|
|
224
|
+
| Practical consultant intake | Incremental source discovery and fresh-session correction rehearsed in draft #63; installation handoff in draft #62. | User review of the saved brief and useful next enquiries; preserve source/configuration/runtime distinctions. |
|
|
225
|
+
| First framework slice | Next proposed milestone: one security capability, a small explicit control set, a provisional level profile, domain/identity context, implementation guidance and verification procedures with explicit proof/test limits. | A consultant and engineer can trace one policy requirement down to a test and a discovered fact back to the requirement, using a synthetic worked example. Approve the bounded profile before rating against it. |
|
|
226
|
+
| Static and configured assessment | Apply that slice to a known composition using the existing discovery path. LibreChat/VPS/Atlas is an existing motivating path, not a required architecture or verified posture. | Evidence-linked control applicability, implementation claims, gaps and proposed probes; independent source/configuration readback. |
|
|
227
|
+
| Observable runtime proof | Extend the [first value demonstration](product-direction.md#smallest-end-to-end-value-demonstration) with the selected control/profile and assessment record. Fixture and execution owner remain to be selected. | One discovered authority failure, a defensive change, prohibited/legitimate retests, downstream evidence attributing the result to a specific control, a retained runtime path and preserved before/after setup references. |
|
|
228
|
+
| Repeatable assessment and scoring | Derive the initial reporting/rating rules from the worked example, then exercise another composition without product-specific control meanings. | Explicit coverage and critical-failure rules; independent review can reproduce judgments from retained evidence and identify inconclusive cases. |
|
|
229
|
+
| Live path visualization | Proposed Labs consumer outcome: watch/replay observed circuits with identity and control context. No Labs implementation is included here. | Correlated events resolve to the same Run/setup and evidence; proposed/executed/denied actions, inferred links and telemetry gaps remain distinguishable. |
|
|
230
|
+
| Distribution and consumer integration | CLI #59 and scoped candidate #60 remain drafts; #60 is stacked on #59. Labs adaptation belongs in its own repository. | Separate experience acceptance, release decisions and named-consumer evidence; these are delivery channels, not substitutes for assurance proof. |
|
|
231
|
+
|
|
232
|
+
The narrow runtime demonstration is intended to become the first exercised path
|
|
233
|
+
through the framework, not the whole strategic destination. Broader control coverage, additional levels,
|
|
234
|
+
continuous reassessment and more implementations can follow evidence from that
|
|
235
|
+
path. Existing issues #13/#17/#27 retain their wider remaining scope.
|
|
236
|
+
|
|
237
|
+
## Standards and delivery boundaries
|
|
238
|
+
|
|
239
|
+
The separate [CycloneDX adoption direction, #66](https://github.com/injectionator/n8r-surface/issues/66)
|
|
240
|
+
and [draft #67](https://github.com/injectionator/n8r-surface/pull/67) establish the
|
|
241
|
+
inventory/exchange foundation and SBOM-first discovery direction. Inventory,
|
|
242
|
+
assembly and operational records should connect to controls and assessments.
|
|
243
|
+
Their existence alone does not establish effectiveness or conformance.
|
|
244
|
+
|
|
245
|
+
Investigate bounded mappings to CycloneDX 1.7 definitions/declarations and reference
|
|
246
|
+
mechanisms, and OSCAL control implementation and assessment concepts. CycloneDX
|
|
247
|
+
1.7 defines claims, targets and evidence; OSCAL describes component control
|
|
248
|
+
implementations and assessment records. See the
|
|
249
|
+
[CycloneDX 1.7 reference](https://cyclonedx.org/docs/1.7/proto/)
|
|
250
|
+
and [OSCAL model overview](https://pages.nist.gov/OSCAL/learn/concepts/layer/).
|
|
251
|
+
OSCAL is a mapping candidate, not an adopted dependency. Pin its selected version
|
|
252
|
+
before producing a mapping. Follow the [interoperability evidence requirements](../interoperability.md#evidence-for-compatibility);
|
|
253
|
+
no mapping, round trip or consumer compatibility is established by this strategy.
|
|
254
|
+
|
|
255
|
+
n8r-surface supplies discovery descriptions and the meanings required to connect
|
|
256
|
+
policy, claims and evidence. Execution owners supply authorized test/probe runs;
|
|
257
|
+
observability supplies correlated evidence. Labs application design remains in
|
|
258
|
+
its separate repository, with Lab-owned configuration and bindings. A manual
|
|
259
|
+
execution handoff can prove the first slice without a general telemetry platform.
|
|
260
|
+
|
|
261
|
+
The installed skill remains read-only with respect to target systems. This strategy
|
|
262
|
+
does not add runtime collection, attack execution, an Observed Surface contract,
|
|
263
|
+
a control catalog or a scoring engine. Each behavior change needs its own intent,
|
|
264
|
+
installed-product attempt or recorded blocker, implementation and verification.
|
|
265
|
+
Customer configurations, user data and raw telemetry remain in permitted private
|
|
266
|
+
storage; publish only approved sanitized evidence. Framework conformance claims
|
|
267
|
+
must stay within their assessed scope and do not imply certification.
|