@n8r/surface 0.0.0-stage → 0.1.0-experimental.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE-DOCS +395 -0
  3. package/LICENSING.md +36 -0
  4. package/README.md +181 -2
  5. package/dist/activity.d.ts +16 -0
  6. package/dist/activity.js +44 -0
  7. package/dist/cli.d.ts +2 -0
  8. package/dist/cli.js +260 -0
  9. package/dist/codec.d.ts +4 -0
  10. package/dist/codec.js +41 -0
  11. package/dist/codex.d.ts +72 -0
  12. package/dist/codex.js +510 -0
  13. package/dist/contracts.d.ts +129 -0
  14. package/dist/contracts.js +1 -0
  15. package/dist/html.d.ts +5 -0
  16. package/dist/html.js +50 -0
  17. package/dist/index.d.ts +7 -0
  18. package/dist/index.js +5 -0
  19. package/dist/notes.d.ts +52 -0
  20. package/dist/notes.js +184 -0
  21. package/dist/portable.d.ts +10 -0
  22. package/dist/portable.js +71 -0
  23. package/dist/revisions.d.ts +2 -0
  24. package/dist/revisions.js +18 -0
  25. package/dist/settings.d.ts +23 -0
  26. package/dist/settings.js +100 -0
  27. package/dist/setup.d.ts +9 -0
  28. package/dist/setup.js +161 -0
  29. package/dist/source-tools.d.ts +102 -0
  30. package/dist/source-tools.js +201 -0
  31. package/dist/startup.d.ts +7 -0
  32. package/dist/startup.js +74 -0
  33. package/dist/surface-draft.d.ts +19 -0
  34. package/dist/surface-draft.js +95 -0
  35. package/dist/surface-instructions.d.ts +2 -0
  36. package/dist/surface-instructions.js +23 -0
  37. package/dist/surface-store.d.ts +36 -0
  38. package/dist/surface-store.js +181 -0
  39. package/dist/validate.d.ts +4 -0
  40. package/dist/validate.js +184 -0
  41. package/docs/n8r-surface/README.md +133 -0
  42. package/docs/n8r-surface/codex-research-transcript.md +51 -0
  43. package/docs/n8r-surface/codex-research-verification.md +176 -0
  44. package/docs/n8r-surface/command-outcomes.md +564 -0
  45. package/docs/n8r-surface/contracts.md +210 -0
  46. package/docs/n8r-surface/critical-path.md +163 -0
  47. package/docs/n8r-surface/design.md +289 -0
  48. package/docs/n8r-surface/getting-started.md +107 -0
  49. package/docs/n8r-surface/host-contract.md +176 -0
  50. package/docs/n8r-surface/implementation-decisions.md +96 -0
  51. package/docs/n8r-surface/npm-distribution.md +137 -0
  52. package/docs/n8r-surface/npm-release.md +188 -0
  53. package/docs/n8r-surface/recreation-handoff.md +117 -0
  54. package/docs/n8r-surface/researcher-discovery.md +157 -0
  55. package/docs/n8r-surface/researcher-prepared-check.md +117 -0
  56. package/docs/n8r-surface/researcher-reconciliation-trial.md +149 -0
  57. package/docs/n8r-surface/researcher-repository-check.md +95 -0
  58. package/docs/n8r-surface/researcher-skeleton-check.md +84 -0
  59. package/docs/n8r-surface/researcher-skill-verification.md +725 -0
  60. package/docs/n8r-surface/researcher-skill.md +255 -0
  61. package/docs/n8r-surface/researcher-vault.md +134 -0
  62. package/docs/n8r-surface/save-reopen-transcript.md +211 -0
  63. package/docs/n8r-surface/save-reopen-verification.md +152 -0
  64. package/docs/n8r-surface/startup-human-check.md +172 -0
  65. package/docs/n8r-surface/startup-verification.md +161 -0
  66. package/docs/n8r-surface/startup.md +151 -0
  67. package/docs/n8r-surface/surface-revisions-transcript.md +552 -0
  68. package/docs/n8r-surface/surface-revisions-verification.md +161 -0
  69. package/docs/n8r-surface/vault-setup-verification.md +210 -0
  70. package/docs/n8r-surface/verification.md +117 -0
  71. package/docs/n8r-surface/versioning.md +183 -0
  72. package/examples/researcher/README.md +92 -0
  73. package/examples/researcher/composed.surface.json +430 -0
  74. package/examples/researcher/composed.surface.yaml +283 -0
  75. package/examples/researcher/harbor-r1.research.html +193 -0
  76. package/examples/researcher/harbor-r2.research.html +226 -0
  77. package/examples/researcher/lumen-manual-edit.pending.html +271 -0
  78. package/examples/researcher/lumen-r1.research.html +271 -0
  79. package/examples/researcher/lumen-r2.research.html +280 -0
  80. package/examples/researcher/sources/harbor-api.md +16 -0
  81. package/examples/researcher/sources/harbor-auth.md +8 -0
  82. package/examples/researcher/sources/lumen-guide.md +28 -0
  83. package/examples/researcher/sources/lumen-settings.md +9 -0
  84. package/package.json +45 -4
  85. package/plugins/n8r-surface/.codex-plugin/plugin.json +31 -0
  86. package/plugins/n8r-surface/LICENSE +202 -0
  87. package/plugins/n8r-surface/LICENSE-DOCS +395 -0
  88. package/plugins/n8r-surface/LICENSING.md +36 -0
  89. package/plugins/n8r-surface/assets/icon.svg +5 -0
  90. package/plugins/n8r-surface/plugin.json +27 -0
  91. package/plugins/n8r-surface/skills/research/SKILL.md +122 -0
  92. package/plugins/n8r-surface/skills/research/agents/openai.yaml +4 -0
  93. package/plugins/n8r-surface/skills/research/references/discovery-map.md +160 -0
  94. package/plugins/n8r-surface/skills/research/references/model-meanings.md +55 -0
  95. package/plugins/n8r-surface/skills/research/references/skeleton-surface.md +105 -0
  96. package/plugins/n8r-surface/skills/research/references/working-notes.md +116 -0
@@ -0,0 +1,160 @@
1
+ # AI Surface discovery guide
2
+
3
+ The goal is an evidence-backed graph of AI-relevant components and connections,
4
+ not a complete application inventory. Follow how information enters, reaches
5
+ models/tools/data, and produces effects. Include supporting storage, identity,
6
+ infrastructure and observability when they explain those paths or boundaries.
7
+ Settings are supporting evidence: inspect them when they change a node, edge,
8
+ route, authority, data flow or a material uncertainty about the graph.
9
+
10
+ This is provisional research guidance within the AI Surface Model, not another
11
+ model, a universal schema or a mandatory list of components.
12
+
13
+ ## Start with the available evidence
14
+
15
+ Establish the task: **discover** a graph, **continue** saved research, or
16
+ **reconcile** an existing Surface with current evidence. Honor a bounded question.
17
+ For broad requests, identify the application boundary and shallow AI-related
18
+ connections before detailed subsystem research. Degree is relative to the start
19
+ node; follow a useful route beyond one hop without imposing a depth ceiling.
20
+
21
+ | Available material | Use and limit |
22
+ | --- | --- |
23
+ | Unknown folder | Inspect structure, entry points and manifests to locate evidence of AI relevance. Unread files and dependency names are clues, not findings. |
24
+ | Code without docs | Follow calls, configuration readers and dependencies relevant to graph edges; runtime state remains separate. |
25
+ | Docs without code | Use navigation, headings and examples to map documented capabilities; implementation and effective setup remain unverified. |
26
+ | Local/remote documentation | Follow relevant links into source or setup material. Record the URL, applicable version, section and inspection time; current vendor docs may describe another release. |
27
+ | Product guide or earlier research | Reuse navigation, evidence and gaps after checking identity, scope and revision. Distinguish inherited from rechecked findings. |
28
+ | Surface definition(s) | Establish each composition's identity and claims. Compare applicable claims; omitted detail is not absence. |
29
+ | Supplied configuration | Establish environment, revision, defaults and overrides when relevant. An example is not a selected setup; a file is not proof it was loaded. |
30
+ | Human input | Record scoped intent, corrections and decisions separately from source or runtime evidence. |
31
+ | Live UI/API observations | Identify the target environment and dated observed settings; reading a setting does not exercise its connection. |
32
+
33
+ Use what is available. Record unavailable, unreadable, excluded or truncated
34
+ material without inventing its contents. A locator does not grant access.
35
+ Enough evidence for the user's question, with visible gaps, is a useful stopping
36
+ point; obtaining every source type is not a completion requirement.
37
+
38
+ ## Reuse product knowledge
39
+
40
+ Look for related material in supplied notes, selected local libraries or a
41
+ connected collection that the host can actually search. Do not scan unrelated
42
+ folders/accounts or presume an n8r-labs connection. A simple index of versioned
43
+ documents and links is sufficient; this skill creates no registry service.
44
+
45
+ Distinguish a product guide (capabilities/navigation), a particular selected
46
+ Surface (composition), and research (evidence/decisions/gaps). Match repository
47
+ identity, forks, releases and scope rather than a display name alone. An older
48
+ guide can direct reads without establishing current behavior. Several Surfaces
49
+ may select different providers; never union their selections into one deployment.
50
+ Retain provenance and contradictions. A library's origin is not automatic
51
+ authority, and a note repeating a source is not independent corroboration.
52
+
53
+ When saving, retain reusable product findings separately from private deployment
54
+ choices. Making private research public requires its own authorization.
55
+
56
+ ## Follow graph clues
57
+
58
+ Documentation indexes and navigation often provide the first paths. Follow
59
+ relevant headings, setup examples and links into code. When links are absent,
60
+ search distinctive configuration keys, symbols and route names. If documentation
61
+ is absent, use entry points and manifests. Read scripts as evidence; do not run
62
+ them merely to discover architecture.
63
+
64
+ | Area | Clue leads to next useful read |
65
+ | --- | --- |
66
+ | Inputs and effects | Web/chat UI, API, CLI, bot, upload, webhook or scheduled task → handler → AI processing and returned result/action. A generic UI alone is not AI evidence. |
67
+ | Models and inference | Inference call or endpoint → configuration source → proxy/router/aggregator → service → model identity. Cover embeddings, speech, vision and other AI operations, not only chat. A provider SDK or compatible API does not identify the service behind a custom URL. |
68
+ | Agents and orchestration | Prompt/workflow/agent definition → context assembly, model selection, delegation, tools and stopping conditions relevant to connections. |
69
+ | Tools and actions | MCP or other integration → host/client/server role, exposed/consumed capability, transport, executor, target and authority. SDK installation alone does not establish a configured connection. |
70
+ | Knowledge and retrieval | Upload/source connector → parsing/chunking → embeddings/index/store → retrieval/reranking → model context. RAG need not be a separate server; identify who provides and consumes each capability. |
71
+ | State and storage | Conversation, memory or document persistence call → storage adapter → configured store. Include a database such as MongoDB for its AI-related data role; avoid unrelated application tables. |
72
+ | Identity and controls | Login/provider gate, permission check or approval → identity/authority boundary governing relevant access and actions. OIDC enablement and issuer can explain an edge; credential values do not belong in the graph. |
73
+ | Observability and evaluation | Tracing/evaluation hook → instrumentation → destination and covered AI operations. A logging dependency alone does not establish a live telemetry connection. |
74
+ | Software identity and delivery | Manifest, lockfile, entry point, container or deployment declaration → relevant component/version/runtime and configuration binding. These support graph identity; do not enumerate every package or setting. |
75
+
76
+ For example, `package.json` suggests JavaScript package/tooling context. Inspect
77
+ scripts, engines, workspaces and relevant imports before inferring a runtime;
78
+ it may describe browser tooling alongside a Python service. Keep application,
79
+ package, source revision, deployed build and model versions distinct.
80
+
81
+ A CRM can have no identified AI capability in the inspected scope, or participate
82
+ as an evidenced tool/data source in a larger AI Surface. Neither a database nor a
83
+ generic API alone establishes AI membership. Report scoped negative findings and
84
+ insufficient evidence distinctly; do not force an AI graph into every repository.
85
+
86
+ ## Reconcile a Surface with current sources
87
+
88
+ Preserve the supplied bytes and establish format/version, vocabulary, component
89
+ identity, scope and intended versus observed meaning. Only claim validation for
90
+ a supported format actually checked. Unrecognized meanings remain unsupported;
91
+ successful JSON parsing does not make arbitrary Surface JSON understood.
92
+
93
+ Use the graph as the comparison spine. For each relevant node/edge or supporting
94
+ setting, report: prior claim and basis; current evidence and applicability;
95
+ agreement, difference, additional discovery, conflict, unknown or unsupported
96
+ meaning; and the next useful check. These are prose comparison outcomes, not new
97
+ contract states. Missing search hits or omitted attributes do not establish that
98
+ a node/edge was removed. Preserve stable identities where evidence supports them.
99
+
100
+ Compare like with like: documented support, implemented support, human intent,
101
+ declared configuration, observed effective configuration, reachability and
102
+ exercised behavior answer different questions. Example: a baseline selects OIDC;
103
+ current code supports OIDC; a staging file declares it disabled. That can establish
104
+ a declared difference for the same staging target, but not its running state or
105
+ that the historical baseline was wrong. Locate applicable override/effective
106
+ evidence if that distinction matters. Do not dump unrelated settings into the diff.
107
+
108
+ Save the comparison as research. A proposed successor must preserve the original,
109
+ its evidence and unresolved claims. This skill does not emit validated experimental
110
+ Surface JSON/HTML or modify deployments.
111
+
112
+ ## Inspect live connections with the human
113
+
114
+ Use live inspection when the user's task calls for it and the host provides
115
+ authorized access. Establish the selected application, environment/tenant and
116
+ question from available context; ask only for missing information needed to
117
+ identify the target. Prefer a suitable connected read tool or documented admin
118
+ API; use browser/computer tools where they provide the required access. Respect
119
+ the tools' scopes and restrictions. A blocked route must not be bypassed.
120
+
121
+ Let the user complete password, MFA or private sign-in flows directly using the
122
+ host's supported handoff. Do not ask for credentials in chat, extract sessions,
123
+ reveal masked secrets, export credentials or copy passwords/keys/tokens into
124
+ notes. Prefer narrow nonsecret fields or settings views to raw configuration
125
+ dumps. If incidental secrets appear, do not repeat or retain them. Avoid saving
126
+ screenshots or payloads containing secrets; record a sanitized observation and
127
+ its location, with the resulting evidence limitation.
128
+
129
+ Ask graph questions: is this connection enabled; which service/issuer is the
130
+ target; what role, protocol and authority does it use? A masked configured-secret
131
+ indicator may establish presence, never credential validity. Keep target identity
132
+ as specific as needed in private notes; redact sensitive infrastructure details
133
+ from portable/shared output and keep the stable component ID.
134
+
135
+ Remain read-only: do not toggle/save settings, reveal secrets, rotate keys,
136
+ create clients or invoke a connection test as part of inspection. Those are
137
+ separate user tasks. Do not invent API endpoints or assume any product exposes
138
+ all its configuration through an admin UI.
139
+
140
+ Record the actual page/section or API operation, environment, time, available
141
+ version and nonsecret result. Distinguish an editable stored setting from a
142
+ runtime-effective setting. Re-read the relevant view/field when verifying the
143
+ observation; inaccessible fields remain unknown. Keep source declarations and
144
+ earlier observations even when they disagree. Live settings are dated evidence,
145
+ not proof of a successful login, inference call, database query or complete setup.
146
+
147
+ ## Present and retain the graph
148
+
149
+ Lead with a compact graph or edge table: stable components, directed/purposed
150
+ connections, evidence basis and unresolved endpoints. Put supported alternatives
151
+ in a separate view/list from selected composition. Label a connection as declared
152
+ only when an applicable declaration supports it; keep possibilities, inferences
153
+ and unresolved clues explicit. Do not turn a UI settings read into an exercised edge. Include shared
154
+ components and useful deeper routes without inventing separate services for every
155
+ route, configuration key or package. Keep graph-relevant settings beside the edge
156
+ they explain, followed by evidence, coverage and the next consequential question.
157
+
158
+ Use the [working-note convention](working-notes.md) for durable progress. Sources
159
+ and observation summaries may be incomplete; a successful save does not establish
160
+ runtime behavior, universal compatibility or security certification.
@@ -0,0 +1,55 @@
1
+ # AI Surface Model meanings
2
+
3
+ The AI Surface Model describes connected components, configuration and relationships
4
+ at the detail available or useful. A language model is a component described by
5
+ it. There is one AI Surface Model; Lab and Experiment are descriptions within it.
6
+ A Lab contains Experiments. Each Experiment owns its desired setup and selected
7
+ Surface revision and requests resource configuration directly from its Lab.
8
+ The Lab owns resource configuration and local bindings. Lab / Lab Assistant
9
+ share one entity. The ownership chain is Lab → Experiment → Setup.
10
+ Bench is retired; preserve historical references as historical evidence, never
11
+ as current ownership or authority. Do not invent a hierarchy when it is outside
12
+ the supplied investigation.
13
+
14
+ Partial knowledge is useful. Preserve these distinct meanings:
15
+
16
+ | Meaning | Use |
17
+ | --- | --- |
18
+ | Known | Supported by identified evidence with a stated scope. |
19
+ | Unknown | The question is relevant but available evidence does not answer it. |
20
+ | Omitted | Deliberately left out of this description. |
21
+ | Redacted | Known detail withheld, such as sensitive values. |
22
+ | Absent | Evidence establishes absence within a specific scope. |
23
+ | Out of scope | Not part of the selected investigation. |
24
+
25
+ A missing field or uninspected directory does not establish absence. Evidence
26
+ that a product supports OIDC does not establish that this user enabled it.
27
+ Two HTTP routes can belong to the same service. Keep shared components, parallel
28
+ connections and cycles; depth is relative to a starting point, not a fixed limit.
29
+ Assign simple stable local labels such as `component:identity` when findings will
30
+ be saved or continued; add detail without silently replacing the entity.
31
+
32
+ Keep definitions separate from deployments, observations and Experiment Runs.
33
+ A declared connection, a reachable endpoint and an exercised interaction are
34
+ three different evidence claims. Source reading alone establishes none of the
35
+ runtime claims. Later findings must not silently rewrite what an earlier result
36
+ referred to. Record source, time, applicable revision and limits.
37
+
38
+ Interoperability is a bounded, versioned mapping with explicit losses. Matching
39
+ names, parsing JSON or reading a schema does not establish compatibility or
40
+ successful recreation. Distinguish a product possibility from a selected setup.
41
+
42
+ Named output profiles select content within this one model. Size, purpose and
43
+ deployment knowledge are independent. A profile version identifies output rules;
44
+ Surface definition and setup/binding revisions identify the described state.
45
+ Preserve those revisions and prior Run attribution when adding detail or bindings.
46
+ The [skeleton procedure](skeleton-surface.md) defines the provisional brief and
47
+ explicit reconciliation lifecycle. Detailed and recreation profiles remain future
48
+ directions, not implemented contracts.
49
+
50
+ This bundled reference records the draft meanings for skill 0.1.8. The repository's
51
+ [draft concepts](https://github.com/injectionator/n8r-surface/blob/main/spec/README.md)
52
+ are a moving source link; use the installed package version and digest to identify
53
+ the instructions actually used. Fields and serialization remain provisional. Maintainers must update this
54
+ reference with semantic changes; consumers do not need the source checkout to
55
+ read it.
@@ -0,0 +1,105 @@
1
+ # Skeleton Surface v0.1
2
+
3
+ This is a provisional output profile within the AI Surface Model. Produce a
4
+ compact Markdown Surface working draft, not validated JSON/HTML or a deployment
5
+ recipe. The profile version describes these rules; the skill version identifies
6
+ the instructions used. Neither is the revision of the particular Surface/setup.
7
+
8
+ ## Select and bound the brief
9
+
10
+ Use this profile when asked for a skeleton or brief Surface. Broad discovery
11
+ starts shallow; a narrow question takes precedence over a general inventory.
12
+ Security is the focus of this profile, while the model supports other purposes.
13
+ The useful question is: where could a security integration inspect or intervene
14
+ in LLM and actual tool calls, with what powers, coverage and gaps?
15
+
16
+ Retain a node or distinction when removing it hides a key capability, a material
17
+ security boundary, or a place an Experiment could change or observe behavior.
18
+ Keep required supporting roles such as application persistence when they explain
19
+ the setup. Features can be capability nodes; do not turn every setting into a node.
20
+ Use a role such as MCP server or vector store when no instance is selected. Source
21
+ evidence may identify supported products/transports without identifying a binding.
22
+ An empty template field does not establish that every deployment lacks a binding.
23
+
24
+ Preserve stable node and relationship identities from supplied descriptions.
25
+ Different serialization or vocabulary requires an explicit mapping, not silent
26
+ renaming. Keep shared nodes, parallel routes and cycles. A historical claim not
27
+ re-established at the selected revision must stay qualified or move to a clearly
28
+ linked historical/gap record; it cannot become a current supported capability.
29
+
30
+ ## Keep the graph small without losing meaning
31
+
32
+ Lead with a short identity/scope line and a graph or edge table. Retain source
33
+ revision, Surface revision and profile name/version. Show key nodes, directed
34
+ relationships, purposes and relevant execution/authority boundaries. Label
35
+ supported possibilities separately from selected composition and observed setup.
36
+ No source-only graph establishes reachability or exercise.
37
+
38
+ Use concise claim references to linked research or source sections. Identify the
39
+ supporting revision and locator where available. Summarize coverage and unresolved
40
+ questions once where shared; retain exceptions beside the affected edge. Avoid
41
+ repeating boilerplate unknown bindings for every node, but never make an omitted
42
+ value imply absence. No arbitrary node count, depth ceiling or file-size minimum
43
+ applies. A smaller output is not permission to discard a condition or bypass.
44
+
45
+ | In the brief | In linked records |
46
+ | --- | --- |
47
+ | Nodes, directed edges, roles, material conditions and uncertainty | Detailed source excerpts, inspected ranges and investigation narrative |
48
+ | Claim basis and usable evidence references | Full provenance, conflicts and supporting findings |
49
+ | Interception location, visibility, powers and coverage gaps | Hook signatures, configuration details and vendor compatibility research |
50
+ | Binding status and reference when relevant | Protected resource bindings, nonsecret configuration and secret requirements/references |
51
+ | Observation summary with applicability, when supplied | Dated runtime observations, traces, tests and Experiment Run results |
52
+
53
+ Use existing evidence records when they suffice. Do not create a large companion
54
+ record just to satisfy a template; direct versioned source references can suffice.
55
+ Keep links portable or state which accompanying files are needed. Never invent
56
+ records or imply their contents were read. Credential values do not belong in
57
+ the brief or research evidence.
58
+
59
+ ## Map interception opportunities
60
+
61
+ For each relevant candidate, state compactly:
62
+
63
+ - **Location and stage:** node/edge, before/after model dispatch or tool execution.
64
+ - **Visible context:** messages, tool arguments/results, principal, or unknown.
65
+ - **Powers:** observe, modify, block or require approval, only as supported.
66
+ - **Coverage:** covered routes, conditions, bypasses and unresolved continuations.
67
+ - **Basis:** proposed placement, documented/implemented extension, configured
68
+ integration, or exercised behavior; link evidence and preserve its limits.
69
+
70
+ A proxy only sees traffic routed through it. Seeing tool schemas, model-proposed
71
+ calls or returned results in model traffic does not prove mediation of the actual
72
+ tool invocation or downstream effects. Trace the tool executor separately. Keep
73
+ browser-direct routes, scheduled workers and other known alternate paths visible.
74
+
75
+ A hook's presence does not establish its timing, veto power or complete coverage.
76
+ A sidecar is placement, not an interception mechanism: identify routing, hooks or
77
+ event delivery and how a decision reaches execution. Observation-only telemetry
78
+ is not enforcement. Record failure behavior if known, or as a gap relevant to
79
+ later setup selection; a documented claim is not a runtime test.
80
+
81
+ Record potential cross-service observation points and correlation gaps without
82
+ claiming end-to-end trace coverage. Do not select a vendor or infer product
83
+ compatibility from names or protocols. If evidence supports only an opportunity,
84
+ say so. Stop once the brief answers the question with gaps visible. Do not install,
85
+ bind resources, configure proxies/hooks or run integration tests as part of it.
86
+
87
+ ## Continue and reconcile
88
+
89
+ Size and deployment knowledge are independent. A bound setup can have a skeleton;
90
+ a detailed product description can remain unbound. When saving or continuing,
91
+ follow [working notes](working-notes.md), preserving predecessors and evidence.
92
+
93
+ For Lab-managed changes, the intended consumer behavior is to record a successor
94
+ setup/binding revision with the change and its evidence; an Experiment requests
95
+ resources from its Lab, which owns bindings. This skill does not implement that
96
+ automation. A request is not proof that configuration succeeded. Keep effective
97
+ setup unknown until supported by observation.
98
+
99
+ Changes outside the Lab do not automatically update saved descriptions. On an
100
+ explicit reconciliation request, read current identified evidence, compare it
101
+ with the predecessor and save an authorized successor. Preserve stable identities,
102
+ explain changed declarations/bindings and retain uncertainty about effective use.
103
+ Reference an unchanged definition when only bindings change; use a successor
104
+ definition when composition or intended settings change. Keep profile version
105
+ unchanged unless the output rules change. Do not retrospectively rebind prior Runs.
@@ -0,0 +1,116 @@
1
+ # Working research notes
2
+
3
+ Use Markdown for the first portable research increment. These are readable
4
+ working notes, not a released interchange schema or a validated experimental
5
+ HTML/Surface artefact. Use the user's requested prose format when practical;
6
+ retain the same evidence and limitations. Do not impose a large empty template.
7
+
8
+ ## Where notes live
9
+
10
+ Use a user-selected destination first. When an applicable vault convention places
11
+ Surface descriptions under `surfaces/<source-slug>/`, propose a numbered file
12
+ such as `surface-draft-001.md` there. A save offer does not create directories or
13
+ files; wait for acceptance. Without that convention, use the default below for
14
+ the same Markdown working draft. When continuing a saved note, use its
15
+ folder unless the user requests a move. Otherwise, on a host with a persistent
16
+ user-owned local filesystem, use:
17
+
18
+ ```text
19
+ ~/Documents/n8r-surface/research/<source-slug>/<topic>-001.md
20
+ ```
21
+
22
+ Derive short lowercase hyphenated slugs from the source and question. For a
23
+ LibreChat authentication investigation, use `librechat/authentication-001.md`.
24
+ Resolve the user's actual home directory through the host, expand `~`, and show
25
+ the absolute folder and filename before writing. Create missing directories as
26
+ part of an authorized save. Keep that local locator in the conversation, not in
27
+ portable note content. Do not treat a temporary execution container as the user's
28
+ persistent filesystem. If local saving is unavailable, explain that limitation
29
+ and offer a named Markdown download or text without claiming the default exists.
30
+
31
+ List existing notes for that topic first. Use the next unused three-digit number
32
+ (`002`, `003`, and so on; grow beyond three digits if needed). An existing filename
33
+ is never permission to overwrite. For continuation, read the predecessor and any
34
+ human edits, name it in the successor and record the change. Recheck its bytes
35
+ before saving; if they changed, reread and reconcile before choosing a new output.
36
+ Check that existing notes describe the same source before continuing them;
37
+ matching directory names alone do not establish source identity.
38
+
39
+ Provide the actual saved file as a clickable link after readback. On a local
40
+ host, use an absolute file link. The user should be able to open it without
41
+ searching the plugin cache or scrolling back through tool output. Skill removal
42
+ must leave this research folder and every previous note intact.
43
+
44
+ ## What a note retains
45
+
46
+ A saved note should let another person or a fresh chat continue the task:
47
+
48
+ - Identify the question, scope, date, skill version and host/tool capabilities
49
+ actually used. Do not guess a hidden model ID or application version.
50
+ - Identify the supplied sources using portable relative names or public locators.
51
+ Record available revision/version information and exact hashes for inspected
52
+ files when supported. Explicitly mark unavailable identity evidence.
53
+ - Lead with the partial AI Surface graph or edge table, stable component labels
54
+ and evidence locations. Keep supported possibilities separate from selected
55
+ connections. Include only settings needed to explain the graph, not an app-wide
56
+ configuration inventory.
57
+ - Preserve conflicting claims, unknowns, coverage limits and scoped absences.
58
+ - Retain human decisions and unanswered questions separately from source evidence.
59
+ - State what was actually read or exercised and what remains to be done. Include
60
+ **Recommended next steps** as described below, and a useful next question when
61
+ a user decision is needed.
62
+
63
+ Keep source links usable when the notes are moved, or explain what accompanying
64
+ source files are needed. Do not copy whole repositories or credentials into the
65
+ notes. A source digest identifies bytes, not truth, completeness or compatibility.
66
+
67
+ ## Recommended next steps
68
+
69
+ Include a **Recommended next steps** section in the latest Surface note for the
70
+ same source and scope. If no Surface note exists, include it in the latest research
71
+ note. A Surface note here is a saved prose description of the Surface; this rule
72
+ does not add validated structured-output support or require creating one.
73
+
74
+ For each recommendation, state:
75
+
76
+ - **Next investigation:** the concrete question or connection to investigate.
77
+ - **Why it matters:** which uncertainty or user decision it would resolve.
78
+ - **Where to resume:** the relevant source file/section, component ID, saved note
79
+ or permitted view, plus any access or missing evidence needed to proceed.
80
+
81
+ Use portable references, not local absolute paths or credentials. For example:
82
+
83
+ > **Next investigation:** establish the selected document-search target.
84
+ > **Why it matters:** the optional search path has no address in the supplied
85
+ > settings, so its selected connection remains unresolved.
86
+ > **Where to resume:** `current.env`, `DOCUMENT_SEARCH_URL`, and `system.md` →
87
+ > Uploaded documents; request applicable deployment settings if available.
88
+
89
+ When continuing, read this section alongside the predecessor and human edits,
90
+ re-establish source identity, and use it to choose the next investigation within
91
+ the user's current scope. Recommendations are proposed work, not permission for
92
+ new access or evidence that a connection exists. If the needed evidence is
93
+ unavailable, retain the blocker and a concrete resumption point.
94
+
95
+ In the saved successor, update the section to reflect what was resolved, what
96
+ remains and the next useful investigation. Explain a changed priority or superseded
97
+ recommendation briefly. Preserve earlier notes unchanged. If an older note has
98
+ no recommendations, derive them from its supported gaps and current evidence in
99
+ the successor; do not retrofit the predecessor. If no further investigation is
100
+ needed within scope, say so and explain why rather than inventing work.
101
+
102
+ ## Save and read back
103
+
104
+ If the destination already exists or changed since it was read, stop that write
105
+ and propose a new file or a reviewed merge. Do not claim atomic guarded storage
106
+ or byte-conflict guarantees that the host has not provided.
107
+
108
+ After saving, read the saved bytes through an available tool and check that the
109
+ findings, references, uncertainties, human choices and current recommendations
110
+ survived. Provide the actual path or download and report any readback limitation. Merely printing a filename
111
+ is not a save. Reopening in a fresh chat is a separate continuation check.
112
+
113
+ Installing or removing the skill changes its availability in the host. User notes
114
+ belong to the user and must remain outside the plugin installation/cache folders.
115
+ Never delete research as part of skill removal. Uninstallation does not erase
116
+ instructions or source content already present in an old conversation.