Skip to content

feat(ci): dispatch wire-tools-ts updates on stable releases + update-wireio-deps + release-flow hardening - #76

Merged
jglanz merged 1 commit into
masterfrom
feature/update-wireio-deps
Aug 29, 2026
Merged

feat(ci): dispatch wire-tools-ts updates on stable releases + update-wireio-deps + release-flow hardening#76
jglanz merged 1 commit into
masterfrom
feature/update-wireio-deps

Conversation

@jglanz

@jglanz jglanz commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

What

Companion to Wire-Network/wire-tools-ts#90merge that one first (its repository_dispatch trigger must exist on the consumer's default branch before this producer can dispatch to it).

1. Release dispatch leg (tag-release.yaml) — the tag job exports dist_tag + version; a new dispatch-wire-tools-ts-update job (stable releases only, permissions: {}, runs after publish/tag/release so a failure cannot touch the release) mints a 1-hour wire-release-bot installation token downscoped to repositories: wire-tools-ts + permission-contents: write and fires the wire-libraries-ts-release repository_dispatch. Dispatch-API-only — never git; this is the App's ONE sanctioned use per the never-use-wire-release-bot manifest rule.

2. Release-flow hardeningprepare-release refuses to run while a bot-authored release/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-release auto-triggers when a release-prep PR is merged by a human (workflow_dispatch stays as the manual/recovery path; the release Environment's required reviewers remain gate 2).

3. scripts/update-wireio-deps.mjs + manual update-wireio-deps.yaml — byte-identical copy of the wire-tools-ts script (dynamic **/package.json scan, per-package npm latest, operators preserved — the exact outpost-*-artifacts pins stay exact, resolutions covered, workspace:* untouched); the workflow differs from the wire-tools-ts one ONLY in its trigger block (manual workflow_dispatch, no repository_dispatch). zx added to root devDependencies for the script.

4. Dependency policyminimumReleaseAge/minimumReleaseAgeExclude dropped (platform-wide policy; this was the only occurrence). The ten remaining pnpm-workspace.yaml overrides moved into root package.json resolutions beside the @aws-sdk pins — one pinning mechanism, in one place; pnpm-workspace.yaml now declares workspace packages only.

Validation

  • --dry-run here: exit 2, opp-typescript-models ^1.0.26 → ^1.0.48 (2 declarations); outpost-{ethereum,solana}-artifacts discovered dynamically and left untouched (npm latest IS 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).
  • actionlint clean on all three workflows; lint + build + jest (7 projects) green via the pre-commit gate on every commit.
  • Lockfile effective-overrides verified identical after the resolutions migration (pnpm merges top-level resolutions exactly like overrides); pnpm-lock.yaml deliberately untouched — the next release-prep run refreshes it in CI.

Org configuration (already applied)

  • wire-release-bot installation extended to wire-tools-ts (mint would 422 otherwise).
  • release environments 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 carry refs/pull/<n>/merge, which a branch policy rejects.

🤖 Generated with Claude Code

@jglanz
jglanz force-pushed the feature/update-wireio-deps branch from f5a3d1b to 5f0b99e Compare August 28, 2026 19:54
…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
jglanz force-pushed the feature/update-wireio-deps branch from 5f0b99e to f370d24 Compare August 28, 2026 20:12
@jglanz
jglanz merged commit de13caa into master Aug 29, 2026
1 check passed
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.

1 participant