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.
- package/README.md +1 -1
- package/capabilities.json +112 -10
- package/issue-registry.json +38 -4
- package/package.json +14 -11
- package/rule-pack-schema.json +264 -0
- package/schema.json +40 -1
- package/skills/fallow/SKILL.md +3 -3
- package/skills/fallow/references/cli-reference.md +80 -12
- package/skills/fallow/references/gotchas.md +2 -0
- package/skills/fallow/references/issue-types.md +1 -0
- package/skills/fallow/references/mcp.md +3 -3
- package/skills/fallow/references/patterns.md +1 -1
- package/types/output-contract.d.ts +467 -30
- package/scripts/lazy-verify.test.js +0 -564
- package/scripts/platform-package.test.js +0 -26
- package/scripts/run-binary.test.js +0 -293
- package/scripts/sentinel-path.test.js +0 -240
- package/scripts/verify-binary.test.js +0 -809
|
@@ -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 = "
|
|
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 = "
|
|
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.
|
|
6952
|
-
*
|
|
6953
|
-
*
|
|
6954
|
-
*
|
|
6955
|
-
*
|
|
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.
|
|
7018
|
-
*
|
|
7019
|
-
*
|
|
7020
|
-
*
|
|
7021
|
-
*
|
|
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
|
-
*
|
|
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
|
|
11081
|
-
*
|
|
11082
|
-
*
|
|
11083
|
-
*
|
|
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
|
|
20132
|
-
* first failing test
|
|
20133
|
-
*
|
|
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: `
|
|
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.
|