Skip to content

ci(swift-sdk): authenticate setup-protoc against the anonymous rate limit - #4517

Merged
QuantumExplorer merged 4 commits into
v4.2-devfrom
fix/wasm-dpp2-property-agreement
Aug 28, 2026
Merged

ci(swift-sdk): authenticate setup-protoc against the anonymous rate limit#4517
QuantumExplorer merged 4 commits into
v4.2-devfrom
fix/wasm-dpp2-property-agreement

Conversation

@QuantumExplorer

@QuantumExplorer QuantumExplorer commented Aug 28, 2026

Copy link
Copy Markdown
Member

Scope reduced. This PR originally carried three fixes for the broken v4.2.0-dev.3 release run. #4515 landed on v4.2-dev in parallel with a near-identical fix for two of them (the wasm-dpp2 E0027 and the cargo fmt gate — same approach, same test fixture, arrived at independently), and also fixed a fourth break that was hidden behind the fmt gate. Base has been merged in and those commits resolved to base's version. What remains is the one thing #4515 did not touch: the Swift job.

Issue being fixed or feature implemented

Release Swift SDK FFI / Build and release DashSDKFFI fails on the release workflow:

##[error]Error: API rate limit exceeded for 13.105.117.141.

arduino/setup-protoc@v3 in release-swift-sdk.yml is called without repo-token, so it resolves the protoc release through the GitHub API unauthenticated. The macOS release runners share an egress IP and burn through the 60 req/h anonymous limit, which takes the whole DashSDKFFI build down with it.

This is environmental rather than a code defect — but it is not flake that will clear on its own, and it recurs on every release until the token is passed. It is the only setup-protoc call site in .github/ lacking one.

What was done?

Pass repo-token: ${{ secrets.GITHUB_TOKEN }} to the action, which raises it to the authenticated limit.

How Has This Been Tested?

The workflow YAML parses and the input resolves onto the right step. The failure mode itself only reproduces on a rate-limited shared runner IP, so the real proof is the next release run — or a release-swift-sdk.yml dispatch at a tag, whichever comes first.

The rest of the branch is verified by the base branch's own CI: after merging base, the net diff against v4.2-dev is these 4 lines alone. cargo check -p dpp --all-targets passes locally on the merge result.

Breaking Changes

None. CI-only.

Notes for reviewers

v4.2.0-dev.3 is tagged and published, and the Drive, Drive-debug and RS-DAPI images already published under that tag — re-cutting it would leave inconsistent artifacts under one version, so the plan is to fix forward to dev.4.

Worth separate attention: #4450 broke v4.2-dev by merging green-but-stale (its CI ran against a base two days old, predating #4505's new field), and it is the second PR to do so — the first was #4401RankedEntry.in_key E0063 on Aug 27. Requiring branches to be up to date before merge would catch the class. Note also that wasm-dpp2/wasm-sdk only compile for wasm32-unknown-unknown, so cargo check --workspace on the host cannot see those breaks at all.

Checklist

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

QuantumExplorer and others added 3 commits August 28, 2026 19:32
…face

`DocumentPropertyReferenceTarget::PermanentDocument` gained a third field,
`property_agreement`, in #4505. The wasm reference serializer added in #4450
destructures the variant exhaustively and was written against a base that
predated that field, so the two merged clean as text and left `wasm-dpp2`
uncompilable (E0027) on v4.2-dev.

Surface the field as `propertyAgreement` rather than ignoring it with `..`:
the module's documented contract is that its keys line up with what
`contract.toJSON()` shows under `refersTo`, and dropping one would break
that. Emitted only when non-empty, mirroring the keyword's own
`skip_serializing_if`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Landed unformatted in #4510, whose Tests run was cancelled when #4450 pushed
over it, so `cargo fmt --check` was never reported red before the release cut.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…imit

The macOS release runners share an egress IP and burn through the 60 req/h
anonymous GitHub API limit, so resolving the protoc release fails with
"API rate limit exceeded" and takes the DashSDKFFI build down with it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@QuantumExplorer QuantumExplorer added this to the v4.2.0 milestone Aug 28, 2026
@coderabbitai

coderabbitai Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 11 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 85a9724f-9d1d-4a86-8a8f-473394827268

📥 Commits

Reviewing files that changed from the base of the PR and between 4b1cba8 and a6294d0.

📒 Files selected for processing (1)
  • .github/workflows/release-swift-sdk.yml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Aug 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.00%. Comparing base (5ef3bf6) to head (5087143).

Additional details and impacted files
@@             Coverage Diff              @@
##           v4.2-dev    #4517      +/-   ##
============================================
+ Coverage     82.23%   83.00%   +0.77%     
============================================
  Files          2746     2778      +32     
  Lines        372433   375657    +3224     
============================================
+ Hits         306254   311805    +5551     
+ Misses        66179    63852    -2327     
Components Coverage Δ
dpp 82.22% <ø> (+1.02%) ⬆️
drive 81.65% <ø> (+0.80%) ⬆️
drive-abci 86.88% <ø> (+1.09%) ⬆️
sdk ∅ <ø> (∅)
dapi-client ∅ <ø> (∅)
platform-version ∅ <ø> (∅)
platform-value 92.92% <ø> (ø)
platform-wallet ∅ <ø> (∅)
drive-proof-verifier 48.41% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@thepastaclaw

thepastaclaw commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

✅ Final review complete — no blockers (commit a6294d0)

…perty-agreement

# Conflicts:
#	packages/wasm-dpp2/src/data_contract/document_type_reference.rs
#	packages/wasm-dpp2/tests/unit/DocumentPropertyReference.spec.ts
@QuantumExplorer QuantumExplorer changed the title fix: unbreak the 4.2.0-dev.3 release pipeline ci(swift-sdk): authenticate setup-protoc against the anonymous rate limit Aug 28, 2026

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Final validation — Codex/Sol only (Phase 2 disabled)

At exact head a6294d0, the PR adds the supported repo-token input to the sole arduino/setup-protoc@v3 invocation, and the job grants sufficient repository permissions for that token. The workflow YAML parses successfully, the change directly addresses unauthenticated GitHub API rate limiting, and no in-scope correctness or security defects were found.
Source: codex-general and codex-security-auditor reviewer backends (exact model IDs were not included in the supplied evidence); final verifier backend: Anthropic Claude Agent SDK (exact model ID was not exposed); orchestration-only and not reviewer evidence: openclaw-agent/cliproxy/gpt-5.6-sol.

Validated zero-blocker Codex/Sol precheck evidence was promoted to final because Phase 2 (Sonnet/Opus) is temporarily disabled. This is Codex/Sol-only final validation, not Codex + Sonnet/Opus coverage.

Review provenance

  • Codex reviewers: gpt-5.6-sol — general (completed), gpt-5.6-sol — security-auditor (completed)
  • Verifier: gpt-5.6-sol — verifier
  • Sonnet/Opus: not run (Phase 2 disabled — temporary Codex/Sol-only final)
  • Secondary pass: disabled (temporary_phase2_sonnet_disable)

@QuantumExplorer
QuantumExplorer merged commit 16dc772 into v4.2-dev Aug 28, 2026
17 checks passed
@QuantumExplorer
QuantumExplorer deleted the fix/wasm-dpp2-property-agreement branch August 28, 2026 19:01
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.

3 participants