@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.
@@ -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
- * Field list is verbatim from `documents/descry-runtime-plan.md` §13
5
- * (Evidence model), plus `evidenceId` (needed for the ID-reference pattern
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
- * Source-location reliability is not one axis with a probabilistic middle —
27
- * it is three structurally different classes (Agent 3's finding), and
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: the location came from the process's own captured
32
- * state (a Python traceback, a Ruby backtrace, a Go `recover()` frame).
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). A binary outcome — there is no partial case.
37
- * - side-artifact-resolved / side-artifact-stale / side-artifact-missing:
38
- * resolution went through a separate file that can drift or vanish
39
- * (a Node source map, a C# PDB, a Swift dSYM). "We mapped it and it's
40
- * right" and "we mapped it through an artifact that may be stale" are
41
- * different confidence claims, and this type is what lets Evidence say
42
- * which one it is instead of reporting both identically.
43
- * - self-contained-eval-line: same mechanism as self-contained — the
44
- * process's own captured backtrace, nothing translated through a side
45
- * artifact — but the *line* does not index the named file. Ruby's
46
- * `instance_eval`/`eval` frames print a synthetic path,
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
- * **Null when the runtime named no source file**, for the same reason
60
- * `line` can be null and discovered by the same adapter.
61
- *
62
- * A stripped JVM frame is `at com.example.Thrower.handler(Unknown Source)`
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
- * The filename is **not** derived from the class name, though the JVM
69
- * convention makes that look safe. Kotlin breaks it outright — a class
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
- * **Null when the runtime genuinely captured no line**, which is a real
77
- * state rather than a failure to look — and one this type could not
78
- * express until a JVM adapter existed to need it.
79
- *
80
- * A JVM class compiled without a `LineNumberTable` (`javac -g:none`, and
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 the side-artifact-* reliabilities — names the specific map/PDB/dSYM, so a stale-artifact finding is traceable to the file that drifted. Null otherwise. */
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
- * Whether a captured stack reflects the actual logical call chain is a
103
- * third, orthogonal axis (Agent 3's finding): concurrency models
104
- * (coroutines, goroutines, async/await, tokio tasks) can capture a stack
105
- * successfully while structurally breaking the "reflects the logical
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
- * **Most-recent call first**, always — `frames[0]` is the innermost frame,
121
- * the one where execution actually was. Every parser normalises to this;
122
- * callers may rely on it.
123
- *
124
- * This was unstated while TypeScript was the only language, because V8
125
- * emits this order natively and nothing had to convert. It is not a
126
- * universal convention: a CPython traceback prints **oldest call first**,
127
- * with the failing frame last, and so does a Java `printStackTrace` cause
128
- * chain read naively. An adapter for such a runtime reverses during
129
- * parsing — the ordering decision belongs in the language adapter, which
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 **failure site** — the one a developer should be sent
141
- * to. Usually `0`; not always, and the exceptions are not exotic.
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
- * ## Why an index and not `frames[0]`
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` handler panic | `net/http.(*conn).serve.func1` at `server.go:1897` | several frames down |
153
- * | Rust, threaded server | `__rustc::rust_begin_unwind` at `panicking.rs:698` | after five `std`/`core` frames |
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
- * So the adapter that knows its runtime reads that runtime's own marker.
169
- * Nothing above the IR boundary names a language, and nothing anywhere
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
- * ## Nothing is dropped
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
- * Every frame stays in `frames`, including the unwinding frames above the
177
- * failure site. This is a **view**, not a filter, which is what keeps
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
- * ## Required, deliberately
184
- *
185
- * Not optional, for the reason RT-056 records about `processLifecycle`:
186
- * **an optional field is one every existing adapter may silently omit**, and
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) — null when not applicable. */
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` field of the `package.json` that owns the collector which
223
- * produced this row (e.g. `@descryhq-wq/runtime-browser`'s own version for
224
- * browser-sourced evidence) — read from the package at module load, never
225
- * hand-duplicated into a second string that can drift from what actually
226
- * shipped. Same idea as `nodeVersion` elsewhere in this repo (`process.version`,
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, for the same reason `primaryFrameIndex` above is
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 given stack — one rule,
240
- * in one place, for every collector that turns a trace into evidence.
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
- * ## The empty location, which is the part that is not obvious
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
- * `StackFrame.location` is not nullable, so a frame that resolved nothing
254
- * still carries a `SourceLocation` — one whose `file`, `line` and
255
- * `functionName` are all null. Returning it would set
256
- * `Evidence.sourceLocation` to a non-null object naming nothing, and
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
- * Measured rather than imagined (Lane C, RT-126): on a CI runner a real
263
- * Swift crash produced a real three-thread backtrace in which every frame is
264
- * address-only — no symbol, no `at file:line`.
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
- * `column` is deliberately not consulted: a column is an offset into a line,
290
- * so with no line it names no position and cannot make an otherwise-empty
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
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"}