From cd9bc9311e9625328ec406efbe647826349ad5c5 Mon Sep 17 00:00:00 2001 From: Daniel Fry Date: Sun, 14 Jun 2026 16:38:40 +0100 Subject: [PATCH 1/4] =?UTF-8?q?build:=20supply-chain=20hardening=20?= =?UTF-8?q?=E2=80=94=20release-age=20gate,=20cooldown,=20exact=20dev=20pin?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - bunfig.toml: minimumReleaseAge=604800 (7d) — refuse freshly-published versions - .github/dependabot.yml: bun + github-actions, weekly, 7-day cooldown, grouped - syncpack (.syncpackrc.json): devDependencies pinned to exact versions across all packages; runtime/peer keep ranges. lint:deps/fix:deps scripts; CI-enforced. typescript/eslint/@typescript-eslint/utils kept as ranges (entangled peer/dev). - add bugs field to publishable packages - document the posture in SECURITY.md + CONTRIBUTING.md --- .github/dependabot.yml | 38 ++++ .syncpackrc.json | 21 ++ CONTRIBUTING.md | 11 + SECURITY.md | 12 + bun.lock | 205 ++++++++++-------- bunfig.toml | 6 + package.json | 15 +- packages/eslint-plugin-faultline/package.json | 29 ++- packages/faultline-cli/package.json | 7 +- packages/faultline-vscode/package.json | 7 +- packages/faultline/package.json | 5 +- 11 files changed, 241 insertions(+), 115 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .syncpackrc.json diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..e880ed7 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,38 @@ +version: 2 +updates: + - package-ecosystem: bun + directory: / + schedule: + interval: weekly + day: monday + open-pull-requests-limit: 10 + # Supply-chain hardening: hold update PRs until a version has been public for + # at least seven days, long enough for most malicious releases to be yanked. + # Mirrors the install-time minimumReleaseAge gate in bunfig.toml. + cooldown: + default-days: 7 + semver-major-days: 7 + semver-minor-days: 7 + semver-patch-days: 7 + ignore: + # Keep @types/node on the major matching the lowest supported engines.node + # (>=18). A higher major would let the type-checker accept Node APIs newer + # than our floor. + - dependency-name: "@types/node" + update-types: ["version-update:semver-major"] + groups: + dev-dependencies: + dependency-type: development + update-types: [minor, patch] + production-dependencies: + dependency-type: production + update-types: [minor, patch] + + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + day: monday + open-pull-requests-limit: 5 + cooldown: + default-days: 7 diff --git a/.syncpackrc.json b/.syncpackrc.json new file mode 100644 index 0000000..0733084 --- /dev/null +++ b/.syncpackrc.json @@ -0,0 +1,21 @@ +{ + "versionGroups": [ + { + "label": "Peer deps intentionally use wide ranges; dev pins the version we test against, so cross-instance version differences are expected.", + "dependencies": ["eslint", "typescript", "@typescript-eslint/utils"], + "isIgnored": true + } + ], + "semverGroups": [ + { + "label": "devDependencies are pinned to exact versions (supply-chain hardening)", + "dependencyTypes": ["dev"], + "range": "" + }, + { + "label": "runtime + peer deps keep author-defined ranges so consumers can dedupe", + "dependencyTypes": ["prod", "peer"], + "isIgnored": true + } + ] +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e2e3456..439ad22 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -39,6 +39,17 @@ bun run build # build all packages Per-package: `bun --filter ''