fallow 3.36.0 → 3.38.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.
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
  /**
27
- * Schemas for the JSON output of fallow commands. Object-shaped envelopes covered by the `FallowOutput` contract carry a top-level `kind` discriminator. Current kind values: `audit`, `explain`, `inspect_target`, `trace`, `trace-error`, `review-envelope`, `review-reconcile`, `coverage-setup`, `coverage-analyze`, `list-boundaries`, `list-workspaces`, `health`, `dupes`, `dead-code-grouped`, `architecture-grouped`, `impact`, `impact-cross-repo`, `security`, `security-survivors`, `security-blind-spots`, `dead-code`, `architecture`, `combined`, `feature-flags`, `audit-brief`, `decision-surface`, `review-walkthrough-guide`, `review-walkthrough-validation`, `suppression-inventory`, `doctor`, `type-aware-status`, `similar-code`, `similar-code-inspect`, `similar-code-review`, `similar-code-status`, `similar-code-cache-clear`, `mutation`, `mutation-plan`, `mutation-inspect`. Consumers should branch on `kind` instead of probing for unique field presence. `CodeClimateOutput` is a bare JSON array (per the Code Climate / GitLab Code Quality spec) and stays a sibling root branch discriminated by checking whether the document root is an array. `ErrorOutput` is the `--format json` failure document, emitted on stdout with a non-zero exit; it carries no `kind` and is discriminated by the `error: true` field.
27
+ * Schemas for the JSON output of fallow commands. Object-shaped envelopes covered by the `FallowOutput` contract carry a top-level `kind` discriminator. Current kind values: `audit`, `explain`, `inspect_target`, `trace`, `trace-error`, `review-envelope`, `review-reconcile`, `coverage-setup`, `coverage-analyze`, `list-boundaries`, `list-workspaces`, `health`, `dupes`, `dead-code-grouped`, `architecture-grouped`, `impact`, `impact-cross-repo`, `security`, `security-survivors`, `security-blind-spots`, `dead-code`, `architecture`, `combined`, `feature-flags`, `audit-brief`, `decision-surface`, `review-walkthrough-guide`, `review-walkthrough-validation`, `suppression-inventory`, `doctor`, `type-aware-status`, `similar-code`, `similar-code-inspect`, `similar-code-review`, `similar-code-status`, `similar-code-cache-clear`, `mutation`, `mutation-plan`, `mutation-inspect`. Consumers should branch on `kind` instead of probing for unique field presence. `CodeClimateOutput` is a bare JSON array (per the Code Climate / GitLab Code Quality spec) and stays a sibling root branch discriminated by checking whether the document root is an array. `ErrorOutput` is the `--format json` failure document, emitted on stdout with a non-zero exit; it carries no `kind` and is discriminated by the `error: true` field. A `--lean` document is not a root branch: it validates against `LeanOutput`.
28
28
  */
29
29
  export type FallowJsonOutput = (FallowOutput | CodeClimateOutput | ErrorOutput)
30
30
  /**
@@ -889,7 +889,7 @@ export type CloneFamilyActionType = ("extract-shared" | "apply-suggestion" | "su
889
889
  /**
890
890
  * Which complexity threshold was exceeded.
891
891
  */
892
- export type ExceededThreshold = ("cyclomatic" | "cognitive" | "both" | "crap" | "cyclomatic_crap" | "cognitive_crap" | "all")
892
+ export type ExceededThreshold = ("cyclomatic" | "cognitive" | "both" | "crap" | "cyclomatic_crap" | "cognitive_crap" | "all" | "file_lines")
893
893
  /**
894
894
  * Severity tier indicating how far a function exceeds complexity thresholds.
895
895
  *
@@ -937,7 +937,7 @@ export type ThresholdSource = "override"
937
937
  * BOTH `increase-coverage` AND `refactor-function`, plus the trailing
938
938
  * `suppress-line`.
939
939
  */
940
- export type HealthFindingActionType = ("refactor-function" | "add-tests" | "increase-coverage" | "suppress-file" | "suppress-line")
940
+ export type HealthFindingActionType = ("refactor-function" | "add-tests" | "increase-coverage" | "suppress-file" | "suppress-line" | "split-file")
941
941
  /**
942
942
  * Audit-mode class of a complexity finding against the base snapshot.
943
943
  */
@@ -1254,6 +1254,14 @@ export type InspectSectionStatus = ("ok" | "partial" | "unavailable" | "error")
1254
1254
  * Granularity an [`InspectEvidenceSection`] payload covers.
1255
1255
  */
1256
1256
  export type InspectEvidenceScope = ("symbol" | "file" | "project_filtered_to_file")
1257
+ /**
1258
+ * Status of the [`InspectCloudEvidence`] section.
1259
+ */
1260
+ export type InspectCloudStatus = ("ok" | "no_key" | "plan_required" | "unavailable" | "untracked")
1261
+ /**
1262
+ * How a local function was paired with a deployed function.
1263
+ */
1264
+ export type InspectCloudMatch = ("stable_id" | "name_ordinal")
1257
1265
  /**
1258
1266
  * Whether a whole-word text search for an export name finds a consumer that
1259
1267
  * the module graph resolves. The levels sort from best to worst.
@@ -1368,6 +1376,14 @@ export type CoverageSetupPackageManager = ("npm" | "pnpm" | "yarn" | "bun")
1368
1376
  * Runtime environment coverage capture must instrument.
1369
1377
  */
1370
1378
  export type CoverageSetupRuntimeTarget = ("node" | "browser")
1379
+ /**
1380
+ * CI provider of a Fallow Cloud setup plan.
1381
+ */
1382
+ export type CoverageSetupCiProvider = "github_actions"
1383
+ /**
1384
+ * Outcome of `fallow coverage setup --cloud --wait`.
1385
+ */
1386
+ export type CoverageSetupWaitOutcome = ("complete" | "timeout" | "error")
1371
1387
  /**
1372
1388
  * Schema-version discriminator for [`CoverageAnalyzeOutput`].
1373
1389
  */
@@ -1760,11 +1776,15 @@ export type SimilarCodeCacheClearSchemaVersion = "1"
1760
1776
  /**
1761
1777
  * Version singleton for a mutation report.
1762
1778
  */
1763
- export type MutationSchemaVersion = "1"
1779
+ export type MutationSchemaVersion = "2"
1764
1780
  /**
1765
1781
  * Why a run is partial.
1766
1782
  */
1767
1783
  export type MutationIncompleteReason = ("runtime-error" | "mutant-limit" | "time-budget" | "skipped-files" | "unloaded-files" | "test-files-not-discovered" | "baseline-failure" | "worktree-changed" | "typecheck-failed" | "worktree-unchecked")
1784
+ /**
1785
+ * The quality of observed test-to-mutant evidence.
1786
+ */
1787
+ export type MutationKillMatrixStatus = ("complete" | "incomplete" | "unavailable")
1768
1788
  /**
1769
1789
  * Which code a run mutates.
1770
1790
  */
@@ -1792,7 +1812,7 @@ export type MutationPlanDisposition = ("planned" | "pending" | "no_coverage" | "
1792
1812
  /**
1793
1813
  * Version singleton for a mutation inspect packet.
1794
1814
  */
1795
- export type MutationInspectSchemaVersion = "1"
1815
+ export type MutationInspectSchemaVersion = "2"
1796
1816
  /**
1797
1817
  * Whether the saved report still describes the current file.
1798
1818
  */
@@ -3557,6 +3577,14 @@ total_issues: number
3557
3577
  * Prop chains whose saved effective severity explicitly enforces error policy.
3558
3578
  */
3559
3579
  prop_drilling_chains?: number
3580
+ /**
3581
+ * Thin wrappers whose saved effective severity explicitly enforces error policy.
3582
+ */
3583
+ thin_wrappers?: number
3584
+ /**
3585
+ * Duplicate prop shapes whose saved effective severity explicitly enforces error policy.
3586
+ */
3587
+ duplicate_prop_shapes?: number
3560
3588
  /**
3561
3589
  * Unused source files.
3562
3590
  */
@@ -6948,11 +6976,11 @@ actions: IssueAction[]
6948
6976
  */
6949
6977
  introduced?: (AuditIntroduced | null)
6950
6978
  /**
6951
- * Rule severity of this finding. This type never gates the run, so the
6952
- * value does not change the exit code. `fallow report --from` reads it
6953
- * for the SARIF level, so the level does not depend on the config at
6954
- * render time. Absent in output from older versions. Not part of the
6955
- * finding identity, baseline keys or fingerprints.
6979
+ * Rule severity of this finding. Explicit errors enforce analysis gates;
6980
+ * warnings stay advisory, including under strict flags. Saved reports
6981
+ * retain this value for CI levels without the original config. Absent
6982
+ * in output from older versions. Not part of finding identity, baseline
6983
+ * keys or fingerprints.
6956
6984
  */
6957
6985
  effective_severity?: (EffectiveSeverity | null)
6958
6986
  }
@@ -7014,11 +7042,11 @@ actions: IssueAction[]
7014
7042
  */
7015
7043
  introduced?: (AuditIntroduced | null)
7016
7044
  /**
7017
- * Rule severity of this finding. This type never gates the run, so the
7018
- * value does not change the exit code. `fallow report --from` reads it
7019
- * for the SARIF level, so the level does not depend on the config at
7020
- * render time. Absent in output from older versions. Not part of the
7021
- * finding identity, baseline keys or fingerprints.
7045
+ * Rule severity of this finding. Explicit errors enforce analysis gates;
7046
+ * warnings stay advisory, including under strict flags. Saved reports
7047
+ * retain this value for CI levels without the original config. Absent
7048
+ * in output from older versions. Not part of finding identity, baseline
7049
+ * keys or fingerprints.
7022
7050
  */
7023
7051
  effective_severity?: (EffectiveSeverity | null)
7024
7052
  }
@@ -8019,11 +8047,12 @@ export interface HealthFinding {
8019
8047
  */
8020
8048
  path: string
8021
8049
  /**
8022
- * Function name, or a synthesized name for anonymous functions.
8050
+ * Function name, or a synthesized name for anonymous functions. A
8051
+ * file-length finding has the name `<file>`.
8023
8052
  */
8024
8053
  name: string
8025
8054
  /**
8026
- * 1-based line the function starts on.
8055
+ * 1-based line the function starts on. A file-length finding has `1`.
8027
8056
  */
8028
8057
  line: number
8029
8058
  /**
@@ -8047,7 +8076,8 @@ standard_cyclomatic?: (number | null)
8047
8076
  */
8048
8077
  cognitive: number
8049
8078
  /**
8050
- * Lines of code in the function body.
8079
+ * Lines of code in the function body. On a file-length finding, the
8080
+ * physical line count of the file.
8051
8081
  */
8052
8082
  line_count: number
8053
8083
  /**
@@ -8143,6 +8173,12 @@ effective_thresholds?: (HealthEffectiveThresholds | null)
8143
8173
  * Source of the effective thresholds. Omitted when thresholds are global.
8144
8174
  */
8145
8175
  threshold_source?: (ThresholdSource | null)
8176
+ /**
8177
+ * File-length ceiling in physical lines that the file exceeded. Present
8178
+ * only on a file-level finding (`exceeded: "file_lines"`), where
8179
+ * `line_count` holds the physical line count of the file.
8180
+ */
8181
+ max_file_lines?: (number | null)
8146
8182
  /**
8147
8183
  * Machine-actionable fix and suppress hints.
8148
8184
  */
@@ -8489,7 +8525,9 @@ files_analyzed: number
8489
8525
  */
8490
8526
  functions_analyzed: number
8491
8527
  /**
8492
- * Functions exceeding at least one complexity or CRAP threshold.
8528
+ * Complexity findings before `--top`: functions exceeding at least one
8529
+ * complexity or CRAP threshold, plus file-length findings
8530
+ * (`exceeded: "file_lines"`).
8493
8531
  */
8494
8532
  functions_above_threshold: number
8495
8533
  /**
@@ -8517,6 +8555,12 @@ max_crap_threshold: number
8517
8555
  * here; this is the global default.
8518
8556
  */
8519
8557
  max_unit_size_threshold: number
8558
+ /**
8559
+ * Global file-length ceiling (`health.maxFileLines` or
8560
+ * `--max-file-lines`) in physical lines. Absent when the file-length
8561
+ * check is off.
8562
+ */
8563
+ max_file_lines_threshold?: (number | null)
8520
8564
  /**
8521
8565
  * Files with a computed maintainability score; absent when file scoring
8522
8566
  * did not run.
@@ -8646,6 +8690,10 @@ max_crap?: (number | null)
8646
8690
  * Unit-size ceiling set by the override, when it sets one.
8647
8691
  */
8648
8692
  max_unit_size?: (number | null)
8693
+ /**
8694
+ * File-length ceiling set by the override, when it sets one.
8695
+ */
8696
+ max_file_lines?: (number | null)
8649
8697
  }
8650
8698
  /**
8651
8699
  * Current complexity metrics for a matched threshold override entry.
@@ -11077,13 +11125,10 @@ defined_font_faces: string[]
11077
11125
  referenced_font_families: string[]
11078
11126
  }
11079
11127
  /**
11080
- * Structural CSS metrics for a single style rule, computed from the parsed CSS
11081
- * syntax tree. A rule is recorded only when it crosses a structural floor (an
11082
- * id selector, a complex selector, a `!important` declaration, or deep
11083
- * nesting), so the vector stays bounded on normal stylesheets.
11084
- *
11085
- * Not persisted in the extraction cache: `fallow health` computes these
11086
- * on demand from the CSS source, so there is no `bitcode` derive.
11128
+ * Structural CSS metrics for one style rule of the parsed CSS. Only a rule
11129
+ * over a structural floor (an id selector, a complex selector, `!important`,
11130
+ * or deep nesting) is recorded, so the vector stays bounded. Not cached:
11131
+ * `fallow health` computes these from the CSS source (no `bitcode` derive).
11087
11132
  */
11088
11133
  export interface CssRuleMetric {
11089
11134
  /**
@@ -12268,6 +12313,12 @@ symbol_impact?: (InspectEvidenceSection | null)
12268
12313
  * Present only for a symbol target in type-aware mode.
12269
12314
  */
12270
12315
  targeted_tests?: (InspectEvidenceSection | null)
12316
+ /**
12317
+ * OPT-IN Fallow Cloud production evidence for a file target. Present
12318
+ * only when `--cloud` was requested. A missing key, a plan gate or an
12319
+ * unreachable cloud is a section status, never a failed run.
12320
+ */
12321
+ cloud?: (InspectCloudEvidence | null)
12271
12322
  }
12272
12323
  /**
12273
12324
  * One evidence section: status, the scope the evidence covers, and either a
@@ -12287,6 +12338,161 @@ data?: {
12287
12338
  [k: string]: unknown
12288
12339
  }
12289
12340
  }
12341
+ /**
12342
+ * `evidence.cloud` block: production data of the target file from Fallow
12343
+ * Cloud, paired with the functions of the local file.
12344
+ *
12345
+ * `null` in a count means "not measured", never zero.
12346
+ */
12347
+ export interface InspectCloudEvidence {
12348
+ status: InspectCloudStatus
12349
+ /**
12350
+ * Explanation for a status other than `ok`, or a note on an `ok`
12351
+ * section (for example that the cloud left out functions).
12352
+ */
12353
+ message?: (string | null)
12354
+ /**
12355
+ * Fallow Cloud repository that was read, when it was resolved.
12356
+ */
12357
+ repo?: (string | null)
12358
+ /**
12359
+ * Newest deployment commit with data for the file.
12360
+ */
12361
+ latest_sha?: (string | null)
12362
+ /**
12363
+ * Days of production data the cloud read covers.
12364
+ */
12365
+ period_days?: (number | null)
12366
+ /**
12367
+ * File summary from the cloud. `None` when the cloud was not read.
12368
+ */
12369
+ summary?: (InspectCloudSummary | null)
12370
+ /**
12371
+ * Local functions paired with a deployed function.
12372
+ */
12373
+ functions: InspectCloudFunction[]
12374
+ /**
12375
+ * Local functions without a deployed function.
12376
+ */
12377
+ unpaired_local: InspectCloudUnpairedFunction[]
12378
+ }
12379
+ /**
12380
+ * File summary of the [`InspectCloudEvidence`] section.
12381
+ */
12382
+ export interface InspectCloudSummary {
12383
+ /**
12384
+ * Deployed functions of the file.
12385
+ */
12386
+ functions: number
12387
+ /**
12388
+ * Functions that ran in the period.
12389
+ */
12390
+ called: number
12391
+ /**
12392
+ * Functions that were tracked and did not run.
12393
+ */
12394
+ never_called: number
12395
+ /**
12396
+ * Functions without production data.
12397
+ */
12398
+ untracked: number
12399
+ /**
12400
+ * Calls of all functions of the file. `None` when not measured.
12401
+ */
12402
+ calls?: (number | null)
12403
+ /**
12404
+ * Error groups of the file. `None` when not measured.
12405
+ */
12406
+ error_groups?: (number | null)
12407
+ /**
12408
+ * Error events of the file. `None` when not measured.
12409
+ */
12410
+ error_events?: (number | null)
12411
+ /**
12412
+ * One-line summary from the cloud.
12413
+ */
12414
+ text: string
12415
+ }
12416
+ /**
12417
+ * One local function with its production data.
12418
+ */
12419
+ export interface InspectCloudFunction {
12420
+ /**
12421
+ * Function name in the local file.
12422
+ */
12423
+ name: string
12424
+ /**
12425
+ * 1-based start line in the local file.
12426
+ */
12427
+ line: number
12428
+ /**
12429
+ * Stable id of the deployed function.
12430
+ */
12431
+ stable_id?: (string | null)
12432
+ match: InspectCloudMatch
12433
+ /**
12434
+ * Tracking state in the current deployment: `called`, `never_called` or
12435
+ * `untracked`.
12436
+ */
12437
+ state: string
12438
+ /**
12439
+ * Tracking state over the whole period, earlier deployments included.
12440
+ * `called` with `state` `never_called` means that the function did not
12441
+ * run in this deployment, but ran in an earlier one. `None` when the
12442
+ * cloud does not say.
12443
+ */
12444
+ period_state?: (string | null)
12445
+ /**
12446
+ * Calls in the period. `None` when not measured.
12447
+ */
12448
+ calls?: (number | null)
12449
+ /**
12450
+ * Error counts. `None` when error capture did not cover the function.
12451
+ */
12452
+ errors?: (InspectCloudErrors | null)
12453
+ /**
12454
+ * Self CPU milliseconds per profiled hour. `None` when not measured.
12455
+ */
12456
+ cpu_ms_per_hour?: (number | null)
12457
+ /**
12458
+ * Branch ranges that never ran. `None` when not measured.
12459
+ */
12460
+ never_run_ranges?: (number | null)
12461
+ /**
12462
+ * One-line summary from the cloud.
12463
+ */
12464
+ summary: string
12465
+ }
12466
+ /**
12467
+ * Error counts of one function.
12468
+ */
12469
+ export interface InspectCloudErrors {
12470
+ /**
12471
+ * Error groups attributed to the function.
12472
+ */
12473
+ groups: number
12474
+ /**
12475
+ * Error events attributed to the function.
12476
+ */
12477
+ events: number
12478
+ }
12479
+ /**
12480
+ * One local function without a deployed function.
12481
+ */
12482
+ export interface InspectCloudUnpairedFunction {
12483
+ /**
12484
+ * Function name in the local file.
12485
+ */
12486
+ name: string
12487
+ /**
12488
+ * 1-based start line in the local file.
12489
+ */
12490
+ line: number
12491
+ /**
12492
+ * Why the function has no production data.
12493
+ */
12494
+ note: string
12495
+ }
12290
12496
  /**
12291
12497
  * Result of tracing an export: why it is considered used or unused.
12292
12498
  */
@@ -13685,6 +13891,10 @@ next_steps: string[]
13685
13891
  * Non-fatal problems encountered during detection.
13686
13892
  */
13687
13893
  warnings: string[]
13894
+ /**
13895
+ * Fallow Cloud plan, present only for `fallow coverage setup --cloud`.
13896
+ */
13897
+ cloud?: (CoverageSetupCloud | null)
13688
13898
  /**
13689
13899
  * `_meta` block with docs and field definitions, when requested.
13690
13900
  */
@@ -13760,6 +13970,112 @@ path: string
13760
13970
  */
13761
13971
  content: string
13762
13972
  }
13973
+ /**
13974
+ * Fallow Cloud plan of `fallow coverage setup --cloud`.
13975
+ *
13976
+ * The beacon, the inventory, the source maps and the deployment registration
13977
+ * must all carry the same commit SHA. The plan names only the environment
13978
+ * variable names of keys, never a key value.
13979
+ */
13980
+ export interface CoverageSetupCloud {
13981
+ /**
13982
+ * Fallow Cloud project id (`owner/repo`), or null when it was not detected.
13983
+ */
13984
+ project_id?: (string | null)
13985
+ /**
13986
+ * Commit SHA that `--wait` checks: `--git-sha`, else `HEAD` of the
13987
+ * working tree, or null outside a git repository.
13988
+ */
13989
+ git_sha?: (string | null)
13990
+ /**
13991
+ * Fallow Cloud API base URL.
13992
+ */
13993
+ endpoint: string
13994
+ /**
13995
+ * Environment variable that holds the full API key in CI and on the server.
13996
+ */
13997
+ api_key_env: string
13998
+ /**
13999
+ * Environment variable that holds the ingest-only browser key, when a
14000
+ * member runs in the browser.
14001
+ */
14002
+ browser_key_env?: (string | null)
14003
+ /**
14004
+ * Environment variables the server snippets read the deployed commit SHA
14005
+ * from, in order.
14006
+ */
14007
+ commit_sha_env: string[]
14008
+ ci: CoverageSetupCi
14009
+ source_maps: CoverageSetupSourceMaps
14010
+ /**
14011
+ * Activation endpoint that reports each setup step, or null without a
14012
+ * project id.
14013
+ */
14014
+ activation_url?: (string | null)
14015
+ /**
14016
+ * Command that waits until the cloud reports every step as done.
14017
+ */
14018
+ wait_command: string
14019
+ /**
14020
+ * Result of `--wait`, present only when the command waited.
14021
+ */
14022
+ wait?: (CoverageSetupWait | null)
14023
+ }
14024
+ /**
14025
+ * CI steps of a Fallow Cloud setup plan.
14026
+ */
14027
+ export interface CoverageSetupCi {
14028
+ provider: CoverageSetupCiProvider
14029
+ /**
14030
+ * Existing workflow files that look like a deploy workflow, relative to
14031
+ * the project root.
14032
+ */
14033
+ workflows_detected: string[]
14034
+ /**
14035
+ * Workflow steps to add to the job that builds and deploys.
14036
+ */
14037
+ steps: string
14038
+ /**
14039
+ * Where the steps go and what they need.
14040
+ */
14041
+ instructions: string
14042
+ }
14043
+ /**
14044
+ * Source map guidance of a Fallow Cloud setup plan.
14045
+ */
14046
+ export interface CoverageSetupSourceMaps {
14047
+ /**
14048
+ * Whether the CI steps upload source maps.
14049
+ */
14050
+ needed: boolean
14051
+ /**
14052
+ * Build output directories the maps are uploaded from, one per bundled
14053
+ * workspace member, relative to the project root. Empty when no upload
14054
+ * is needed.
14055
+ */
14056
+ dirs: string[]
14057
+ /**
14058
+ * Why the upload is or is not needed.
14059
+ */
14060
+ reason: string
14061
+ }
14062
+ /**
14063
+ * Result of `fallow coverage setup --cloud --wait`.
14064
+ */
14065
+ export interface CoverageSetupWait {
14066
+ outcome: CoverageSetupWaitOutcome
14067
+ /**
14068
+ * The last activation response body (`data`) from the cloud, unchanged,
14069
+ * or null when no read succeeded. New step ids and states can appear.
14070
+ */
14071
+ activation?: {
14072
+ [k: string]: unknown
14073
+ }
14074
+ /**
14075
+ * Error text when the outcome is `error`.
14076
+ */
14077
+ message?: (string | null)
14078
+ }
13763
14079
  /**
13764
14080
  * Envelope emitted by `fallow coverage analyze --format json`.
13765
14081
  */
@@ -19903,6 +20219,7 @@ schema_version: MutationSchemaVersion
19903
20219
  version: ToolVersion
19904
20220
  elapsed_ms: ElapsedMs
19905
20221
  completion: MutationCompletion
20222
+ kill_matrix: MutationKillMatrix
19906
20223
  scope: MutationScopeOutput
19907
20224
  /**
19908
20225
  * The runner. Absent when no companion started, for example when no
@@ -19914,6 +20231,10 @@ runner?: (MutationRunnerOutput | null)
19914
20231
  * started.
19915
20232
  */
19916
20233
  cache?: (MutationCacheOutput | null)
20234
+ /**
20235
+ * The resume facts. Absent without `--resume`.
20236
+ */
20237
+ resume?: (MutationResumeOutput | null)
19917
20238
  summary: MutationSummary
19918
20239
  /**
19919
20240
  * Each mutant, ranked mutants first.
@@ -19976,6 +20297,58 @@ status: MutationCompletionStatus
19976
20297
  */
19977
20298
  reasons: MutationIncompleteReason[]
19978
20299
  }
20300
+ /**
20301
+ * Redundancy signals over the observed mutants. Candidates need review.
20302
+ * Removing candidates together can remove all tests for a mutant.
20303
+ */
20304
+ export interface MutationKillMatrix {
20305
+ status: MutationKillMatrixStatus
20306
+ /**
20307
+ * Why evidence is unavailable or incomplete, sorted.
20308
+ */
20309
+ reasons: string[]
20310
+ /**
20311
+ * Each eligible test with observed coverage, sorted by test id.
20312
+ */
20313
+ tests: MutationTestKillRow[]
20314
+ /**
20315
+ * Tests with nonempty kills and no unique kills, sorted by test id.
20316
+ */
20317
+ candidates: string[]
20318
+ /**
20319
+ * Tests with coverage and no observed kills, sorted by test id.
20320
+ */
20321
+ coverage_without_kills: string[]
20322
+ }
20323
+ /**
20324
+ * The observed mutant kills of one eligible test.
20325
+ */
20326
+ export interface MutationTestKillRow {
20327
+ /**
20328
+ * The runner test id.
20329
+ */
20330
+ test_id: string
20331
+ /**
20332
+ * The root-relative test file.
20333
+ */
20334
+ file: string
20335
+ /**
20336
+ * The observed killed mutant ids, sorted.
20337
+ */
20338
+ kills: string[]
20339
+ /**
20340
+ * The mutant ids that no other eligible test kills, sorted.
20341
+ */
20342
+ unique_kills: string[]
20343
+ /**
20344
+ * The tests whose kill sets contain this full kill set, sorted.
20345
+ */
20346
+ subsuming_tests: string[]
20347
+ /**
20348
+ * Conservative evidence notes, sorted.
20349
+ */
20350
+ notes: string[]
20351
+ }
19979
20352
  /**
19980
20353
  * The scope of a plan or a run.
19981
20354
  */
@@ -20048,6 +20421,36 @@ stored: number
20048
20421
  */
20049
20422
  not_keyed: string[]
20050
20423
  }
20424
+ /**
20425
+ * The resume facts of a `--resume` run.
20426
+ */
20427
+ export interface MutationResumeOutput {
20428
+ /**
20429
+ * The path of the outcome journal, relative to the project root. When
20430
+ * the cache directory is outside the root, the path is absolute: the
20431
+ * report has no other cache path, so no other rule applies. The file
20432
+ * stays only when the run did not complete. A run with
20433
+ * `completion.status: complete` removes it.
20434
+ */
20435
+ journal: string
20436
+ /**
20437
+ * The mutants whose status came from the journal. They did not run.
20438
+ */
20439
+ reused: number
20440
+ /**
20441
+ * The journal results whose key does not match this run, because an
20442
+ * input of the mutant changed. These results were not reused from the
20443
+ * journal. The mutant ran again, or its status came from the result
20444
+ * cache.
20445
+ */
20446
+ rejected: number
20447
+ /**
20448
+ * Why the run did not read a journal and started from the beginning,
20449
+ * for example because no journal exists. Absent when the run read the
20450
+ * journal.
20451
+ */
20452
+ note?: (string | null)
20453
+ }
20051
20454
  /**
20052
20455
  * The totals of a run.
20053
20456
  */
@@ -20128,15 +20531,25 @@ prune_reason?: (string | null)
20128
20531
  * The test that killed the mutant in this run. Absent for a kill by an
20129
20532
  * error outside a test.
20130
20533
  *
20131
- * This is evidence of one run, not a stable fact. A run stops at the
20132
- * first failing test, and it runs the fastest covering test first, so a
20133
- * second run on the same code can name another covering test. No
20534
+ * This is evidence of one run, not a stable fact. A normal run stops at
20535
+ * the first failing test. A kill matrix run retains each failing test
20536
+ * in `killing_tests`. Tests run in measured fastest-first order, so a
20537
+ * second run on the same code can name another first killer. No
20134
20538
  * fingerprint or baseline comparison uses this field.
20135
20539
  *
20136
20540
  * The retry of a survivor also runs the other tests of its test files,
20137
20541
  * so this test can be absent from `covering_tests`.
20138
20542
  */
20139
20543
  killed_by?: (string | null)
20544
+ /**
20545
+ * All observed failing tests, sorted. Timeouts do not count. Empty
20546
+ * outside `--kill-matrix`; `killed_by` keeps the first killer.
20547
+ */
20548
+ killing_tests: string[]
20549
+ /**
20550
+ * True only for exact requested membership with terminal pass or fail results.
20551
+ */
20552
+ kill_matrix_complete: boolean
20140
20553
  /**
20141
20554
  * The tests that reached the mutant in the dry run, sorted by test id.
20142
20555
  */
@@ -20173,6 +20586,11 @@ attempts?: MutantAttempt[]
20173
20586
  * The mutant did not run in this run. `--no-cache` runs each mutant.
20174
20587
  */
20175
20588
  cached?: boolean
20589
+ /**
20590
+ * True when the status comes from the journal of an interrupted run
20591
+ * (`--resume`). The mutant did not run in this run.
20592
+ */
20593
+ resumed?: boolean
20176
20594
  /**
20177
20595
  * The TypeScript diagnostic codes of the new errors of a
20178
20596
  * `compile_error` mutant, sorted, at most 8.
@@ -20240,6 +20658,15 @@ duration_ms?: (number | null)
20240
20658
  * The test that killed the mutant in this run.
20241
20659
  */
20242
20660
  killed_by?: (string | null)
20661
+ /**
20662
+ * All observed failing tests, sorted. Timeouts do not count. Empty
20663
+ * outside `--kill-matrix`; `killed_by` keeps the first killer.
20664
+ */
20665
+ killing_tests: string[]
20666
+ /**
20667
+ * True only for exact requested membership with terminal pass or fail results.
20668
+ */
20669
+ kill_matrix_complete: boolean
20243
20670
  /**
20244
20671
  * How the run detected the mutant. Absent for a run that did not detect
20245
20672
  * it, and absent when the runner did not state the kind.
@@ -20355,7 +20782,8 @@ changed_paths: string[]
20355
20782
  */
20356
20783
  export interface MutationRunIssue {
20357
20784
  /**
20358
- * A stable kebab-case code: `runtime-error`, `static-map-miss`,
20785
+ * A stable kebab-case code: `cache-write-failed`,
20786
+ * `journal-write-failed`, `runtime-error`, `static-map-miss`,
20359
20787
  * `test-files-not-discovered`, `typecheck-failed`, `worktree-changed`
20360
20788
  * or `worktree-check-failed`.
20361
20789
  */
@@ -20705,6 +21133,15 @@ static_test_files: string[]
20705
21133
  * The test that killed the mutant in the run of the report.
20706
21134
  */
20707
21135
  killed_by?: (string | null)
21136
+ /**
21137
+ * All observed failing tests, sorted. Timeouts do not count. Empty
21138
+ * outside `--kill-matrix`; `killed_by` keeps the first killer.
21139
+ */
21140
+ killing_tests: string[]
21141
+ /**
21142
+ * True only for exact requested membership with terminal pass or fail results.
21143
+ */
21144
+ kill_matrix_complete: boolean
20708
21145
  }
20709
21146
  /**
20710
21147
  * The code of one mutant, from the current file.