@orkestrel/probe 0.0.26 → 0.0.28

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.
@@ -60,27 +60,6 @@ text: StringShape;
60
60
  }, false>;
61
61
  }, false>;
62
62
 
63
- /**
64
- * Carries one stage's outcome: what it cost and what it reported.
65
- *
66
- * @remarks
67
- * An empty `issues` list is the clean result. There is no separate pass flag, because passing is
68
- * exactly the absence of issues and a stored flag could disagree with the list beside it.
69
- *
70
- * @example
71
- * ```ts
72
- * const check: Check = { stage: 'lint', elapsed: 17, issues: [] }
73
- * ```
74
- */
75
- export declare interface Check {
76
- /** Names the stage that produced this outcome. */
77
- readonly stage: Stage;
78
- /** Holds the milliseconds the stage took. */
79
- readonly elapsed: number;
80
- /** Holds every message the stage's tool reported, in the tool's own order. */
81
- readonly issues: readonly Issue[];
82
- }
83
-
84
63
  /**
85
64
  * Carries everything the service needs to produce one verdict.
86
65
  *
@@ -189,8 +168,8 @@ reason: StringShape;
189
168
  * Computes the proof token a verdict carries, or returns nothing when the claim was not proven.
190
169
  *
191
170
  * @remarks
192
- * A receipt is minted on these conditions together: both phases report one check per stage, the
193
- * case carries no issue, the control carries at least one `origin: 'claimant'` issue
171
+ * A receipt is minted on these conditions together: both phases report one stage result per stage,
172
+ * the case carries no issue, the control carries at least one `origin: 'claimant'` issue
194
173
  * at the stage it declared, and every other control stage carries no claimant issue. A control
195
174
  * that fails somewhere else has falsified the instrument rather than the claim, so no receipt is
196
175
  * minted for it.
@@ -216,7 +195,7 @@ reason: StringShape;
216
195
  * refuses the receipt. A workspace issue in the control does not decide whether the claimant's
217
196
  * candidate broke, while one in the case still means that the case did not run clean.
218
197
  *
219
- * @param verdict - The verdict whose case and control checks decide the outcome
198
+ * @param verdict - The verdict whose case and control stage results decide the outcome
220
199
  * @param stage - The stage the claim's control declared it must fail at
221
200
  * @returns The receipt token, or `undefined` when any condition fails
222
201
  *
@@ -351,24 +330,6 @@ path: StringShape;
351
330
  text: StringShape;
352
331
  }, false>;
353
332
 
354
- /**
355
- * Renders one stage's outcome as its summary line followed by every message it reported.
356
- *
357
- * @remarks
358
- * A clean stage renders one line. The count appears even when it is zero, because that line is
359
- * what shows a reader the stage ran; a silent stage and a skipped stage read the same.
360
- *
361
- * @param check - The stage outcome to render
362
- * @returns The summary line, then one indented line per issue
363
- *
364
- * @example
365
- * ```ts
366
- * formatCheck({ stage: 'lint', elapsed: 17, issues: [] })
367
- * // 'lint: 0 issues (17 ms)'
368
- * ```
369
- */
370
- export declare function formatCheck(check: Check): string;
371
-
372
333
  /**
373
334
  * Renders one tool message as a single line an agent can classify and locate.
374
335
  *
@@ -463,6 +424,24 @@ export declare function formatReceipt(verdict: Verdict): string;
463
424
  */
464
425
  export declare function formatSpecification(text: string, revision: string): string;
465
426
 
427
+ /**
428
+ * Renders one stage's outcome as its summary line followed by every message it reported.
429
+ *
430
+ * @remarks
431
+ * A clean stage renders one line. The count appears even when it is zero, because that line is
432
+ * what shows a reader the stage ran; a silent stage and a skipped stage read the same.
433
+ *
434
+ * @param result - The stage outcome to render
435
+ * @returns The summary line, then one indented line per issue
436
+ *
437
+ * @example
438
+ * ```ts
439
+ * formatStageResult({ stage: 'lint', elapsed: 17, issues: [] })
440
+ * // 'lint: 0 issues (17 ms)'
441
+ * ```
442
+ */
443
+ export declare function formatStageResult(result: StageResult): string;
444
+
466
445
  /**
467
446
  * Renders a whole verdict as the text an agent reads.
468
447
  *
@@ -474,8 +453,8 @@ export declare function formatSpecification(text: string, revision: string): str
474
453
  * The heading lines carry everything the receipt binds, each in the name-then-value form the
475
454
  * toolchain line established: the call's identity, the claim it answered, the tools that ran, and
476
455
  * the project that judged the candidates. A verdict carrying the control's reason renders it next,
477
- * before either phase's checks. A reader comparing two verdicts therefore reads what differed
478
- * without recomputing anything.
456
+ * before either phase's stage results. A reader comparing two verdicts therefore reads what
457
+ * differed without recomputing anything.
479
458
  *
480
459
  * @param verdict - The verdict to render
481
460
  * @returns The identity, claim, toolchain, project, and reason when present, then every case and
@@ -502,19 +481,6 @@ export declare function formatVerdict(verdict: Verdict): string;
502
481
  */
503
482
  export declare const isCase: Guard<Case>;
504
483
 
505
- /**
506
- * Checks whether a value carries one stage's outcome.
507
- *
508
- * @param value - The value to check
509
- * @returns True if the value is a check; false otherwise
510
- *
511
- * @example
512
- * ```ts
513
- * isCheck({ stage: 'lint', elapsed: 17, issues: [] }) // true
514
- * ```
515
- */
516
- export declare const isCheck: Guard<Check>;
517
-
518
484
  /**
519
485
  * Checks whether a value carries a project, a case, and a control.
520
486
  *
@@ -559,11 +525,11 @@ export declare const isControl: Guard<Control>;
559
525
  * Checks whether a value carries a proposed file's path and text.
560
526
  *
561
527
  * @remarks
562
- * Rejects an empty, absolute, or workspace-escaping path. A contained relative path may contain
563
- * `.` or may traverse to a parent that remains inside the workspace. Every stage resolves a file
564
- * by that path, so admitting an escape here would defer the refusal until a stage had already
565
- * accepted the draft. An `Issue` carries no such minimum because this package produces issues
566
- * rather than admits them.
528
+ * Rejects an empty path, an absolute path, or a path that resolves outside the workspace. A
529
+ * contained relative path may contain `.` or may traverse to a parent that remains inside the
530
+ * workspace. Every stage resolves a file by that path, so admitting such a path here would defer
531
+ * the refusal until a stage had already accepted the draft. An `Issue` carries no such minimum
532
+ * because this package produces issues rather than admits them.
567
533
  *
568
534
  * @param value - The value to check
569
535
  * @returns True if the value is a draft; false otherwise
@@ -666,11 +632,24 @@ export declare const isProject: Guard<Project>;
666
632
  */
667
633
  export declare const isStage: Guard<Stage>;
668
634
 
635
+ /**
636
+ * Checks whether a value carries one stage's outcome.
637
+ *
638
+ * @param value - The value to check
639
+ * @returns True if the value is a stage result; false otherwise
640
+ *
641
+ * @example
642
+ * ```ts
643
+ * isStageResult({ stage: 'lint', elapsed: 17, issues: [] }) // true
644
+ * ```
645
+ */
646
+ export declare const isStageResult: Guard<StageResult>;
647
+
669
648
  /**
670
649
  * Carries one message a stage reported, where it reported it, and whose fault it names.
671
650
  *
672
651
  * @remarks
673
- * The stage is not repeated here. An issue always arrives inside the `Check` that names its
652
+ * The stage is not repeated here. An issue always arrives inside the `StageResult` that names its
674
653
  * stage, so a second copy could only drift from the first.
675
654
  *
676
655
  * A `claimant` issue is a tool's diagnostic about a candidate draft, and nothing else. Every
@@ -737,9 +716,9 @@ export declare const isToolchain: Guard<Toolchain>;
737
716
  * Checks whether a value carries a complete verdict.
738
717
  *
739
718
  * @remarks
740
- * Accepts any check count, because arity is the coordinator's obligation rather than this guard's:
741
- * a stage that could not start throws before a verdict is built, so a short list can only arrive
742
- * from a caller that assembled one by hand.
719
+ * Accepts any stage result count, because arity is the coordinator's obligation rather than this
720
+ * guard's: a stage that could not start throws before a verdict is built, so a short list can only
721
+ * arrive from a caller that assembled one by hand.
743
722
  *
744
723
  * @param value - The value to check
745
724
  * @returns True if the value is a verdict; false otherwise
@@ -1145,7 +1124,7 @@ export declare interface ProbeInterface {
1145
1124
  *
1146
1125
  * @param claim - The case, its control, and the project the candidate drafts in both cases
1147
1126
  * are checked against
1148
- * @returns The verdict, carrying one check per stage for both the case and the control
1127
+ * @returns The verdict, carrying one stage result per stage for both the case and the control
1149
1128
  * @throws When the control repeats the case byte for byte, or when a stage cannot start, so no
1150
1129
  * verdict ever reports a stage that did not run
1151
1130
  */
@@ -1284,6 +1263,27 @@ export declare const RUNTIME_PLUGIN = "orkestrel-runtime-overlay";
1284
1263
  */
1285
1264
  export declare type Stage = (typeof PROBE_STAGES)[number];
1286
1265
 
1266
+ /**
1267
+ * Carries one stage's outcome: what it cost and what it reported.
1268
+ *
1269
+ * @remarks
1270
+ * An empty `issues` list is the clean result. There is no separate pass flag, because passing is
1271
+ * exactly the absence of issues and a stored flag could disagree with the list beside it.
1272
+ *
1273
+ * @example
1274
+ * ```ts
1275
+ * const result: StageResult = { stage: 'lint', elapsed: 17, issues: [] }
1276
+ * ```
1277
+ */
1278
+ export declare interface StageResult {
1279
+ /** Names the stage that produced this outcome. */
1280
+ readonly stage: Stage;
1281
+ /** Holds the milliseconds the stage took. */
1282
+ readonly elapsed: number;
1283
+ /** Holds every message the stage's tool reported, in the tool's own order. */
1284
+ readonly issues: readonly Issue[];
1285
+ }
1286
+
1287
1287
  /**
1288
1288
  * Names the tool versions a verdict was produced with.
1289
1289
  *
@@ -1341,7 +1341,7 @@ export declare const TYPE_MIRROR = "tmp/type";
1341
1341
  * the type stage always runs and a claim always names a project, so no verdict exists without
1342
1342
  * either value. A verdict returned by `Probe` also carries the control's claimant-authored
1343
1343
  * `reason` unchanged. A hand-built verdict may omit it because the receipt helper needs only the
1344
- * recorded checks and declared stage.
1344
+ * recorded stage results and declared stage.
1345
1345
  *
1346
1346
  * `digest` covers these things: the case bytes, the control bytes including this `reason`, and the
1347
1347
  * workspace they were read against. The reason is part of the control, so two claims differing only
@@ -1400,9 +1400,9 @@ export declare interface Verdict {
1400
1400
  */
1401
1401
  readonly reason?: string;
1402
1402
  /** Holds one outcome per stage for the claim's case. */
1403
- readonly case: readonly Check[];
1403
+ readonly case: readonly StageResult[];
1404
1404
  /** Holds one outcome per stage for the claim's control. */
1405
- readonly control: readonly Check[];
1405
+ readonly control: readonly StageResult[];
1406
1406
  /** Holds the milliseconds the whole call took, including both the case and the control. */
1407
1407
  readonly elapsed: number;
1408
1408
  /** Holds the proof token, absent when either phase reports an instrument failure. */
@@ -60,27 +60,6 @@ text: StringShape;
60
60
  }, false>;
61
61
  }, false>;
62
62
 
63
- /**
64
- * Carries one stage's outcome: what it cost and what it reported.
65
- *
66
- * @remarks
67
- * An empty `issues` list is the clean result. There is no separate pass flag, because passing is
68
- * exactly the absence of issues and a stored flag could disagree with the list beside it.
69
- *
70
- * @example
71
- * ```ts
72
- * const check: Check = { stage: 'lint', elapsed: 17, issues: [] }
73
- * ```
74
- */
75
- export declare interface Check {
76
- /** Names the stage that produced this outcome. */
77
- readonly stage: Stage;
78
- /** Holds the milliseconds the stage took. */
79
- readonly elapsed: number;
80
- /** Holds every message the stage's tool reported, in the tool's own order. */
81
- readonly issues: readonly Issue[];
82
- }
83
-
84
63
  /**
85
64
  * Carries everything the service needs to produce one verdict.
86
65
  *
@@ -189,8 +168,8 @@ reason: StringShape;
189
168
  * Computes the proof token a verdict carries, or returns nothing when the claim was not proven.
190
169
  *
191
170
  * @remarks
192
- * A receipt is minted on these conditions together: both phases report one check per stage, the
193
- * case carries no issue, the control carries at least one `origin: 'claimant'` issue
171
+ * A receipt is minted on these conditions together: both phases report one stage result per stage,
172
+ * the case carries no issue, the control carries at least one `origin: 'claimant'` issue
194
173
  * at the stage it declared, and every other control stage carries no claimant issue. A control
195
174
  * that fails somewhere else has falsified the instrument rather than the claim, so no receipt is
196
175
  * minted for it.
@@ -216,7 +195,7 @@ reason: StringShape;
216
195
  * refuses the receipt. A workspace issue in the control does not decide whether the claimant's
217
196
  * candidate broke, while one in the case still means that the case did not run clean.
218
197
  *
219
- * @param verdict - The verdict whose case and control checks decide the outcome
198
+ * @param verdict - The verdict whose case and control stage results decide the outcome
220
199
  * @param stage - The stage the claim's control declared it must fail at
221
200
  * @returns The receipt token, or `undefined` when any condition fails
222
201
  *
@@ -351,24 +330,6 @@ path: StringShape;
351
330
  text: StringShape;
352
331
  }, false>;
353
332
 
354
- /**
355
- * Renders one stage's outcome as its summary line followed by every message it reported.
356
- *
357
- * @remarks
358
- * A clean stage renders one line. The count appears even when it is zero, because that line is
359
- * what shows a reader the stage ran; a silent stage and a skipped stage read the same.
360
- *
361
- * @param check - The stage outcome to render
362
- * @returns The summary line, then one indented line per issue
363
- *
364
- * @example
365
- * ```ts
366
- * formatCheck({ stage: 'lint', elapsed: 17, issues: [] })
367
- * // 'lint: 0 issues (17 ms)'
368
- * ```
369
- */
370
- export declare function formatCheck(check: Check): string;
371
-
372
333
  /**
373
334
  * Renders one tool message as a single line an agent can classify and locate.
374
335
  *
@@ -463,6 +424,24 @@ export declare function formatReceipt(verdict: Verdict): string;
463
424
  */
464
425
  export declare function formatSpecification(text: string, revision: string): string;
465
426
 
427
+ /**
428
+ * Renders one stage's outcome as its summary line followed by every message it reported.
429
+ *
430
+ * @remarks
431
+ * A clean stage renders one line. The count appears even when it is zero, because that line is
432
+ * what shows a reader the stage ran; a silent stage and a skipped stage read the same.
433
+ *
434
+ * @param result - The stage outcome to render
435
+ * @returns The summary line, then one indented line per issue
436
+ *
437
+ * @example
438
+ * ```ts
439
+ * formatStageResult({ stage: 'lint', elapsed: 17, issues: [] })
440
+ * // 'lint: 0 issues (17 ms)'
441
+ * ```
442
+ */
443
+ export declare function formatStageResult(result: StageResult): string;
444
+
466
445
  /**
467
446
  * Renders a whole verdict as the text an agent reads.
468
447
  *
@@ -474,8 +453,8 @@ export declare function formatSpecification(text: string, revision: string): str
474
453
  * The heading lines carry everything the receipt binds, each in the name-then-value form the
475
454
  * toolchain line established: the call's identity, the claim it answered, the tools that ran, and
476
455
  * the project that judged the candidates. A verdict carrying the control's reason renders it next,
477
- * before either phase's checks. A reader comparing two verdicts therefore reads what differed
478
- * without recomputing anything.
456
+ * before either phase's stage results. A reader comparing two verdicts therefore reads what
457
+ * differed without recomputing anything.
479
458
  *
480
459
  * @param verdict - The verdict to render
481
460
  * @returns The identity, claim, toolchain, project, and reason when present, then every case and
@@ -502,19 +481,6 @@ export declare function formatVerdict(verdict: Verdict): string;
502
481
  */
503
482
  export declare const isCase: Guard<Case>;
504
483
 
505
- /**
506
- * Checks whether a value carries one stage's outcome.
507
- *
508
- * @param value - The value to check
509
- * @returns True if the value is a check; false otherwise
510
- *
511
- * @example
512
- * ```ts
513
- * isCheck({ stage: 'lint', elapsed: 17, issues: [] }) // true
514
- * ```
515
- */
516
- export declare const isCheck: Guard<Check>;
517
-
518
484
  /**
519
485
  * Checks whether a value carries a project, a case, and a control.
520
486
  *
@@ -559,11 +525,11 @@ export declare const isControl: Guard<Control>;
559
525
  * Checks whether a value carries a proposed file's path and text.
560
526
  *
561
527
  * @remarks
562
- * Rejects an empty, absolute, or workspace-escaping path. A contained relative path may contain
563
- * `.` or may traverse to a parent that remains inside the workspace. Every stage resolves a file
564
- * by that path, so admitting an escape here would defer the refusal until a stage had already
565
- * accepted the draft. An `Issue` carries no such minimum because this package produces issues
566
- * rather than admits them.
528
+ * Rejects an empty path, an absolute path, or a path that resolves outside the workspace. A
529
+ * contained relative path may contain `.` or may traverse to a parent that remains inside the
530
+ * workspace. Every stage resolves a file by that path, so admitting such a path here would defer
531
+ * the refusal until a stage had already accepted the draft. An `Issue` carries no such minimum
532
+ * because this package produces issues rather than admits them.
567
533
  *
568
534
  * @param value - The value to check
569
535
  * @returns True if the value is a draft; false otherwise
@@ -666,11 +632,24 @@ export declare const isProject: Guard<Project>;
666
632
  */
667
633
  export declare const isStage: Guard<Stage>;
668
634
 
635
+ /**
636
+ * Checks whether a value carries one stage's outcome.
637
+ *
638
+ * @param value - The value to check
639
+ * @returns True if the value is a stage result; false otherwise
640
+ *
641
+ * @example
642
+ * ```ts
643
+ * isStageResult({ stage: 'lint', elapsed: 17, issues: [] }) // true
644
+ * ```
645
+ */
646
+ export declare const isStageResult: Guard<StageResult>;
647
+
669
648
  /**
670
649
  * Carries one message a stage reported, where it reported it, and whose fault it names.
671
650
  *
672
651
  * @remarks
673
- * The stage is not repeated here. An issue always arrives inside the `Check` that names its
652
+ * The stage is not repeated here. An issue always arrives inside the `StageResult` that names its
674
653
  * stage, so a second copy could only drift from the first.
675
654
  *
676
655
  * A `claimant` issue is a tool's diagnostic about a candidate draft, and nothing else. Every
@@ -737,9 +716,9 @@ export declare const isToolchain: Guard<Toolchain>;
737
716
  * Checks whether a value carries a complete verdict.
738
717
  *
739
718
  * @remarks
740
- * Accepts any check count, because arity is the coordinator's obligation rather than this guard's:
741
- * a stage that could not start throws before a verdict is built, so a short list can only arrive
742
- * from a caller that assembled one by hand.
719
+ * Accepts any stage result count, because arity is the coordinator's obligation rather than this
720
+ * guard's: a stage that could not start throws before a verdict is built, so a short list can only
721
+ * arrive from a caller that assembled one by hand.
743
722
  *
744
723
  * @param value - The value to check
745
724
  * @returns True if the value is a verdict; false otherwise
@@ -1145,7 +1124,7 @@ export declare interface ProbeInterface {
1145
1124
  *
1146
1125
  * @param claim - The case, its control, and the project the candidate drafts in both cases
1147
1126
  * are checked against
1148
- * @returns The verdict, carrying one check per stage for both the case and the control
1127
+ * @returns The verdict, carrying one stage result per stage for both the case and the control
1149
1128
  * @throws When the control repeats the case byte for byte, or when a stage cannot start, so no
1150
1129
  * verdict ever reports a stage that did not run
1151
1130
  */
@@ -1284,6 +1263,27 @@ export declare const RUNTIME_PLUGIN = "orkestrel-runtime-overlay";
1284
1263
  */
1285
1264
  export declare type Stage = (typeof PROBE_STAGES)[number];
1286
1265
 
1266
+ /**
1267
+ * Carries one stage's outcome: what it cost and what it reported.
1268
+ *
1269
+ * @remarks
1270
+ * An empty `issues` list is the clean result. There is no separate pass flag, because passing is
1271
+ * exactly the absence of issues and a stored flag could disagree with the list beside it.
1272
+ *
1273
+ * @example
1274
+ * ```ts
1275
+ * const result: StageResult = { stage: 'lint', elapsed: 17, issues: [] }
1276
+ * ```
1277
+ */
1278
+ export declare interface StageResult {
1279
+ /** Names the stage that produced this outcome. */
1280
+ readonly stage: Stage;
1281
+ /** Holds the milliseconds the stage took. */
1282
+ readonly elapsed: number;
1283
+ /** Holds every message the stage's tool reported, in the tool's own order. */
1284
+ readonly issues: readonly Issue[];
1285
+ }
1286
+
1287
1287
  /**
1288
1288
  * Names the tool versions a verdict was produced with.
1289
1289
  *
@@ -1341,7 +1341,7 @@ export declare const TYPE_MIRROR = "tmp/type";
1341
1341
  * the type stage always runs and a claim always names a project, so no verdict exists without
1342
1342
  * either value. A verdict returned by `Probe` also carries the control's claimant-authored
1343
1343
  * `reason` unchanged. A hand-built verdict may omit it because the receipt helper needs only the
1344
- * recorded checks and declared stage.
1344
+ * recorded stage results and declared stage.
1345
1345
  *
1346
1346
  * `digest` covers these things: the case bytes, the control bytes including this `reason`, and the
1347
1347
  * workspace they were read against. The reason is part of the control, so two claims differing only
@@ -1400,9 +1400,9 @@ export declare interface Verdict {
1400
1400
  */
1401
1401
  readonly reason?: string;
1402
1402
  /** Holds one outcome per stage for the claim's case. */
1403
- readonly case: readonly Check[];
1403
+ readonly case: readonly StageResult[];
1404
1404
  /** Holds one outcome per stage for the claim's control. */
1405
- readonly control: readonly Check[];
1405
+ readonly control: readonly StageResult[];
1406
1406
  /** Holds the milliseconds the whole call took, including both the case and the control. */
1407
1407
  readonly elapsed: number;
1408
1408
  /** Holds the proof token, absent when either phase reports an instrument failure. */
@@ -265,7 +265,7 @@ var ProbeError = class extends Error {
265
265
  constructor(message, options) {
266
266
  const cause = options.cause;
267
267
  super(message, cause === void 0 ? void 0 : { cause });
268
- Object.defineProperty(this, Symbol.for("@orkestrel/probe.error"), { value: this });
268
+ Object.defineProperty(this, Symbol.for("@orkestrel/probe.ProbeError"), { value: this });
269
269
  this.origin = options.origin;
270
270
  this.code = options.code;
271
271
  if (options.context !== void 0) this.context = options.context;
@@ -294,7 +294,7 @@ function isProbeError(value) {
294
294
  if (!isError(value)) return false;
295
295
  return holds(() => {
296
296
  if (INTRINSICS.prototype(value) === Error.prototype) return false;
297
- if (INTRINSICS.describe(value, Symbol.for("@orkestrel/probe.error"))?.value !== value) return false;
297
+ if (INTRINSICS.describe(value, Symbol.for("@orkestrel/probe.ProbeError"))?.value !== value) return false;
298
298
  const origin = INTRINSICS.reflect.read(value, "origin");
299
299
  const code = INTRINSICS.reflect.read(value, "code");
300
300
  const context = INTRINSICS.reflect.read(value, "context");
@@ -357,11 +357,11 @@ var isStage = literalOf(PROBE_STAGES);
357
357
  * Checks whether a value carries a proposed file's path and text.
358
358
  *
359
359
  * @remarks
360
- * Rejects an empty, absolute, or workspace-escaping path. A contained relative path may contain
361
- * `.` or may traverse to a parent that remains inside the workspace. Every stage resolves a file
362
- * by that path, so admitting an escape here would defer the refusal until a stage had already
363
- * accepted the draft. An `Issue` carries no such minimum because this package produces issues
364
- * rather than admits them.
360
+ * Rejects an empty path, an absolute path, or a path that resolves outside the workspace. A
361
+ * contained relative path may contain `.` or may traverse to a parent that remains inside the
362
+ * workspace. Every stage resolves a file by that path, so admitting such a path here would defer
363
+ * the refusal until a stage had already accepted the draft. An `Issue` carries no such minimum
364
+ * because this package produces issues rather than admits them.
365
365
  *
366
366
  * @param value - The value to check
367
367
  * @returns True if the value is a draft; false otherwise
@@ -489,14 +489,14 @@ var isIssue = recordOf({
489
489
  * Checks whether a value carries one stage's outcome.
490
490
  *
491
491
  * @param value - The value to check
492
- * @returns True if the value is a check; false otherwise
492
+ * @returns True if the value is a stage result; false otherwise
493
493
  *
494
494
  * @example
495
495
  * ```ts
496
- * isCheck({ stage: 'lint', elapsed: 17, issues: [] }) // true
496
+ * isStageResult({ stage: 'lint', elapsed: 17, issues: [] }) // true
497
497
  * ```
498
498
  */
499
- var isCheck = recordOf({
499
+ var isStageResult = recordOf({
500
500
  stage: isStage,
501
501
  elapsed: isNumber,
502
502
  issues: arrayOf(isIssue)
@@ -542,9 +542,9 @@ var isProject = recordOf({
542
542
  * Checks whether a value carries a complete verdict.
543
543
  *
544
544
  * @remarks
545
- * Accepts any check count, because arity is the coordinator's obligation rather than this guard's:
546
- * a stage that could not start throws before a verdict is built, so a short list can only arrive
547
- * from a caller that assembled one by hand.
545
+ * Accepts any stage result count, because arity is the coordinator's obligation rather than this
546
+ * guard's: a stage that could not start throws before a verdict is built, so a short list can only
547
+ * arrive from a caller that assembled one by hand.
548
548
  *
549
549
  * @param value - The value to check
550
550
  * @returns True if the value is a verdict; false otherwise
@@ -562,8 +562,8 @@ var isVerdict = recordOf({
562
562
  toolchain: isToolchain,
563
563
  project: isProject,
564
564
  reason: isNonEmptyString,
565
- case: arrayOf(isCheck),
566
- control: arrayOf(isCheck),
565
+ case: arrayOf(isStageResult),
566
+ control: arrayOf(isStageResult),
567
567
  elapsed: isNumber,
568
568
  receipt: isString
569
569
  }, ["reason", "receipt"]);
@@ -609,19 +609,19 @@ function formatIssue(issue) {
609
609
  * A clean stage renders one line. The count appears even when it is zero, because that line is
610
610
  * what shows a reader the stage ran; a silent stage and a skipped stage read the same.
611
611
  *
612
- * @param check - The stage outcome to render
612
+ * @param result - The stage outcome to render
613
613
  * @returns The summary line, then one indented line per issue
614
614
  *
615
615
  * @example
616
616
  * ```ts
617
- * formatCheck({ stage: 'lint', elapsed: 17, issues: [] })
617
+ * formatStageResult({ stage: 'lint', elapsed: 17, issues: [] })
618
618
  * // 'lint: 0 issues (17 ms)'
619
619
  * ```
620
620
  */
621
- function formatCheck(check) {
622
- const count = check.issues.length;
621
+ function formatStageResult(result) {
622
+ const count = result.issues.length;
623
623
  const noun = count === 1 ? "issue" : "issues";
624
- return [`${check.stage}: ${count} ${noun} (${check.elapsed} ms)`, ...check.issues.map((issue) => ` ${formatIssue(issue)}`)].join("\n");
624
+ return [`${result.stage}: ${count} ${noun} (${result.elapsed} ms)`, ...result.issues.map((issue) => ` ${formatIssue(issue)}`)].join("\n");
625
625
  }
626
626
  /**
627
627
  * Renders the closing line a rendered verdict ends with: the receipt it earned, or its absence.
@@ -682,8 +682,8 @@ function formatReceipt(verdict) {
682
682
  * The heading lines carry everything the receipt binds, each in the name-then-value form the
683
683
  * toolchain line established: the call's identity, the claim it answered, the tools that ran, and
684
684
  * the project that judged the candidates. A verdict carrying the control's reason renders it next,
685
- * before either phase's checks. A reader comparing two verdicts therefore reads what differed
686
- * without recomputing anything.
685
+ * before either phase's stage results. A reader comparing two verdicts therefore reads what
686
+ * differed without recomputing anything.
687
687
  *
688
688
  * @param verdict - The verdict to render
689
689
  * @returns The identity, claim, toolchain, project, and reason when present, then every case and
@@ -705,8 +705,8 @@ function formatVerdict(verdict) {
705
705
  tools,
706
706
  project,
707
707
  ...reason,
708
- ...verdict.case.map((check) => `case ${formatCheck(check)}`),
709
- ...verdict.control.map((check) => `control ${formatCheck(check)}`),
708
+ ...verdict.case.map((result) => `case ${formatStageResult(result)}`),
709
+ ...verdict.control.map((result) => `control ${formatStageResult(result)}`),
710
710
  formatProof(verdict)
711
711
  ].join("\n");
712
712
  }
@@ -714,8 +714,8 @@ function formatVerdict(verdict) {
714
714
  * Computes the proof token a verdict carries, or returns nothing when the claim was not proven.
715
715
  *
716
716
  * @remarks
717
- * A receipt is minted on these conditions together: both phases report one check per stage, the
718
- * case carries no issue, the control carries at least one `origin: 'claimant'` issue
717
+ * A receipt is minted on these conditions together: both phases report one stage result per stage,
718
+ * the case carries no issue, the control carries at least one `origin: 'claimant'` issue
719
719
  * at the stage it declared, and every other control stage carries no claimant issue. A control
720
720
  * that fails somewhere else has falsified the instrument rather than the claim, so no receipt is
721
721
  * minted for it.
@@ -741,7 +741,7 @@ function formatVerdict(verdict) {
741
741
  * refuses the receipt. A workspace issue in the control does not decide whether the claimant's
742
742
  * candidate broke, while one in the case still means that the case did not run clean.
743
743
  *
744
- * @param verdict - The verdict whose case and control checks decide the outcome
744
+ * @param verdict - The verdict whose case and control stage results decide the outcome
745
745
  * @param stage - The stage the claim's control declared it must fail at
746
746
  * @returns The receipt token, or `undefined` when any condition fails
747
747
  *
@@ -753,11 +753,11 @@ function formatVerdict(verdict) {
753
753
  * ```
754
754
  */
755
755
  function computeReceipt(verdict, stage) {
756
- const ran = PROBE_STAGES.every((name) => verdict.case.filter((check) => check.stage === name).length === 1 && verdict.control.filter((check) => check.stage === name).length === 1);
757
- const clean = verdict.case.every((check) => check.issues.length === 0);
758
- const broke = verdict.control.find((check) => check.stage === stage)?.issues.some((issue) => issue.origin === "claimant") ?? false;
759
- const faulted = verdict.case.some((check) => check.issues.some((issue) => issue.origin === "instrument")) || verdict.control.some((check) => check.issues.some((issue) => issue.origin === "instrument"));
760
- const stayed = verdict.control.every((check) => check.stage === stage || check.issues.every((issue) => issue.origin !== "claimant"));
756
+ const ran = PROBE_STAGES.every((name) => verdict.case.filter((result) => result.stage === name).length === 1 && verdict.control.filter((result) => result.stage === name).length === 1);
757
+ const clean = verdict.case.every((result) => result.issues.length === 0);
758
+ const broke = verdict.control.find((result) => result.stage === stage)?.issues.some((issue) => issue.origin === "claimant") ?? false;
759
+ const faulted = verdict.case.some((result) => result.issues.some((issue) => issue.origin === "instrument")) || verdict.control.some((result) => result.issues.some((issue) => issue.origin === "instrument"));
760
+ const stayed = verdict.control.every((result) => result.stage === stage || result.issues.every((issue) => issue.origin !== "claimant"));
761
761
  if (!ran || !clean || !broke || faulted || !stayed) return void 0;
762
762
  const { typescript, oxlint, vitest } = verdict.toolchain;
763
763
  return [
@@ -900,6 +900,6 @@ var CLAIM_SHAPE = objectShape({
900
900
  case: CASE_SHAPE,
901
901
  control: CONTROL_SHAPE
902
902
  }, { description: "One claim: the project, the case, and the control that must break." });
903
- export { CASE_SHAPE, CLAIM_SHAPE, CONTROL_SHAPE, DRAFT_SHAPE, LINT_DEADLINE, LINT_TEARDOWN, PROBE_DEADLINE, PROBE_ERROR_CODES, PROBE_KEYS, PROBE_PARTIES, PROBE_RESTARTS, PROBE_SPECIFICATIONS, PROBE_STAGES, PROBE_WARM, ProbeError, RECEIPT_PREFIX, RECEIPT_SEPARATOR, RUNTIME_PLUGIN, TYPE_MIRROR, computeReceipt, createDestroyedError, formatCheck, formatIssue, formatProof, formatReceipt, formatSpecification, formatVerdict, isCase, isCheck, isClaim, isControl, isDraft, isIssue, isParty, isProbeError, isProject, isStage, isToolchain, isVerdict, matchesSpecification };
903
+ export { CASE_SHAPE, CLAIM_SHAPE, CONTROL_SHAPE, DRAFT_SHAPE, LINT_DEADLINE, LINT_TEARDOWN, PROBE_DEADLINE, PROBE_ERROR_CODES, PROBE_KEYS, PROBE_PARTIES, PROBE_RESTARTS, PROBE_SPECIFICATIONS, PROBE_STAGES, PROBE_WARM, ProbeError, RECEIPT_PREFIX, RECEIPT_SEPARATOR, RUNTIME_PLUGIN, TYPE_MIRROR, computeReceipt, createDestroyedError, formatIssue, formatProof, formatReceipt, formatSpecification, formatStageResult, formatVerdict, isCase, isClaim, isControl, isDraft, isIssue, isParty, isProbeError, isProject, isStage, isStageResult, isToolchain, isVerdict, matchesSpecification };
904
904
 
905
905
  //# sourceMappingURL=index.js.map