utils/dependency-freshness.allowlist.yaml
Krzysztof kuhy Rudnicki a639416cf5
Some checks failed
dependency freshness / dependencies on newest stable (push) Has been cancelled
file length / file-length (push) Has been cancelled
md-naming / markdown naming convention (push) Has been cancelled
palette drift / palette (push) Has been cancelled
shared gate tests / gate unit tests (push) Has been cancelled
dep_freshness: blocker parsing breaks on scoped npm package names
blocker split blocked_by on the first "@", so "transitive:@scope/name@1.2.3"
read the package name as "" and left "scope/name@1.2.3" stuck to the
version -- the format check then rejected the entry outright. rpartition
splits on the last "@" instead, which is always the version separator
even when the package name carries its own leading "@".

Found adding a typescript-eslint entry (blocked by its own
@typescript-eslint/scope-manager not having published 8.70.1 yet) in
signal-bot.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Zg7ULrGyB1gMcKC1mkbLb
2026-09-24 13:42:28 +02:00

57 lines
2.6 KiB
YAML

# Dependencies deliberately held below latest stable, and why.
#
# THIS IS THE FLEET-WIDE FILE. Every repo inherits it; a repo's own
# dependency-freshness.allowlist.yaml adds to it, and an entry there for the
# same ecosystem:package overrides the one here. A blocker like "typescript-eslint
# does not support TS 7" holds in every repo that pins typescript, and copying
# it into eight of them would give eight entries that rot independently.
#
# Two entry classes, and the distinction is load-bearing:
#
# blocked_by: transitive:<pkg>@<ver>
# A PREDICATE. The gate re-evaluates the blocker on every run and the
# entry clears itself the moment upstream moves. It must NOT carry
# `expires` -- a calendar date nobody can act on only turns the gate red
# for a reason no commit can fix.
#
# anything else
# Discretionary. Requires `expires`, capped at 90 days, and fails once
# past.
#
# Every entry prints loudly on every gate run and at session start. An
# exception nobody sees any more is a suppression.
exceptions:
- ecosystem: npm
package: typescript
pinned: "6.0.3"
latest_known: "7.0.2"
reason: >-
typescript-eslint 8.70.0 -- itself the latest release -- declares
`typescript: ">=4.8.4 <6.1.0"` and throws "typescript-eslint does not
support TS 7.0" when eslint loads its config. No 9.x exists. Taking TS 7
would mean dropping every type-aware lint rule from every repo that pins
it, so the compiler waits for the linter.
Held fleet-wide: this blocks ts_core, web_ui, konbini-67, iron-and-anvil,
awesome-mcp-explorer, europe-county-map and every other repo pinning
typescript, which is exactly why the entry lives here and not in eight
separate files.
blocked_by: "transitive:typescript-eslint@8.70.0"
- ecosystem: npm
package: typescript-eslint
pinned: "8.70.0"
latest_known: "8.70.1"
reason: >-
The meta-package published 8.70.1, but its own dependency
@typescript-eslint/scope-manager has not: `pnpm install --force`
resolves the tree and fails with ERR_PNPM_NO_MATCHING_VERSION,
because typescript-eslint@8.70.1 requires
@typescript-eslint/scope-manager@8.70.1 and the npm registry's
latest published scope-manager is still 8.70.0. Not installable at
any pin, so 8.70.0 -- the last version whose whole dependency tree
actually resolves -- is what every repo pinning it stays on.
Held fleet-wide for the same reason the typescript entry above is:
it blocks every repo pinning typescript-eslint, not just this one.
blocked_by: "transitive:@typescript-eslint/scope-manager@8.70.0"