@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.
Files changed (118) hide show
  1. package/README.md +30 -4
  2. package/dist/cli.js +174 -22
  3. package/dist/codec.d.ts +2 -0
  4. package/dist/codec.js +22 -7
  5. package/dist/codex.d.ts +1 -1
  6. package/dist/codex.js +26 -10
  7. package/dist/contracts.d.ts +108 -2
  8. package/dist/cyclonedx-schemas/bom-1.7.schema.json +6700 -0
  9. package/dist/cyclonedx-schemas/cryptography-defs.schema.json +576 -0
  10. package/dist/cyclonedx-schemas/jsf-0.82.schema.json +240 -0
  11. package/dist/cyclonedx-schemas/spdx.schema.json +786 -0
  12. package/dist/cyclonedx-validation.d.ts +1 -0
  13. package/dist/cyclonedx-validation.js +45 -0
  14. package/dist/html.js +27 -3
  15. package/dist/recent.d.ts +9 -0
  16. package/dist/recent.js +71 -0
  17. package/dist/revisions.js +42 -0
  18. package/dist/skill-artifacts-cli.d.ts +1 -0
  19. package/dist/skill-artifacts-cli.js +13 -0
  20. package/dist/skill-artifacts.d.ts +15 -0
  21. package/dist/skill-artifacts.js +184 -0
  22. package/dist/skill-cyclonedx.d.ts +26 -0
  23. package/dist/skill-cyclonedx.js +214 -0
  24. package/dist/skill-presentation.d.ts +10 -0
  25. package/dist/skill-presentation.js +108 -0
  26. package/dist/skill-surface-cli.d.ts +1 -0
  27. package/dist/skill-surface-cli.js +37 -0
  28. package/dist/skill-surface-store.d.ts +7 -0
  29. package/dist/skill-surface-store.js +126 -0
  30. package/dist/surface-bom.d.ts +73 -0
  31. package/dist/surface-bom.js +139 -0
  32. package/dist/surface-draft.d.ts +6 -3
  33. package/dist/surface-draft.js +20 -3
  34. package/dist/surface-instructions.d.ts +2 -1
  35. package/dist/surface-instructions.js +10 -1
  36. package/dist/surface-overview.d.ts +15 -0
  37. package/dist/surface-overview.js +86 -0
  38. package/dist/surface-store.d.ts +5 -7
  39. package/dist/surface-store.js +34 -2
  40. package/dist/surface-view.d.ts +3 -0
  41. package/dist/surface-view.js +50 -0
  42. package/dist/validate.js +298 -0
  43. package/docs/n8r-surface/cli-bundles.md +72 -0
  44. package/docs/n8r-surface/command-outcomes.md +151 -4
  45. package/docs/n8r-surface/contracts.md +10 -0
  46. package/docs/n8r-surface/critical-path.md +21 -0
  47. package/docs/n8r-surface/first-use-access.md +143 -0
  48. package/docs/n8r-surface/first-use-overview.md +262 -0
  49. package/docs/n8r-surface/getting-started.md +55 -88
  50. package/docs/n8r-surface/guided-journey-verification.md +137 -0
  51. package/docs/n8r-surface/implementation-decisions.md +14 -14
  52. package/docs/n8r-surface/instance-first-research.md +209 -0
  53. package/docs/n8r-surface/npm-distribution.md +39 -69
  54. package/docs/n8r-surface/npm-release.md +141 -14
  55. package/docs/n8r-surface/product-direction.md +327 -0
  56. package/docs/n8r-surface/researcher-skill.md +105 -51
  57. package/docs/n8r-surface/security-assurance-strategy.md +267 -0
  58. package/docs/n8r-surface/skill-bom-verification.md +142 -0
  59. package/docs/n8r-surface/skill-cyclonedx-verification.md +144 -0
  60. package/docs/n8r-surface/skill-cyclonedx.md +85 -0
  61. package/docs/n8r-surface/skill-manual.md +129 -0
  62. package/docs/n8r-surface/skill-surface-artifacts.md +234 -0
  63. package/docs/n8r-surface/skill-usefulness-verification.md +135 -0
  64. package/docs/n8r-surface/skill-workspace-automation.md +359 -0
  65. package/docs/n8r-surface/surface-description-contract.md +224 -0
  66. package/docs/n8r-surface/surface-descriptions.md +173 -0
  67. package/docs/n8r-surface/surface-relationships.md +231 -0
  68. package/docs/n8r-surface/tester-candidate.md +158 -0
  69. package/docs/n8r-surface/versioning.md +55 -66
  70. package/docs/n8r-surface/workspace-human-check.md +101 -0
  71. package/docs/n8r-surface/workspace-installation.md +68 -0
  72. package/docs/n8r-surface/workspace-verification.md +350 -0
  73. package/docs/n8r-surface/workspace.md +83 -0
  74. package/examples/researcher/README.md +8 -0
  75. package/examples/researcher/cyclonedx/configured/README.md +7 -0
  76. package/examples/researcher/cyclonedx/configured/manifest.json +10 -0
  77. package/examples/researcher/cyclonedx/configured/mapping.json +323 -0
  78. package/examples/researcher/cyclonedx/configured/surface-records.json +1275 -0
  79. package/examples/researcher/cyclonedx/configured/surface.cdx.json +79 -0
  80. package/examples/researcher/descriptions/README.md +29 -0
  81. package/examples/researcher/descriptions/bound-r1.json +141 -0
  82. package/examples/researcher/descriptions/bound-r2.json +153 -0
  83. package/examples/researcher/descriptions/capability.json +167 -0
  84. package/examples/researcher/descriptions/research-r1.json +153 -0
  85. package/examples/researcher/descriptions/research-r2.json +157 -0
  86. package/examples/researcher/descriptions/sources.md +24 -0
  87. package/examples/researcher/relationships/README.md +34 -0
  88. package/examples/researcher/relationships/bound-r1.json +346 -0
  89. package/examples/researcher/relationships/bound-r2.json +358 -0
  90. package/examples/researcher/relationships/capability.json +325 -0
  91. package/examples/researcher/relationships/config/assistant.env.example +4 -0
  92. package/examples/researcher/relationships/research-r1.json +300 -0
  93. package/examples/researcher/relationships/research-r2.json +304 -0
  94. package/examples/researcher/relationships/sources.md +38 -0
  95. package/examples/researcher/surface-bom/README.md +17 -0
  96. package/examples/researcher/surface-bom/initial.cdx.json +188 -0
  97. package/package.json +1 -1
  98. package/plugins/n8r-surface/.codex-plugin/plugin.json +2 -2
  99. package/plugins/n8r-surface/LICENSING.md +3 -0
  100. package/plugins/n8r-surface/plugin.json +2 -2
  101. package/plugins/n8r-surface/skills/research/SKILL.md +79 -38
  102. package/plugins/n8r-surface/skills/research/references/artifacts.md +152 -0
  103. package/plugins/n8r-surface/skills/research/references/cyclonedx.md +207 -0
  104. package/plugins/n8r-surface/skills/research/references/discovery-map.md +20 -2
  105. package/plugins/n8r-surface/skills/research/references/examples/bound-r1.json +346 -0
  106. package/plugins/n8r-surface/skills/research/references/examples/capability.json +325 -0
  107. package/plugins/n8r-surface/skills/research/references/examples/research-r1.json +300 -0
  108. package/plugins/n8r-surface/skills/research/references/examples/surface.cdx.json +188 -0
  109. package/plugins/n8r-surface/skills/research/references/first-use-access.md +97 -0
  110. package/plugins/n8r-surface/skills/research/references/first-use-overview.md +101 -0
  111. package/plugins/n8r-surface/skills/research/references/instance-first.md +125 -0
  112. package/plugins/n8r-surface/skills/research/references/working-notes.md +6 -1
  113. package/plugins/n8r-surface/skills/research/references/workspace.md +89 -0
  114. package/plugins/n8r-surface/skills/research/scripts/THIRD-PARTY-NOTICES.txt +273 -0
  115. package/plugins/n8r-surface/skills/research/scripts/artifacts.mjs +8348 -0
  116. package/plugins/n8r-surface/skills/research/scripts/cyclonedx.mjs +28113 -0
  117. package/plugins/n8r-surface/skills/research/scripts/surface.mjs +27800 -0
  118. 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
- **First increment:** an experimental instruction-only Researcher, packaged for
4
- ChatGPT desktop / Work and Codex. It researches supplied sources with the existing
5
- harness and saves working notes. It does not add a CLI runner, Lab connection or
6
- validated experimental HTML/Surface output. Related to [#17](https://github.com/injectionator/n8r-surface/issues/17).
7
-
8
- The user selected this order on 4 November 2026: prove the skill in the existing
9
- harness, adapt that same core to n8r-labs in its repository, then return to the
10
- standalone `n8r-surface` command. Unfinished #16 source-overview work is paused.
11
- There will be no separate status subcommand.
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
- ## RESEARCH-01: investigate and continue
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
- Reuse an existing installation only after checking the version:
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
- Expect one installed/enabled entry at the candidate version below. If an older
34
- version came from the Git branch marketplace, refresh its snapshot and reinstall:
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 upgrade n8r-surface
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
- A marketplace pinned to a commit stays pinned. To choose a different ref, remove
43
- that marketplace registration and repeat step 1 with the new ref. For a local
44
- marketplace, update its source checkout first and use the
45
- [maintainer installation](#maintainer-installation-from-a-local-candidate).
46
- Refreshing the desktop app alone does not refresh the Git snapshot.
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
- You need a local Work
49
- or Codex chat that can read your LibreChat checkout and save files. Existing
50
- ChatGPT sign-in is sufficient for this instruction-only plugin; it adds no model
51
- API connection. Work's picker and full lifecycle still need
52
- [human acceptance](researcher-skill-verification.md#remaining-work-mode-acceptance).
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
- 1. **Install once.** With Codex CLI installed, run these commands from any
55
- directory. They fetch the candidate from GitHub; no manual clone, npm install
56
- or build of n8r-surface is needed:
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
- ```sh
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
- Expected: exit 0 and one installed/enabled `n8r-surface@n8r-surface`, version
65
- `0.1.8`. The branch is a changing draft candidate, not a release on `main`.
66
- Use an identified commit with `--ref` for a repeatable installation. Network
67
- access is required; the commands change plugin configuration/cache.
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 are working notes. Validated HTML/Surface outputs, Lab adaptation and the
115
- standalone CLI remain later increments. RESEARCH-01 does not establish the
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 needed by the tested Codex CLI 0.139.0. Keep
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.8` identify this experimental candidate. Increment
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.139.0 was used for
152
- the package checks; other versions need verification. Record `codex --version`
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.8`, installed and enabled. The installation
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
- In ChatGPT desktop, open Plugins and select the **n8r-surface** source. Verify
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.8`, reads the two actual documents,
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 a committed, reviewed candidate in the repository root:
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" HEAD:plugins/n8r-surface
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 four references
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.