Skip to content

Reproducible builds: vendor scripts embed wall-clock timestamps in vendored outputs #421

Description

@debugmcpdev

Problem

Two identical clean builds from the same commit do not produce byte-identical vendored outputs, because the vendor scripts stamp wall-clock time into their metadata:

  • packages/adapter-javascript/scripts/build-js-debug.jswriteManifest() writes fetchedAt: new Date().toISOString() into the js-debug vendor manifest.
  • packages/codelldb-common/scripts/vendor-codelldb.js — writes cachedAt: new Date().toISOString() (cache metadata, ~line 282) and downloadedAt: new Date().toISOString() (vendor metadata, ~line 537).

This blocks independent verification that a rebuild from source matches what was published (the OpenSSF Best Practices build_repeatable criterion) and adds diff noise to any workflow that compares vendor outputs.

Fix

Make the stamps deterministic or remove them from anything that ships:

  • Prefer deriving from stable inputs: honor the standard SOURCE_DATE_EPOCH convention when set, falling back to the upstream release/asset date (both engines are already digest-pinned in their manifests, so the date carries no integrity weight).
  • Where a field is purely local cache bookkeeping, keep it out of files included in packages — the digest pins already carry the integrity information.

Acceptance

Two consecutive pnpm run vendor:force && npm run build runs from the same commit produce byte-identical vendor/ trees and identical shipped package contents.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions