feat(ci): dispatch wire-tools-ts updates on stable releases + update-wireio-deps + release-flow hardening - #76
Merged
Conversation
jglanz
force-pushed
the
feature/update-wireio-deps
branch
from
August 28, 2026 19:54
f5a3d1b to
5f0b99e
Compare
…ireio-deps; release-flow hardening
tag-release's tag job exports dist_tag + version; a follow-up
dispatch-wire-tools-ts-update job (stable releases only, permissions: {},
after publish/tag/release so a failure cannot touch the release) mints a
1-hour wire-release-bot installation token downscoped to wire-tools-ts +
contents:write — the App's ONE sanctioned use, dispatch-API-only, per the
never-use-wire-release-bot manifest rule — and fires the
wire-libraries-ts-release repository_dispatch so wire-tools-ts's
update-wireio-deps.yaml opens its @wireio/* update PR.
Release-flow hardening: prepare-release fails fast while a previous
bot-authored release/prep-v* PR is still open (constant concurrency group
so different-bump dispatches cannot race the guard; same-repo + bot-author
filter keeps fork PRs from blocking releases), and tag-release
auto-triggers when a release-prep PR is merged by a human
(workflow_dispatch remains the manual/recovery path).
scripts/update-wireio-deps.mjs is a byte-identical copy of the
wire-tools-ts script — every @wireio/* dependency this repo declares
updates to its own npm latest, dep list assembled dynamically from every
package.json, range operators kept as-is, workspace:* untouched. Its
wrapping workflow differs from the wire-tools-ts one only in its trigger
block (manual workflow_dispatch only). zx lands in root devDependencies
for the script.
Dependency policy: minimumReleaseAge (and its @wireio/* exclude) is
removed platform-wide by policy — it existed only in this repo. The ten
remaining pnpm-workspace.yaml overrides move into the root package.json
resolutions block alongside the @aws-sdk pins: one pinning mechanism, in
one place, visible in the manifest; pnpm-workspace.yaml now declares
workspace packages only. CLAUDE.md's CI/CD section is refreshed to
describe the full flow.
The script's own run is included: @wireio/opp-typescript-models ^1.0.48
in the root and sdk-core manifests.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
jglanz
force-pushed
the
feature/update-wireio-deps
branch
from
August 28, 2026 20:12
5f0b99e to
f370d24
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Companion to Wire-Network/wire-tools-ts#90 — merge that one first (its
repository_dispatchtrigger must exist on the consumer's default branch before this producer can dispatch to it).1. Release dispatch leg (
tag-release.yaml) — thetagjob exportsdist_tag+version; a newdispatch-wire-tools-ts-updatejob (stable releases only,permissions: {}, runs after publish/tag/release so a failure cannot touch the release) mints a 1-hourwire-release-botinstallation token downscoped torepositories: wire-tools-ts+permission-contents: writeand fires thewire-libraries-ts-releaserepository_dispatch. Dispatch-API-only — never git; this is the App's ONE sanctioned use per thenever-use-wire-release-botmanifest rule.2. Release-flow hardening —
prepare-releaserefuses to run while a bot-authoredrelease/prep-v*PR is open (constant concurrency group closes the concurrent-dispatch race; same-repo + bot-author filter keeps fork PRs from blocking releases);tag-releaseauto-triggers when a release-prep PR is merged by a human (workflow_dispatchstays as the manual/recovery path; thereleaseEnvironment's required reviewers remain gate 2).3.
scripts/update-wireio-deps.mjs+ manualupdate-wireio-deps.yaml— byte-identical copy of the wire-tools-ts script (dynamic**/package.jsonscan, per-package npmlatest, operators preserved — the exactoutpost-*-artifactspins stay exact,resolutionscovered,workspace:*untouched); the workflow differs from the wire-tools-ts one ONLY in its trigger block (manualworkflow_dispatch, norepository_dispatch).zxadded to root devDependencies for the script.4. Dependency policy —
minimumReleaseAge/minimumReleaseAgeExcludedropped (platform-wide policy; this was the only occurrence). The ten remainingpnpm-workspace.yamloverridesmoved into rootpackage.jsonresolutionsbeside the@aws-sdkpins — one pinning mechanism, in one place;pnpm-workspace.yamlnow declares workspace packages only.Validation
--dry-runhere: exit 2,opp-typescript-models ^1.0.26 → ^1.0.48(2 declarations);outpost-{ethereum,solana}-artifactsdiscovered dynamically and left untouched (npmlatestIS the pinned 0.3.0). Write mode touched only@wireio/*version substrings; tree restored (the version bumps ship via this workflow's own PR, not this one).actionlintclean on all three workflows; lint + build + jest (7 projects) green via the pre-commit gate on every commit.resolutionsexactly like overrides);pnpm-lock.yamldeliberately untouched — the next release-prep run refreshes it in CI.Org configuration (already applied)
releaseenvironments in BOTH repos now carry required reviewers (jglanz + bearcubsvet) — gate 2 for the auto-trigger. Never add a deployment branch policy to these environments: auto-triggered runs carryrefs/pull/<n>/merge, which a branch policy rejects.🤖 Generated with Claude Code