Goal
Make the reusable actions execute the exact dependency graph that was reviewed and tested.
Current gap
The composite actions run npm install --ignore-scripts at execution time and the repository currently has no committed package-lock.json. Direct dependencies are exact, but transitive resolution can still change between CI validation and consumer execution.
Target
Prefer a runtime artifact that does not resolve package dependencies dynamically.
Evaluate in this order:
- commit a lockfile and use
npm ci --ignore-scripts everywhere;
- build and verify deterministic
dist/ output;
- if practical, make the reusable action execute prebuilt/bundled JavaScript so consumers do not install development dependencies at runtime.
Quality requirements
- Dependabot updates the lockfile;
- REUSE metadata covers generated dependency metadata appropriately;
- CI fails when
package.json and lockfile diverge;
- CI verifies committed/bundled output matches source;
- consumers remain pinned to immutable action SHAs;
- no package lifecycle scripts run during action execution.
Note
This is a hardening follow-up and should not block the first v0.1.0 release mechanism.
Goal
Make the reusable actions execute the exact dependency graph that was reviewed and tested.
Current gap
The composite actions run
npm install --ignore-scriptsat execution time and the repository currently has no committedpackage-lock.json. Direct dependencies are exact, but transitive resolution can still change between CI validation and consumer execution.Target
Prefer a runtime artifact that does not resolve package dependencies dynamically.
Evaluate in this order:
npm ci --ignore-scriptseverywhere;dist/output;Quality requirements
package.jsonand lockfile diverge;Note
This is a hardening follow-up and should not block the first
v0.1.0release mechanism.