refactor!: retire the migration cadence surface end to end - #1242
Draft
zancas wants to merge 2 commits into
Draft
Conversation
The ZIP 318 Poisson schedule in zingolib draws every broadcast delay itself, so the per-window cadence choice is a control that always refuses. This removes the surface that offered it, across every layer. The zingolib pin moves from upstream dev (3d2f2aa0) to the mobile stack's settled branch, indexer_census (ba03ec07), and the lock is settled to match. Upstream dev still lacks the mobile-adoption work this tree builds on; the pin comment records the conflict policy from the pin collaboration protocol. In the FFI the cadence API survives shape-stably where zingolib still exposes it: start_ironwood_migration passes per_bucket as None and the retired CadenceFixed variant is mapped for exhaustiveness only. In Rust, reschedule_parts and the app's MigrationCadenceFixed error are gone, the status JSON drops per_bucket, and the error funnel maps the mixnet-refusal variants the same upstream work introduced (MixnetNotReady, NoEligibleBroadcastIndexer, MigrationBroadcastTargetIsSyncEndpoint). The uniffi UDL and the checked-in Kotlin binding are regenerated to match, the Android and iOS bridge methods follow, and so do their outcome-table tests. In the app, the MigrationCadence chooser screen is deleted and splitting completion navigates straight to the schedule review. Progress counts parts directly on the status screen and the history banner, since each part now has its own drawn window. The status types adopt the wake-point vocabulary (RPCWakePointType), the dev-era BlockTime constants and the split-report types leave with their tests, and the migrationcadence translation blocks are removed from all five languages. The History snapshots are retaken; they land byte-identical to the feat/nym tree's. Verified locally: cargo check and clippy clean against the new pin, tsc clean, the migration-area jest suites pass (25 tests), and the retaken snapshots match nym_linear exactly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
zancas
marked this pull request as draft
July 29, 2026 05:41
… cadence surface The retirement commit updated the UDL, RPCModule.kt, the TS layer, and the Swift bridge, but left the checked-in zingo.kt at the cadence era: it still declared startIronwoodMigration(planHashHex, perBucket) and rescheduleParts(perBucket). The fast Kotlin compile and the JVM tests copy that file verbatim, so RPCModule.kt's one-argument call (correct per the new UDL) failed with "No value passed for parameter perBucket" and every Android job dominoed, the native build's Cargo NDK step being fail-fast cancelled rather than failing itself. Same root cause and same fix as on #1225 and the hardening branch: regenerate with the lib's uniffi-bindgen (cargo run --features=uniffi/cli --bin uniffi-bindgen generate ./src/zingo.udl --language kotlin --out-dir ./src). The cadence surface leaves the bindings, 125 lines gone, and no hand edits anywhere. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
First arc of the nym_linear sub-PR stack (the linearized feat/nym, PR #1207). This PR retires the migration cadence surface end to end and moves the zingolib pin to the mobile stack's settled branch.
The ZIP 318 Poisson schedule in zingolib draws every broadcast delay itself, so the per-window cadence choice is a control that always refuses. Dev still offers it at every layer. This removes the surface: in Rust,
reschedule_partsand the app'sMigrationCadenceFixederror are gone, the status JSON dropsper_bucket, and the error funnel maps the mixnet-refusal variants the upstream work introduced. The uniffi UDL and the checked-in Kotlin binding are regenerated, the Android and iOS bridge methods follow with their outcome-table tests. In the app, the MigrationCadence chooser screen is deleted, splitting completion navigates straight to the schedule review, progress counts parts directly, the status types adopt the wake-point vocabulary, and themigrationcadencetranslation blocks leave all five languages.Two findings from the breakout shaped the commit. The cadence API itself survives in zingolib (
CadenceFixed, theper_bucket: Option<u32>argument), so the FFI passesNoneand maps the variant for exhaustiveness only. And dev's zingolib lock (3d2f2aa0, the #2527 merge) predates what this tree builds on, so the pin moves toindexer_censusatba03ec07, the same settled pair nym_linear's tip uses; the pin comment records the conflict policy from the pin collaboration protocol indocs/agents/nym-diagnostics-plan.md. This advance also satisfies the "lock ≥ 3d2f2aa0" criterion from the ironwood lock-lag ledger red.Verified locally: cargo check and clippy clean against the new pin, tsc clean, the migration-area jest suites pass (25 tests), and the retaken History snapshots are byte-identical to the feat/nym tree's.
🤖 Generated with Claude Code