mirror of
https://github.com/norandom/OpenUltraSAST.git
synced 2026-10-17 03:59:28 +00:00
A lockless npm project (e.g. glance, 2015) resolved an unpinned transitive range to the latest major ([email protected] -> mime@4, which dropped .lookup()), so the built app crashed serving files -- a build-reproducibility defect, not an app or agent fault. The executor now, for the npm-install (no-lock) case only and only when .git is present, resolves dependencies as of the checkout's HEAD commit date via `npm install --before <date>`, giving era-appropriate, compatible versions. npm ci (lockfile present) is untouched, and any git/date failure falls back to plain install. demo.py also recognizes npm-shrinkwrap.json as a lock for the ci-vs-install choice. Tests: executor + smoke 75 passed, demo 107 passed; ruff clean; mypy clean on executor.py. Executor-side change -> image rebuild required. Co-Authored-By: Claude Opus 4.8 <[email protected]>