Skip to content

Maintain Threshold CI actions and vendor npm-version-bump - #1

Merged
piotr-roslaniec merged 6 commits into
mainfrom
codex/threshold-actions
Sep 11, 2026
Merged

Maintain Threshold CI actions and vendor npm-version-bump#1
piotr-roslaniec merged 6 commits into
mainfrom
codex/threshold-actions

Conversation

@mswilkison

@mswilkison mswilkison commented Sep 10, 2026

Copy link
Copy Markdown

Keep-owned action references still control version bumps, documentation builds, and inter-repository release notifications in Threshold repositories. Maintain those actions here and vendor npm-version-bump into actions/npm-version-bump, retaining its MIT license and upstream revision.

The maintained actions run on Node 24 with one locked npm workspace and reproducible, committed bundles. Environment configuration comes from the pinned action revision by default. Dispatches and payload identifiers target Threshold; the configured chain retains Solidity contracts → Beacon → ECDSA → tBTC → client and drops obsolete coverage-pools, archived dashboard, and non-dispatchable Arbitrum destinations. Dispatch failures are awaited and propagated. npm subprocess arguments use argv/cwd, preserving prerelease formatting and handling directories with spaces.

The reusable docs workflow supports Classic/modern Yarn, artifact v4, and gh-based authenticated pushes/PR creation. Source files, not generated bundles, are the primary review surface; UPSTREAM.md records provenance and MIGRATION.md covers the coordinated rollout. Consumer PRs pin this producer commit and update their build payload/query identifiers together.

Validation: clean npm ci; lint; 51 tests passed (2 pre-existing skipped tests); all four standalone bundles tested without source or node_modules; actionlint; zero npm audit findings. Tests mock dispatches and registry results. No releases, deployments, documentation pushes, or real workflow dispatches were performed.

Merge this producer before the consumer migrations, and configure CI_GITHUB_TOKEN in this repository and any consumers missing it before using the cross-repository release manager. Inherited v2 tags still reference Keep's implementation and must not be used for the maintained actions.

Consumer PRs: keep-core #4329, tbtc-v2 #1148, and solidity-contracts #195. The docs workflow accepts a nodeVersion input for legacy Hardhat consumers; Node 24 is the JavaScript action runtime.

Upstream Node-runtime modernization, Ropsten defaults, module-name cleanup, and the single-command bundle-build request are incorporated or superseded. The optional docs-comment upsert request is carried into #2; existing consumers keep comments disabled.

Set up Node and Corepack before preprocessing so consumer Yarn shims
retain PATH precedence for both installation and docgen. Reject a
Yarn/lockfile format mismatch before dependencies can be re-resolved.

Cover shim precedence, locked install flags, missing lockfiles, and
failure propagation with workflow regression tests.
piotr-roslaniec added a commit to threshold-network/tbtc-v2 that referenced this pull request Sep 11, 2026
Use the maintained actions from [threshold-network/ci
#1](threshold-network/ci#1), pinned to
`20b35345d276a3c7365e3829b8078387a7c9dccb`. This includes the vendored
npm-version-bump action. Completion payloads and upstream-build queries
use the Threshold module identifiers configured by the new release
manager.

Update obsolete action runtimes in the affected workflows. Artifact
uploads preserve hidden deployment metadata when moving to artifact v4.
The producer and all consumer migrations must merge before starting a
new inter-repository release pipeline; `CI_GITHUB_TOKEN` must be
configured where missing. npm/cloud/docs credentials stay in their
existing consumer repositories.

Validation: actionlint passes for every changed workflow; producer
paths, input names, commit pins, dispatch input contracts, and
module/query identifiers were checked against the producer. Its 51 tests
and four standalone action-bundle checks pass in GitHub CI.
Release/deployment/publishing paths were not invoked during validation.

The shared docs workflow is now owned and pinned. The docs destination
rename remains in #1135; the JavaScript Electrum dependency switch
remains in #1140. Monitoring's Docker action upgrades preserve its prior
image format by disabling provenance attestations.
- Decouple dispatch workflow-file ref from upstream_ref; consumer workflows
  run on their default branch, upstream_ref stays a build-branch input (notify.js pattern)
- npm-version-bump: coerce is-prerelease as boolean (drop environment default so
  preid inheritance runs), treat npm stderr as warnings, resolve on view E404
  (first-publish fallback), reject empty version output, validate storeVersionInFile;
  un-skip stale tests and add coverage for false/inheritance/404/warning paths
- notify-workflow-completed: reject non-array upstream_builds payloads
- load-env-variables: bearer-authenticated ref fetch, restrict env-import values,
  fix README example YAML, document full-checkout dependency, test CONFIG_REF path
- upstream-builds-query: coerce result values before trim, threshold-network test
  fixtures, document per-query outputs
- lib: inline config singleton, note bundling constraint in default-config shim,
  threshold-network typedef example; drop stale nodeVersion comment; make the dist
  CI gate untracked-aware (catches missing ncc chunks)
- Tests: pin exact release chain + dropped destinations, cover fresh-release
  dispatch, cover docs publish/PR-create/dedup/no-change branches
- Docs: MIGRATION re-pin step with merge-base verification, UPSTREAM divergence
  disclosure + re-vendoring procedure, action README inputs and dev flows
- Regenerate action bundles
@piotr-roslaniec
piotr-roslaniec merged commit 86506f8 into main Sep 11, 2026
1 check passed
@piotr-roslaniec
piotr-roslaniec deleted the codex/threshold-actions branch September 11, 2026 18:45
piotr-roslaniec added a commit to threshold-network/keep-core that referenced this pull request Sep 12, 2026
Repoint Go Electrum to the Threshold fork at the same immutable upstream
revision (`6038cb594daa`), preserving the imported module path and
implementation. Update go.sum for the new source and remove the old
source checksums.

Use the maintained actions from [threshold-network/ci
#1](threshold-network/ci#1), pinned to the merge
commit `86506f8dcdd80179a95ee149cccf4ce9a793ad8d` of PR #1, merged to
the producer's main branch. This includes the vendored npm-version-bump
action. Completion payloads and upstream-build queries use the Threshold
module identifiers configured by the release manager. The consumed
action bundle is byte-identical between this pin and the ci main tip
that followed (the next producer merge touched only the docs workflow,
its README, and tests), so the pin excludes no reviewed action code.

Update obsolete action runtimes in the affected workflows. Environment
values for release jobs (GCR registry/project, network id) resolve from
the pinned threshold-network/ci revision; changing them requires
re-pinning the SHA. The consumer migrations must merge before starting a
new inter-repository release pipeline; `CI_GITHUB_TOKEN` must be
configured where missing. npm/cloud/docs credentials stay in their
existing consumer repositories.

Validation: actionlint passes for every changed workflow; producer
paths, input names, commit pins, dispatch input contracts, and
module/query identifiers were checked against the producer. Its 51 tests
and four standalone action-bundle checks pass in GitHub CI.
Release/deployment/publishing paths were not invoked during validation.

The shared Docker action also uses supported action runtimes, with
provenance disabled to preserve the prior image format. keep-core's
local docs workflow is already owned and remains local. This change is
independent of the helper/local-network/common-library PRs already open.

Additional validation: `go test -mod=readonly ./pkg/bitcoin/...` passes
against the fork; the fork's tests and vet pass on Go 1.24.1 and 1.26.0
in CI.

GitHub CI: all 1,678 Go unit tests and the Docker/runtime/binary builds
pass, as do the contracts test/lint/Slither/deployment-dry-run jobs. The
separate full integration suite also passes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants