chore(sdk-core): regenerate SysioContractTypes for the producer-score ABI (WIRE-367) - #80
Open
heifner wants to merge 7 commits into
Open
chore(sdk-core): regenerate SysioContractTypes for the producer-score ABI (WIRE-367)#80heifner wants to merge 7 commits into
heifner wants to merge 7 commits into
Conversation
… ABI (WIRE-367) Picks up `producer_info.rank_score` / `consecutive_missed_rounds` / `is_demoted` / `snapshot_attestations`, the `prodscorecfg` + `prodsched` tables and `setscorecfg`, and the global's `last_producer` / `rescore_cursor` / `rescore_generation` / `scored_collateral_stamp`; `setrank` is gone. Also drops `delsnapprov` and `threshold_pct`, which this file still carried: WIRE-350 removed them from wire-sysio before merge and the types were never regenerated afterwards. Change-Id: I6dd420349caabbe072d183c8f75a5e3c1dc90856
This was referenced Sep 3, 2026
… pay (WIRE-367) rescore_pending replaces rescore_generation on the system global; emitcfg gains standby_bps; producer_info drops last_block_num, current_round_blocks and eligible_rounds; the global drops total_unpaid_blocks. Change-Id: Ib8236f1b2d9189a5035f576bb9b635b0df56196c
…ral_stamp (WIRE-367) sysio.system's global row no longer carries the collateral-config stamp; the rescore sweep opens from sysio.opreg::setconfig's notification instead. Change-Id: I2d35c0ade31827bf7f33ade7fd421cd84305e227
…window (WIRE-367) Producers now carry the rolling window their miss RATE is measured over -- rounds observed, rounds missed, and when the window opened -- and the score config carries the window length and the percentage limit that go with it. Both mirror the batch-operator availability gates in `sysio.opreg`. Also picks up the batch-epoch reward types that landed on master while this branch was open; they arrive here simply because a faithful regeneration reflects the whole ABI. Change-Id: If27eeef989e4f3879331c1beef8f850a087c2751
…te (WIRE-367) Output of `contracts/tools/generate-sysio-contract-types.py -B . -O /tmp/ctt -P snake -f` against the ABI from Wire-Network/wire-sysio#599. Two fields: - `prodscorecfg.min_blocks_per_round` -- blocks a producer must deliver inside its own round for that round to count as served. Below it the round is charged against the miss RATE, so a producer can no longer hold a slot indefinitely while delivering a fraction of its window. - `global.round_start_block` -- the height the current producer's round began at. Every block between it and the next producer's first block belongs to that producer by construction, so the difference IS its delivered block count, with no per-block counter. Both are declared at the tail of their structs, matching the serializer order. Change-Id: I2f9ed567b7083e1cb7278ab97af03067e521e8e8
…ount (WIRE-367) Output of `contracts/tools/generate-sysio-contract-types.py -B . -O /tmp/ctt -P snake -f` against the ABI from Wire-Network/wire-sysio#599. One field: - `t5state.pending_nominal_slots` — block slots the open pay period is entitled to, accumulated as each epoch accrues at that epoch's own duration. The pay divisor now builds the same way the pool does; computing it at payout from the current duration applied today's value to epochs that ran under a different one, mis-sizing any period that spans a duration change. Declared at the tail of the struct, matching the serializer order. Change-Id: Ie63369dedcb0e33c3990a172f5884f301ccd2e19
…indow (WIRE-367) Output of `contracts/tools/generate-sysio-contract-types.py -B . -O /tmp/ctt -P snake -f` against the ABI from Wire-Network/wire-sysio#599. Two fields on `producers`: - `prev_rounds_in_window` - `prev_missed_rounds_in_window` The previous bucket of the miss window. A single bucket emptied at its duration is a TUMBLING window: each half can read under the configured rate while the trailing window does not, and the bucket's open time is on-chain, so the boundary is targetable. Carrying the previous bucket and weighting it by how much of it the window still covers closes that in O(1) state. Declared at the tail of the struct, matching the serializer order. Change-Id: I624ec0834b9f144d5cf703628744932621a66d0d
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.
Part of WIRE-367. Regenerated
SysioContractTypes.tsfor thesysio.systemABI produced by Wire-Network/wire-sysio#599.One file, no hand edits — output of
contracts/tools/generate-sysio-contract-types.py -B . -O /tmp/ctt -P snake -f.What the ABI moved
Added by WIRE-367:
producersrank_score,consecutive_missed_rounds,is_demoted,snapshot_attestations, and the rolling miss window —rounds_in_window,missed_rounds_in_window,miss_window_open_msglobalrescore_cursor,rescore_pending,last_producer,round_start_block— the height the current producer's round began at, so its delivered block count is a subtraction rather than a per-block counteremitcfgstandby_bps— the standby retainer's share of the producer poolprodscorecfg, the factor-weight singleton, andprodsched, the observed-schedule snapshot missed-round attribution compares againstsetscorecfg, carryingmax_consecutive_missed_rounds, the rate gate'smissed_round_window_msandmax_pct_missed_rounds_in_window, andmin_blocks_per_round— below which a round counts as SHORT and is charged against the miss rateRemoved by WIRE-367:
producersrank, and the round-threshold pay counterslast_block_num,current_round_blocks,eligible_roundsglobaltotal_unpaid_blockssetrankThe three window fields and the two config fields are the miss-RATE gate that mirrors
sysio.opreg::termcheckfor batch operators — a producer is demoted by a consecutive run or by exceeding the permitted miss percentage over a rolling window. They are declared at the tail of each struct so the serializer order matches the declaration order.The removals on
producersandglobalare the per-block pay model: pay isunpaid_blocksagainst the period's slot count, so nothing needs to track round boundaries or a global block total.Also corrects pre-existing staleness
master's checked-in types were behind the deployed ABI independently of this work — the regen additionally drops
delsnapprovandthreshold_pct, both removed by WIRE-350 before it merged. Those deltas are not WIRE-367's doing; they are what a faithful regeneration produces.Merge order
After Wire-Network/wire-sysio#599 (the ABI these types describe), before the wire-tools-ts PR that consumes them. Wire-Network/wire-tools-ts#94's CI is red until this merges and publishes: it resolves
@wireio/sdk-corefrom the registry, and the published version has nosetscorecfg,rank_scoreorstandby_bps. No code change there will fix it, and none is needed.Validated as part of the stack: e2e gate 33992129110 on the current heads, 15/15 flows green.