@n8r/surface 0.0.0-stage → 0.1.0-experimental.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/LICENSE-DOCS +395 -0
- package/LICENSING.md +36 -0
- package/README.md +207 -2
- package/dist/activity.d.ts +16 -0
- package/dist/activity.js +44 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +412 -0
- package/dist/codec.d.ts +6 -0
- package/dist/codec.js +56 -0
- package/dist/codex.d.ts +72 -0
- package/dist/codex.js +526 -0
- package/dist/contracts.d.ts +235 -0
- package/dist/contracts.js +1 -0
- package/dist/cyclonedx-schemas/bom-1.7.schema.json +6700 -0
- package/dist/cyclonedx-schemas/cryptography-defs.schema.json +576 -0
- package/dist/cyclonedx-schemas/jsf-0.82.schema.json +240 -0
- package/dist/cyclonedx-schemas/spdx.schema.json +786 -0
- package/dist/cyclonedx-validation.d.ts +1 -0
- package/dist/cyclonedx-validation.js +45 -0
- package/dist/html.d.ts +5 -0
- package/dist/html.js +74 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +5 -0
- package/dist/notes.d.ts +52 -0
- package/dist/notes.js +184 -0
- package/dist/portable.d.ts +10 -0
- package/dist/portable.js +71 -0
- package/dist/recent.d.ts +9 -0
- package/dist/recent.js +71 -0
- package/dist/revisions.d.ts +2 -0
- package/dist/revisions.js +60 -0
- package/dist/settings.d.ts +23 -0
- package/dist/settings.js +100 -0
- package/dist/setup.d.ts +9 -0
- package/dist/setup.js +161 -0
- package/dist/skill-artifacts-cli.d.ts +1 -0
- package/dist/skill-artifacts-cli.js +13 -0
- package/dist/skill-artifacts.d.ts +15 -0
- package/dist/skill-artifacts.js +184 -0
- package/dist/skill-cyclonedx.d.ts +26 -0
- package/dist/skill-cyclonedx.js +214 -0
- package/dist/skill-presentation.d.ts +10 -0
- package/dist/skill-presentation.js +108 -0
- package/dist/skill-surface-cli.d.ts +1 -0
- package/dist/skill-surface-cli.js +37 -0
- package/dist/skill-surface-store.d.ts +7 -0
- package/dist/skill-surface-store.js +126 -0
- package/dist/source-tools.d.ts +102 -0
- package/dist/source-tools.js +201 -0
- package/dist/startup.d.ts +7 -0
- package/dist/startup.js +74 -0
- package/dist/surface-bom.d.ts +73 -0
- package/dist/surface-bom.js +139 -0
- package/dist/surface-draft.d.ts +22 -0
- package/dist/surface-draft.js +112 -0
- package/dist/surface-instructions.d.ts +3 -0
- package/dist/surface-instructions.js +32 -0
- package/dist/surface-overview.d.ts +15 -0
- package/dist/surface-overview.js +86 -0
- package/dist/surface-store.d.ts +34 -0
- package/dist/surface-store.js +213 -0
- package/dist/surface-view.d.ts +3 -0
- package/dist/surface-view.js +50 -0
- package/dist/validate.d.ts +4 -0
- package/dist/validate.js +482 -0
- package/docs/n8r-surface/README.md +133 -0
- package/docs/n8r-surface/cli-bundles.md +72 -0
- package/docs/n8r-surface/codex-research-transcript.md +51 -0
- package/docs/n8r-surface/codex-research-verification.md +176 -0
- package/docs/n8r-surface/command-outcomes.md +711 -0
- package/docs/n8r-surface/contracts.md +220 -0
- package/docs/n8r-surface/critical-path.md +184 -0
- package/docs/n8r-surface/design.md +289 -0
- package/docs/n8r-surface/first-use-access.md +143 -0
- package/docs/n8r-surface/first-use-overview.md +262 -0
- package/docs/n8r-surface/getting-started.md +74 -0
- package/docs/n8r-surface/guided-journey-verification.md +137 -0
- package/docs/n8r-surface/host-contract.md +176 -0
- package/docs/n8r-surface/implementation-decisions.md +96 -0
- package/docs/n8r-surface/instance-first-research.md +209 -0
- package/docs/n8r-surface/npm-distribution.md +107 -0
- package/docs/n8r-surface/npm-release.md +315 -0
- package/docs/n8r-surface/product-direction.md +327 -0
- package/docs/n8r-surface/recreation-handoff.md +117 -0
- package/docs/n8r-surface/researcher-discovery.md +157 -0
- package/docs/n8r-surface/researcher-prepared-check.md +117 -0
- package/docs/n8r-surface/researcher-reconciliation-trial.md +149 -0
- package/docs/n8r-surface/researcher-repository-check.md +95 -0
- package/docs/n8r-surface/researcher-skeleton-check.md +84 -0
- package/docs/n8r-surface/researcher-skill-verification.md +725 -0
- package/docs/n8r-surface/researcher-skill.md +309 -0
- package/docs/n8r-surface/researcher-vault.md +134 -0
- package/docs/n8r-surface/save-reopen-transcript.md +211 -0
- package/docs/n8r-surface/save-reopen-verification.md +152 -0
- package/docs/n8r-surface/security-assurance-strategy.md +267 -0
- package/docs/n8r-surface/skill-bom-verification.md +142 -0
- package/docs/n8r-surface/skill-cyclonedx-verification.md +144 -0
- package/docs/n8r-surface/skill-cyclonedx.md +85 -0
- package/docs/n8r-surface/skill-manual.md +129 -0
- package/docs/n8r-surface/skill-surface-artifacts.md +234 -0
- package/docs/n8r-surface/skill-usefulness-verification.md +135 -0
- package/docs/n8r-surface/skill-workspace-automation.md +359 -0
- package/docs/n8r-surface/startup-human-check.md +172 -0
- package/docs/n8r-surface/startup-verification.md +161 -0
- package/docs/n8r-surface/startup.md +151 -0
- package/docs/n8r-surface/surface-description-contract.md +224 -0
- package/docs/n8r-surface/surface-descriptions.md +173 -0
- package/docs/n8r-surface/surface-relationships.md +231 -0
- package/docs/n8r-surface/surface-revisions-transcript.md +552 -0
- package/docs/n8r-surface/surface-revisions-verification.md +161 -0
- package/docs/n8r-surface/tester-candidate.md +158 -0
- package/docs/n8r-surface/vault-setup-verification.md +210 -0
- package/docs/n8r-surface/verification.md +117 -0
- package/docs/n8r-surface/versioning.md +172 -0
- package/docs/n8r-surface/workspace-human-check.md +101 -0
- package/docs/n8r-surface/workspace-installation.md +68 -0
- package/docs/n8r-surface/workspace-verification.md +350 -0
- package/docs/n8r-surface/workspace.md +83 -0
- package/examples/researcher/README.md +100 -0
- package/examples/researcher/composed.surface.json +430 -0
- package/examples/researcher/composed.surface.yaml +283 -0
- package/examples/researcher/cyclonedx/configured/README.md +7 -0
- package/examples/researcher/cyclonedx/configured/manifest.json +10 -0
- package/examples/researcher/cyclonedx/configured/mapping.json +323 -0
- package/examples/researcher/cyclonedx/configured/surface-records.json +1275 -0
- package/examples/researcher/cyclonedx/configured/surface.cdx.json +79 -0
- package/examples/researcher/descriptions/README.md +29 -0
- package/examples/researcher/descriptions/bound-r1.json +141 -0
- package/examples/researcher/descriptions/bound-r2.json +153 -0
- package/examples/researcher/descriptions/capability.json +167 -0
- package/examples/researcher/descriptions/research-r1.json +153 -0
- package/examples/researcher/descriptions/research-r2.json +157 -0
- package/examples/researcher/descriptions/sources.md +24 -0
- package/examples/researcher/harbor-r1.research.html +193 -0
- package/examples/researcher/harbor-r2.research.html +226 -0
- package/examples/researcher/lumen-manual-edit.pending.html +271 -0
- package/examples/researcher/lumen-r1.research.html +271 -0
- package/examples/researcher/lumen-r2.research.html +280 -0
- package/examples/researcher/relationships/README.md +34 -0
- package/examples/researcher/relationships/bound-r1.json +346 -0
- package/examples/researcher/relationships/bound-r2.json +358 -0
- package/examples/researcher/relationships/capability.json +325 -0
- package/examples/researcher/relationships/config/assistant.env.example +4 -0
- package/examples/researcher/relationships/research-r1.json +300 -0
- package/examples/researcher/relationships/research-r2.json +304 -0
- package/examples/researcher/relationships/sources.md +38 -0
- package/examples/researcher/sources/harbor-api.md +16 -0
- package/examples/researcher/sources/harbor-auth.md +8 -0
- package/examples/researcher/sources/lumen-guide.md +28 -0
- package/examples/researcher/sources/lumen-settings.md +9 -0
- package/examples/researcher/surface-bom/README.md +17 -0
- package/examples/researcher/surface-bom/initial.cdx.json +188 -0
- package/package.json +45 -4
- package/plugins/n8r-surface/.codex-plugin/plugin.json +31 -0
- package/plugins/n8r-surface/LICENSE +202 -0
- package/plugins/n8r-surface/LICENSE-DOCS +395 -0
- package/plugins/n8r-surface/LICENSING.md +39 -0
- package/plugins/n8r-surface/assets/icon.svg +5 -0
- package/plugins/n8r-surface/plugin.json +27 -0
- package/plugins/n8r-surface/skills/research/SKILL.md +163 -0
- package/plugins/n8r-surface/skills/research/agents/openai.yaml +4 -0
- package/plugins/n8r-surface/skills/research/references/artifacts.md +152 -0
- package/plugins/n8r-surface/skills/research/references/cyclonedx.md +207 -0
- package/plugins/n8r-surface/skills/research/references/discovery-map.md +178 -0
- package/plugins/n8r-surface/skills/research/references/examples/bound-r1.json +346 -0
- package/plugins/n8r-surface/skills/research/references/examples/capability.json +325 -0
- package/plugins/n8r-surface/skills/research/references/examples/research-r1.json +300 -0
- package/plugins/n8r-surface/skills/research/references/examples/surface.cdx.json +188 -0
- package/plugins/n8r-surface/skills/research/references/first-use-access.md +97 -0
- package/plugins/n8r-surface/skills/research/references/first-use-overview.md +101 -0
- package/plugins/n8r-surface/skills/research/references/instance-first.md +125 -0
- package/plugins/n8r-surface/skills/research/references/model-meanings.md +55 -0
- package/plugins/n8r-surface/skills/research/references/skeleton-surface.md +105 -0
- package/plugins/n8r-surface/skills/research/references/working-notes.md +121 -0
- package/plugins/n8r-surface/skills/research/references/workspace.md +89 -0
- package/plugins/n8r-surface/skills/research/scripts/THIRD-PARTY-NOTICES.txt +273 -0
- package/plugins/n8r-surface/skills/research/scripts/artifacts.mjs +8348 -0
- package/plugins/n8r-surface/skills/research/scripts/cyclonedx.mjs +28113 -0
- package/plugins/n8r-surface/skills/research/scripts/surface.mjs +27800 -0
- package/plugins/n8r-surface/skills/research/scripts/workspace.mjs +120 -0
|
@@ -0,0 +1,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.
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# Standalone installed-skill Surface artifacts
|
|
2
|
+
|
|
3
|
+
Issue [#51](https://github.com/injectionator/n8r-surface/issues/51) adds a standalone
|
|
4
|
+
artifact helper, now bundled in candidate skill 0.1.11. The host researches sources and prepares
|
|
5
|
+
JSON; the bundled helper checks it, renders research HTML and a brief, and saves
|
|
6
|
+
a new revision directory. It never invokes the `n8r-surface` CLI, reads source
|
|
7
|
+
configuration, connects to a model or makes network requests.
|
|
8
|
+
|
|
9
|
+
## Task and implementation boundary
|
|
10
|
+
|
|
11
|
+
**Given:** the installed candidate, Node.js 22/24/26, an authorized workspace and
|
|
12
|
+
permitted source evidence. **When:** the user requests a saved Capability or Bound
|
|
13
|
+
Surface. **Then:** the host provides openable brief, research HTML and 0.3 JSON,
|
|
14
|
+
with pinned dependency artifacts and a hash manifest. A fresh chat can read the
|
|
15
|
+
saved directory and save a checked successor while preserving the predecessor.
|
|
16
|
+
|
|
17
|
+
The current [relationship contract](surface-relationships.md) supplies validation,
|
|
18
|
+
evidence references and revision rules. The helper reuses that implementation;
|
|
19
|
+
JSON decoding retains the existing strict codec. A development-only esbuild step
|
|
20
|
+
bundles the helper and its YAML parser dependency into one offline Node module.
|
|
21
|
+
The parser's licence is retained alongside it. There is no runtime dependency
|
|
22
|
+
installation. The library reader accepts both presentation generations; the CLI persistence output remains unchanged.
|
|
23
|
+
|
|
24
|
+
`npm run build:skill` regenerates the retained bundle; `npm run check:skill`
|
|
25
|
+
checks exact reproducibility and runs in `npm test`. The helper entrypoint is
|
|
26
|
+
`plugins/n8r-surface/skills/research/scripts/artifacts.mjs`; its host-facing
|
|
27
|
+
[procedure](../../plugins/n8r-surface/skills/research/references/artifacts.md)
|
|
28
|
+
and synthetic examples ship together. Bundled examples illustrate shapes, not
|
|
29
|
+
findings. No helper is allowed to invent research or infer instance bindings.
|
|
30
|
+
|
|
31
|
+
Save creates a new directory exclusively. Existing directories and symlink
|
|
32
|
+
ancestry are refused. Parent directories must already exist. Files use private
|
|
33
|
+
permissions. An I/O failure can leave an incomplete directory for inspection;
|
|
34
|
+
it is never reported as success or overwritten on retry. Stable directory topology
|
|
35
|
+
is required during synchronous operations; this is not a hostile-filesystem sandbox.
|
|
36
|
+
The manifest detects accidental changes, not an attacker able to rewrite all
|
|
37
|
+
files and hashes. No source file, service, credential or predecessor is modified.
|
|
38
|
+
|
|
39
|
+
Privacy starts before source intake: use permitted sanitized projections and
|
|
40
|
+
never print or stage raw settings. The helper rejects recognizable URLs, addresses,
|
|
41
|
+
credential assignments and private paths, with fixed diagnostics that omit input
|
|
42
|
+
values. This is defense in depth, not a guarantee that arbitrary names or opaque
|
|
43
|
+
secrets can be recognized. Human/source review remains necessary. Safe configuration
|
|
44
|
+
owner/key/location and product/role identity remain useful without setting values.
|
|
45
|
+
|
|
46
|
+
## Baseline evidence
|
|
47
|
+
|
|
48
|
+
On 8 November 2026, installed skill 0.1.9 was invoked through Codex CLI 0.166.0
|
|
49
|
+
app-server with a synthetic assistant source and this request:
|
|
50
|
+
|
|
51
|
+
> Use product.md to create a Capability Surface. Save the brief, research HTML and
|
|
52
|
+
> checked structured Surface in this workspace. The skill must work standalone
|
|
53
|
+
> without invoking n8r-surface CLI.
|
|
54
|
+
|
|
55
|
+
It produced provisional brief/HTML/JSON/check files, explicitly reporting that
|
|
56
|
+
contract validation was unavailable because no validator was bundled. This is
|
|
57
|
+
an actual installed baseline, not an inferred test failure. Raw receipts and
|
|
58
|
+
source/output bytes are retained privately in the selected vault's run folder.
|
|
59
|
+
|
|
60
|
+
## Candidate rehearsal and checks
|
|
61
|
+
|
|
62
|
+
A local marketplace installed candidate 0.1.10 in an isolated test home. Codex
|
|
63
|
+
CLI 0.166.0 app-server used fresh ephemeral sessions, the existing ChatGPT sign-in
|
|
64
|
+
model `gpt-6-astra` and Node 26.13.0. The first candidate run reached the existing workspace runner's
|
|
65
|
+
120-second deadline while correcting a draft; no success was claimed. The
|
|
66
|
+
follow-up used the same Host harness with a private 600-second turn deadline.
|
|
67
|
+
This is agent rehearsal, not a new public acceptance-runner mode or desktop proof.
|
|
68
|
+
|
|
69
|
+
The installed host then produced Capability, Bound and fresh-chat Bound-successor
|
|
70
|
+
artifacts from supplied synthetic sources. It used the bundled helper without the
|
|
71
|
+
product CLI. Independent readback checked saved bytes, source hashes, possible
|
|
72
|
+
versus configured states, concrete targets, pinned Capability, stable identities,
|
|
73
|
+
parent digests and retained human deferral. Prior files remained byte-identical.
|
|
74
|
+
Synthetic sensitive URL/address/username/password sentinels were confined to the
|
|
75
|
+
owned raw source fixture; scanning generated files and retained receipts found no
|
|
76
|
+
copies. The host selected only permitted fields before retaining configuration.
|
|
77
|
+
|
|
78
|
+
The synthetic fixture supplements the human task below with `instance.json`
|
|
79
|
+
containing `instance`, `revision`, `modelService`, `configured` and sensitive
|
|
80
|
+
sentinel fields. The interaction explicitly permits only the first four fields.
|
|
81
|
+
The raw fixture is test input, not a retained production evidence store. The
|
|
82
|
+
second source changes the model service identity; no researcher findings were
|
|
83
|
+
prewritten by the developing agent.
|
|
84
|
+
|
|
85
|
+
Focused checks cover standalone execution outside the checkout, Capability/Bound
|
|
86
|
+
readback, missing references, orphan revisions, collisions, symlinks, edited HTML,
|
|
87
|
+
privacy refusals, lost decisions, rewritten pinned dependencies, duplicate JSON
|
|
88
|
+
members and value-free errors. Three independent review findings gained failing
|
|
89
|
+
then passing regressions. A final error-path regression prevents the exported
|
|
90
|
+
digest helper from echoing unsafe property names. All opaque extensions are
|
|
91
|
+
refused in this bounded host; the general library's earlier contracts remain intact.
|
|
92
|
+
|
|
93
|
+
The final installed candidate also saved a further fresh-chat successor selecting
|
|
94
|
+
Model Service C. Independent checks confirmed source hashes, both parent digests,
|
|
95
|
+
unchanged prior artifacts and the retained decision. All 20 installed files matched
|
|
96
|
+
the candidate source. Final instruction digest:
|
|
97
|
+
`sha256:a3480402aef42c93cb4d7e77fbf157b33dab6eaedb6b97f8ef1db1022cfaa58b`.
|
|
98
|
+
Standalone helper SHA-256:
|
|
99
|
+
`aec2dc355b5d33661ff7c3250a1a3edb3e31bf4ea22e614816c9593da37d3019`.
|
|
100
|
+
The final sentinel scan covered 72 generated/retained files, excluding the owned
|
|
101
|
+
raw source fixture and the initial isolated installation cache, with zero matches.
|
|
102
|
+
|
|
103
|
+
Private run records retain installation/source file digests, interaction receipts,
|
|
104
|
+
independent readback and preservation inventories. The final PR identifies the
|
|
105
|
+
exact source revision and final test counts. Neither the first timed-out attempt
|
|
106
|
+
nor fixture/package checks are reported as human acceptance. The broader
|
|
107
|
+
unrelated-product journey and human acceptance remain #52.
|
|
108
|
+
|
|
109
|
+
## Human verification task list
|
|
110
|
+
|
|
111
|
+
Maintainer preparation: identify the installed 0.1.11 candidate and file digests,
|
|
112
|
+
record Codex/model/Node versions, and supply an empty writable workspace containing
|
|
113
|
+
`product.md` with this synthetic source. Use the
|
|
114
|
+
[isolated installation procedure](workspace-installation.md) with the candidate's
|
|
115
|
+
commit and version; it does not replace the normal desktop installation. A tester
|
|
116
|
+
needs the identified skill available in their selected host.
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
# Synthetic assistant
|
|
120
|
+
Revision: fixture-1
|
|
121
|
+
The assistant can send prompts to an OpenAI-compatible model API using HTTPS.
|
|
122
|
+
MODEL_ENDPOINT is documented in config/example.env.
|
|
123
|
+
No instance configuration is supplied.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
- [ ] Open the prepared workspace in Codex, invoke the installed Researcher, and
|
|
127
|
+
ask: “Use product.md to create a Capability Surface. Save the brief, research
|
|
128
|
+
HTML and checked structured Surface in capability-001.” Open all returned
|
|
129
|
+
links. Expect the supported model-API connection, explicit gaps and no selected
|
|
130
|
+
instance target. There must be actual saved files and successful readback.
|
|
131
|
+
- [ ] Supply a permitted summary: “For synthetic instance demo, configuration
|
|
132
|
+
revision 1 selects Model Service A for the model API. This establishes only
|
|
133
|
+
configuration, not runtime use.” Ask: “Save a Bound Surface in bound-001 using
|
|
134
|
+
this summary and the saved Capability. Record my decision to keep runtime
|
|
135
|
+
verification deferred.” Expect the same role relationship, a separate concrete
|
|
136
|
+
target, source evidence for configuration, and a separate human decision.
|
|
137
|
+
- [ ] Start a fresh chat with the same workspace. Supply: “Configuration revision
|
|
138
|
+
2 changes that model API target to Model Service B.” Ask: “Reopen bound-001
|
|
139
|
+
and save a successor in bound-002 reflecting this change.” Open both revisions.
|
|
140
|
+
Expect stable role/component identities, updated binding, preserved decision,
|
|
141
|
+
exact predecessor reference and unchanged prior files.
|
|
142
|
+
- [ ] Report **Pass / Fail / Blocked**, output links and the failing step if any.
|
|
143
|
+
IDs, dates and wording may vary. Broken links, unsupported bindings, leaked
|
|
144
|
+
values, lost decisions/history or success after a failed check are failures.
|
|
145
|
+
|
|
146
|
+
Technical evidence checks belong to the maintainer: read each directory with the
|
|
147
|
+
installed helper, verify source digests and consequential claims independently,
|
|
148
|
+
compare predecessor/source hashes and scan all outputs and receipts for synthetic
|
|
149
|
+
sensitive sentinels. Exit 0 plus `checked`/`saved-and-read-back` is required;
|
|
150
|
+
exit 1 is failure. Retain owned trial outputs for review. Cleanup is a separate
|
|
151
|
+
user decision and must never delete borrowed sources.
|
|
152
|
+
|
|
153
|
+
This bounded agent rehearsal is distinct from human acceptance. Issue #52 retains
|
|
154
|
+
the broader two-product journey, human corrections, usefulness and host acceptance.
|
|
155
|
+
|
|
156
|
+
## Human-readable presentation (candidate 0.1.11)
|
|
157
|
+
|
|
158
|
+
The 0.1.10 rehearsal exposed a usefulness failure: HTML listed contract fields,
|
|
159
|
+
and the brief directed readers elsewhere for evidence. Candidate 0.1.11 renders
|
|
160
|
+
a shared narrative in both formats: current picture, what changed, why it
|
|
161
|
+
matters, evidence locators, human decisions and remaining unknowns. Impact is
|
|
162
|
+
limited to the connection's documented purpose and configured selection; it does
|
|
163
|
+
not invent business outcomes or runtime success. Conflicting claims remain visible.
|
|
164
|
+
|
|
165
|
+
A previous target is compared only when the exact parent research record is in
|
|
166
|
+
the bundle. Otherwise the report says that the comparison is unavailable. Full
|
|
167
|
+
records, source coverage and hashes remain accessible in expandable HTML details.
|
|
168
|
+
The report uses local styles, no scripts, remote fonts or network resources.
|
|
169
|
+
|
|
170
|
+
Saved bundles now use manifest version 2 and HTML presentation 1. Research and
|
|
171
|
+
Surface contracts and canonical digests do not change. The reader still accepts
|
|
172
|
+
unchanged manifest-1 bundles and their original brief/HTML. Both presentations
|
|
173
|
+
reject visible edits; updating a manifest hash alone cannot legitimize prose that
|
|
174
|
+
disagrees with the embedded data. New HTML also checks its embedded Surface and
|
|
175
|
+
dependency context against the accompanying files. Older 0.1.10 helpers cannot
|
|
176
|
+
read the new presentation; install 0.1.11 before continuing it.
|
|
177
|
+
|
|
178
|
+
### Short human check
|
|
179
|
+
|
|
180
|
+
Prerequisite: the identified 0.1.11 candidate and an existing checked Bound
|
|
181
|
+
successor and its predecessor, produced by the task list above. Keep the original
|
|
182
|
+
files. In the same workspace, ask the Researcher:
|
|
183
|
+
|
|
184
|
+
> Read bound-002 and its predecessor bound-001 using the bundled helper. Save the
|
|
185
|
+
> same checked bundle with the new readable presentation in bound-002-readable.
|
|
186
|
+
> Preserve all research and Surface data, decisions and original files. This is
|
|
187
|
+
> a presentation copy, not another research revision. Show the HTML and brief.
|
|
188
|
+
|
|
189
|
+
- [ ] Open the returned HTML. The configured target should be the first useful
|
|
190
|
+
statement. “What changed” should name the previous and current targets when
|
|
191
|
+
the exact parent research is retained.
|
|
192
|
+
- [ ] Read “Why it matters” and “Evidence”. Expect the documented connection
|
|
193
|
+
purpose/integration, configuration-versus-runtime limit and source locators.
|
|
194
|
+
No new source findings or business/security assurances should appear.
|
|
195
|
+
- [ ] Read decisions and unknowns, then expand technical details. The deferred
|
|
196
|
+
decision, unresolved questions and original checked data must remain available.
|
|
197
|
+
- [ ] Open the brief. Expect the same substantive explanation without needing to
|
|
198
|
+
decode identifiers or open the JSON to discover the conclusion.
|
|
199
|
+
- [ ] Report **Pass / Fail / Blocked**, the two output links and any unclear
|
|
200
|
+
wording. Visual usefulness requires human review, separate from data checks.
|
|
201
|
+
|
|
202
|
+
Maintainer evidence: helper save/read must exit 0; compare canonical research,
|
|
203
|
+
Surface and dependency data and byte hashes of all original files. Only HTML,
|
|
204
|
+
brief and their new manifest may differ in the presentation copy. Retain the
|
|
205
|
+
copy for review; no cleanup or registry publication is part of this task.
|
|
206
|
+
|
|
207
|
+
### Presentation evidence and limits
|
|
208
|
+
|
|
209
|
+
The copied standalone 0.1.11 helper re-rendered the previously generated Bound
|
|
210
|
+
successor without new research. Save and independent read exited 0. Research,
|
|
211
|
+
Surface and dependency data compared equal; Surface/dependency JSON bytes were
|
|
212
|
+
identical, and all 29 files present before the presentation copy were unchanged.
|
|
213
|
+
The new brief identifies the old/current targets, source locators and retained
|
|
214
|
+
deferral. Raw receipts remain private. This is helper rehearsal, not a fresh
|
|
215
|
+
installed-skill conversation or human usefulness acceptance. Browser policy
|
|
216
|
+
blocked the local-file preview, so no screenshot or visual acceptance is claimed.
|
|
217
|
+
|
|
218
|
+
Six presentation regressions cover data preservation, legacy reopening, visible
|
|
219
|
+
edits, manifest downgrade, equal-label target identities and conditional/exclusive
|
|
220
|
+
Capabilities. Independent review found the latter three issues before fixes;
|
|
221
|
+
regressions demonstrated each failure, then passed. The complete suite has 201
|
|
222
|
+
checks. Package preparation exposed stale version/digest expectations; those were
|
|
223
|
+
corrected. Concurrent cross-runtime tests collided on a shared temporary build
|
|
224
|
+
file; sequential rerunning passed. Broad usefulness remains the two-product
|
|
225
|
+
skill journey in #52, followed by CLI integration and separate Labs work.
|
|
226
|
+
|
|
227
|
+
## Two-product usefulness result
|
|
228
|
+
|
|
229
|
+
The [installed-skill usefulness check](skill-usefulness-verification.md) exercises
|
|
230
|
+
Capability, Bound and fresh-session revision on two pinned public source packs.
|
|
231
|
+
Both passed independent readback and preservation checks on 0.1.11 without skill
|
|
232
|
+
code changes. The record includes the initial test-instruction blocker and the
|
|
233
|
+
corrected retry. The user accepted this bounded skill verification on 8 November 2026; acceptance
|
|
234
|
+
is distinct from the agent rehearsal and does not imply an additional human run.
|