fallow 3.40.0 → 3.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/capabilities.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fallow",
3
- "version": "3.40.0",
3
+ "version": "3.41.0",
4
4
  "manifest_version": "1",
5
5
  "description": "Codebase analyzer for TypeScript/JavaScript: unused code, circular dependencies, code duplication, complexity hotspots, and architecture boundary violations",
6
6
  "global_flags": [
@@ -1365,6 +1365,34 @@
1365
1365
  "required": false,
1366
1366
  "description": "Check whether this test is redundant: a test file (each test in it) or a test id (`file::name`). Repeat the flag for more targets. Only the mutants that a target covers run: first the target tests without a stop at a failure, then the other covering tests up to the first failure"
1367
1367
  },
1368
+ {
1369
+ "name": "--recheck",
1370
+ "type": "bool",
1371
+ "required": false,
1372
+ "description": "Rerun the open tasks of a saved report (its `survived` and `no_coverage` mutants) against the current tests. The worktree may change test files only. The run replaces the saved report, so `fallow mutation tasks` then lists the mutants that are still open",
1373
+ "possible_values": [
1374
+ "true",
1375
+ "false"
1376
+ ]
1377
+ },
1378
+ {
1379
+ "name": "--report",
1380
+ "type": "string",
1381
+ "required": false,
1382
+ "description": "The saved report of `--recheck` (default: the report of the last run). A recheck without `--mutant` replaces the saved report"
1383
+ },
1384
+ {
1385
+ "name": "--mutant",
1386
+ "type": "string",
1387
+ "required": false,
1388
+ "description": "Recheck only these mutant ids of the report, comma-separated or repeated (default: each open task). The saved report then stays as it is, so `fallow mutation tasks` keeps the other open tasks"
1389
+ },
1390
+ {
1391
+ "name": "--compare",
1392
+ "type": "string",
1393
+ "required": false,
1394
+ "description": "Compare this run with a saved complete report: list each mutant that the report detects (`killed` or `timeout`) and this run does not (`survived` or `no_coverage`), with its earlier killing tests. A report or a run that is not complete exits 2"
1395
+ },
1368
1396
  {
1369
1397
  "name": "paths",
1370
1398
  "type": "string",
@@ -7939,6 +7967,19 @@
7939
7967
  "read_only": true,
7940
7968
  "code_mode_alias": null
7941
7969
  },
7970
+ {
7971
+ "name": "mutation_tasks",
7972
+ "kind": "trace",
7973
+ "description": "The open tasks of a saved mutation report (default: the last run report) as one batch: each survived or uncovered mutant with its source lines before and after the change; runs no tests",
7974
+ "cli_command": "fallow mutation tasks [--report <report.json>] --format json --quiet",
7975
+ "key_params": [
7976
+ "report"
7977
+ ],
7978
+ "license": "free",
7979
+ "license_note": null,
7980
+ "read_only": true,
7981
+ "code_mode_alias": null
7982
+ },
7942
7983
  {
7943
7984
  "name": "inspect_target",
7944
7985
  "kind": "analysis",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fallow",
3
- "version": "3.40.0",
3
+ "version": "3.41.0",
4
4
  "mcpName": "io.github.fallow-rs/fallow",
5
5
  "description": "Codebase intelligence for TypeScript and JavaScript: health, complexity, duplication, architecture, styling drift, and unused code from one graph. CLI, LSP, and MCP server. Zero config for over 100 frameworks.",
6
6
  "license": "MIT",
@@ -92,14 +92,14 @@
92
92
  "@tanstack/intent": "0.5.6"
93
93
  },
94
94
  "optionalDependencies": {
95
- "@fallow-cli/darwin-arm64": "3.40.0",
96
- "@fallow-cli/darwin-x64": "3.40.0",
97
- "@fallow-cli/linux-x64-gnu": "3.40.0",
98
- "@fallow-cli/linux-arm64-gnu": "3.40.0",
99
- "@fallow-cli/linux-x64-musl": "3.40.0",
100
- "@fallow-cli/linux-arm64-musl": "3.40.0",
101
- "@fallow-cli/win32-arm64-msvc": "3.40.0",
102
- "@fallow-cli/win32-x64-msvc": "3.40.0",
103
- "fallow-type-aware": "3.40.0"
95
+ "@fallow-cli/darwin-arm64": "3.41.0",
96
+ "@fallow-cli/darwin-x64": "3.41.0",
97
+ "@fallow-cli/linux-x64-gnu": "3.41.0",
98
+ "@fallow-cli/linux-arm64-gnu": "3.41.0",
99
+ "@fallow-cli/linux-x64-musl": "3.41.0",
100
+ "@fallow-cli/linux-arm64-musl": "3.41.0",
101
+ "@fallow-cli/win32-arm64-msvc": "3.41.0",
102
+ "@fallow-cli/win32-x64-msvc": "3.41.0",
103
+ "fallow-type-aware": "3.41.0"
104
104
  }
105
105
  }
@@ -307,10 +307,12 @@ fallow dead-code --format json --quiet --save-regression-baseline
307
307
  # 2. In CI: fail only if issues increase beyond tolerance
308
308
  fallow dead-code --format json --quiet --fail-on-regression --tolerance 0
309
309
  # Identity-based baseline (fail only on NEW findings, not raw counts)
310
- fallow dead-code --format json --quiet --save-baseline .fallow/snapshot.json
311
- fallow dead-code --format json --quiet --baseline .fallow/snapshot.json
310
+ fallow dead-code --format json --quiet --save-baseline fallow-baselines/dead-code.json
311
+ fallow dead-code --format json --quiet --baseline fallow-baselines/dead-code.json
312
312
  ```
313
313
 
314
+ Commit the baseline file. Do not save it in `.fallow/`: fallow tells Git to ignore that cache directory, so the baseline is not committed and `fallow` prints a warning.
315
+
314
316
  `--save-regression-baseline` / `--regression-baseline` / `--fail-on-regression` / `--tolerance` are count-based gates for `dead-code`, `architecture`, bare combined mode, and `flags --retirement` (a flags baseline needs a PATH; without `--retirement` the options have no effect on `flags` and it warns). `--save-baseline` / `--baseline` are identity-based (track finding identity, fail on new). On bare `fallow` they hold the dead-code baseline only; pass health and duplication baselines with `--health-baseline` / `--dupes-baseline`. `audit` rejects the global baseline flags and uses `--dead-code-baseline` / `--health-baseline` / `--dupes-baseline` instead.
315
317
 
316
318
  With no path, `--save-regression-baseline` updates `regression.baseline` in the discovered fallow config, or creates `.fallowrc.json` when none exists. Pass a path only when a standalone baseline file is preferred.
@@ -530,7 +530,7 @@ Human output groups paths under "Shared with your team (commit these)" and "Loca
530
530
  {
531
531
  "kind": "agent-install",
532
532
  "schema_version": 1,
533
- "fallow_version": "3.40.0",
533
+ "fallow_version": "3.41.0",
534
534
  "root": "/abs/path",
535
535
  "mode": "install",
536
536
  "dry_run": false,
@@ -742,7 +742,7 @@ fallow health --format json --quiet --trend
742
742
  {
743
743
  "kind": "health",
744
744
  "schema_version": 7,
745
- "version": "3.40.0",
745
+ "version": "3.41.0",
746
746
  "elapsed_ms": 32,
747
747
  "summary": {
748
748
  "files_analyzed": 482,
@@ -1217,7 +1217,7 @@ fallow audit \
1217
1217
  {
1218
1218
  "kind": "audit",
1219
1219
  "schema_version": 7,
1220
- "version": "3.40.0",
1220
+ "version": "3.41.0",
1221
1221
  "command": "audit",
1222
1222
  "verdict": "fail",
1223
1223
  "changed_files_count": 12,
@@ -1305,7 +1305,7 @@ fallow flags --format json --quiet --workspace my-package
1305
1305
  ```json
1306
1306
  {
1307
1307
  "schema_version": 7,
1308
- "version": "3.40.0",
1308
+ "version": "3.41.0",
1309
1309
  "elapsed_ms": 116,
1310
1310
  "feature_flags": [],
1311
1311
  "total_flags": 0
@@ -1406,7 +1406,7 @@ fallow security --gate newly-reachable --changed-since origin/main
1406
1406
  {
1407
1407
  "kind": "security",
1408
1408
  "schema_version": "4",
1409
- "version": "3.40.0",
1409
+ "version": "3.41.0",
1410
1410
  "elapsed_ms": 42,
1411
1411
  "config": {
1412
1412
  "rules": {
@@ -1435,7 +1435,7 @@ fallow security --gate newly-reachable --changed-since origin/main
1435
1435
  {
1436
1436
  "kind": "security",
1437
1437
  "schema_version": "4",
1438
- "version": "3.40.0",
1438
+ "version": "3.41.0",
1439
1439
  "elapsed_ms": 42,
1440
1440
  "config": {
1441
1441
  "rules": {
@@ -2264,6 +2264,7 @@ Use this mode to check whether specific tests are redundant without a full kill
2264
2264
  - Only the mutants that a target test covers run. The other mutants are `pruned` with `prune_reason: "no-target-coverage"`.
2265
2265
  - Each mutant runs its target tests with bail disabled, then its other covering tests with bail enabled, up to the first failure.
2266
2266
  - `kill_matrix.targets` lists each target with the `test_ids` that it selects. A target that selects no test exits `2` with `FALLOW_MUTATION_TARGET_UNMATCHED`.
2267
+ - Each target has its own `status` (`complete` or `incomplete`) and `reasons`. Only the tests of a complete target can be candidates. `candidates` can be nonempty while the top-level `status` is `incomplete`.
2267
2268
  - `kill_matrix.tests` has rows for target tests only. `unique_kills` are kills that no other test detects, target or not. `target_only_kills` lists kills that only other targets share, each with those `targets`. `subsuming_tests` is empty (note `subsumers-not-computed`).
2268
2269
  - A target with kills and no `unique_kills` is a candidate. With `target_only_kills`, it stays redundant only while one of the sharing targets stays. Do not remove all sharing targets together.
2269
2270
  - The evidence covers the planned scope only. A unique kill outside the scope is not visible.
@@ -2330,7 +2331,7 @@ The HTTP layer mirrors the bash `gh_api_retry` / `curl_retry` helpers: `FALLOW_A
2330
2331
  {
2331
2332
  "kind": "dead-code",
2332
2333
  "schema_version": 7,
2333
- "version": "3.40.0",
2334
+ "version": "3.41.0",
2334
2335
  "elapsed_ms": 45,
2335
2336
  "total_issues": 12,
2336
2337
  "entry_points": {
@@ -2490,7 +2491,7 @@ When `--baseline` is used in combined output, the JSON includes a `baseline_delt
2490
2491
  {
2491
2492
  "kind": "dupes",
2492
2493
  "schema_version": 7,
2493
- "version": "3.40.0",
2494
+ "version": "3.41.0",
2494
2495
  "elapsed_ms": 82,
2495
2496
  "total_clones": 15,
2496
2497
  "total_lines_duplicated": 230,
@@ -2534,11 +2535,11 @@ When running `fallow` with no subcommand (all analyses), the JSON output combine
2534
2535
  {
2535
2536
  "kind": "combined",
2536
2537
  "schema_version": 7,
2537
- "version": "3.40.0",
2538
+ "version": "3.41.0",
2538
2539
  "elapsed_ms": 159,
2539
2540
  "check": {
2540
2541
  "schema_version": 7,
2541
- "version": "3.40.0",
2542
+ "version": "3.41.0",
2542
2543
  "elapsed_ms": 45,
2543
2544
  "total_issues": 12,
2544
2545
  "unused_files": [],
@@ -20,6 +20,7 @@ When using fallow via MCP (`fallow-mcp`), the following tools are available:
20
20
  | `inspect_similar_code` | trace | free | `fallow similar-code inspect <candidate-id> --candidates <report.json> --format json --quiet` | `candidate_id`, `snapshot` | Inspect one exact unverified candidate without rerunning provider retrieval or global ranking. Pass `candidate_id` plus a bounded typed snapshot containing the unchanged discovery `schema_version`, `generation`, selected `candidate`, `completion`, and `diagnostics`. Current source is re-extracted and both endpoint hashes must still match, so stale source fails closed. Keep candidate worthiness, behavioral equivalence, and refactor safety as separate verdicts, and abstain when evidence is incomplete. |
21
21
  | `mutation_plan` | analysis | free | `fallow mutation --plan --format json --quiet` | `changed_since`, `all`, `paths`, `max_mutants`, `operators` | Static mutation plan for changed code: mutant ids, operators, dispositions, and static test files; runs no tests |
22
22
  | `mutation_inspect` | trace | free | `fallow mutation inspect <mutant-id> [--report <report.json>] --format json --quiet` | `mutant_id`, `report` | Inspect one mutant of a saved mutation report (default: the last run report), with a stale status when its source changed; runs no tests |
23
+ | `mutation_tasks` | trace | free | `fallow mutation tasks [--report <report.json>] --format json --quiet` | `report` | The open tasks of a saved mutation report (default: the last run report) as one batch: each survived or uncovered mutant with its source lines before and after the change; runs no tests |
23
24
  | `inspect_target` | analysis | free | `fallow inspect --format json --quiet` | `target`, `production`, `include_churn`, `cloud` | Compose one evidence bundle for a file or exported symbol. File targets use `target: { type: "file", file }`; symbol targets use `target: { type: "symbol", file, export_name }`. Returns `kind: "inspect_target"`, normalized target identity, `trace_file`, optional `trace_export`, file-scoped dead-code actions, duplication groups filtered to the file, complexity findings filtered to the file, and security candidates scoped to the file. Set `include_churn: true` to add target-level git churn from the health hotspot subsystem. Churn is off by default, and unavailable git history or analysis failures remain explicit section states. Evidence sections carry `status` and `scope`; symbol targets warn when supporting evidence is file-scoped. Set `cloud: true` on a file target to add the `cloud` evidence section of `fallow inspect --cloud` (production data per local function). The CLI reads the key: `FALLOW_API_KEY` in the server environment, else the key that `fallow cloud login` stored; the key is never a parameter. `repo` (`owner/repo`) selects the repository and needs `cloud: true`. The section `status` is `ok`, `no_key`, `plan_required`, `unavailable` or `untracked`; a status other than `ok` never fails the call. `cloud: true` with a symbol target is refused. Set `format: "compact"` to get the plain text of `fallow inspect --format compact` (about 1 KB, no JSON) instead of the JSON bundle. Supports `root`, `config`, `production`, `workspace`, `include_churn`, `cloud`, `repo`, `format`, `no_cache`, and `threads`; `production` applies to trace, dead-code, and health evidence only. Raise `FALLOW_TIMEOUT_SECS` for large repos. |
24
25
  | `guard` | introspection | free | `fallow guard <file> --format json --quiet` | `files` | Report the architecture rules that apply to given files before editing them: boundary zone, allowed import zones, forbidden calls, and rule-pack policies |
25
26
  | `find_dupes` | analysis | free | `fallow dupes --format json --quiet` | `mode`, `near`, `min_tokens`, `min_occurrences`, `top`, `threshold` | Code duplication detection. Set `near: true` for function-level clones with small structural edits. Set `changed_since` to scope to changed files since a git ref. Set `min_occurrences` (≥ 2, default 2) to hide pair-only clones and focus on widespread copy-paste. Each `clone_groups[]` entry carries a normalized `fingerprint` and `spread`; near groups also carry `similarity`. `stats.clone_groups_ignored` reports reviewed groups hidden by config, while `stats.near_candidates_skipped` signals bounded near comparisons that were skipped. Pass the fingerprint to `trace_clone` to inspect the group |
@@ -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. A `--lean` document is not a root branch: it validates against `LeanOutput`.
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`, `mutation-tasks`. 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
  /**
@@ -122,6 +122,8 @@ kind: "mutation"
122
122
  kind: "mutation-plan"
123
123
  }) | (MutationInspectOutput & {
124
124
  kind: "mutation-inspect"
125
+ }) | (MutationTasksOutput & {
126
+ kind: "mutation-tasks"
125
127
  }))
126
128
  /**
127
129
  * Schema projection for the audit envelope's exact version.
@@ -1814,6 +1816,10 @@ export type MutationIncompleteReason = ("runtime-error" | "mutant-limit" | "time
1814
1816
  * The quality of observed test-to-mutant evidence.
1815
1817
  */
1816
1818
  export type MutationKillMatrixStatus = ("complete" | "incomplete" | "unavailable")
1819
+ /**
1820
+ * The quality of the evidence of one `--kill-matrix-for` target.
1821
+ */
1822
+ export type MutationKillMatrixTargetStatus = ("complete" | "incomplete")
1817
1823
  /**
1818
1824
  * Which code a run mutates.
1819
1825
  */
@@ -1830,6 +1836,14 @@ export type MutantFailureKind = ("assertion" | "error" | "timeout")
1830
1836
  * Why the type check did not check a survivor.
1831
1837
  */
1832
1838
  export type MutationTypecheckSkipReason = ("no-project" | "not-type-checked" | "source-changed" | "file-missing" | "unsupported-file")
1839
+ /**
1840
+ * What a recheck shows for one mutant of the earlier report.
1841
+ */
1842
+ export type MutationRecheckOutcome = ("killed" | "survived" | "no_coverage" | "tests_fail_on_original" | "unsettled")
1843
+ /**
1844
+ * How one mutant of a compare differs from the saved report.
1845
+ */
1846
+ export type MutationCompareChange = ("regressed" | "inconclusive" | "added" | "removed")
1833
1847
  /**
1834
1848
  * Version singleton for a mutation plan.
1835
1849
  */
@@ -1850,6 +1864,10 @@ export type MutationInspectStatus = ("fresh" | "stale")
1850
1864
  * Why an inspect packet is stale.
1851
1865
  */
1852
1866
  export type MutationStaleReason = ("file-missing" | "no-digest" | "source-changed" | "mutant-not-reproduced")
1867
+ /**
1868
+ * Version singleton for the open tasks of a mutation report.
1869
+ */
1870
+ export type MutationTasksSchemaVersion = "1"
1853
1871
  /**
1854
1872
  * Discriminator value for [`CodeClimateIssue::kind`].
1855
1873
  */
@@ -11564,6 +11582,15 @@ keyframes_unreferenced: number
11564
11582
  * a removed animation.
11565
11583
  */
11566
11584
  keyframes_undefined: number
11585
+ /**
11586
+ * `@keyframes` with no literal reference that a Sass or Less source
11587
+ * defines and that the unreferenced check skips. A Sass or Less
11588
+ * animation value with a variable or an interpolation that fallow cannot
11589
+ * resolve can name any such block. These are not in
11590
+ * `keyframes_unreferenced`. A `@keyframes` block in plain CSS is always
11591
+ * checked.
11592
+ */
11593
+ keyframes_unchecked: number
11567
11594
  /**
11568
11595
  * Total Vue `<style scoped>` classes used nowhere else in their component
11569
11596
  * (cleanup candidates), across all SFCs.
@@ -13108,6 +13135,12 @@ imported_by: string[]
13108
13135
  * Re-exports declared by this file.
13109
13136
  */
13110
13137
  re_exports: TracedReExport[]
13138
+ /**
13139
+ * The package.json script key that makes this file an entry point, e.g.
13140
+ * `build`. Absent when no script makes the file an entry point
13141
+ * (issue #4175).
13142
+ */
13143
+ entry_script?: (string | null)
13111
13144
  /**
13112
13145
  * The configs that make this file an entry point through Module
13113
13146
  * Federation `exposes`, one per config. Absent when no Federation config
@@ -14631,8 +14664,8 @@ name: string
14631
14664
  */
14632
14665
  path: string
14633
14666
  /**
14634
- * Whether the package is a generated or platform-specific dependency
14635
- * package rather than a hand-authored workspace.
14667
+ * Whether another workspace of the project lists this package as a
14668
+ * dependency.
14636
14669
  */
14637
14670
  is_internal_dependency: boolean
14638
14671
  }
@@ -20688,6 +20721,16 @@ verdicts?: (MutationVerdictJoin | null)
20688
20721
  * them (`--typecheck` not set).
20689
20722
  */
20690
20723
  typecheck?: (MutationTypecheckOutput | null)
20724
+ /**
20725
+ * The result of each rechecked mutant against its status in the earlier
20726
+ * report. Absent outside `--recheck`.
20727
+ */
20728
+ recheck?: (MutationRecheck | null)
20729
+ /**
20730
+ * The mutants whose result differs from a saved report. Absent outside
20731
+ * `--compare`, and absent when this run is not complete.
20732
+ */
20733
+ compare?: (MutationCompare | null)
20691
20734
  }
20692
20735
  /**
20693
20736
  * The completion status of a run.
@@ -20715,6 +20758,7 @@ reasons: string[]
20715
20758
  tests: MutationTestKillRow[]
20716
20759
  /**
20717
20760
  * Tests with nonempty kills and no unique kills, sorted by test id.
20761
+ * In target mode, only the tests of complete targets.
20718
20762
  */
20719
20763
  candidates: string[]
20720
20764
  /**
@@ -20790,6 +20834,16 @@ target: string
20790
20834
  * The dry-run test ids that the target selects, sorted.
20791
20835
  */
20792
20836
  test_ids: string[]
20837
+ status: MutationKillMatrixTargetStatus
20838
+ /**
20839
+ * Why the evidence of this target is incomplete, sorted. The run-wide
20840
+ * reasons `partial-mutation-run`, `baseline-failure`, and
20841
+ * `missing-test-file-metadata` apply to each target.
20842
+ * `incomplete-mutant-results` means that a test of this target covers a
20843
+ * mutant with incomplete evidence. `unmatched-target` means that the
20844
+ * target selects no test.
20845
+ */
20846
+ reasons: string[]
20793
20847
  }
20794
20848
  /**
20795
20849
  * The scope of a plan or a run.
@@ -21362,6 +21416,125 @@ reason: MutationTypecheckSkipReason
21362
21416
  */
21363
21417
  count: number
21364
21418
  }
21419
+ /**
21420
+ * The recheck facts of a `--recheck` run.
21421
+ */
21422
+ export interface MutationRecheck {
21423
+ /**
21424
+ * The SHA-256 digest of the earlier report.
21425
+ */
21426
+ report_sha256: string
21427
+ /**
21428
+ * The number of mutants for each outcome.
21429
+ */
21430
+ killed: number
21431
+ /**
21432
+ * See `killed`.
21433
+ */
21434
+ survived: number
21435
+ /**
21436
+ * See `killed`.
21437
+ */
21438
+ no_coverage: number
21439
+ /**
21440
+ * See `killed`.
21441
+ */
21442
+ tests_fail_on_original: number
21443
+ /**
21444
+ * See `killed`.
21445
+ */
21446
+ unsettled: number
21447
+ /**
21448
+ * The rechecked mutants, sorted by file, line and mutant id.
21449
+ */
21450
+ mutants: MutationRecheckMutant[]
21451
+ }
21452
+ /**
21453
+ * One rechecked mutant.
21454
+ */
21455
+ export interface MutationRecheckMutant {
21456
+ /**
21457
+ * The id of the mutant.
21458
+ */
21459
+ mutant_id: string
21460
+ /**
21461
+ * The project-root-relative path of the mutated file.
21462
+ */
21463
+ file: string
21464
+ /**
21465
+ * The 1-based line of the mutant.
21466
+ */
21467
+ line: number
21468
+ previous_status: MutantStatus
21469
+ status: MutantStatus
21470
+ outcome: MutationRecheckOutcome
21471
+ }
21472
+ /**
21473
+ * The compare facts of a `--compare` run.
21474
+ */
21475
+ export interface MutationCompare {
21476
+ /**
21477
+ * The SHA-256 digest of the saved report.
21478
+ */
21479
+ report_sha256: string
21480
+ /**
21481
+ * The number of mutant ids in both runs.
21482
+ */
21483
+ compared: number
21484
+ /**
21485
+ * The number of mutants for each change.
21486
+ */
21487
+ regressed: number
21488
+ /**
21489
+ * See `regressed`.
21490
+ */
21491
+ inconclusive: number
21492
+ /**
21493
+ * See `regressed`.
21494
+ */
21495
+ added: number
21496
+ /**
21497
+ * See `regressed`.
21498
+ */
21499
+ removed: number
21500
+ /**
21501
+ * Each mutant with a change, sorted by file, line and mutant id. A
21502
+ * mutant in both runs without a change is not in the list.
21503
+ */
21504
+ mutants: MutationCompareMutant[]
21505
+ }
21506
+ /**
21507
+ * One mutant of a compare.
21508
+ */
21509
+ export interface MutationCompareMutant {
21510
+ /**
21511
+ * The id of the mutant.
21512
+ */
21513
+ mutant_id: string
21514
+ /**
21515
+ * The project-root-relative path of the mutated file.
21516
+ */
21517
+ file: string
21518
+ /**
21519
+ * The 1-based line of the mutant.
21520
+ */
21521
+ line: number
21522
+ change: MutationCompareChange
21523
+ /**
21524
+ * The status in the saved report. Absent for an `added` mutant.
21525
+ */
21526
+ previous_status?: (MutantStatus | null)
21527
+ /**
21528
+ * The status in this run. Absent for a `removed` mutant.
21529
+ */
21530
+ status?: (MutantStatus | null)
21531
+ /**
21532
+ * The tests that killed the mutant in the saved report, sorted: its
21533
+ * `killing_tests`, else its `killed_by`. Empty when the saved report
21534
+ * names no killing test.
21535
+ */
21536
+ previous_killing_tests: string[]
21537
+ }
21365
21538
  /**
21366
21539
  * The envelope of `fallow mutation --plan`. It runs no user code.
21367
21540
  */
@@ -21611,6 +21784,98 @@ original_lines: string
21611
21784
  */
21612
21785
  mutated_lines: string
21613
21786
  }
21787
+ /**
21788
+ * The envelope of `fallow mutation tasks`: the open tasks of one saved
21789
+ * report, as one batch. It runs no user code.
21790
+ */
21791
+ export interface MutationTasksOutput {
21792
+ schema_version: MutationTasksSchemaVersion
21793
+ version: ToolVersion
21794
+ /**
21795
+ * The completion status of the report. A `partial` report can miss
21796
+ * tasks: a `pending` mutant is not a task.
21797
+ */
21798
+ report_completion?: (MutationCompletionStatus | null)
21799
+ summary: MutationTasksSummary
21800
+ /**
21801
+ * The tasks, sorted by file, line, column and mutant id.
21802
+ */
21803
+ tasks: MutationTask[]
21804
+ }
21805
+ /**
21806
+ * The number of tasks for each status.
21807
+ */
21808
+ export interface MutationTasksSummary {
21809
+ /**
21810
+ * The number of tasks.
21811
+ */
21812
+ tasks: number
21813
+ /**
21814
+ * The tasks with the status `survived`.
21815
+ */
21816
+ survived: number
21817
+ /**
21818
+ * The tasks with the status `no_coverage`.
21819
+ */
21820
+ no_coverage: number
21821
+ /**
21822
+ * The tasks whose file changed after the report. They have no code.
21823
+ */
21824
+ stale: number
21825
+ }
21826
+ /**
21827
+ * One open task: a `survived` or `no_coverage` mutant of a saved report.
21828
+ * A task holds no source text other than the source lines of the mutant.
21829
+ */
21830
+ export interface MutationTask {
21831
+ /**
21832
+ * The id of the mutant. `fallow mutation inspect` takes this id.
21833
+ */
21834
+ mutant_id: string
21835
+ /**
21836
+ * The project-root-relative path of the mutated file.
21837
+ */
21838
+ file: string
21839
+ /**
21840
+ * The 1-based line of the mutant.
21841
+ */
21842
+ line: number
21843
+ /**
21844
+ * The 1-based column of the mutant.
21845
+ */
21846
+ column: number
21847
+ /**
21848
+ * The operator, kebab-case.
21849
+ */
21850
+ operator: string
21851
+ /**
21852
+ * The name of the enclosing function. Absent at the top level of a
21853
+ * module and for an anonymous function.
21854
+ */
21855
+ function?: (string | null)
21856
+ status: MutantStatus
21857
+ /**
21858
+ * The source lines that contain the mutant, from the current file.
21859
+ * `null` when the task is stale.
21860
+ */
21861
+ original_lines?: (string | null)
21862
+ /**
21863
+ * The same lines with the mutation applied. `null` when the task is
21864
+ * stale.
21865
+ */
21866
+ mutated_lines?: (string | null)
21867
+ /**
21868
+ * Why the current file no longer gives the mutant. Absent for a fresh
21869
+ * task.
21870
+ */
21871
+ stale_reason?: (MutationStaleReason | null)
21872
+ /**
21873
+ * The test files of the tests that reached the mutant in the dry run,
21874
+ * sorted. Empty for `no_coverage`. `fallow mutation inspect` gives the
21875
+ * test ids and the static test files of one mutant.
21876
+ */
21877
+ covering_test_files: string[]
21878
+ }
21614
21879
  /**
21615
21880
  * Single CodeClimate-compatible issue inside [`CodeClimateOutput`].
21616
21881
  */