fallow 3.4.2 → 3.5.1

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.
@@ -7,9 +7,9 @@
7
7
  * `npm/fallow/types/output-contract.d.ts` (published as `fallow/types`).
8
8
  *
9
9
  * To change a shape:
10
- * 1. Edit the Rust struct in `crates/types/src/results.rs` (or the
11
- * duplicates crate at `crates/core/src/duplicates/types.rs`). The Rust
12
- * side is the runtime source of truth for the JSON output.
10
+ * 1. Find the Rust owner through `derived_definition_names()` and its
11
+ * imports in `crates/cli/src/bin/schema_emit.rs`, then edit that type.
12
+ * Rust is the runtime source of truth for the JSON output.
13
13
  * 2. Regenerate `docs/output-schema.json` with
14
14
  * `cargo run -p fallow-cli --features schema-emit --bin fallow-schema-emit`.
15
15
  * The schema-emit drift tests compare the committed schema against the
@@ -24,9 +24,9 @@
24
24
 
25
25
 
26
26
  /**
27
- * Schemas for the JSON output of fallow commands. Object-shaped envelopes covered by the `FallowOutput` contract carry a top-level `kind` discriminator. Current kind values: `audit`, `explain`, `inspect_target`, `trace`, `review-envelope`, `review-reconcile`, `coverage-setup`, `coverage-analyze`, `list-boundaries`, `list-workspaces`, `health`, `dupes`, `dead-code-grouped`, `impact`, `impact-cross-repo`, `security`, `security-survivors`, `security-blind-spots`, `dead-code`, `combined`, `feature-flags`, `audit-brief`, `decision-surface`, `review-walkthrough-guide`, `review-walkthrough-validation`, `suppression-inventory`. Consumers should branch on `kind` instead of probing for unique field presence. `CodeClimateOutput` is a bare JSON array (per the Code Climate / GitLab Code Quality spec) and stays a sibling root branch discriminated by checking whether the document root is an array.
27
+ * Schemas for the JSON output of fallow commands. Object-shaped envelopes covered by the `FallowOutput` contract carry a top-level `kind` discriminator. Current kind values: `audit`, `explain`, `inspect_target`, `trace`, `review-envelope`, `review-reconcile`, `coverage-setup`, `coverage-analyze`, `list-boundaries`, `list-workspaces`, `health`, `dupes`, `dead-code-grouped`, `impact`, `impact-cross-repo`, `security`, `security-survivors`, `security-blind-spots`, `dead-code`, `combined`, `feature-flags`, `audit-brief`, `decision-surface`, `review-walkthrough-guide`, `review-walkthrough-validation`, `suppression-inventory`. Consumers should branch on `kind` instead of probing for unique field presence. `CodeClimateOutput` is a bare JSON array (per the Code Climate / GitLab Code Quality spec) and stays a sibling root branch discriminated by checking whether the document root is an array. `ErrorOutput` is the `--format json` failure document, emitted on stdout with a non-zero exit; it carries no `kind` and is discriminated by the `error: true` field.
28
28
  */
29
- export type FallowJsonOutput = (FallowOutput | CodeClimateOutput)
29
+ export type FallowJsonOutput = (FallowOutput | CodeClimateOutput | ErrorOutput)
30
30
  /**
31
31
  * Typed root of every fallow JSON envelope shape that serializes as a JSON
32
32
  * object and participates in the documented `FallowOutput` contract. The
@@ -86,7 +86,7 @@ kind: "dead-code"
86
86
  kind: "combined"
87
87
  }) | (FeatureFlagsOutput & {
88
88
  kind: "feature-flags"
89
- }) | (ReviewBriefOutput & {
89
+ }) | (ReviewBriefWireOutput & {
90
90
  kind: "audit-brief"
91
91
  }) | (DecisionSurfaceOutput & {
92
92
  kind: "decision-surface"
@@ -651,7 +651,7 @@ export_name: string
651
651
  type: "symbol"
652
652
  })
653
653
  export type InspectIdentity = (InspectFileIdentity | InspectSymbolIdentity)
654
- export type InspectSectionStatus = ("ok" | "error")
654
+ export type InspectSectionStatus = ("ok" | "unavailable" | "error")
655
655
  export type InspectEvidenceScope = ("symbol" | "file" | "project_filtered_to_file")
656
656
  /**
657
657
  * Best-effort classification of why a callee did not resolve to an edge.
@@ -835,6 +835,12 @@ export type FeatureFlagActionType = ("investigate-flag" | "suppress-line")
835
835
  * Serializes as the integer `REVIEW_BRIEF_SCHEMA_VERSION`.
836
836
  */
837
837
  export type ReviewBriefSchemaVersion = number
838
+ /**
839
+ * The exactly-three shippable decision categories (the SOLID-3). No cut category
840
+ * (abstraction / deletion / convention / irreversibility) is representable: this
841
+ * enum is the structural guarantee that confirmed-noise categories never ship.
842
+ */
843
+ export type DecisionCategory = ("coupling-boundary" | "public-api-contract" | "dependency")
838
844
  /**
839
845
  * Coarse risk classification for a changeset, a pure function of the change
840
846
  * size (file count plus, once threaded, net lines).
@@ -864,12 +870,6 @@ export type ConfidenceFlag = ("dynamic-dispatch" | "re-export-indirection")
864
870
  * The category of a single weakening signal.
865
871
  */
866
872
  export type WeakeningKind = ("test-weakened" | "threshold-lowered" | "suppression-added" | "security-check-removed")
867
- /**
868
- * The exactly-three shippable decision categories (the SOLID-3). No cut category
869
- * (abstraction / deletion / convention / irreversibility) is representable: this
870
- * enum is the structural guarantee that confirmed-noise categories never ship.
871
- */
872
- export type DecisionCategory = ("coupling-boundary" | "public-api-contract" | "dependency")
873
873
  /**
874
874
  * Independently-versioned wire-version newtype. Serializes as the integer
875
875
  * [`DECISION_SURFACE_SCHEMA_VERSION`].
@@ -7206,6 +7206,11 @@ duplication: InspectEvidenceSection
7206
7206
  complexity: InspectEvidenceSection
7207
7207
  security: InspectEvidenceSection
7208
7208
  impact_closure: InspectEvidenceSection
7209
+ /**
7210
+ * OPT-IN target-level git churn. Omitted unless historical evidence was
7211
+ * explicitly requested by the caller.
7212
+ */
7213
+ churn?: (InspectEvidenceSection | null)
7209
7214
  /**
7210
7215
  * OPT-IN symbol-level call chain. Present only when `--symbol-chain` was
7211
7216
  * requested AND the target is a SYMBOL (best-effort, syntactic, OFF the
@@ -9347,10 +9352,22 @@ dead_export_count: number
9347
9352
  dead_exports: string[]
9348
9353
  }
9349
9354
  /**
9350
- * `_meta.feature_flags` details emitted with `--explain`.
9355
+ * Optional `_meta` block for [`FeatureFlagsOutput`]. Both fields are optional
9356
+ * because the two contributors are independent: `feature_flags` details are
9357
+ * present only with `--explain`, and `telemetry` is injected post-pass by
9358
+ * [`attach_telemetry_meta`] whenever an analysis run id is available (which is
9359
+ * the default path). Mirrors `Meta` / `CombinedMeta`, which also model
9360
+ * `telemetry` as an optional, never-required property.
9351
9361
  */
9352
9362
  export interface FeatureFlagsMeta {
9353
- feature_flags: FeatureFlagsMetaDetails
9363
+ /**
9364
+ * Feature-flag detection explanations, emitted only with `--explain`.
9365
+ */
9366
+ feature_flags?: (FeatureFlagsMetaDetails | null)
9367
+ /**
9368
+ * Local telemetry correlation metadata for agent follow-up runs.
9369
+ */
9370
+ telemetry?: (TelemetryMeta | null)
9354
9371
  }
9355
9372
  /**
9356
9373
  * Feature flag explanatory metadata.
@@ -9378,21 +9395,48 @@ medium: string
9378
9395
  low: string
9379
9396
  }
9380
9397
  /**
9381
- * The full `fallow audit --brief --format json` envelope. Carries the
9382
- * informational verdict, the triage and graph-facts orientation stages, plus
9383
- * the reused "subtract" section (the same dead-code / duplication / complexity
9384
- * payload `fallow audit --format json` emits).
9398
+ * Complete `fallow audit --brief --format json` wire envelope.
9399
+ *
9400
+ * This is distinct from [`ReviewBriefOutput`], which is the reusable review
9401
+ * digest embedded in walkthrough output. The wire envelope also carries audit
9402
+ * metadata, optional telemetry, and the subtract-style analysis subreports.
9385
9403
  */
9386
- export interface ReviewBriefOutput {
9404
+ export interface ReviewBriefWireOutput {
9387
9405
  schema_version: ReviewBriefSchemaVersion
9388
- /**
9389
- * Fallow CLI version that produced this output.
9390
- */
9391
- version: string
9406
+ version: ToolVersion
9392
9407
  /**
9393
9408
  * Command discriminator singleton: always `"audit-brief"`.
9394
9409
  */
9395
9410
  command: string
9411
+ verdict: AuditVerdict
9412
+ /**
9413
+ * Number of changed files in the audit scope.
9414
+ */
9415
+ changed_files_count: number
9416
+ /**
9417
+ * Base ref used to determine the changeset.
9418
+ */
9419
+ base_ref: string
9420
+ /**
9421
+ * Human-readable description of the resolved base, when available.
9422
+ */
9423
+ base_description?: (string | null)
9424
+ /**
9425
+ * Head commit SHA, when available.
9426
+ */
9427
+ head_sha?: (string | null)
9428
+ elapsed_ms: ElapsedMs
9429
+ /**
9430
+ * Whether base-snapshot analysis was skipped for this run.
9431
+ */
9432
+ base_snapshot_skipped?: (boolean | null)
9433
+ summary: AuditSummary
9434
+ attribution: AuditAttribution
9435
+ /**
9436
+ * Optional metric definitions and local telemetry correlation metadata.
9437
+ */
9438
+ _meta?: (Meta | null)
9439
+ decisions: DecisionSurface
9396
9440
  triage: DiffTriage
9397
9441
  graph_facts: GraphFacts
9398
9442
  partition: PartitionFacts
@@ -9400,20 +9444,130 @@ impact_closure: ImpactClosureFacts
9400
9444
  focus: FocusMap
9401
9445
  deltas: ReviewDeltas
9402
9446
  /**
9403
- * 6.F, headline: reviewer-private weakening signals (tests
9404
- * removed/skipped, thresholds lowered, suppressions added, security steps
9405
- * removed). Advisory, never gates, never auto-posted.
9447
+ * Reviewer-private weakening signals.
9406
9448
  */
9407
9449
  weakening: WeakeningSignal[]
9408
9450
  routing: RoutingFacts
9409
- decisions: DecisionSurface
9451
+ /**
9452
+ * Dead-code findings scoped to the audit changeset.
9453
+ */
9454
+ dead_code?: (CheckOutput | null)
9455
+ /**
9456
+ * Duplication findings scoped to the audit changeset.
9457
+ */
9458
+ duplication?: (DupesReportPayload | null)
9459
+ /**
9460
+ * Complexity findings scoped to the audit changeset.
9461
+ */
9462
+ complexity?: (HealthReport | null)
9463
+ }
9464
+ /**
9465
+ * The ranked, capped decision surface plus the set of signal_ids the
9466
+ * deterministic layer emitted (the anti-hallucination allowlist).
9467
+ */
9468
+ export interface DecisionSurface {
9469
+ /**
9470
+ * Ranked decisions, highest consequence first.
9471
+ */
9472
+ decisions: Decision[]
9473
+ /**
9474
+ * Present when more than the cap were extracted.
9475
+ */
9476
+ truncated?: (TruncationNote | null)
9477
+ /**
9478
+ * Every signal_id the deterministic layer emitted, INCLUDING those whose
9479
+ * decision was collapsed below the cap or suppressed. The anti-hallucination
9480
+ * allowlist: an agent decision whose id is absent is rejected.
9481
+ */
9482
+ emitted_signal_ids: string[]
9483
+ }
9484
+ /**
9485
+ * One consequential structural decision, framed as a judgment question for a
9486
+ * human with taste, anchored to a fallow-emitted signal.
9487
+ */
9488
+ export interface Decision {
9489
+ /**
9490
+ * Deterministic anchor to the fallow-emitted candidate this decision frames.
9491
+ * `accept_signal_id` rejects any id not in the emitted set.
9492
+ */
9493
+ signal_id: string
9494
+ category: DecisionCategory
9495
+ /**
9496
+ * The decision framed as a judgment question for the human.
9497
+ */
9498
+ question: string
9499
+ /**
9500
+ * Root-relative file the decision is anchored at.
9501
+ */
9502
+ anchor_file: string
9503
+ /**
9504
+ * 1-based anchor line, when the underlying signal carries one (0 = file head).
9505
+ */
9506
+ anchor_line: number
9507
+ /**
9508
+ * The raw fallow-emitted candidate key the `signal_id` hashes.
9509
+ */
9510
+ signal_key: string
9511
+ /**
9512
+ * The `signal_id` this decision WOULD have had before any rename in this
9513
+ * change (the anchor file's pre-rename path). Present only when the anchor was
9514
+ * renamed. A review-memory layer carries a dismissal across a `git mv`: if
9515
+ * `previous_signal_id` was dismissed in an earlier PR, treat this decision as
9516
+ * dismissed too. Keeps `signal_id` itself exact + deterministic.
9517
+ */
9518
+ previous_signal_id?: (string | null)
9519
+ /**
9520
+ * Blast radius: count of modules affected beyond the diff by this decision.
9521
+ */
9522
+ blast: number
9523
+ /**
9524
+ * `blast * reversibility_weight`: the rank key (sorted descending).
9525
+ */
9526
+ consequence: number
9527
+ /**
9528
+ * The routed expert(s) to ask, from ownership routing. Empty when no
9529
+ * ownership signal is available for the anchor file.
9530
+ */
9531
+ expert: string[]
9532
+ /**
9533
+ * Whether the anchor file's only qualified owner is one person.
9534
+ */
9535
+ bus_factor_one?: boolean
9536
+ /**
9537
+ * Honest per-decision count: in-repo modules OUTSIDE the diff that already
9538
+ * depend on this decision's anchor. This is the DISPLAY number (taste
9539
+ * ownership: the human reads reversibility from the count itself), distinct
9540
+ * from `blast` (the project-wide proxy used only for ranking). Never a door
9541
+ * label. Internal-only by construction, so it cannot see a published library's
9542
+ * external consumers; the public-API trade-off clause names that risk in prose.
9543
+ */
9544
+ internal_consumer_count: number
9545
+ /**
9546
+ * The named structural sacrifice this change makes, stated as a fact, never a
9547
+ * recommendation (e.g. "Couples `app` to `infra`; 4 in-repo modules already
9548
+ * depend on this anchor."). A sibling fact to `question`; it never tells the
9549
+ * human what to choose.
9550
+ */
9551
+ tradeoff: string
9552
+ }
9553
+ /**
9554
+ * A note for decisions collapsed below the cap.
9555
+ */
9556
+ export interface TruncationNote {
9557
+ /**
9558
+ * How many decisions were collapsed below the cap.
9559
+ */
9560
+ collapsed: number
9561
+ /**
9562
+ * Human-readable collapse reason.
9563
+ */
9564
+ reason: string
9410
9565
  }
9411
9566
  /**
9412
9567
  * Stage 0 of the brief: triage facts derived purely from the diff size.
9413
9568
  *
9414
- * `hunks` and `net_lines` are `None` in v1: the file-level audit does not yet
9415
- * thread a `DiffIndex` (from `report/ci/diff_filter.rs`). They populate later,
9416
- * on `--diff-file` / `--diff-stdin`, without a schema bump.
9569
+ * `hunks` and `net_lines` are populated when the caller supplies parsed diff
9570
+ * evidence. They remain absent when no diff is available.
9417
9571
  */
9418
9572
  export interface DiffTriage {
9419
9573
  /**
@@ -9421,11 +9575,11 @@ export interface DiffTriage {
9421
9575
  */
9422
9576
  files: number
9423
9577
  /**
9424
- * Number of diff hunks. `None` in v1 (no diff index threaded yet).
9578
+ * Number of diff hunks, or `None` when no diff evidence was supplied.
9425
9579
  */
9426
9580
  hunks?: (number | null)
9427
9581
  /**
9428
- * Net added-minus-removed lines. `None` in v1 (no diff index threaded yet).
9582
+ * Net added-minus-removed lines, or `None` without diff evidence.
9429
9583
  */
9430
9584
  net_lines?: (number | null)
9431
9585
  risk_class: RiskClass
@@ -9437,18 +9591,20 @@ review_effort: ReviewEffort
9437
9591
  * `boundaries_touched` is derived from the run's boundary-violation zones;
9438
9592
  * `reachable_from` is populated by the impact closure (the affected-not-shown
9439
9593
  * set: modules the changed code is reachable from / affects, none in the diff).
9440
- * `exports_added` / `api_width_delta` stay honestly stubbed (`0`) until the
9441
- * export-surface delta lands. The fields are present and correctly typed so
9442
- * values fill in later without a schema bump.
9594
+ * `exports_added` and `api_width_delta` both report the exports-aware public API
9595
+ * widening count. Removed exports are not represented in this widening-only
9596
+ * signal.
9443
9597
  */
9444
9598
  export interface GraphFacts {
9445
9599
  /**
9446
- * Number of exports added by the changeset. Stubbed to `0` in v1.
9600
+ * Number of public API exports added by the changeset. Zero means the
9601
+ * changeset adds no public API exports.
9447
9602
  */
9448
9603
  exports_added: number
9449
9604
  /**
9450
- * Change in public API width (added minus removed exports). Stubbed to `0`
9451
- * in v1.
9605
+ * Widening-only public API delta, currently equal to `exports_added`.
9606
+ * Removed exports are not represented, so zero means no public API exports
9607
+ * were added.
9452
9608
  */
9453
9609
  api_width_delta: number
9454
9610
  /**
@@ -9696,108 +9852,6 @@ expert: string[]
9696
9852
  */
9697
9853
  bus_factor_one?: boolean
9698
9854
  }
9699
- /**
9700
- * The ranked, capped decision surface plus the set of signal_ids the
9701
- * deterministic layer emitted (the anti-hallucination allowlist).
9702
- */
9703
- export interface DecisionSurface {
9704
- /**
9705
- * Ranked decisions, highest consequence first.
9706
- */
9707
- decisions: Decision[]
9708
- /**
9709
- * Present when more than the cap were extracted.
9710
- */
9711
- truncated?: (TruncationNote | null)
9712
- /**
9713
- * Every signal_id the deterministic layer emitted, INCLUDING those whose
9714
- * decision was collapsed below the cap or suppressed. The anti-hallucination
9715
- * allowlist: an agent decision whose id is absent is rejected.
9716
- */
9717
- emitted_signal_ids: string[]
9718
- }
9719
- /**
9720
- * One consequential structural decision, framed as a judgment question for a
9721
- * human with taste, anchored to a fallow-emitted signal.
9722
- */
9723
- export interface Decision {
9724
- /**
9725
- * Deterministic anchor to the fallow-emitted candidate this decision frames.
9726
- * `accept_signal_id` rejects any id not in the emitted set.
9727
- */
9728
- signal_id: string
9729
- category: DecisionCategory
9730
- /**
9731
- * The decision framed as a judgment question for the human.
9732
- */
9733
- question: string
9734
- /**
9735
- * Root-relative file the decision is anchored at.
9736
- */
9737
- anchor_file: string
9738
- /**
9739
- * 1-based anchor line, when the underlying signal carries one (0 = file head).
9740
- */
9741
- anchor_line: number
9742
- /**
9743
- * The raw fallow-emitted candidate key the `signal_id` hashes.
9744
- */
9745
- signal_key: string
9746
- /**
9747
- * The `signal_id` this decision WOULD have had before any rename in this
9748
- * change (the anchor file's pre-rename path). Present only when the anchor was
9749
- * renamed. A review-memory layer carries a dismissal across a `git mv`: if
9750
- * `previous_signal_id` was dismissed in an earlier PR, treat this decision as
9751
- * dismissed too. Keeps `signal_id` itself exact + deterministic.
9752
- */
9753
- previous_signal_id?: (string | null)
9754
- /**
9755
- * Blast radius: count of modules affected beyond the diff by this decision.
9756
- */
9757
- blast: number
9758
- /**
9759
- * `blast * reversibility_weight`: the rank key (sorted descending).
9760
- */
9761
- consequence: number
9762
- /**
9763
- * The routed expert(s) to ask, from ownership routing. Empty when no
9764
- * ownership signal is available for the anchor file.
9765
- */
9766
- expert: string[]
9767
- /**
9768
- * Whether the anchor file's only qualified owner is one person.
9769
- */
9770
- bus_factor_one?: boolean
9771
- /**
9772
- * Honest per-decision count: in-repo modules OUTSIDE the diff that already
9773
- * depend on this decision's anchor. This is the DISPLAY number (taste
9774
- * ownership: the human reads reversibility from the count itself), distinct
9775
- * from `blast` (the project-wide proxy used only for ranking). Never a door
9776
- * label. Internal-only by construction, so it cannot see a published library's
9777
- * external consumers; the public-API trade-off clause names that risk in prose.
9778
- */
9779
- internal_consumer_count: number
9780
- /**
9781
- * The named structural sacrifice this change makes, stated as a fact, never a
9782
- * recommendation (e.g. "Couples `app` to `infra`; 4 in-repo modules already
9783
- * depend on this anchor."). A sibling fact to `question`; it never tells the
9784
- * human what to choose.
9785
- */
9786
- tradeoff: string
9787
- }
9788
- /**
9789
- * A note for decisions collapsed below the cap.
9790
- */
9791
- export interface TruncationNote {
9792
- /**
9793
- * How many decisions were collapsed below the cap.
9794
- */
9795
- collapsed: number
9796
- /**
9797
- * Human-readable collapse reason.
9798
- */
9799
- reason: string
9800
- }
9801
9855
  /**
9802
9856
  * The separable `decision-surface` envelope: the single call that puts taste-
9803
9857
  * decisions in front of a human, callable WITHOUT the full pipeline (the
@@ -9954,6 +10008,37 @@ agent_schema: AgentSchema
9954
10008
  */
9955
10009
  injection_note: string
9956
10010
  }
10011
+ /**
10012
+ * The full `fallow audit --brief --format json` envelope. Carries the
10013
+ * informational verdict, the triage and graph-facts orientation stages, plus
10014
+ * the reused "subtract" section (the same dead-code / duplication / complexity
10015
+ * payload `fallow audit --format json` emits).
10016
+ */
10017
+ export interface ReviewBriefOutput {
10018
+ schema_version: ReviewBriefSchemaVersion
10019
+ /**
10020
+ * Fallow CLI version that produced this output.
10021
+ */
10022
+ version: string
10023
+ /**
10024
+ * Command discriminator singleton: always `"audit-brief"`.
10025
+ */
10026
+ command: string
10027
+ triage: DiffTriage
10028
+ graph_facts: GraphFacts
10029
+ partition: PartitionFacts
10030
+ impact_closure: ImpactClosureFacts
10031
+ focus: FocusMap
10032
+ deltas: ReviewDeltas
10033
+ /**
10034
+ * 6.F, headline: reviewer-private weakening signals (tests
10035
+ * removed/skipped, thresholds lowered, suppressions added, security steps
10036
+ * removed). Advisory, never gates, never auto-posted.
10037
+ */
10038
+ weakening: WeakeningSignal[]
10039
+ routing: RoutingFacts
10040
+ decisions: DecisionSurface
10041
+ }
9957
10042
  /**
9958
10043
  * The review direction artifact: the order to review in, the coherent units,
9959
10044
  * and per-unit concern lens + out-of-diff + expert. A minimal projection of the
@@ -10301,6 +10386,29 @@ export interface CodeClimateLines {
10301
10386
  */
10302
10387
  begin: number
10303
10388
  }
10389
+ /**
10390
+ * Structured JSON error emitted on stdout when `--format json` is active and a
10391
+ * command fails. It carries no `kind` discriminator: it is distinguished from
10392
+ * the kind-tagged success envelopes by the required `error: true` field, and is
10393
+ * a document-root branch alongside `FallowOutput` and `CodeClimateOutput` in
10394
+ * `docs/output-schema.json`. Agents that pass `--format json` and observe a
10395
+ * non-zero exit code parse this shape from stdout.
10396
+ */
10397
+ export interface ErrorOutput {
10398
+ /**
10399
+ * Always `true`. The discriminator that separates an error document from a
10400
+ * success envelope (which instead carries a `kind`).
10401
+ */
10402
+ error: boolean
10403
+ /**
10404
+ * Human-readable error message.
10405
+ */
10406
+ message: string
10407
+ /**
10408
+ * The process exit code the CLI returns alongside this document.
10409
+ */
10410
+ exit_code: number
10411
+ }
10304
10412
 
10305
10413
  /**
10306
10414
  * Inner complexity-violation payload, flattened into `HealthFinding`