fallow 3.1.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/capabilities.json +887 -2
- package/issue-registry.json +357 -0
- package/package.json +9 -9
- package/schema.json +149 -1
- package/scripts/platform-package.js +1 -1
- package/scripts/platform-package.test.js +3 -3
- package/scripts/run-binary.js +15 -1
- package/scripts/run-binary.test.js +17 -0
- package/skills/fallow/SKILL.md +21 -51
- package/skills/fallow/references/cli-reference.md +22 -11
- package/skills/fallow/references/mcp.md +63 -0
- package/types/output-contract.d.ts +347 -6
package/capabilities.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fallow",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"manifest_version": "1",
|
|
5
5
|
"description": "Codebase analyzer for TypeScript/JavaScript: unused code, circular dependencies, code duplication, complexity hotspots, and architecture boundary violations",
|
|
6
6
|
"global_flags": [
|
|
@@ -985,6 +985,11 @@
|
|
|
985
985
|
"description": "Print the JSON Schema for external plugin files",
|
|
986
986
|
"flags": []
|
|
987
987
|
},
|
|
988
|
+
{
|
|
989
|
+
"name": "plugin-check",
|
|
990
|
+
"description": "Dry-run external plugins: report what each activated and seeded",
|
|
991
|
+
"flags": []
|
|
992
|
+
},
|
|
988
993
|
{
|
|
989
994
|
"name": "rule-pack-schema",
|
|
990
995
|
"description": "Print the JSON Schema for rule pack files",
|
|
@@ -1023,6 +1028,11 @@
|
|
|
1023
1028
|
}
|
|
1024
1029
|
]
|
|
1025
1030
|
},
|
|
1031
|
+
{
|
|
1032
|
+
"name": "recommend",
|
|
1033
|
+
"description": "Recommend a project-tailored config for an agent to author",
|
|
1034
|
+
"flags": []
|
|
1035
|
+
},
|
|
1026
1036
|
{
|
|
1027
1037
|
"name": "list",
|
|
1028
1038
|
"description": "List discovered entry points, files, plugins, boundaries, and workspaces",
|
|
@@ -1909,6 +1919,9 @@
|
|
|
1909
1919
|
"fixable": false,
|
|
1910
1920
|
"suppressible": true,
|
|
1911
1921
|
"suppress_comment": "// fallow-ignore-file unused-file",
|
|
1922
|
+
"default_severity": "error",
|
|
1923
|
+
"opt_in": false,
|
|
1924
|
+
"frameworks": [],
|
|
1912
1925
|
"note": null,
|
|
1913
1926
|
"license": "free",
|
|
1914
1927
|
"license_note": null,
|
|
@@ -1943,6 +1956,9 @@
|
|
|
1943
1956
|
"fixable": true,
|
|
1944
1957
|
"suppressible": true,
|
|
1945
1958
|
"suppress_comment": "// fallow-ignore-next-line unused-export",
|
|
1959
|
+
"default_severity": "error",
|
|
1960
|
+
"opt_in": false,
|
|
1961
|
+
"frameworks": [],
|
|
1946
1962
|
"note": null,
|
|
1947
1963
|
"license": "free",
|
|
1948
1964
|
"license_note": null,
|
|
@@ -1974,6 +1990,9 @@
|
|
|
1974
1990
|
"fixable": false,
|
|
1975
1991
|
"suppressible": true,
|
|
1976
1992
|
"suppress_comment": "// fallow-ignore-next-line unused-type",
|
|
1993
|
+
"default_severity": "error",
|
|
1994
|
+
"opt_in": false,
|
|
1995
|
+
"frameworks": [],
|
|
1977
1996
|
"note": null,
|
|
1978
1997
|
"license": "free",
|
|
1979
1998
|
"license_note": null,
|
|
@@ -2008,6 +2027,9 @@
|
|
|
2008
2027
|
"fixable": false,
|
|
2009
2028
|
"suppressible": true,
|
|
2010
2029
|
"suppress_comment": "// fallow-ignore-next-line private-type-leak",
|
|
2030
|
+
"default_severity": "off",
|
|
2031
|
+
"opt_in": true,
|
|
2032
|
+
"frameworks": [],
|
|
2011
2033
|
"note": "Opt-in API hygiene check; the rule defaults to off",
|
|
2012
2034
|
"license": "free",
|
|
2013
2035
|
"license_note": null,
|
|
@@ -2042,6 +2064,9 @@
|
|
|
2042
2064
|
"fixable": true,
|
|
2043
2065
|
"suppressible": false,
|
|
2044
2066
|
"suppress_comment": null,
|
|
2067
|
+
"default_severity": "error",
|
|
2068
|
+
"opt_in": false,
|
|
2069
|
+
"frameworks": [],
|
|
2045
2070
|
"note": "--unused-deps controls unused-dependency, unused-dev-dependency, unused-optional-dependency, type-only-dependency, and test-only-dependency",
|
|
2046
2071
|
"license": "free",
|
|
2047
2072
|
"license_note": null,
|
|
@@ -2079,6 +2104,9 @@
|
|
|
2079
2104
|
"fixable": true,
|
|
2080
2105
|
"suppressible": false,
|
|
2081
2106
|
"suppress_comment": null,
|
|
2107
|
+
"default_severity": "warn",
|
|
2108
|
+
"opt_in": false,
|
|
2109
|
+
"frameworks": [],
|
|
2082
2110
|
"note": "--unused-deps controls unused-dependency, unused-dev-dependency, unused-optional-dependency, type-only-dependency, and test-only-dependency",
|
|
2083
2111
|
"license": "free",
|
|
2084
2112
|
"license_note": null,
|
|
@@ -2116,6 +2144,9 @@
|
|
|
2116
2144
|
"fixable": true,
|
|
2117
2145
|
"suppressible": false,
|
|
2118
2146
|
"suppress_comment": null,
|
|
2147
|
+
"default_severity": "warn",
|
|
2148
|
+
"opt_in": false,
|
|
2149
|
+
"frameworks": [],
|
|
2119
2150
|
"note": "--unused-deps controls unused-dependency, unused-dev-dependency, unused-optional-dependency, type-only-dependency, and test-only-dependency",
|
|
2120
2151
|
"license": "free",
|
|
2121
2152
|
"license_note": null,
|
|
@@ -2150,6 +2181,9 @@
|
|
|
2150
2181
|
"fixable": false,
|
|
2151
2182
|
"suppressible": false,
|
|
2152
2183
|
"suppress_comment": null,
|
|
2184
|
+
"default_severity": "warn",
|
|
2185
|
+
"opt_in": false,
|
|
2186
|
+
"frameworks": [],
|
|
2153
2187
|
"note": "Only reported in --production mode; --unused-deps scopes it together with the other dependency kinds",
|
|
2154
2188
|
"license": "free",
|
|
2155
2189
|
"license_note": null,
|
|
@@ -2184,6 +2218,9 @@
|
|
|
2184
2218
|
"fixable": false,
|
|
2185
2219
|
"suppressible": false,
|
|
2186
2220
|
"suppress_comment": null,
|
|
2221
|
+
"default_severity": "warn",
|
|
2222
|
+
"opt_in": false,
|
|
2223
|
+
"frameworks": [],
|
|
2187
2224
|
"note": "Not reported in --production mode (test files are excluded there); --unused-deps scopes it together with the other dependency kinds",
|
|
2188
2225
|
"license": "free",
|
|
2189
2226
|
"license_note": null,
|
|
@@ -2218,6 +2255,9 @@
|
|
|
2218
2255
|
"fixable": false,
|
|
2219
2256
|
"suppressible": false,
|
|
2220
2257
|
"suppress_comment": null,
|
|
2258
|
+
"default_severity": "warn",
|
|
2259
|
+
"opt_in": false,
|
|
2260
|
+
"frameworks": [],
|
|
2221
2261
|
"note": null,
|
|
2222
2262
|
"license": "free",
|
|
2223
2263
|
"license_note": null,
|
|
@@ -2252,6 +2292,9 @@
|
|
|
2252
2292
|
"fixable": true,
|
|
2253
2293
|
"suppressible": true,
|
|
2254
2294
|
"suppress_comment": "// fallow-ignore-next-line unused-enum-member",
|
|
2295
|
+
"default_severity": "error",
|
|
2296
|
+
"opt_in": false,
|
|
2297
|
+
"frameworks": [],
|
|
2255
2298
|
"note": null,
|
|
2256
2299
|
"license": "free",
|
|
2257
2300
|
"license_note": null,
|
|
@@ -2286,6 +2329,9 @@
|
|
|
2286
2329
|
"fixable": false,
|
|
2287
2330
|
"suppressible": true,
|
|
2288
2331
|
"suppress_comment": "// fallow-ignore-next-line unused-class-member",
|
|
2332
|
+
"default_severity": "error",
|
|
2333
|
+
"opt_in": false,
|
|
2334
|
+
"frameworks": [],
|
|
2289
2335
|
"note": null,
|
|
2290
2336
|
"license": "free",
|
|
2291
2337
|
"license_note": null,
|
|
@@ -2322,6 +2368,9 @@
|
|
|
2322
2368
|
"fixable": false,
|
|
2323
2369
|
"suppressible": true,
|
|
2324
2370
|
"suppress_comment": "// fallow-ignore-next-line unused-store-member",
|
|
2371
|
+
"default_severity": "warn",
|
|
2372
|
+
"opt_in": false,
|
|
2373
|
+
"frameworks": [],
|
|
2325
2374
|
"note": null,
|
|
2326
2375
|
"license": "free",
|
|
2327
2376
|
"license_note": null,
|
|
@@ -2356,6 +2405,9 @@
|
|
|
2356
2405
|
"fixable": false,
|
|
2357
2406
|
"suppressible": true,
|
|
2358
2407
|
"suppress_comment": "// fallow-ignore-next-line unresolved-import",
|
|
2408
|
+
"default_severity": "error",
|
|
2409
|
+
"opt_in": false,
|
|
2410
|
+
"frameworks": [],
|
|
2359
2411
|
"note": null,
|
|
2360
2412
|
"license": "free",
|
|
2361
2413
|
"license_note": null,
|
|
@@ -2390,6 +2442,9 @@
|
|
|
2390
2442
|
"fixable": false,
|
|
2391
2443
|
"suppressible": false,
|
|
2392
2444
|
"suppress_comment": null,
|
|
2445
|
+
"default_severity": "error",
|
|
2446
|
+
"opt_in": false,
|
|
2447
|
+
"frameworks": [],
|
|
2393
2448
|
"note": null,
|
|
2394
2449
|
"license": "free",
|
|
2395
2450
|
"license_note": null,
|
|
@@ -2424,6 +2479,9 @@
|
|
|
2424
2479
|
"fixable": false,
|
|
2425
2480
|
"suppressible": true,
|
|
2426
2481
|
"suppress_comment": "// fallow-ignore-file duplicate-export",
|
|
2482
|
+
"default_severity": "error",
|
|
2483
|
+
"opt_in": false,
|
|
2484
|
+
"frameworks": [],
|
|
2427
2485
|
"note": "fallow fix can add an ignoreExports rule to the fallow config instead of editing source",
|
|
2428
2486
|
"license": "free",
|
|
2429
2487
|
"license_note": null,
|
|
@@ -2460,6 +2518,9 @@
|
|
|
2460
2518
|
"fixable": false,
|
|
2461
2519
|
"suppressible": true,
|
|
2462
2520
|
"suppress_comment": "// fallow-ignore-next-line circular-dependency",
|
|
2521
|
+
"default_severity": "error",
|
|
2522
|
+
"opt_in": false,
|
|
2523
|
+
"frameworks": [],
|
|
2463
2524
|
"note": null,
|
|
2464
2525
|
"license": "free",
|
|
2465
2526
|
"license_note": null,
|
|
@@ -2498,6 +2559,9 @@
|
|
|
2498
2559
|
"fixable": false,
|
|
2499
2560
|
"suppressible": true,
|
|
2500
2561
|
"suppress_comment": "// fallow-ignore-file re-export-cycle",
|
|
2562
|
+
"default_severity": "warn",
|
|
2563
|
+
"opt_in": false,
|
|
2564
|
+
"frameworks": [],
|
|
2501
2565
|
"note": null,
|
|
2502
2566
|
"license": "free",
|
|
2503
2567
|
"license_note": null,
|
|
@@ -2532,6 +2596,9 @@
|
|
|
2532
2596
|
"fixable": false,
|
|
2533
2597
|
"suppressible": true,
|
|
2534
2598
|
"suppress_comment": "// fallow-ignore-next-line boundary-violation",
|
|
2599
|
+
"default_severity": "error",
|
|
2600
|
+
"opt_in": false,
|
|
2601
|
+
"frameworks": [],
|
|
2535
2602
|
"note": "Requires configured boundary zones (boundaries config)",
|
|
2536
2603
|
"license": "free",
|
|
2537
2604
|
"license_note": null,
|
|
@@ -2565,6 +2632,9 @@
|
|
|
2565
2632
|
"fixable": false,
|
|
2566
2633
|
"suppressible": true,
|
|
2567
2634
|
"suppress_comment": "// fallow-ignore-file boundary-violation",
|
|
2635
|
+
"default_severity": "error",
|
|
2636
|
+
"opt_in": false,
|
|
2637
|
+
"frameworks": [],
|
|
2568
2638
|
"note": "Requires boundaries.coverage.requireAllFiles",
|
|
2569
2639
|
"license": "free",
|
|
2570
2640
|
"license_note": null,
|
|
@@ -2599,6 +2669,9 @@
|
|
|
2599
2669
|
"fixable": false,
|
|
2600
2670
|
"suppressible": true,
|
|
2601
2671
|
"suppress_comment": "// fallow-ignore-next-line boundary-call-violation",
|
|
2672
|
+
"default_severity": "error",
|
|
2673
|
+
"opt_in": false,
|
|
2674
|
+
"frameworks": [],
|
|
2602
2675
|
"note": "Requires boundaries.calls.forbidden patterns",
|
|
2603
2676
|
"license": "free",
|
|
2604
2677
|
"license_note": null,
|
|
@@ -2632,6 +2705,9 @@
|
|
|
2632
2705
|
"fixable": false,
|
|
2633
2706
|
"suppressible": true,
|
|
2634
2707
|
"suppress_comment": "// fallow-ignore-next-line policy-violation",
|
|
2708
|
+
"default_severity": "warn",
|
|
2709
|
+
"opt_in": false,
|
|
2710
|
+
"frameworks": [],
|
|
2635
2711
|
"note": "Requires a configured rule pack (rulePacks config)",
|
|
2636
2712
|
"license": "free",
|
|
2637
2713
|
"license_note": null,
|
|
@@ -2665,6 +2741,9 @@
|
|
|
2665
2741
|
"fixable": false,
|
|
2666
2742
|
"suppressible": false,
|
|
2667
2743
|
"suppress_comment": null,
|
|
2744
|
+
"default_severity": "warn",
|
|
2745
|
+
"opt_in": false,
|
|
2746
|
+
"frameworks": [],
|
|
2668
2747
|
"note": "Fix by removing the stale suppression marker itself",
|
|
2669
2748
|
"license": "free",
|
|
2670
2749
|
"license_note": null,
|
|
@@ -2694,6 +2773,9 @@
|
|
|
2694
2773
|
"fixable": false,
|
|
2695
2774
|
"suppressible": false,
|
|
2696
2775
|
"suppress_comment": null,
|
|
2776
|
+
"default_severity": "off",
|
|
2777
|
+
"opt_in": true,
|
|
2778
|
+
"frameworks": [],
|
|
2697
2779
|
"note": null,
|
|
2698
2780
|
"license": "free",
|
|
2699
2781
|
"license_note": null,
|
|
@@ -2731,6 +2813,9 @@
|
|
|
2731
2813
|
"fixable": true,
|
|
2732
2814
|
"suppressible": false,
|
|
2733
2815
|
"suppress_comment": null,
|
|
2816
|
+
"default_severity": "warn",
|
|
2817
|
+
"opt_in": false,
|
|
2818
|
+
"frameworks": [],
|
|
2734
2819
|
"note": null,
|
|
2735
2820
|
"license": "free",
|
|
2736
2821
|
"license_note": null,
|
|
@@ -2768,6 +2853,9 @@
|
|
|
2768
2853
|
"fixable": false,
|
|
2769
2854
|
"suppressible": false,
|
|
2770
2855
|
"suppress_comment": null,
|
|
2856
|
+
"default_severity": "warn",
|
|
2857
|
+
"opt_in": false,
|
|
2858
|
+
"frameworks": [],
|
|
2771
2859
|
"note": null,
|
|
2772
2860
|
"license": "free",
|
|
2773
2861
|
"license_note": null,
|
|
@@ -2805,6 +2893,9 @@
|
|
|
2805
2893
|
"fixable": false,
|
|
2806
2894
|
"suppressible": false,
|
|
2807
2895
|
"suppress_comment": null,
|
|
2896
|
+
"default_severity": "error",
|
|
2897
|
+
"opt_in": false,
|
|
2898
|
+
"frameworks": [],
|
|
2808
2899
|
"note": null,
|
|
2809
2900
|
"license": "free",
|
|
2810
2901
|
"license_note": null,
|
|
@@ -2843,6 +2934,9 @@
|
|
|
2843
2934
|
"fixable": false,
|
|
2844
2935
|
"suppressible": false,
|
|
2845
2936
|
"suppress_comment": null,
|
|
2937
|
+
"default_severity": "warn",
|
|
2938
|
+
"opt_in": false,
|
|
2939
|
+
"frameworks": [],
|
|
2846
2940
|
"note": null,
|
|
2847
2941
|
"license": "free",
|
|
2848
2942
|
"license_note": null,
|
|
@@ -2881,6 +2975,9 @@
|
|
|
2881
2975
|
"fixable": false,
|
|
2882
2976
|
"suppressible": false,
|
|
2883
2977
|
"suppress_comment": null,
|
|
2978
|
+
"default_severity": "error",
|
|
2979
|
+
"opt_in": false,
|
|
2980
|
+
"frameworks": [],
|
|
2884
2981
|
"note": null,
|
|
2885
2982
|
"license": "free",
|
|
2886
2983
|
"license_note": null,
|
|
@@ -2914,6 +3011,11 @@
|
|
|
2914
3011
|
"fixable": false,
|
|
2915
3012
|
"suppressible": true,
|
|
2916
3013
|
"suppress_comment": "// fallow-ignore-next-line invalid-client-export",
|
|
3014
|
+
"default_severity": "warn",
|
|
3015
|
+
"opt_in": false,
|
|
3016
|
+
"frameworks": [
|
|
3017
|
+
"next"
|
|
3018
|
+
],
|
|
2917
3019
|
"note": "Requires the project to declare next",
|
|
2918
3020
|
"license": "free",
|
|
2919
3021
|
"license_note": null,
|
|
@@ -2947,6 +3049,9 @@
|
|
|
2947
3049
|
"fixable": false,
|
|
2948
3050
|
"suppressible": true,
|
|
2949
3051
|
"suppress_comment": "// fallow-ignore-next-line mixed-client-server-barrel",
|
|
3052
|
+
"default_severity": "warn",
|
|
3053
|
+
"opt_in": false,
|
|
3054
|
+
"frameworks": [],
|
|
2950
3055
|
"note": "Requires the project to declare next",
|
|
2951
3056
|
"license": "free",
|
|
2952
3057
|
"license_note": null,
|
|
@@ -2980,6 +3085,9 @@
|
|
|
2980
3085
|
"fixable": false,
|
|
2981
3086
|
"suppressible": true,
|
|
2982
3087
|
"suppress_comment": "// fallow-ignore-next-line misplaced-directive",
|
|
3088
|
+
"default_severity": "warn",
|
|
3089
|
+
"opt_in": false,
|
|
3090
|
+
"frameworks": [],
|
|
2983
3091
|
"note": "Requires the project to declare next",
|
|
2984
3092
|
"license": "free",
|
|
2985
3093
|
"license_note": null,
|
|
@@ -3013,6 +3121,9 @@
|
|
|
3013
3121
|
"fixable": false,
|
|
3014
3122
|
"suppressible": true,
|
|
3015
3123
|
"suppress_comment": "// fallow-ignore-next-line unprovided-inject",
|
|
3124
|
+
"default_severity": "warn",
|
|
3125
|
+
"opt_in": false,
|
|
3126
|
+
"frameworks": [],
|
|
3016
3127
|
"note": null,
|
|
3017
3128
|
"license": "free",
|
|
3018
3129
|
"license_note": null,
|
|
@@ -3046,6 +3157,9 @@
|
|
|
3046
3157
|
"fixable": false,
|
|
3047
3158
|
"suppressible": true,
|
|
3048
3159
|
"suppress_comment": "// fallow-ignore-next-line unrendered-component",
|
|
3160
|
+
"default_severity": "warn",
|
|
3161
|
+
"opt_in": false,
|
|
3162
|
+
"frameworks": [],
|
|
3049
3163
|
"note": null,
|
|
3050
3164
|
"license": "free",
|
|
3051
3165
|
"license_note": null,
|
|
@@ -3079,6 +3193,9 @@
|
|
|
3079
3193
|
"fixable": false,
|
|
3080
3194
|
"suppressible": true,
|
|
3081
3195
|
"suppress_comment": "// fallow-ignore-next-line unused-component-prop",
|
|
3196
|
+
"default_severity": "warn",
|
|
3197
|
+
"opt_in": false,
|
|
3198
|
+
"frameworks": [],
|
|
3082
3199
|
"note": null,
|
|
3083
3200
|
"license": "free",
|
|
3084
3201
|
"license_note": null,
|
|
@@ -3112,6 +3229,9 @@
|
|
|
3112
3229
|
"fixable": false,
|
|
3113
3230
|
"suppressible": true,
|
|
3114
3231
|
"suppress_comment": "// fallow-ignore-next-line unused-component-emit",
|
|
3232
|
+
"default_severity": "warn",
|
|
3233
|
+
"opt_in": false,
|
|
3234
|
+
"frameworks": [],
|
|
3115
3235
|
"note": null,
|
|
3116
3236
|
"license": "free",
|
|
3117
3237
|
"license_note": null,
|
|
@@ -3145,6 +3265,9 @@
|
|
|
3145
3265
|
"fixable": false,
|
|
3146
3266
|
"suppressible": true,
|
|
3147
3267
|
"suppress_comment": "// fallow-ignore-next-line unused-component-input",
|
|
3268
|
+
"default_severity": "warn",
|
|
3269
|
+
"opt_in": false,
|
|
3270
|
+
"frameworks": [],
|
|
3148
3271
|
"note": null,
|
|
3149
3272
|
"license": "free",
|
|
3150
3273
|
"license_note": null,
|
|
@@ -3178,6 +3301,9 @@
|
|
|
3178
3301
|
"fixable": false,
|
|
3179
3302
|
"suppressible": true,
|
|
3180
3303
|
"suppress_comment": "// fallow-ignore-next-line unused-component-output",
|
|
3304
|
+
"default_severity": "warn",
|
|
3305
|
+
"opt_in": false,
|
|
3306
|
+
"frameworks": [],
|
|
3181
3307
|
"note": null,
|
|
3182
3308
|
"license": "free",
|
|
3183
3309
|
"license_note": null,
|
|
@@ -3211,6 +3337,9 @@
|
|
|
3211
3337
|
"fixable": false,
|
|
3212
3338
|
"suppressible": true,
|
|
3213
3339
|
"suppress_comment": "// fallow-ignore-next-line unused-svelte-event",
|
|
3340
|
+
"default_severity": "warn",
|
|
3341
|
+
"opt_in": false,
|
|
3342
|
+
"frameworks": [],
|
|
3214
3343
|
"note": null,
|
|
3215
3344
|
"license": "free",
|
|
3216
3345
|
"license_note": null,
|
|
@@ -3244,6 +3373,9 @@
|
|
|
3244
3373
|
"fixable": false,
|
|
3245
3374
|
"suppressible": true,
|
|
3246
3375
|
"suppress_comment": "// fallow-ignore-next-line unused-server-action",
|
|
3376
|
+
"default_severity": "warn",
|
|
3377
|
+
"opt_in": false,
|
|
3378
|
+
"frameworks": [],
|
|
3247
3379
|
"note": null,
|
|
3248
3380
|
"license": "free",
|
|
3249
3381
|
"license_note": null,
|
|
@@ -3277,6 +3409,9 @@
|
|
|
3277
3409
|
"fixable": false,
|
|
3278
3410
|
"suppressible": true,
|
|
3279
3411
|
"suppress_comment": "// fallow-ignore-next-line unused-load-data-key",
|
|
3412
|
+
"default_severity": "warn",
|
|
3413
|
+
"opt_in": false,
|
|
3414
|
+
"frameworks": [],
|
|
3280
3415
|
"note": null,
|
|
3281
3416
|
"license": "free",
|
|
3282
3417
|
"license_note": null,
|
|
@@ -3306,6 +3441,9 @@
|
|
|
3306
3441
|
"fixable": false,
|
|
3307
3442
|
"suppressible": true,
|
|
3308
3443
|
"suppress_comment": "// fallow-ignore-next-line prop-drilling",
|
|
3444
|
+
"default_severity": "off",
|
|
3445
|
+
"opt_in": true,
|
|
3446
|
+
"frameworks": [],
|
|
3309
3447
|
"note": "Opt-in: set rules.prop-drilling to warn or error to enable. Defaults to off.",
|
|
3310
3448
|
"license": "free",
|
|
3311
3449
|
"license_note": null,
|
|
@@ -3337,6 +3475,9 @@
|
|
|
3337
3475
|
"fixable": false,
|
|
3338
3476
|
"suppressible": true,
|
|
3339
3477
|
"suppress_comment": "// fallow-ignore-next-line thin-wrapper",
|
|
3478
|
+
"default_severity": "off",
|
|
3479
|
+
"opt_in": true,
|
|
3480
|
+
"frameworks": [],
|
|
3340
3481
|
"note": "Opt-in: set rules.thin-wrapper to warn or error to enable. Defaults to off.",
|
|
3341
3482
|
"license": "free",
|
|
3342
3483
|
"license_note": null,
|
|
@@ -3368,6 +3509,9 @@
|
|
|
3368
3509
|
"fixable": false,
|
|
3369
3510
|
"suppressible": true,
|
|
3370
3511
|
"suppress_comment": "// fallow-ignore-next-line duplicate-prop-shape",
|
|
3512
|
+
"default_severity": "off",
|
|
3513
|
+
"opt_in": true,
|
|
3514
|
+
"frameworks": [],
|
|
3371
3515
|
"note": "Opt-in: set rules.duplicate-prop-shape to warn or error to enable. Defaults to off.",
|
|
3372
3516
|
"license": "free",
|
|
3373
3517
|
"license_note": null,
|
|
@@ -3401,6 +3545,11 @@
|
|
|
3401
3545
|
"fixable": false,
|
|
3402
3546
|
"suppressible": true,
|
|
3403
3547
|
"suppress_comment": "// fallow-ignore-file route-collision",
|
|
3548
|
+
"default_severity": "error",
|
|
3549
|
+
"opt_in": false,
|
|
3550
|
+
"frameworks": [
|
|
3551
|
+
"next"
|
|
3552
|
+
],
|
|
3404
3553
|
"note": null,
|
|
3405
3554
|
"license": "free",
|
|
3406
3555
|
"license_note": null,
|
|
@@ -3434,6 +3583,11 @@
|
|
|
3434
3583
|
"fixable": false,
|
|
3435
3584
|
"suppressible": true,
|
|
3436
3585
|
"suppress_comment": "// fallow-ignore-file dynamic-segment-name-conflict",
|
|
3586
|
+
"default_severity": "error",
|
|
3587
|
+
"opt_in": false,
|
|
3588
|
+
"frameworks": [
|
|
3589
|
+
"next"
|
|
3590
|
+
],
|
|
3437
3591
|
"note": null,
|
|
3438
3592
|
"license": "free",
|
|
3439
3593
|
"license_note": null,
|
|
@@ -3461,6 +3615,9 @@
|
|
|
3461
3615
|
"fixable": false,
|
|
3462
3616
|
"suppressible": true,
|
|
3463
3617
|
"suppress_comment": "// fallow-ignore-next-line complexity",
|
|
3618
|
+
"default_severity": null,
|
|
3619
|
+
"opt_in": null,
|
|
3620
|
+
"frameworks": [],
|
|
3464
3621
|
"note": null,
|
|
3465
3622
|
"license": "free",
|
|
3466
3623
|
"license_note": null,
|
|
@@ -3488,6 +3645,9 @@
|
|
|
3488
3645
|
"fixable": false,
|
|
3489
3646
|
"suppressible": true,
|
|
3490
3647
|
"suppress_comment": "// fallow-ignore-next-line complexity",
|
|
3648
|
+
"default_severity": null,
|
|
3649
|
+
"opt_in": null,
|
|
3650
|
+
"frameworks": [],
|
|
3491
3651
|
"note": null,
|
|
3492
3652
|
"license": "free",
|
|
3493
3653
|
"license_note": null,
|
|
@@ -3515,6 +3675,9 @@
|
|
|
3515
3675
|
"fixable": false,
|
|
3516
3676
|
"suppressible": true,
|
|
3517
3677
|
"suppress_comment": "// fallow-ignore-next-line complexity",
|
|
3678
|
+
"default_severity": null,
|
|
3679
|
+
"opt_in": null,
|
|
3680
|
+
"frameworks": [],
|
|
3518
3681
|
"note": null,
|
|
3519
3682
|
"license": "free",
|
|
3520
3683
|
"license_note": null,
|
|
@@ -3542,6 +3705,9 @@
|
|
|
3542
3705
|
"fixable": false,
|
|
3543
3706
|
"suppressible": true,
|
|
3544
3707
|
"suppress_comment": "// fallow-ignore-next-line complexity",
|
|
3708
|
+
"default_severity": null,
|
|
3709
|
+
"opt_in": null,
|
|
3710
|
+
"frameworks": [],
|
|
3545
3711
|
"note": null,
|
|
3546
3712
|
"license": "free",
|
|
3547
3713
|
"license_note": null,
|
|
@@ -3569,6 +3735,9 @@
|
|
|
3569
3735
|
"fixable": false,
|
|
3570
3736
|
"suppressible": false,
|
|
3571
3737
|
"suppress_comment": null,
|
|
3738
|
+
"default_severity": null,
|
|
3739
|
+
"opt_in": null,
|
|
3740
|
+
"frameworks": [],
|
|
3572
3741
|
"note": null,
|
|
3573
3742
|
"license": "free",
|
|
3574
3743
|
"license_note": null,
|
|
@@ -3596,6 +3765,9 @@
|
|
|
3596
3765
|
"fixable": false,
|
|
3597
3766
|
"suppressible": true,
|
|
3598
3767
|
"suppress_comment": "// fallow-ignore-next-line css-token-drift",
|
|
3768
|
+
"default_severity": "warn",
|
|
3769
|
+
"opt_in": false,
|
|
3770
|
+
"frameworks": [],
|
|
3599
3771
|
"note": null,
|
|
3600
3772
|
"license": "free",
|
|
3601
3773
|
"license_note": null,
|
|
@@ -3623,6 +3795,9 @@
|
|
|
3623
3795
|
"fixable": false,
|
|
3624
3796
|
"suppressible": true,
|
|
3625
3797
|
"suppress_comment": "// fallow-ignore-next-line css-duplicate-block",
|
|
3798
|
+
"default_severity": "warn",
|
|
3799
|
+
"opt_in": false,
|
|
3800
|
+
"frameworks": [],
|
|
3626
3801
|
"note": null,
|
|
3627
3802
|
"license": "free",
|
|
3628
3803
|
"license_note": null,
|
|
@@ -3650,6 +3825,9 @@
|
|
|
3650
3825
|
"fixable": false,
|
|
3651
3826
|
"suppressible": true,
|
|
3652
3827
|
"suppress_comment": "// fallow-ignore-next-line css-selector-complexity",
|
|
3828
|
+
"default_severity": "warn",
|
|
3829
|
+
"opt_in": false,
|
|
3830
|
+
"frameworks": [],
|
|
3653
3831
|
"note": null,
|
|
3654
3832
|
"license": "free",
|
|
3655
3833
|
"license_note": null,
|
|
@@ -3677,6 +3855,9 @@
|
|
|
3677
3855
|
"fixable": false,
|
|
3678
3856
|
"suppressible": true,
|
|
3679
3857
|
"suppress_comment": "// fallow-ignore-next-line css-dead-surface",
|
|
3858
|
+
"default_severity": "warn",
|
|
3859
|
+
"opt_in": false,
|
|
3860
|
+
"frameworks": [],
|
|
3680
3861
|
"note": null,
|
|
3681
3862
|
"license": "free",
|
|
3682
3863
|
"license_note": null,
|
|
@@ -3704,6 +3885,9 @@
|
|
|
3704
3885
|
"fixable": false,
|
|
3705
3886
|
"suppressible": true,
|
|
3706
3887
|
"suppress_comment": "// fallow-ignore-next-line css-broken-reference",
|
|
3888
|
+
"default_severity": "warn",
|
|
3889
|
+
"opt_in": false,
|
|
3890
|
+
"frameworks": [],
|
|
3707
3891
|
"note": null,
|
|
3708
3892
|
"license": "free",
|
|
3709
3893
|
"license_note": null,
|
|
@@ -3731,6 +3915,9 @@
|
|
|
3731
3915
|
"fixable": false,
|
|
3732
3916
|
"suppressible": true,
|
|
3733
3917
|
"suppress_comment": "// fallow-ignore-file coverage-gaps",
|
|
3918
|
+
"default_severity": "off",
|
|
3919
|
+
"opt_in": true,
|
|
3920
|
+
"frameworks": [],
|
|
3734
3921
|
"note": null,
|
|
3735
3922
|
"license": "free",
|
|
3736
3923
|
"license_note": null,
|
|
@@ -3758,6 +3945,9 @@
|
|
|
3758
3945
|
"fixable": false,
|
|
3759
3946
|
"suppressible": true,
|
|
3760
3947
|
"suppress_comment": "// fallow-ignore-file coverage-gaps",
|
|
3948
|
+
"default_severity": "off",
|
|
3949
|
+
"opt_in": true,
|
|
3950
|
+
"frameworks": [],
|
|
3761
3951
|
"note": null,
|
|
3762
3952
|
"license": "free",
|
|
3763
3953
|
"license_note": null,
|
|
@@ -3785,6 +3975,9 @@
|
|
|
3785
3975
|
"fixable": false,
|
|
3786
3976
|
"suppressible": false,
|
|
3787
3977
|
"suppress_comment": null,
|
|
3978
|
+
"default_severity": null,
|
|
3979
|
+
"opt_in": null,
|
|
3980
|
+
"frameworks": [],
|
|
3788
3981
|
"note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
|
|
3789
3982
|
"license": "freemium",
|
|
3790
3983
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
@@ -3812,6 +4005,9 @@
|
|
|
3812
4005
|
"fixable": false,
|
|
3813
4006
|
"suppressible": false,
|
|
3814
4007
|
"suppress_comment": null,
|
|
4008
|
+
"default_severity": null,
|
|
4009
|
+
"opt_in": null,
|
|
4010
|
+
"frameworks": [],
|
|
3815
4011
|
"note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
|
|
3816
4012
|
"license": "freemium",
|
|
3817
4013
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
@@ -3839,6 +4035,9 @@
|
|
|
3839
4035
|
"fixable": false,
|
|
3840
4036
|
"suppressible": false,
|
|
3841
4037
|
"suppress_comment": null,
|
|
4038
|
+
"default_severity": null,
|
|
4039
|
+
"opt_in": null,
|
|
4040
|
+
"frameworks": [],
|
|
3842
4041
|
"note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
|
|
3843
4042
|
"license": "freemium",
|
|
3844
4043
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
@@ -3866,6 +4065,9 @@
|
|
|
3866
4065
|
"fixable": false,
|
|
3867
4066
|
"suppressible": false,
|
|
3868
4067
|
"suppress_comment": null,
|
|
4068
|
+
"default_severity": null,
|
|
4069
|
+
"opt_in": null,
|
|
4070
|
+
"frameworks": [],
|
|
3869
4071
|
"note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
|
|
3870
4072
|
"license": "freemium",
|
|
3871
4073
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
@@ -3893,6 +4095,9 @@
|
|
|
3893
4095
|
"fixable": false,
|
|
3894
4096
|
"suppressible": false,
|
|
3895
4097
|
"suppress_comment": null,
|
|
4098
|
+
"default_severity": null,
|
|
4099
|
+
"opt_in": null,
|
|
4100
|
+
"frameworks": [],
|
|
3896
4101
|
"note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
|
|
3897
4102
|
"license": "freemium",
|
|
3898
4103
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
@@ -3920,6 +4125,9 @@
|
|
|
3920
4125
|
"fixable": false,
|
|
3921
4126
|
"suppressible": false,
|
|
3922
4127
|
"suppress_comment": null,
|
|
4128
|
+
"default_severity": null,
|
|
4129
|
+
"opt_in": null,
|
|
4130
|
+
"frameworks": [],
|
|
3923
4131
|
"note": "Produced by fallow coverage analyze",
|
|
3924
4132
|
"license": "freemium",
|
|
3925
4133
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
@@ -3947,6 +4155,9 @@
|
|
|
3947
4155
|
"fixable": false,
|
|
3948
4156
|
"suppressible": false,
|
|
3949
4157
|
"suppress_comment": null,
|
|
4158
|
+
"default_severity": null,
|
|
4159
|
+
"opt_in": null,
|
|
4160
|
+
"frameworks": [],
|
|
3950
4161
|
"note": "Produced by fallow coverage analyze",
|
|
3951
4162
|
"license": "freemium",
|
|
3952
4163
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
@@ -3974,6 +4185,9 @@
|
|
|
3974
4185
|
"fixable": false,
|
|
3975
4186
|
"suppressible": false,
|
|
3976
4187
|
"suppress_comment": null,
|
|
4188
|
+
"default_severity": null,
|
|
4189
|
+
"opt_in": null,
|
|
4190
|
+
"frameworks": [],
|
|
3977
4191
|
"note": "Produced by fallow coverage analyze",
|
|
3978
4192
|
"license": "freemium",
|
|
3979
4193
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
@@ -4001,6 +4215,9 @@
|
|
|
4001
4215
|
"fixable": false,
|
|
4002
4216
|
"suppressible": false,
|
|
4003
4217
|
"suppress_comment": null,
|
|
4218
|
+
"default_severity": null,
|
|
4219
|
+
"opt_in": null,
|
|
4220
|
+
"frameworks": [],
|
|
4004
4221
|
"note": "Produced by fallow coverage analyze",
|
|
4005
4222
|
"license": "freemium",
|
|
4006
4223
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
@@ -4028,6 +4245,9 @@
|
|
|
4028
4245
|
"fixable": false,
|
|
4029
4246
|
"suppressible": true,
|
|
4030
4247
|
"suppress_comment": "// fallow-ignore-next-line code-duplication",
|
|
4248
|
+
"default_severity": null,
|
|
4249
|
+
"opt_in": null,
|
|
4250
|
+
"frameworks": [],
|
|
4031
4251
|
"note": "Reported by fallow dupes (and bare fallow / fallow audit)",
|
|
4032
4252
|
"license": "free",
|
|
4033
4253
|
"license_note": null,
|
|
@@ -4055,6 +4275,9 @@
|
|
|
4055
4275
|
"fixable": false,
|
|
4056
4276
|
"suppressible": true,
|
|
4057
4277
|
"suppress_comment": "// fallow-ignore-next-line feature-flag",
|
|
4278
|
+
"default_severity": "off",
|
|
4279
|
+
"opt_in": true,
|
|
4280
|
+
"frameworks": [],
|
|
4058
4281
|
"note": "Reported by fallow flags",
|
|
4059
4282
|
"license": "free",
|
|
4060
4283
|
"license_note": null,
|
|
@@ -4082,6 +4305,9 @@
|
|
|
4082
4305
|
"fixable": false,
|
|
4083
4306
|
"suppressible": true,
|
|
4084
4307
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4308
|
+
"default_severity": "off",
|
|
4309
|
+
"opt_in": true,
|
|
4310
|
+
"frameworks": [],
|
|
4085
4311
|
"note": null,
|
|
4086
4312
|
"license": "free",
|
|
4087
4313
|
"license_note": null,
|
|
@@ -4109,6 +4335,9 @@
|
|
|
4109
4335
|
"fixable": false,
|
|
4110
4336
|
"suppressible": true,
|
|
4111
4337
|
"suppress_comment": "// fallow-ignore-file security-client-server-leak",
|
|
4338
|
+
"default_severity": "off",
|
|
4339
|
+
"opt_in": true,
|
|
4340
|
+
"frameworks": [],
|
|
4112
4341
|
"note": null,
|
|
4113
4342
|
"license": "free",
|
|
4114
4343
|
"license_note": null,
|
|
@@ -4136,6 +4365,9 @@
|
|
|
4136
4365
|
"fixable": false,
|
|
4137
4366
|
"suppressible": true,
|
|
4138
4367
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4368
|
+
"default_severity": "off",
|
|
4369
|
+
"opt_in": true,
|
|
4370
|
+
"frameworks": [],
|
|
4139
4371
|
"note": "Include-required category: enable via security.categories.include",
|
|
4140
4372
|
"license": "free",
|
|
4141
4373
|
"license_note": null,
|
|
@@ -4163,6 +4395,9 @@
|
|
|
4163
4395
|
"fixable": false,
|
|
4164
4396
|
"suppressible": true,
|
|
4165
4397
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4398
|
+
"default_severity": "off",
|
|
4399
|
+
"opt_in": true,
|
|
4400
|
+
"frameworks": [],
|
|
4166
4401
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4167
4402
|
"license": "free",
|
|
4168
4403
|
"license_note": null,
|
|
@@ -4190,6 +4425,9 @@
|
|
|
4190
4425
|
"fixable": false,
|
|
4191
4426
|
"suppressible": true,
|
|
4192
4427
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4428
|
+
"default_severity": "off",
|
|
4429
|
+
"opt_in": true,
|
|
4430
|
+
"frameworks": [],
|
|
4193
4431
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4194
4432
|
"license": "free",
|
|
4195
4433
|
"license_note": null,
|
|
@@ -4217,6 +4455,9 @@
|
|
|
4217
4455
|
"fixable": false,
|
|
4218
4456
|
"suppressible": true,
|
|
4219
4457
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4458
|
+
"default_severity": "off",
|
|
4459
|
+
"opt_in": true,
|
|
4460
|
+
"frameworks": [],
|
|
4220
4461
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4221
4462
|
"license": "free",
|
|
4222
4463
|
"license_note": null,
|
|
@@ -4244,6 +4485,9 @@
|
|
|
4244
4485
|
"fixable": false,
|
|
4245
4486
|
"suppressible": true,
|
|
4246
4487
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4488
|
+
"default_severity": "off",
|
|
4489
|
+
"opt_in": true,
|
|
4490
|
+
"frameworks": [],
|
|
4247
4491
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4248
4492
|
"license": "free",
|
|
4249
4493
|
"license_note": null,
|
|
@@ -4271,6 +4515,9 @@
|
|
|
4271
4515
|
"fixable": false,
|
|
4272
4516
|
"suppressible": true,
|
|
4273
4517
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4518
|
+
"default_severity": "off",
|
|
4519
|
+
"opt_in": true,
|
|
4520
|
+
"frameworks": [],
|
|
4274
4521
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4275
4522
|
"license": "free",
|
|
4276
4523
|
"license_note": null,
|
|
@@ -4298,6 +4545,9 @@
|
|
|
4298
4545
|
"fixable": false,
|
|
4299
4546
|
"suppressible": true,
|
|
4300
4547
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4548
|
+
"default_severity": "off",
|
|
4549
|
+
"opt_in": true,
|
|
4550
|
+
"frameworks": [],
|
|
4301
4551
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4302
4552
|
"license": "free",
|
|
4303
4553
|
"license_note": null,
|
|
@@ -4325,6 +4575,9 @@
|
|
|
4325
4575
|
"fixable": false,
|
|
4326
4576
|
"suppressible": true,
|
|
4327
4577
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4578
|
+
"default_severity": "off",
|
|
4579
|
+
"opt_in": true,
|
|
4580
|
+
"frameworks": [],
|
|
4328
4581
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4329
4582
|
"license": "free",
|
|
4330
4583
|
"license_note": null,
|
|
@@ -4352,6 +4605,9 @@
|
|
|
4352
4605
|
"fixable": false,
|
|
4353
4606
|
"suppressible": true,
|
|
4354
4607
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4608
|
+
"default_severity": "off",
|
|
4609
|
+
"opt_in": true,
|
|
4610
|
+
"frameworks": [],
|
|
4355
4611
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4356
4612
|
"license": "free",
|
|
4357
4613
|
"license_note": null,
|
|
@@ -4379,6 +4635,9 @@
|
|
|
4379
4635
|
"fixable": false,
|
|
4380
4636
|
"suppressible": true,
|
|
4381
4637
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4638
|
+
"default_severity": "off",
|
|
4639
|
+
"opt_in": true,
|
|
4640
|
+
"frameworks": [],
|
|
4382
4641
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4383
4642
|
"license": "free",
|
|
4384
4643
|
"license_note": null,
|
|
@@ -4406,6 +4665,9 @@
|
|
|
4406
4665
|
"fixable": false,
|
|
4407
4666
|
"suppressible": true,
|
|
4408
4667
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4668
|
+
"default_severity": "off",
|
|
4669
|
+
"opt_in": true,
|
|
4670
|
+
"frameworks": [],
|
|
4409
4671
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4410
4672
|
"license": "free",
|
|
4411
4673
|
"license_note": null,
|
|
@@ -4433,6 +4695,9 @@
|
|
|
4433
4695
|
"fixable": false,
|
|
4434
4696
|
"suppressible": true,
|
|
4435
4697
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4698
|
+
"default_severity": "off",
|
|
4699
|
+
"opt_in": true,
|
|
4700
|
+
"frameworks": [],
|
|
4436
4701
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4437
4702
|
"license": "free",
|
|
4438
4703
|
"license_note": null,
|
|
@@ -4460,6 +4725,9 @@
|
|
|
4460
4725
|
"fixable": false,
|
|
4461
4726
|
"suppressible": true,
|
|
4462
4727
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4728
|
+
"default_severity": "off",
|
|
4729
|
+
"opt_in": true,
|
|
4730
|
+
"frameworks": [],
|
|
4463
4731
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4464
4732
|
"license": "free",
|
|
4465
4733
|
"license_note": null,
|
|
@@ -4487,6 +4755,9 @@
|
|
|
4487
4755
|
"fixable": false,
|
|
4488
4756
|
"suppressible": true,
|
|
4489
4757
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4758
|
+
"default_severity": "off",
|
|
4759
|
+
"opt_in": true,
|
|
4760
|
+
"frameworks": [],
|
|
4490
4761
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4491
4762
|
"license": "free",
|
|
4492
4763
|
"license_note": null,
|
|
@@ -4514,6 +4785,9 @@
|
|
|
4514
4785
|
"fixable": false,
|
|
4515
4786
|
"suppressible": true,
|
|
4516
4787
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4788
|
+
"default_severity": "off",
|
|
4789
|
+
"opt_in": true,
|
|
4790
|
+
"frameworks": [],
|
|
4517
4791
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4518
4792
|
"license": "free",
|
|
4519
4793
|
"license_note": null,
|
|
@@ -4541,6 +4815,9 @@
|
|
|
4541
4815
|
"fixable": false,
|
|
4542
4816
|
"suppressible": true,
|
|
4543
4817
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4818
|
+
"default_severity": "off",
|
|
4819
|
+
"opt_in": true,
|
|
4820
|
+
"frameworks": [],
|
|
4544
4821
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4545
4822
|
"license": "free",
|
|
4546
4823
|
"license_note": null,
|
|
@@ -4568,6 +4845,9 @@
|
|
|
4568
4845
|
"fixable": false,
|
|
4569
4846
|
"suppressible": true,
|
|
4570
4847
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4848
|
+
"default_severity": "off",
|
|
4849
|
+
"opt_in": true,
|
|
4850
|
+
"frameworks": [],
|
|
4571
4851
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4572
4852
|
"license": "free",
|
|
4573
4853
|
"license_note": null,
|
|
@@ -4595,6 +4875,9 @@
|
|
|
4595
4875
|
"fixable": false,
|
|
4596
4876
|
"suppressible": true,
|
|
4597
4877
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4878
|
+
"default_severity": "off",
|
|
4879
|
+
"opt_in": true,
|
|
4880
|
+
"frameworks": [],
|
|
4598
4881
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4599
4882
|
"license": "free",
|
|
4600
4883
|
"license_note": null,
|
|
@@ -4622,6 +4905,9 @@
|
|
|
4622
4905
|
"fixable": false,
|
|
4623
4906
|
"suppressible": true,
|
|
4624
4907
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4908
|
+
"default_severity": "off",
|
|
4909
|
+
"opt_in": true,
|
|
4910
|
+
"frameworks": [],
|
|
4625
4911
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4626
4912
|
"license": "free",
|
|
4627
4913
|
"license_note": null,
|
|
@@ -4649,6 +4935,9 @@
|
|
|
4649
4935
|
"fixable": false,
|
|
4650
4936
|
"suppressible": true,
|
|
4651
4937
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4938
|
+
"default_severity": "off",
|
|
4939
|
+
"opt_in": true,
|
|
4940
|
+
"frameworks": [],
|
|
4652
4941
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4653
4942
|
"license": "free",
|
|
4654
4943
|
"license_note": null,
|
|
@@ -4676,6 +4965,9 @@
|
|
|
4676
4965
|
"fixable": false,
|
|
4677
4966
|
"suppressible": true,
|
|
4678
4967
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4968
|
+
"default_severity": "off",
|
|
4969
|
+
"opt_in": true,
|
|
4970
|
+
"frameworks": [],
|
|
4679
4971
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4680
4972
|
"license": "free",
|
|
4681
4973
|
"license_note": null,
|
|
@@ -4703,6 +4995,9 @@
|
|
|
4703
4995
|
"fixable": false,
|
|
4704
4996
|
"suppressible": true,
|
|
4705
4997
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
4998
|
+
"default_severity": "off",
|
|
4999
|
+
"opt_in": true,
|
|
5000
|
+
"frameworks": [],
|
|
4706
5001
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4707
5002
|
"license": "free",
|
|
4708
5003
|
"license_note": null,
|
|
@@ -4730,6 +5025,9 @@
|
|
|
4730
5025
|
"fixable": false,
|
|
4731
5026
|
"suppressible": true,
|
|
4732
5027
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5028
|
+
"default_severity": "off",
|
|
5029
|
+
"opt_in": true,
|
|
5030
|
+
"frameworks": [],
|
|
4733
5031
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4734
5032
|
"license": "free",
|
|
4735
5033
|
"license_note": null,
|
|
@@ -4757,6 +5055,9 @@
|
|
|
4757
5055
|
"fixable": false,
|
|
4758
5056
|
"suppressible": true,
|
|
4759
5057
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5058
|
+
"default_severity": "off",
|
|
5059
|
+
"opt_in": true,
|
|
5060
|
+
"frameworks": [],
|
|
4760
5061
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4761
5062
|
"license": "free",
|
|
4762
5063
|
"license_note": null,
|
|
@@ -4784,6 +5085,9 @@
|
|
|
4784
5085
|
"fixable": false,
|
|
4785
5086
|
"suppressible": true,
|
|
4786
5087
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5088
|
+
"default_severity": "off",
|
|
5089
|
+
"opt_in": true,
|
|
5090
|
+
"frameworks": [],
|
|
4787
5091
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4788
5092
|
"license": "free",
|
|
4789
5093
|
"license_note": null,
|
|
@@ -4811,6 +5115,9 @@
|
|
|
4811
5115
|
"fixable": false,
|
|
4812
5116
|
"suppressible": true,
|
|
4813
5117
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5118
|
+
"default_severity": "off",
|
|
5119
|
+
"opt_in": true,
|
|
5120
|
+
"frameworks": [],
|
|
4814
5121
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4815
5122
|
"license": "free",
|
|
4816
5123
|
"license_note": null,
|
|
@@ -4838,6 +5145,9 @@
|
|
|
4838
5145
|
"fixable": false,
|
|
4839
5146
|
"suppressible": true,
|
|
4840
5147
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5148
|
+
"default_severity": "off",
|
|
5149
|
+
"opt_in": true,
|
|
5150
|
+
"frameworks": [],
|
|
4841
5151
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4842
5152
|
"license": "free",
|
|
4843
5153
|
"license_note": null,
|
|
@@ -4865,6 +5175,9 @@
|
|
|
4865
5175
|
"fixable": false,
|
|
4866
5176
|
"suppressible": true,
|
|
4867
5177
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5178
|
+
"default_severity": "off",
|
|
5179
|
+
"opt_in": true,
|
|
5180
|
+
"frameworks": [],
|
|
4868
5181
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4869
5182
|
"license": "free",
|
|
4870
5183
|
"license_note": null,
|
|
@@ -4892,6 +5205,9 @@
|
|
|
4892
5205
|
"fixable": false,
|
|
4893
5206
|
"suppressible": true,
|
|
4894
5207
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5208
|
+
"default_severity": "off",
|
|
5209
|
+
"opt_in": true,
|
|
5210
|
+
"frameworks": [],
|
|
4895
5211
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4896
5212
|
"license": "free",
|
|
4897
5213
|
"license_note": null,
|
|
@@ -4919,6 +5235,9 @@
|
|
|
4919
5235
|
"fixable": false,
|
|
4920
5236
|
"suppressible": true,
|
|
4921
5237
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5238
|
+
"default_severity": "off",
|
|
5239
|
+
"opt_in": true,
|
|
5240
|
+
"frameworks": [],
|
|
4922
5241
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4923
5242
|
"license": "free",
|
|
4924
5243
|
"license_note": null,
|
|
@@ -4946,6 +5265,9 @@
|
|
|
4946
5265
|
"fixable": false,
|
|
4947
5266
|
"suppressible": true,
|
|
4948
5267
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5268
|
+
"default_severity": "off",
|
|
5269
|
+
"opt_in": true,
|
|
5270
|
+
"frameworks": [],
|
|
4949
5271
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4950
5272
|
"license": "free",
|
|
4951
5273
|
"license_note": null,
|
|
@@ -4973,6 +5295,9 @@
|
|
|
4973
5295
|
"fixable": false,
|
|
4974
5296
|
"suppressible": true,
|
|
4975
5297
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5298
|
+
"default_severity": "off",
|
|
5299
|
+
"opt_in": true,
|
|
5300
|
+
"frameworks": [],
|
|
4976
5301
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4977
5302
|
"license": "free",
|
|
4978
5303
|
"license_note": null,
|
|
@@ -5000,6 +5325,9 @@
|
|
|
5000
5325
|
"fixable": false,
|
|
5001
5326
|
"suppressible": true,
|
|
5002
5327
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5328
|
+
"default_severity": "off",
|
|
5329
|
+
"opt_in": true,
|
|
5330
|
+
"frameworks": [],
|
|
5003
5331
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5004
5332
|
"license": "free",
|
|
5005
5333
|
"license_note": null,
|
|
@@ -5027,6 +5355,9 @@
|
|
|
5027
5355
|
"fixable": false,
|
|
5028
5356
|
"suppressible": true,
|
|
5029
5357
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5358
|
+
"default_severity": "off",
|
|
5359
|
+
"opt_in": true,
|
|
5360
|
+
"frameworks": [],
|
|
5030
5361
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5031
5362
|
"license": "free",
|
|
5032
5363
|
"license_note": null,
|
|
@@ -5054,6 +5385,9 @@
|
|
|
5054
5385
|
"fixable": false,
|
|
5055
5386
|
"suppressible": true,
|
|
5056
5387
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5388
|
+
"default_severity": "off",
|
|
5389
|
+
"opt_in": true,
|
|
5390
|
+
"frameworks": [],
|
|
5057
5391
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5058
5392
|
"license": "free",
|
|
5059
5393
|
"license_note": null,
|
|
@@ -5081,6 +5415,9 @@
|
|
|
5081
5415
|
"fixable": false,
|
|
5082
5416
|
"suppressible": true,
|
|
5083
5417
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5418
|
+
"default_severity": "off",
|
|
5419
|
+
"opt_in": true,
|
|
5420
|
+
"frameworks": [],
|
|
5084
5421
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5085
5422
|
"license": "free",
|
|
5086
5423
|
"license_note": null,
|
|
@@ -5108,6 +5445,9 @@
|
|
|
5108
5445
|
"fixable": false,
|
|
5109
5446
|
"suppressible": true,
|
|
5110
5447
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5448
|
+
"default_severity": "off",
|
|
5449
|
+
"opt_in": true,
|
|
5450
|
+
"frameworks": [],
|
|
5111
5451
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5112
5452
|
"license": "free",
|
|
5113
5453
|
"license_note": null,
|
|
@@ -5135,6 +5475,9 @@
|
|
|
5135
5475
|
"fixable": false,
|
|
5136
5476
|
"suppressible": true,
|
|
5137
5477
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5478
|
+
"default_severity": "off",
|
|
5479
|
+
"opt_in": true,
|
|
5480
|
+
"frameworks": [],
|
|
5138
5481
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5139
5482
|
"license": "free",
|
|
5140
5483
|
"license_note": null,
|
|
@@ -5162,6 +5505,9 @@
|
|
|
5162
5505
|
"fixable": false,
|
|
5163
5506
|
"suppressible": true,
|
|
5164
5507
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5508
|
+
"default_severity": "off",
|
|
5509
|
+
"opt_in": true,
|
|
5510
|
+
"frameworks": [],
|
|
5165
5511
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5166
5512
|
"license": "free",
|
|
5167
5513
|
"license_note": null,
|
|
@@ -5189,6 +5535,9 @@
|
|
|
5189
5535
|
"fixable": false,
|
|
5190
5536
|
"suppressible": true,
|
|
5191
5537
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5538
|
+
"default_severity": "off",
|
|
5539
|
+
"opt_in": true,
|
|
5540
|
+
"frameworks": [],
|
|
5192
5541
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5193
5542
|
"license": "free",
|
|
5194
5543
|
"license_note": null,
|
|
@@ -5216,6 +5565,9 @@
|
|
|
5216
5565
|
"fixable": false,
|
|
5217
5566
|
"suppressible": true,
|
|
5218
5567
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5568
|
+
"default_severity": "off",
|
|
5569
|
+
"opt_in": true,
|
|
5570
|
+
"frameworks": [],
|
|
5219
5571
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5220
5572
|
"license": "free",
|
|
5221
5573
|
"license_note": null,
|
|
@@ -5243,6 +5595,9 @@
|
|
|
5243
5595
|
"fixable": false,
|
|
5244
5596
|
"suppressible": true,
|
|
5245
5597
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5598
|
+
"default_severity": "off",
|
|
5599
|
+
"opt_in": true,
|
|
5600
|
+
"frameworks": [],
|
|
5246
5601
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5247
5602
|
"license": "free",
|
|
5248
5603
|
"license_note": null,
|
|
@@ -5270,6 +5625,9 @@
|
|
|
5270
5625
|
"fixable": false,
|
|
5271
5626
|
"suppressible": true,
|
|
5272
5627
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5628
|
+
"default_severity": "off",
|
|
5629
|
+
"opt_in": true,
|
|
5630
|
+
"frameworks": [],
|
|
5273
5631
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5274
5632
|
"license": "free",
|
|
5275
5633
|
"license_note": null,
|
|
@@ -5297,6 +5655,9 @@
|
|
|
5297
5655
|
"fixable": false,
|
|
5298
5656
|
"suppressible": true,
|
|
5299
5657
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5658
|
+
"default_severity": "off",
|
|
5659
|
+
"opt_in": true,
|
|
5660
|
+
"frameworks": [],
|
|
5300
5661
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5301
5662
|
"license": "free",
|
|
5302
5663
|
"license_note": null,
|
|
@@ -5324,6 +5685,9 @@
|
|
|
5324
5685
|
"fixable": false,
|
|
5325
5686
|
"suppressible": true,
|
|
5326
5687
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5688
|
+
"default_severity": "off",
|
|
5689
|
+
"opt_in": true,
|
|
5690
|
+
"frameworks": [],
|
|
5327
5691
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5328
5692
|
"license": "free",
|
|
5329
5693
|
"license_note": null,
|
|
@@ -5351,6 +5715,9 @@
|
|
|
5351
5715
|
"fixable": false,
|
|
5352
5716
|
"suppressible": true,
|
|
5353
5717
|
"suppress_comment": "// fallow-ignore-next-line security-sink",
|
|
5718
|
+
"default_severity": "off",
|
|
5719
|
+
"opt_in": true,
|
|
5720
|
+
"frameworks": [],
|
|
5354
5721
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5355
5722
|
"license": "free",
|
|
5356
5723
|
"license_note": null,
|
|
@@ -5434,14 +5801,481 @@
|
|
|
5434
5801
|
"warn",
|
|
5435
5802
|
"off"
|
|
5436
5803
|
],
|
|
5804
|
+
"field_notes": {
|
|
5805
|
+
"default_severity": "The rule's severity under zero config (error/warn/off). null means the finding is not gated by a rules.* severity (a metric or command-driven finding, or a security-catalogue row).",
|
|
5806
|
+
"opt_in": "true when the rule defaults to off and reports nothing until enabled. Enabling an opt_in rule blindly is the most common way to flood a repo with findings, so treat true as a deliberate decision.",
|
|
5807
|
+
"frameworks": "Non-empty ONLY when the rule's DETECTOR self-gates on that framework (it does nothing unless the framework is declared). An EMPTY array does NOT mean the rule is framework-agnostic: many rules are framework-relevant (see the description) yet fire on any matching syntax, so never disable a rule solely because frameworks is empty.",
|
|
5808
|
+
"config_key": "The canonical key under `rules` in the config file, i.e. rules.<config_key>. The `id` is an accepted alias. null for findings that are not configured via a rules.* severity."
|
|
5809
|
+
},
|
|
5810
|
+
"related_schemas": {
|
|
5811
|
+
"note": "This manifest lists RULES, capabilities, presets, and the taste catalog. To author a config FILE you also need its shape, which is a separate schema.",
|
|
5812
|
+
"config_schema_command": "fallow config-schema",
|
|
5813
|
+
"config_schema_note": "Full JSON Schema of the config file: every top-level key (rules, entry, ignorePatterns, workspaces, boundaries, duplicates, health, security, rulePacks, production, cache, ...) and its shape. entry and ignorePatterns are how you declare entry points and exclusions; fallow also auto-honors package.json exports/main/module for library public APIs.",
|
|
5814
|
+
"rule_pack_schema_command": "fallow rule-pack-schema",
|
|
5815
|
+
"rule_pack_schema_note": "JSON Schema for a declarative rule pack referenced from rulePacks.",
|
|
5816
|
+
"plugin_schema_command": "fallow plugin-schema",
|
|
5817
|
+
"plugin_schema_note": "JSON Schema for a user-authored external plugin (fallow-plugin-*.jsonc). Teach fallow about an unsupported framework declaratively: detection, entryPoints, alwaysUsed, usedExports, usedClassMembers, and manifestEntries (derive entry points from per-package manifest files).",
|
|
5818
|
+
"plugin_check_command": "fallow plugin-check",
|
|
5819
|
+
"plugin_check_note": "Read-only dry-run of your external plugins: reports which activated, which manifests each manifestEntries rule matched, what it seeded (with path-exists), and typed warnings (manifests-matched-none, when-excluded-all, field-path-unresolved, entries-empty, manifest-parse-failed, entry-outside-root, seeded-paths-missing). Run it after authoring a fallow-plugin-*.jsonc to verify it before a full analysis.",
|
|
5820
|
+
"config_files": [
|
|
5821
|
+
".fallowrc.json",
|
|
5822
|
+
".fallowrc.jsonc",
|
|
5823
|
+
"fallow.toml",
|
|
5824
|
+
".fallow.toml"
|
|
5825
|
+
]
|
|
5826
|
+
},
|
|
5827
|
+
"boundary_presets": [
|
|
5828
|
+
{
|
|
5829
|
+
"name": "layered",
|
|
5830
|
+
"description": "Classic layers: presentation depends on application depends on domain; infrastructure depends on domain and application.",
|
|
5831
|
+
"config": "boundaries.preset: \"layered\""
|
|
5832
|
+
},
|
|
5833
|
+
{
|
|
5834
|
+
"name": "hexagonal",
|
|
5835
|
+
"description": "Ports and adapters: adapters depend on ports, ports depend on the domain; the domain depends on nothing outward.",
|
|
5836
|
+
"config": "boundaries.preset: \"hexagonal\""
|
|
5837
|
+
},
|
|
5838
|
+
{
|
|
5839
|
+
"name": "feature-sliced",
|
|
5840
|
+
"description": "Feature-Sliced Design: app, pages, widgets, features, entities, shared; each layer may only import from the layers below it.",
|
|
5841
|
+
"config": "boundaries.preset: \"feature-sliced\""
|
|
5842
|
+
},
|
|
5843
|
+
{
|
|
5844
|
+
"name": "bulletproof",
|
|
5845
|
+
"description": "Bulletproof React: app and features depend on shared and server; features stay isolated from each other.",
|
|
5846
|
+
"config": "boundaries.preset: \"bulletproof\""
|
|
5847
|
+
}
|
|
5848
|
+
],
|
|
5849
|
+
"taste_choices": [
|
|
5850
|
+
{
|
|
5851
|
+
"id": "ci-strictness",
|
|
5852
|
+
"header": "CI gate",
|
|
5853
|
+
"prompt": "Should the cleanup rules that default to warn (unused dev/optional dependencies, component-level dead code, styling drift) fail CI, or stay advisory?",
|
|
5854
|
+
"tier": "taste",
|
|
5855
|
+
"first_run": true,
|
|
5856
|
+
"framework_gated": false,
|
|
5857
|
+
"config_paths": [
|
|
5858
|
+
"rules.unused-dev-dependencies",
|
|
5859
|
+
"rules.unused-optional-dependencies",
|
|
5860
|
+
"rules.stale-suppressions"
|
|
5861
|
+
],
|
|
5862
|
+
"default_summary": "These rules default to warn: reported, never failing CI. The structural rules (unused files/exports/deps, circular deps, unresolved imports, boundary violations) already default to error.",
|
|
5863
|
+
"options": [
|
|
5864
|
+
{
|
|
5865
|
+
"label": "Advisory",
|
|
5866
|
+
"effect": "Keep the warn-default rules at warn.",
|
|
5867
|
+
"tradeoff": "Cleanup drift is visible but never blocks a merge; the team addresses it on its own cadence."
|
|
5868
|
+
},
|
|
5869
|
+
{
|
|
5870
|
+
"label": "Strict",
|
|
5871
|
+
"effect": "Promote the warn-default cleanup rules to error.",
|
|
5872
|
+
"tradeoff": "A PR that adds unused dev deps or dead component surface fails CI; noisier on legacy code, tighter on new code."
|
|
5873
|
+
}
|
|
5874
|
+
]
|
|
5875
|
+
},
|
|
5876
|
+
{
|
|
5877
|
+
"id": "private-type-leak",
|
|
5878
|
+
"header": "API hygiene",
|
|
5879
|
+
"prompt": "Enable the opt-in private-type-leak check, which flags exported signatures that reference a same-file private type (a break for consumers)?",
|
|
5880
|
+
"tier": "taste",
|
|
5881
|
+
"first_run": true,
|
|
5882
|
+
"framework_gated": false,
|
|
5883
|
+
"config_paths": [
|
|
5884
|
+
"rules.private-type-leaks"
|
|
5885
|
+
],
|
|
5886
|
+
"default_summary": "Off by default: it is a lower-confidence API-hygiene check, so fallow does not enable it unless you opt in.",
|
|
5887
|
+
"options": [
|
|
5888
|
+
{
|
|
5889
|
+
"label": "Keep off",
|
|
5890
|
+
"effect": "Leave private-type-leak disabled.",
|
|
5891
|
+
"tradeoff": "No API-hygiene findings; a leaked private type in a public signature goes unflagged."
|
|
5892
|
+
},
|
|
5893
|
+
{
|
|
5894
|
+
"label": "Enable (warn)",
|
|
5895
|
+
"effect": "Set rules.private-type-leaks to warn.",
|
|
5896
|
+
"tradeoff": "Catches public signatures that reference private types; can be noisy on libraries with intentional internal-type re-use."
|
|
5897
|
+
}
|
|
5898
|
+
]
|
|
5899
|
+
},
|
|
5900
|
+
{
|
|
5901
|
+
"id": "dupes-sensitivity",
|
|
5902
|
+
"header": "Dupes",
|
|
5903
|
+
"prompt": "Code-duplication sensitivity (how large and how repeated a clone must be before it is reported).",
|
|
5904
|
+
"tier": "default",
|
|
5905
|
+
"first_run": false,
|
|
5906
|
+
"framework_gated": false,
|
|
5907
|
+
"config_paths": [
|
|
5908
|
+
"duplicates.mode",
|
|
5909
|
+
"duplicates.minTokens",
|
|
5910
|
+
"duplicates.minOccurrences"
|
|
5911
|
+
],
|
|
5912
|
+
"default_summary": "mild mode, minTokens 50, minOccurrences 2: reports moderately sized clones that appear at least twice. Raise minOccurrences to 3 to focus on widespread duplication only. Note: `fallow init`'s starter config seeds minOccurrences at 3 to hide pair-only noise on a first run, so its output is intentionally stricter than this zero-config default of 2.",
|
|
5913
|
+
"options": []
|
|
5914
|
+
},
|
|
5915
|
+
{
|
|
5916
|
+
"id": "complexity-ceilings",
|
|
5917
|
+
"header": "Complexity",
|
|
5918
|
+
"prompt": "Function complexity ceilings used by fallow health.",
|
|
5919
|
+
"tier": "default",
|
|
5920
|
+
"first_run": false,
|
|
5921
|
+
"framework_gated": false,
|
|
5922
|
+
"config_paths": [
|
|
5923
|
+
"health.maxCyclomaticComplexity",
|
|
5924
|
+
"health.maxCognitiveComplexity",
|
|
5925
|
+
"health.maxCrapThreshold",
|
|
5926
|
+
"health.maxUnitSize"
|
|
5927
|
+
],
|
|
5928
|
+
"default_summary": "cyclomatic 20, cognitive 15, CRAP 30, unit size 60 lines. These are SIG-aligned; raise them for an established codebase that would otherwise report a large existing backlog.",
|
|
5929
|
+
"options": []
|
|
5930
|
+
},
|
|
5931
|
+
{
|
|
5932
|
+
"id": "styling-drift",
|
|
5933
|
+
"header": "Styling",
|
|
5934
|
+
"prompt": "Design-system styling-drift strictness (hardcoded values where a token exists, duplicate blocks, selector complexity).",
|
|
5935
|
+
"tier": "default",
|
|
5936
|
+
"first_run": false,
|
|
5937
|
+
"framework_gated": false,
|
|
5938
|
+
"config_paths": [
|
|
5939
|
+
"rules.css-token-drift",
|
|
5940
|
+
"rules.css-duplicate-block",
|
|
5941
|
+
"rules.css-selector-complexity"
|
|
5942
|
+
],
|
|
5943
|
+
"default_summary": "All css-* rules default to warn (advisory, verdict-neutral). Promote to error only once the design system is stable enough that drift should block a merge.",
|
|
5944
|
+
"options": []
|
|
5945
|
+
},
|
|
5946
|
+
{
|
|
5947
|
+
"id": "react-health-signals",
|
|
5948
|
+
"header": "React heur",
|
|
5949
|
+
"prompt": "React/Preact structural health signals (prop-drilling, thin-wrapper, duplicate-prop-shape).",
|
|
5950
|
+
"tier": "default",
|
|
5951
|
+
"first_run": false,
|
|
5952
|
+
"framework_gated": true,
|
|
5953
|
+
"config_paths": [
|
|
5954
|
+
"rules.prop-drilling",
|
|
5955
|
+
"rules.thin-wrapper",
|
|
5956
|
+
"rules.duplicate-prop-shape"
|
|
5957
|
+
],
|
|
5958
|
+
"default_summary": "Off by default: opinion-heavy heuristics that are noisy on established component trees. Enable per-rule (warn) only if the team wants refactor pressure on component structure.",
|
|
5959
|
+
"options": []
|
|
5960
|
+
},
|
|
5961
|
+
{
|
|
5962
|
+
"id": "coverage-gaps",
|
|
5963
|
+
"header": "Cov gaps",
|
|
5964
|
+
"prompt": "Coverage-gap detection (runtime files/exports with no test dependency path).",
|
|
5965
|
+
"tier": "default",
|
|
5966
|
+
"first_run": false,
|
|
5967
|
+
"framework_gated": false,
|
|
5968
|
+
"config_paths": [
|
|
5969
|
+
"rules.coverage-gaps"
|
|
5970
|
+
],
|
|
5971
|
+
"default_summary": "Off by default and most useful once runtime coverage data is available. Not surfaced on a first run because a cold project rarely has the inputs it needs.",
|
|
5972
|
+
"options": []
|
|
5973
|
+
},
|
|
5974
|
+
{
|
|
5975
|
+
"id": "security",
|
|
5976
|
+
"header": "Security",
|
|
5977
|
+
"prompt": "Opt-in security candidate detection (client/server secret leaks, tainted sinks). Surfaced by the separate fallow security command.",
|
|
5978
|
+
"tier": "default",
|
|
5979
|
+
"first_run": false,
|
|
5980
|
+
"framework_gated": false,
|
|
5981
|
+
"config_paths": [
|
|
5982
|
+
"rules.security-client-server-leak",
|
|
5983
|
+
"rules.security-sink"
|
|
5984
|
+
],
|
|
5985
|
+
"default_summary": "Off by default: candidates are unverified and high-noise, so enabling security is a deliberate decision, not a first-run default. Run fallow security to explore candidates without changing config.",
|
|
5986
|
+
"options": []
|
|
5987
|
+
}
|
|
5988
|
+
],
|
|
5989
|
+
"security_categories": {
|
|
5990
|
+
"note": "Valid ids for security.categories.include / exclude. include-required categories (hardcoded-secret, secret-to-network) run only when explicitly listed in categories.include; all others are admitted by default unless an include list restricts to a whitelist.",
|
|
5991
|
+
"categories": [
|
|
5992
|
+
{
|
|
5993
|
+
"id": "angular-trusted-html",
|
|
5994
|
+
"title": "Angular bypassSecurityTrust sink",
|
|
5995
|
+
"cwe": 79,
|
|
5996
|
+
"include_required": false
|
|
5997
|
+
},
|
|
5998
|
+
{
|
|
5999
|
+
"id": "cleartext-transport",
|
|
6000
|
+
"title": "Cleartext transport URL",
|
|
6001
|
+
"cwe": 319,
|
|
6002
|
+
"include_required": false
|
|
6003
|
+
},
|
|
6004
|
+
{
|
|
6005
|
+
"id": "code-injection",
|
|
6006
|
+
"title": "Code injection sink",
|
|
6007
|
+
"cwe": 94,
|
|
6008
|
+
"include_required": false
|
|
6009
|
+
},
|
|
6010
|
+
{
|
|
6011
|
+
"id": "command-injection",
|
|
6012
|
+
"title": "OS command injection sink",
|
|
6013
|
+
"cwe": 78,
|
|
6014
|
+
"include_required": false
|
|
6015
|
+
},
|
|
6016
|
+
{
|
|
6017
|
+
"id": "dangerous-html",
|
|
6018
|
+
"title": "Dangerous HTML sink",
|
|
6019
|
+
"cwe": 79,
|
|
6020
|
+
"include_required": false
|
|
6021
|
+
},
|
|
6022
|
+
{
|
|
6023
|
+
"id": "deprecated-cipher",
|
|
6024
|
+
"title": "Deprecated cipher constructor",
|
|
6025
|
+
"cwe": 327,
|
|
6026
|
+
"include_required": false
|
|
6027
|
+
},
|
|
6028
|
+
{
|
|
6029
|
+
"id": "dom-document-write",
|
|
6030
|
+
"title": "DOM document.write sink",
|
|
6031
|
+
"cwe": 79,
|
|
6032
|
+
"include_required": false
|
|
6033
|
+
},
|
|
6034
|
+
{
|
|
6035
|
+
"id": "dynamic-module-load",
|
|
6036
|
+
"title": "Dynamic module load sink",
|
|
6037
|
+
"cwe": 95,
|
|
6038
|
+
"include_required": false
|
|
6039
|
+
},
|
|
6040
|
+
{
|
|
6041
|
+
"id": "dynamic-regex",
|
|
6042
|
+
"title": "Dynamic regular expression sink",
|
|
6043
|
+
"cwe": 1333,
|
|
6044
|
+
"include_required": false
|
|
6045
|
+
},
|
|
6046
|
+
{
|
|
6047
|
+
"id": "electron-unsafe-webpreferences",
|
|
6048
|
+
"title": "Unsafe Electron BrowserWindow preferences",
|
|
6049
|
+
"cwe": 1188,
|
|
6050
|
+
"include_required": false
|
|
6051
|
+
},
|
|
6052
|
+
{
|
|
6053
|
+
"id": "hardcoded-secret",
|
|
6054
|
+
"title": "Hardcoded secret candidate",
|
|
6055
|
+
"cwe": null,
|
|
6056
|
+
"include_required": true
|
|
6057
|
+
},
|
|
6058
|
+
{
|
|
6059
|
+
"id": "header-injection",
|
|
6060
|
+
"title": "HTTP response header injection sink",
|
|
6061
|
+
"cwe": 113,
|
|
6062
|
+
"include_required": false
|
|
6063
|
+
},
|
|
6064
|
+
{
|
|
6065
|
+
"id": "insecure-cookie",
|
|
6066
|
+
"title": "Insecure cookie options",
|
|
6067
|
+
"cwe": 614,
|
|
6068
|
+
"include_required": false
|
|
6069
|
+
},
|
|
6070
|
+
{
|
|
6071
|
+
"id": "insecure-randomness",
|
|
6072
|
+
"title": "Insecure randomness sink",
|
|
6073
|
+
"cwe": 338,
|
|
6074
|
+
"include_required": false
|
|
6075
|
+
},
|
|
6076
|
+
{
|
|
6077
|
+
"id": "insecure-temp-file",
|
|
6078
|
+
"title": "Predictable temporary file path",
|
|
6079
|
+
"cwe": 377,
|
|
6080
|
+
"include_required": false
|
|
6081
|
+
},
|
|
6082
|
+
{
|
|
6083
|
+
"id": "jquery-html",
|
|
6084
|
+
"title": "jQuery .html() sink",
|
|
6085
|
+
"cwe": 79,
|
|
6086
|
+
"include_required": false
|
|
6087
|
+
},
|
|
6088
|
+
{
|
|
6089
|
+
"id": "jwt-alg-none",
|
|
6090
|
+
"title": "JWT alg none",
|
|
6091
|
+
"cwe": 347,
|
|
6092
|
+
"include_required": false
|
|
6093
|
+
},
|
|
6094
|
+
{
|
|
6095
|
+
"id": "jwt-verify-missing-algorithms",
|
|
6096
|
+
"title": "JWT verify missing algorithms allowlist",
|
|
6097
|
+
"cwe": 347,
|
|
6098
|
+
"include_required": false
|
|
6099
|
+
},
|
|
6100
|
+
{
|
|
6101
|
+
"id": "llm-call-injection",
|
|
6102
|
+
"title": "Untrusted input reaches an LLM call",
|
|
6103
|
+
"cwe": 1427,
|
|
6104
|
+
"include_required": false
|
|
6105
|
+
},
|
|
6106
|
+
{
|
|
6107
|
+
"id": "mass-assignment",
|
|
6108
|
+
"title": "Mass assignment sink",
|
|
6109
|
+
"cwe": 915,
|
|
6110
|
+
"include_required": false
|
|
6111
|
+
},
|
|
6112
|
+
{
|
|
6113
|
+
"id": "mysql-multiple-statements",
|
|
6114
|
+
"title": "MySQL multiple statements enabled",
|
|
6115
|
+
"cwe": 89,
|
|
6116
|
+
"include_required": false
|
|
6117
|
+
},
|
|
6118
|
+
{
|
|
6119
|
+
"id": "nextjs-open-redirect",
|
|
6120
|
+
"title": "Next.js open redirect sink",
|
|
6121
|
+
"cwe": 601,
|
|
6122
|
+
"include_required": false
|
|
6123
|
+
},
|
|
6124
|
+
{
|
|
6125
|
+
"id": "nosql-injection",
|
|
6126
|
+
"title": "NoSQL injection sink",
|
|
6127
|
+
"cwe": 943,
|
|
6128
|
+
"include_required": false
|
|
6129
|
+
},
|
|
6130
|
+
{
|
|
6131
|
+
"id": "open-redirect",
|
|
6132
|
+
"title": "Open redirect sink",
|
|
6133
|
+
"cwe": 601,
|
|
6134
|
+
"include_required": false
|
|
6135
|
+
},
|
|
6136
|
+
{
|
|
6137
|
+
"id": "path-traversal",
|
|
6138
|
+
"title": "Path traversal sink",
|
|
6139
|
+
"cwe": 22,
|
|
6140
|
+
"include_required": false
|
|
6141
|
+
},
|
|
6142
|
+
{
|
|
6143
|
+
"id": "permissive-cors",
|
|
6144
|
+
"title": "Permissive CORS policy",
|
|
6145
|
+
"cwe": 942,
|
|
6146
|
+
"include_required": false
|
|
6147
|
+
},
|
|
6148
|
+
{
|
|
6149
|
+
"id": "postmessage-wildcard-origin",
|
|
6150
|
+
"title": "Wildcard postMessage target origin",
|
|
6151
|
+
"cwe": 346,
|
|
6152
|
+
"include_required": false
|
|
6153
|
+
},
|
|
6154
|
+
{
|
|
6155
|
+
"id": "prototype-pollution",
|
|
6156
|
+
"title": "Prototype pollution sink",
|
|
6157
|
+
"cwe": 1321,
|
|
6158
|
+
"include_required": false
|
|
6159
|
+
},
|
|
6160
|
+
{
|
|
6161
|
+
"id": "redos-regex",
|
|
6162
|
+
"title": "ReDoS regex sink",
|
|
6163
|
+
"cwe": 1333,
|
|
6164
|
+
"include_required": false
|
|
6165
|
+
},
|
|
6166
|
+
{
|
|
6167
|
+
"id": "resource-amplification",
|
|
6168
|
+
"title": "Resource amplification sink",
|
|
6169
|
+
"cwe": 400,
|
|
6170
|
+
"include_required": false
|
|
6171
|
+
},
|
|
6172
|
+
{
|
|
6173
|
+
"id": "route-send-file",
|
|
6174
|
+
"title": "Route file-send path traversal sink",
|
|
6175
|
+
"cwe": 22,
|
|
6176
|
+
"include_required": false
|
|
6177
|
+
},
|
|
6178
|
+
{
|
|
6179
|
+
"id": "secret-pii-log",
|
|
6180
|
+
"title": "Secret or PII logged",
|
|
6181
|
+
"cwe": 532,
|
|
6182
|
+
"include_required": false
|
|
6183
|
+
},
|
|
6184
|
+
{
|
|
6185
|
+
"id": "secret-to-network",
|
|
6186
|
+
"title": "Secret reaches a network request",
|
|
6187
|
+
"cwe": 201,
|
|
6188
|
+
"include_required": true
|
|
6189
|
+
},
|
|
6190
|
+
{
|
|
6191
|
+
"id": "sql-injection",
|
|
6192
|
+
"title": "SQL injection sink",
|
|
6193
|
+
"cwe": 89,
|
|
6194
|
+
"include_required": false
|
|
6195
|
+
},
|
|
6196
|
+
{
|
|
6197
|
+
"id": "ssrf",
|
|
6198
|
+
"title": "Server-side request forgery sink",
|
|
6199
|
+
"cwe": 918,
|
|
6200
|
+
"include_required": false
|
|
6201
|
+
},
|
|
6202
|
+
{
|
|
6203
|
+
"id": "ssti",
|
|
6204
|
+
"title": "Server-side template injection sink",
|
|
6205
|
+
"cwe": 1336,
|
|
6206
|
+
"include_required": false
|
|
6207
|
+
},
|
|
6208
|
+
{
|
|
6209
|
+
"id": "template-escape-bypass",
|
|
6210
|
+
"title": "Template escape bypass sink",
|
|
6211
|
+
"cwe": 79,
|
|
6212
|
+
"include_required": false
|
|
6213
|
+
},
|
|
6214
|
+
{
|
|
6215
|
+
"id": "tls-validation-disabled",
|
|
6216
|
+
"title": "TLS validation disabled",
|
|
6217
|
+
"cwe": 295,
|
|
6218
|
+
"include_required": false
|
|
6219
|
+
},
|
|
6220
|
+
{
|
|
6221
|
+
"id": "unsafe-buffer-alloc",
|
|
6222
|
+
"title": "Unsafe Buffer allocation sink",
|
|
6223
|
+
"cwe": 1188,
|
|
6224
|
+
"include_required": false
|
|
6225
|
+
},
|
|
6226
|
+
{
|
|
6227
|
+
"id": "unsafe-deserialization",
|
|
6228
|
+
"title": "Unsafe deserialization sink",
|
|
6229
|
+
"cwe": 502,
|
|
6230
|
+
"include_required": false
|
|
6231
|
+
},
|
|
6232
|
+
{
|
|
6233
|
+
"id": "weak-crypto",
|
|
6234
|
+
"title": "Runtime-selectable crypto algorithm",
|
|
6235
|
+
"cwe": 327,
|
|
6236
|
+
"include_required": false
|
|
6237
|
+
},
|
|
6238
|
+
{
|
|
6239
|
+
"id": "webview-injection",
|
|
6240
|
+
"title": "WebView injected-script sink",
|
|
6241
|
+
"cwe": 94,
|
|
6242
|
+
"include_required": false
|
|
6243
|
+
},
|
|
6244
|
+
{
|
|
6245
|
+
"id": "world-writable-permission",
|
|
6246
|
+
"title": "World-writable chmod mode",
|
|
6247
|
+
"cwe": 732,
|
|
6248
|
+
"include_required": false
|
|
6249
|
+
},
|
|
6250
|
+
{
|
|
6251
|
+
"id": "xpath-injection",
|
|
6252
|
+
"title": "XPath injection sink",
|
|
6253
|
+
"cwe": 643,
|
|
6254
|
+
"include_required": false
|
|
6255
|
+
},
|
|
6256
|
+
{
|
|
6257
|
+
"id": "xxe",
|
|
6258
|
+
"title": "XML external entity (XXE) sink",
|
|
6259
|
+
"cwe": 611,
|
|
6260
|
+
"include_required": false
|
|
6261
|
+
},
|
|
6262
|
+
{
|
|
6263
|
+
"id": "zip-slip",
|
|
6264
|
+
"title": "Archive path-traversal (zip-slip) sink",
|
|
6265
|
+
"cwe": 22,
|
|
6266
|
+
"include_required": false
|
|
6267
|
+
}
|
|
6268
|
+
]
|
|
6269
|
+
},
|
|
5437
6270
|
"mcp_tools": {
|
|
5438
6271
|
"server": "fallow-mcp",
|
|
5439
|
-
"note": "key_params is a curated subset; the live MCP input schemas (list_tools) are authoritative for the full parameter list",
|
|
6272
|
+
"note": "key_params is a curated subset; the live MCP input schemas (list_tools) are authoritative for the full parameter list. cli_command is the nearest CLI fallback, not a full MCP input-schema projection",
|
|
5440
6273
|
"tools": [
|
|
5441
6274
|
{
|
|
5442
6275
|
"name": "code_execute",
|
|
5443
6276
|
"kind": "composition",
|
|
5444
6277
|
"description": "Run a bounded read-only JavaScript snippet that composes fallow's analysis tools inside a sandbox (Code Mode meta-tool, not a plain analysis call)",
|
|
6278
|
+
"cli_command": null,
|
|
5445
6279
|
"key_params": [
|
|
5446
6280
|
"code",
|
|
5447
6281
|
"timeout_ms",
|
|
@@ -5455,6 +6289,7 @@
|
|
|
5455
6289
|
"name": "analyze",
|
|
5456
6290
|
"kind": "analysis",
|
|
5457
6291
|
"description": "Full dead-code analysis: unused files, exports, types, dependencies, circular dependencies, and boundary violations",
|
|
6292
|
+
"cli_command": "fallow dead-code --format json --quiet",
|
|
5458
6293
|
"key_params": [
|
|
5459
6294
|
"issue_types",
|
|
5460
6295
|
"production",
|
|
@@ -5471,6 +6306,7 @@
|
|
|
5471
6306
|
"name": "check_changed",
|
|
5472
6307
|
"kind": "analysis",
|
|
5473
6308
|
"description": "Incremental dead-code analysis scoped to files changed since a git ref (ideal for PR review)",
|
|
6309
|
+
"cli_command": "fallow dead-code --changed-since <ref> --format json --quiet",
|
|
5474
6310
|
"key_params": [
|
|
5475
6311
|
"since",
|
|
5476
6312
|
"baseline",
|
|
@@ -5484,6 +6320,7 @@
|
|
|
5484
6320
|
"name": "security_candidates",
|
|
5485
6321
|
"kind": "analysis",
|
|
5486
6322
|
"description": "Unverified local security candidates (tainted sinks) for downstream agent verification",
|
|
6323
|
+
"cli_command": "fallow security --format json --quiet",
|
|
5487
6324
|
"key_params": [
|
|
5488
6325
|
"gate",
|
|
5489
6326
|
"surface",
|
|
@@ -5498,6 +6335,7 @@
|
|
|
5498
6335
|
"name": "inspect_target",
|
|
5499
6336
|
"kind": "analysis",
|
|
5500
6337
|
"description": "One evidence bundle for a file or exported symbol: trace, dead-code actions, duplication, complexity, and security candidates",
|
|
6338
|
+
"cli_command": "fallow inspect --format json --quiet",
|
|
5501
6339
|
"key_params": [
|
|
5502
6340
|
"target",
|
|
5503
6341
|
"production"
|
|
@@ -5510,6 +6348,7 @@
|
|
|
5510
6348
|
"name": "guard",
|
|
5511
6349
|
"kind": "introspection",
|
|
5512
6350
|
"description": "Report the architecture rules that apply to given files before editing them: boundary zone, allowed import zones, forbidden calls, and rule-pack policies",
|
|
6351
|
+
"cli_command": "fallow guard <file> --format json --quiet",
|
|
5513
6352
|
"key_params": [
|
|
5514
6353
|
"files"
|
|
5515
6354
|
],
|
|
@@ -5521,6 +6360,7 @@
|
|
|
5521
6360
|
"name": "find_dupes",
|
|
5522
6361
|
"kind": "analysis",
|
|
5523
6362
|
"description": "Code duplication detection with clone groups and refactoring suggestions",
|
|
6363
|
+
"cli_command": "fallow dupes --format json --quiet",
|
|
5524
6364
|
"key_params": [
|
|
5525
6365
|
"mode",
|
|
5526
6366
|
"min_tokens",
|
|
@@ -5536,6 +6376,7 @@
|
|
|
5536
6376
|
"name": "check_health",
|
|
5537
6377
|
"kind": "analysis",
|
|
5538
6378
|
"description": "Complexity, styling health, hotspots, ownership, refactoring targets, coverage gaps, and CSS/CSS-in-JS candidates",
|
|
6379
|
+
"cli_command": "fallow health --format json --quiet",
|
|
5539
6380
|
"key_params": [
|
|
5540
6381
|
"score",
|
|
5541
6382
|
"css",
|
|
@@ -5555,6 +6396,7 @@
|
|
|
5555
6396
|
"name": "check_runtime_coverage",
|
|
5556
6397
|
"kind": "runtime-coverage",
|
|
5557
6398
|
"description": "Merge V8 or Istanbul runtime coverage into the health report (hot paths, cold paths, verdicts)",
|
|
6399
|
+
"cli_command": "fallow health --runtime-coverage <path> --format json --quiet",
|
|
5558
6400
|
"key_params": [
|
|
5559
6401
|
"coverage",
|
|
5560
6402
|
"min_invocations_hot",
|
|
@@ -5570,6 +6412,7 @@
|
|
|
5570
6412
|
"name": "get_hot_paths",
|
|
5571
6413
|
"kind": "runtime-coverage",
|
|
5572
6414
|
"description": "Production hot paths from runtime coverage, sorted by invocation volume",
|
|
6415
|
+
"cli_command": "fallow health --runtime-coverage <path> --format json --quiet",
|
|
5573
6416
|
"key_params": [
|
|
5574
6417
|
"coverage",
|
|
5575
6418
|
"top",
|
|
@@ -5583,6 +6426,7 @@
|
|
|
5583
6426
|
"name": "get_blast_radius",
|
|
5584
6427
|
"kind": "runtime-coverage",
|
|
5585
6428
|
"description": "Blast-radius context (caller counts, risk bands) from runtime coverage; augments review only, never gates safe_to_delete (three-state tracking issues that verdict)",
|
|
6429
|
+
"cli_command": "fallow health --runtime-coverage <path> --format json --quiet",
|
|
5586
6430
|
"key_params": [
|
|
5587
6431
|
"coverage",
|
|
5588
6432
|
"group_by"
|
|
@@ -5595,6 +6439,7 @@
|
|
|
5595
6439
|
"name": "get_importance",
|
|
5596
6440
|
"kind": "runtime-coverage",
|
|
5597
6441
|
"description": "Production-importance scores (0-100) combining invocations, complexity, and ownership; augments review only, never gates safe_to_delete (three-state tracking issues that verdict)",
|
|
6442
|
+
"cli_command": "fallow health --runtime-coverage <path> --format json --quiet",
|
|
5598
6443
|
"key_params": [
|
|
5599
6444
|
"coverage",
|
|
5600
6445
|
"group_by"
|
|
@@ -5607,6 +6452,7 @@
|
|
|
5607
6452
|
"name": "get_cleanup_candidates",
|
|
5608
6453
|
"kind": "runtime-coverage",
|
|
5609
6454
|
"description": "Cleanup candidates with safe_to_delete, review_required, and low_traffic verdicts from runtime coverage",
|
|
6455
|
+
"cli_command": "fallow health --runtime-coverage <path> --format json --quiet",
|
|
5610
6456
|
"key_params": [
|
|
5611
6457
|
"coverage",
|
|
5612
6458
|
"group_by"
|
|
@@ -5619,6 +6465,7 @@
|
|
|
5619
6465
|
"name": "get_token_blast_radius",
|
|
5620
6466
|
"kind": "analysis",
|
|
5621
6467
|
"description": "Design-token blast radius for Tailwind v4 @theme tokens AND CSS-in-JS defineVars/createTheme-family token definitions: per token, a consumer_count (static lower bound) and a capped located consumers[] sample tagged theme-var/css-var/utility/apply (Tailwind) or js-member (CSS-in-JS cross-module member access); descriptive context for sizing a token change, never a deletion gate",
|
|
6468
|
+
"cli_command": "fallow health --css --format json --quiet",
|
|
5622
6469
|
"key_params": [],
|
|
5623
6470
|
"license": "free",
|
|
5624
6471
|
"license_note": null,
|
|
@@ -5628,6 +6475,7 @@
|
|
|
5628
6475
|
"name": "audit",
|
|
5629
6476
|
"kind": "analysis",
|
|
5630
6477
|
"description": "Combined dead-code, complexity, duplication, and styling audit for changed files with a pass/warn/fail verdict",
|
|
6478
|
+
"cli_command": "fallow audit --format json --quiet",
|
|
5631
6479
|
"key_params": [
|
|
5632
6480
|
"gate",
|
|
5633
6481
|
"base",
|
|
@@ -5644,6 +6492,7 @@
|
|
|
5644
6492
|
"name": "decision_surface",
|
|
5645
6493
|
"kind": "analysis",
|
|
5646
6494
|
"description": "Surface the few consequential structural decisions a change embeds (coupling, public API, dependency), each as a judgment question with the routed expert; ranked, capped, and signal_id-anchored",
|
|
6495
|
+
"cli_command": "fallow decision-surface --format json --quiet",
|
|
5647
6496
|
"key_params": [
|
|
5648
6497
|
"base",
|
|
5649
6498
|
"max_decisions",
|
|
@@ -5657,6 +6506,7 @@
|
|
|
5657
6506
|
"name": "fallow_explain",
|
|
5658
6507
|
"kind": "introspection",
|
|
5659
6508
|
"description": "Explain one issue type (rationale, examples, fix guidance) without running an analysis",
|
|
6509
|
+
"cli_command": "fallow explain <issue-type> --format json --quiet",
|
|
5660
6510
|
"key_params": [
|
|
5661
6511
|
"issue_type"
|
|
5662
6512
|
],
|
|
@@ -5668,6 +6518,7 @@
|
|
|
5668
6518
|
"name": "fix_preview",
|
|
5669
6519
|
"kind": "fix",
|
|
5670
6520
|
"description": "Dry-run auto-fix preview; shows what would change without modifying files",
|
|
6521
|
+
"cli_command": "fallow fix --dry-run --format json --quiet",
|
|
5671
6522
|
"key_params": [
|
|
5672
6523
|
"no_create_config"
|
|
5673
6524
|
],
|
|
@@ -5679,6 +6530,7 @@
|
|
|
5679
6530
|
"name": "fix_apply",
|
|
5680
6531
|
"kind": "fix",
|
|
5681
6532
|
"description": "Apply auto-fixes: removes unused exports, dependencies, and enum members (mutates files)",
|
|
6533
|
+
"cli_command": "fallow fix --yes --format json --quiet",
|
|
5682
6534
|
"key_params": [
|
|
5683
6535
|
"no_create_config"
|
|
5684
6536
|
],
|
|
@@ -5690,6 +6542,7 @@
|
|
|
5690
6542
|
"name": "project_info",
|
|
5691
6543
|
"kind": "introspection",
|
|
5692
6544
|
"description": "Project metadata: active framework plugins, discovered files, entry points, and boundary zones",
|
|
6545
|
+
"cli_command": "fallow list --files --entry-points --plugins --format json --quiet",
|
|
5693
6546
|
"key_params": [
|
|
5694
6547
|
"entry_points",
|
|
5695
6548
|
"files",
|
|
@@ -5700,10 +6553,23 @@
|
|
|
5700
6553
|
"license_note": null,
|
|
5701
6554
|
"read_only": true
|
|
5702
6555
|
},
|
|
6556
|
+
{
|
|
6557
|
+
"name": "recommend",
|
|
6558
|
+
"kind": "introspection",
|
|
6559
|
+
"description": "Recommend a project-tailored config from framework/workspace/tooling detection: a loader-validated proposed_config and three-valued auto/default/taste decisions for cold-start onboarding",
|
|
6560
|
+
"cli_command": "fallow recommend --format json --quiet",
|
|
6561
|
+
"key_params": [
|
|
6562
|
+
"root"
|
|
6563
|
+
],
|
|
6564
|
+
"license": "free",
|
|
6565
|
+
"license_note": null,
|
|
6566
|
+
"read_only": true
|
|
6567
|
+
},
|
|
5703
6568
|
{
|
|
5704
6569
|
"name": "list_boundaries",
|
|
5705
6570
|
"kind": "introspection",
|
|
5706
6571
|
"description": "List architecture boundary zones and access rules",
|
|
6572
|
+
"cli_command": "fallow list --boundaries --format json --quiet",
|
|
5707
6573
|
"key_params": [],
|
|
5708
6574
|
"license": "free",
|
|
5709
6575
|
"license_note": null,
|
|
@@ -5713,6 +6579,7 @@
|
|
|
5713
6579
|
"name": "feature_flags",
|
|
5714
6580
|
"kind": "analysis",
|
|
5715
6581
|
"description": "Detect feature flag patterns (environment variables, SDK calls, config objects)",
|
|
6582
|
+
"cli_command": "fallow flags --format json --quiet",
|
|
5716
6583
|
"key_params": [
|
|
5717
6584
|
"workspace",
|
|
5718
6585
|
"production"
|
|
@@ -5725,6 +6592,7 @@
|
|
|
5725
6592
|
"name": "impact",
|
|
5726
6593
|
"kind": "introspection",
|
|
5727
6594
|
"description": "Read the local Fallow Impact value-tracking report (per-project history in the user config dir, never in the repo; local-dev only)",
|
|
6595
|
+
"cli_command": "fallow impact --format json --quiet",
|
|
5728
6596
|
"key_params": [
|
|
5729
6597
|
"root"
|
|
5730
6598
|
],
|
|
@@ -5736,6 +6604,7 @@
|
|
|
5736
6604
|
"name": "impact_all",
|
|
5737
6605
|
"kind": "introspection",
|
|
5738
6606
|
"description": "Roll every tracked fallow project on this machine into one cross-repo value report (hashed keys plus basename labels, never paths; local-dev only)",
|
|
6607
|
+
"cli_command": "fallow impact --all --format json --quiet",
|
|
5739
6608
|
"key_params": [
|
|
5740
6609
|
"sort",
|
|
5741
6610
|
"limit"
|
|
@@ -5748,6 +6617,7 @@
|
|
|
5748
6617
|
"name": "trace_export",
|
|
5749
6618
|
"kind": "trace",
|
|
5750
6619
|
"description": "Trace why an export is used or unused, including re-export chains and entry-point status",
|
|
6620
|
+
"cli_command": "fallow dead-code --trace <file:export> --format json --quiet",
|
|
5751
6621
|
"key_params": [
|
|
5752
6622
|
"file",
|
|
5753
6623
|
"export_name"
|
|
@@ -5760,6 +6630,7 @@
|
|
|
5760
6630
|
"name": "trace_file",
|
|
5761
6631
|
"kind": "trace",
|
|
5762
6632
|
"description": "Trace all module-graph edges for a file (imports, exports, importers, re-exports)",
|
|
6633
|
+
"cli_command": "fallow dead-code --trace-file <file> --format json --quiet",
|
|
5763
6634
|
"key_params": [
|
|
5764
6635
|
"file"
|
|
5765
6636
|
],
|
|
@@ -5767,10 +6638,23 @@
|
|
|
5767
6638
|
"license_note": null,
|
|
5768
6639
|
"read_only": true
|
|
5769
6640
|
},
|
|
6641
|
+
{
|
|
6642
|
+
"name": "impact_closure",
|
|
6643
|
+
"kind": "trace",
|
|
6644
|
+
"description": "Trace the transitive affected-but-not-in-diff set and coordination gaps for one file",
|
|
6645
|
+
"cli_command": "fallow dead-code --impact-closure <path> --format json --quiet",
|
|
6646
|
+
"key_params": [
|
|
6647
|
+
"path"
|
|
6648
|
+
],
|
|
6649
|
+
"license": "free",
|
|
6650
|
+
"license_note": null,
|
|
6651
|
+
"read_only": true
|
|
6652
|
+
},
|
|
5770
6653
|
{
|
|
5771
6654
|
"name": "trace_dependency",
|
|
5772
6655
|
"kind": "trace",
|
|
5773
6656
|
"description": "Trace where a dependency is imported and whether scripts or CI use it",
|
|
6657
|
+
"cli_command": "fallow dead-code --trace-dependency <package> --format json --quiet",
|
|
5774
6658
|
"key_params": [
|
|
5775
6659
|
"package_name"
|
|
5776
6660
|
],
|
|
@@ -5782,6 +6666,7 @@
|
|
|
5782
6666
|
"name": "trace_clone",
|
|
5783
6667
|
"kind": "trace",
|
|
5784
6668
|
"description": "Deep-dive a duplicate-code clone group by location or fingerprint",
|
|
6669
|
+
"cli_command": "fallow dupes --trace <file:line> --format json --quiet",
|
|
5785
6670
|
"key_params": [
|
|
5786
6671
|
"file",
|
|
5787
6672
|
"line",
|