Skip to content

fix(release): recover release-please publish tags#84

Closed
f0rr0 wants to merge 8 commits into
mainfrom
f0rr0/fix-release-please-publish-permissions
Closed

fix(release): recover release-please publish tags#84
f0rr0 wants to merge 8 commits into
mainfrom
f0rr0/fix-release-please-publish-permissions

Conversation

@f0rr0

@f0rr0 f0rr0 commented Jul 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • grant the publish job issues: write and pull-requests: write so release-please can finish its post-release PR comment
  • retarget release-please product tags to the selected publish commit before verifying and uploading assets
  • guard the retarget step so it only moves existing product tags when the release has zero uploaded assets, the old tag is an ancestor of the selected release commit, and the push succeeds with a force-with-lease
  • extend the release policy check to enforce the permission and step ordering

Recovery performed

  • deleted the 49 empty *-v0.1.0 GitHub Releases and matching tags created by the failed publish run
  • confirmed after cleanup that GitHub reports zero matching releases and zero matching remote tags

Validation

  • tools/dev/bun.sh tools/release/release-check.mjs
  • tools/dev/bun.sh tools/release/check_release_please_config.mjs && tools/dev/bun.sh tools/policy/check-release-policy.mjs
  • git diff --check
  • tools/dev/bun.sh tools/release/retarget_release_product_tags.mjs --products-json '["liboliphaunt-native"]' --target origin/main --repo f0rr0/oliphaunt fails as expected while tags are absent after cleanup

Note: bash tools/policy/format.sh --check is currently red on pre-existing files outside this patch.

f0rr0 and others added 8 commits July 1, 2026 02:24
* feat: introduce oliphaunt (#68)

* chore(release): prepare product releases (#69)

* chore(release): prepare product releases

* chore(release): prepare product releases

* fix(release): sync ICU compatibility metadata

* ci: increase iOS Maestro startup timeout

* fix(release): disable Gradle config cache for artifact publisher (#70)

* feat: add local registry flow and desktop examples (#71)

* chore: port graph cache witness to bun

* chore: remove inline python from github workflows

* chore: list cargo packages with bun

* chore: merge artifact checksums with bun

* chore: validate coverage baseline with bun

* chore: validate wasix dependency invariants with bun

* fix: resolve split native tools in deno

* fix: align deno server native package resolution

* chore: remove python from tool launchers

* chore: remove python from tool bootstrap

* chore: remove inline python from node direct packaging

* fix: harden wasix tools artifact split

* fix: tighten split tools sdk validation

* docs: record package surface verification

* fix: align react native open mode surface

* fix: validate wasix tools aot manifests

* fix: exercise wasix example tool smoke

* fix: align release checksum tooling

* chore: port extension contract check to bun

* chore: port extension tree checker to bun

* fix: install example deps from local registries

* test: guard split tool runtime artifacts

* test: compile wasix split tools feature

* chore: guard python tooling inventory

* docs: record rust tooling inventory

* chore: port release fixture generators to bun

* chore: port helper asset validators to bun

* chore: port shared fixture matrix checker to bun

* chore: port release pr coverage check to bun

* chore: port native boundary policy to bun

* chore: port wasm preflight manifest check to bun

* chore: port rust sdk artifact patch helper to bun

* chore: port sdk crate filename helper to bun

* fix: split native client tools into release assets

* fix: harden split tool package validation

* fix: derive wasix package validation from manifest

* fix: align sdk artifact validation semantics

* fix: exercise wasix tools in release check

* fix: keep wasix tools out of root crates

* fix: validate explicit mobile runtime extensions

* docs: record split tools validation

* fix: derive sdk artifact handoff from release metadata

* fix: tighten wasix tools artifact guards

* fix: validate js extensions against catalog

* fix: validate react native extensions against catalog

* chore: move react native extension path lookup to bun

* chore: expose rust release source preparation cli

* chore: move wasix third-party toml reads to bun

* chore: move wasix extension asset packaging to bun

* chore: move github release asset uploads to bun

* chore: move native binary stripping to bun

* chore: move broker cargo artifact packaging to bun

* chore: move product version reads to bun

* chore: move moon affected helper to bun

* docs: record fresh example e2e validation

* test: enforce native tools package split

* chore: port source architecture check to bun

* chore: port coverage tooling to bun

* test: cover js registry asset resolution

* test: validate js extension payloads

* fix: publish js runtime caches atomically

* test: cover mobile runtime feature validation

* test: enforce split tools parity checks

* fix: harden local cargo registry artifact shape

* fix: validate js explicit extension runtimes

* chore: port swiftpm tag publisher to bun

* chore: port maven artifact manifest to bun

* chore: port swiftpm renderer to bun

* docs: record split tool crate contract

* chore: port release attestation verifier to bun

* chore: port native runtime lock to bun

* chore: port registry publication checks to bun

* chore: port github release asset check to bun

* chore: port native payload optimizer to bun

* chore: port release version check to bun

* chore: share bun release graph planner

* chore: retire python release planner

* chore: port artifact target matrix to bun

* feat: split native tools into cargo facade

* chore: port ci planner to bun

* chore: port graph tool to bun

* chore: port liboliphaunt asset check to bun

* chore: port release pr sync to bun

* chore: port extension artifact staging to bun

* chore: port staged artifact check to bun

* chore: port native cargo artifact packager to bun

* chore: route extension targets through bun graph

* chore: route artifact targets through bun graph

* chore: codify split wasix tools contract

* chore: route product metadata through bun graph

* test: guard react-native runtime feature rejection

* chore: expose python tooling inventory

* test: guard wasix split tools feature surface

* chore: remove retired perf matrix wrapper

* chore: inventory rust helper crates

* test: refresh wasix example registry locks

* chore: port example policy check to bun

* test: cover example bun tooling in policy gate

* chore: remove retired helper wrappers

* chore: add helper reference sweep tooling

* chore: expose python helper inventory sizes

* test: parse sdk manifest contract

* docs: retire stale release helper references

* chore: add source dead-code candidate scan

* fix: harden local registry tool asset staging

* chore: classify helper migration inventory

* fix: align local registry cargo validation

* fix: deduplicate local extension manifests

* chore: harden helper reference scan

* chore: retire product metadata version cli

* docs: refresh local ci validation evidence

* refactor: derive python release metadata from bun graph

* fix: isolate registry-backed examples

* docs: record example registry validation

* refactor: derive wasix cargo packager contract

* refactor: centralize compatibility version metadata

* refactor: share extension release metadata

* refactor: query product versions from release graph

* fix: stage native client tools separately

* refactor: remove dead product metadata version specs

* refactor: retire compatibility version metadata adapters

* refactor: share typescript optional runtime selection

* refactor: share sdk package selection

* refactor: clarify split tool artifact packaging

* refactor: centralize local publish artifact preset

* refactor: centralize expected release assets

* refactor: centralize registry package selection

* refactor: centralize extension product discovery

* refactor: reuse extension product selector

* refactor: centralize wasix extension package names

* refactor: centralize product config metadata

* refactor: centralize moon release metadata

* refactor: centralize moon project policy rows

* refactor: query legacy artifact target rows

* refactor: drop metadata graph handoff

* chore: drop stale python release packager requirements

* chore: use bun release planner in ci

* chore: query release ci artifacts with bun

* chore: use bun planner for release pr coverage

* docs: record release validation batch

* docs: record sdk parity validation

* fix: dedupe react native ios resource bundles

* test: assert ci artifact families

* fix: validate kotlin extension ids against catalog

* fix: tighten source input policy exceptions

* chore: record helper migration inventory

* chore: port helper wrappers to bun

* docs: correct helper migration inventory

* chore: keep python bytecode out of source tools

* chore: port android disk reclaim helper to bun

* chore: port native ci target wrapper to bun

* chore: retire native smoke compatibility wrappers

* chore: port release artifact downloader to bun

* chore: port wasix runtime artifact downloader to bun

* chore: allowlist intentional helper entrypoints

* chore: move publish coverage to release graph

* chore: remove duplicate release metadata readers

* chore: query release policy metadata via bun

* chore: query artifact targets via bun

* chore: query consumer shape metadata via bun

* chore: query extension metadata via bun

* chore: query local registry metadata via bun

* chore: query wasix cargo packager metadata via bun

* chore: query release metadata checks via bun

* chore: query release cli metadata via bun

* chore: remove stale release metadata inputs

* chore: remove release metadata compatibility module

* chore: remove release ci compatibility commands

* chore: remove release plan compatibility command

* chore: port sdk artifact builder to bun

* chore: port wasix cargo packager to bun

* chore: port release policy check to bun

* chore: port artifact target check to bun

* chore: move local registry metadata queries to bun

* chore: route local registry metadata through bun

* chore: move release check orchestration to bun

* chore: move release gate wrappers to bun

* chore: move rust publish source prep to bun

* chore: add bun local registry entrypoint

* chore: port local registry status to bun

* chore: port local registry download to bun

* chore: port local registry maven and swift publish to bun

* chore: port local registry cargo dry run to bun

* chore: port local registry npm dry run to bun

* chore: port prebuilt npm local registry publish to bun

* chore: keep local registry status in bun

* chore: keep local registry help in bun

* chore: remove local registry catch-all python fallback

* chore: port prebuilt cargo local registry publish to bun

* chore: keep cargo local registry staging in bun

* chore: keep npm release asset staging in bun

* chore: keep extension npm staging in bun

* chore: finish local registry publisher bun port

* chore: remove dead python release helpers

* chore: route extension model checks through bun

* chore: route release validators through bun

* chore: route release publish through bun

* chore: route root release check through bun

* chore: route moon release metadata through bun

* chore: retire release check compatibility commands

* chore: run no-product release dry-run in bun

* chore: refine helper dead-code scanner

* docs: route release dry-run through bun

* chore: route extension model guidance through bun

* chore: expose rust helper inventory as json

* docs: clarify bun release command surface

* chore: keep no-product dry runs in bun

* docs: record release dry-run bun evidence

* chore: move sdk dry runs into bun

* chore: extend sdk dry runs to swift kotlin

* chore: move rust sdk dry run into bun

* chore: move wasix rust dry run into bun

* chore: move node-direct dry run into bun

* chore: align node-direct dry run guard

* chore: track node-direct dry run inputs

* chore: move broker dry run into bun

* chore: move extension dry runs into bun

* chore: move wasix runtime dry run into bun

* chore: route wasm publish dry run through bun

* fix: keep wasix tools out of root artifact staging

* fix: validate split native tools by target

* fix: run native publish dry run in bun

* chore: remove react native release.py task inputs

* fix: keep product dry runs in bun

* fix: publish staged github assets in bun

* fix: publish extension github assets in bun

* fix: publish extension maven artifacts in bun

* fix: publish runtime maven artifacts in bun

* fix: publish node direct npm artifacts in bun

* fix: publish broker npm artifacts in bun

* fix: publish liboliphaunt npm artifacts in bun

* fix: publish react native npm artifacts in bun

* fix: publish broker cargo artifacts in bun

* fix: publish wasix cargo artifacts in bun

* fix: publish native cargo artifacts in bun

* fix: publish rust sdk crates in bun

* refactor: remove rust sdk publish fallback from release py

* refactor: publish wasix rust sdk crates in bun

* refactor: publish typescript sdk packages in bun

* refactor: publish swift release in bun

* refactor: publish kotlin maven artifacts in bun

* refactor: remove release publish python fallback

* refactor: retire python release publish entrypoint

* fix: harden native and wasix packaging checks

* fix: stabilize remaining ci packaging checks

* fix: avoid nested moon query in release graph

* fix: stabilize release graph project discovery

* fix: resolve pinned bun on windows checks

* fix: run native stripper through active bun

* fix: fetch libiconv from gnu mirror

* chore(release): remove generated version bumps

Reset release/product versions and generated release metadata back to the pre-release state so the fresh PR can land before version bumping runs separately.

* test(js): derive fixture versions from package metadata
* feat(release): publish extension registry packages

* fix(release): derive extension registry targets
* chore(release): prepare product releases

* chore(release): prepare product releases

* chore(release): sync derived release files

---------

Co-authored-by: oliphaunt-release-bot <oliphaunt-release-bot@users.noreply.github.com>
@f0rr0

f0rr0 commented Jul 1, 2026

Copy link
Copy Markdown
Owner Author

Closing as obsolete. The replacement clean-stack PR is #85; it resets the release flow so the tag-retarget workaround is no longer needed.

@f0rr0 f0rr0 closed this Jul 1, 2026
@f0rr0 f0rr0 deleted the f0rr0/fix-release-please-publish-permissions branch July 1, 2026 21:43
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