Skip to content

release: dev -> staging (dac.wasm v0.9.5, spec_version 80023) - #761

Merged
yahortsaryk merged 1 commit into
stagingfrom
release/dev-to-staging-node-3
Sep 24, 2026
Merged

yahortsaryk merged 1 commit into
stagingfrom
release/dev-to-staging-node-3

Conversation

@yahortsaryk

Copy link
Copy Markdown
Contributor

What

Final step of the staging cascade. Advances the DDC deps onto their staging tips and bumps spec_version 80022 -> 80023 in both runtimes.

Dep From To
ddc-dac-host 9363d5a6 29191f00 (v0.9.5 dac.wasm)
pallet-ddc-verification 9a70698c 2ed3a812
pallet-ddc-payouts 15bec049 02f28a16

ddc-primitives (c2e2ee05) and ddc-api (efec317c) are unchanged.

Why

This is what reaches testnet — it runs the staging line, currently spec_version 80022.

The defect. A node can serve several providers at once; in era 497221 one GPU machine was shared by ten of them, each reporting its own slice. The wasm's owner map modelled that as one-to-one, so nine claims were silently dropped and the node's entire cutoff was deducted from the single survivor. Which one survived depended on the order the EHD listed providers in — collectors serve that order differently, and the EHD merkle hash does not bind it, so the difference reached each validator with every integrity check satisfied.

The consequence. Six distinct payees_root values across seven validators, against a quorum threshold of four. begin_payout rejected with InvalidTransaction::Custom(11) every pass; payouts stopped at last_paid_era 497220 and are ~45 eras behind.

The fix. A shared resource's cutoff now divides across its claimants in proportion to what each reported, with claimants sorted by owner id so the outcome cannot depend on input order.

Scope — what this deliberately does not bring

dev also carries a frame_metadata_hash_extension change (CheckMetadataHash commented out, "coupled to hyperbridge for now"). That is unrelated to this fix and alters the runtime's signed-extension set, so it is not ported here. staging keeps CheckMetadataHash enabled.

This is why the release is a curated port rather than a dev -> staging merge: staging has also diverged in its own right, with 11 staging-only commits in ddc-api, 20 in ddc-verification and 28 in ddc-payouts.

Verification

  • cargo build --release --locked -p cere-runtime — clean
  • cargo build --release --locked -p cere-dev-runtime — clean
  • All five DDC deps resolve to branch=staging, one copy of each in the lockfile
  • CheckMetadataHash confirmed still present in both runtimes
  • spec_version 80023 in both

Upstream on this line: ddc-verification 64 tests pass unchanged; ddc-payouts 86 pass including two end-to-end tests that fail against the previous blob with reversing the provider order changed the payout.

Cascade (staging line)

ddc-dac v0.9.5 ✅ -> ddc-dac-host #30 ✅ -> ddc-verification #88 ✅ -> ddc-payouts #97 ✅ -> blockchain-node

After deploy — era 497221 needs one manual step

The upgrade alone will not unstick it. fetch_era_payable_usage is cache-first, so every validator keeps serving the payable usage it computed under the old wasm and re-commits the same divergent fingerprint. Clear on all 7 testnet validators:

offchain::paybale_usage::0x825c4b2352850de9986d9d28568db6f0c023a1e3::497221

(procedure in the testnet-ocw-lock-state skill). They then recompute identically, commit one shared fingerprint, 7 >= 4 quorum forms, and the backlog drains.

🤖 Generated with Claude Code

Advances the DDC deps onto their staging tips carrying the shared-resource
cutoff split, and bumps spec_version 80022 -> 80023 in both runtimes so
testnet validators take the new payout arithmetic.

A node used by several providers no longer has its whole cutoff deducted
from whichever claim was recorded last — the behaviour that made a
provider's reward depend on the order the EHD listed providers in, split
the payout quorum on testnet era 497221 and stopped payouts at era 497220.

Deliberately excludes the frame_metadata_hash_extension change that dev
carries; it is unrelated to this fix and alters the signed-extension set.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@yahortsaryk
yahortsaryk merged commit 28d35df into staging Sep 24, 2026
11 checks passed
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.

1 participant