@oddessentials/repo-standards 2.0.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/config/standards.csharp-dotnet.azure-devops.json +41 -37
- package/dist/config/standards.csharp-dotnet.github-actions.json +41 -37
- package/dist/config/standards.csharp-dotnet.json +41 -37
- package/dist/config/standards.go.azure-devops.json +41 -37
- package/dist/config/standards.go.github-actions.json +41 -37
- package/dist/config/standards.go.json +41 -37
- package/dist/config/standards.json +89 -40
- package/dist/config/standards.python.azure-devops.json +41 -37
- package/dist/config/standards.python.github-actions.json +41 -37
- package/dist/config/standards.python.json +41 -37
- package/dist/config/standards.rust.azure-devops.json +45 -40
- package/dist/config/standards.rust.github-actions.json +45 -40
- package/dist/config/standards.rust.json +45 -40
- package/dist/config/standards.schema.json +497 -0
- package/dist/config/standards.typescript-js.azure-devops.json +41 -37
- package/dist/config/standards.typescript-js.github-actions.json +41 -37
- package/dist/config/standards.typescript-js.json +41 -37
- package/dist/types.d.ts +120 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -4
|
@@ -20,8 +20,10 @@
|
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
"description": "Maintain proper .gitignore and .dockerignore files to prevent committing secrets, build artifacts, or unnecessary files.",
|
|
23
|
+
"enforcement": "required",
|
|
23
24
|
"id": "gitignore-and-dockerignore",
|
|
24
25
|
"label": "Git and Docker Ignore Files",
|
|
26
|
+
"severity": "error",
|
|
25
27
|
"stackHints": {
|
|
26
28
|
"csharp-dotnet": {
|
|
27
29
|
"exampleConfigFiles": [
|
|
@@ -114,8 +116,10 @@
|
|
|
114
116
|
}
|
|
115
117
|
},
|
|
116
118
|
"description": "Run static code linting to enforce consistency and catch common issues early.",
|
|
119
|
+
"enforcement": "required",
|
|
117
120
|
"id": "linting",
|
|
118
121
|
"label": "Linting",
|
|
122
|
+
"severity": "error",
|
|
119
123
|
"stackHints": {
|
|
120
124
|
"csharp-dotnet": {
|
|
121
125
|
"bazelHints": {
|
|
@@ -279,8 +283,10 @@
|
|
|
279
283
|
}
|
|
280
284
|
},
|
|
281
285
|
"description": "Provide a deterministic unit test framework with a single command to run all tests.",
|
|
286
|
+
"enforcement": "required",
|
|
282
287
|
"id": "unit-test-runner",
|
|
283
288
|
"label": "Unit Test Runner",
|
|
289
|
+
"severity": "error",
|
|
284
290
|
"stackHints": {
|
|
285
291
|
"csharp-dotnet": {
|
|
286
292
|
"bazelHints": {
|
|
@@ -413,8 +419,10 @@
|
|
|
413
419
|
}
|
|
414
420
|
},
|
|
415
421
|
"description": "Provide a Dockerfile and, if applicable, a docker-compose file for local dev and CI parity.",
|
|
422
|
+
"enforcement": "required",
|
|
416
423
|
"id": "containerization",
|
|
417
424
|
"label": "Containerization (Docker / Docker Compose)",
|
|
425
|
+
"severity": "error",
|
|
418
426
|
"stackHints": {
|
|
419
427
|
"csharp-dotnet": {
|
|
420
428
|
"exampleConfigFiles": [
|
|
@@ -512,8 +520,10 @@
|
|
|
512
520
|
}
|
|
513
521
|
},
|
|
514
522
|
"description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history.",
|
|
523
|
+
"enforcement": "required",
|
|
515
524
|
"id": "semantic-versioning",
|
|
516
525
|
"label": "Semantic Versioning",
|
|
526
|
+
"severity": "error",
|
|
517
527
|
"stackHints": {
|
|
518
528
|
"csharp-dotnet": {
|
|
519
529
|
"exampleConfigFiles": [
|
|
@@ -599,8 +609,10 @@
|
|
|
599
609
|
}
|
|
600
610
|
},
|
|
601
611
|
"description": "Enforce structured commit messages such as Conventional Commits.",
|
|
612
|
+
"enforcement": "required",
|
|
602
613
|
"id": "commit-linting",
|
|
603
614
|
"label": "Commit Linting",
|
|
615
|
+
"severity": "error",
|
|
604
616
|
"stackHints": {
|
|
605
617
|
"csharp-dotnet": {
|
|
606
618
|
"exampleConfigFiles": [
|
|
@@ -681,8 +693,10 @@
|
|
|
681
693
|
}
|
|
682
694
|
},
|
|
683
695
|
"description": "Generate readable unit test and coverage reports and enforce a minimum coverage threshold (around 80%) for new or changed code.",
|
|
696
|
+
"enforcement": "required",
|
|
684
697
|
"id": "unit-test-reporter",
|
|
685
698
|
"label": "Unit Test Reporter / Coverage",
|
|
699
|
+
"severity": "error",
|
|
686
700
|
"stackHints": {
|
|
687
701
|
"csharp-dotnet": {
|
|
688
702
|
"bazelHints": {
|
|
@@ -793,8 +807,10 @@
|
|
|
793
807
|
}
|
|
794
808
|
},
|
|
795
809
|
"description": "Single CI pipeline that runs linting, formatting, type checking, tests, coverage, build, and containerization.",
|
|
810
|
+
"enforcement": "required",
|
|
796
811
|
"id": "ci-quality-gates",
|
|
797
812
|
"label": "CI Quality Gates",
|
|
813
|
+
"severity": "error",
|
|
798
814
|
"stackHints": {
|
|
799
815
|
"csharp-dotnet": {
|
|
800
816
|
"bazelHints": {
|
|
@@ -897,8 +913,10 @@
|
|
|
897
913
|
}
|
|
898
914
|
},
|
|
899
915
|
"description": "Automatic code formatting to maintain a consistent style across all contributors.",
|
|
916
|
+
"enforcement": "required",
|
|
900
917
|
"id": "code-formatter",
|
|
901
918
|
"label": "Code Formatter",
|
|
919
|
+
"severity": "error",
|
|
902
920
|
"stackHints": {
|
|
903
921
|
"csharp-dotnet": {
|
|
904
922
|
"bazelHints": {
|
|
@@ -1003,8 +1021,10 @@
|
|
|
1003
1021
|
}
|
|
1004
1022
|
},
|
|
1005
1023
|
"description": "Use git hooks to run linting, formatting, tests, and commit linting before changes are committed.",
|
|
1024
|
+
"enforcement": "required",
|
|
1006
1025
|
"id": "pre-commit-hooks",
|
|
1007
1026
|
"label": "Pre-Commit Hooks",
|
|
1027
|
+
"severity": "error",
|
|
1008
1028
|
"stackHints": {
|
|
1009
1029
|
"csharp-dotnet": {
|
|
1010
1030
|
"exampleConfigFiles": [
|
|
@@ -1082,8 +1102,10 @@
|
|
|
1082
1102
|
}
|
|
1083
1103
|
},
|
|
1084
1104
|
"description": "Use static type checking to catch errors before runtime and enforce strictness on new code.",
|
|
1105
|
+
"enforcement": "required",
|
|
1085
1106
|
"id": "type-checking",
|
|
1086
1107
|
"label": "Type Checking",
|
|
1108
|
+
"severity": "error",
|
|
1087
1109
|
"stackHints": {
|
|
1088
1110
|
"csharp-dotnet": {
|
|
1089
1111
|
"bazelHints": {
|
|
@@ -1215,8 +1237,10 @@
|
|
|
1215
1237
|
}
|
|
1216
1238
|
},
|
|
1217
1239
|
"description": "Lock dependencies and scan regularly for known vulnerabilities; fail CI on newly introduced high-severity issues.",
|
|
1240
|
+
"enforcement": "required",
|
|
1218
1241
|
"id": "dependency-security",
|
|
1219
1242
|
"label": "Dependency Management & Vulnerability Scanning",
|
|
1243
|
+
"severity": "error",
|
|
1220
1244
|
"stackHints": {
|
|
1221
1245
|
"csharp-dotnet": {
|
|
1222
1246
|
"exampleConfigFiles": [
|
|
@@ -1265,6 +1289,9 @@
|
|
|
1265
1289
|
"verification": "Dependency lockfile is present; security scanning is configured in CI or project tooling."
|
|
1266
1290
|
},
|
|
1267
1291
|
"rust": {
|
|
1292
|
+
"anyOfFiles": [
|
|
1293
|
+
"Cargo.lock"
|
|
1294
|
+
],
|
|
1268
1295
|
"exampleConfigFiles": [
|
|
1269
1296
|
"Cargo.lock",
|
|
1270
1297
|
"deny.toml"
|
|
@@ -1277,9 +1304,7 @@
|
|
|
1277
1304
|
"optionalFiles": [
|
|
1278
1305
|
"deny.toml"
|
|
1279
1306
|
],
|
|
1280
|
-
"
|
|
1281
|
-
"Cargo.lock"
|
|
1282
|
-
],
|
|
1307
|
+
"pinningNotes": "Required for binaries/services; optional for libraries (add to .gitignore for libs). See https://doc.rust-lang.org/cargo/faq.html#why-have-cargolock-in-version-control",
|
|
1283
1308
|
"verification": "Cargo.lock is present; run 'cargo audit' or 'cargo deny check' to verify security scanning."
|
|
1284
1309
|
},
|
|
1285
1310
|
"typescript-js": {
|
|
@@ -1321,8 +1346,10 @@
|
|
|
1321
1346
|
}
|
|
1322
1347
|
},
|
|
1323
1348
|
"description": "Specify required runtime/engine versions in package manifests to ensure environment stability and prevent version-related issues across development teams.",
|
|
1349
|
+
"enforcement": "required",
|
|
1324
1350
|
"id": "runtime-version",
|
|
1325
1351
|
"label": "Runtime Version Specification",
|
|
1352
|
+
"severity": "error",
|
|
1326
1353
|
"stackHints": {
|
|
1327
1354
|
"csharp-dotnet": {
|
|
1328
1355
|
"exampleConfigFiles": [
|
|
@@ -1412,8 +1439,10 @@
|
|
|
1412
1439
|
}
|
|
1413
1440
|
},
|
|
1414
1441
|
"description": "Maintain a comprehensive README and, where applicable, auto-generated API docs to support onboarding and maintainability.",
|
|
1442
|
+
"enforcement": "required",
|
|
1415
1443
|
"id": "documentation",
|
|
1416
1444
|
"label": "Documentation Standards",
|
|
1445
|
+
"severity": "error",
|
|
1417
1446
|
"stackHints": {
|
|
1418
1447
|
"csharp-dotnet": {
|
|
1419
1448
|
"exampleConfigFiles": [
|
|
@@ -1529,8 +1558,10 @@
|
|
|
1529
1558
|
}
|
|
1530
1559
|
},
|
|
1531
1560
|
"description": "Include standard governance files (LICENSE, CODE_OF_CONDUCT.md, CONTRIBUTING.md), branch protection rules, and review standards to define legal, ethical, and workflow expectations.",
|
|
1561
|
+
"enforcement": "required",
|
|
1532
1562
|
"id": "repository-governance",
|
|
1533
1563
|
"label": "Repository Governance",
|
|
1564
|
+
"severity": "error",
|
|
1534
1565
|
"stackHints": {
|
|
1535
1566
|
"csharp-dotnet": {
|
|
1536
1567
|
"exampleConfigFiles": [
|
|
@@ -1640,8 +1671,10 @@
|
|
|
1640
1671
|
}
|
|
1641
1672
|
},
|
|
1642
1673
|
"description": "Standardize error handling and structured logging to make debugging and production monitoring easier.",
|
|
1674
|
+
"enforcement": "optional",
|
|
1643
1675
|
"id": "observability",
|
|
1644
1676
|
"label": "Observability (Logging & Error Handling)",
|
|
1677
|
+
"severity": "info",
|
|
1645
1678
|
"stackHints": {
|
|
1646
1679
|
"csharp-dotnet": {
|
|
1647
1680
|
"exampleConfigFiles": [
|
|
@@ -1719,8 +1752,10 @@
|
|
|
1719
1752
|
}
|
|
1720
1753
|
},
|
|
1721
1754
|
"description": "Automate dependency updates using Renovate or Dependabot to keep dependencies current and reduce security exposure window.",
|
|
1755
|
+
"enforcement": "recommended",
|
|
1722
1756
|
"id": "dependency-update-automation",
|
|
1723
1757
|
"label": "Dependency Update Automation",
|
|
1758
|
+
"severity": "warn",
|
|
1724
1759
|
"stackHints": {
|
|
1725
1760
|
"csharp-dotnet": {
|
|
1726
1761
|
"anyOfFiles": [
|
|
@@ -1835,8 +1870,10 @@
|
|
|
1835
1870
|
}
|
|
1836
1871
|
},
|
|
1837
1872
|
"description": "Enforce module boundaries and import constraints to prevent architectural drift and unwanted coupling.",
|
|
1873
|
+
"enforcement": "recommended",
|
|
1838
1874
|
"id": "dependency-architecture-rules",
|
|
1839
1875
|
"label": "Dependency Architecture Rules",
|
|
1876
|
+
"severity": "warn",
|
|
1840
1877
|
"stackHints": {
|
|
1841
1878
|
"csharp-dotnet": {
|
|
1842
1879
|
"exampleConfigFiles": [
|
|
@@ -1931,8 +1968,10 @@
|
|
|
1931
1968
|
}
|
|
1932
1969
|
},
|
|
1933
1970
|
"description": "Test how components interact with each other and external systems, running after unit tests with more relaxed coverage thresholds.",
|
|
1971
|
+
"enforcement": "recommended",
|
|
1934
1972
|
"id": "integration-testing",
|
|
1935
1973
|
"label": "Integration Testing",
|
|
1974
|
+
"severity": "warn",
|
|
1936
1975
|
"stackHints": {
|
|
1937
1976
|
"csharp-dotnet": {
|
|
1938
1977
|
"exampleConfigFiles": [
|
|
@@ -2010,8 +2049,10 @@
|
|
|
2010
2049
|
}
|
|
2011
2050
|
},
|
|
2012
2051
|
"description": "Establish performance baselines and monitor for regressions using lightweight benchmarks or audits in CI.",
|
|
2052
|
+
"enforcement": "recommended",
|
|
2013
2053
|
"id": "performance-baselining",
|
|
2014
2054
|
"label": "Performance Baselines",
|
|
2055
|
+
"severity": "warn",
|
|
2015
2056
|
"stackHints": {
|
|
2016
2057
|
"csharp-dotnet": {
|
|
2017
2058
|
"exampleConfigFiles": [
|
|
@@ -2089,8 +2130,10 @@
|
|
|
2089
2130
|
}
|
|
2090
2131
|
},
|
|
2091
2132
|
"description": "Measure cyclomatic complexity or similar metrics to keep code maintainable, starting as a warning-only check.",
|
|
2133
|
+
"enforcement": "recommended",
|
|
2092
2134
|
"id": "complexity-analysis",
|
|
2093
2135
|
"label": "Complexity Analysis",
|
|
2136
|
+
"severity": "warn",
|
|
2094
2137
|
"stackHints": {
|
|
2095
2138
|
"csharp-dotnet": {
|
|
2096
2139
|
"exampleConfigFiles": [
|
|
@@ -2168,8 +2211,10 @@
|
|
|
2168
2211
|
}
|
|
2169
2212
|
},
|
|
2170
2213
|
"description": "Run accessibility checks on web-facing components to detect critical issues and improve inclusive UX.",
|
|
2214
|
+
"enforcement": "recommended",
|
|
2171
2215
|
"id": "accessibility-auditing",
|
|
2172
2216
|
"label": "Accessibility Auditing",
|
|
2217
|
+
"severity": "warn",
|
|
2173
2218
|
"stackHints": {
|
|
2174
2219
|
"csharp-dotnet": {
|
|
2175
2220
|
"exampleConfigFiles": [],
|
|
@@ -2224,48 +2269,52 @@
|
|
|
2224
2269
|
"github-actions"
|
|
2225
2270
|
],
|
|
2226
2271
|
"meta": {
|
|
2227
|
-
"bazelIntegration": {
|
|
2228
|
-
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
2229
|
-
"ciContract": {
|
|
2230
|
-
"configFlag": "--config=ci (define in .bazelrc)",
|
|
2231
|
-
"deterministicFlags": [
|
|
2232
|
-
"--nokeep_going",
|
|
2233
|
-
"--test_output=errors"
|
|
2234
|
-
],
|
|
2235
|
-
"remoteCache": "Optional; not required for CI",
|
|
2236
|
-
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
2237
|
-
},
|
|
2238
|
-
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
2239
|
-
"detectionRules": {
|
|
2240
|
-
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
2241
|
-
"optionalMarkers": [
|
|
2242
|
-
".bazelrc",
|
|
2243
|
-
".bazelversion"
|
|
2244
|
-
],
|
|
2245
|
-
"rootMarkers": [
|
|
2246
|
-
"MODULE.bazel",
|
|
2247
|
-
"WORKSPACE.bazel",
|
|
2248
|
-
"WORKSPACE"
|
|
2249
|
-
]
|
|
2250
|
-
},
|
|
2251
|
-
"optOut": {
|
|
2252
|
-
"configPath": "meta.bazelIntegration.enabled",
|
|
2253
|
-
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
2254
|
-
},
|
|
2255
|
-
"targetConventions": {
|
|
2256
|
-
"build": "bazel build //...",
|
|
2257
|
-
"coverage": "bazel coverage //...",
|
|
2258
|
-
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
2259
|
-
"format": "bazel run //tools/format:check",
|
|
2260
|
-
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
2261
|
-
"test": "bazel test //..."
|
|
2262
|
-
}
|
|
2263
|
-
},
|
|
2264
2272
|
"complexityChecks": {
|
|
2265
2273
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
2266
2274
|
"enabledByDefault": true
|
|
2267
2275
|
},
|
|
2276
|
+
"coverageThresholdDescription": "Expressed as a ratio (0-1), e.g., 0.8 = 80% coverage. Must be between 0 and 1.",
|
|
2277
|
+
"coverageThresholdUnit": "ratio",
|
|
2268
2278
|
"defaultCoverageThreshold": 0.8,
|
|
2279
|
+
"executorHints": {
|
|
2280
|
+
"bazel": {
|
|
2281
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
2282
|
+
"ciContract": {
|
|
2283
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
2284
|
+
"deterministicFlags": [
|
|
2285
|
+
"--nokeep_going",
|
|
2286
|
+
"--test_output=errors"
|
|
2287
|
+
],
|
|
2288
|
+
"remoteCache": "Optional; not required for CI",
|
|
2289
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
2290
|
+
},
|
|
2291
|
+
"detectionRules": {
|
|
2292
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
2293
|
+
"optionalMarkers": [
|
|
2294
|
+
".bazelrc",
|
|
2295
|
+
".bazelversion"
|
|
2296
|
+
],
|
|
2297
|
+
"rootMarkers": [
|
|
2298
|
+
"MODULE.bazel",
|
|
2299
|
+
"WORKSPACE.bazel",
|
|
2300
|
+
"WORKSPACE"
|
|
2301
|
+
]
|
|
2302
|
+
},
|
|
2303
|
+
"optOut": {
|
|
2304
|
+
"configPath": "meta.executorHints.bazel.enabled",
|
|
2305
|
+
"description": "Set meta.executorHints.bazel.enabled = false in repo config to disable Bazel hints"
|
|
2306
|
+
},
|
|
2307
|
+
"targetConventions": {
|
|
2308
|
+
"build": "bazel build //...",
|
|
2309
|
+
"coverage": "bazel coverage //...",
|
|
2310
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
2311
|
+
"format": "bazel run //tools/format:check",
|
|
2312
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
2313
|
+
"test": "bazel test //..."
|
|
2314
|
+
}
|
|
2315
|
+
},
|
|
2316
|
+
"description": "Advisory execution substrate hints. Bazel is the first supported executor; future monorepo executors may follow the same pattern."
|
|
2317
|
+
},
|
|
2269
2318
|
"migrationGuide": [
|
|
2270
2319
|
{
|
|
2271
2320
|
"description": "Start by adding pre-commit hooks and core formatting/linting so developers get fast feedback without touching CI.",
|
|
@@ -577,48 +577,52 @@
|
|
|
577
577
|
"azure-devops"
|
|
578
578
|
],
|
|
579
579
|
"meta": {
|
|
580
|
-
"bazelIntegration": {
|
|
581
|
-
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
582
|
-
"ciContract": {
|
|
583
|
-
"configFlag": "--config=ci (define in .bazelrc)",
|
|
584
|
-
"deterministicFlags": [
|
|
585
|
-
"--nokeep_going",
|
|
586
|
-
"--test_output=errors"
|
|
587
|
-
],
|
|
588
|
-
"remoteCache": "Optional; not required for CI",
|
|
589
|
-
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
590
|
-
},
|
|
591
|
-
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
592
|
-
"detectionRules": {
|
|
593
|
-
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
594
|
-
"optionalMarkers": [
|
|
595
|
-
".bazelrc",
|
|
596
|
-
".bazelversion"
|
|
597
|
-
],
|
|
598
|
-
"rootMarkers": [
|
|
599
|
-
"MODULE.bazel",
|
|
600
|
-
"WORKSPACE.bazel",
|
|
601
|
-
"WORKSPACE"
|
|
602
|
-
]
|
|
603
|
-
},
|
|
604
|
-
"optOut": {
|
|
605
|
-
"configPath": "meta.bazelIntegration.enabled",
|
|
606
|
-
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
607
|
-
},
|
|
608
|
-
"targetConventions": {
|
|
609
|
-
"build": "bazel build //...",
|
|
610
|
-
"coverage": "bazel coverage //...",
|
|
611
|
-
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
612
|
-
"format": "bazel run //tools/format:check",
|
|
613
|
-
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
614
|
-
"test": "bazel test //..."
|
|
615
|
-
}
|
|
616
|
-
},
|
|
617
580
|
"complexityChecks": {
|
|
618
581
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
619
582
|
"enabledByDefault": true
|
|
620
583
|
},
|
|
584
|
+
"coverageThresholdDescription": "Expressed as a ratio (0-1), e.g., 0.8 = 80% coverage. Must be between 0 and 1.",
|
|
585
|
+
"coverageThresholdUnit": "ratio",
|
|
621
586
|
"defaultCoverageThreshold": 0.8,
|
|
587
|
+
"executorHints": {
|
|
588
|
+
"bazel": {
|
|
589
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
590
|
+
"ciContract": {
|
|
591
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
592
|
+
"deterministicFlags": [
|
|
593
|
+
"--nokeep_going",
|
|
594
|
+
"--test_output=errors"
|
|
595
|
+
],
|
|
596
|
+
"remoteCache": "Optional; not required for CI",
|
|
597
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
598
|
+
},
|
|
599
|
+
"detectionRules": {
|
|
600
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
601
|
+
"optionalMarkers": [
|
|
602
|
+
".bazelrc",
|
|
603
|
+
".bazelversion"
|
|
604
|
+
],
|
|
605
|
+
"rootMarkers": [
|
|
606
|
+
"MODULE.bazel",
|
|
607
|
+
"WORKSPACE.bazel",
|
|
608
|
+
"WORKSPACE"
|
|
609
|
+
]
|
|
610
|
+
},
|
|
611
|
+
"optOut": {
|
|
612
|
+
"configPath": "meta.executorHints.bazel.enabled",
|
|
613
|
+
"description": "Set meta.executorHints.bazel.enabled = false in repo config to disable Bazel hints"
|
|
614
|
+
},
|
|
615
|
+
"targetConventions": {
|
|
616
|
+
"build": "bazel build //...",
|
|
617
|
+
"coverage": "bazel coverage //...",
|
|
618
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
619
|
+
"format": "bazel run //tools/format:check",
|
|
620
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
621
|
+
"test": "bazel test //..."
|
|
622
|
+
}
|
|
623
|
+
},
|
|
624
|
+
"description": "Advisory execution substrate hints. Bazel is the first supported executor; future monorepo executors may follow the same pattern."
|
|
625
|
+
},
|
|
622
626
|
"migrationGuide": [
|
|
623
627
|
{
|
|
624
628
|
"description": "Start by adding pre-commit hooks and core formatting/linting so developers get fast feedback without touching CI.",
|
|
@@ -577,48 +577,52 @@
|
|
|
577
577
|
"github-actions"
|
|
578
578
|
],
|
|
579
579
|
"meta": {
|
|
580
|
-
"bazelIntegration": {
|
|
581
|
-
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
582
|
-
"ciContract": {
|
|
583
|
-
"configFlag": "--config=ci (define in .bazelrc)",
|
|
584
|
-
"deterministicFlags": [
|
|
585
|
-
"--nokeep_going",
|
|
586
|
-
"--test_output=errors"
|
|
587
|
-
],
|
|
588
|
-
"remoteCache": "Optional; not required for CI",
|
|
589
|
-
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
590
|
-
},
|
|
591
|
-
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
592
|
-
"detectionRules": {
|
|
593
|
-
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
594
|
-
"optionalMarkers": [
|
|
595
|
-
".bazelrc",
|
|
596
|
-
".bazelversion"
|
|
597
|
-
],
|
|
598
|
-
"rootMarkers": [
|
|
599
|
-
"MODULE.bazel",
|
|
600
|
-
"WORKSPACE.bazel",
|
|
601
|
-
"WORKSPACE"
|
|
602
|
-
]
|
|
603
|
-
},
|
|
604
|
-
"optOut": {
|
|
605
|
-
"configPath": "meta.bazelIntegration.enabled",
|
|
606
|
-
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
607
|
-
},
|
|
608
|
-
"targetConventions": {
|
|
609
|
-
"build": "bazel build //...",
|
|
610
|
-
"coverage": "bazel coverage //...",
|
|
611
|
-
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
612
|
-
"format": "bazel run //tools/format:check",
|
|
613
|
-
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
614
|
-
"test": "bazel test //..."
|
|
615
|
-
}
|
|
616
|
-
},
|
|
617
580
|
"complexityChecks": {
|
|
618
581
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
619
582
|
"enabledByDefault": true
|
|
620
583
|
},
|
|
584
|
+
"coverageThresholdDescription": "Expressed as a ratio (0-1), e.g., 0.8 = 80% coverage. Must be between 0 and 1.",
|
|
585
|
+
"coverageThresholdUnit": "ratio",
|
|
621
586
|
"defaultCoverageThreshold": 0.8,
|
|
587
|
+
"executorHints": {
|
|
588
|
+
"bazel": {
|
|
589
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
590
|
+
"ciContract": {
|
|
591
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
592
|
+
"deterministicFlags": [
|
|
593
|
+
"--nokeep_going",
|
|
594
|
+
"--test_output=errors"
|
|
595
|
+
],
|
|
596
|
+
"remoteCache": "Optional; not required for CI",
|
|
597
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
598
|
+
},
|
|
599
|
+
"detectionRules": {
|
|
600
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
601
|
+
"optionalMarkers": [
|
|
602
|
+
".bazelrc",
|
|
603
|
+
".bazelversion"
|
|
604
|
+
],
|
|
605
|
+
"rootMarkers": [
|
|
606
|
+
"MODULE.bazel",
|
|
607
|
+
"WORKSPACE.bazel",
|
|
608
|
+
"WORKSPACE"
|
|
609
|
+
]
|
|
610
|
+
},
|
|
611
|
+
"optOut": {
|
|
612
|
+
"configPath": "meta.executorHints.bazel.enabled",
|
|
613
|
+
"description": "Set meta.executorHints.bazel.enabled = false in repo config to disable Bazel hints"
|
|
614
|
+
},
|
|
615
|
+
"targetConventions": {
|
|
616
|
+
"build": "bazel build //...",
|
|
617
|
+
"coverage": "bazel coverage //...",
|
|
618
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
619
|
+
"format": "bazel run //tools/format:check",
|
|
620
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
621
|
+
"test": "bazel test //..."
|
|
622
|
+
}
|
|
623
|
+
},
|
|
624
|
+
"description": "Advisory execution substrate hints. Bazel is the first supported executor; future monorepo executors may follow the same pattern."
|
|
625
|
+
},
|
|
622
626
|
"migrationGuide": [
|
|
623
627
|
{
|
|
624
628
|
"description": "Start by adding pre-commit hooks and core formatting/linting so developers get fast feedback without touching CI.",
|
|
@@ -646,48 +646,52 @@
|
|
|
646
646
|
"github-actions"
|
|
647
647
|
],
|
|
648
648
|
"meta": {
|
|
649
|
-
"bazelIntegration": {
|
|
650
|
-
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
651
|
-
"ciContract": {
|
|
652
|
-
"configFlag": "--config=ci (define in .bazelrc)",
|
|
653
|
-
"deterministicFlags": [
|
|
654
|
-
"--nokeep_going",
|
|
655
|
-
"--test_output=errors"
|
|
656
|
-
],
|
|
657
|
-
"remoteCache": "Optional; not required for CI",
|
|
658
|
-
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
659
|
-
},
|
|
660
|
-
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
661
|
-
"detectionRules": {
|
|
662
|
-
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
663
|
-
"optionalMarkers": [
|
|
664
|
-
".bazelrc",
|
|
665
|
-
".bazelversion"
|
|
666
|
-
],
|
|
667
|
-
"rootMarkers": [
|
|
668
|
-
"MODULE.bazel",
|
|
669
|
-
"WORKSPACE.bazel",
|
|
670
|
-
"WORKSPACE"
|
|
671
|
-
]
|
|
672
|
-
},
|
|
673
|
-
"optOut": {
|
|
674
|
-
"configPath": "meta.bazelIntegration.enabled",
|
|
675
|
-
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
676
|
-
},
|
|
677
|
-
"targetConventions": {
|
|
678
|
-
"build": "bazel build //...",
|
|
679
|
-
"coverage": "bazel coverage //...",
|
|
680
|
-
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
681
|
-
"format": "bazel run //tools/format:check",
|
|
682
|
-
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
683
|
-
"test": "bazel test //..."
|
|
684
|
-
}
|
|
685
|
-
},
|
|
686
649
|
"complexityChecks": {
|
|
687
650
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
688
651
|
"enabledByDefault": true
|
|
689
652
|
},
|
|
653
|
+
"coverageThresholdDescription": "Expressed as a ratio (0-1), e.g., 0.8 = 80% coverage. Must be between 0 and 1.",
|
|
654
|
+
"coverageThresholdUnit": "ratio",
|
|
690
655
|
"defaultCoverageThreshold": 0.8,
|
|
656
|
+
"executorHints": {
|
|
657
|
+
"bazel": {
|
|
658
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
659
|
+
"ciContract": {
|
|
660
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
661
|
+
"deterministicFlags": [
|
|
662
|
+
"--nokeep_going",
|
|
663
|
+
"--test_output=errors"
|
|
664
|
+
],
|
|
665
|
+
"remoteCache": "Optional; not required for CI",
|
|
666
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
667
|
+
},
|
|
668
|
+
"detectionRules": {
|
|
669
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
670
|
+
"optionalMarkers": [
|
|
671
|
+
".bazelrc",
|
|
672
|
+
".bazelversion"
|
|
673
|
+
],
|
|
674
|
+
"rootMarkers": [
|
|
675
|
+
"MODULE.bazel",
|
|
676
|
+
"WORKSPACE.bazel",
|
|
677
|
+
"WORKSPACE"
|
|
678
|
+
]
|
|
679
|
+
},
|
|
680
|
+
"optOut": {
|
|
681
|
+
"configPath": "meta.executorHints.bazel.enabled",
|
|
682
|
+
"description": "Set meta.executorHints.bazel.enabled = false in repo config to disable Bazel hints"
|
|
683
|
+
},
|
|
684
|
+
"targetConventions": {
|
|
685
|
+
"build": "bazel build //...",
|
|
686
|
+
"coverage": "bazel coverage //...",
|
|
687
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
688
|
+
"format": "bazel run //tools/format:check",
|
|
689
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
690
|
+
"test": "bazel test //..."
|
|
691
|
+
}
|
|
692
|
+
},
|
|
693
|
+
"description": "Advisory execution substrate hints. Bazel is the first supported executor; future monorepo executors may follow the same pattern."
|
|
694
|
+
},
|
|
691
695
|
"migrationGuide": [
|
|
692
696
|
{
|
|
693
697
|
"description": "Start by adding pre-commit hooks and core formatting/linting so developers get fast feedback without touching CI.",
|