Skip to content

ci: route every release through Production, drop the canary path - #27

Merged
IlyasRidhuan merged 1 commit into
mainfrom
ci/route-releases-through-production
Aug 18, 2026
Merged

ci: route every release through Production, drop the canary path#27
IlyasRidhuan merged 1 commit into
mainfrom
ci/route-releases-through-production

Conversation

@IlyasRidhuan

Copy link
Copy Markdown
Collaborator

.

npm allows one trusted publisher per package with one optional environment
claim, so publishing from two environments meant the publisher could not be
pinned to either. Pin it to Production instead and run every tag there.

The canary path was the only thing forcing the split, and it was never used:
zero workflow_dispatch runs of release.yml, no 0.0.0-<sha> version and no
`canary` dist-tag ever published. Removing it collapses the environment
expression to a constant.

Beyond the npm pin, this makes the rc a faithful rehearsal. Prereleases used
to run in Development, so a green rc exercised a credential path the stable
release never took — v5.1.0-rc.1 passed on 2026-07-23 and v5.1.0 then failed
to publish on 2026-08-04. Same environment now means a green rc predicts the
release. The cost is one approval click per rc; Production has
prevent_self_review: false, so the releaser can approve their own run.

Update the release skill to match: the environment pin is now a documented
precondition on both sides, the pre-tag guard asserts release.yml still
carries it, and E404-on-PUT is written up as an auth failure rather than a
missing-package one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Benchmark Comparison

CPU Cores RAM Arch
AMD EPYC 7763 64-Core Processor 4 16 GiB x64

Contract: escrow

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
(partial) withdraw 485,780 485,780 3,744 3,744 587,800 587,800 13,734 13,954 +220 (+1.6%)
withdraw 330,054 330,054 832 832 499,700 499,700 11,125 11,240 +115 (+1.0%)
withdraw_nft 378,231 378,231 1,440 1,440 527,400 527,400 12,269 12,231 -38 (-0.3%)

Contract: logic

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
get_escrow 390,336 390,336 192 192 456,000 456,000 12,475 12,487 +12 (+0.1%)
secret_key_to_public_keys 387,695 387,695 192 192 456,000 456,000 12,394 12,474 +80 (+0.6%)
share_escrow 304,211 304,211 1,952 1,952 520,700 520,700 10,967 10,973 +6 (+0.1%)

Contract: multitoken

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
burn_private 260,232 260,232 832 832 499,700 499,700 10,099 10,253 +154 (+1.5%)
burn_public 223,800 223,800 416 416 638,292 638,292 9,646 9,874 +228 (+2.4%)
initialize_transfer_commitment 225,054 225,054 768 768 474,500 474,500 9,566 9,761 +195 (+2.0%)
mint_to_private 297,795 297,795 1,408 1,408 511,400 511,400 10,867 11,106 +239 (+2.2%)
mint_to_public 223,800 223,800 416 416 637,800 637,800 9,672 9,790 +118 (+1.2%)
transfer_private_to_commitment 263,571 263,571 1,024 1,024 511,400 511,400 10,082 10,260 +178 (+1.8%)
transfer_private_to_private 336,124 336,124 2,048 2,048 555,100 555,100 11,308 11,499 +191 (+1.7%)
transfer_private_to_public 306,785 306,785 1,056 1,056 714,677 714,677 10,842 11,087 +245 (+2.3%)
transfer_public_to_commitment 223,800 223,800 640 640 663,516 663,516 9,696 9,810 +114 (+1.2%)
transfer_public_to_private 298,556 298,556 1,024 1,024 683,958 683,958 10,737 10,927 +190 (+1.8%)
transfer_public_to_public 223,800 223,800 480 480 673,505 673,505 9,579 9,814 +235 (+2.5%)

Contract: nft

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
burn_private 275,232 275,232 416 416 661,052 661,052 10,434 10,627 +193 (+1.8%)
burn_public 223,800 223,800 448 448 670,034 670,034 9,598 9,752 +154 (+1.6%)
mint_to_private 341,272 341,272 1,600 1,600 735,342 735,342 11,400 11,598 +198 (+1.7%)
mint_to_public 223,800 223,800 448 448 670,718 670,718 9,607 9,750 +143 (+1.5%)
transfer_private_to_private 249,433 249,433 832 832 499,700 499,700 9,881 10,023 +142 (+1.4%)
transfer_private_to_public 275,261 275,261 416 416 659,258 659,258 10,546 10,728 +182 (+1.7%)
transfer_public_to_private 292,557 292,557 992 992 683,268 683,268 10,630 10,810 +180 (+1.7%)
transfer_public_to_public 223,800 223,800 384 384 633,285 633,285 9,578 9,724 +146 (+1.5%)

Contract: token

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
burn_private 303,054 303,054 1,024 1,024 713,957 713,957 10,792 11,021 +229 (+2.1%)
burn_public 223,800 223,800 448 448 672,632 672,632 9,668 9,740 +72 (+0.7%)
initialize_transfer_commitment 225,054 225,054 768 768 474,500 474,500 9,597 9,721 +124 (+1.3%)
mint_to_private 355,507 355,507 2,144 2,144 738,070 738,070 11,659 11,794 +135 (+1.2%)
mint_to_public 223,800 223,800 448 448 672,227 672,227 9,617 9,746 +129 (+1.3%)
transfer_private_to_commitment 259,896 259,896 992 992 511,400 511,400 10,067 10,217 +150 (+1.5%)
transfer_private_to_private 343,699 343,699 2,592 2,592 557,600 557,600 11,471 11,620 +149 (+1.3%)
transfer_private_to_public 303,110 303,110 1,024 1,024 714,023 714,023 10,825 11,064 +239 (+2.2%)
transfer_private_to_public_with_commitment 307,280 307,280 1,600 1,600 747,323 747,323 10,883 11,077 +194 (+1.8%)
transfer_public_to_commitment 223,800 223,800 576 576 662,529 662,529 9,704 9,725 +21 (+0.2%)
transfer_public_to_private 296,520 296,520 992 992 683,304 683,304 10,811 10,903 +92 (+0.9%)
transfer_public_to_public 223,800 223,800 448 448 672,548 672,548 9,607 9,780 +173 (+1.8%)

Contract: vault

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
deposit_private_to_private 507,983 507,983 1,312 1,312 878,248 878,248 14,047 14,156 +109 (+0.8%)
deposit_private_to_private_exact 611,708 611,708 1,888 1,888 915,316 915,316 15,988 16,110 +122 (+0.8%)
deposit_private_to_public 435,487 435,487 768 768 862,273 862,273 13,000 12,990 -10 (-0.1%)
deposit_public_to_private 424,931 424,931 1,984 1,984 965,045 965,045 12,918 12,909 -9 (-0.1%)
deposit_public_to_private_exact 424,942 424,942 1,952 1,952 949,469 949,469 12,899 13,007 +108 (+0.8%)
deposit_public_to_public 223,800 223,800 832 832 897,563 897,563 9,606 9,616 +10 (+0.1%)
issue_private_to_private_exact 611,708 611,708 1,888 1,888 915,976 915,976 15,974 16,146 +172 (+1.1%)
issue_private_to_public_exact 484,222 484,222 1,344 1,344 899,998 899,998 13,823 13,979 +156 (+1.1%)
issue_public_to_private 346,383 346,383 1,376 1,376 921,661 921,661 11,528 11,648 +120 (+1.0%)
issue_public_to_public 223,800 223,800 832 832 898,253 898,253 9,731 9,770 +39 (+0.4%)
redeem_private_to_private_exact 614,712 614,712 1,888 1,888 915,823 915,823 16,015 16,004 -11 (-0.1%)
redeem_private_to_public 435,430 435,430 768 768 862,717 862,717 13,097 12,965 -132 (-1.0%)
redeem_public_to_private_exact 428,003 428,003 1,952 1,952 949,790 949,790 12,999 13,052 +53 (+0.4%)
redeem_public_to_public 223,800 223,800 832 832 898,085 898,085 9,566 9,637 +71 (+0.7%)
withdraw_private_to_private 510,987 510,987 1,312 1,312 878,458 878,458 14,153 14,261 +108 (+0.8%)
withdraw_private_to_private_exact 614,712 614,712 1,888 1,888 915,769 915,769 16,001 16,056 +55 (+0.3%)
withdraw_private_to_public_exact 484,165 484,165 1,344 1,344 900,232 900,232 13,804 13,839 +35 (+0.3%)
withdraw_public_to_private 441,260 441,260 2,528 2,528 967,356 967,356 13,180 13,242 +62 (+0.5%)
withdraw_public_to_public 223,800 223,800 832 832 898,388 898,388 9,637 9,661 +24 (+0.2%)

@IlyasRidhuan
IlyasRidhuan merged commit 68afdd7 into main Aug 18, 2026
7 checks passed
@IlyasRidhuan
IlyasRidhuan deleted the ci/route-releases-through-production branch August 18, 2026 14:51
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