The FullSyncPaymentUpdater ordering-bug fix isn't Pezkuwi-specific - it
affects any chain's assets on a busy shared subscription connection.
'USDT on Polkadot Asset Hub not showing' was one of the 3 original
symptoms reported at the start of this investigation, alongside Tron
being disabled and Pezkuwi's own tokens missing. Add it to the fixture
so the fix's coverage is actually verified end to end, not assumed.
These 3 assetIds (1001/1002/1003) were added in 173f08a with icons
pointing at novasamatech/nova-utils (Nova's own repo, not Pezkuwi's)
and generic names/priceIds - clearly copied from a template rather than
verified against Pezkuwi's actual chain state.
Verified live via @pezkuwi/api against wss://asset-hub-rpc.pezkuwichain.io:
api.query.assets.asset(1) -> Live, real supply (PEZ, correct)
api.query.assets.asset(1000) -> Live, real supply (USDT, correct)
api.query.assets.asset(1001) -> None (DOT, does not exist)
api.query.assets.asset(1002) -> None (ETH, does not exist)
api.query.assets.asset(1003) -> None (BTC, does not exist)
This is what caused wallet-android's StatemineAssetBalance to silently
never complete a sync for these 3 assets - it was fetching details for
assets that were never created in pallet-assets, not a wallet bug. Also
removes them from the new pezkuwi_assets_for_testBalance.json fixture
so the test doesn't assert on assets that were never real.
chains_for_testBalance.json only has one entry per chain (native balance
via a raw RPC query, bypassing the app's real sync pipeline entirely -
this is why it couldn't catch the 2026-07-09 HEZ-on-Asset-Hub silent
sync failure). This new fixture covers individual assets (HEZ/PEZ/USDT/
DOT/ETH/BTC across Pezkuwi's 3 chains) and is meant to drive a test that
goes through the real BalancesUpdateSystem -> AssetCache pipeline, which
is what actually caught that bug.
* test: add Pezkuwi's own chains to the balance test fixture
Nova's upstream fixture only covers chains it knows about - Pezkuwi (relay),
Pezkuwi Asset Hub, and Pezkuwi People never had test coverage at all, since
they don't exist in Nova's world. This adds them as a pure addition on top
of the existing filter+override pipeline, so the published
chains_for_testBalance.json now covers exactly what our merged chains.json
actually contains: Nova-inherited chains + our own ecosystem.
Test account is the mainnet Founder key, verified live via @pezkuwi/api on
2026-07-09 against all three chains: substantial non-zero, non-frozen free
balance and a high nonce (actively used) on each - not a guessed or reaped
account. See pezkuwi-overlay/tests/pezkuwi_chains_for_testBalance.json for
the exact verified figures.
* chore: retrigger CI now that master triggers are fixed
Last remaining balances-test failures (2 of 112): both Polkadot and
Kusama's fixture account (inherited from upstream nova-utils) had
zero balance - reaped since the fixture was last updated, causing
"Balance was null" assertion failures. Not a CI/infra bug, not
related to Tron - genuinely stale test data.
Replaced with the Treasury pallet account (py/trsry) for both chains
- protocol-owned, continuously replenished from fees/inflation, never
reaped. This matches the fixture's own existing pattern (Moonbeam and
Moonriver both already use their crowdloan pallet account, not a
personal wallet).
The account (0x6d6f646c70792f74727372790000000000000000000000000000000000000000)
was independently verified two ways before use: derived by hand
(modl + py/trsry + zero padding) and cross-checked against
@polkadot/api's own derivation - both matched exactly - then its
balance was queried live against wss://rpc.polkadot.io (22,527,885,189,670
free) and wss://kusama-rpc.polkadot.io (25,368,610,181,623 free) to
confirm it's genuinely funded, not just plausible-looking.
Applied via a new pezkuwi-overlay/tests/account_overrides.json,
applied by sync_from_nova.py after the existing chain-filtering step,
rather than hand-editing the generated fixture output (which would be
overwritten on the next sync).
Latest CI run confirmed all remaining balances-test failures (50 of
160) were java.util.NoSuchElementException for chain ids no longer in
the app's config - both newly-blacklisted chains and a handful of
retired testnets (Westmint, Moonbase Alpha/Relay, Aleph Zero Testnet,
an old Xode id, RegionX) that the raw Nova fixture still references.
None were real balance/fee assertion failures - the app itself is
working correctly for every chain it actually has configured.
sync_tests() now filters chains_for_testBalance.json down to entries
whose chainId exists in the latest merged chains.json (v22, 80 -> 56
entries) instead of publishing Nova's fixture verbatim, so the test
only ever exercises chains the app can actually resolve - and stays
correct automatically as chains.json changes, instead of needing
separate manual upkeep alongside blocked-chains.json.
Android's BalancesIntegrationTest CI fetches this fixture directly
from raw.githubusercontent.com/.../master/tests/chains_for_testBalance.json,
but it never existed in this repo's output - only chains/, xcm/,
icons/, and staking/ were ever synced from nova-base by
sync_from_nova.py. This is why "Run balances tests" in
pezkuwi-wallet-android has been failing (FileNotFoundException) even
after fixing its CI infra and instrumentation-runner issues.
Only this one fixture is published from nova-base/tests/, not the
rest of that directory (upstream's own pytest suite for validating
its chains.json output, unused by anything in this repo or its
consumers).