Skip to content

build(reproducibility): pin package-manager identity for deterministic lockfile regeneration #77

Description

@seonghobae

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 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;
  • exact live-base schema-v2 lockfile change control;
  • canonical before/after package-object SHA-256 evidence;
  • duplicate decoded JSON-key, malformed UTF-8, symlink/race/metadata-churn refusal;
  • exact frozen install flags and npm audit --audit-level=high separation;
  • APA 7 doctoring and ## Unreleased evidence;
  • owned control-plane coverage under the repository exact-coverage gate.

Fresh exact-head evidence for #91:

  • application ci run 31367707468: terminal success;
  • reviewer-ci run 31367707469: terminal success;
  • central Security Scan run 31367707433: terminal success;
  • formal reviews: none at latest read;
  • inline review threads: none;
  • GitHub reports build(reproducibility): restack deterministic npm toolchain #91 mergeable and Ready for review.

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

Remaining integration / protected-main acceptance

  • Resolve every new valid current-head finding if one appears.
  • Satisfy the actual live ruleset and qualifying independent formal-review requirement.
  • Merge unchanged build(reproducibility): restack deterministic npm toolchain #91 under protected policy without waiver/synthetic approval.
  • 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.

Related: #27, #29, #79, #91

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions