StakingAhClient (index 67) is now Active — old NPoS staking on RC is unused.
Removed pallets:
- Staking (pezpallet_staking, index 9)
- FastUnstake (pezpallet_fast_unstake, index 15)
- VoterBagsList (pezpallet_bags_list Instance1, index 100)
Changes:
- Added NoopFallback struct for ah_client::Config::Fallback
- Updated validator_manager to use StakingAhClient
- Added RemovePallet migrations for on-chain storage cleanup
- Removed StakingConfig from genesis presets
- Cleaned up unused imports and dependencies
- Updated upgrade scripts (ah_upgrade, rc_upgrade, people_upgrade, set_ah_client_active)
Untrack simulation-specific scripts (sim_*, local_sim_*, fix_*, init_ah_staking).
Files remain on disk for local use but won't be pushed to repo.
Mainnet tools (ah_upgrade, rc_upgrade, assign_coretime, set_ah_client_active) stay tracked.
- Add 3-session grace period to stall detection to allow RC XCM round-trip
before triggering era recovery (StallDetectionCount storage added)
- Fix plan_new_era() to always increment CurrentEra regardless of
ElectionProvider::start() result, preventing infinite retry loops
- Fix MinerPages from 2 to 32 to match Pages config (was causing
incomplete OCW solutions and election failures)
- Bump AH spec_version to 1_020_007
- Add subxt example scripts for simulation and mainnet operations
- Remove obsolete fix_force_era.rs (replaced by sim_reset_election.rs)
Upgrade all 15 OpenGov track periods from Westend test values (minutes)
to Polkadot production values (hours/days). Add 3 new Welati governance
tracks (welati_election, welati_admin, citizenship_admin) with origins
and XCM routing for RC → People Chain governance via OpenGov referenda.
Bump spec_version: 1_020_007 → 1_020_008
- Route RewardRemainder and Slash to Treasury via ResolveTo (previously burned)
- Route DelegatedStaking OnSlash to Treasury
- MaxExposurePageSize: 64 → 512 (Polkadot production value)
- Use prod_or_fast for session Period and SessionLength
- Bump spec_version to 1_020_006
- Replace placeholder BEEFY public keys with actual mainnet keystore-derived keys for all 21 validators
- Add mainnet-sim chain spec (2 validators + real sudo key) for local upgrade testing
When an election completes with 0 winners and RC never sends
activation_timestamp, the pending era becomes a zombie blocking all
future era transitions. Detect this condition (election idle + not
fetching) and revert the planned era to break the deadlock.
The EraPayout fixed_total_issuance was ~5,216 HEZ (copied from
Polkadot's 10-decimal DOT value). Corrected to 200M HEZ (12 decimals)
to match actual chain total issuance. This fixes staking rewards
being ~40x lower than intended on Asset Hub.
- Add grant_noter_tiki.rs: XCM batch to grant Noter tiki to 21 validators
- Add check_noter_tiki.rs: verify UserTikis storage on People Chain
- Update CRITICAL_STATE: People Chain 1_020_007, noter grant completed,
relay chain staking-score removal noted
- Remove pezpallet_staking_score from relay chain runtime (noter model
lives on People Chain only)
- Update welati mock to current staking-score Config trait
- Fix staking-score feature propagation (zepter: std, runtime-benchmarks)
- Format vendor subxt example files (rustfmt)
- Regenerate umbrella crate
- Update CRITICAL_STATE.md with noter delegation status
- Add NoterCheck trait: accounts with Noter tiki can submit
receive_staking_details without root origin
- Remove stake requirement from start_score_tracking (opt-in only,
bot + noter submit data after event detection)
- Add zero-stake cleanup: sending staked_amount=0 removes cached
entry, cleans up StakingStartBlock when no stake remains
- Add NotAuthorized error for non-noter signed callers
- Configure TikiNoterChecker in people-pezkuwichain runtime
- Update weights with detailed DB operation analysis
- Bump People Chain spec_version to 1_020_007
- 49 unit tests (17 new E2E + edge cases), fmt/clippy clean
- Replace all hardcoded wallet mnemonics with env variable reads
- Add comprehensive e2e test suite (tools/e2e-test/)
- Add zagros validator management tools
- Add subxt examples for mainnet operations
- Update CRITICAL_STATE with zagros testnet and mainnet status
- Fix people chain spec ID and chainspec build script
- Propagate runtime-benchmarks feature to pezsp-test-primitives in pezsp-api
- Regenerate umbrella crate after pezsp-api dev-dependency addition
- Apply taplo formatting to all changed Cargo.toml files
- Replace thiserror::Error derive with manual Display + core::error::Error
impl in pezkuwi-subxt-metadata TryFromError, fixing no_std compilation
(thiserror v1 does not support no_std)
- Add pezsp-test-primitives as dev-dependency to pezsp-api, fixing 3
failing doc-tests that import pezsp_test_primitives::Block
- Revert unnecessary features=["std"] on workspace pezkuwi-subxt-metadata dep
- Apply taplo formatting to changed Cargo.toml files
- Remove comprehensive_test.rs and create_nft_collection.rs from git
(contain hardcoded VPS IPs and test wallet mnemonic)
- Add chain spec JSON files to .gitignore
- Add local tools and mainnet operation scripts to .gitignore
- Add GenesisConfig to pezpallet-tiki that creates NFT Collection 0 and mints
NFT #0 for the founding citizen at genesis, solving the chicken-egg problem
where Collection 0 must exist before any citizenship NFTs can be minted
- Wire founding_citizen parameter through all People Chain genesis presets
(genesis, local_testnet, dev)
- Add create_nft_collection.rs XCM script for creating Collection 0 on live
chain via sudo XCM Transact from Relay Chain
- Add comprehensive_test.rs for post-upgrade chain testing
- Fix clippy warnings (map().flatten() -> and_then()) and apply taplo formatting
Bump all three runtime spec_versions from 1_020_002 to 1_020_003
to prepare for on-chain runtime upgrade deploying trust score
system changes to the live chain.
- Add CachedStakingDetails storage and receive_staking_details extrinsic
to staking-score pallet for Asset Hub XCM data reception
- Add TrustScoreUpdater triggers to referral, tiki, and perwerde pallets
so component score changes propagate to trust pallet
- Wire runtime hooks (OnKycApproved, OnCitizenshipRevoked) to Referral
and CitizenNftProvider to Tiki in people.rs
- Fix PerwerdeScoreSource and ReferralScoreSource to read actual pallet data
- Fix EnsureOrigin trait feature unification issue by removing cfg gate
from try_successful_origin and adding default Err(()) implementation
- Fix workspace Cargo.toml default-features for pezkuwi-subxt dependencies
Asset Hub's pallet_staking_async era never advances because it expects
SessionReport messages from the relay chain's ah_client pallet, which is
not yet active. This adds a StakingSessionManager wrapper that intercepts
local session rotation events and generates SessionReport messages to drive
era transitions directly on Asset Hub.
Changes:
- Add StakingSessionManager in staking.rs that delegates to both
CollatorSelection and Staking via on_relay_session_report()
- Switch SessionManager from CollatorSelection to StakingSessionManager
- Add FixActiveEraStart migration to correct ActiveEra.start=0 from genesis
- Bump spec_version to 1_020_002
subxt proc-macro in pezpallet-revive-eth-rpc fails to generate
subxt_client module without cached artifacts. Also reduced VPS2 to
single runner to prevent concurrent disk exhaustion.
Run check-try-runtime after cargo-clippy (not in parallel) and
build-rustdoc after test-doc. Jobs on the same VPS share a single
disk, so parallel builds exhaust available space.
Both Checks jobs share one cache volume; both Docs jobs share another.
Doc-tests use full crate names (pezkuwi_zombienet_provider etc.) which
are not available as extern crates in the doc-test compilation context.
These examples require a running network and cannot be executed anyway.