You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Security remediation #75 exposed a reproducibility gap in the repository dependency-control plane. An earlier lockfile regeneration under an unbound Node/npm toolchain produced the intended nanoid update plus unrelated package metadata churn. Green CI alone therefore did not establish that targeted lockfile regeneration was minimal or reproducible.
Current protected / implementation lineage
PR #76 is now integrated on protected main as merge commit c85d710804139c0697d7ef8fa47d02b1389e6d84; the bounded nanoid@3.3.17 remediation is protected truth.
The old broad implementation #78 and dependency-stacked replacement #89 are superseded/closed. Clean protected-main successor PR #91 is the only active implementation line, exact head ebde3720ee27292be0ce3315986e0438dd66af9f.
#91 preserves the reviewed unique package-manager/reproducibility controls on top of integrated #76:
Node.js 24.19.0 / npm 11.17.0 exact identity;
fail-closed package-manager mismatch checks;
strict-allow-scripts=true with reviewed lifecycle-script identities;
The clean technical result is not merge authority. Live enforceable governance under #27 and qualifying independent formal review remain fail-closed gates.
Acceptance criteria
Repository-owned implementation
Select/document one exact Node/npm toolchain for lockfile-sensitive work.
Enforce package-manager identity before install/lockfile-sensitive validation.
Add deterministic lockfile change control that detects unrelated metadata churn and binds package objects to live-base/source evidence.
Preserve frozen npm ci and npm audit --audit-level=high; never auto-repair in CI.
Preserve least privilege and prohibit repair/self-modifying write paths.
Record regeneration/provenance expectations with current primary documentation and APA 7 references.
Record the control under ## Unreleased on the active line.
After protected integration, run a targeted lockfile-regeneration rehearsal and prove unrelated metadata churn cannot pass without explicit reviewed justification.
Retain protected-main operational evidence separately from PR/check/model evidence.
Historical RCA only
The earlier unbound regeneration under Node 24.18.0 / npm 11.16.0 remains useful causal evidence for why the control exists; it is not the current implementation baseline.
Problem
Security remediation #75 exposed a reproducibility gap in the repository dependency-control plane. An earlier lockfile regeneration under an unbound Node/npm toolchain produced the intended
nanoidupdate plus unrelated package metadata churn. Green CI alone therefore did not establish that targeted lockfile regeneration was minimal or reproducible.Current protected / implementation lineage
PR #76 is now integrated on protected
mainas merge commitc85d710804139c0697d7ef8fa47d02b1389e6d84; the boundednanoid@3.3.17remediation is protected truth.The old broad implementation #78 and dependency-stacked replacement #89 are superseded/closed. Clean protected-main successor PR #91 is the only active implementation line, exact head
ebde3720ee27292be0ce3315986e0438dd66af9f.#91 preserves the reviewed unique package-manager/reproducibility controls on top of integrated #76:
24.19.0/ npm11.17.0exact identity;strict-allow-scripts=truewith reviewed lifecycle-script identities;npm audit --audit-level=highseparation;## Unreleasedevidence;Fresh exact-head evidence for #91:
cirun31367707468: terminal success;reviewer-cirun31367707469: terminal success;Security Scanrun31367707433: terminal success;The clean technical result is not merge authority. Live enforceable governance under #27 and qualifying independent formal review remain fail-closed gates.
Acceptance criteria
Repository-owned implementation
npm ciandnpm audit --audit-level=high; never auto-repair in CI.## Unreleasedon the active line.Remaining integration / protected-main acceptance
Historical RCA only
The earlier unbound regeneration under Node
24.18.0/ npm11.16.0remains useful causal evidence for why the control exists; it is not the current implementation baseline.Related: #27, #29, #79, #91