Fix RFC10 allowance init handling#186
Merged
Merged
Conversation
Contributor
|
Dev build ready — try this branch: |
Contributor
E2E Test Pass · ✅ PASSTag:
Sentry traces: view spans for this run |
4 tasks
…ce-init # Conflicts: # src/commands/init/IdentityLines.tsx # src/commands/init/identityLine.test.ts # src/commands/init/identityLine.ts # src/utils/auth.ts # src/utils/sessionSigner.ts
…ce-init # Conflicts: # src/commands/init/AccountSetup.tsx # src/utils/allowances/bulletin.test.ts # src/utils/allowances/bulletin.ts # src/utils/allowances/slotKeys.ts
shawntabrizi
pushed a commit
to shawntabrizi/playground-cli
that referenced
this pull request
May 27, 2026
The mobile app (Polkadot Android NIGHTLY) submits the RFC-0010 `Resources::claim_long_term_storage` extrinsic on the People parachain and then waits 30 s for the authorization to propagate to Bulletin Chain. That wait is .logFailure()-wrapped — failures are swallowed and the slot key is returned regardless. The CLI then polls Bulletin via `checkAuthorization` from @parity/product-sdk-bulletin for 75 s; if propagation lags, the poll throws "Mobile returned Bulletin allowance key X, but it is not authorized on Bulletin yet" and `dot init` aborts before even running funding/mapping. Verified end-to-end against the polkadot-app-android-v2 source (`RealTransactionStorageSlotAllocator.kt:53-114`, AWAIT_BULLETIN_TIMEOUT = 30s, `.logFailure(...)` at the `awaitAllocationVisibleOnBulletIn` call site) and RFC-0010's "Bulletin submission — implicit allocation" flow. The host has no on-chain step to add here — RFC-0010 puts all the chain-side work on the mobile. The CLI's only correct move is to be resilient to the propagation lag. Four fixes in this PR, plus a React warning from paritytech#188: 1. `BULLETIN_AUTHORIZATION_URL` + `bulletinAuthorizationHelp(slot)` in `src/config.ts` and `src/utils/allowances/bulletin.ts`. Both `waitForBulletinSlotAuthorization`'s timeout error and the cached-key-not-authorized error now print the slot SS58 + the manual-faucet URL (`https://paritytech.github.io/polkadot-bulletin-chain/authorizations`). Pattern lifted from PR paritytech#186. 2. `requestAndStoreBulletinAllowanceSigner` now persists the slot key + marker BEFORE the propagation wait. A 75 s timeout no longer throws away a perfectly valid key the mobile derived from `mnemonic + //allowance//bulletin//<productId>` — the key will still be valid the moment the chain catches up. 3. `AccountSetup` makes a Bulletin propagation timeout a SOFT failure rather than aborting `dot init`. The row shows the help string + slot SS58; funding + Revive auto-map mapping still run because they depend on the product account on Asset Hub, not on Bulletin authorization. The final `setup complete some account setup steps failed` warning surfaces correctly. 4. `storeSlotAccountKeysFromOutcomes` is now a single read-modify-write so two slot keys returned in one `requestResourceAllocation` call (e.g. `BulletInAllowance` + `StatementStoreAllowance`) can't race-clobber each other. The previous `Promise.all(...storeSlotAccountKey)` had each call load the JSON, mutate one resource, save the JSON; interleaved writes would drop the second sibling's key. Also fixes a React "Cannot update a component while rendering a different component" warning introduced in paritytech#188 (the account- derivation PR). `QrLogin` was calling `onDone(...)` from inside a `setStatus(updater)` callback — which runs during React's render phase, so the parent's `setAddresses` / `setAuthResolved` triggered mid-render of QrLogin. Now snapshots the resolved `SessionAddresses` in a `useRef` inside the `onStatus` callback and calls `onDone` after the promise resolves, outside any updater. Why this slipped past CI: `vitest.config.ts` only picks up `*.test.ts`, not `*.tsx`, so React-strict-mode warnings never fire in the test suite. Tests: 538 pass + 1 skipped (was 536). Two new regression tests: the help helper formats SS58 + URL correctly, and `storeSlotAccountKeysFromOutcomes` preserves sibling keys.
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.
Summary
BulletInAllowancefrom thedot initmobile resource-allocation requestBulletin authorization neededwarning with the env-configured faucet URL and account to authorizedot logoutcan still recover when an old stored session is missingrootAccountIdMain Merge Reconciliation
This branch is merged with current
mainthrough #188 and #189.Kept from #188:
logged inshows the SSO root addressproduct accountshows the derived product SS58 and matching H160identityLine.tshelper stays deletedKept from #189:
QrLoginno longer calls parent state updates from inside asetStatusupdaterbulletinAuthorizationUrlstoreSlotAccountKeysFromOutcomesuses one batched read-modify-write and preserves sibling slot keysIntentionally changed from #189:
BulletInAllowanceis not requested from mobile duringdot initUser-Visible Behavior
When the cached Bulletin slot account has no usable Bulletin authorization,
dot initcompletes setup and prints:The allowances row is no longer failed solely because Bulletin authorization is missing.
Verification
pnpm format:checkpnpm lint:licensepnpm testpnpm build