@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
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Self-contained Surface verification
|
|
2
|
+
|
|
3
|
+
Issue [#68](https://github.com/injectionator/n8r-surface/issues/68), draft
|
|
4
|
+
[PR #69](https://github.com/injectionator/n8r-surface/pull/69). Candidate 0.1.13.
|
|
5
|
+
This record separates exercised behavior from pending human acceptance.
|
|
6
|
+
|
|
7
|
+
## Baseline
|
|
8
|
+
|
|
9
|
+
An actual installed 0.1.12 session inspected its instructions/helpers and ran
|
|
10
|
+
exporter help. It reported that BOM-only recovery was unavailable: native records
|
|
11
|
+
and mapping siblings were required. This was a capability inspection, not a full
|
|
12
|
+
research round trip. No product findings or historical research were supplied.
|
|
13
|
+
|
|
14
|
+
## Synthetic checks
|
|
15
|
+
|
|
16
|
+
The new fixture retains four database alternatives, one selected dependency,
|
|
17
|
+
unknown inference, source evidence, a decision and investigation entries in one
|
|
18
|
+
BOM. Tests exercise copied-BOM recovery, selected graph equality, source/evidence
|
|
19
|
+
references, independent observations, hosting distinctions, successor preservation,
|
|
20
|
+
changed-view reconciliation, unsafe directories and HTML escaping. These are
|
|
21
|
+
bounded automated checks, not model conformance or human acceptance.
|
|
22
|
+
|
|
23
|
+
Sunshine commit `beaab3faf2bab234069a8677fc627de2f0f01a3d` generated HTML with the
|
|
24
|
+
synthetic application, model and services but omitted profile alternatives/evidence
|
|
25
|
+
and investigation entries. It is not the selected investigation renderer.
|
|
26
|
+
|
|
27
|
+
Browser review of the generated local HTML was blocked by the browser tool's
|
|
28
|
+
`file:` URL policy. No alternate route was attempted. File-level checks do not
|
|
29
|
+
establish visual/browser acceptance.
|
|
30
|
+
|
|
31
|
+
CycloneDX Python Library 11.12.0 with JSON validation extras accepted the synthetic
|
|
32
|
+
BOM against 1.7 and loaded both components, four services and sixteen properties.
|
|
33
|
+
It exposes no `annotations` attribute in this deserialization API; no complete
|
|
34
|
+
profile round-trip claim is made. The native profile reader checks the complete
|
|
35
|
+
BOM directly, including annotations and references.
|
|
36
|
+
|
|
37
|
+
## Independent review
|
|
38
|
+
|
|
39
|
+
Three material findings were reproduced in tests and fixed: BOM-path bypass of
|
|
40
|
+
edited sibling views, disconnected inventory missing from human views, and dropped
|
|
41
|
+
historical observations. The focused suite now has fifteen passing checks.
|
|
42
|
+
|
|
43
|
+
## Installed assessment
|
|
44
|
+
|
|
45
|
+
The user explicitly selected a local LibreChat checkout. Sources, transcripts and
|
|
46
|
+
research remain in a new private run, separate from prior historical rehearsal.
|
|
47
|
+
The everyday installation remains unchanged. All sessions used Codex CLI 0.166.0,
|
|
48
|
+
ChatGPT sign-in, configured `gpt-6-astra`, Node 26.13.0 and macOS. No API-key or
|
|
49
|
+
provider/model fallback. The exact initial installation matches `2b2816e`; the
|
|
50
|
+
reviewed candidate used for diversion/continuation matches
|
|
51
|
+
`bd2b8aef4ef7e6154d40c23349a846be69146da8` (24 plugin files).
|
|
52
|
+
|
|
53
|
+
The harness supplied the installed skill, selected source and writable private
|
|
54
|
+
workspace. Network, memory, unrelated tools and repository instruction loading
|
|
55
|
+
were disabled. Filesystem probes checked denied historical evidence; these
|
|
56
|
+
specific controls are not a general claim of host-memory isolation.
|
|
57
|
+
|
|
58
|
+
The installed Researcher saved revision 001 with an initial plan before research.
|
|
59
|
+
It independently inspected bounded ranges in fourteen files and saved revision
|
|
60
|
+
002 with twelve nodes, thirteen relationships, twelve evidence records, ten
|
|
61
|
+
journal entries and five gaps. All fourteen source hashes matched independent
|
|
62
|
+
readback. No deployment selections were asserted. Git inspection was blocked
|
|
63
|
+
inside the rehearsal; the Researcher recorded inspected hashes and the limit,
|
|
64
|
+
rather than asserting a clean checkout. Developer-only source identity metadata
|
|
65
|
+
is retained privately and was not supplied as research findings.
|
|
66
|
+
|
|
67
|
+
The scripted user diversion paused tool/document investigations and prioritized
|
|
68
|
+
authentication. The reviewed candidate inspected two additional files and saved
|
|
69
|
+
revision 003. The BOM retains the rehearsal user decision, seventeen journal
|
|
70
|
+
entries and three deferred paths with reasons. All ten files in revisions 001/002
|
|
71
|
+
remain byte-identical. This is an agent-run user scenario, not human acceptance.
|
|
72
|
+
|
|
73
|
+
One independent presentation assertion searched for an unescaped setting name in
|
|
74
|
+
Markdown and failed after the successful save. The installed agent normalized
|
|
75
|
+
Markdown-escaped underscores and completed readback; both results are retained.
|
|
76
|
+
No saved files were replaced to make the assertion pass.
|
|
77
|
+
|
|
78
|
+
For the final continuation, only revision 003's BOM was copied to a new writable
|
|
79
|
+
workspace. The harness confirmed that the old workspace was denied and the prior
|
|
80
|
+
ephemeral thread was unavailable. The reviewed installation recovered the objective,
|
|
81
|
+
authentication-first choice, deferred paths/reasons and uncertainties, then saved
|
|
82
|
+
revision 004 with a brief/map/journal. It did not need native siblings or old chats.
|
|
83
|
+
|
|
84
|
+
Independent readback found twelve nodes, thirteen unchanged relationships, fifteen
|
|
85
|
+
evidence records, twenty-two journal entries, two scoped rehearsal decisions and
|
|
86
|
+
three deferred paths. All inherited evidence and source-backed claims were unchanged;
|
|
87
|
+
the additional user-basis record describes continuation scope, not a source finding.
|
|
88
|
+
All fifteen files in revisions 001–003 remain byte-identical. Seventeen source
|
|
89
|
+
references across sixteen unique inspected files match their hashes; the original
|
|
90
|
+
checkout's revision and working-tree status remain unchanged.
|
|
91
|
+
|
|
92
|
+
The developer's first final assertion mistakenly required equality of the whole
|
|
93
|
+
evidence array, rejecting the legitimate appended continuation-scope record. It
|
|
94
|
+
was corrected to require preservation of inherited evidence and equality of all
|
|
95
|
+
non-user source evidence; that check passed. Both attempts are recorded privately.
|
|
96
|
+
|
|
97
|
+
These are agent rehearsals of the documented interactions. They do not establish
|
|
98
|
+
human acceptance, actual deployment selections, runtime effectiveness or exhaustive
|
|
99
|
+
source coverage. Selected/possible visual semantics are exercised by the synthetic
|
|
100
|
+
fixture; the real assessment appropriately leaves deployment selection unknown.
|
|
101
|
+
|
|
102
|
+
## Human task list
|
|
103
|
+
|
|
104
|
+
Prerequisites: candidate 0.1.13 installed, Node 22/24/26 and readable selected
|
|
105
|
+
sources; a new writable Surface folder outside the source checkout. The maintainer
|
|
106
|
+
provides the exact candidate revision/digest and rehearsal output separately.
|
|
107
|
+
|
|
108
|
+
- [ ] Open a fresh chat with the installed Researcher and the selected source.
|
|
109
|
+
Ask: “Explain the AI-relevant paths in this source. Save the Surface and maintain
|
|
110
|
+
an investigation journal in this folder as you go. Show me what to inspect next.”
|
|
111
|
+
Expect an initial plan, useful partial findings and openable journal/map/brief.
|
|
112
|
+
- [ ] Inspect the map. Possible paths and selected paths must look different.
|
|
113
|
+
Open a relationship's evidence; unknown selection must not be called absent.
|
|
114
|
+
Selection must not be called observed runtime use without dated evidence.
|
|
115
|
+
- [ ] Redirect: “Pause that path and investigate authentication first. Keep the
|
|
116
|
+
deferred work and explain what access would help.” Expect a recorded diversion,
|
|
117
|
+
deferred reason, new next steps and a new revision preserving earlier files.
|
|
118
|
+
- [ ] In another fresh chat supply only the latest BOM and source access. Ask:
|
|
119
|
+
“Continue this Surface. What did I choose, what remains uncertain, and what
|
|
120
|
+
should we investigate next?” Expect recovery of the choices, evidence and
|
|
121
|
+
investigation state without requiring a native sibling or old chat.
|
|
122
|
+
- [ ] Report **Pass / Fail / Blocked**, the interaction, candidate revision and
|
|
123
|
+
relevant output paths. Fail for lost decisions, invented bindings, changed old
|
|
124
|
+
files or missing state; Blocked for inaccessible sources/runtime. Keep source
|
|
125
|
+
data private. Retain outputs until reviewed; cleanup is only the disposable run.
|
|
126
|
+
|
|
127
|
+
## Automated checks and retained candidate
|
|
128
|
+
|
|
129
|
+
- Node 22.23.2, 24.22.2 and 26.13.0: 224 tests and package checks pass on each.
|
|
130
|
+
- Markdown lint 0.24.0, offline lychee 0.24.2 links/anchors, cffconvert 2.0.0,
|
|
131
|
+
JSON parsing (18 examples), workflow shell syntax and 24 Python tests pass.
|
|
132
|
+
- `npm ci` and `npm cache add yaml@2.9.1` completed; no new runtime dependency.
|
|
133
|
+
- Exact reviewed candidate ZIP retained privately; SHA-256
|
|
134
|
+
`bdab66880bc1763c73ee30d98d3b188a4c8ae2af410f03b364785fbcc58640dd`.
|
|
135
|
+
No everyday plugin replacement, release or merge.
|
|
136
|
+
|
|
137
|
+
The first package check failed because its golden instruction digest still named
|
|
138
|
+
the earlier instructions; the reviewed digest was updated and all three package
|
|
139
|
+
checks passed. Earlier red regression runs are retained as development evidence,
|
|
140
|
+
not counted as final successes. Browser visual review and human acceptance remain
|
|
141
|
+
pending. Structure, byte integrity and named consumer reads do not prove research
|
|
142
|
+
accuracy or deployment behavior.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Historical skill 0.1.12 CycloneDX verification
|
|
2
|
+
|
|
3
|
+
This alongside-records rehearsal used explicitly supplied historical notes and
|
|
4
|
+
model intent; it was not a neutral fresh assessment. It does not verify the revised
|
|
5
|
+
BOM-authority design. See [candidate 0.1.13 evidence](skill-bom-verification.md).
|
|
6
|
+
|
|
7
|
+
Issue [#68](https://github.com/injectionator/n8r-surface/issues/68), draft
|
|
8
|
+
[PR #69](https://github.com/injectionator/n8r-surface/pull/69). Agent rehearsal on
|
|
9
|
+
13 November 2026; human acceptance, merge and release remain separate decisions.
|
|
10
|
+
|
|
11
|
+
## Revision and environment
|
|
12
|
+
|
|
13
|
+
The isolated installation contains all 22 plugin files exactly matching source
|
|
14
|
+
commit `da0e445221d2209fc843d0cef682606610d22ad5`, candidate 0.1.12.
|
|
15
|
+
Codex CLI 0.166.0, ChatGPT sign-in, configured `gpt-6-astra`, Node 26.13.0,
|
|
16
|
+
macOS. No API-key or provider/model fallback. The active everyday installation
|
|
17
|
+
remained 0.1.11; this candidate used a separate host home and private workspace.
|
|
18
|
+
|
|
19
|
+
The harness uses ephemeral app-server sessions with the installed skill supplied
|
|
20
|
+
as a skill input. Network, memory, unrelated tools and repository instructions are
|
|
21
|
+
disabled. Only the selected workspace and installed skill are accessible, apart
|
|
22
|
+
from required runtime files. A filesystem probe checks that private evidence and
|
|
23
|
+
unsupplied repository instructions cannot be read. Source-pack provenance, raw
|
|
24
|
+
transcripts, outputs, hashes and environment receipts stay in the selected private
|
|
25
|
+
vault; this public record contains no private deployment configuration.
|
|
26
|
+
|
|
27
|
+
## Baseline and task
|
|
28
|
+
|
|
29
|
+
State X: installed 0.1.11, supplied source pack and writable workspace. Input Y:
|
|
30
|
+
inspect the installed skill/helper and determine whether checked CycloneDX export
|
|
31
|
+
is available, without substituting invented findings or an external exporter.
|
|
32
|
+
Observed: only native artifact operations were available; the host identified the
|
|
33
|
+
missing mapping/export/validation workflow. This was a bounded capability check,
|
|
34
|
+
not a failed full research run.
|
|
35
|
+
|
|
36
|
+
The candidate task was to research the supplied multi-component sources, explain
|
|
37
|
+
the system to a consultant advising a security engineer, preserve intended versus
|
|
38
|
+
historical configuration, save native records and CycloneDX alongside them, and
|
|
39
|
+
read both back. The source pack contained selected code, documentation and safe
|
|
40
|
+
historical operational projections recovered from prior work. No applicable SBOM
|
|
41
|
+
was supplied; network lookup was unavailable. Upstream revision, package and
|
|
42
|
+
transitive coverage remain explicit gaps.
|
|
43
|
+
|
|
44
|
+
## Observed initial result
|
|
45
|
+
|
|
46
|
+
The installed candidate performed its own investigation and preparation. The
|
|
47
|
+
developing agent supplied sources and user instructions, not prewritten findings.
|
|
48
|
+
|
|
49
|
+
- Twelve recorded source hashes match their supplied files after the run.
|
|
50
|
+
- Checked native Capability records contain nine nodes and nine relationships.
|
|
51
|
+
- CycloneDX 1.7 contains five components and four services. It has no concrete
|
|
52
|
+
dependencies because the candidate chose Capability for this evidence scope.
|
|
53
|
+
- Native snapshot equals the checked native bundle. Mapping/report retains the
|
|
54
|
+
connection meanings, evidence and uncertainty absent from the BOM view.
|
|
55
|
+
- Intended model and different historical model evidence remain distinct. Source
|
|
56
|
+
control points are identified without asserting present deployment or efficacy.
|
|
57
|
+
- Native brief, HTML and JSON, consultant summary and five-member exchange were
|
|
58
|
+
saved and independently reopened. The candidate corrected one inspection error
|
|
59
|
+
(`mapping.nodes` is nested inside the report), then completed readback. It did
|
|
60
|
+
not replace the successfully checked export with unchecked JSON.
|
|
61
|
+
|
|
62
|
+
## Fresh-session correction
|
|
63
|
+
|
|
64
|
+
A second ephemeral process confirmed that the previous thread was unavailable,
|
|
65
|
+
then recovered from the saved directories and supplied sources. The rehearsal
|
|
66
|
+
input added an owner decision to keep connector tools disabled in the intended
|
|
67
|
+
configuration and require separate authorization/assessment for a future enabled
|
|
68
|
+
path. It was explicitly design intent, not evidence of deployed configuration.
|
|
69
|
+
|
|
70
|
+
The candidate saved native and exchange successors. Independent developer readback
|
|
71
|
+
confirmed all ten earlier artifact files and all twelve sources were unchanged;
|
|
72
|
+
all nine node identities and the prior decision were preserved. Decisions grew
|
|
73
|
+
from one to two. The BOM serial stayed stable and its version advanced from 1 to
|
|
74
|
+
2. Native snapshots matched both checked bundles. This is an actual installed-agent
|
|
75
|
+
rehearsal, not human acceptance.
|
|
76
|
+
|
|
77
|
+
## Independent consumer
|
|
78
|
+
|
|
79
|
+
CycloneDX Python Library **11.12.0**, Python 3.13.1, in a separate environment:
|
|
80
|
+
`JsonStrictValidator(SchemaVersion.V1_7)` returned no validation error;
|
|
81
|
+
`Bom.from_json(data=json.loads(text))` deserialized the synthetic configured BOM.
|
|
82
|
+
The consumer listed its application and separate services and resolved the
|
|
83
|
+
selected application dependency to the concrete Atlas target rather than its
|
|
84
|
+
abstract database role. The [retained synthetic exchange](../../examples/researcher/cyclonedx/configured/README.md)
|
|
85
|
+
is available for inspection. The same independent consumer then validated and
|
|
86
|
+
loaded both actual installed-skill BOMs: five components, four services, versions
|
|
87
|
+
1 and 2, no dependency edges, as expected for this Capability projection.
|
|
88
|
+
This establishes those bounded read tasks only; it
|
|
89
|
+
is not lossless round-trip, general consumer or runtime compatibility.
|
|
90
|
+
|
|
91
|
+
## Maintainer checks
|
|
92
|
+
|
|
93
|
+
- Full suite: 208 passing on Node 22.23.2; 209 passing on Node 24.22.2 and
|
|
94
|
+
26.13.0 after adding the installation-buffer regression. Its focused 15-test
|
|
95
|
+
suite also passes on Node 22.23.2.
|
|
96
|
+
- Installed package checks pass on all three Node majors, including existing
|
|
97
|
+
terminal setup/reuse/preservation interactions. Exact skill bundle and notices
|
|
98
|
+
checks pass; no runtime dependency installation is needed by either helper.
|
|
99
|
+
- Twenty-four Git workflow tests and shell syntax check pass. Example JSON parses;
|
|
100
|
+
native contracts/reference checks and CycloneDX schema/reference checks are
|
|
101
|
+
bounded validation, not universal model conformance.
|
|
102
|
+
- Markdown lint 0.24.0, offline links with lychee 0.24.2, citation metadata with
|
|
103
|
+
cffconvert 2.0.0 and whitespace checks are run before the final handoff.
|
|
104
|
+
|
|
105
|
+
Two integration failures were found and fixed during actual checks: installed-byte
|
|
106
|
+
verification exceeded its old one-MiB Git output buffer, and package smoke checks
|
|
107
|
+
still expected the previous instruction version/digest. The buffer now permits
|
|
108
|
+
16 MiB with a large-helper regression; the digest was independently calculated
|
|
109
|
+
from the candidate source bytes. A fresh whole-branch reviewer confirmed the
|
|
110
|
+
package-pin failure and found no critical projection issue. Additional tamper and
|
|
111
|
+
classification boundaries were manually exercised by that reviewer; retaining
|
|
112
|
+
more automated variants and clarifying the shared skill paragraph's CLI boundary
|
|
113
|
+
remain minor follow-ups. The new exchange is a standalone skill capability, not
|
|
114
|
+
a new product CLI command.
|
|
115
|
+
|
|
116
|
+
## Human task list
|
|
117
|
+
|
|
118
|
+
Prerequisites: candidate 0.1.12, Node 22/24/26, a readable source set and a writable
|
|
119
|
+
disposable workspace. Open a fresh Codex chat in that workspace. Maintainers can
|
|
120
|
+
install the pinned source through the normal plugin marketplace mechanism; see
|
|
121
|
+
[skill installation](researcher-skill.md). Do not substitute an older installation.
|
|
122
|
+
|
|
123
|
+
- [ ] Supply your source paths and say: `Use n8r-surface Researcher to explain this
|
|
124
|
+
multi-component Surface. Save checked native records and CycloneDX 1.7 alongside
|
|
125
|
+
them. Explain what the evidence establishes and what remains unknown.` Expect
|
|
126
|
+
source-backed findings and links to the native brief and exchange files.
|
|
127
|
+
- [ ] Open the brief and `mapping.json`. Expect intended/historical/current state
|
|
128
|
+
to remain distinct. Open `surface.cdx.json`; expect identified components and
|
|
129
|
+
services, with only eligible explicitly selected dependencies. Capability output
|
|
130
|
+
may have none. Unknown coverage is explicit.
|
|
131
|
+
- [ ] Start a fresh chat, supply saved directories and say: `Reopen these records.
|
|
132
|
+
Record this correction as a design decision, save successors and preserve all
|
|
133
|
+
earlier records and decisions.` Supply a correction. Expect stable node IDs and
|
|
134
|
+
BOM serial, incremented BOM version and links to both generations.
|
|
135
|
+
- [ ] Report **Pass / Fail / Blocked**, candidate revision, interactions and output
|
|
136
|
+
paths. Missing output, invented facts, lost decisions or modified prior records
|
|
137
|
+
fail. Missing installation/source access blocks. Keep evidence for review; later
|
|
138
|
+
remove only the disposable workspace, not original sources.
|
|
139
|
+
|
|
140
|
+
Values such as names, node counts and selected dependencies depend on the supplied
|
|
141
|
+
sources; the nine-node rehearsal is not a required graph size. The
|
|
142
|
+
[working manual](skill-manual.md) explains the user journey. Technical helper
|
|
143
|
+
verification uses exit 0 for `saved-and-read-back` / `checked`; a nonzero exit is
|
|
144
|
+
not success. Those commands are maintainer evidence, not required user interactions.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Self-contained CycloneDX Surface
|
|
2
|
+
|
|
3
|
+
Skill **0.1.13** introduced the format below; candidate [0.1.14](first-use-overview.md)
|
|
4
|
+
adds checked optional grouping and a connected overview without changing profile 1.
|
|
5
|
+
The 0.1.13 increment replaces the 0.1.12 alongside-native exchange as the
|
|
6
|
+
destination for new Surface saves. Issue [#68](https://github.com/injectionator/n8r-surface/issues/68).
|
|
7
|
+
One CycloneDX 1.7 BOM carries inventory, relationships, evidence, decisions,
|
|
8
|
+
uncertainties and investigation state. The brief, HTML map and Markdown journal
|
|
9
|
+
are generated from it. Earlier saves remain intact and deliberately readable.
|
|
10
|
+
The standalone product CLI retains its existing pair behavior; this is skill-first.
|
|
11
|
+
|
|
12
|
+
## Standard fields and profile
|
|
13
|
+
|
|
14
|
+
The [CycloneDX 1.7 reference](https://cyclonedx.org/docs/1.7/json/) supplies
|
|
15
|
+
components/services, metadata, dependencies, annotations, external references,
|
|
16
|
+
citations and properties. The [BOM-Link specification](https://cyclonedx.org/capabilities/bomlink/)
|
|
17
|
+
provides version-pinned predecessor identity. We use one BOM per revision, not a
|
|
18
|
+
set whose missing member could hide required investigation state.
|
|
19
|
+
|
|
20
|
+
The exact [Surface profile](../../plugins/n8r-surface/skills/research/references/cyclonedx.md#profile-properties)
|
|
21
|
+
and [synthetic example](../../examples/researcher/surface-bom/initial.cdx.json)
|
|
22
|
+
are bundled with the installed skill. Profile version 1 uses unregistered
|
|
23
|
+
`n8r:surface:` properties: objective, scope, individual relationship/evidence/entry
|
|
24
|
+
records, coverage and gaps. It does not embed the native research/Surface bundle.
|
|
25
|
+
|
|
26
|
+
| Meaning | Standard representation and bounded addition |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| Application, model, service | `components` / `services` with stable `bom-ref`; model type `machine-learning-model`. |
|
|
29
|
+
| Selected dependency | Standard `dependencies`, mechanically checked against selected dependency-kind profile relationships. |
|
|
30
|
+
| Supported alternative | Individual relationship property with support evidence, optionality/group, selection and conditions. Never an unconditional dependency merely because supported. |
|
|
31
|
+
| Hosting, integration, data flow | Distinct relationship kinds, not interchangeable `dependsOn` edges. |
|
|
32
|
+
| Dated observed use | Observation records with timestamp and observation-basis evidence; independent of support/selection. |
|
|
33
|
+
| Findings, choices, disagreements | Standard annotations with subjects, annotator, timestamp and readable text. |
|
|
34
|
+
| Source identity | External references with safe locator, hash, source version/capture scope in comment; profile evidence points to exact locations and applicability. |
|
|
35
|
+
| Attribution | Standard citations with checked JSON Pointers and attribution references. Not a replacement for evidence. |
|
|
36
|
+
| Investigation journey | Ordered entry properties: objective-driven steps, questions, findings, decisions, branches, supersession, access needs and reasons for deferral. |
|
|
37
|
+
| Lifecycle | Capture context in metadata when established; never a forced whole-Surface evidence state. |
|
|
38
|
+
| Revision | Stable serial, increasing version, exact predecessor BOM-Link and byte digest. |
|
|
39
|
+
|
|
40
|
+
Missing configuration is unestablished selection, not absence. A placeholder is
|
|
41
|
+
not a concrete binding. Safe static configuration can establish selection.
|
|
42
|
+
Selection evidence distinguishes actual configuration from human design intent.
|
|
43
|
+
Optionality is not a confidence score. A group alone does not assert exclusivity.
|
|
44
|
+
|
|
45
|
+
## Save and recovery boundary
|
|
46
|
+
|
|
47
|
+
The standalone `surface.mjs` checks official pinned schemas, profile shapes,
|
|
48
|
+
references, evidence applicability and exact dependency projection. It saves one
|
|
49
|
+
new private revision folder with BOM, generated views and a byte manifest.
|
|
50
|
+
The BOM alone reopens; sibling files are not semantic dependencies.
|
|
51
|
+
|
|
52
|
+
For directory continuation, edited generated views block ordinary save. Explicit
|
|
53
|
+
reconciliation reads the proposals, retains the edited files, records an accepted
|
|
54
|
+
choice/explanation and writes a successor. Predecessor BOM hashes are still checked.
|
|
55
|
+
Supplying a lone BOM proves only its own structure and supplied predecessor identity,
|
|
56
|
+
not that an unavailable old manifest or source is intact. No authenticity claim.
|
|
57
|
+
|
|
58
|
+
The reader preserves historical annotations/source references and decision
|
|
59
|
+
provenance; corrections add evidence and can supersede decisions. Nodes and
|
|
60
|
+
relationship endpoints/kinds retain identity. Older revisions are never rewritten.
|
|
61
|
+
Unsupported profile versions, dangling references and ambiguous projections fail.
|
|
62
|
+
|
|
63
|
+
Legacy `artifacts.mjs read` and `cyclonedx.mjs read` remain available for deliberately
|
|
64
|
+
supplied old saves. Migration requires reviewing and transferring their meanings
|
|
65
|
+
into a fresh profile BOM, with explicit provenance/limits. No automatic lossless
|
|
66
|
+
legacy conversion is claimed. No second native authority is created for new saves.
|
|
67
|
+
|
|
68
|
+
## Consumer and visualization limits
|
|
69
|
+
|
|
70
|
+
Generic consumers can read standard inventory and selected dependencies. They
|
|
71
|
+
cannot reconstruct possible paths or investigation state without this profile.
|
|
72
|
+
The helper renders those distinctions as solid selected and dashed other paths,
|
|
73
|
+
with support state, evidence, observations and journal available for inspection.
|
|
74
|
+
|
|
75
|
+
Sunshine at commit `beaab3faf2bab234069a8677fc627de2f0f01a3d` generated HTML from
|
|
76
|
+
the synthetic 1.7 BOM, including application/model names and all four services.
|
|
77
|
+
Its output omitted the profile relationship IDs, evidence and decision entries.
|
|
78
|
+
It is therefore not selected as the investigation visual. This is a file-level
|
|
79
|
+
consumer exercise, not a browser rendering or general 1.7 compatibility claim.
|
|
80
|
+
See [Sunshine source](https://github.com/CycloneDX/Sunshine/tree/beaab3faf2bab234069a8677fc627de2f0f01a3d).
|
|
81
|
+
|
|
82
|
+
The visual requires no scripts, remote assets or network. HTML escaping and a
|
|
83
|
+
restrictive content policy keep saved text inert. Browser visual QA is separately
|
|
84
|
+
tracked in the [verification record](skill-bom-verification.md). Validity does not
|
|
85
|
+
establish research accuracy, complete inventory, deployed controls or runtime use.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Researcher skill: working user manual
|
|
2
|
+
|
|
3
|
+
For installation and a short first trial, use the [tester guide](tester-candidate.md).
|
|
4
|
+
|
|
5
|
+
Candidate 0.1.13 saves the Surface with a brief, visual map and investigation
|
|
6
|
+
journal. This manual develops through actual use; the
|
|
7
|
+
[verification record](skill-bom-verification.md) distinguishes exercised behavior
|
|
8
|
+
from pending human acceptance. The earlier [0.1.12 rehearsal](skill-cyclonedx-verification.md)
|
|
9
|
+
used historical material and a different save format; it was not a neutral fresh
|
|
10
|
+
assessment.
|
|
11
|
+
|
|
12
|
+
## Start with what you have
|
|
13
|
+
|
|
14
|
+
Candidate 0.1.16 can begin with a short description or deployment document.
|
|
15
|
+
Researcher should show a provisional map, then help you provide one useful next
|
|
16
|
+
source. You do not need to prepare a Lab, repository or SSH connection first.
|
|
17
|
+
See [first-use examples and checks](first-use-access.md). A web Project can hold
|
|
18
|
+
uploaded sources; it does not automatically connect a laptop folder. Saving and
|
|
19
|
+
live access depend on the tools available in the current chat.
|
|
20
|
+
|
|
21
|
+
## Start with your question and sources
|
|
22
|
+
|
|
23
|
+
Open a fresh chat with the Researcher and explicitly supply a checkout, source
|
|
24
|
+
pack or permitted documentation. You do not need to classify the Surface.
|
|
25
|
+
|
|
26
|
+
> Explain the AI-relevant components and paths in this source for a security
|
|
27
|
+
> engineer. Save the Surface in this folder and maintain an investigation journal
|
|
28
|
+
> as we go. Show me what is known, what remains uncertain and useful next steps.
|
|
29
|
+
|
|
30
|
+
Expect a useful initial plan and a shallow map, then evidence-driven investigation.
|
|
31
|
+
The Researcher uses this chat's supplied sources. It should not search old chats or
|
|
32
|
+
vault research automatically. If the host supplies recognizable historical context,
|
|
33
|
+
it should disclose that context; ask it to exclude it when inappropriate. This
|
|
34
|
+
is not a promise that the host has no memory.
|
|
35
|
+
|
|
36
|
+
## Start with an existing system
|
|
37
|
+
|
|
38
|
+
If your question concerns a running composition, identify the instance and the
|
|
39
|
+
read-only access you permit. Supply relevant remote repositories, documents or
|
|
40
|
+
URLs through tools available in your Codex/ChatGPT host. A URL alone does not
|
|
41
|
+
provide private access, and a local checkout may describe only one component.
|
|
42
|
+
Candidate 0.1.15 follows this [instance-first workflow](instance-first-research.md).
|
|
43
|
+
|
|
44
|
+
> Understand this running system using the host access I have provided. Explain
|
|
45
|
+
> its components and connections, what is configured, what has been observed and
|
|
46
|
+
> what remains untested. Keep inspection read-only and save the Surface here.
|
|
47
|
+
|
|
48
|
+
Expect partial progress when an integration cannot be inspected. Researcher does
|
|
49
|
+
not start a service, sign in for you or send a test prompt to complete the graph.
|
|
50
|
+
On a later visit, it distinguishes actual target changes from newly learned facts
|
|
51
|
+
and missing access. The existing source-only workflow remains available.
|
|
52
|
+
|
|
53
|
+
## Inspect the developing Surface
|
|
54
|
+
|
|
55
|
+
Open the latest brief for the current explanation, the HTML map for paths and
|
|
56
|
+
expandable evidence, and the journal for the investigation journey. The Researcher
|
|
57
|
+
should provide the working folder and absolute file links without changing projects.
|
|
58
|
+
The journal retains scope, available evidence, findings, choices, questions,
|
|
59
|
+
diversions, deferred paths and reasons. Each next step explains its purpose and
|
|
60
|
+
needed access. You can inspect the whole map, redirect or stop at any time.
|
|
61
|
+
|
|
62
|
+
A supported database is a possibility; it is not necessarily the selected target.
|
|
63
|
+
Safe static configuration may establish selection, while a placeholder cannot.
|
|
64
|
+
Missing configuration means unknown selection. Solid paths are selected; dashed
|
|
65
|
+
paths require inspecting their support/selection details. Dated observed use is
|
|
66
|
+
separate. Optional does not mean weak evidence.
|
|
67
|
+
|
|
68
|
+
## Redirect and save
|
|
69
|
+
|
|
70
|
+
> Pause this path and investigate authentication first. Keep the deferred work,
|
|
71
|
+
> explain what access would help, and save the updated Surface.
|
|
72
|
+
|
|
73
|
+
Expect the choice and its reason in the journal, useful next options and a new
|
|
74
|
+
numbered revision. Previous files remain unchanged. Saving generates a brief,
|
|
75
|
+
map and journal from the same Surface; there is no separate native data authority.
|
|
76
|
+
The technical file is CycloneDX 1.7 with a bounded Surface profile. Ordinary users
|
|
77
|
+
need not choose that format or ask for a separate export.
|
|
78
|
+
|
|
79
|
+
## Return in a fresh chat
|
|
80
|
+
|
|
81
|
+
Supply the latest `surface.cdx.json` and selected sources. The BOM alone retains
|
|
82
|
+
relationships, evidence, choices, uncertainty and the investigation journey.
|
|
83
|
+
|
|
84
|
+
> Continue this Surface. What did I choose, what remains uncertain, and what
|
|
85
|
+
> should we investigate next? Keep earlier decisions and revisions.
|
|
86
|
+
|
|
87
|
+
The Researcher reads the supplied Surface, re-establishes access and tells you
|
|
88
|
+
when evidence cannot be refreshed. A new observation does not rewrite old ones.
|
|
89
|
+
If you edit a generated journal, supply that edited folder and ask to reconcile
|
|
90
|
+
it. The Researcher treats edits as proposals, records accepted changes in a new
|
|
91
|
+
revision and preserves the edited original. It must not silently overwrite it.
|
|
92
|
+
|
|
93
|
+
Old native/exchange saves remain readable when deliberately supplied. Migration
|
|
94
|
+
requires reviewing their evidence and recording limits; no automatic lossless
|
|
95
|
+
conversion is claimed. See the [format details](skill-cyclonedx.md).
|
|
96
|
+
|
|
97
|
+
## What the fresh rehearsal showed
|
|
98
|
+
|
|
99
|
+
The installed Researcher saved an initial plan before inspecting sources, then a
|
|
100
|
+
second revision with the partial graph and next options. It worked from the
|
|
101
|
+
explicitly supplied checkout, without the old operational notes. It reported that
|
|
102
|
+
Git inspection was unavailable in its session and used inspected-file hashes.
|
|
103
|
+
That is a useful distinction: source identity can be bounded without pretending
|
|
104
|
+
the entire checkout or deployment has been verified.
|
|
105
|
+
|
|
106
|
+
A scripted user diversion successfully moved the investigation to authentication.
|
|
107
|
+
The journal kept the tool/document paths as deferred, with reasons, and retained
|
|
108
|
+
the choice as a rehearsal decision. Earlier files were unchanged. The agent's
|
|
109
|
+
presentation check initially missed a setting name because Markdown escaped its
|
|
110
|
+
underscores; it normalized that escaping and completed readback. If a check fails,
|
|
111
|
+
ask what failed and how readback was verified, rather than accepting a bare success
|
|
112
|
+
claim.
|
|
113
|
+
|
|
114
|
+
The fresh continuation received only a copied BOM and source access. It recovered
|
|
115
|
+
the authentication-first choice and deferred work, proposed two next steps with
|
|
116
|
+
access requirements, and saved another revision. Earlier files, relationships and
|
|
117
|
+
source evidence remained intact. This exercises the ordinary “continue this
|
|
118
|
+
Surface” interaction; human visual review and acceptance remain separate.
|
|
119
|
+
|
|
120
|
+
## Report your check
|
|
121
|
+
|
|
122
|
+
Pass when the brief is useful, evidence is inspectable, choices survive reopening
|
|
123
|
+
and earlier files remain intact. Fail for invented relationships, lost decisions,
|
|
124
|
+
missing state or unsupported claims of observed use. Blocked means a prerequisite
|
|
125
|
+
such as source access or Node is unavailable. Return the interaction and relevant
|
|
126
|
+
file paths without secrets. Agent rehearsals do not substitute for your acceptance.
|
|
127
|
+
|
|
128
|
+
The Researcher describes and investigates; it does not deploy, attack, certify or
|
|
129
|
+
score the target. A schema check is not evidence that a selected connection works.
|