@oddessentials/repo-standards 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -2
- package/dist/config/standards.csharp-dotnet.azure-devops.json +58 -2
- package/dist/config/standards.csharp-dotnet.github-actions.json +58 -2
- package/dist/config/standards.csharp-dotnet.json +66 -2
- package/dist/config/standards.go.azure-devops.json +51 -2
- package/dist/config/standards.go.github-actions.json +51 -2
- package/dist/config/standards.go.json +59 -2
- package/dist/config/standards.json +217 -2
- package/dist/config/standards.python.azure-devops.json +59 -2
- package/dist/config/standards.python.github-actions.json +59 -2
- package/dist/config/standards.python.json +67 -2
- package/dist/config/standards.rust.azure-devops.json +55 -2
- package/dist/config/standards.rust.github-actions.json +55 -2
- package/dist/config/standards.rust.json +63 -2
- package/dist/config/standards.typescript-js.azure-devops.json +64 -2
- package/dist/config/standards.typescript-js.github-actions.json +64 -2
- package/dist/config/standards.typescript-js.json +72 -2
- package/package.json +1 -1
|
@@ -1517,6 +1517,220 @@
|
|
|
1517
1517
|
}
|
|
1518
1518
|
],
|
|
1519
1519
|
"recommended": [
|
|
1520
|
+
{
|
|
1521
|
+
"appliesTo": {
|
|
1522
|
+
"stacks": [
|
|
1523
|
+
"typescript-js",
|
|
1524
|
+
"csharp-dotnet",
|
|
1525
|
+
"python",
|
|
1526
|
+
"rust",
|
|
1527
|
+
"go"
|
|
1528
|
+
]
|
|
1529
|
+
},
|
|
1530
|
+
"ciHints": {
|
|
1531
|
+
"azure-devops": {
|
|
1532
|
+
"notes": "CI hints are suggested mappings; adjust to your pipeline topology.",
|
|
1533
|
+
"stage": "quality"
|
|
1534
|
+
},
|
|
1535
|
+
"github-actions": {
|
|
1536
|
+
"job": "ci",
|
|
1537
|
+
"notes": "CI hints are suggested mappings; adjust to your workflow structure."
|
|
1538
|
+
}
|
|
1539
|
+
},
|
|
1540
|
+
"description": "Automate dependency updates using Renovate or Dependabot to keep dependencies current and reduce security exposure window.",
|
|
1541
|
+
"id": "dependency-update-automation",
|
|
1542
|
+
"label": "Dependency Update Automation",
|
|
1543
|
+
"stackHints": {
|
|
1544
|
+
"csharp-dotnet": {
|
|
1545
|
+
"anyOfFiles": [
|
|
1546
|
+
"renovate.json",
|
|
1547
|
+
".renovaterc.json",
|
|
1548
|
+
".github/dependabot.yml"
|
|
1549
|
+
],
|
|
1550
|
+
"exampleConfigFiles": [
|
|
1551
|
+
"renovate.json",
|
|
1552
|
+
".github/dependabot.yml"
|
|
1553
|
+
],
|
|
1554
|
+
"exampleTools": [
|
|
1555
|
+
"renovate",
|
|
1556
|
+
"dependabot"
|
|
1557
|
+
],
|
|
1558
|
+
"notes": "Both support NuGet packages. Renovate has better Central Package Management (Directory.Packages.props) support. For AzDO: use self-hosted Renovate runner.",
|
|
1559
|
+
"pinningNotes": "Pin Renovate version in pipeline definition.",
|
|
1560
|
+
"verification": "Check for renovate.json OR .github/dependabot.yml. Verify NuGet update PRs."
|
|
1561
|
+
},
|
|
1562
|
+
"go": {
|
|
1563
|
+
"anyOfFiles": [
|
|
1564
|
+
"renovate.json",
|
|
1565
|
+
".renovaterc.json",
|
|
1566
|
+
".github/dependabot.yml"
|
|
1567
|
+
],
|
|
1568
|
+
"exampleConfigFiles": [
|
|
1569
|
+
"renovate.json",
|
|
1570
|
+
".github/dependabot.yml"
|
|
1571
|
+
],
|
|
1572
|
+
"exampleTools": [
|
|
1573
|
+
"renovate",
|
|
1574
|
+
"dependabot"
|
|
1575
|
+
],
|
|
1576
|
+
"notes": "Both support go.mod/go.sum. Renovate handles replace directives better. Security scanning is covered by dependency-security (govulncheck).",
|
|
1577
|
+
"verification": "Check for renovate.json OR .github/dependabot.yml. Verify Go module PRs."
|
|
1578
|
+
},
|
|
1579
|
+
"python": {
|
|
1580
|
+
"anyOfFiles": [
|
|
1581
|
+
"renovate.json",
|
|
1582
|
+
".renovaterc.json",
|
|
1583
|
+
".github/dependabot.yml"
|
|
1584
|
+
],
|
|
1585
|
+
"exampleConfigFiles": [
|
|
1586
|
+
"renovate.json",
|
|
1587
|
+
".github/dependabot.yml"
|
|
1588
|
+
],
|
|
1589
|
+
"exampleTools": [
|
|
1590
|
+
"renovate",
|
|
1591
|
+
"dependabot"
|
|
1592
|
+
],
|
|
1593
|
+
"notes": "Renovate supports pyproject.toml, requirements.txt, Pipfile, poetry.lock. For AzDO: self-hosted Renovate or schedule-triggered pipeline.",
|
|
1594
|
+
"pinningNotes": "Use requirements.txt with pinned versions or poetry.lock for deterministic installs.",
|
|
1595
|
+
"verification": "Check for renovate.json OR .github/dependabot.yml. Verify Python dependency PRs."
|
|
1596
|
+
},
|
|
1597
|
+
"rust": {
|
|
1598
|
+
"anyOfFiles": [
|
|
1599
|
+
"renovate.json",
|
|
1600
|
+
".renovaterc.json",
|
|
1601
|
+
".github/dependabot.yml"
|
|
1602
|
+
],
|
|
1603
|
+
"exampleConfigFiles": [
|
|
1604
|
+
"renovate.json",
|
|
1605
|
+
".github/dependabot.yml"
|
|
1606
|
+
],
|
|
1607
|
+
"exampleTools": [
|
|
1608
|
+
"renovate",
|
|
1609
|
+
"dependabot"
|
|
1610
|
+
],
|
|
1611
|
+
"notes": "Both support Cargo.toml/Cargo.lock. Works with cargo workspaces. Security scanning is covered by dependency-security (cargo-audit/cargo-deny).",
|
|
1612
|
+
"verification": "Check for renovate.json OR .github/dependabot.yml. Verify Cargo dependency PRs."
|
|
1613
|
+
},
|
|
1614
|
+
"typescript-js": {
|
|
1615
|
+
"anyOfFiles": [
|
|
1616
|
+
"renovate.json",
|
|
1617
|
+
".renovaterc.json",
|
|
1618
|
+
"renovate.json5",
|
|
1619
|
+
".renovaterc.json5",
|
|
1620
|
+
".github/dependabot.yml"
|
|
1621
|
+
],
|
|
1622
|
+
"exampleConfigFiles": [
|
|
1623
|
+
"renovate.json",
|
|
1624
|
+
".github/dependabot.yml"
|
|
1625
|
+
],
|
|
1626
|
+
"exampleTools": [
|
|
1627
|
+
"renovate",
|
|
1628
|
+
"dependabot"
|
|
1629
|
+
],
|
|
1630
|
+
"notes": "Renovate supports GHA + AzDO (self-hosted or Mend Renovate App). Dependabot is GitHub-native only. For AzDO: use Renovate via self-hosted runner, Docker container job, or Mend's hosted service.",
|
|
1631
|
+
"pinningNotes": "Pin Renovate Docker image version in AzDO pipelines for determinism.",
|
|
1632
|
+
"verification": "Check for renovate.json (or .renovaterc.json) OR .github/dependabot.yml. Verify dependency update PRs are being created."
|
|
1633
|
+
}
|
|
1634
|
+
}
|
|
1635
|
+
},
|
|
1636
|
+
{
|
|
1637
|
+
"appliesTo": {
|
|
1638
|
+
"stacks": [
|
|
1639
|
+
"typescript-js",
|
|
1640
|
+
"csharp-dotnet",
|
|
1641
|
+
"python",
|
|
1642
|
+
"rust",
|
|
1643
|
+
"go"
|
|
1644
|
+
]
|
|
1645
|
+
},
|
|
1646
|
+
"ciHints": {
|
|
1647
|
+
"azure-devops": {
|
|
1648
|
+
"notes": "CI hints are suggested mappings; adjust to your pipeline topology.",
|
|
1649
|
+
"stage": "quality"
|
|
1650
|
+
},
|
|
1651
|
+
"github-actions": {
|
|
1652
|
+
"job": "ci",
|
|
1653
|
+
"notes": "CI hints are suggested mappings; adjust to your workflow structure."
|
|
1654
|
+
}
|
|
1655
|
+
},
|
|
1656
|
+
"description": "Enforce module boundaries and import constraints to prevent architectural drift and unwanted coupling.",
|
|
1657
|
+
"id": "dependency-architecture-rules",
|
|
1658
|
+
"label": "Dependency Architecture Rules",
|
|
1659
|
+
"stackHints": {
|
|
1660
|
+
"csharp-dotnet": {
|
|
1661
|
+
"exampleConfigFiles": [
|
|
1662
|
+
"NsDepCop.config.nsdepcop",
|
|
1663
|
+
"ArchitectureTests.cs"
|
|
1664
|
+
],
|
|
1665
|
+
"exampleTools": [
|
|
1666
|
+
"NsDepCop",
|
|
1667
|
+
"ArchUnitNET"
|
|
1668
|
+
],
|
|
1669
|
+
"notes": "NsDepCop enforces namespace dependency rules via config file. ArchUnitNET uses test code for architectural assertions.",
|
|
1670
|
+
"optionalFiles": [
|
|
1671
|
+
"NsDepCop.config.nsdepcop"
|
|
1672
|
+
],
|
|
1673
|
+
"verification": "Build fails on namespace violations, or architecture tests run as part of test suite."
|
|
1674
|
+
},
|
|
1675
|
+
"go": {
|
|
1676
|
+
"exampleConfigFiles": [],
|
|
1677
|
+
"exampleTools": [
|
|
1678
|
+
"depaware",
|
|
1679
|
+
"go-mod-check"
|
|
1680
|
+
],
|
|
1681
|
+
"notes": "Go's module system is simpler. Use internal/ packages for visibility. depaware provides transitive dep analysis. Standard practice: 'go mod tidy && git diff --exit-code go.mod go.sum'.",
|
|
1682
|
+
"verification": "Run 'go mod verify' and 'go mod tidy' with diff check in CI."
|
|
1683
|
+
},
|
|
1684
|
+
"python": {
|
|
1685
|
+
"exampleConfigFiles": [
|
|
1686
|
+
"pyproject.toml",
|
|
1687
|
+
".importlinter"
|
|
1688
|
+
],
|
|
1689
|
+
"exampleTools": [
|
|
1690
|
+
"import-linter",
|
|
1691
|
+
"pydeps"
|
|
1692
|
+
],
|
|
1693
|
+
"notes": "Configure [tool.importlinter] in pyproject.toml OR use standalone .importlinter file. pydeps is visualization-only.",
|
|
1694
|
+
"optionalFiles": [
|
|
1695
|
+
"pyproject.toml",
|
|
1696
|
+
".importlinter"
|
|
1697
|
+
],
|
|
1698
|
+
"verification": "Run 'lint-imports' successfully. Config must exist in pyproject.toml [tool.importlinter] section OR .importlinter file."
|
|
1699
|
+
},
|
|
1700
|
+
"rust": {
|
|
1701
|
+
"exampleConfigFiles": [
|
|
1702
|
+
"deny.toml"
|
|
1703
|
+
],
|
|
1704
|
+
"exampleTools": [
|
|
1705
|
+
"cargo-deny"
|
|
1706
|
+
],
|
|
1707
|
+
"notes": "cargo-deny's [bans] section enforces dependency graph rules (deny specific crates, wildcards). Extend existing config if using for security scanning.",
|
|
1708
|
+
"optionalFiles": [
|
|
1709
|
+
"deny.toml"
|
|
1710
|
+
],
|
|
1711
|
+
"verification": "Run 'cargo deny check bans' to verify dependency constraints."
|
|
1712
|
+
},
|
|
1713
|
+
"typescript-js": {
|
|
1714
|
+
"anyOfFiles": [
|
|
1715
|
+
".dependency-cruiser.cjs",
|
|
1716
|
+
".dependency-cruiser.js",
|
|
1717
|
+
"dependency-cruiser.config.cjs",
|
|
1718
|
+
".dependency-cruiser.mjs"
|
|
1719
|
+
],
|
|
1720
|
+
"exampleConfigFiles": [
|
|
1721
|
+
".dependency-cruiser.cjs",
|
|
1722
|
+
".dependency-cruiser.js",
|
|
1723
|
+
"dependency-cruiser.config.cjs"
|
|
1724
|
+
],
|
|
1725
|
+
"exampleTools": [
|
|
1726
|
+
"dependency-cruiser"
|
|
1727
|
+
],
|
|
1728
|
+
"notes": "Define forbidden imports, layer rules, and circular dependency bans. Run in CI as blocking check.",
|
|
1729
|
+
"pinningNotes": "Pin dependency-cruiser version in package.json devDependencies.",
|
|
1730
|
+
"verification": "Run 'npx depcruise --validate' or equivalent. Verify architectural rules are documented and enforced."
|
|
1731
|
+
}
|
|
1732
|
+
}
|
|
1733
|
+
},
|
|
1520
1734
|
{
|
|
1521
1735
|
"appliesTo": {
|
|
1522
1736
|
"stacks": [
|
|
@@ -1864,7 +2078,8 @@
|
|
|
1864
2078
|
"type-checking",
|
|
1865
2079
|
"unit-test-runner",
|
|
1866
2080
|
"unit-test-reporter",
|
|
1867
|
-
"dependency-security"
|
|
2081
|
+
"dependency-security",
|
|
2082
|
+
"dependency-update-automation"
|
|
1868
2083
|
],
|
|
1869
2084
|
"notes": "Pin tool and runtime versions in CI and containers to avoid flaky differences across environments.",
|
|
1870
2085
|
"step": 3,
|
|
@@ -1912,5 +2127,5 @@
|
|
|
1912
2127
|
"languageFamily": "js"
|
|
1913
2128
|
}
|
|
1914
2129
|
},
|
|
1915
|
-
"version":
|
|
2130
|
+
"version": 2
|
|
1916
2131
|
}
|
|
@@ -404,6 +404,62 @@
|
|
|
404
404
|
}
|
|
405
405
|
],
|
|
406
406
|
"recommended": [
|
|
407
|
+
{
|
|
408
|
+
"ciHints": {
|
|
409
|
+
"azure-devops": {
|
|
410
|
+
"notes": "CI hints are suggested mappings; adjust to your pipeline topology.",
|
|
411
|
+
"stage": "quality"
|
|
412
|
+
}
|
|
413
|
+
},
|
|
414
|
+
"description": "Automate dependency updates using Renovate or Dependabot to keep dependencies current and reduce security exposure window.",
|
|
415
|
+
"id": "dependency-update-automation",
|
|
416
|
+
"label": "Dependency Update Automation",
|
|
417
|
+
"stack": {
|
|
418
|
+
"anyOfFiles": [
|
|
419
|
+
"renovate.json",
|
|
420
|
+
".renovaterc.json",
|
|
421
|
+
".github/dependabot.yml"
|
|
422
|
+
],
|
|
423
|
+
"exampleConfigFiles": [
|
|
424
|
+
"renovate.json",
|
|
425
|
+
".github/dependabot.yml"
|
|
426
|
+
],
|
|
427
|
+
"exampleTools": [
|
|
428
|
+
"renovate",
|
|
429
|
+
"dependabot"
|
|
430
|
+
],
|
|
431
|
+
"notes": "Renovate supports pyproject.toml, requirements.txt, Pipfile, poetry.lock. For AzDO: self-hosted Renovate or schedule-triggered pipeline.",
|
|
432
|
+
"pinningNotes": "Use requirements.txt with pinned versions or poetry.lock for deterministic installs.",
|
|
433
|
+
"verification": "Check for renovate.json OR .github/dependabot.yml. Verify Python dependency PRs."
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"ciHints": {
|
|
438
|
+
"azure-devops": {
|
|
439
|
+
"notes": "CI hints are suggested mappings; adjust to your pipeline topology.",
|
|
440
|
+
"stage": "quality"
|
|
441
|
+
}
|
|
442
|
+
},
|
|
443
|
+
"description": "Enforce module boundaries and import constraints to prevent architectural drift and unwanted coupling.",
|
|
444
|
+
"id": "dependency-architecture-rules",
|
|
445
|
+
"label": "Dependency Architecture Rules",
|
|
446
|
+
"stack": {
|
|
447
|
+
"exampleConfigFiles": [
|
|
448
|
+
"pyproject.toml",
|
|
449
|
+
".importlinter"
|
|
450
|
+
],
|
|
451
|
+
"exampleTools": [
|
|
452
|
+
"import-linter",
|
|
453
|
+
"pydeps"
|
|
454
|
+
],
|
|
455
|
+
"notes": "Configure [tool.importlinter] in pyproject.toml OR use standalone .importlinter file. pydeps is visualization-only.",
|
|
456
|
+
"optionalFiles": [
|
|
457
|
+
"pyproject.toml",
|
|
458
|
+
".importlinter"
|
|
459
|
+
],
|
|
460
|
+
"verification": "Run 'lint-imports' successfully. Config must exist in pyproject.toml [tool.importlinter] section OR .importlinter file."
|
|
461
|
+
}
|
|
462
|
+
},
|
|
407
463
|
{
|
|
408
464
|
"ciHints": {
|
|
409
465
|
"azure-devops": {
|
|
@@ -525,7 +581,8 @@
|
|
|
525
581
|
"type-checking",
|
|
526
582
|
"unit-test-runner",
|
|
527
583
|
"unit-test-reporter",
|
|
528
|
-
"dependency-security"
|
|
584
|
+
"dependency-security",
|
|
585
|
+
"dependency-update-automation"
|
|
529
586
|
],
|
|
530
587
|
"notes": "Pin tool and runtime versions in CI and containers to avoid flaky differences across environments.",
|
|
531
588
|
"step": 3,
|
|
@@ -553,5 +610,5 @@
|
|
|
553
610
|
},
|
|
554
611
|
"stack": "python",
|
|
555
612
|
"stackLabel": "Python",
|
|
556
|
-
"version":
|
|
613
|
+
"version": 2
|
|
557
614
|
}
|
|
@@ -404,6 +404,62 @@
|
|
|
404
404
|
}
|
|
405
405
|
],
|
|
406
406
|
"recommended": [
|
|
407
|
+
{
|
|
408
|
+
"ciHints": {
|
|
409
|
+
"github-actions": {
|
|
410
|
+
"job": "ci",
|
|
411
|
+
"notes": "CI hints are suggested mappings; adjust to your workflow structure."
|
|
412
|
+
}
|
|
413
|
+
},
|
|
414
|
+
"description": "Automate dependency updates using Renovate or Dependabot to keep dependencies current and reduce security exposure window.",
|
|
415
|
+
"id": "dependency-update-automation",
|
|
416
|
+
"label": "Dependency Update Automation",
|
|
417
|
+
"stack": {
|
|
418
|
+
"anyOfFiles": [
|
|
419
|
+
"renovate.json",
|
|
420
|
+
".renovaterc.json",
|
|
421
|
+
".github/dependabot.yml"
|
|
422
|
+
],
|
|
423
|
+
"exampleConfigFiles": [
|
|
424
|
+
"renovate.json",
|
|
425
|
+
".github/dependabot.yml"
|
|
426
|
+
],
|
|
427
|
+
"exampleTools": [
|
|
428
|
+
"renovate",
|
|
429
|
+
"dependabot"
|
|
430
|
+
],
|
|
431
|
+
"notes": "Renovate supports pyproject.toml, requirements.txt, Pipfile, poetry.lock. For AzDO: self-hosted Renovate or schedule-triggered pipeline.",
|
|
432
|
+
"pinningNotes": "Use requirements.txt with pinned versions or poetry.lock for deterministic installs.",
|
|
433
|
+
"verification": "Check for renovate.json OR .github/dependabot.yml. Verify Python dependency PRs."
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"ciHints": {
|
|
438
|
+
"github-actions": {
|
|
439
|
+
"job": "ci",
|
|
440
|
+
"notes": "CI hints are suggested mappings; adjust to your workflow structure."
|
|
441
|
+
}
|
|
442
|
+
},
|
|
443
|
+
"description": "Enforce module boundaries and import constraints to prevent architectural drift and unwanted coupling.",
|
|
444
|
+
"id": "dependency-architecture-rules",
|
|
445
|
+
"label": "Dependency Architecture Rules",
|
|
446
|
+
"stack": {
|
|
447
|
+
"exampleConfigFiles": [
|
|
448
|
+
"pyproject.toml",
|
|
449
|
+
".importlinter"
|
|
450
|
+
],
|
|
451
|
+
"exampleTools": [
|
|
452
|
+
"import-linter",
|
|
453
|
+
"pydeps"
|
|
454
|
+
],
|
|
455
|
+
"notes": "Configure [tool.importlinter] in pyproject.toml OR use standalone .importlinter file. pydeps is visualization-only.",
|
|
456
|
+
"optionalFiles": [
|
|
457
|
+
"pyproject.toml",
|
|
458
|
+
".importlinter"
|
|
459
|
+
],
|
|
460
|
+
"verification": "Run 'lint-imports' successfully. Config must exist in pyproject.toml [tool.importlinter] section OR .importlinter file."
|
|
461
|
+
}
|
|
462
|
+
},
|
|
407
463
|
{
|
|
408
464
|
"ciHints": {
|
|
409
465
|
"github-actions": {
|
|
@@ -525,7 +581,8 @@
|
|
|
525
581
|
"type-checking",
|
|
526
582
|
"unit-test-runner",
|
|
527
583
|
"unit-test-reporter",
|
|
528
|
-
"dependency-security"
|
|
584
|
+
"dependency-security",
|
|
585
|
+
"dependency-update-automation"
|
|
529
586
|
],
|
|
530
587
|
"notes": "Pin tool and runtime versions in CI and containers to avoid flaky differences across environments.",
|
|
531
588
|
"step": 3,
|
|
@@ -553,5 +610,5 @@
|
|
|
553
610
|
},
|
|
554
611
|
"stack": "python",
|
|
555
612
|
"stackLabel": "Python",
|
|
556
|
-
"version":
|
|
613
|
+
"version": 2
|
|
557
614
|
}
|
|
@@ -452,6 +452,70 @@
|
|
|
452
452
|
}
|
|
453
453
|
],
|
|
454
454
|
"recommended": [
|
|
455
|
+
{
|
|
456
|
+
"ciHints": {
|
|
457
|
+
"azure-devops": {
|
|
458
|
+
"notes": "CI hints are suggested mappings; adjust to your pipeline topology.",
|
|
459
|
+
"stage": "quality"
|
|
460
|
+
},
|
|
461
|
+
"github-actions": {
|
|
462
|
+
"job": "ci",
|
|
463
|
+
"notes": "CI hints are suggested mappings; adjust to your workflow structure."
|
|
464
|
+
}
|
|
465
|
+
},
|
|
466
|
+
"description": "Automate dependency updates using Renovate or Dependabot to keep dependencies current and reduce security exposure window.",
|
|
467
|
+
"id": "dependency-update-automation",
|
|
468
|
+
"label": "Dependency Update Automation",
|
|
469
|
+
"stack": {
|
|
470
|
+
"anyOfFiles": [
|
|
471
|
+
"renovate.json",
|
|
472
|
+
".renovaterc.json",
|
|
473
|
+
".github/dependabot.yml"
|
|
474
|
+
],
|
|
475
|
+
"exampleConfigFiles": [
|
|
476
|
+
"renovate.json",
|
|
477
|
+
".github/dependabot.yml"
|
|
478
|
+
],
|
|
479
|
+
"exampleTools": [
|
|
480
|
+
"renovate",
|
|
481
|
+
"dependabot"
|
|
482
|
+
],
|
|
483
|
+
"notes": "Renovate supports pyproject.toml, requirements.txt, Pipfile, poetry.lock. For AzDO: self-hosted Renovate or schedule-triggered pipeline.",
|
|
484
|
+
"pinningNotes": "Use requirements.txt with pinned versions or poetry.lock for deterministic installs.",
|
|
485
|
+
"verification": "Check for renovate.json OR .github/dependabot.yml. Verify Python dependency PRs."
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"ciHints": {
|
|
490
|
+
"azure-devops": {
|
|
491
|
+
"notes": "CI hints are suggested mappings; adjust to your pipeline topology.",
|
|
492
|
+
"stage": "quality"
|
|
493
|
+
},
|
|
494
|
+
"github-actions": {
|
|
495
|
+
"job": "ci",
|
|
496
|
+
"notes": "CI hints are suggested mappings; adjust to your workflow structure."
|
|
497
|
+
}
|
|
498
|
+
},
|
|
499
|
+
"description": "Enforce module boundaries and import constraints to prevent architectural drift and unwanted coupling.",
|
|
500
|
+
"id": "dependency-architecture-rules",
|
|
501
|
+
"label": "Dependency Architecture Rules",
|
|
502
|
+
"stack": {
|
|
503
|
+
"exampleConfigFiles": [
|
|
504
|
+
"pyproject.toml",
|
|
505
|
+
".importlinter"
|
|
506
|
+
],
|
|
507
|
+
"exampleTools": [
|
|
508
|
+
"import-linter",
|
|
509
|
+
"pydeps"
|
|
510
|
+
],
|
|
511
|
+
"notes": "Configure [tool.importlinter] in pyproject.toml OR use standalone .importlinter file. pydeps is visualization-only.",
|
|
512
|
+
"optionalFiles": [
|
|
513
|
+
"pyproject.toml",
|
|
514
|
+
".importlinter"
|
|
515
|
+
],
|
|
516
|
+
"verification": "Run 'lint-imports' successfully. Config must exist in pyproject.toml [tool.importlinter] section OR .importlinter file."
|
|
517
|
+
}
|
|
518
|
+
},
|
|
455
519
|
{
|
|
456
520
|
"ciHints": {
|
|
457
521
|
"azure-devops": {
|
|
@@ -586,7 +650,8 @@
|
|
|
586
650
|
"type-checking",
|
|
587
651
|
"unit-test-runner",
|
|
588
652
|
"unit-test-reporter",
|
|
589
|
-
"dependency-security"
|
|
653
|
+
"dependency-security",
|
|
654
|
+
"dependency-update-automation"
|
|
590
655
|
],
|
|
591
656
|
"notes": "Pin tool and runtime versions in CI and containers to avoid flaky differences across environments.",
|
|
592
657
|
"step": 3,
|
|
@@ -614,5 +679,5 @@
|
|
|
614
679
|
},
|
|
615
680
|
"stack": "python",
|
|
616
681
|
"stackLabel": "Python",
|
|
617
|
-
"version":
|
|
682
|
+
"version": 2
|
|
618
683
|
}
|
|
@@ -385,6 +385,58 @@
|
|
|
385
385
|
}
|
|
386
386
|
],
|
|
387
387
|
"recommended": [
|
|
388
|
+
{
|
|
389
|
+
"ciHints": {
|
|
390
|
+
"azure-devops": {
|
|
391
|
+
"notes": "CI hints are suggested mappings; adjust to your pipeline topology.",
|
|
392
|
+
"stage": "quality"
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
"description": "Automate dependency updates using Renovate or Dependabot to keep dependencies current and reduce security exposure window.",
|
|
396
|
+
"id": "dependency-update-automation",
|
|
397
|
+
"label": "Dependency Update Automation",
|
|
398
|
+
"stack": {
|
|
399
|
+
"anyOfFiles": [
|
|
400
|
+
"renovate.json",
|
|
401
|
+
".renovaterc.json",
|
|
402
|
+
".github/dependabot.yml"
|
|
403
|
+
],
|
|
404
|
+
"exampleConfigFiles": [
|
|
405
|
+
"renovate.json",
|
|
406
|
+
".github/dependabot.yml"
|
|
407
|
+
],
|
|
408
|
+
"exampleTools": [
|
|
409
|
+
"renovate",
|
|
410
|
+
"dependabot"
|
|
411
|
+
],
|
|
412
|
+
"notes": "Both support Cargo.toml/Cargo.lock. Works with cargo workspaces. Security scanning is covered by dependency-security (cargo-audit/cargo-deny).",
|
|
413
|
+
"verification": "Check for renovate.json OR .github/dependabot.yml. Verify Cargo dependency PRs."
|
|
414
|
+
}
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
"ciHints": {
|
|
418
|
+
"azure-devops": {
|
|
419
|
+
"notes": "CI hints are suggested mappings; adjust to your pipeline topology.",
|
|
420
|
+
"stage": "quality"
|
|
421
|
+
}
|
|
422
|
+
},
|
|
423
|
+
"description": "Enforce module boundaries and import constraints to prevent architectural drift and unwanted coupling.",
|
|
424
|
+
"id": "dependency-architecture-rules",
|
|
425
|
+
"label": "Dependency Architecture Rules",
|
|
426
|
+
"stack": {
|
|
427
|
+
"exampleConfigFiles": [
|
|
428
|
+
"deny.toml"
|
|
429
|
+
],
|
|
430
|
+
"exampleTools": [
|
|
431
|
+
"cargo-deny"
|
|
432
|
+
],
|
|
433
|
+
"notes": "cargo-deny's [bans] section enforces dependency graph rules (deny specific crates, wildcards). Extend existing config if using for security scanning.",
|
|
434
|
+
"optionalFiles": [
|
|
435
|
+
"deny.toml"
|
|
436
|
+
],
|
|
437
|
+
"verification": "Run 'cargo deny check bans' to verify dependency constraints."
|
|
438
|
+
}
|
|
439
|
+
},
|
|
388
440
|
{
|
|
389
441
|
"ciHints": {
|
|
390
442
|
"azure-devops": {
|
|
@@ -507,7 +559,8 @@
|
|
|
507
559
|
"type-checking",
|
|
508
560
|
"unit-test-runner",
|
|
509
561
|
"unit-test-reporter",
|
|
510
|
-
"dependency-security"
|
|
562
|
+
"dependency-security",
|
|
563
|
+
"dependency-update-automation"
|
|
511
564
|
],
|
|
512
565
|
"notes": "Pin tool and runtime versions in CI and containers to avoid flaky differences across environments.",
|
|
513
566
|
"step": 3,
|
|
@@ -535,5 +588,5 @@
|
|
|
535
588
|
},
|
|
536
589
|
"stack": "rust",
|
|
537
590
|
"stackLabel": "Rust",
|
|
538
|
-
"version":
|
|
591
|
+
"version": 2
|
|
539
592
|
}
|
|
@@ -385,6 +385,58 @@
|
|
|
385
385
|
}
|
|
386
386
|
],
|
|
387
387
|
"recommended": [
|
|
388
|
+
{
|
|
389
|
+
"ciHints": {
|
|
390
|
+
"github-actions": {
|
|
391
|
+
"job": "ci",
|
|
392
|
+
"notes": "CI hints are suggested mappings; adjust to your workflow structure."
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
"description": "Automate dependency updates using Renovate or Dependabot to keep dependencies current and reduce security exposure window.",
|
|
396
|
+
"id": "dependency-update-automation",
|
|
397
|
+
"label": "Dependency Update Automation",
|
|
398
|
+
"stack": {
|
|
399
|
+
"anyOfFiles": [
|
|
400
|
+
"renovate.json",
|
|
401
|
+
".renovaterc.json",
|
|
402
|
+
".github/dependabot.yml"
|
|
403
|
+
],
|
|
404
|
+
"exampleConfigFiles": [
|
|
405
|
+
"renovate.json",
|
|
406
|
+
".github/dependabot.yml"
|
|
407
|
+
],
|
|
408
|
+
"exampleTools": [
|
|
409
|
+
"renovate",
|
|
410
|
+
"dependabot"
|
|
411
|
+
],
|
|
412
|
+
"notes": "Both support Cargo.toml/Cargo.lock. Works with cargo workspaces. Security scanning is covered by dependency-security (cargo-audit/cargo-deny).",
|
|
413
|
+
"verification": "Check for renovate.json OR .github/dependabot.yml. Verify Cargo dependency PRs."
|
|
414
|
+
}
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
"ciHints": {
|
|
418
|
+
"github-actions": {
|
|
419
|
+
"job": "ci",
|
|
420
|
+
"notes": "CI hints are suggested mappings; adjust to your workflow structure."
|
|
421
|
+
}
|
|
422
|
+
},
|
|
423
|
+
"description": "Enforce module boundaries and import constraints to prevent architectural drift and unwanted coupling.",
|
|
424
|
+
"id": "dependency-architecture-rules",
|
|
425
|
+
"label": "Dependency Architecture Rules",
|
|
426
|
+
"stack": {
|
|
427
|
+
"exampleConfigFiles": [
|
|
428
|
+
"deny.toml"
|
|
429
|
+
],
|
|
430
|
+
"exampleTools": [
|
|
431
|
+
"cargo-deny"
|
|
432
|
+
],
|
|
433
|
+
"notes": "cargo-deny's [bans] section enforces dependency graph rules (deny specific crates, wildcards). Extend existing config if using for security scanning.",
|
|
434
|
+
"optionalFiles": [
|
|
435
|
+
"deny.toml"
|
|
436
|
+
],
|
|
437
|
+
"verification": "Run 'cargo deny check bans' to verify dependency constraints."
|
|
438
|
+
}
|
|
439
|
+
},
|
|
388
440
|
{
|
|
389
441
|
"ciHints": {
|
|
390
442
|
"github-actions": {
|
|
@@ -507,7 +559,8 @@
|
|
|
507
559
|
"type-checking",
|
|
508
560
|
"unit-test-runner",
|
|
509
561
|
"unit-test-reporter",
|
|
510
|
-
"dependency-security"
|
|
562
|
+
"dependency-security",
|
|
563
|
+
"dependency-update-automation"
|
|
511
564
|
],
|
|
512
565
|
"notes": "Pin tool and runtime versions in CI and containers to avoid flaky differences across environments.",
|
|
513
566
|
"step": 3,
|
|
@@ -535,5 +588,5 @@
|
|
|
535
588
|
},
|
|
536
589
|
"stack": "rust",
|
|
537
590
|
"stackLabel": "Rust",
|
|
538
|
-
"version":
|
|
591
|
+
"version": 2
|
|
539
592
|
}
|