@descryy/runtime-contracts 0.2.0 → 0.3.1
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 +6 -0
- package/dist/capability.d.ts +20 -66
- package/dist/capability.d.ts.map +1 -1
- package/dist/capability.js +6 -14
- package/dist/capability.js.map +1 -1
- package/dist/collector.d.ts +34 -86
- package/dist/collector.d.ts.map +1 -1
- package/dist/collector.js +12 -33
- package/dist/collector.js.map +1 -1
- package/dist/correlation.d.ts +10 -42
- package/dist/correlation.d.ts.map +1 -1
- package/dist/correlation.js +8 -28
- package/dist/correlation.js.map +1 -1
- package/dist/evidence.d.ts +112 -206
- package/dist/evidence.d.ts.map +1 -1
- package/dist/evidence.js +62 -138
- package/dist/evidence.js.map +1 -1
- package/dist/execution.d.ts +103 -213
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +6 -14
- package/dist/execution.js.map +1 -1
- package/dist/runtime-event.d.ts +13 -31
- package/dist/runtime-event.d.ts.map +1 -1
- package/dist/runtime-event.js +81 -218
- package/dist/runtime-event.js.map +1 -1
- package/dist/source-root.d.ts +33 -60
- package/dist/source-root.d.ts.map +1 -1
- package/dist/source-root.js +23 -44
- package/dist/source-root.js.map +1 -1
- package/package.json +6 -1
package/dist/evidence.d.ts
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Evidence contract
|
|
2
|
+
* Evidence contract, per §13 (evidence model), plus `evidenceId` (the
|
|
3
|
+
* ID-reference pattern Execution uses) and `stackTrace`. `confidence` is
|
|
4
|
+
* the resolution-honesty axis (§9), never conflated with environment
|
|
5
|
+
* fidelity (lives on Execution/Capability). Redaction per §25.
|
|
3
6
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Execution uses) and `stackTrace` (structured detail for the plan's
|
|
7
|
-
* STACK_TRACE event type, per Agent 3's stack-fidelity finding below). Also
|
|
8
|
-
* grounded in the architecture doc's §18.2 (evidence bundling —
|
|
9
|
-
* screenshot/console/network/backend log, "none of these individually
|
|
10
|
-
* would have been enough"), §17.2 (the observe stream), §9 (the three
|
|
11
|
-
* confidence axes — this file's `confidence` field is the resolution-
|
|
12
|
-
* honesty axis, never conflated with environment fidelity, which lives on
|
|
13
|
-
* Execution/Capability instead) and §25 (redaction before storage).
|
|
14
|
-
*
|
|
15
|
-
* Static facts and runtime observations stay separate. Evidence never
|
|
16
|
-
* embeds a graph node's data — `graphNodeId` is a reference into
|
|
17
|
-
* @descryy/ir's identity scheme, resolved by whoever reads it. This file
|
|
18
|
-
* does not, and must not, redefine graph identity or storage.
|
|
7
|
+
* Evidence never embeds a graph node's data — `graphNodeId` is a reference
|
|
8
|
+
* into @descryy/ir's identity scheme, resolved by whoever reads it.
|
|
19
9
|
*/
|
|
20
10
|
import type { RuntimeEventType } from "./runtime-event.ts";
|
|
21
11
|
export declare const EVIDENCE_SOURCES: readonly ["browser-dom", "browser-console", "browser-network", "backend-log", "backend-process", "process-exit", "http-response-payload", "test-runner", "harness", "dependency-check", "environment-check"];
|
|
@@ -23,89 +13,58 @@ export type EvidenceSource = (typeof EVIDENCE_SOURCES)[number];
|
|
|
23
13
|
export declare const REDACTION_STATUSES: readonly ["not-required", "redacted", "pending-redaction"];
|
|
24
14
|
export type RedactionStatus = (typeof REDACTION_STATUSES)[number];
|
|
25
15
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* conflating them into a single confidence number loses exactly the
|
|
16
|
+
* Three structurally different classes, not one axis with a probabilistic
|
|
17
|
+
* middle — collapsing them into a confidence number would lose the
|
|
29
18
|
* information a reader needs to judge a location claim:
|
|
30
19
|
*
|
|
31
|
-
* - self-contained:
|
|
32
|
-
*
|
|
33
|
-
* Accurate when captured; the risk is *capture completeness*, not
|
|
20
|
+
* - self-contained: from the process's own captured state (Python/Ruby
|
|
21
|
+
* traceback, Go `recover()` frame). Risk is capture completeness, not
|
|
34
22
|
* correctness.
|
|
35
23
|
* - debug-info-present / debug-info-stripped: a binary's own line-number
|
|
36
|
-
* table (Java/Kotlin)
|
|
37
|
-
* - side-artifact-resolved /
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* `
|
|
47
|
-
* `(eval at file.rb:12):1`, where `12` is where `eval` was called from
|
|
48
|
-
* but `1` counts lines within the evaluated string, not within
|
|
49
|
-
* `file.rb`. Opening `file.rb` at line `1` shows unrelated code, so this
|
|
50
|
-
* is not a plain self-contained claim; it is not a side-artifact claim
|
|
51
|
-
* either, since nothing was resolved through a separate file. See
|
|
52
|
-
* `packages/adapter-ruby/src/ruby-source-location-resolver.ts` for the
|
|
53
|
-
* one producer of this value.
|
|
24
|
+
* table (Java/Kotlin) — binary outcome, no partial case.
|
|
25
|
+
* - side-artifact-resolved / -stale / -missing: resolved through a
|
|
26
|
+
* separate file that can drift or vanish (source map, PDB, dSYM) —
|
|
27
|
+
* "mapped and right" vs. "mapped through something that may be stale"
|
|
28
|
+
* are different claims.
|
|
29
|
+
* - self-contained-eval-line: same mechanism as self-contained, but the
|
|
30
|
+
* line doesn't index the named file. Ruby's `eval` frames print
|
|
31
|
+
* `(eval at file.rb:12):1` — `12` is the eval call site, `1` counts
|
|
32
|
+
* lines in the evaluated string, not in `file.rb`. Neither plain
|
|
33
|
+
* self-contained nor side-artifact. See
|
|
34
|
+
* `packages/adapter-ruby/src/ruby-source-location-resolver.ts`.
|
|
54
35
|
*/
|
|
55
36
|
export declare const SOURCE_LOCATION_RELIABILITIES: readonly ["self-contained", "debug-info-present", "debug-info-stripped", "side-artifact-resolved", "side-artifact-stale", "side-artifact-missing", "self-contained-eval-line"];
|
|
56
37
|
export type SourceLocationReliability = (typeof SOURCE_LOCATION_RELIABILITIES)[number];
|
|
57
38
|
export interface SourceLocation {
|
|
58
39
|
/**
|
|
59
|
-
*
|
|
60
|
-
* `
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* and a native one is `(Native Method)`: neither carries a filename. The
|
|
64
|
-
* method name is still real evidence and still resolves against the graph
|
|
65
|
-
* by symbol, so dropping such frames would delete an entire stack for a
|
|
66
|
-
* release build.
|
|
40
|
+
* Null when the runtime named no source file — a stripped JVM frame
|
|
41
|
+
* (`Unknown Source`) or native frame carry no filename, but the method
|
|
42
|
+
* name still resolves against the graph by symbol, so such frames
|
|
43
|
+
* aren't dropped.
|
|
67
44
|
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* `Foo` may be declared in `Bar.kt` — and this parser serves both
|
|
71
|
-
* languages, so the derivation would be right for one and wrong for the
|
|
72
|
-
* other. Null is the honest answer.
|
|
45
|
+
* Not derived from the class name: Kotlin breaks that convention (class
|
|
46
|
+
* `Foo` may live in `Bar.kt`), so null is the honest answer.
|
|
73
47
|
*/
|
|
74
48
|
readonly file: string | null;
|
|
75
49
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* the default for many release builds) prints
|
|
82
|
-
* `at com.example.Thrower.handler(Unknown Source)`: the class is real,
|
|
83
|
-
* the method is real, and there is no line. So is a `(Native Method)`
|
|
84
|
-
* frame. `reliability: "debug-info-stripped"` describes exactly that
|
|
85
|
-
* situation — meaning that while this field was required, that enum value
|
|
86
|
-
* could only ever be attached to a **fabricated** number. The type and
|
|
87
|
-
* the enum contradicted each other, and the type was wrong.
|
|
88
|
-
*
|
|
89
|
-
* A frame with no line is still real evidence: the symbol name alone
|
|
90
|
-
* resolves against the graph. Dropping such frames would discard an
|
|
91
|
-
* entire stack for a stripped build, which is the "we could not read it"
|
|
92
|
-
* case that must degrade honestly rather than vanish.
|
|
50
|
+
* Null when the runtime genuinely captured no line — a real state, not
|
|
51
|
+
* a failure to look. A JVM class compiled without a `LineNumberTable`
|
|
52
|
+
* (`javac -g:none`) prints `Unknown Source`: real class, real method, no
|
|
53
|
+
* line. `reliability: "debug-info-stripped"` names exactly this case —
|
|
54
|
+
* making `line` optional here rather than fabricating a number.
|
|
93
55
|
*/
|
|
94
56
|
readonly line: number | null;
|
|
95
57
|
readonly column: number | null;
|
|
96
58
|
readonly functionName: string | null;
|
|
97
59
|
readonly reliability: SourceLocationReliability;
|
|
98
|
-
/** Set only for
|
|
60
|
+
/** Set only for side-artifact-* reliabilities — names the map/PDB/dSYM, so a stale finding traces to the file that drifted. */
|
|
99
61
|
readonly resolvedVia: string | null;
|
|
100
62
|
}
|
|
101
63
|
/**
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
* caller" guarantee. That is not a low-confidence stack — it is a
|
|
107
|
-
* different kind of evidence, and gets its own field rather than a lower
|
|
108
|
-
* number folded into `confidence`.
|
|
64
|
+
* Orthogonal to `confidence`: concurrency models (coroutines, goroutines,
|
|
65
|
+
* async/await, tokio tasks) can capture a stack successfully while
|
|
66
|
+
* structurally breaking the "reflects the logical caller" guarantee. Not
|
|
67
|
+
* a low-confidence stack — a different kind of evidence, own field.
|
|
109
68
|
*/
|
|
110
69
|
export declare const STACK_FIDELITIES: readonly ["synchronous", "concurrency-fragmented", "unavailable"];
|
|
111
70
|
export type StackFidelity = (typeof STACK_FIDELITIES)[number];
|
|
@@ -117,81 +76,44 @@ export interface StackFrame {
|
|
|
117
76
|
export interface StackTrace {
|
|
118
77
|
readonly fidelity: StackFidelity;
|
|
119
78
|
/**
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* knows its own runtime's convention, never in a consumer that would have
|
|
131
|
-
* to ask which language produced the trace to know which end to read.
|
|
132
|
-
*
|
|
133
|
-
* Getting this wrong is quiet rather than loud: the trace still has the
|
|
134
|
-
* right frames and the right count, and root-cause traversal simply
|
|
135
|
-
* points at whichever end of the call chain happens to be first —
|
|
136
|
-
* typically the process entry point instead of the failing line.
|
|
79
|
+
* Most-recent call first, always — `frames[0]` is the innermost frame.
|
|
80
|
+
* Every parser normalises to this; callers may rely on it.
|
|
81
|
+
*
|
|
82
|
+
* Not universal: V8 emits this order natively, but a CPython traceback
|
|
83
|
+
* prints oldest-call-first, failing frame last. The adapter for such a
|
|
84
|
+
* runtime reverses during parsing — the ordering decision belongs there,
|
|
85
|
+
* never in a consumer that would have to ask which language produced
|
|
86
|
+
* the trace. Getting this wrong is quiet: right frames, right count,
|
|
87
|
+
* but root-cause traversal points at the wrong end of the call chain
|
|
88
|
+
* (typically the entry point instead of the failing line).
|
|
137
89
|
*/
|
|
138
90
|
readonly frames: readonly StackFrame[];
|
|
139
91
|
/**
|
|
140
|
-
* Which frame is the
|
|
141
|
-
* to. Usually `0
|
|
92
|
+
* Which frame is the failure site — the one a developer should be sent
|
|
93
|
+
* to. Usually `0`, not always: on several runtimes the innermost frame
|
|
94
|
+
* is the runtime's own, above the application's. Measured on live
|
|
95
|
+
* servers (RT-120/121):
|
|
142
96
|
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
* `frames[0]` is reliably the *innermost* frame. On several runtimes the
|
|
146
|
-
* innermost frame is the runtime's own, sitting above the application's,
|
|
147
|
-
* and is therefore innermost and useless. Measured on live still-running
|
|
148
|
-
* servers (Lane C, RT-120/121):
|
|
149
|
-
*
|
|
150
|
-
* | runtime | `frames[0]` | the failure site |
|
|
97
|
+
* | runtime | `frames[0]` | failure site |
|
|
151
98
|
* | --- | --- | --- |
|
|
152
|
-
* | Go, recovered `net/http`
|
|
153
|
-
* | Rust, threaded server | `__rustc::rust_begin_unwind`
|
|
154
|
-
*
|
|
155
|
-
* The JVM's `Caused by:` chains, C#'s `--- End of stack trace from previous
|
|
156
|
-
* location ---` and Kotlin's coroutine frames are the same shape.
|
|
157
|
-
*
|
|
158
|
-
* ## Why this is not a heuristic
|
|
159
|
-
*
|
|
160
|
-
* **Each runtime marks the boundary itself**, which is the entire reason
|
|
161
|
-
* this is expressible as an index rather than as a filter:
|
|
162
|
-
*
|
|
163
|
-
* - Go prints a `panic(` frame **only** when the stack was walked through a
|
|
164
|
-
* recover — an unrecovered panic has none. Measured both ways.
|
|
165
|
-
* - Rust's header names the panic site with line *and column*, and exactly
|
|
166
|
-
* one frame matches it.
|
|
99
|
+
* | Go, recovered `net/http` panic | `net/http.(*conn).serve.func1` @ `server.go:1897` | several frames down |
|
|
100
|
+
* | Rust, threaded server | `__rustc::rust_begin_unwind` @ `panicking.rs:698` | after five std/core frames |
|
|
167
101
|
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* denylists a stdlib path — a path-shaped filter is the thing this field
|
|
171
|
-
* exists to make unnecessary, and it would break on any application that
|
|
172
|
-
* legitimately fails inside a library frame.
|
|
102
|
+
* JVM `Caused by:` chains, C# and Kotlin coroutine frames are the same
|
|
103
|
+
* shape.
|
|
173
104
|
*
|
|
174
|
-
*
|
|
105
|
+
* Not a heuristic: each runtime marks the boundary itself (Go's `panic(`
|
|
106
|
+
* frame only appears when walked through recover; Rust's header names
|
|
107
|
+
* the panic site by line/column), so the adapter reads that marker
|
|
108
|
+
* directly rather than denylisting stdlib paths.
|
|
175
109
|
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
* `adapter-rust`'s standing decision intact — *"std/core frames are kept;
|
|
179
|
-
* filtering them would be a readability judgment applied to evidence"* —
|
|
180
|
-
* rather than superseding it. `payload.raw` keeps the verbatim block as
|
|
181
|
-
* well, as always.
|
|
110
|
+
* Nothing is dropped — all frames stay in `frames` (a view, not a
|
|
111
|
+
* filter; `adapter-rust`'s "std/core frames are kept" stands).
|
|
182
112
|
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
* an adapter that never considered the question would keep today's behaviour
|
|
188
|
-
* with no signal that it never considered it. Where the innermost frame
|
|
189
|
-
* genuinely is the failure site the answer is `0` — but stated, not
|
|
190
|
-
* defaulted.
|
|
191
|
-
*
|
|
192
|
-
* Consumers must treat an out-of-range value as a fault rather than
|
|
193
|
-
* clamping to `0`: a silent fallback would reintroduce exactly the defect
|
|
194
|
-
* this field removes, through the error path instead of the happy one.
|
|
113
|
+
* Required, not optional (same reasoning as `processLifecycle`,
|
|
114
|
+
* RT-056): an optional field is one an adapter can silently omit.
|
|
115
|
+
* Consumers must treat an out-of-range value as a fault, not clamp to
|
|
116
|
+
* `0` — a silent fallback would reintroduce the defect this removes.
|
|
195
117
|
*/
|
|
196
118
|
readonly primaryFrameIndex: number;
|
|
197
119
|
}
|
|
@@ -200,7 +122,7 @@ export interface Evidence {
|
|
|
200
122
|
readonly executionId: string;
|
|
201
123
|
readonly timestamp: string;
|
|
202
124
|
readonly source: EvidenceSource;
|
|
203
|
-
/** Which owned system this came from (§16.7)
|
|
125
|
+
/** Which owned system this came from (§16.7), null when not applicable. */
|
|
204
126
|
readonly service: string | null;
|
|
205
127
|
/** ProcessHandle.processId, when this evidence is attributable to one process. */
|
|
206
128
|
readonly process: string | null;
|
|
@@ -219,78 +141,62 @@ export interface Evidence {
|
|
|
219
141
|
readonly confidence: number;
|
|
220
142
|
readonly redactionStatus: RedactionStatus;
|
|
221
143
|
/**
|
|
222
|
-
* The `version`
|
|
223
|
-
* produced this row
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
* always known, never probed) and as `@descryy/ir`'s `producedBy` (`adapterId@version`,
|
|
228
|
-
* "drives graph invalidation on adapter upgrade") applied to evidence instead of
|
|
229
|
-
* IR nodes — see RUNTIME-CHECKLIST.md §3/§19/§23: without this, evidence "cannot
|
|
230
|
-
* be invalidated by collector version the way IR nodes can."
|
|
144
|
+
* The `version` from the `package.json` owning the collector that
|
|
145
|
+
* produced this row, read at module load, never hand-duplicated. Same
|
|
146
|
+
* idea as `@descryy/ir`'s `producedBy` (drives graph invalidation on
|
|
147
|
+
* adapter upgrade), applied to evidence — without it, evidence can't be
|
|
148
|
+
* invalidated by collector version the way IR nodes can.
|
|
231
149
|
*
|
|
232
|
-
* Required, not optional,
|
|
233
|
-
* required: an optional field is one an existing collector can silently omit,
|
|
234
|
-
* with no signal that it never considered the question.
|
|
150
|
+
* Required, not optional, same reasoning as `primaryFrameIndex`.
|
|
235
151
|
*/
|
|
236
152
|
readonly collectorVersion: string;
|
|
153
|
+
/**
|
|
154
|
+
* True when this evidence originates from content that already existed in
|
|
155
|
+
* the observed source BEFORE this run began watching it — e.g. lines an
|
|
156
|
+
* attach-mode target had already written to its log file at the moment
|
|
157
|
+
* `attachToRunningProcess`/`attachManagedProcess` attached (RT-N3). Real,
|
|
158
|
+
* useful evidence, never discarded and never hidden from a reader — this
|
|
159
|
+
* only records that the runtime did not observe it happen.
|
|
160
|
+
*
|
|
161
|
+
* **Gates R4 promotion, not visibility.** `resolveObservedCrossServiceCall`
|
|
162
|
+
* (`@descryy/runtime-graph-correlator`) refuses to mint or confirm an
|
|
163
|
+
* `observedByRun` graph edge from evidence carrying this flag: R4 means
|
|
164
|
+
* "observed by THIS run," and content written before the run started
|
|
165
|
+
* watching was not, even though it is genuinely real and worth showing.
|
|
166
|
+
*
|
|
167
|
+
* Optional and true-only, same convention as `ProcessHandle.attached`: a
|
|
168
|
+
* collector with no attach/observation boundary to report (an ordinary
|
|
169
|
+
* spawned process, a browser page, a test runner) never sets this at all.
|
|
170
|
+
* Absent means "no boundary applies here" — never read as `false`.
|
|
171
|
+
*/
|
|
172
|
+
readonly preExisting?: boolean;
|
|
237
173
|
}
|
|
238
174
|
/**
|
|
239
|
-
* Which `SourceLocation` an `Evidence` carries for a
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
* ## Why it lives in the contract rather than in each collector
|
|
243
|
-
*
|
|
244
|
-
* It was written twice. `backend-observation`'s collector was moved onto
|
|
245
|
-
* `primaryFrameIndex` (RT-083); `browser`'s console collector kept its own
|
|
246
|
-
* `frames[0]` copy and nothing failed, because V8 reports
|
|
247
|
-
* `primaryFrameIndex: 0` and the two rules agree there **by coincidence**.
|
|
248
|
-
* A copied rule is a rule that will hold in one of them, and this one held
|
|
249
|
-
* in one of them for exactly as long as one runtime was involved.
|
|
175
|
+
* Which `SourceLocation` an `Evidence` carries for a stack — one rule, one
|
|
176
|
+
* place, for every collector (was written twice and only agreed by
|
|
177
|
+
* coincidence, RT-083, since V8 always reports index 0).
|
|
250
178
|
*
|
|
251
|
-
*
|
|
179
|
+
* `StackFrame.location` isn't nullable, so an unresolved frame still
|
|
180
|
+
* carries a `SourceLocation` with everything null. Returning it as-is
|
|
181
|
+
* would make `evidence-package.ts`'s `sourceLocation !== null` census
|
|
182
|
+
* count an unsymbolicated crash as located (measured, RT-126: a Swift CI
|
|
183
|
+
* crash with an address-only backtrace).
|
|
252
184
|
*
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
-
* `evidence-package.ts` censuses located evidence with `sourceLocation !==
|
|
258
|
-
* null`. An unsymbolicated crash would be counted as *located* in the very
|
|
259
|
-
* artifact handed to a model — RT-124's shape (a thing reported as the thing
|
|
260
|
-
* it failed to be), one field over.
|
|
185
|
+
* Discriminator is `functionName`, not `file`: a stripped JVM frame and a
|
|
186
|
+
* Rust release frame both have null file but a real symbol, resolvable
|
|
187
|
+
* against the graph by name — keying on `file` would delete the location
|
|
188
|
+
* for every stripped build.
|
|
261
189
|
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
* ## The discriminator is `functionName`, not `file`
|
|
267
|
-
*
|
|
268
|
-
* A stripped JVM frame (`at com.example.Thrower.handler(Unknown Source)`)
|
|
269
|
-
* and a Rust release frame both have a null file **and a real symbol**,
|
|
270
|
-
* which `SourceLocation.file`'s own doc calls real evidence that still
|
|
271
|
-
* resolves against the graph by name. `adapter-jvm` and `adapter-rust` each
|
|
272
|
-
* assert exactly that. Keying emptiness on a null file would delete the
|
|
273
|
-
* location for every stripped build in both languages — the case this type
|
|
274
|
-
* was widened to express.
|
|
275
|
-
*
|
|
276
|
-
* ## Nothing is lost by returning null
|
|
277
|
-
*
|
|
278
|
-
* The frames stay on `Evidence.stackTrace` with their raw text and their
|
|
279
|
-
* `reliability`. "There was no stack" and "there was a stack that could name
|
|
280
|
-
* nothing" therefore remain distinguishable **on the same record**, because
|
|
281
|
-
* `stackTrace` separates them. That recoverability is the test for whether
|
|
282
|
-
* nulling a field is honest degradation or information loss; here it is the
|
|
283
|
-
* first.
|
|
190
|
+
* Nothing is lost by returning null: frames stay on `Evidence.stackTrace`
|
|
191
|
+
* with raw text and reliability, so "no stack" and "a stack naming
|
|
192
|
+
* nothing" stay distinguishable on the same record.
|
|
284
193
|
*/
|
|
285
194
|
export declare function primaryFrameLocation(stackTrace: StackTrace | null): SourceLocation | null;
|
|
286
195
|
/**
|
|
287
|
-
* True when a location identifies no place in any source.
|
|
288
|
-
*
|
|
289
|
-
* `
|
|
290
|
-
*
|
|
291
|
-
* location informative. `reliability` and `resolvedVia` are not consulted
|
|
292
|
-
* either — they record *why* nothing resolved, which describes the failure
|
|
293
|
-
* rather than a place.
|
|
196
|
+
* True when a location identifies no place in any source. `column` isn't
|
|
197
|
+
* consulted — an offset into a null line names no position. `reliability`
|
|
198
|
+
* and `resolvedVia` aren't either — they record why nothing resolved, not
|
|
199
|
+
* a place.
|
|
294
200
|
*/
|
|
295
201
|
export declare function locationNamesNothing(location: SourceLocation): boolean;
|
|
296
202
|
//# sourceMappingURL=evidence.d.ts.map
|
package/dist/evidence.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"}
|