@plurnk/plurnk-schemes 1.4.0 → 1.6.0

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 CHANGED
@@ -25,28 +25,42 @@ Ship a scheme by publishing a package — **under any scope** (`@acme/whatever`;
25
25
 
26
26
  ```ts
27
27
  import type {
28
- SchemeHandler, SchemeManifest, SchemeCtx, SchemeResult, ReadStatement,
28
+ RepresentationPreparationRequest, RepresentationPreparationResult,
29
+ SchemeHandler, SchemeManifest, SchemeCtx,
29
30
  } from "@plurnk/plurnk-schemes";
30
31
 
31
32
  export default class Foo implements SchemeHandler {
32
33
  static manifest: SchemeManifest = { /* step 3 */ };
33
34
 
34
- async read(statement: ReadStatement, ctx: SchemeCtx): Promise<SchemeResult> {
35
- /* … use ctx's stable domain capabilities (SPEC §3.bis) … */
35
+ async prepareRepresentation(
36
+ { target, pathname }: RepresentationPreparationRequest,
37
+ ctx: SchemeCtx,
38
+ ): Promise<RepresentationPreparationResult> {
39
+ const { content, mimetype } = await acquire(target);
40
+ const written = await ctx.entries.write(pathname, {
41
+ channels: { body: { content, mimetype } },
42
+ });
43
+ return written.status >= 400 ? written : { status: 200 };
36
44
  }
37
45
  }
38
46
  ```
39
47
 
40
- Implement only the delegated methods you support - `read`, `find`, `editBatch`,
41
- `send`, and the other optional methods in `SchemeHandler`. COPY and MOVE are
42
- engine-owned compositions over `ctx.entries` and `editBatch`, so plugins do not
43
- override them or author COPY/MOVE effect envelopes. A regional `editBatch`
48
+ Core owns READ. A stored scheme needs no READ method; an acquisition scheme
49
+ implements scope-blind `prepareRepresentation`, writes its complete channels,
50
+ and lets core select the channel and apply operation-owned semantics. Exact
51
+ READ, exact FIND, and COPY/MOVE source selection all reuse that acquisition;
52
+ the producer receives none of their scopes, matchers, or channel choices.
53
+ Implement only
54
+ the remaining delegated methods you support—`find`, `editBatch`, `send`, and
55
+ the other optional methods in `SchemeHandler`. COPY and MOVE are engine-owned
56
+ compositions over `ctx.entries` and `editBatch`, so plugins do not override
57
+ them or author COPY/MOVE effect envelopes. A regional `editBatch`
44
58
  returns `EditBatchResult` with its typed `EditBatchReceipt`; the engine validates
45
59
  and projects it.
46
60
  The optional synchronous `attributions(context)` hook may return no, one, or
47
61
  many opaque tags for each provider emission attempt ({§plugin-attribution}).
48
62
  `implements SchemeHandler` gives compile-time signature checking. The statement
49
- and path types (`ReadStatement`, `SendStatement`, `UrlPath`, etc.) are re-exported
63
+ and path types (`FindStatement`, `SendStatement`, `UrlPath`, etc.) are re-exported
50
64
  from this package, so you depend on and peer (`^1`) only
51
65
  `@plurnk/plurnk-schemes`; grammar rides underneath.
52
66
 
@@ -66,16 +80,24 @@ static manifest: SchemeManifest = {
66
80
  writableBy: ["model", "client"],
67
81
  volatile: false,
68
82
  modelVisible: true,
83
+ textEditScopes: true, // use the standard text-edit capability
69
84
  glyph: "🦊", // optional client-only display marker
70
- example: "READ(foo://thing/42)", // terse hot-path one-liner, rendered every turn
85
+ example: "## READ0 (foo://thing/42)", // concise hot-path operation example set
71
86
  documentation, // deep doc from docs/foo.md, pulled at worker://plurnk/docs/foo.md
72
87
  };
73
88
  ```
74
89
 
75
- - **`example`** — the scheme's terse **hot-path** one-liner, rendered in the live catalogue every turn (like an execs runtime's `example`). Keep it to one canonical usage line; depth goes in `documentation`. Omit → not advertised.
90
+ - **`example`** — the scheme's concise **hot-path** operation example set, rendered in the live resource catalogue every turn (like an execs runtime's `example`). Use one or more complete operations separated by blank lines; depth goes in `documentation`. Omit → not advertised.
76
91
  - **`documentation`** — the **deep doc** (ops, channels, edge cases). The consumer materializes it as a pull-able `worker://plurnk/docs/<name>.md` entry the model READs on demand — off the hot path. Mirrors `ExecInfo.documentation`. **Convention:** keep it in a **`docs/<name>.md`** file (root) and load it at module init with the snippet above — `../` resolves the same from `src/` (test) and `dist/` (built); add `docs/**/*` to `files`. A missing file fails-hard at import.
77
92
  - **`glyph`** — optional opaque client display metadata. It is discoverable through the client capability wire and never rendered into model teaching; clients choose fallback, fonts, and theme.
78
93
 
94
+ Declare `textEditScopes: true` only when `editBatch` accepts PLURNK's shared
95
+ text-coordinate algebra. Core's universal READ projection derives and resolves
96
+ any model-facing line anchor; scheme handlers receive numeric
97
+ `ResolvedEditStatement` coordinates only. Delegate those edits to
98
+ `ctx.entries.operations.editBatch`; it owns the anchor recheck and atomic
99
+ collision guard.
100
+
79
101
  ### 4. Self-doc: terse pushes, depth pulls
80
102
 
81
103
  `example` renders every turn — keep it terse. `documentation` is the deep prose; the consumer materializes it at `worker://plurnk/docs/<name>.md` for the model to READ on demand. Don't dump prose into `example` (it floods the hot path) — put it in `documentation`.
@@ -87,15 +109,15 @@ That's the whole contract: declare, `implements SchemeHandler`, manifest with se
87
109
  ### Types
88
110
 
89
111
  - Manifest/flags: `SchemeManifest` (including `example` / `documentation` self-doc and client-only `glyph`), `SchemeFlagAffinity`, and `WriterTier`; contracts-owned `LoopFlags` / `DEFAULT_LOOP_FLAGS` are re-exported.
90
- - Behavior contract: `SchemeHandler` + optional `PacketSectionTransformer` (`PacketSectionDraft`); the re-exported scheme-facing grammar types (`PlurnkStatement` + per-op statements + `ParsedPath` / `LocalPath` / `UrlPath`).
91
- - Results: universal `SchemeResult` plus RFC 9457 `ProblemDetails`, optional `EntryResult` / `ProposalResult` / `PassthroughResult` authoring shapes, `SchemeResultBase`, and matcher navigation `MatchEvidence`.
92
- - Capability ctx: `SchemeCtx` and its entry, channel, tag, notification, projection, and subscription domains. Entry schemes can reuse typed standard operations with semantic commons/worker ownership.
112
+ - Behavior contract: `SchemeHandler`, numeric-only `ResolvedEditStatement` (also exported as `EditStatement`), and optional `PacketSectionTransformer` (`PacketSectionDraft`); the remaining re-exported scheme-facing grammar types (`PlurnkStatement` + per-op statements + `ParsedPath` / `LocalPath` / `UrlPath`).
113
+ - Results: universal `SchemeResult` plus RFC 9457 `ProblemDetails`, optional `EntryResult` / `ProposalResult` / `PassthroughResult` authoring shapes, `SchemeResultBase`, matcher navigation `MatchEvidence`, and target-shaped standard `EntryFindResult` pagination/count metadata.
114
+ - Capability ctx: `SchemeCtx` and its entry, channel, notification, projection, and subscription domains. Entry schemes can reuse typed standard operations with semantic commons/worker ownership.
93
115
 
94
116
  ### Helpers (`export default class`, static methods)
95
117
 
96
118
  - `SchemeResolver.forLoop(handlers, flags)` — active-scheme resolution under loop flags.
97
119
  - `MimetypeClassifier.isBinary` / `.isJson` / `.normalizeAutoText` (+ `TEXT_PRIMITIVE_MIMETYPE` named export) - registry-free mimetype taxonomy and scheme-local helpers. Configured consumers use `Mimetypes.classify()` for handler-aware binary decisions.
98
- - `Slicer.lines` / `.linesRaw` / `.textReplacement` / `.lineMarkerEdit` / `.lineMarkerEditBatch` - universal text-region projection and same-snapshot replacement; `Slicer.page` handles ordered results separately.
120
+ - `Slicer.lines` / `.linesRaw` / `.textReplacement` / `.lineMarkerEdit` / `.lineMarkerEditBatch` - universal text-region projection and same-snapshot replacement; `Slicer.page` handles ordered results, and `.coversAvailable` derives complete coverage from their compact `RangeExtent`.
99
121
  - `PathMimetype.resolve(pathname, default, mimetypes)` — path-extension mimetype resolver.
100
122
  - `Matcher.matchAgainstContent(body, content, mimetype, mimetypes)` - boolean resource selection over `Mimetypes.query` (glob/regex/jsonpath/xpath), returning locator/exact-region `MatchEvidence`.
101
123
  - `Results.problem` / `.failure` / `.assert` / `.assertReadResult` / `.assertMatchEvidenceList` / `.attachInstance` / `.isEntry` / `.isProposal` / `.isPassthrough` / `.isErrorStatus` - RFC 9457 result builders, validators, durable-occurrence attachment, and guards.
package/SPEC.md CHANGED
@@ -25,6 +25,7 @@ class Notes {
25
25
  writableBy: ["model", "client"],
26
26
  volatile: false,
27
27
  modelVisible: true,
28
+ textEditScopes: true,
28
29
  flags: { /* optional SchemeFlagAffinity */ },
29
30
  };
30
31
  }
@@ -39,9 +40,10 @@ class Notes {
39
40
  | `writableBy` | Subset of `["model", "client", "plurnk", "plugin"]`; empty declares an immutable scheme. Consumer returns 403 for outside-set writes. |
40
41
  | `volatile` | Boolean. |
41
42
  | `modelVisible` | Boolean. |
42
- | `folderScopes?` | `true` declares that a trailing slash on FIND or READ is a collection scope. Absent/false means `/` is ordinary resource syntax. Matcher bodies and explicit globs remain queries independently. |
43
+ | `folderScopes?` | `true` declares that a trailing slash on FIND is a collection scope. Absent/false means `/` is ordinary resource syntax. |
44
+ | `textEditScopes?` | `true` declares the shared textual EDIT coordinate and collision contract. For model-writable schemes, core's universal READ projector publishes line anchors and core resolves them for every anchor-bearing text selection; handlers receive only numeric coordinates and route standard entry mutation through `ctx.entries.operations.editBatch`. Absent/false or no model write authority rejects model-facing anchors before handler invocation. |
43
45
  | `flags?` | Optional exact `SchemeFlagAffinity`; see {§manifest-flag-affinity}. |
44
- | `example?` | The scheme's terse **hot-path** one-liner (e.g. `"READ(foo://thing/42)"`) — renders in the live catalogue every turn, so keep it to one canonical usage line. Omit → not advertised. Depth goes in `documentation`. |
46
+ | `example?` | The scheme's concise **hot-path** operation example set (e.g. `"## READ0 (foo://thing/42)"`) — renders in the live resource catalogue every turn. One or more complete operations may be separated by blank lines; keep semantics in `documentation`. Omit → not advertised. |
45
47
  | `documentation?` | The **deep doc** (semantics / channels / edge cases). Consumer materializes it as a pull-able `worker://plurnk/docs/<name>.md` entry READ on demand; never hits the hot path. Mirrors `ExecInfo.documentation`. |
46
48
  | §manifest-client-display `glyph?` | Non-empty opaque client presentation glyph. It is projected through {§client-display-capabilities}; omission delegates identity fallback to the client. It never enters model teaching. |
47
49
  | `foldedByDefault?` | Entries land FOLDED, off the ranked manifest surface (READable via address, not poured into the ranked view). For executor-output streams (`<tag>://`) — containment one level up. Absent/false → ranked/first-class. |
@@ -66,31 +68,35 @@ Proposal behavior is not scheme affinity. A handler proposes by returning 202;
66
68
  the consumer's proposal lifecycle decides whether a client, loop auto,
67
69
  `noProposals`, or a timeout resolves it.
68
70
 
69
- §manifest-self-doc **Self-doc split (terse pushes, depth pulls).** `example` is the hot-path listing rendered every turn — keep it terse. `documentation` is the deep prose (every op, channel, status code, gotcha); the consumer materializes it as a pull-able **`worker://plurnk/docs/<name>.md`** entry the model READs on demand, off the hot path. Both live on the manifest; the consumer decides what's pushed vs pulled. `glyph` is client display metadata under {§manifest-client-display}, not self-documentation.
71
+ §manifest-self-doc **Self-doc split (terse pushes, depth pulls).** `example` is the hot-path operation example set rendered every turn — keep it terse. `documentation` is the deep prose (every op, channel, status code, gotcha); the consumer materializes it as a pull-able **`worker://plurnk/docs/<name>.md`** entry the model READs on demand, off the hot path. Both live on the manifest; the consumer decides what's pushed vs pulled. `glyph` is client display metadata under {§manifest-client-display}, not self-documentation.
70
72
 
71
73
  **Authoring convention — `docs/<name>.md`.** The contract field stays a plain `string`, but a sibling SHOULD keep the deep doc in a **`docs/<name>.md`** file at the package root rather than inline, and load it into the manifest at module init — e.g. `documentation: await readFile(new URL("../docs/<name>.md", import.meta.url), "utf-8")` (top-level await; `../` resolves identically from `src/` in test and `dist/` once built). Ship it by adding `docs/**/*` to `files`. This keeps prose out of the handler source and gives editors real Markdown; the contract and the consumer's `worker://plurnk/docs/<name>.md` materialization are unchanged. A missing file fails-hard at import (no silent empty doc).
72
74
 
73
75
  ## §2 Interface
74
76
 
75
77
  Sister scheme handlers implement op methods consumed by plurnk-service via
76
- dispatch. An absent method returns **501**, except FIND on an entry-bearing
77
- `category: "data"` scheme: the consumer supplies its standard stored-entry
78
- FIND automatically. The op-dispatch surface is the exported
79
- **`SchemeHandler`** interface — every method optional, each
80
- `(statement, ctx) => Promise<SchemeResult>`, the per-op statement type from
81
- grammar. `editBatch` returns the typed `EditBatchResult` specialization:
78
+ dispatch. The consumer owns READ for every `category: "data"` scheme and owns
79
+ exact-target FIND over its canonical representation; no handler method can
80
+ replace either projection. Other absent operation methods return **501**. The
81
+ exported **`SchemeHandler`** interface gives operation methods their grammar
82
+ statement and `ctx`, while representation preparation receives a deliberately
83
+ narrower request. `editBatch` returns the typed `EditBatchResult`
84
+ specialization:
82
85
 
83
86
  ```ts
84
- import type { EditBatchResult, SchemeHandler } from "@plurnk/plurnk-schemes";
87
+ import type { EditBatchResult, ResolvedEditStatement, SchemeHandler } from "@plurnk/plurnk-schemes";
85
88
 
86
89
  export interface SchemeHandler {
87
90
  ready?(): Promise<void>;
88
91
  close?(): Promise<void>;
89
- resolveEntryAddress?(target: ParsedPath, ctx: SchemeCtx): Promise<EntryAddress | null>;
92
+ resolveEntryAddress?(target: ParsedPath, ctx: SchemeCtx): Promise<EntryAddress | SchemeResult | null>;
93
+ prepareRepresentation?(
94
+ request: RepresentationPreparationRequest,
95
+ ctx: SchemeCtx,
96
+ ): Promise<RepresentationPreparationResult>;
90
97
  prepareFind?(statement: FindStatement, ctx: SchemeCtx): Promise<SchemeResult>;
91
- read?(statement: ReadStatement, ctx: SchemeCtx): Promise<SchemeResult>;
92
98
  find?(statement: FindStatement, ctx: SchemeCtx): Promise<SchemeResult>;
93
- editBatch?(statements: readonly EditStatement[], ctx: SchemeCtx): Promise<EditBatchResult>;
99
+ editBatch?(statements: readonly ResolvedEditStatement[], ctx: SchemeCtx): Promise<EditBatchResult>;
94
100
  send?(statement: SendStatement, ctx: SchemeCtx): Promise<SchemeResult>;
95
101
  exec?(statement: ExecStatement, ctx: SchemeCtx): Promise<SchemeResult>;
96
102
  work?(statement: WorkStatement, ctx: SchemeCtx): Promise<SchemeResult>;
@@ -101,26 +107,70 @@ export interface SchemeHandler {
101
107
  }
102
108
  ```
103
109
 
104
- `prepareFind?` is not a second query implementation. It is the optional
105
- discovery/materialization seam invoked before the consumer's standard resource
106
- selection when a data scheme has no custom `find()`. Stored schemes omit it.
107
- FIND and matcher READ both invoke it before selecting entries. Acquisition
108
- schemes use it to make an exact requested resource into an ordinary entry,
109
- then receive the same catalog, matcher evidence, weight, pagination, and status
110
- semantics as every other entry-bearing scheme. The consumer resolves the
111
- standard query through the same canonical entry identity used by
112
- `ctx.entries`: a URL authority remains part of that identity and cannot be
113
- dropped between preparation and lookup. A custom `find()` replaces the whole
114
- operation only where the scheme owns genuinely different candidate semantics.
110
+ §resolved-edit-statement `ResolvedEditStatement` is the scheme-facing EDIT
111
+ shape: its `lineMarker` is `LineMarker | null` and therefore contains numbers
112
+ only. Core resolves the model-facing {§text-line-anchor-syntax} before invoking
113
+ `SchemeHandler.editBatch` or `EntryOperationCaps.editBatch`; an unresolved
114
+ anchor crossing that boundary is an internal contract violation. The barrel's
115
+ compatibility export named `EditStatement` aliases this resolved shape, so
116
+ existing plugins do not inherit the model parser's anchor representation.
117
+ The anchor precondition remains core-private. A public handler declaring
118
+ `textEditScopes: true` MUST route its standard textual mutation through
119
+ `ctx.entries.operations.editBatch`, which rechecks that precondition at the
120
+ snapshot owner and lands with the consumer's compare-and-swap. Applying the
121
+ numeric coordinates independently would discard the declared collision
122
+ contract. Core-owned special resources enforce the equivalent invariant inside
123
+ their mutation adapter.
124
+
125
+ §read-preparation `prepareRepresentation?` is the optional, operation-neutral
126
+ acquisition seam for one exact resource. Core first resolves its canonical
127
+ pathname and owner, binds `ctx.entries`/channels/subscriptions to that owner,
128
+ and removes the channel fragment. The request is exactly
129
+ `{ target, pathname }`: READ coordinates, FIND matchers, the selected channel,
130
+ and operation intent are structurally unavailable.
131
+
132
+ A stored scheme omits the hook. An acquired scheme writes its complete channel
133
+ topology through `ctx.entries` and returns `200` readiness. A live scheme first
134
+ seeds those same canonical channels, opens a subscription, and may return `102`
135
+ only while production remains live. Other statuses are exact terminal results.
136
+ Per-channel producer status belongs durably on that channel as
137
+ `producerResult`; no transient preparation result may carry content, channel
138
+ selection, or channel outcomes. After `200`, core alone selects the authored
139
+ channel, applies tag/binary/text rules (including markerless `<1,16>`), and
140
+ composes that channel's producer evidence. Cold and warm reads therefore have
141
+ identical semantics.
142
+
143
+ Exact FIND uses the same `prepareRepresentation?` seam and then the standard
144
+ entry query; the queried default channel's durable producer result composes
145
+ with that exact query just as it does with exact READ. `prepareFind?` is only
146
+ the optional broad-scope discovery seam
147
+ used before standard entry selection when no custom broad `find()` exists. A
148
+ custom `find()` may own genuinely different candidate enumeration, but never
149
+ exact-resource materialization or READ coordinates. Every standard query uses
150
+ the same canonical identity as `ctx.entries`; URL authority cannot disappear
151
+ between preparation and lookup.
152
+
153
+ An exact COPY/MOVE source also resolves and prepares through this seam before
154
+ core selects its canonical stored channel. COPY/MOVE retain their own source
155
+ scope algebra: an absent source scope means the complete channel and an explicit
156
+ scope preserves raw source separators. Neither distinction is exposed to the
157
+ producer. A live `102` leaves the composition unapplied; a ready representation
158
+ is selected from the same channels used by READ and exact FIND. A selected
159
+ channel's producer failure aborts before destination mutation; successful
160
+ non-`200` content remains eligible for transfer.
115
161
 
116
162
  §entry-address-resolution `resolveEntryAddress?` gives a client observation the
117
163
  same address law as model-facing operations without creating a second CRUD
118
- protocol. It returns the canonical stored `pathname` and a semantic owner:
164
+ protocol. Core removes the channel fragment and target-slot pathname aliases
165
+ {§path-parentheses} before invocation; query and other identity components
166
+ remain exact. The hook returns the canonical stored `pathname` and a semantic
167
+ owner:
119
168
 
120
169
  | Return | Meaning |
121
170
  |-----------------------------------------|---------------------------------------------------|
122
171
  | `{ pathname, owner: "commons" }` | Resolve in the shared workspace namespace |
123
172
  | `{ pathname, owner: "worker" }` | Resolve in the calling worker's namespace |
173
+ | Non-success `SchemeResult` | Preserve an expected address refusal exactly |
124
174
  | `null` | The selector names no client-visible entry |
125
175
  | Hook absent | Use the standard pathname and `commons` ownership |
126
176
 
@@ -151,8 +201,9 @@ hook.
151
201
 
152
202
  The entry CRUD primitives (`readEntry`/`writeEntry`/`deleteEntry`) are not handler operations; schemes use `ctx.entries`. Proposal application is the optional `applyResolution` handler hook described in §3.bis.
153
203
 
154
- OPEN and FOLD are not handler methods. They curate visibility and tags on the
155
- core-owned log; an entry scheme has no visibility state and receives 501.
204
+ OPEN and FOLD are not handler methods. They curate visibility by filtering tags
205
+ on the core-owned log; an entry scheme has no visibility or tag state and
206
+ receives 501.
156
207
 
157
208
  §scheme-edit-batch-receipt **Regional mutation receipts.** COPY and MOVE are not
158
209
  handler methods. The engine composes their source and
@@ -179,6 +230,7 @@ interface AppliedEditBatchReceipt {
179
230
  readonly unit: EditReceiptUnit;
180
231
  readonly before: number;
181
232
  readonly after: number;
233
+ readonly parseIssues?: number;
182
234
  readonly effects: readonly EditEffectReceipt[];
183
235
  }
184
236
 
@@ -187,6 +239,7 @@ interface ReviewerReplacementEditBatchReceipt {
187
239
  readonly unit: EditReceiptUnit;
188
240
  readonly before: number;
189
241
  readonly after: number;
242
+ readonly parseIssues?: number;
190
243
  readonly disposition: "reviewer-replaced";
191
244
  readonly superseded: readonly string[];
192
245
  readonly replacement: EditEffectReceipt;
@@ -212,8 +265,17 @@ cannot be known. The consumer projects the replacement once on the durable
212
265
  proposal-owning row and projects each authored marker's superseded disposition
213
266
  on its own row.
214
267
 
268
+ `context` is an ordered, source-numbered projection of the landed result. For a
269
+ consumer-selected count `C`, it contains up to `C` surrounding lines and the
270
+ first and last `C` landed lines at each result boundary. Overlapping windows
271
+ coalesce and coordinate jumps expose an omitted middle. A deletion instead
272
+ contains up to `C` lines on each side of its join.
273
+
215
274
  The engine validates that receipt and owns the ordered COPY/MOVE resource
216
275
  effects shown to consumers; plugins do not invent a second effect envelope.
276
+ `parseIssues`, when present, is the positive parser-recovery count for the
277
+ complete resulting revision. Zero and unavailable evidence are omitted. The
278
+ hint is advisory: inspection failure does not reverse a landed mutation.
217
279
 
218
280
  ## §3 Helpers exported by this repo
219
281
 
@@ -222,12 +284,13 @@ effects shown to consumers; plugins do not invent a second effect envelope.
222
284
  - Manifest/flags: `SchemeManifest`, `SchemeFlagAffinity`, and `WriterTier`; contracts-owned `LoopFlags` and `DEFAULT_LOOP_FLAGS` are re-exported for compatibility.
223
285
  - Mutation receipts: `EditBatchResult`, `EditBatchReceipt`, `EditReceipt`, `EditEffectReceipt`, and `EditReceiptUnit`.
224
286
  - §scheme-packet-transform **Packet-section transformation.** A scheme may implement `transformSections(sections: PacketSectionDraft[]) → PacketSectionDraft[] | Promise<…>` to add, remove, or reorder sections before core measures the packet. The exact draft shape is `{ name; slot: "system"|"user"; header: string|null; content }`; no token measurement exists at this boundary. Core invokes implementations in registration order and applies `PacketSections.assertDrafts` to the initial list and every returned list. Names are non-empty and unique within the packet.
225
- - Behavior contract: `SchemeHandler` (§2). Scheme-facing grammar types re-exported here so siblings pin only this package: `PlurnkStatement` + the per-op statement types (`ReadStatement`, `FindStatement`, `OpenStatement`, `FoldStatement`, `EditStatement`, `CopyStatement`, `MoveStatement`, `SendStatement`, `ExecStatement`, `WorkStatement`, `ForkStatement`, `KillStatement`, `PlanStatement`) and path types (`ParsedPath` = `LocalPath` | `UrlPath`).
287
+ - Behavior contract: `SchemeHandler` (§2). Scheme-facing grammar types re-exported here so siblings pin only this package: `PlurnkStatement` + the per-op statement types (`ReadStatement`, `FindStatement`, `OpenStatement`, `FoldStatement`, `CopyStatement`, `MoveStatement`, `SendStatement`, `ExecStatement`, `WorkStatement`, `ForkStatement`, `KillStatement`, `PlanStatement`) and path types (`ParsedPath` = `LocalPath` | `UrlPath`). EDIT uses `ResolvedEditStatement`, also exported under the compatibility name `EditStatement`, under {§resolved-edit-statement}.
226
288
  - Target syntax: contracts-owned `PathSyntax` is re-exported for the shared exact-versus-path-glob classifier {§path-glob}.
227
289
  - Discovery: `SchemeDiscovery` (behavior class) with `SchemeInfo` / `SchemeDiscoveryResult` / `DiscoverOptions` (§6).
228
- - §executor-scheme-output Executor-scheme ("an executor is a scheme"): `OutputScheme.manifestFromRuntime(decl)` derives a read-only-output `SchemeManifest` from an executor's `RuntimeDecl` (zero scheme-authoring); `DefaultRead.read(content, mimetype, statement, mimetypes)` -> `ReadResolution` is the free text-scope/matcher read over produced output (reuses `Slicer`/`Matcher`). A matcher selects the complete output resource before `<scope>` projects text; without a scope, READ returns the complete resource. Match evidence remains metadata for a model-chosen follow-up READ. `Summarize.summarize(content, mimetype)` -> `OrientIndex` is the structural-only EXEC-receipt index (no content - universal-receipt containment). A per-tag executor-scheme supplies its manifest via instance `get manifest()` (§2 `SchemeHandler.manifest?`).
290
+ - §executor-scheme-output Executor-scheme ("an executor is a scheme"): `OutputScheme.manifestFromRuntime(decl)` derives a read-only-output `SchemeManifest` from an executor's `RuntimeDecl` (zero scheme-authoring). Executor output is a canonical entry and therefore inherits core's exact READ projection under {§read-preparation}; no executor-specific READ helper exists. `Summarize.summarize(content, mimetype)` -> `OrientIndex` is the structural-only EXEC-receipt index (no content - universal-receipt containment). A per-tag executor-scheme supplies its manifest via instance `get manifest()` (§2 `SchemeHandler.manifest?`).
229
291
  - Results: `SchemeResult` is the universal operation-result contract. Statuses below 400 carry no `problem`; statuses 400–599 require RFC 9457 `ProblemDetails`, and the legacy `error` member is forbidden. `EntryResult`, `ProposalResult`, and `PassthroughResult` are optional conventional shapes, not engine routing discriminators. Guards inspect those optional shapes; proposal routing itself is engine-owned and follows status plus operation semantics.
230
- - Standard FIND results may carry `omittedItems` and `maximumItems` when a selected catalog is too large to enumerate. `omittedItems` is the exact selected-resource count and `maximumItems` is the active materialization limit. These names cannot collide with the model-facing string `overflow` metadata used for truncated packet bodies.
292
+ - Standard `EntryFindResult` exposes only its paged `results`, complete `matchingPathCount` / `matchLocationCount`, content weights, and typed range. Each resource-mode `EntryCatalogItem` is a nonempty, default-first array of flat `EntryCatalogChannel` objects; a scope is the one-element `EntryCatalogScopeGroup`. Exact matcher mode returns flat `MatchEvidence` locations. Pagination is the materialization bound; no path-owning channel wrapper, hidden `matches`, `pathnames`, or overflow-only result collection exists.
293
+ - §scheme-catalog-parse-issues An `EntryCatalogChannel` may carry a positive `parseIssues` count when its exact content projection reported parser recovery sites. Zero and unavailable evidence are omitted. This is advisory metadata and never a validity gate or operation failure.
231
294
  - Capability ctx (see §3.bis): `SchemeCtx`, `StreamSubscription`, and the domain capabilities. Entry authors additionally receive `EntryOperationCaps`, semantic `EntryOwner`/`EntryAddress`, and typed standard-operation results. `editBatch` receives every same-turn EDIT for one canonical resource and channel; it validates against one snapshot and commits one revision or none. There is no sequential single-EDIT fallback.
232
295
 
233
296
  Behavior ships as `export default class` (one class per file, static methods) — the ecosystem class paradigm. Type-only modules, the barrel, and the frozen `DEFAULT_LOOP_FLAGS` constant are the only non-class files.
@@ -281,12 +344,15 @@ entry channels beyond Unicode text.
281
344
  | `readableBytes(chunks, mimetype)` | Project one async byte source under the mimetype family's bounded-input policy. |
282
345
  | `identity(mimetype)` | Return the opaque identity of configured projection behavior for cache and materialization freshness. |
283
346
  | `isBinary(mimetype)` | Classify through the configured registry; installed handler declarations remain authoritative. |
347
+ | `parseIssues(content, mimetype)` | Return positive parser-recovery evidence, or omit unavailable/clean evidence, under {§mimetype-parse-issues}. |
284
348
  | `ProjectedText` | Derived Unicode plus its output mimetype, source mimetype, and opaque projection identity. |
285
349
 
286
350
  A returned object is present even when its `content` is `""`; only `null`
287
351
  denotes absence. Consumers must not infer projection presence from content
288
- length. A thrown projection call is an execution failure whose cause
289
- propagates; it must never be converted to `null`.
352
+ length. Thrown readable, identity, and classification calls are execution
353
+ failures whose causes propagate; they must never be converted to `null`.
354
+ Parser-recovery inspection is deliberately non-gating: its implementation
355
+ surfaces tooling failure as a Notice and returns `undefined`.
290
356
  `ProjectionInputLimitError` is the projection boundary's exported name for the
291
357
  configured mimetype family's typed bounded-input failure.
292
358
 
@@ -308,6 +374,11 @@ Successful results carry schemes-owned, boundary-validated normalization
308
374
  evidence containing both the authored and canonical coordinates. Producers do
309
375
  not emit or proactively teach the tolerated form.
310
376
 
377
+ A harmless end-bound overshoot clamps rather than erroring: an oversized line
378
+ range ends at the final line, an exact end line beyond the content ends at EOF,
379
+ and an oversized end column ends at its line's final code point. Start-line and
380
+ start-column overshoots remain 416 errors.
381
+
311
382
  - `Slicer.lines(content, marker)` returns the selected text, source
312
383
  `startLine`, and complete resolved `region`; `Slicer.linesRaw` preserves
313
384
  original newline separators for COPY/MOVE source transfer.
@@ -317,15 +388,19 @@ not emit or proactively teach the tolerated form.
317
388
  - `Slicer.lineMarkerEdit` applies one replacement.
318
389
  - `Slicer.lineMarkerEditBatch` validates all replacements against one snapshot,
319
390
  rejects overlaps, and applies all or none.
320
- - `Slicer.page(items, marker)` is the separate ordered-result pagination
321
- helper; it accepts only one or two integer positions.
322
-
323
- A line/pagination 416 carries `range: { unit, requested: { first, last },
324
- available: { first, last, total } }`. An exact-region failure, including a
325
- failed tolerated three-coordinate scope, carries `requestedCoordinates`
326
- exactly as authored; an invalid-arity text scope does likewise. Both carry
327
- `columnKind: "unicodeCodePoints"`. Empty sources use `null` line-range
328
- endpoints and `total: 0`.
391
+ - `Slicer.page(items, marker, options?)` is the separate ordered-result
392
+ pagination helper; it accepts only one or two integer positions and can name
393
+ an operation-owned range unit. `allowEmpty` preserves an otherwise valid
394
+ positive request when an upstream filter yields no items.
395
+ - `Slicer.coversAvailable(range)` derives whether a successful range selected
396
+ the complete available extent; that fact is never serialized separately.
397
+
398
+ A successful line or pagination selection carries the contracts-owned
399
+ `RangeExtent` {§range-extent}; a 416 carries the same extent without
400
+ `returned`. Exact regions use `region` instead. An exact-region failure,
401
+ including a failed tolerated three-coordinate scope, carries
402
+ `requestedCoordinates` exactly as authored; an invalid-arity text scope does
403
+ likewise. Both carry `columnKind: "unicodeCodePoints"`.
329
404
 
330
405
  ### §path-extension-mimetype Path-extension mimetype — `PathMimetype`
331
406
 
@@ -338,7 +413,7 @@ endpoints and `total: 0`.
338
413
  - `Results.problem(owner, code, status, detail, extensions?)` — build and validate RFC 9457 Problem Details with a stable `https://problems.plurnk.dev/<owner>/<code>` type.
339
414
  - `Results.failure(owner, code, status, detail, fields?, extensions?)` — build and validate a failed operation result.
340
415
  - `Results.assert(result)` — validate the complete success/failure discrimination and reject malformed plugin output.
341
- - `Results.assertMatchEvidence(evidence)` / `assertMatchEvidenceList(evidence)` - enforce the exact `{ path?, region? }` shape and shared `TextRegion` contract.
416
+ - `Results.assertMatchEvidence(evidence)` / `assertMatchEvidenceList(evidence)` - enforce the exact `{ locator?, region? }` shape and shared `TextRegion` contract.
342
417
  - `Results.assertReadResult(result)` - validate the universal operation result plus any `region` and `matches` it exposes.
343
418
  - `Results.attachInstance(result, uri)` — attach the durable occurrence URI to a failed result.
344
419
 
@@ -347,18 +422,18 @@ durable `instance`, because only it knows the committed log coordinate. A
347
422
  malformed handler result is a plugin contract violation and fails hard; the
348
423
  consumer does not invent a fallback error or reinterpret arbitrary fields.
349
424
  The same discrimination applies to every `SchemeCtx` capability result:
350
- entries, channels, and tags never return a bare failure status.
425
+ entries and channels never return a bare failure status.
351
426
 
352
427
  ### Matcher dispatch - `Matcher` {§matcher-dispatch}
353
428
 
354
429
  - `Matcher.matchAgainstContent(body, content, mimetype, mimetypes)` is the body-matcher adapter over `Mimetypes.query` (glob/regex/jsonpath/xpath).
355
430
  - A match returns status 200 and `matches: MatchEvidence[]`.
356
- `MatchEvidence` is `{path?, region?}`. `path` preserves a structural locator;
431
+ `MatchEvidence` is `{locator?, region?}`. `locator` preserves a structural locator;
357
432
  `region` is a complete four-coordinate `TextRegion` only when the finding has
358
433
  an honest exact or nearest-enclosing mapping into the text the model can READ.
359
- Each item must contain at least one of `path` or `region`; other fields violate
434
+ Each item must contain at least one of `locator` or `region`; other fields violate
360
435
  the shared evidence contract.
361
- - The matcher is a boolean resource selector. It does not replace content with matched values or choose a retrieval window. `DefaultRead` returns the complete selected resource unless the authored READ supplies `<L>`.
436
+ - The matcher is a boolean resource selector. It does not replace content with matched values or choose a retrieval window. FIND owns selection and pagination; exact READ owns text projection.
362
437
  - Empty results return 204 with `matches: []`; `UnsupportedDialectError` maps to 415; `InvalidExpressionError` maps to 400; `QueryParseFailureError` maps to 203 with raw content, text/markdown, and `reason`.
363
438
  - A multi-resource matcher omits candidates that return 415 when at least one candidate supports the dialect. If no candidate supports it, the matcher returns the first exact 415 Problem. An unreadable binary marker therefore cannot poison a repository-wide text search or masquerade as a match.
364
439
 
@@ -371,22 +446,24 @@ database schemas, prepared-statement names, and private service modules.
371
446
  **Interfaces only**: this repo exports the contract and the consumer injects
372
447
  its implementation.
373
448
 
374
- `SchemeCtx` carries per-dispatch identity (`workspaceId`/`workerId`/`loopId`/`turnId`/`writer`/`signal`) plus **six live capability namespaces** replacing raw `db`:
449
+ `SchemeCtx` carries per-dispatch identity (`workspaceId`/`workerId`/`loopId`/`turnId`/`writer`/`signal`) plus **five live capability namespaces** replacing raw `db`:
375
450
 
376
451
  - `entries` — direct storage over the scheme's own namespace
377
452
  (`read`/`write`/`delete`) plus `operations`, the standard PLURNK
378
453
  `READ`/`EDIT`/`FIND`/`SEND` implementation for entry-bearing schemes.
379
454
  A write may omit channel state to select the `static` default; a successful
380
455
  storage read always returns each channel's persisted lifecycle state.
456
+ Optional `attributes` are scheme-private durable metadata. They are scoped to
457
+ that entry, replaced only when explicitly written, and never projected into
458
+ model content, catalogs, or client entry data.
381
459
  Standard operations are bound to the handler's manifest. Their optional
382
460
  owner is semantic: `"commons"` (default) or the current `"worker"`; database
383
461
  owner IDs are not part of the plugin contract. A handler may implement its
384
- own op method instead. In particular, a handler with `find()` owns FIND and
385
- fan-out; one without it receives the standard stored-entry behavior.
462
+ own op method instead. In particular, a handler with `find()` owns FIND; one
463
+ without it receives the standard stored-entry behavior.
386
464
  - `channels` — content writes + state (`append`/`replace`/`setState`).
387
- - `tags` — entry tags (`add`/`remove`/`list`).
388
465
  - `notify` — between-turn client signal (`streamEvent`, metadata-only); not model-facing. (No `wakeWorker`: the worker wake carries subscription-close context that only exists at stream completion, so it lives on `subscriptions.close`. Only streaming schemes wake a worker, always via close.)
389
- - `projection` — the text and bounded-byte projection capability in {§scheme-projection}. Acquisition schemes own bytes/DOM; they do not instantiate or second-guess the reader family. `null` means no readable projection.
466
+ - `projection` — the text and bounded-byte projection capability in {§scheme-projection}. Acquisition schemes own source representations; they do not instantiate or second-guess the reader family. `null` means no readable projection.
390
467
  - §scheme-subscriptions `subscriptions` — one streaming lifecycle:
391
468
 
392
469
  | Surface | Lifetime | Contract |
@@ -397,9 +474,14 @@ its implementation.
397
474
 
398
475
  `notifyChunk` appends and emits one stream event. Its optional stateless
399
476
  `mimetype` retypes the channel only when the stored type differs.
400
- `close` validates and persists the exact universal `SchemeResult`, settles
401
- channel state, unregisters the live handle, and wakes the worker. `summary` is
402
- presentation only; it never replaces or reconstructs the result.
477
+ `close(result, summary?, channelStates?)` validates and persists the exact
478
+ universal `SchemeResult`, settles channel state (exact named overrides, then the
479
+ result-status default), unregisters the live handle, and wakes the worker.
480
+ `summary` is presentation only; it never replaces or reconstructs the result.
481
+ An override names an existing channel and is exactly `closed` or `errored`;
482
+ invalid overrides fail before any channel state is changed. This permits one
483
+ multi-channel producer to preserve successful evidence beside an independently
484
+ failed representation without inventing another settlement path.
403
485
 
404
486
  There is **no `visibility` capability**: entry-level SHOW/HIDE was removed in the index/visibility teardown — SHOW/HIDE now collapse/expand `log://` rows, a log-side concern with no entry-visibility for a scheme to set.
405
487
 
@@ -1 +1 @@
1
- {"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,cAAc,EAAc,MAAM,YAAY,CAAC;AAuBjF,MAAM,CAAC,OAAO,OAAO,QAAQ;;IACzB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc,CA8CjE;CAgDJ"}
1
+ {"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,cAAc,EAAc,MAAM,YAAY,CAAC;AAwBjF,MAAM,CAAC,OAAO,OAAO,QAAQ;;IACzB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc,CA8CjE;CAgDJ"}
package/dist/Manifest.js CHANGED
@@ -9,6 +9,7 @@ const MANIFEST_FIELD_NAMES = new Set(Object.keys({
9
9
  volatile: true,
10
10
  modelVisible: true,
11
11
  folderScopes: true,
12
+ textEditScopes: true,
12
13
  foldedByDefault: true,
13
14
  flags: true,
14
15
  example: true,
@@ -60,7 +61,7 @@ export default class Manifest {
60
61
  }
61
62
  Manifest.#boolean(manifest, "volatile");
62
63
  Manifest.#boolean(manifest, "modelVisible");
63
- for (const field of ["folderScopes", "foldedByDefault"])
64
+ for (const field of ["folderScopes", "textEditScopes", "foldedByDefault"])
64
65
  Manifest.#optionalBoolean(manifest, field);
65
66
  for (const field of ["example", "documentation", "storedScheme"])
66
67
  Manifest.#optionalString(manifest, field);
@@ -1 +1 @@
1
- {"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"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"}
package/dist/Matcher.js CHANGED
@@ -16,7 +16,7 @@ export default class Matcher {
16
16
  for (const match of matches) {
17
17
  const regions = match.regions ?? [];
18
18
  if (regions.length === 0 && match.matching !== undefined) {
19
- const item = Results.assertMatchEvidence({ path: match.matching });
19
+ const item = Results.assertMatchEvidence({ locator: match.matching });
20
20
  const key = JSON.stringify(item);
21
21
  if (!seen.has(key)) {
22
22
  seen.add(key);
@@ -26,7 +26,7 @@ export default class Matcher {
26
26
  }
27
27
  for (const region of regions) {
28
28
  const item = Results.assertMatchEvidence({
29
- ...(match.matching === undefined ? {} : { path: match.matching }),
29
+ ...(match.matching === undefined ? {} : { locator: match.matching }),
30
30
  region,
31
31
  });
32
32
  const key = JSON.stringify(item);
@@ -1 +1 @@
1
- {"version":3,"file":"Matcher.js","sourceRoot":"","sources":["../src/Matcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Matcher.js","sourceRoot":"","sources":["../src/Matcher.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  // per-tag runtime declaration. An
3
3
  // executor authors NO SchemeManifest: its `plurnk.runtimes[]` entry already
4
4
  // carries name / glyph / example / output-channels, and everything else is the shared
5
- // read-only-output default. So `EXEC[sh]` gets `sh://` for free, and a multi-tag
5
+ // read-only-output default. So EXEC runtime `sh` gets `sh://` for free, and a multi-tag
6
6
  // executor (search/news/images) derives a distinct manifest per tag.
7
7
  export default class OutputScheme {
8
8
  // The read-only-output default. An executor-scheme is a read-VIEW over
@@ -1 +1 @@
1
- {"version":3,"file":"OutputScheme.js","sourceRoot":"","sources":["../src/OutputScheme.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,kCAAkC;AAClC,4EAA4E;AAC5E,sFAAsF;AACtF,iFAAiF;AACjF,qEAAqE;AAcrE,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,uEAAuE;IACvE,wEAAwE;IACxE,6EAA6E;IAC7E,wEAAwE;IACxE,qEAAqE;IACrE,0EAA0E;IAC1E,MAAM,CAAC,mBAAmB,CAAC,IAAiB;QACxC,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,IAAI;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC;IACN,CAAC;CACJ"}
1
+ {"version":3,"file":"OutputScheme.js","sourceRoot":"","sources":["../src/OutputScheme.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,kCAAkC;AAClC,4EAA4E;AAC5E,sFAAsF;AACtF,wFAAwF;AACxF,qEAAqE;AAcrE,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,uEAAuE;IACvE,wEAAwE;IACxE,6EAA6E;IAC7E,wEAAwE;IACxE,qEAAqE;IACrE,0EAA0E;IAC1E,MAAM,CAAC,mBAAmB,CAAC,IAAiB;QACxC,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,IAAI;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC;IACN,CAAC;CACJ"}
package/dist/Results.d.ts CHANGED
@@ -16,8 +16,21 @@ export interface SchemeResult {
16
16
  export interface SchemeResultBase extends SchemeResult {
17
17
  readonly problem?: ProblemDetails;
18
18
  }
19
+ export interface ChannelProducerResult extends SchemeResultBase {
20
+ readonly content?: never;
21
+ readonly mimetype?: never;
22
+ readonly channel?: never;
23
+ readonly startLine?: never;
24
+ readonly lineAnchorIdentity?: never;
25
+ readonly lineAnchors?: never;
26
+ readonly region?: never;
27
+ readonly matches?: never;
28
+ readonly range?: never;
29
+ }
30
+ export interface RepresentationPreparationResult extends SchemeResultBase {
31
+ }
19
32
  export interface MatchEvidence {
20
- readonly path?: string;
33
+ readonly locator?: string;
21
34
  readonly region?: TextRegion;
22
35
  }
23
36
  export interface EntryResult extends SchemeResultBase {
@@ -57,6 +70,8 @@ export default class Results {
57
70
  static assertMatchEvidence(evidence: unknown): MatchEvidence;
58
71
  static assertMatchEvidenceList(evidence: unknown): ReadonlyArray<MatchEvidence>;
59
72
  static assertReadResult<T extends SchemeResult>(result: T): T;
73
+ static assertRepresentationPreparation<T extends RepresentationPreparationResult>(result: T): T;
74
+ static assertChannelProducerResult<T extends ChannelProducerResult>(result: T): T;
60
75
  static assertScopeNormalizations(value: unknown): ReadonlyArray<ScopeNormalization>;
61
76
  static assert<T extends SchemeResult>(result: T): T;
62
77
  static attachInstance<T extends SchemeResult>(result: T, instance: string): T;