hermes-agent/tests/lints
ethernet 3f867b2ca9 feat(lints): require an age-gated .npmrc beside every package-lock.json
npm reads the project's own .npmrc, $HOME, and the global config. It
does not walk up parent directories (npm/npm#11437 is still open), so
the root .npmrc gates the root install and nothing else. Two nested
projects were resolving with no supply-chain quarantine at all:
scripts/whatsapp-bridge and plugins/platforms/photon/sidecar. Both now
carry their own gate, and `npm ci` in each returns its lockfile
byte-identical.

A project is a directory holding both package-lock.json and
package.json -- the pair npm resolves against. A lockfile with no
manifest beside it is a vendored artifact; nix/ keeps one for a
hash-pinned fetch that never consults npm config.

The required floor is read from the root .npmrc instead of hardcoded,
so the standard is raised in one place. A nested project may be
stricter, never weaker.
2026-08-14 09:04:06 -04:00
..
test_lint_runner.py
…
test_migrated_lints.py feat(lints): hold package.json overrides to the exact-version rule 2026-08-14 08:59:56 -04:00
test_npmrc_stale_exclude.py autofix: carve lockfiles out of the .json allowance; verify npmrc writes 2026-08-14 08:33:55 -04:00
test_policy_lints.py feat(lints): require an age-gated .npmrc beside every package-lock.json 2026-08-14 09:04:06 -04:00
test_uv_stale_exclude.py fix(lints): anchor uv exclude-newer-package key edits to whole keys 2026-08-14 08:57:23 -04:00