fallow 3.28.0 → 3.30.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 +264 -71
- package/issue-registry.json +115 -48
- package/package.json +10 -10
- package/schema.json +86 -6
- package/scripts/lazy-verify.js +14 -16
- package/scripts/lazy-verify.test.js +24 -13
- package/scripts/sentinel-path.js +4 -4
- package/scripts/sentinel-path.test.js +1 -4
- package/scripts/verify-binary.js +4 -2
- package/skills/fallow/SKILL.md +5 -4
- package/skills/fallow/references/cli-reference.md +50 -24
- package/skills/fallow/references/issue-types.md +2 -0
- package/skills/fallow/references/mcp.md +6 -4
- package/types/output-contract.d.ts +1275 -105
|
@@ -261,7 +261,7 @@ export type IssueAction = (FixAction | SuppressLineAction | SuppressFileAction |
|
|
|
261
261
|
* Discriminant string for [`FixAction`]. Kebab-case per the JSON output
|
|
262
262
|
* contract.
|
|
263
263
|
*/
|
|
264
|
-
export type FixActionType = ("remove-export" | "delete-file" | "remove-dependency" | "move-dependency" | "remove-enum-member" | "remove-class-member" | "resolve-import" | "install-dependency" | "remove-duplicate" | "move-to-dev" | "move-to-prod" | "refactor-cycle" | "refactor-re-export-cycle" | "refactor-boundary" | "export-type" | "remove-catalog-entry" | "remove-empty-catalog-group" | "update-catalog-reference" | "add-catalog-entry" | "remove-catalog-reference" | "remove-dependency-override" | "fix-dependency-override" | "resolve-policy-violation" | "move-to-server-module" | "split-mixed-barrel" | "hoist-directive" | "wire-server-action" | "provide-inject" | "use-load-data" | "render-component" | "use-component-prop" | "emit-component-event" | "wire-svelte-event" | "resolve-route-collision" | "resolve-dynamic-segment-name-conflict" | "add-suppression-reason" | "remove-stale-suppression")
|
|
264
|
+
export type FixActionType = ("remove-export" | "delete-file" | "remove-dependency" | "move-dependency" | "remove-enum-member" | "remove-class-member" | "resolve-import" | "install-dependency" | "remove-duplicate" | "move-to-dev" | "move-to-prod" | "refactor-cycle" | "refactor-re-export-cycle" | "refactor-boundary" | "export-type" | "migrate-deprecated-export" | "remove-catalog-entry" | "remove-empty-catalog-group" | "update-catalog-reference" | "add-catalog-entry" | "remove-catalog-reference" | "remove-dependency-override" | "fix-dependency-override" | "resolve-policy-violation" | "move-to-server-module" | "split-mixed-barrel" | "hoist-directive" | "wire-server-action" | "provide-inject" | "use-load-data" | "render-component" | "use-component-prop" | "emit-component-event" | "wire-svelte-event" | "resolve-route-collision" | "resolve-dynamic-segment-name-conflict" | "add-suppression-reason" | "remove-stale-suppression")
|
|
265
265
|
/**
|
|
266
266
|
* Singleton discriminant for [`SuppressLineAction`].
|
|
267
267
|
*/
|
|
@@ -301,6 +301,27 @@ export type AddToConfigValue = (string | IgnoreExportsRule[] | {
|
|
|
301
301
|
* hold `Option<AuditIntroduced>`. Renders to the JSON wire as a bare boolean.
|
|
302
302
|
*/
|
|
303
303
|
export type AuditIntroduced = boolean
|
|
304
|
+
/**
|
|
305
|
+
* Gate severity of one finding after rule resolution.
|
|
306
|
+
*
|
|
307
|
+
* It is the severity that `rules` and the matching `overrides[].rules` give
|
|
308
|
+
* the finding for its path. `--fail-on-issues` raises `warn` to `error`. A
|
|
309
|
+
* finding whose rule is `off` is not reported, so there is no `off` value.
|
|
310
|
+
* The type is separate from the health `severity` band, which ranks a
|
|
311
|
+
* finding and does not gate it.
|
|
312
|
+
*
|
|
313
|
+
* The `fallow dead-code` findings gate fails when a finding is `error`.
|
|
314
|
+
* Other gates (regression, stale baseline) decide on their own inputs. Two
|
|
315
|
+
* commands differ: the `fallow audit` `new-only` gate fails only on introduced
|
|
316
|
+
* findings, so an inherited `error` finding does not fail the audit, and the
|
|
317
|
+
* combined command (`fallow` without a subcommand) exits 0 for machine
|
|
318
|
+
* formats.
|
|
319
|
+
*
|
|
320
|
+
* Complexity findings carry the same type. The `complexity-cyclomatic`,
|
|
321
|
+
* `complexity-cognitive` and `complexity-crap` rules set it, and the
|
|
322
|
+
* `fallow health` findings gate and the audit verdict read it.
|
|
323
|
+
*/
|
|
324
|
+
export type EffectiveSeverity = ("error" | "warn")
|
|
304
325
|
/**
|
|
305
326
|
* A per-finding caveat on a dead-code verdict that a file this run never
|
|
306
327
|
* fully analyzed can distort.
|
|
@@ -325,6 +346,10 @@ export type AuditIntroduced = boolean
|
|
|
325
346
|
* caveat" rather than as an error.
|
|
326
347
|
*/
|
|
327
348
|
export type ReachabilityCaveat = ("incomplete-file-analysis" | "incomplete-import-graph")
|
|
349
|
+
/**
|
|
350
|
+
* How a consumer references a deprecated export.
|
|
351
|
+
*/
|
|
352
|
+
export type DeprecatedConsumerKind = ("named-import" | "default-import" | "namespace-import" | "re-export" | "dynamic-import" | "side-effect-import")
|
|
328
353
|
/**
|
|
329
354
|
* Where in package.json a dependency is listed.
|
|
330
355
|
*
|
|
@@ -618,13 +643,15 @@ kind: "file-scores-unavailable"
|
|
|
618
643
|
} | {
|
|
619
644
|
/**
|
|
620
645
|
* Which input stopped it, as a kebab-case token: `not-a-repository`,
|
|
621
|
-
* `invalid-since` or `churn-file-unreadable`. The set is
|
|
646
|
+
* `no-commits`, `invalid-since` or `churn-file-unreadable`. The set is
|
|
647
|
+
* open.
|
|
622
648
|
*
|
|
623
649
|
* The cause decides the remedy, which is why it is on the wire: a run
|
|
624
650
|
* outside a repository is fixed by running fallow inside one, a
|
|
625
|
-
*
|
|
626
|
-
*
|
|
627
|
-
* kind would offer the first
|
|
651
|
+
* branch without a commit by committing, a malformed `--since` by
|
|
652
|
+
* respelling the flag, and a churn file that changed under the run by
|
|
653
|
+
* rerunning it. A consumer reading only the kind would offer the first
|
|
654
|
+
* remedy for all four.
|
|
628
655
|
*/
|
|
629
656
|
cause: string
|
|
630
657
|
kind: "hotspots-skipped"
|
|
@@ -664,13 +691,16 @@ kind: "trend-snapshot-unreadable"
|
|
|
664
691
|
plugin: string
|
|
665
692
|
/**
|
|
666
693
|
* The config key that was present and not fully readable (`exposes`,
|
|
667
|
-
* `remotes`)
|
|
694
|
+
* `remotes`), or the Module Federation runtime function whose
|
|
695
|
+
* argument was not readable (`registerRemotes`, `loadRemote`, `init`,
|
|
696
|
+
* `createInstance`). The set is open.
|
|
668
697
|
*/
|
|
669
698
|
key: string
|
|
670
699
|
/**
|
|
671
700
|
* Why it could not be read, as a kebab-case token:
|
|
672
|
-
* `not-object-literal`, `array-form`, `spread
|
|
673
|
-
* `unreadable-entries
|
|
701
|
+
* `not-object-literal`, `array-form`, `spread`,
|
|
702
|
+
* `unreadable-entries`, `unrecognized-call`,
|
|
703
|
+
* `import-target-unreadable` or `dynamic-argument`. The set is open.
|
|
674
704
|
*
|
|
675
705
|
* The reason decides the remedy, which is why it is on the wire: a
|
|
676
706
|
* value that is not an object literal is fixed by writing one, while
|
|
@@ -686,7 +716,8 @@ kind: "plugin-config-unreadable"
|
|
|
686
716
|
plugin: string
|
|
687
717
|
/**
|
|
688
718
|
* The config key whose effect is not modeled (`components`,
|
|
689
|
-
* `imports`)
|
|
719
|
+
* `imports`), or the virtual module a file reads (`#components`,
|
|
720
|
+
* `#imports`). The set is open.
|
|
690
721
|
*/
|
|
691
722
|
key: string
|
|
692
723
|
/**
|
|
@@ -700,6 +731,15 @@ reason: string
|
|
|
700
731
|
kind: "plugin-effect-not-modeled"
|
|
701
732
|
} | {
|
|
702
733
|
kind: "coverage-auto-detected"
|
|
734
|
+
} | {
|
|
735
|
+
kind: "flag-age-shallow-clone"
|
|
736
|
+
} | {
|
|
737
|
+
/**
|
|
738
|
+
* Why no history is available, as a kebab-case token:
|
|
739
|
+
* `not-a-repository` or `no-commits`. The set is open.
|
|
740
|
+
*/
|
|
741
|
+
cause: string
|
|
742
|
+
kind: "flag-age-unavailable"
|
|
703
743
|
})
|
|
704
744
|
/**
|
|
705
745
|
* Discriminant for [`CloneGroupAction::kind`]. Mirrors the action types
|
|
@@ -771,6 +811,10 @@ export type HealthFindingActionType = ("refactor-function" | "add-tests" | "incr
|
|
|
771
811
|
* Coverage model used for CRAP score computation.
|
|
772
812
|
*/
|
|
773
813
|
export type CoverageModel = ("static_binary" | "static_estimated" | "istanbul")
|
|
814
|
+
/**
|
|
815
|
+
* Input format of the measured coverage behind `CoverageModel::Istanbul`.
|
|
816
|
+
*/
|
|
817
|
+
export type CoverageInputFormat = ("istanbul" | "v8")
|
|
774
818
|
/**
|
|
775
819
|
* Whether CRAP findings in the report used one coverage-source kind or a mix.
|
|
776
820
|
*/
|
|
@@ -870,6 +914,11 @@ export type RuntimeCoverageVerdict = ("safe_to_delete" | "review_required" | "co
|
|
|
870
914
|
* Confidence level for a runtime coverage finding.
|
|
871
915
|
*/
|
|
872
916
|
export type RuntimeCoverageConfidence = ("very_high" | "high" | "medium" | "low" | "none" | "unknown")
|
|
917
|
+
/**
|
|
918
|
+
* The per-call cost that `optimization_target.cost_score` multiplies with
|
|
919
|
+
* `invocations`.
|
|
920
|
+
*/
|
|
921
|
+
export type RuntimeCoverageCostBasis = ("inner_iterations" | "cognitive")
|
|
873
922
|
/**
|
|
874
923
|
* Blast-radius risk band. The current thresholds are high at >=20 static
|
|
875
924
|
* callers or >=1,000,000 traffic-weighted caller reach; medium at >=5 callers
|
|
@@ -1222,7 +1271,7 @@ export type SecurityUrlShape = ("fixed-origin-dynamic-path" | "dynamic-origin")
|
|
|
1222
1271
|
*/
|
|
1223
1272
|
export type SecurityRuntimeState = ("runtime-hot" | "runtime-cold" | "never-executed" | "low-traffic" | "coverage-unavailable" | "runtime-unknown")
|
|
1224
1273
|
/**
|
|
1225
|
-
*
|
|
1274
|
+
* Family of a control pattern observed in a file on an import trace.
|
|
1226
1275
|
*/
|
|
1227
1276
|
export type SecurityControlKind = ("sanitization" | "validation" | "authentication" | "authorization")
|
|
1228
1277
|
/**
|
|
@@ -1266,11 +1315,35 @@ export type FeatureFlagConfidence = ("high" | "medium" | "low")
|
|
|
1266
1315
|
* Feature flag action discriminants.
|
|
1267
1316
|
*/
|
|
1268
1317
|
export type FeatureFlagActionType = ("investigate-flag" | "suppress-line")
|
|
1318
|
+
/**
|
|
1319
|
+
* How the report measures the age of a flag.
|
|
1320
|
+
*/
|
|
1321
|
+
export type FlagAgeMode = ("blame" | "pickaxe" | "off")
|
|
1322
|
+
/**
|
|
1323
|
+
* How a retirement row's flag was detected.
|
|
1324
|
+
*/
|
|
1325
|
+
export type RetirementFlagKind = ("environment_variable" | "sdk_call" | "config_object" | "constant" | "vendor_export")
|
|
1326
|
+
/**
|
|
1327
|
+
* What a site does with the flag.
|
|
1328
|
+
*/
|
|
1329
|
+
export type FlagSiteRole = ("read" | "definition")
|
|
1330
|
+
/**
|
|
1331
|
+
* Why a flag is a retirement candidate.
|
|
1332
|
+
*/
|
|
1333
|
+
export type RetirementReason = ("single-read-site" | "test-only" | "literal-constant" | "identical-branches" | "empty-branch" | "guards-dead-code" | "defined-never-read" | "fully-rolled-out" | "archived-in-vendor" | "missing-in-vendor" | "vendor-only")
|
|
1334
|
+
/**
|
|
1335
|
+
* Action discriminants for a retirement row.
|
|
1336
|
+
*/
|
|
1337
|
+
export type RetirementActionType = "review-retirement"
|
|
1338
|
+
/**
|
|
1339
|
+
* State of a flag in a `--flag-state` vendor export.
|
|
1340
|
+
*/
|
|
1341
|
+
export type VendorFlagState = ("on" | "off" | "rolled_out" | "archived" | "experiment")
|
|
1269
1342
|
/**
|
|
1270
1343
|
* Independently-versioned wire-version newtype for the brief envelope.
|
|
1271
1344
|
* Serializes as the integer `REVIEW_BRIEF_SCHEMA_VERSION`.
|
|
1272
1345
|
*/
|
|
1273
|
-
export type ReviewBriefSchemaVersion =
|
|
1346
|
+
export type ReviewBriefSchemaVersion = 11
|
|
1274
1347
|
/**
|
|
1275
1348
|
* The exactly-three shippable decision categories (the SOLID-3). No cut category
|
|
1276
1349
|
* (abstraction / deletion / convention / irreversibility) is representable: this
|
|
@@ -1487,13 +1560,13 @@ base_snapshot_skipped?: (boolean | null)
|
|
|
1487
1560
|
summary: AuditSummary
|
|
1488
1561
|
attribution: AuditAttribution
|
|
1489
1562
|
/**
|
|
1490
|
-
*
|
|
1491
|
-
*
|
|
1492
|
-
* integration reads the verdict instead of
|
|
1493
|
-
* it usually cannot see. A gate fails the
|
|
1494
|
-
* AND `enforced` is true.
|
|
1495
|
-
*
|
|
1496
|
-
*
|
|
1563
|
+
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
1564
|
+
* always emits it, with the command's default exit rule in it also when
|
|
1565
|
+
* no flag armed a gate, so a CI integration reads the verdict instead of
|
|
1566
|
+
* guessing from a process status it usually cannot see. A gate fails the
|
|
1567
|
+
* build when `status` is `fail` AND `enforced` is true. The typed
|
|
1568
|
+
* programmatic API runs no CLI gate and leaves it absent. See
|
|
1569
|
+
* [`crate::GateOutcomes`].
|
|
1497
1570
|
*/
|
|
1498
1571
|
gate_outcomes?: (GateOutcomes | null)
|
|
1499
1572
|
/**
|
|
@@ -1579,24 +1652,25 @@ styling_inherited: number
|
|
|
1579
1652
|
duplication_demoted: number
|
|
1580
1653
|
}
|
|
1581
1654
|
/**
|
|
1582
|
-
*
|
|
1655
|
+
* The verdict of every gate a run evaluated, keyed by name.
|
|
1583
1656
|
*
|
|
1584
|
-
*
|
|
1585
|
-
*
|
|
1586
|
-
*
|
|
1587
|
-
*
|
|
1588
|
-
*
|
|
1657
|
+
* A gate is armed by a flag or by config. The default exit rule of a command
|
|
1658
|
+
* is always in the object, also when no flag armed a gate:
|
|
1659
|
+
* `error-severity-findings` on `dead-code`, `check` and the combined run
|
|
1660
|
+
* (with `health-findings` when the combined run analyzed health),
|
|
1661
|
+
* `health-findings` on `health`, `security-advisory` on `security` and
|
|
1662
|
+
* `audit-verdict` on `audit`. A reader of the JSON sees a failing run without
|
|
1663
|
+
* the exit code. `dupes` has no default exit rule, so a `dupes` run that armed
|
|
1664
|
+
* no gate carries no object and always exits 0.
|
|
1589
1665
|
*
|
|
1590
|
-
*
|
|
1591
|
-
*
|
|
1592
|
-
* is never emitted: it would assert that gates were armed and none tripped,
|
|
1593
|
-
* which is a different and false claim.
|
|
1666
|
+
* An empty object is never emitted. The typed programmatic API runs no CLI
|
|
1667
|
+
* gate and leaves the object absent.
|
|
1594
1668
|
*
|
|
1595
1669
|
* The names this build can emit are `error-severity-findings`, `regression`,
|
|
1596
1670
|
* `stale-baseline`, `duplication-threshold`, `health-min-score`,
|
|
1597
1671
|
* `health-min-severity`, `health-findings`, `health-coverage-gaps`,
|
|
1598
|
-
* `health-runtime-coverage`, `security`, `security-advisory`, `audit-verdict
|
|
1599
|
-
*
|
|
1672
|
+
* `health-runtime-coverage`, `security`, `security-advisory`, `audit-verdict`,
|
|
1673
|
+
* `type-aware-require` and `parse-error`. The set is OPEN: a name a consumer does not
|
|
1600
1674
|
* recognise means "some gate", not an error.
|
|
1601
1675
|
*/
|
|
1602
1676
|
export interface GateOutcomes {
|
|
@@ -1623,15 +1697,17 @@ export interface GateOutcome {
|
|
|
1623
1697
|
status: GateStatus
|
|
1624
1698
|
/**
|
|
1625
1699
|
* True when a `fail` from this gate makes the run exit non-zero. False
|
|
1626
|
-
* when the verdict is published for information only
|
|
1627
|
-
*
|
|
1700
|
+
* when the verdict is published for information only: the gate was never
|
|
1701
|
+
* armed, the run was told never to fail, or the combined machine formats
|
|
1702
|
+
* exit 0 for the gate.
|
|
1628
1703
|
*/
|
|
1629
1704
|
enforced: boolean
|
|
1630
1705
|
/**
|
|
1631
1706
|
* The measured value the gate compared, when there is one: the duplication
|
|
1632
|
-
* percentage, the health score,
|
|
1633
|
-
* severity floor
|
|
1634
|
-
* three reads as `3.0`. Absent for
|
|
1707
|
+
* percentage, the health score, the number of findings at or above the
|
|
1708
|
+
* severity floor, or the number of files in `files`. Whole numbers are
|
|
1709
|
+
* carried as JSON numbers, so a count of three reads as `3.0`. Absent for
|
|
1710
|
+
* gates that compare no number.
|
|
1635
1711
|
*/
|
|
1636
1712
|
observed?: (number | null)
|
|
1637
1713
|
/**
|
|
@@ -1649,6 +1725,34 @@ threshold?: (number | null)
|
|
|
1649
1725
|
* object. Absent for gates whose numbers speak for themselves.
|
|
1650
1726
|
*/
|
|
1651
1727
|
threshold_label?: (string | null)
|
|
1728
|
+
/**
|
|
1729
|
+
* The files the gate judged, for a gate that judges files rather than a
|
|
1730
|
+
* number. Only `parse-error` sets it: one item per file that did not
|
|
1731
|
+
* parse cleanly, sorted by path. Absent when the list is empty.
|
|
1732
|
+
*/
|
|
1733
|
+
files?: GateFile[]
|
|
1734
|
+
}
|
|
1735
|
+
/**
|
|
1736
|
+
* One file a file-judging gate names, with the reason the gate counted it.
|
|
1737
|
+
*
|
|
1738
|
+
* Today only `parse-error` emits it. The item carries the same facts as the
|
|
1739
|
+
* `source-parse-degraded` entry in `workspace_diagnostics[]` for that file,
|
|
1740
|
+
* so a consumer can act on the gate without a join.
|
|
1741
|
+
*/
|
|
1742
|
+
export interface GateFile {
|
|
1743
|
+
/**
|
|
1744
|
+
* The file path, relative to the project root, with `/` separators.
|
|
1745
|
+
*/
|
|
1746
|
+
path: string
|
|
1747
|
+
/**
|
|
1748
|
+
* The number of parser errors for the file.
|
|
1749
|
+
*/
|
|
1750
|
+
error_count: number
|
|
1751
|
+
/**
|
|
1752
|
+
* True when the parser stopped in the file instead of recovering, so the
|
|
1753
|
+
* analysis saw only the part before the error.
|
|
1754
|
+
*/
|
|
1755
|
+
panicked: boolean
|
|
1652
1756
|
}
|
|
1653
1757
|
/**
|
|
1654
1758
|
* Metric and rule definitions emitted under `_meta` when `--explain` is
|
|
@@ -2614,6 +2718,12 @@ unused_types: UnusedTypeFinding[]
|
|
|
2614
2718
|
* typed `actions` array natively.
|
|
2615
2719
|
*/
|
|
2616
2720
|
private_type_leaks: PrivateTypeLeakFinding[]
|
|
2721
|
+
/**
|
|
2722
|
+
* Exports marked `@deprecated` that still have at least one consumer in
|
|
2723
|
+
* a reachable file. Wrapped in [`DeprecatedExportInUseFinding`]. Opt-in: the
|
|
2724
|
+
* `deprecated-exports-in-use` rule defaults to `off`.
|
|
2725
|
+
*/
|
|
2726
|
+
deprecated_exports_in_use?: DeprecatedExportInUseFinding[]
|
|
2617
2727
|
/**
|
|
2618
2728
|
* Dependencies listed in package.json but never imported. Wrapped in
|
|
2619
2729
|
* [`UnusedDependencyFinding`] so each entry carries a typed `actions`
|
|
@@ -2941,13 +3051,13 @@ baseline_staleness?: (BaselineStaleness | null)
|
|
|
2941
3051
|
*/
|
|
2942
3052
|
regression?: (RegressionResult | null)
|
|
2943
3053
|
/**
|
|
2944
|
-
*
|
|
2945
|
-
*
|
|
2946
|
-
* integration reads the verdict instead of
|
|
2947
|
-
* it usually cannot see. A gate fails the
|
|
2948
|
-
* AND `enforced` is true.
|
|
2949
|
-
*
|
|
2950
|
-
*
|
|
3054
|
+
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
3055
|
+
* always emits it, with the command's default exit rule in it also when
|
|
3056
|
+
* no flag armed a gate, so a CI integration reads the verdict instead of
|
|
3057
|
+
* guessing from a process status it usually cannot see. A gate fails the
|
|
3058
|
+
* build when `status` is `fail` AND `enforced` is true. The typed
|
|
3059
|
+
* programmatic API runs no CLI gate and leaves it absent. See
|
|
3060
|
+
* [`crate::GateOutcomes`].
|
|
2951
3061
|
*/
|
|
2952
3062
|
gate_outcomes?: (GateOutcomes | null)
|
|
2953
3063
|
/**
|
|
@@ -3066,6 +3176,10 @@ unused_types: number
|
|
|
3066
3176
|
* Public exports whose signature references same-file private types.
|
|
3067
3177
|
*/
|
|
3068
3178
|
private_type_leaks: number
|
|
3179
|
+
/**
|
|
3180
|
+
* Exports marked `@deprecated` that are still referenced.
|
|
3181
|
+
*/
|
|
3182
|
+
deprecated_exports_in_use: number
|
|
3069
3183
|
/**
|
|
3070
3184
|
* Combined count of unused entries across `dependencies`,
|
|
3071
3185
|
* `devDependencies`, and `optionalDependencies`. The per-section
|
|
@@ -3247,6 +3361,13 @@ actions: IssueAction[]
|
|
|
3247
3361
|
* the merge-base. `None` when serialized directly from Rust.
|
|
3248
3362
|
*/
|
|
3249
3363
|
introduced?: (AuditIntroduced | null)
|
|
3364
|
+
/**
|
|
3365
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
3366
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
3367
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
3368
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
3369
|
+
*/
|
|
3370
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3250
3371
|
/**
|
|
3251
3372
|
* Advisory caveats on the reachability verdict behind this finding.
|
|
3252
3373
|
* Sorted, deduplicated, and omitted from the wire when empty, so a run
|
|
@@ -3450,6 +3571,17 @@ span_start: number
|
|
|
3450
3571
|
* Whether this finding comes from a barrel/index re-export rather than the source definition.
|
|
3451
3572
|
*/
|
|
3452
3573
|
is_re_export: boolean
|
|
3574
|
+
/**
|
|
3575
|
+
* Whether the export's leading JSDoc carries `@deprecated`. Absent from
|
|
3576
|
+
* the wire when false.
|
|
3577
|
+
*/
|
|
3578
|
+
deprecated?: boolean
|
|
3579
|
+
/**
|
|
3580
|
+
* Plain-text message of the `@deprecated` tag, capped at
|
|
3581
|
+
* [`DEPRECATED_REASON_MAX_CHARS`] characters. Absent when the export is
|
|
3582
|
+
* not deprecated or the tag carries no text.
|
|
3583
|
+
*/
|
|
3584
|
+
deprecated_reason?: (string | null)
|
|
3453
3585
|
/**
|
|
3454
3586
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3455
3587
|
* forward-compat).
|
|
@@ -3464,6 +3596,13 @@ semantic?: (SemanticCandidateDecision | null)
|
|
|
3464
3596
|
* the merge-base.
|
|
3465
3597
|
*/
|
|
3466
3598
|
introduced?: (AuditIntroduced | null)
|
|
3599
|
+
/**
|
|
3600
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
3601
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
3602
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
3603
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
3604
|
+
*/
|
|
3605
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3467
3606
|
/**
|
|
3468
3607
|
* Advisory caveats on the reachability verdict behind this finding.
|
|
3469
3608
|
* Sorted, deduplicated, and omitted from the wire when empty. Never gates
|
|
@@ -3507,6 +3646,17 @@ span_start: number
|
|
|
3507
3646
|
* Whether this finding comes from a barrel/index re-export rather than the source definition.
|
|
3508
3647
|
*/
|
|
3509
3648
|
is_re_export: boolean
|
|
3649
|
+
/**
|
|
3650
|
+
* Whether the export's leading JSDoc carries `@deprecated`. Absent from
|
|
3651
|
+
* the wire when false.
|
|
3652
|
+
*/
|
|
3653
|
+
deprecated?: boolean
|
|
3654
|
+
/**
|
|
3655
|
+
* Plain-text message of the `@deprecated` tag, capped at
|
|
3656
|
+
* [`DEPRECATED_REASON_MAX_CHARS`] characters. Absent when the export is
|
|
3657
|
+
* not deprecated or the tag carries no text.
|
|
3658
|
+
*/
|
|
3659
|
+
deprecated_reason?: (string | null)
|
|
3510
3660
|
/**
|
|
3511
3661
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3512
3662
|
* forward-compat).
|
|
@@ -3521,6 +3671,13 @@ semantic?: (SemanticCandidateDecision | null)
|
|
|
3521
3671
|
* the merge-base.
|
|
3522
3672
|
*/
|
|
3523
3673
|
introduced?: (AuditIntroduced | null)
|
|
3674
|
+
/**
|
|
3675
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
3676
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
3677
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
3678
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
3679
|
+
*/
|
|
3680
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3524
3681
|
/**
|
|
3525
3682
|
* Advisory caveats on the reachability verdict behind this finding.
|
|
3526
3683
|
* A type export rests on exactly the reachability test an
|
|
@@ -3575,6 +3732,103 @@ actions: IssueAction[]
|
|
|
3575
3732
|
* the merge-base.
|
|
3576
3733
|
*/
|
|
3577
3734
|
introduced?: (AuditIntroduced | null)
|
|
3735
|
+
/**
|
|
3736
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
3737
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
3738
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
3739
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
3740
|
+
*/
|
|
3741
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3742
|
+
}
|
|
3743
|
+
/**
|
|
3744
|
+
* Wire-shape envelope for a [`DeprecatedExportInUse`] finding. Carries a
|
|
3745
|
+
* manual `migrate-deprecated-export` primary action plus a `suppress-line`
|
|
3746
|
+
* secondary. Never auto-fixable: fallow does not rewrite consumers.
|
|
3747
|
+
*/
|
|
3748
|
+
export interface DeprecatedExportInUseFinding {
|
|
3749
|
+
/**
|
|
3750
|
+
* File that declares the deprecated export.
|
|
3751
|
+
*/
|
|
3752
|
+
path: string
|
|
3753
|
+
/**
|
|
3754
|
+
* Name of the deprecated export.
|
|
3755
|
+
*/
|
|
3756
|
+
export_name: string
|
|
3757
|
+
/**
|
|
3758
|
+
* Whether this is a type-only export.
|
|
3759
|
+
*/
|
|
3760
|
+
is_type_only: boolean
|
|
3761
|
+
/**
|
|
3762
|
+
* 1-based line number of the export.
|
|
3763
|
+
*/
|
|
3764
|
+
line: number
|
|
3765
|
+
/**
|
|
3766
|
+
* 0-based byte column offset of the export.
|
|
3767
|
+
*/
|
|
3768
|
+
col: number
|
|
3769
|
+
/**
|
|
3770
|
+
* Byte offset of the export in the source file.
|
|
3771
|
+
*/
|
|
3772
|
+
span_start: number
|
|
3773
|
+
/**
|
|
3774
|
+
* Plain-text message of the `@deprecated` tag, capped at
|
|
3775
|
+
* [`DEPRECATED_REASON_MAX_CHARS`] characters. Absent when the tag
|
|
3776
|
+
* carries no text.
|
|
3777
|
+
*/
|
|
3778
|
+
deprecated_reason?: (string | null)
|
|
3779
|
+
/**
|
|
3780
|
+
* Exact number of distinct consumers: reference sites in reachable
|
|
3781
|
+
* files, one per path, line, column and kind. `consumers` holds the
|
|
3782
|
+
* first [`DEPRECATED_CONSUMER_SAMPLE_CAP`] of them, so the sample is
|
|
3783
|
+
* complete when this count is at most the cap.
|
|
3784
|
+
*/
|
|
3785
|
+
consumer_count: number
|
|
3786
|
+
/**
|
|
3787
|
+
* Consumer sample sorted by path, line, column and kind, capped at
|
|
3788
|
+
* [`DEPRECATED_CONSUMER_SAMPLE_CAP`] entries.
|
|
3789
|
+
*/
|
|
3790
|
+
consumers: DeprecatedExportConsumer[]
|
|
3791
|
+
/**
|
|
3792
|
+
* True when the export is part of the public API: it lives in an entry
|
|
3793
|
+
* point, or a re-export chain reaches an entry point. External consumers
|
|
3794
|
+
* are not visible, so the finding makes no removal claim.
|
|
3795
|
+
*/
|
|
3796
|
+
public_api: boolean
|
|
3797
|
+
/**
|
|
3798
|
+
* Suggested next steps. Always emitted (possibly empty for
|
|
3799
|
+
* forward-compat).
|
|
3800
|
+
*/
|
|
3801
|
+
actions: IssueAction[]
|
|
3802
|
+
/**
|
|
3803
|
+
* Set by the audit pass when this finding is introduced relative to
|
|
3804
|
+
* the merge-base.
|
|
3805
|
+
*/
|
|
3806
|
+
introduced?: (AuditIntroduced | null)
|
|
3807
|
+
/**
|
|
3808
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
3809
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
3810
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
3811
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
3812
|
+
*/
|
|
3813
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3814
|
+
}
|
|
3815
|
+
/**
|
|
3816
|
+
* One file location that references a deprecated export.
|
|
3817
|
+
*/
|
|
3818
|
+
export interface DeprecatedExportConsumer {
|
|
3819
|
+
/**
|
|
3820
|
+
* File that references the deprecated export.
|
|
3821
|
+
*/
|
|
3822
|
+
path: string
|
|
3823
|
+
/**
|
|
3824
|
+
* 1-based line number of the import or re-export statement.
|
|
3825
|
+
*/
|
|
3826
|
+
line: number
|
|
3827
|
+
/**
|
|
3828
|
+
* 0-based byte column offset of the import or re-export statement.
|
|
3829
|
+
*/
|
|
3830
|
+
col: number
|
|
3831
|
+
kind: DeprecatedConsumerKind
|
|
3578
3832
|
}
|
|
3579
3833
|
/**
|
|
3580
3834
|
* Wire-shape envelope for an [`UnusedDependency`] finding consumed under
|
|
@@ -3612,6 +3866,13 @@ actions: IssueAction[]
|
|
|
3612
3866
|
* the merge-base.
|
|
3613
3867
|
*/
|
|
3614
3868
|
introduced?: (AuditIntroduced | null)
|
|
3869
|
+
/**
|
|
3870
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
3871
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
3872
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
3873
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
3874
|
+
*/
|
|
3875
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3615
3876
|
/**
|
|
3616
3877
|
* Advisory caveats on the verdict behind this finding. A dependency is
|
|
3617
3878
|
* reported unused when NO module in the project imports its specifier,
|
|
@@ -3658,6 +3919,13 @@ actions: IssueAction[]
|
|
|
3658
3919
|
* the merge-base.
|
|
3659
3920
|
*/
|
|
3660
3921
|
introduced?: (AuditIntroduced | null)
|
|
3922
|
+
/**
|
|
3923
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
3924
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
3925
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
3926
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
3927
|
+
*/
|
|
3928
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3661
3929
|
/**
|
|
3662
3930
|
* Advisory caveats on the verdict behind this finding. A dependency is
|
|
3663
3931
|
* reported unused when NO module in the project imports its specifier,
|
|
@@ -3704,6 +3972,13 @@ actions: IssueAction[]
|
|
|
3704
3972
|
* the merge-base.
|
|
3705
3973
|
*/
|
|
3706
3974
|
introduced?: (AuditIntroduced | null)
|
|
3975
|
+
/**
|
|
3976
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
3977
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
3978
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
3979
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
3980
|
+
*/
|
|
3981
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3707
3982
|
/**
|
|
3708
3983
|
* Advisory caveats on the verdict behind this finding. A dependency is
|
|
3709
3984
|
* reported unused when NO module in the project imports its specifier,
|
|
@@ -3750,6 +4025,13 @@ actions: IssueAction[]
|
|
|
3750
4025
|
* the merge-base.
|
|
3751
4026
|
*/
|
|
3752
4027
|
introduced?: (AuditIntroduced | null)
|
|
4028
|
+
/**
|
|
4029
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4030
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4031
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4032
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4033
|
+
*/
|
|
4034
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3753
4035
|
/**
|
|
3754
4036
|
* Advisory caveats on the verdict behind this finding. A member's usage
|
|
3755
4037
|
* is collected by walking the member accesses of every module the run
|
|
@@ -3802,6 +4084,13 @@ semantic?: (SemanticCandidateDecision | null)
|
|
|
3802
4084
|
* the merge-base.
|
|
3803
4085
|
*/
|
|
3804
4086
|
introduced?: (AuditIntroduced | null)
|
|
4087
|
+
/**
|
|
4088
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4089
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4090
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4091
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4092
|
+
*/
|
|
4093
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3805
4094
|
/**
|
|
3806
4095
|
* Advisory caveats on the verdict behind this finding. A class member's
|
|
3807
4096
|
* usage is collected by the same reachability-free member-access walk an
|
|
@@ -3855,6 +4144,13 @@ actions: IssueAction[]
|
|
|
3855
4144
|
* the merge-base.
|
|
3856
4145
|
*/
|
|
3857
4146
|
introduced?: (AuditIntroduced | null)
|
|
4147
|
+
/**
|
|
4148
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4149
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4150
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4151
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4152
|
+
*/
|
|
4153
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3858
4154
|
/**
|
|
3859
4155
|
* Advisory caveats on the verdict behind this finding. A store member's
|
|
3860
4156
|
* usage is collected by the same reachability-free member-access walk a
|
|
@@ -3905,6 +4201,13 @@ actions: IssueAction[]
|
|
|
3905
4201
|
* the merge-base.
|
|
3906
4202
|
*/
|
|
3907
4203
|
introduced?: (AuditIntroduced | null)
|
|
4204
|
+
/**
|
|
4205
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4206
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4207
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4208
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4209
|
+
*/
|
|
4210
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3908
4211
|
}
|
|
3909
4212
|
/**
|
|
3910
4213
|
* Wire-shape envelope for an [`UnlistedDependency`] finding. Carries an
|
|
@@ -3931,6 +4234,13 @@ actions: IssueAction[]
|
|
|
3931
4234
|
* the merge-base.
|
|
3932
4235
|
*/
|
|
3933
4236
|
introduced?: (AuditIntroduced | null)
|
|
4237
|
+
/**
|
|
4238
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4239
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4240
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4241
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4242
|
+
*/
|
|
4243
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3934
4244
|
}
|
|
3935
4245
|
/**
|
|
3936
4246
|
* A location where an import occurs.
|
|
@@ -3981,6 +4291,13 @@ actions: IssueAction[]
|
|
|
3981
4291
|
* the merge-base.
|
|
3982
4292
|
*/
|
|
3983
4293
|
introduced?: (AuditIntroduced | null)
|
|
4294
|
+
/**
|
|
4295
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4296
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4297
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4298
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4299
|
+
*/
|
|
4300
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
3984
4301
|
}
|
|
3985
4302
|
/**
|
|
3986
4303
|
* A location where a duplicate export appears.
|
|
@@ -4027,6 +4344,13 @@ actions: IssueAction[]
|
|
|
4027
4344
|
* the merge-base.
|
|
4028
4345
|
*/
|
|
4029
4346
|
introduced?: (AuditIntroduced | null)
|
|
4347
|
+
/**
|
|
4348
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4349
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4350
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4351
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4352
|
+
*/
|
|
4353
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4030
4354
|
}
|
|
4031
4355
|
/**
|
|
4032
4356
|
* Wire-shape envelope for a [`TestOnlyDependency`] finding. Carries a
|
|
@@ -4057,6 +4381,13 @@ actions: IssueAction[]
|
|
|
4057
4381
|
* the merge-base.
|
|
4058
4382
|
*/
|
|
4059
4383
|
introduced?: (AuditIntroduced | null)
|
|
4384
|
+
/**
|
|
4385
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4386
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4387
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4388
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4389
|
+
*/
|
|
4390
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4060
4391
|
}
|
|
4061
4392
|
/**
|
|
4062
4393
|
* Wire-shape envelope for a [`DevDependencyInProduction`] finding. Carries a
|
|
@@ -4088,6 +4419,13 @@ actions: IssueAction[]
|
|
|
4088
4419
|
* the merge-base.
|
|
4089
4420
|
*/
|
|
4090
4421
|
introduced?: (AuditIntroduced | null)
|
|
4422
|
+
/**
|
|
4423
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4424
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4425
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4426
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4427
|
+
*/
|
|
4428
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4091
4429
|
}
|
|
4092
4430
|
/**
|
|
4093
4431
|
* Wire-shape envelope for a [`CircularDependency`] finding. Mirrors
|
|
@@ -4135,6 +4473,13 @@ actions: IssueAction[]
|
|
|
4135
4473
|
* the merge-base.
|
|
4136
4474
|
*/
|
|
4137
4475
|
introduced?: (AuditIntroduced | null)
|
|
4476
|
+
/**
|
|
4477
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4478
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4479
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4480
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4481
|
+
*/
|
|
4482
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4138
4483
|
}
|
|
4139
4484
|
/**
|
|
4140
4485
|
* One import hop in a circular dependency: the file containing the import
|
|
@@ -4190,6 +4535,13 @@ actions: IssueAction[]
|
|
|
4190
4535
|
* the merge-base.
|
|
4191
4536
|
*/
|
|
4192
4537
|
introduced?: (AuditIntroduced | null)
|
|
4538
|
+
/**
|
|
4539
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4540
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4541
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4542
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4543
|
+
*/
|
|
4544
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4193
4545
|
}
|
|
4194
4546
|
/**
|
|
4195
4547
|
* Wire-shape envelope for a [`BoundaryViolation`] finding. Mirrors
|
|
@@ -4236,6 +4588,13 @@ actions: IssueAction[]
|
|
|
4236
4588
|
* the merge-base.
|
|
4237
4589
|
*/
|
|
4238
4590
|
introduced?: (AuditIntroduced | null)
|
|
4591
|
+
/**
|
|
4592
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4593
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4594
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4595
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4596
|
+
*/
|
|
4597
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4239
4598
|
}
|
|
4240
4599
|
/**
|
|
4241
4600
|
* Wire-shape envelope for a [`BoundaryCoverageViolation`] finding. Carries
|
|
@@ -4264,6 +4623,13 @@ actions: IssueAction[]
|
|
|
4264
4623
|
* the merge-base.
|
|
4265
4624
|
*/
|
|
4266
4625
|
introduced?: (AuditIntroduced | null)
|
|
4626
|
+
/**
|
|
4627
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4628
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4629
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4630
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4631
|
+
*/
|
|
4632
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4267
4633
|
}
|
|
4268
4634
|
/**
|
|
4269
4635
|
* Wire-shape envelope for a [`BoundaryCallViolation`] finding. Carries
|
|
@@ -4305,6 +4671,13 @@ actions: IssueAction[]
|
|
|
4305
4671
|
* the merge-base.
|
|
4306
4672
|
*/
|
|
4307
4673
|
introduced?: (AuditIntroduced | null)
|
|
4674
|
+
/**
|
|
4675
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4676
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4677
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4678
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4679
|
+
*/
|
|
4680
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4308
4681
|
}
|
|
4309
4682
|
/**
|
|
4310
4683
|
* Wire-shape envelope for a [`PolicyViolation`] finding. Carries actions for
|
|
@@ -4382,6 +4755,13 @@ missing_reason?: boolean
|
|
|
4382
4755
|
* Suggested next steps. Always emitted.
|
|
4383
4756
|
*/
|
|
4384
4757
|
actions: IssueAction[]
|
|
4758
|
+
/**
|
|
4759
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4760
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4761
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4762
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4763
|
+
*/
|
|
4764
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4385
4765
|
}
|
|
4386
4766
|
/**
|
|
4387
4767
|
* Wire-shape envelope for an [`UnusedCatalogEntry`] finding. Per-instance
|
|
@@ -4422,6 +4802,13 @@ actions: IssueAction[]
|
|
|
4422
4802
|
* the merge-base.
|
|
4423
4803
|
*/
|
|
4424
4804
|
introduced?: (AuditIntroduced | null)
|
|
4805
|
+
/**
|
|
4806
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4807
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4808
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4809
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4810
|
+
*/
|
|
4811
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4425
4812
|
}
|
|
4426
4813
|
/**
|
|
4427
4814
|
* Wire-shape envelope for an [`EmptyCatalogGroup`] finding. Carries a
|
|
@@ -4450,6 +4837,13 @@ actions: IssueAction[]
|
|
|
4450
4837
|
* the merge-base.
|
|
4451
4838
|
*/
|
|
4452
4839
|
introduced?: (AuditIntroduced | null)
|
|
4840
|
+
/**
|
|
4841
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4842
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4843
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4844
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4845
|
+
*/
|
|
4846
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4453
4847
|
}
|
|
4454
4848
|
/**
|
|
4455
4849
|
* Wire-shape envelope for an [`UnresolvedCatalogReference`] finding. The
|
|
@@ -4500,6 +4894,13 @@ actions: IssueAction[]
|
|
|
4500
4894
|
* the merge-base.
|
|
4501
4895
|
*/
|
|
4502
4896
|
introduced?: (AuditIntroduced | null)
|
|
4897
|
+
/**
|
|
4898
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4899
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4900
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4901
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4902
|
+
*/
|
|
4903
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4503
4904
|
}
|
|
4504
4905
|
/**
|
|
4505
4906
|
* Wire-shape envelope for an [`UnusedDependencyOverride`] finding. Carries
|
|
@@ -4562,6 +4963,13 @@ actions: IssueAction[]
|
|
|
4562
4963
|
* the merge-base.
|
|
4563
4964
|
*/
|
|
4564
4965
|
introduced?: (AuditIntroduced | null)
|
|
4966
|
+
/**
|
|
4967
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4968
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4969
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4970
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4971
|
+
*/
|
|
4972
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4565
4973
|
}
|
|
4566
4974
|
/**
|
|
4567
4975
|
* Wire-shape envelope for a [`MisconfiguredDependencyOverride`] finding.
|
|
@@ -4611,6 +5019,13 @@ actions: IssueAction[]
|
|
|
4611
5019
|
* the merge-base.
|
|
4612
5020
|
*/
|
|
4613
5021
|
introduced?: (AuditIntroduced | null)
|
|
5022
|
+
/**
|
|
5023
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5024
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5025
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5026
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5027
|
+
*/
|
|
5028
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4614
5029
|
}
|
|
4615
5030
|
/**
|
|
4616
5031
|
* Wire-shape envelope for an [`InvalidClientExport`] finding. There is no safe
|
|
@@ -4652,6 +5067,13 @@ actions: IssueAction[]
|
|
|
4652
5067
|
* the merge-base.
|
|
4653
5068
|
*/
|
|
4654
5069
|
introduced?: (AuditIntroduced | null)
|
|
5070
|
+
/**
|
|
5071
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5072
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5073
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5074
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5075
|
+
*/
|
|
5076
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4655
5077
|
}
|
|
4656
5078
|
/**
|
|
4657
5079
|
* Wire-shape envelope for a [`MixedClientServerBarrel`] finding. There is no
|
|
@@ -4693,6 +5115,13 @@ actions: IssueAction[]
|
|
|
4693
5115
|
* the merge-base.
|
|
4694
5116
|
*/
|
|
4695
5117
|
introduced?: (AuditIntroduced | null)
|
|
5118
|
+
/**
|
|
5119
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5120
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5121
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5122
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5123
|
+
*/
|
|
5124
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4696
5125
|
}
|
|
4697
5126
|
/**
|
|
4698
5127
|
* Wire-shape envelope for a [`MisplacedDirective`] finding. There is no safe
|
|
@@ -4729,6 +5158,13 @@ actions: IssueAction[]
|
|
|
4729
5158
|
* the merge-base.
|
|
4730
5159
|
*/
|
|
4731
5160
|
introduced?: (AuditIntroduced | null)
|
|
5161
|
+
/**
|
|
5162
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5163
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5164
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5165
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5166
|
+
*/
|
|
5167
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4732
5168
|
}
|
|
4733
5169
|
/**
|
|
4734
5170
|
* Wire-shape envelope for an [`UnprovidedInject`] finding. There is no safe
|
|
@@ -4767,6 +5203,13 @@ actions: IssueAction[]
|
|
|
4767
5203
|
* the merge-base.
|
|
4768
5204
|
*/
|
|
4769
5205
|
introduced?: (AuditIntroduced | null)
|
|
5206
|
+
/**
|
|
5207
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5208
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5209
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5210
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5211
|
+
*/
|
|
5212
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4770
5213
|
}
|
|
4771
5214
|
/**
|
|
4772
5215
|
* Wire-shape envelope for an [`UnrenderedComponent`] finding. There is no safe
|
|
@@ -4816,6 +5259,13 @@ actions: IssueAction[]
|
|
|
4816
5259
|
* the merge-base.
|
|
4817
5260
|
*/
|
|
4818
5261
|
introduced?: (AuditIntroduced | null)
|
|
5262
|
+
/**
|
|
5263
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5264
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5265
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5266
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5267
|
+
*/
|
|
5268
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4819
5269
|
}
|
|
4820
5270
|
/**
|
|
4821
5271
|
* Wire-shape envelope for a [`RouteCollision`] finding. A route collision is a
|
|
@@ -4858,6 +5308,13 @@ actions: IssueAction[]
|
|
|
4858
5308
|
* the merge-base.
|
|
4859
5309
|
*/
|
|
4860
5310
|
introduced?: (AuditIntroduced | null)
|
|
5311
|
+
/**
|
|
5312
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5313
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5314
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5315
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5316
|
+
*/
|
|
5317
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4861
5318
|
}
|
|
4862
5319
|
/**
|
|
4863
5320
|
* Wire-shape envelope for a [`DynamicSegmentNameConflict`] finding. The
|
|
@@ -4904,6 +5361,13 @@ actions: IssueAction[]
|
|
|
4904
5361
|
* the merge-base.
|
|
4905
5362
|
*/
|
|
4906
5363
|
introduced?: (AuditIntroduced | null)
|
|
5364
|
+
/**
|
|
5365
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5366
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5367
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5368
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5369
|
+
*/
|
|
5370
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4907
5371
|
}
|
|
4908
5372
|
/**
|
|
4909
5373
|
* Wire-shape envelope for an [`UnusedComponentProp`] finding. There is no safe
|
|
@@ -4942,6 +5406,13 @@ actions: IssueAction[]
|
|
|
4942
5406
|
* the merge-base.
|
|
4943
5407
|
*/
|
|
4944
5408
|
introduced?: (AuditIntroduced | null)
|
|
5409
|
+
/**
|
|
5410
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5411
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5412
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5413
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5414
|
+
*/
|
|
5415
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4945
5416
|
}
|
|
4946
5417
|
/**
|
|
4947
5418
|
* Wire-shape envelope for an [`UnusedComponentEmit`] finding. There is no safe
|
|
@@ -4980,6 +5451,13 @@ actions: IssueAction[]
|
|
|
4980
5451
|
* the merge-base.
|
|
4981
5452
|
*/
|
|
4982
5453
|
introduced?: (AuditIntroduced | null)
|
|
5454
|
+
/**
|
|
5455
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5456
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5457
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5458
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5459
|
+
*/
|
|
5460
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4983
5461
|
}
|
|
4984
5462
|
/**
|
|
4985
5463
|
* Wire-shape envelope for an [`UnusedComponentInput`] finding. There is no safe
|
|
@@ -5018,6 +5496,13 @@ actions: IssueAction[]
|
|
|
5018
5496
|
* the merge-base.
|
|
5019
5497
|
*/
|
|
5020
5498
|
introduced?: (AuditIntroduced | null)
|
|
5499
|
+
/**
|
|
5500
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5501
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5502
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5503
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5504
|
+
*/
|
|
5505
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
5021
5506
|
}
|
|
5022
5507
|
/**
|
|
5023
5508
|
* Wire-shape envelope for an [`UnusedComponentOutput`] finding. There is no safe
|
|
@@ -5056,6 +5541,13 @@ actions: IssueAction[]
|
|
|
5056
5541
|
* the merge-base.
|
|
5057
5542
|
*/
|
|
5058
5543
|
introduced?: (AuditIntroduced | null)
|
|
5544
|
+
/**
|
|
5545
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5546
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5547
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5548
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5549
|
+
*/
|
|
5550
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
5059
5551
|
}
|
|
5060
5552
|
/**
|
|
5061
5553
|
* Wire-shape envelope for an [`UnusedSvelteEvent`] finding. There is no safe
|
|
@@ -5095,6 +5587,13 @@ actions: IssueAction[]
|
|
|
5095
5587
|
* the merge-base.
|
|
5096
5588
|
*/
|
|
5097
5589
|
introduced?: (AuditIntroduced | null)
|
|
5590
|
+
/**
|
|
5591
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5592
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5593
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5594
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5595
|
+
*/
|
|
5596
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
5098
5597
|
}
|
|
5099
5598
|
/**
|
|
5100
5599
|
* Wire-shape envelope for an [`UnusedServerAction`] finding. There is no safe
|
|
@@ -5129,6 +5628,13 @@ actions: IssueAction[]
|
|
|
5129
5628
|
* the merge-base.
|
|
5130
5629
|
*/
|
|
5131
5630
|
introduced?: (AuditIntroduced | null)
|
|
5631
|
+
/**
|
|
5632
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5633
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5634
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5635
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5636
|
+
*/
|
|
5637
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
5132
5638
|
}
|
|
5133
5639
|
/**
|
|
5134
5640
|
* Wire-shape envelope for an [`UnusedLoadDataKey`] finding. There is no safe
|
|
@@ -5169,6 +5675,13 @@ actions: IssueAction[]
|
|
|
5169
5675
|
* the merge-base.
|
|
5170
5676
|
*/
|
|
5171
5677
|
introduced?: (AuditIntroduced | null)
|
|
5678
|
+
/**
|
|
5679
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5680
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5681
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
5682
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
5683
|
+
*/
|
|
5684
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
5172
5685
|
}
|
|
5173
5686
|
/**
|
|
5174
5687
|
* Wire-shape envelope for a [`PropDrillingChain`] finding. There is no safe
|
|
@@ -5203,6 +5716,14 @@ actions: IssueAction[]
|
|
|
5203
5716
|
* the merge-base.
|
|
5204
5717
|
*/
|
|
5205
5718
|
introduced?: (AuditIntroduced | null)
|
|
5719
|
+
/**
|
|
5720
|
+
* Rule severity of this finding. This type never gates the run, so the
|
|
5721
|
+
* value does not change the exit code. `fallow report --from` reads it
|
|
5722
|
+
* for the SARIF level, so the level does not depend on the config at
|
|
5723
|
+
* render time. Absent in output from older versions. Not part of the
|
|
5724
|
+
* finding identity, baseline keys or fingerprints.
|
|
5725
|
+
*/
|
|
5726
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
5206
5727
|
}
|
|
5207
5728
|
/**
|
|
5208
5729
|
* One hop in a prop-drilling chain: a component that received the prop and
|
|
@@ -5260,6 +5781,14 @@ actions: IssueAction[]
|
|
|
5260
5781
|
* the merge-base.
|
|
5261
5782
|
*/
|
|
5262
5783
|
introduced?: (AuditIntroduced | null)
|
|
5784
|
+
/**
|
|
5785
|
+
* Rule severity of this finding. This type never gates the run, so the
|
|
5786
|
+
* value does not change the exit code. `fallow report --from` reads it
|
|
5787
|
+
* for the SARIF level, so the level does not depend on the config at
|
|
5788
|
+
* render time. Absent in output from older versions. Not part of the
|
|
5789
|
+
* finding identity, baseline keys or fingerprints.
|
|
5790
|
+
*/
|
|
5791
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
5263
5792
|
}
|
|
5264
5793
|
/**
|
|
5265
5794
|
* Wire-shape envelope for a [`DuplicatePropShape`] finding. There is no safe
|
|
@@ -5310,6 +5839,14 @@ actions: IssueAction[]
|
|
|
5310
5839
|
* the merge-base.
|
|
5311
5840
|
*/
|
|
5312
5841
|
introduced?: (AuditIntroduced | null)
|
|
5842
|
+
/**
|
|
5843
|
+
* Rule severity of this finding. This type never gates the run, so the
|
|
5844
|
+
* value does not change the exit code. `fallow report --from` reads it
|
|
5845
|
+
* for the SARIF level, so the level does not depend on the config at
|
|
5846
|
+
* render time. Absent in output from older versions. Not part of the
|
|
5847
|
+
* finding identity, baseline keys or fingerprints.
|
|
5848
|
+
*/
|
|
5849
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
5313
5850
|
}
|
|
5314
5851
|
/**
|
|
5315
5852
|
* One member of a duplicate-prop-shape group: the OTHER components that share
|
|
@@ -5483,6 +6020,19 @@ moved_entries: number
|
|
|
5483
6020
|
* existed gets, which is why the keys remain the fallback.
|
|
5484
6021
|
*/
|
|
5485
6022
|
unrecognised_format?: boolean
|
|
6023
|
+
/**
|
|
6024
|
+
* The command that saved the loaded file, when `unrecognised_format` is
|
|
6025
|
+
* true and the file names a writer this version knows: `dead-code`,
|
|
6026
|
+
* `dupes` or `health`, the token the file carries in its top-level `kind`.
|
|
6027
|
+
*
|
|
6028
|
+
* Absent, never null, for this command's own baseline, for a file that
|
|
6029
|
+
* names no writer (an empty file, or a baseline saved before `kind`
|
|
6030
|
+
* existed) and for a `kind` token this version does not know. The value
|
|
6031
|
+
* set is OPEN: a later release can add a writer, so treat an unknown value
|
|
6032
|
+
* as "another command". The CLI computes it once per loaded baseline and
|
|
6033
|
+
* uses the same value for its stderr note.
|
|
6034
|
+
*/
|
|
6035
|
+
saved_by?: string
|
|
5486
6036
|
/**
|
|
5487
6037
|
* Which channels narrowed this run, present and non-empty exactly when
|
|
5488
6038
|
* `change_scoped` is true. Both members are derived from one function, so
|
|
@@ -5566,9 +6116,10 @@ reason?: (string | null)
|
|
|
5566
6116
|
* whole object narrows the report tells its reader an unwritten SARIF file
|
|
5567
6117
|
* widened the analysis, which is what `affects` exists to prevent.
|
|
5568
6118
|
*
|
|
5569
|
-
* `scope_size` is emitted for `diff-filter
|
|
5570
|
-
*
|
|
5571
|
-
*
|
|
6119
|
+
* `scope_size` is emitted for `diff-filter`, in added lines, and for
|
|
6120
|
+
* `changed-since`, in changed files that the run analyzed. `sarif-file`
|
|
6121
|
+
* measures no scope. A consumer reads the unit off the name, so a name that
|
|
6122
|
+
* starts to measure its own scope in a later release needs no change here.
|
|
5572
6123
|
*
|
|
5573
6124
|
* `invalid-ref` is reachable only through the programmatic API. The
|
|
5574
6125
|
* `--changed-since` flag validates its value before a run starts and fails
|
|
@@ -5591,7 +6142,8 @@ affects: RequestEffect
|
|
|
5591
6142
|
/**
|
|
5592
6143
|
* What was asked, as the user spelled it: the git ref for
|
|
5593
6144
|
* `changed-since`, the diff source label (`--diff-file pr.diff`,
|
|
5594
|
-
* `--diff-stdin`, `$FALLOW_DIFF_FILE build/pr.diff
|
|
6145
|
+
* `--diff-stdin`, `$FALLOW_DIFF_FILE build/pr.diff`, or
|
|
6146
|
+
* `diffFile pr.diff` for the programmatic option) for `diff-filter`,
|
|
5595
6147
|
* the target path for `sarif-file`. Echoed rather than normalised, so a
|
|
5596
6148
|
* consumer must not join it to the project root the way it joins every
|
|
5597
6149
|
* other path-shaped field.
|
|
@@ -5604,9 +6156,14 @@ requested: string
|
|
|
5604
6156
|
* number there would describe a scope nobody applied.
|
|
5605
6157
|
*
|
|
5606
6158
|
* The unit belongs to the name. `diff-filter` counts added lines, which is
|
|
5607
|
-
* what its filter keeps a finding for.
|
|
5608
|
-
*
|
|
5609
|
-
*
|
|
6159
|
+
* what its filter keeps a finding for. `changed-since` counts changed
|
|
6160
|
+
* files that the run analyzed: a changed file that discovery or an ignore
|
|
6161
|
+
* rule dropped does not count, so a change to a README only gives `0`. A
|
|
6162
|
+
* combined run counts a file that any of its analyses kept, because a
|
|
6163
|
+
* per-analysis `production` setting can give its analyses different
|
|
6164
|
+
* files.
|
|
6165
|
+
* Read the unit off the name the entry is keyed under, never across names,
|
|
6166
|
+
* and read an absent member as "not measured" rather than as zero.
|
|
5610
6167
|
*
|
|
5611
6168
|
* The count is what the run INDEXED rather than the true total:
|
|
5612
6169
|
* `diff-filter` indexes at most one million added lines and reports that
|
|
@@ -6201,6 +6758,14 @@ react_prop_count?: number
|
|
|
6201
6758
|
react_hook_profile?: (ReactHookProfile | null)
|
|
6202
6759
|
exceeded: ExceededThreshold
|
|
6203
6760
|
severity: FindingSeverity
|
|
6761
|
+
/**
|
|
6762
|
+
* Gate severity after the `complexity-*` rules and their
|
|
6763
|
+
* `overrides[].rules` entries: `error` fails the run, `warn` does not.
|
|
6764
|
+
* The most severe rule of the kinds in `exceeded` wins. It is separate
|
|
6765
|
+
* from the band in `severity`, which ranks the finding and does not gate
|
|
6766
|
+
* it. Absent in reports from older versions.
|
|
6767
|
+
*/
|
|
6768
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
6204
6769
|
/**
|
|
6205
6770
|
* CRAP score (change risk anti-pattern), when coverage data exists.
|
|
6206
6771
|
*/
|
|
@@ -6507,6 +7072,11 @@ average_maintainability?: (number | null)
|
|
|
6507
7072
|
* Coverage model behind the CRAP scores, when coverage was used.
|
|
6508
7073
|
*/
|
|
6509
7074
|
coverage_model?: (CoverageModel | null)
|
|
7075
|
+
/**
|
|
7076
|
+
* Input format of the measured coverage (`istanbul` or `v8`). Present
|
|
7077
|
+
* only with `coverage_model: "istanbul"`.
|
|
7078
|
+
*/
|
|
7079
|
+
coverage_input_format?: (CoverageInputFormat | null)
|
|
6510
7080
|
/**
|
|
6511
7081
|
* Whether CRAP findings mix coverage sources.
|
|
6512
7082
|
*/
|
|
@@ -7510,8 +8080,8 @@ watermark?: (RuntimeCoverageWatermark | null)
|
|
|
7510
8080
|
*/
|
|
7511
8081
|
warnings?: RuntimeCoverageMessage[]
|
|
7512
8082
|
/**
|
|
7513
|
-
* Whether an autonomous agent may act on this report (
|
|
7514
|
-
*
|
|
8083
|
+
* Whether an autonomous agent may act on this report (mirrors
|
|
8084
|
+
* the cloud runtime-context contract). `false` when the capture
|
|
7515
8085
|
* carries no usable runtime evidence (no tracked functions); then
|
|
7516
8086
|
* `actionability_verdict` is `insufficient_evidence` and
|
|
7517
8087
|
* `actionability_reason` explains. F4: a non-action floor, never a gate on a
|
|
@@ -7741,7 +8311,7 @@ description: string
|
|
|
7741
8311
|
auto_fixable: boolean
|
|
7742
8312
|
}
|
|
7743
8313
|
/**
|
|
7744
|
-
* Discriminator inputs that PRODUCED a finding's verdict
|
|
8314
|
+
* Discriminator inputs that PRODUCED a finding's verdict,
|
|
7745
8315
|
* emitted alongside the verdict so an agent can reproduce it and see the
|
|
7746
8316
|
* minimum-observation confidence cap instead of re-deriving them from scratch.
|
|
7747
8317
|
* F4: these make the EXISTING Fallow-owned discriminators legible; they are not
|
|
@@ -7830,6 +8400,48 @@ percentile: number
|
|
|
7830
8400
|
* when empty.
|
|
7831
8401
|
*/
|
|
7832
8402
|
actions?: RuntimeCoverageAction[]
|
|
8403
|
+
/**
|
|
8404
|
+
* Per-call cost inputs and the speed-work score for this hot function.
|
|
8405
|
+
* Omitted when the hot path has no `stable_id` or no static counterpart
|
|
8406
|
+
* in this checkout.
|
|
8407
|
+
*/
|
|
8408
|
+
optimization_target?: (RuntimeCoverageOptimizationTarget | null)
|
|
8409
|
+
}
|
|
8410
|
+
/**
|
|
8411
|
+
* Speed-work inputs for one hot function: how often it runs and how much
|
|
8412
|
+
* work each call does. `importance` ranks the risk of a change; this block
|
|
8413
|
+
* ranks where speed work gives the largest gain.
|
|
8414
|
+
*/
|
|
8415
|
+
export interface RuntimeCoverageOptimizationTarget {
|
|
8416
|
+
/**
|
|
8417
|
+
* `invocations` multiplied by the per-call cost that `cost_basis` names.
|
|
8418
|
+
* Uncapped integer. Compare it only between hot paths with the same
|
|
8419
|
+
* `cost_basis`: sort by `cost_basis` first, then by `cost_score`
|
|
8420
|
+
* descending. On the `cognitive` basis the per-call cost is at least 1.
|
|
8421
|
+
*/
|
|
8422
|
+
cost_score: number
|
|
8423
|
+
cost_basis: RuntimeCoverageCostBasis
|
|
8424
|
+
/**
|
|
8425
|
+
* Static cognitive complexity of the function. A static proxy for the
|
|
8426
|
+
* work per call, not a measurement.
|
|
8427
|
+
*/
|
|
8428
|
+
cognitive: number
|
|
8429
|
+
/**
|
|
8430
|
+
* Static cyclomatic complexity of the function.
|
|
8431
|
+
*/
|
|
8432
|
+
cyclomatic: number
|
|
8433
|
+
/**
|
|
8434
|
+
* Number of lines in the function body.
|
|
8435
|
+
*/
|
|
8436
|
+
line_count: number
|
|
8437
|
+
/**
|
|
8438
|
+
* Peak executions of one block inside the function per call, from V8
|
|
8439
|
+
* block coverage. `1.0` means no block ran more than once per call. A
|
|
8440
|
+
* loop body that runs 3 times per call gives `3.0`. Calls to other
|
|
8441
|
+
* functions do not change the value.
|
|
8442
|
+
* Omitted when the coverage input has no block counts for the function.
|
|
8443
|
+
*/
|
|
8444
|
+
inner_iterations_per_call?: (number | null)
|
|
7833
8445
|
}
|
|
7834
8446
|
/**
|
|
7835
8447
|
* One blast-radius entry in `runtime_coverage.blast_radius`: how far a
|
|
@@ -7937,7 +8549,7 @@ code: string
|
|
|
7937
8549
|
message: string
|
|
7938
8550
|
}
|
|
7939
8551
|
/**
|
|
7940
|
-
* Provenance of a runtime-coverage report
|
|
8552
|
+
* Provenance of a runtime-coverage report, mirroring
|
|
7941
8553
|
* the cloud runtime-context `provenance` block so the local-capture and cloud
|
|
7942
8554
|
* surfaces present one portable shape. F4: provenance is context only; it never
|
|
7943
8555
|
* gates a verdict or confidence.
|
|
@@ -10137,6 +10749,12 @@ imported_by: string[]
|
|
|
10137
10749
|
* Re-exports declared by this file.
|
|
10138
10750
|
*/
|
|
10139
10751
|
re_exports: TracedReExport[]
|
|
10752
|
+
/**
|
|
10753
|
+
* The configs that make this file an entry point through Module
|
|
10754
|
+
* Federation `exposes`, one per config. Absent when no Federation config
|
|
10755
|
+
* exposes the file (issue #2796).
|
|
10756
|
+
*/
|
|
10757
|
+
sources?: TraceSource[]
|
|
10140
10758
|
}
|
|
10141
10759
|
/**
|
|
10142
10760
|
* An export with usage information.
|
|
@@ -10176,6 +10794,37 @@ imported_name: string
|
|
|
10176
10794
|
*/
|
|
10177
10795
|
exported_name: string
|
|
10178
10796
|
}
|
|
10797
|
+
/**
|
|
10798
|
+
* A config that names a traced file or a traced dependency, and the key that
|
|
10799
|
+
* names it.
|
|
10800
|
+
*/
|
|
10801
|
+
export interface TraceSource {
|
|
10802
|
+
/**
|
|
10803
|
+
* The mechanism that names the file or the dependency:
|
|
10804
|
+
* `module-federation`. The set is open.
|
|
10805
|
+
*/
|
|
10806
|
+
kind: string
|
|
10807
|
+
/**
|
|
10808
|
+
* The plugin that read the config, as it labels itself:
|
|
10809
|
+
* `module-federation` for a standalone `module-federation.config.*`,
|
|
10810
|
+
* or the bundler plugin (`webpack`, `rspack`, `rsbuild`, `vite`,
|
|
10811
|
+
* `nextjs`) that read the same options inline from its own config.
|
|
10812
|
+
*/
|
|
10813
|
+
plugin: string
|
|
10814
|
+
/**
|
|
10815
|
+
* The file that names the file or the dependency, relative to the
|
|
10816
|
+
* project root: the config file, or the source file of a Module
|
|
10817
|
+
* Federation runtime call.
|
|
10818
|
+
*/
|
|
10819
|
+
config: string
|
|
10820
|
+
/**
|
|
10821
|
+
* The config key or the runtime function that names the file or the
|
|
10822
|
+
* dependency: `exposes` for an exposed file, `remotes` for a remote
|
|
10823
|
+
* alias, and `registerRemotes`, `loadRemote`, `init` or `createInstance`
|
|
10824
|
+
* for a remote that a runtime call names. The set is open.
|
|
10825
|
+
*/
|
|
10826
|
+
key: string
|
|
10827
|
+
}
|
|
10179
10828
|
/**
|
|
10180
10829
|
* Result of tracing a dependency: where it is used.
|
|
10181
10830
|
*/
|
|
@@ -10204,6 +10853,13 @@ is_used: boolean
|
|
|
10204
10853
|
* Total import count.
|
|
10205
10854
|
*/
|
|
10206
10855
|
import_count: number
|
|
10856
|
+
/**
|
|
10857
|
+
* The configs that declare this name as a Module Federation remote alias
|
|
10858
|
+
* under `remotes`, one per config. A remote alias is provided by a
|
|
10859
|
+
* remote container at runtime, not by an npm package. Absent when no
|
|
10860
|
+
* Federation config declares the name (issue #2796).
|
|
10861
|
+
*/
|
|
10862
|
+
sources?: TraceSource[]
|
|
10207
10863
|
}
|
|
10208
10864
|
/**
|
|
10209
10865
|
* Result of tracing a clone: all groups containing the code at a source
|
|
@@ -10349,6 +11005,13 @@ to: string
|
|
|
10349
11005
|
* chain is a real compile-time coupling.
|
|
10350
11006
|
*/
|
|
10351
11007
|
type_only: boolean
|
|
11008
|
+
/**
|
|
11009
|
+
* Whether the edge carries a runtime value but no static one: the target
|
|
11010
|
+
* loads only on demand (`import()`, a lazy glob or template pattern) or
|
|
11011
|
+
* on another thread (a worker URL, `child_process.fork`). False for a
|
|
11012
|
+
* static hop and for a type-only hop.
|
|
11013
|
+
*/
|
|
11014
|
+
dynamic: boolean
|
|
10352
11015
|
/**
|
|
10353
11016
|
* 1-based line in `from` of the imported binding that creates this edge:
|
|
10354
11017
|
* the first value-carrying symbol on the import, or the first symbol when
|
|
@@ -11296,13 +11959,13 @@ grouped_by?: (GroupByMode | null)
|
|
|
11296
11959
|
*/
|
|
11297
11960
|
groups?: (HealthGroup[] | null)
|
|
11298
11961
|
/**
|
|
11299
|
-
*
|
|
11300
|
-
*
|
|
11301
|
-
* integration reads the verdict instead of
|
|
11302
|
-
* it usually cannot see. A gate fails the
|
|
11303
|
-
* AND `enforced` is true.
|
|
11304
|
-
*
|
|
11305
|
-
*
|
|
11962
|
+
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
11963
|
+
* always emits it, with the command's default exit rule in it also when
|
|
11964
|
+
* no flag armed a gate, so a CI integration reads the verdict instead of
|
|
11965
|
+
* guessing from a process status it usually cannot see. A gate fails the
|
|
11966
|
+
* build when `status` is `fail` AND `enforced` is true. The typed
|
|
11967
|
+
* programmatic API runs no CLI gate and leaves it absent. See
|
|
11968
|
+
* [`crate::GateOutcomes`].
|
|
11306
11969
|
*/
|
|
11307
11970
|
gate_outcomes?: (GateOutcomes | null)
|
|
11308
11971
|
/**
|
|
@@ -11499,13 +12162,11 @@ groups?: (DuplicationGroup[] | null)
|
|
|
11499
12162
|
*/
|
|
11500
12163
|
baseline_staleness?: (BaselineStaleness | null)
|
|
11501
12164
|
/**
|
|
11502
|
-
*
|
|
11503
|
-
*
|
|
11504
|
-
*
|
|
11505
|
-
*
|
|
11506
|
-
*
|
|
11507
|
-
* rules fail a run with no flag at all, so an absent object means "no gate
|
|
11508
|
-
* was asked for", never "nothing failed". See [`crate::GateOutcomes`].
|
|
12165
|
+
* The verdict of every gate this run armed, keyed by name, absent when
|
|
12166
|
+
* it armed none. `dupes` has no default exit rule: a run with no armed
|
|
12167
|
+
* gate always exits 0, so an absent object means that the run passed. A
|
|
12168
|
+
* gate fails the build when `status` is `fail` AND `enforced` is true.
|
|
12169
|
+
* See [`crate::GateOutcomes`].
|
|
11509
12170
|
*/
|
|
11510
12171
|
gate_outcomes?: (GateOutcomes | null)
|
|
11511
12172
|
/**
|
|
@@ -11686,13 +12347,13 @@ groups: CheckGroupedEntry[]
|
|
|
11686
12347
|
*/
|
|
11687
12348
|
baseline_staleness?: (BaselineStaleness | null)
|
|
11688
12349
|
/**
|
|
11689
|
-
*
|
|
11690
|
-
*
|
|
11691
|
-
* integration reads the verdict instead of
|
|
11692
|
-
* it usually cannot see. A gate fails the
|
|
11693
|
-
* AND `enforced` is true.
|
|
11694
|
-
*
|
|
11695
|
-
*
|
|
12350
|
+
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
12351
|
+
* always emits it, with the command's default exit rule in it also when
|
|
12352
|
+
* no flag armed a gate, so a CI integration reads the verdict instead of
|
|
12353
|
+
* guessing from a process status it usually cannot see. A gate fails the
|
|
12354
|
+
* build when `status` is `fail` AND `enforced` is true. The typed
|
|
12355
|
+
* programmatic API runs no CLI gate and leaves it absent. See
|
|
12356
|
+
* [`crate::GateOutcomes`].
|
|
11696
12357
|
*/
|
|
11697
12358
|
gate_outcomes?: (GateOutcomes | null)
|
|
11698
12359
|
/**
|
|
@@ -11764,6 +12425,12 @@ unused_types: UnusedTypeFinding[]
|
|
|
11764
12425
|
* typed `actions` array natively.
|
|
11765
12426
|
*/
|
|
11766
12427
|
private_type_leaks: PrivateTypeLeakFinding[]
|
|
12428
|
+
/**
|
|
12429
|
+
* Exports marked `@deprecated` that still have at least one consumer in
|
|
12430
|
+
* a reachable file. Wrapped in [`DeprecatedExportInUseFinding`]. Opt-in: the
|
|
12431
|
+
* `deprecated-exports-in-use` rule defaults to `off`.
|
|
12432
|
+
*/
|
|
12433
|
+
deprecated_exports_in_use?: DeprecatedExportInUseFinding[]
|
|
11767
12434
|
/**
|
|
11768
12435
|
* Dependencies listed in package.json but never imported. Wrapped in
|
|
11769
12436
|
* [`UnusedDependencyFinding`] so each entry carries a typed `actions`
|
|
@@ -12375,13 +13042,13 @@ version: ToolVersion
|
|
|
12375
13042
|
elapsed_ms: ElapsedMs
|
|
12376
13043
|
config: SecurityOutputConfig
|
|
12377
13044
|
/**
|
|
12378
|
-
*
|
|
12379
|
-
*
|
|
12380
|
-
* integration reads the verdict instead of
|
|
12381
|
-
* it usually cannot see. A gate fails the
|
|
12382
|
-
* AND `enforced` is true.
|
|
12383
|
-
*
|
|
12384
|
-
*
|
|
13045
|
+
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
13046
|
+
* always emits it, with the command's default exit rule in it also when
|
|
13047
|
+
* no flag armed a gate, so a CI integration reads the verdict instead of
|
|
13048
|
+
* guessing from a process status it usually cannot see. A gate fails the
|
|
13049
|
+
* build when `status` is `fail` AND `enforced` is true. The typed
|
|
13050
|
+
* programmatic API runs no CLI gate and leaves it absent. See
|
|
13051
|
+
* [`crate::GateOutcomes`].
|
|
12385
13052
|
*/
|
|
12386
13053
|
gate_outcomes?: (GateOutcomes | null)
|
|
12387
13054
|
/**
|
|
@@ -12488,10 +13155,10 @@ new_count: number
|
|
|
12488
13155
|
export interface SecurityFinding {
|
|
12489
13156
|
/**
|
|
12490
13157
|
* Stable per-finding correlation id, identical across runs for the same
|
|
12491
|
-
* rule + anchor path + line. An autonomous agent that triaged this
|
|
13158
|
+
* rule + anchor path + line + column. An autonomous agent that triaged this
|
|
12492
13159
|
* candidate on a prior run uses it to correlate the candidate after a
|
|
12493
|
-
* rebase. Equal to the SARIF `partialFingerprints`
|
|
12494
|
-
* finding (one shared helper computes both).
|
|
13160
|
+
* rebase. Equal to the SARIF `partialFingerprints["fallowSecurity/v2"]`
|
|
13161
|
+
* value for the same finding (one shared helper computes both).
|
|
12495
13162
|
*/
|
|
12496
13163
|
finding_id: string
|
|
12497
13164
|
kind: SecurityFindingKind
|
|
@@ -12909,7 +13576,8 @@ defensive_boundary: SecurityDefensiveBoundary
|
|
|
12909
13576
|
*/
|
|
12910
13577
|
export interface SecurityDefensiveBoundary {
|
|
12911
13578
|
/**
|
|
12912
|
-
*
|
|
13579
|
+
* Control patterns observed in files on this import trace. These are
|
|
13580
|
+
* verification hints, not proof of sink protection or value-level data flow.
|
|
12913
13581
|
*/
|
|
12914
13582
|
controls: SecurityDefensiveControl[]
|
|
12915
13583
|
/**
|
|
@@ -12919,7 +13587,9 @@ controls: SecurityDefensiveControl[]
|
|
|
12919
13587
|
verification_prompt: string
|
|
12920
13588
|
}
|
|
12921
13589
|
/**
|
|
12922
|
-
*
|
|
13590
|
+
* Control pattern observed in a file on an attack-surface import trace.
|
|
13591
|
+
* Its presence does not prove that it executes before the sink or protects
|
|
13592
|
+
* the same input.
|
|
12923
13593
|
*/
|
|
12924
13594
|
export interface SecurityDefensiveControl {
|
|
12925
13595
|
kind: SecurityControlKind
|
|
@@ -13018,13 +13688,13 @@ version: ToolVersion
|
|
|
13018
13688
|
elapsed_ms: ElapsedMs
|
|
13019
13689
|
config: SecurityOutputConfig
|
|
13020
13690
|
/**
|
|
13021
|
-
*
|
|
13022
|
-
*
|
|
13023
|
-
* integration reads the verdict instead of
|
|
13024
|
-
* it usually cannot see. A gate fails the
|
|
13025
|
-
* AND `enforced` is true.
|
|
13026
|
-
*
|
|
13027
|
-
*
|
|
13691
|
+
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
13692
|
+
* always emits it, with the command's default exit rule in it also when
|
|
13693
|
+
* no flag armed a gate, so a CI integration reads the verdict instead of
|
|
13694
|
+
* guessing from a process status it usually cannot see. A gate fails the
|
|
13695
|
+
* build when `status` is `fail` AND `enforced` is true. The typed
|
|
13696
|
+
* programmatic API runs no CLI gate and leaves it absent. See
|
|
13697
|
+
* [`crate::GateOutcomes`].
|
|
13028
13698
|
*/
|
|
13029
13699
|
gate_outcomes?: (GateOutcomes | null)
|
|
13030
13700
|
/**
|
|
@@ -13321,13 +13991,17 @@ schema_version: CombinedSchemaVersion
|
|
|
13321
13991
|
version: ToolVersion
|
|
13322
13992
|
elapsed_ms: ElapsedMs
|
|
13323
13993
|
/**
|
|
13324
|
-
*
|
|
13325
|
-
*
|
|
13326
|
-
*
|
|
13327
|
-
*
|
|
13328
|
-
*
|
|
13329
|
-
*
|
|
13330
|
-
*
|
|
13994
|
+
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
13995
|
+
* always emits it, with the default exit rule of each section that ran
|
|
13996
|
+
* (`error-severity-findings`, `health-findings`). The machine formats of
|
|
13997
|
+
* the combined run exit 0 for findings, so most entries have `enforced:
|
|
13998
|
+
* false`. For the default exit rules (`error-severity-findings`,
|
|
13999
|
+
* `health-findings`), `status` gives the verdict of the human run. An
|
|
14000
|
+
* advisory entry can report `fail` without a failure of the human run: an
|
|
14001
|
+
* example is a `stale-baseline` entry that `--fail-on-stale-baseline` did
|
|
14002
|
+
* not arm. A gate fails the build when `status` is `fail` AND `enforced`
|
|
14003
|
+
* is true. The typed
|
|
14004
|
+
* programmatic API leaves it absent. See [`crate::GateOutcomes`].
|
|
13331
14005
|
*/
|
|
13332
14006
|
gate_outcomes?: (GateOutcomes | null)
|
|
13333
14007
|
/**
|
|
@@ -13351,7 +14025,7 @@ check?: (CheckOutput | null)
|
|
|
13351
14025
|
/**
|
|
13352
14026
|
* Duplication section of the combined run.
|
|
13353
14027
|
*/
|
|
13354
|
-
dupes?: (
|
|
14028
|
+
dupes?: (CombinedDupesSection | null)
|
|
13355
14029
|
/**
|
|
13356
14030
|
* Health section of the combined run.
|
|
13357
14031
|
*/
|
|
@@ -13393,11 +14067,46 @@ health?: (Meta | null)
|
|
|
13393
14067
|
telemetry?: (TelemetryMeta | null)
|
|
13394
14068
|
}
|
|
13395
14069
|
/**
|
|
13396
|
-
*
|
|
14070
|
+
* Wire shape of the `dupes` section inside the bare combined envelope.
|
|
14071
|
+
*
|
|
14072
|
+
* The section is the standalone payload plus the view of the loaded
|
|
14073
|
+
* duplication baseline. The standalone `dupes` envelope carries the same
|
|
14074
|
+
* `baseline_staleness` key at its root.
|
|
13397
14075
|
*/
|
|
13398
|
-
export interface
|
|
13399
|
-
|
|
13400
|
-
|
|
14076
|
+
export interface CombinedDupesSection {
|
|
14077
|
+
/**
|
|
14078
|
+
* All detected clone groups, each wrapped with typed actions.
|
|
14079
|
+
*/
|
|
14080
|
+
clone_groups: CloneGroupFinding[]
|
|
14081
|
+
/**
|
|
14082
|
+
* Clone families, each wrapped with typed actions. Inner `groups`
|
|
14083
|
+
* inside each `CloneFamilyFinding` are themselves wrapped as
|
|
14084
|
+
* `CloneGroupFinding` entries carrying their own `actions[]` (and
|
|
14085
|
+
* optional audit-mode `introduced` flag), so JSON-Schema strict
|
|
14086
|
+
* consumers and TS consumers reading `clone_families[].groups[]` see
|
|
14087
|
+
* the same shape as the top-level `clone_groups[]` array (preserves
|
|
14088
|
+
* the issue #393 regression contract).
|
|
14089
|
+
*/
|
|
14090
|
+
clone_families: CloneFamilyFinding[]
|
|
14091
|
+
/**
|
|
14092
|
+
* Mirrored directory pairs.
|
|
14093
|
+
*/
|
|
14094
|
+
mirrored_directories?: MirroredDirectory[]
|
|
14095
|
+
stats: DuplicationStats
|
|
14096
|
+
/**
|
|
14097
|
+
* This run's view of the loaded duplication baseline, present only when
|
|
14098
|
+
* `--dupes-baseline` loaded one. Read `change_scoped` before dividing
|
|
14099
|
+
* `matched_entries` by `baseline_entries`: a narrowed run can report
|
|
14100
|
+
* `matched_entries: 0` on a healthy baseline.
|
|
14101
|
+
*/
|
|
14102
|
+
baseline_staleness?: (BaselineStaleness | null)
|
|
14103
|
+
}
|
|
14104
|
+
/**
|
|
14105
|
+
* Envelope emitted by `fallow flags --format json`.
|
|
14106
|
+
*/
|
|
14107
|
+
export interface FeatureFlagsOutput {
|
|
14108
|
+
schema_version: FeatureFlagsSchemaVersion
|
|
14109
|
+
version: ToolVersion
|
|
13401
14110
|
elapsed_ms: ElapsedMs
|
|
13402
14111
|
/**
|
|
13403
14112
|
* What the run was asked to narrow and whether it did. See
|
|
@@ -13441,6 +14150,15 @@ total_flags: number
|
|
|
13441
14150
|
* change.
|
|
13442
14151
|
*/
|
|
13443
14152
|
workspace_diagnostics?: WorkspaceDiagnostic[]
|
|
14153
|
+
/**
|
|
14154
|
+
* One row per flag with the reasons the flag can be retired.
|
|
14155
|
+
*
|
|
14156
|
+
* Present only with `--retirement`. Without that option the key is
|
|
14157
|
+
* omitted, so the envelope stays byte-identical and `schema_version`
|
|
14158
|
+
* does not move. The per-site `feature_flags[]` array is the same with
|
|
14159
|
+
* and without the option.
|
|
14160
|
+
*/
|
|
14161
|
+
retirement?: (FlagRetirementReport | null)
|
|
13444
14162
|
/**
|
|
13445
14163
|
* `_meta` block; see [`FeatureFlagsMeta`].
|
|
13446
14164
|
*/
|
|
@@ -13516,6 +14234,347 @@ dead_export_count: number
|
|
|
13516
14234
|
*/
|
|
13517
14235
|
dead_exports: string[]
|
|
13518
14236
|
}
|
|
14237
|
+
/**
|
|
14238
|
+
* The `retirement` block of `fallow flags --retirement --format json`.
|
|
14239
|
+
*/
|
|
14240
|
+
export interface FlagRetirementReport {
|
|
14241
|
+
/**
|
|
14242
|
+
* The analysis clock that ages count from, as an RFC 3339 UTC
|
|
14243
|
+
* timestamp. `null` when the age mode is `off`, and also when no git
|
|
14244
|
+
* history is available: outside a repository, on a branch without
|
|
14245
|
+
* commits, or in a shallow clone. A `workspace_diagnostics` entry then
|
|
14246
|
+
* gives the reason.
|
|
14247
|
+
*/
|
|
14248
|
+
generated_at_clock?: (string | null)
|
|
14249
|
+
age_mode: FlagAgeMode
|
|
14250
|
+
/**
|
|
14251
|
+
* The vendor export that the report read. Present only with
|
|
14252
|
+
* `--flag-state`.
|
|
14253
|
+
*/
|
|
14254
|
+
vendor_state?: (RetirementVendorState | null)
|
|
14255
|
+
summary: RetirementSummary
|
|
14256
|
+
/**
|
|
14257
|
+
* Verdict of `--fail-on-regression` against a flags regression
|
|
14258
|
+
* baseline. Present only when the gate ran.
|
|
14259
|
+
*/
|
|
14260
|
+
regression?: (FlagRegressionResult | null)
|
|
14261
|
+
/**
|
|
14262
|
+
* Verdict of `--max-flag-age`. Present only with that option.
|
|
14263
|
+
*/
|
|
14264
|
+
max_flag_age?: (FlagAgeGate | null)
|
|
14265
|
+
/**
|
|
14266
|
+
* One row per flag after the `--min-age`, `--reason`, `--sort` and
|
|
14267
|
+
* `--top` options. A row with an empty `reasons` array is not a
|
|
14268
|
+
* candidate.
|
|
14269
|
+
*/
|
|
14270
|
+
flags: RetirementFlag[]
|
|
14271
|
+
}
|
|
14272
|
+
/**
|
|
14273
|
+
* The `--flag-state` vendor export that the report read.
|
|
14274
|
+
*/
|
|
14275
|
+
export interface RetirementVendorState {
|
|
14276
|
+
/**
|
|
14277
|
+
* The vendor name from the export, for example `launchdarkly`.
|
|
14278
|
+
*/
|
|
14279
|
+
source: string
|
|
14280
|
+
/**
|
|
14281
|
+
* When the export was made, as the export gives it.
|
|
14282
|
+
*/
|
|
14283
|
+
exported_at: string
|
|
14284
|
+
/**
|
|
14285
|
+
* Days between `exported_at` and the analysis clock. `null` when the
|
|
14286
|
+
* date cannot be read.
|
|
14287
|
+
*/
|
|
14288
|
+
export_age_days?: (number | null)
|
|
14289
|
+
/**
|
|
14290
|
+
* Number of flags in the export.
|
|
14291
|
+
*/
|
|
14292
|
+
flags: number
|
|
14293
|
+
}
|
|
14294
|
+
/**
|
|
14295
|
+
* Totals of the retirement report.
|
|
14296
|
+
*/
|
|
14297
|
+
export interface RetirementSummary {
|
|
14298
|
+
/**
|
|
14299
|
+
* Distinct flags in the code in scope, before `--min-age` and
|
|
14300
|
+
* `--reason`. The `vendor-only` rows of a `--flag-state` export do not
|
|
14301
|
+
* count here, so the count does not change when a key is added in the
|
|
14302
|
+
* vendor only. `by_reason` counts them.
|
|
14303
|
+
*/
|
|
14304
|
+
distinct_flags: number
|
|
14305
|
+
/**
|
|
14306
|
+
* Rows in scope with at least one reason, `vendor-only` rows included.
|
|
14307
|
+
*/
|
|
14308
|
+
candidates: number
|
|
14309
|
+
/**
|
|
14310
|
+
* Number of rows in scope per reason.
|
|
14311
|
+
*/
|
|
14312
|
+
by_reason: {
|
|
14313
|
+
[k: string]: number
|
|
14314
|
+
}
|
|
14315
|
+
}
|
|
14316
|
+
/**
|
|
14317
|
+
* Verdict of the flags regression gate.
|
|
14318
|
+
*/
|
|
14319
|
+
export interface FlagRegressionResult {
|
|
14320
|
+
status: RegressionStatus
|
|
14321
|
+
/**
|
|
14322
|
+
* The `--tolerance` value. Absent when the status is `skipped`.
|
|
14323
|
+
*/
|
|
14324
|
+
tolerance?: (number | null)
|
|
14325
|
+
/**
|
|
14326
|
+
* How to read `tolerance`. Absent when the status is `skipped`.
|
|
14327
|
+
*/
|
|
14328
|
+
tolerance_kind?: (RegressionToleranceKind | null)
|
|
14329
|
+
/**
|
|
14330
|
+
* The compared counts: `distinct_flags` first, then each `--reason`
|
|
14331
|
+
* code. Empty when the status is `skipped`.
|
|
14332
|
+
*/
|
|
14333
|
+
metrics: FlagRegressionMetric[]
|
|
14334
|
+
/**
|
|
14335
|
+
* Whether one count grew more than the tolerance.
|
|
14336
|
+
*/
|
|
14337
|
+
exceeded: boolean
|
|
14338
|
+
/**
|
|
14339
|
+
* Why the gate did not run. Present only when the status is `skipped`.
|
|
14340
|
+
*/
|
|
14341
|
+
reason?: (string | null)
|
|
14342
|
+
}
|
|
14343
|
+
/**
|
|
14344
|
+
* One count that the flags regression gate compares.
|
|
14345
|
+
*/
|
|
14346
|
+
export interface FlagRegressionMetric {
|
|
14347
|
+
/**
|
|
14348
|
+
* `distinct_flags`, or a reason code from `--reason`.
|
|
14349
|
+
*/
|
|
14350
|
+
metric: string
|
|
14351
|
+
/**
|
|
14352
|
+
* The count in the baseline.
|
|
14353
|
+
*/
|
|
14354
|
+
baseline: number
|
|
14355
|
+
/**
|
|
14356
|
+
* The count in this run.
|
|
14357
|
+
*/
|
|
14358
|
+
current: number
|
|
14359
|
+
/**
|
|
14360
|
+
* `current - baseline`.
|
|
14361
|
+
*/
|
|
14362
|
+
delta: number
|
|
14363
|
+
/**
|
|
14364
|
+
* Whether the growth is more than the tolerance.
|
|
14365
|
+
*/
|
|
14366
|
+
exceeded: boolean
|
|
14367
|
+
}
|
|
14368
|
+
/**
|
|
14369
|
+
* Verdict of `--max-flag-age`.
|
|
14370
|
+
*/
|
|
14371
|
+
export interface FlagAgeGate {
|
|
14372
|
+
status: RegressionStatus
|
|
14373
|
+
/**
|
|
14374
|
+
* The `--max-flag-age` value in days.
|
|
14375
|
+
*/
|
|
14376
|
+
max_days: number
|
|
14377
|
+
/**
|
|
14378
|
+
* Whether one flag in scope is older than `max_days`.
|
|
14379
|
+
*/
|
|
14380
|
+
exceeded: boolean
|
|
14381
|
+
/**
|
|
14382
|
+
* Flags in the code in scope without a measured age. The gate cannot
|
|
14383
|
+
* check these flags.
|
|
14384
|
+
*/
|
|
14385
|
+
unmeasured: number
|
|
14386
|
+
/**
|
|
14387
|
+
* Why the gate did not run. Present only when the status is `skipped`.
|
|
14388
|
+
*/
|
|
14389
|
+
reason?: (string | null)
|
|
14390
|
+
/**
|
|
14391
|
+
* The flags in scope that are older than `max_days`, oldest first.
|
|
14392
|
+
* The `--reason`, `--min-age` and `--top` options do not change this
|
|
14393
|
+
* list.
|
|
14394
|
+
*/
|
|
14395
|
+
flags: FlagAgeGateEntry[]
|
|
14396
|
+
}
|
|
14397
|
+
/**
|
|
14398
|
+
* A flag that is older than `--max-flag-age`.
|
|
14399
|
+
*/
|
|
14400
|
+
export interface FlagAgeGateEntry {
|
|
14401
|
+
/**
|
|
14402
|
+
* Flag identifier.
|
|
14403
|
+
*/
|
|
14404
|
+
flag_name: string
|
|
14405
|
+
kind: RetirementFlagKind
|
|
14406
|
+
/**
|
|
14407
|
+
* Flag SDK, for SDK flags with a known provider.
|
|
14408
|
+
*/
|
|
14409
|
+
sdk_name?: (string | null)
|
|
14410
|
+
/**
|
|
14411
|
+
* Workspace root of the flag, in a project with workspaces.
|
|
14412
|
+
*/
|
|
14413
|
+
workspace?: (string | null)
|
|
14414
|
+
/**
|
|
14415
|
+
* Age of the flag in days.
|
|
14416
|
+
*/
|
|
14417
|
+
age_days: number
|
|
14418
|
+
}
|
|
14419
|
+
/**
|
|
14420
|
+
* One flag in the retirement report.
|
|
14421
|
+
*/
|
|
14422
|
+
export interface RetirementFlag {
|
|
14423
|
+
/**
|
|
14424
|
+
* Flag identifier.
|
|
14425
|
+
*/
|
|
14426
|
+
flag_name: string
|
|
14427
|
+
kind: RetirementFlagKind
|
|
14428
|
+
/**
|
|
14429
|
+
* Flag SDK, for SDK flags with a known provider.
|
|
14430
|
+
*/
|
|
14431
|
+
sdk_name?: (string | null)
|
|
14432
|
+
/**
|
|
14433
|
+
* Workspace root relative to the analysed root, when the project has
|
|
14434
|
+
* workspaces and the flag is inside one. Part of the flag identity.
|
|
14435
|
+
*/
|
|
14436
|
+
workspace?: (string | null)
|
|
14437
|
+
/**
|
|
14438
|
+
* Every site of the flag, sorted by path, line and column.
|
|
14439
|
+
*/
|
|
14440
|
+
sites: RetirementSite[]
|
|
14441
|
+
/**
|
|
14442
|
+
* Number of sites in this row that read the flag.
|
|
14443
|
+
*/
|
|
14444
|
+
read_sites: number
|
|
14445
|
+
/**
|
|
14446
|
+
* Whether every read site is in a test, story or mock file. Read sites
|
|
14447
|
+
* of the same flag in other workspaces count too.
|
|
14448
|
+
*/
|
|
14449
|
+
test_only: boolean
|
|
14450
|
+
/**
|
|
14451
|
+
* First commit that added the flag name. Set in `pickaxe` mode only.
|
|
14452
|
+
*/
|
|
14453
|
+
first_seen?: (FlagCommit | null)
|
|
14454
|
+
/**
|
|
14455
|
+
* Oldest commit among the lines that still hold the flag.
|
|
14456
|
+
*/
|
|
14457
|
+
oldest_surviving_site?: (FlagCommit | null)
|
|
14458
|
+
/**
|
|
14459
|
+
* Newest commit among the lines that still hold the flag.
|
|
14460
|
+
*/
|
|
14461
|
+
last_touched?: (FlagCommit | null)
|
|
14462
|
+
/**
|
|
14463
|
+
* Days between the flag's oldest known commit and the analysis clock.
|
|
14464
|
+
* In `blame` mode this is a lower bound.
|
|
14465
|
+
*/
|
|
14466
|
+
age_days?: (number | null)
|
|
14467
|
+
/**
|
|
14468
|
+
* Retirement reasons, in report order. Empty for a flag that is not a
|
|
14469
|
+
* candidate.
|
|
14470
|
+
*/
|
|
14471
|
+
reasons: RetirementReason[]
|
|
14472
|
+
/**
|
|
14473
|
+
* Evidence for each reason.
|
|
14474
|
+
*/
|
|
14475
|
+
evidence: RetirementEvidence[]
|
|
14476
|
+
/**
|
|
14477
|
+
* Follow-up actions. Empty for a flag that is not a candidate.
|
|
14478
|
+
*/
|
|
14479
|
+
actions: RetirementAction[]
|
|
14480
|
+
/**
|
|
14481
|
+
* The vendor state of the flag. Present only with `--flag-state`, for
|
|
14482
|
+
* a flag whose key is in the export.
|
|
14483
|
+
*/
|
|
14484
|
+
vendor?: (RetirementVendor | null)
|
|
14485
|
+
}
|
|
14486
|
+
/**
|
|
14487
|
+
* One site of a flag in the retirement report.
|
|
14488
|
+
*/
|
|
14489
|
+
export interface RetirementSite {
|
|
14490
|
+
/**
|
|
14491
|
+
* File path relative to the analysed root.
|
|
14492
|
+
*/
|
|
14493
|
+
path: string
|
|
14494
|
+
/**
|
|
14495
|
+
* 1-based line.
|
|
14496
|
+
*/
|
|
14497
|
+
line: number
|
|
14498
|
+
/**
|
|
14499
|
+
* 0-based byte column.
|
|
14500
|
+
*/
|
|
14501
|
+
col: number
|
|
14502
|
+
role: FlagSiteRole
|
|
14503
|
+
/**
|
|
14504
|
+
* Whether the file is a test, story or mock file.
|
|
14505
|
+
*/
|
|
14506
|
+
in_test: boolean
|
|
14507
|
+
}
|
|
14508
|
+
/**
|
|
14509
|
+
* A commit that git history links to a flag.
|
|
14510
|
+
*/
|
|
14511
|
+
export interface FlagCommit {
|
|
14512
|
+
/**
|
|
14513
|
+
* Abbreviated commit hash.
|
|
14514
|
+
*/
|
|
14515
|
+
commit: string
|
|
14516
|
+
/**
|
|
14517
|
+
* Commit date in UTC, as `YYYY-MM-DD`.
|
|
14518
|
+
*/
|
|
14519
|
+
date: string
|
|
14520
|
+
}
|
|
14521
|
+
/**
|
|
14522
|
+
* One piece of evidence for a retirement reason.
|
|
14523
|
+
*/
|
|
14524
|
+
export interface RetirementEvidence {
|
|
14525
|
+
reason: RetirementReason
|
|
14526
|
+
/**
|
|
14527
|
+
* File path relative to the analysed root. For `vendor-only`, the path
|
|
14528
|
+
* of the `--flag-state` file: relative to the root when the file is
|
|
14529
|
+
* inside it, else as given.
|
|
14530
|
+
*/
|
|
14531
|
+
path: string
|
|
14532
|
+
/**
|
|
14533
|
+
* 1-based line.
|
|
14534
|
+
*/
|
|
14535
|
+
line: number
|
|
14536
|
+
/**
|
|
14537
|
+
* What the evidence shows.
|
|
14538
|
+
*/
|
|
14539
|
+
detail: string
|
|
14540
|
+
}
|
|
14541
|
+
/**
|
|
14542
|
+
* A follow-up action for a retirement candidate.
|
|
14543
|
+
*/
|
|
14544
|
+
export interface RetirementAction {
|
|
14545
|
+
type: RetirementActionType
|
|
14546
|
+
/**
|
|
14547
|
+
* Always `false`: Fallow never removes a flag.
|
|
14548
|
+
*/
|
|
14549
|
+
auto_fixable: boolean
|
|
14550
|
+
/**
|
|
14551
|
+
* Human-readable action description.
|
|
14552
|
+
*/
|
|
14553
|
+
description: string
|
|
14554
|
+
}
|
|
14555
|
+
/**
|
|
14556
|
+
* The vendor state of one flag in the retirement report.
|
|
14557
|
+
*/
|
|
14558
|
+
export interface RetirementVendor {
|
|
14559
|
+
/**
|
|
14560
|
+
* The key in the vendor export, before `flags.vendorKeyPrefix` is
|
|
14561
|
+
* removed.
|
|
14562
|
+
*/
|
|
14563
|
+
key: string
|
|
14564
|
+
state: VendorFlagState
|
|
14565
|
+
/**
|
|
14566
|
+
* Whether the flag serves one variation, when the export says so.
|
|
14567
|
+
*/
|
|
14568
|
+
serves_single_variation?: (boolean | null)
|
|
14569
|
+
/**
|
|
14570
|
+
* When the vendor created the flag, as the export gives it.
|
|
14571
|
+
*/
|
|
14572
|
+
created_at?: (string | null)
|
|
14573
|
+
/**
|
|
14574
|
+
* When the vendor last evaluated the flag, as the export gives it.
|
|
14575
|
+
*/
|
|
14576
|
+
last_evaluated_at?: (string | null)
|
|
14577
|
+
}
|
|
13519
14578
|
/**
|
|
13520
14579
|
* Optional `_meta` block for [`FeatureFlagsOutput`]. Both fields are optional
|
|
13521
14580
|
* because the two contributors are independent: `feature_flags` details are
|
|
@@ -13637,6 +14696,11 @@ deltas: ReviewDeltas
|
|
|
13637
14696
|
*/
|
|
13638
14697
|
weakening: WeakeningSignal[]
|
|
13639
14698
|
routing: RoutingFacts
|
|
14699
|
+
/**
|
|
14700
|
+
* Owner-group reach from the CODEOWNERS file. Absent when no CODEOWNERS
|
|
14701
|
+
* file is found or the file cannot be read.
|
|
14702
|
+
*/
|
|
14703
|
+
ownership?: (OwnershipFacts | null)
|
|
13640
14704
|
/**
|
|
13641
14705
|
* Dead-code findings scoped to the audit changeset.
|
|
13642
14706
|
*/
|
|
@@ -14116,6 +15180,96 @@ expert: string[]
|
|
|
14116
15180
|
*/
|
|
14117
15181
|
bus_factor_one?: boolean
|
|
14118
15182
|
}
|
|
15183
|
+
/**
|
|
15184
|
+
* How far a changeset reaches across CODEOWNERS owner groups.
|
|
15185
|
+
*
|
|
15186
|
+
* Computed from the CODEOWNERS file alone: no git history is read, so the
|
|
15187
|
+
* section is present whenever a CODEOWNERS file is found, also when the churn
|
|
15188
|
+
* walk behind `routing` finds nothing. Each file maps to its primary owner
|
|
15189
|
+
* (the first owner of the last matching rule). A file that no rule matches,
|
|
15190
|
+
* or that a GitLab negation rule matches, belongs to the `(unowned)` group.
|
|
15191
|
+
* The owner strings use the same vocabulary as `routing.units[].expert`.
|
|
15192
|
+
*
|
|
15193
|
+
* Absent from the brief when no CODEOWNERS file is found, or when the file
|
|
15194
|
+
* cannot be read or does not parse. A configured `codeowners` path that
|
|
15195
|
+
* fails also prints a warning on stderr.
|
|
15196
|
+
*
|
|
15197
|
+
* `groups[].direct_count` counts all changed files, source or not, so the
|
|
15198
|
+
* sum over all groups is the number of changed files, not the size of
|
|
15199
|
+
* `impact_closure.in_diff`. Slice owners count only the files of the
|
|
15200
|
+
* partition units, which are source files.
|
|
15201
|
+
*/
|
|
15202
|
+
export interface OwnershipFacts {
|
|
15203
|
+
/**
|
|
15204
|
+
* Distinct owner groups across the changed files and the impact closure.
|
|
15205
|
+
* The `(unowned)` group counts as one group. Exact, never capped.
|
|
15206
|
+
*/
|
|
15207
|
+
group_count: number
|
|
15208
|
+
/**
|
|
15209
|
+
* Owner groups that own no changed file and appear only through the
|
|
15210
|
+
* impact closure. Exact, never capped.
|
|
15211
|
+
*/
|
|
15212
|
+
transitive_only_count: number
|
|
15213
|
+
/**
|
|
15214
|
+
* Changed files that belong to the `(unowned)` group.
|
|
15215
|
+
*/
|
|
15216
|
+
unowned_direct_count: number
|
|
15217
|
+
/**
|
|
15218
|
+
* The owner groups, sorted by `direct_count` descending, then
|
|
15219
|
+
* `affected_count` descending, then `owner`. At most [`OWNER_GROUP_CAP`]
|
|
15220
|
+
* entries. The counts in each entry are exact.
|
|
15221
|
+
*/
|
|
15222
|
+
groups: OwnerGroupFact[]
|
|
15223
|
+
/**
|
|
15224
|
+
* How many owner groups did not fit within [`OWNER_GROUP_CAP`] and are
|
|
15225
|
+
* absent from `groups`. Zero when nothing was omitted.
|
|
15226
|
+
*/
|
|
15227
|
+
groups_omitted: number
|
|
15228
|
+
/**
|
|
15229
|
+
* The owner set of each independent slice, aligned by index with
|
|
15230
|
+
* `partition.independent_slices`. Present only when that list is present
|
|
15231
|
+
* (two or more slices). A fact for the reviewer, never a demand to split.
|
|
15232
|
+
*/
|
|
15233
|
+
slices?: OwnershipSliceFact[]
|
|
15234
|
+
}
|
|
15235
|
+
/**
|
|
15236
|
+
* One owner group and how many files of the changeset it owns.
|
|
15237
|
+
*/
|
|
15238
|
+
export interface OwnerGroupFact {
|
|
15239
|
+
/**
|
|
15240
|
+
* The CODEOWNERS owner (`@user`, `@org/team`, or an email), or
|
|
15241
|
+
* `(unowned)`.
|
|
15242
|
+
*/
|
|
15243
|
+
owner: string
|
|
15244
|
+
/**
|
|
15245
|
+
* Changed files this group owns.
|
|
15246
|
+
*/
|
|
15247
|
+
direct_count: number
|
|
15248
|
+
/**
|
|
15249
|
+
* Files of the impact closure (affected, not in the diff) this group owns.
|
|
15250
|
+
*/
|
|
15251
|
+
affected_count: number
|
|
15252
|
+
}
|
|
15253
|
+
/**
|
|
15254
|
+
* The owners of one independent slice of the partition.
|
|
15255
|
+
*/
|
|
15256
|
+
export interface OwnershipSliceFact {
|
|
15257
|
+
/**
|
|
15258
|
+
* The module directories of the slice, as in
|
|
15259
|
+
* `partition.independent_slices`.
|
|
15260
|
+
*/
|
|
15261
|
+
module_dirs: string[]
|
|
15262
|
+
/**
|
|
15263
|
+
* The distinct owners of the changed files in the slice, sorted. The
|
|
15264
|
+
* `(unowned)` group is a distinct owner. Never empty.
|
|
15265
|
+
*/
|
|
15266
|
+
owners: string[]
|
|
15267
|
+
/**
|
|
15268
|
+
* True when the slice has exactly one owner, so one owner group can
|
|
15269
|
+
* review it on its own.
|
|
15270
|
+
*/
|
|
15271
|
+
separable: boolean
|
|
15272
|
+
}
|
|
14119
15273
|
/**
|
|
14120
15274
|
* The brief's branching section.
|
|
14121
15275
|
*/
|
|
@@ -14495,6 +15649,12 @@ deltas: ReviewDeltas
|
|
|
14495
15649
|
*/
|
|
14496
15650
|
weakening: WeakeningSignal[]
|
|
14497
15651
|
routing: RoutingFacts
|
|
15652
|
+
/**
|
|
15653
|
+
* How far the change reaches across CODEOWNERS owner groups, computed
|
|
15654
|
+
* from the CODEOWNERS file alone. Absent when no CODEOWNERS file is
|
|
15655
|
+
* found or the file cannot be read.
|
|
15656
|
+
*/
|
|
15657
|
+
ownership?: (OwnershipFacts | null)
|
|
14498
15658
|
decisions: DecisionSurface
|
|
14499
15659
|
/**
|
|
14500
15660
|
* Branching conservation across the changeset: total branching against
|
|
@@ -15742,6 +16902,16 @@ export type BoundaryViolation = BoundaryViolationFinding;
|
|
|
15742
16902
|
*/
|
|
15743
16903
|
export type CircularDependency = CircularDependencyFinding;
|
|
15744
16904
|
|
|
16905
|
+
/**
|
|
16906
|
+
* Backwards-compat alias for the pre-#384 bare `DeprecatedExportInUse` name.
|
|
16907
|
+
* The wire shape is byte-identical: `DeprecatedExportInUseFinding` flattens the bare
|
|
16908
|
+
* finding's fields via `#[serde(flatten)]` and adds `actions[]` plus
|
|
16909
|
+
* the optional audit-mode `introduced` flag. Consumers that imported
|
|
16910
|
+
* `DeprecatedExportInUse` from `fallow/types` pre-migration continue to work via
|
|
16911
|
+
* this alias; new code should prefer `DeprecatedExportInUseFinding`.
|
|
16912
|
+
*/
|
|
16913
|
+
export type DeprecatedExportInUse = DeprecatedExportInUseFinding;
|
|
16914
|
+
|
|
15745
16915
|
/**
|
|
15746
16916
|
* Backwards-compat alias for the pre-#384 bare `DevDependencyInProduction` name.
|
|
15747
16917
|
* The wire shape is byte-identical: `DevDependencyInProductionFinding` flattens the bare
|