| Report Date | 2026/09/25 |
| Submitted by | Josep M Sobrepere |
I am applying for retention at Rank II: Proficient Member. This is my first period as a member, and I used it to move from ecosystem tooling towards changes to the protocol itself: two Fellowship RFCs, one reference implementation of one of them in polkadot-sdk, a pallet-utility fix, and continued work on Polkadot-API (PAPI), the application-layer implementation of the standard JSON-RPC API.
polkadot-fellows/RFCsBoth RFCs come from problems I hit while implementing transaction tracking in PAPI, and both target the boundary between runtime, node and light client.
RFC-0173: Prevent Transaction Replay After Account Reaping via CheckCreatedAtHeight (opened 2026/07/01)
created_at_height, exposed via a runtime API (AccountCreatedAtHeightApi), and a CheckCreatedAtHeight transaction extension that carries it as an implicit (signed but not encoded) value. The extrinsic size does not grow, and previously signed transactions become permanently invalid if the account lifecycle changes.Timestamp::set not getting unique hashes (@voliva), storage placement options (@Kanasjnr, @PolkadotDom), and its overlap with polkadot-fellows/runtimes#248 (@bkchr). I revised it on 2026/07/02 in response: I defined the runtime API so the RFC no longer depends on a storage implementation, restructured the storage options (A/B/C) as implementation considerations, and clarified the limits of the tx-hash uniqueness guarantee. The RFC is still open.RFC-0174: Light client extrinsics-trie inclusion proof request (opened 2026/07/13)
state_version 0.state_version 1, which unblocked this. The RFC adds a light-client request that returns every leaf of a block's extrinsics trie, either verbatim or as a hash when the value is 33 bytes or more. The light client recomputes extrinsics_root and checks it against the header. That gives trustless inclusion and non-inclusion proofs, plus the extrinsic index, with no body download and no change to the runtime.ordered_trie_root with mixed value/hash leaves, the response size limit, keeping it decoupled from RFC-0009) were resolved in the text.polkadot-sdksc-network-light: new RemoteReadExtrinsicsRequest/Response messages and the protocol name bump /light/2 to /light/3, with the older names kept as fallbacks. The PR also covers the design decisions the RFC leaves open. The trie state_version is recovered by recomputing the root from the body, so the handler still works after state pruning. The response has an all-or-nothing 16 MiB cap. Unknown, pruned or mismatching blocks are answered with an absent field, never an error. Tests include unit, handler-level, and an end-to-end sc-network-test where a peer verifies inclusion over a real libp2p /light/3 substream without requesting the block body. The PR has approvals from @skunert, @bkchr, @ggwpez, @rockbmb and @sigurpol. It is intentionally held until RFC-0174 is merged.pallet-utility: fix dispatch class of empty batch/batch_all/force_batch (merged 2026/07/03). The dispatch-class fold started from an Operational accumulator, so an empty batch was classified Operational instead of Normal. This is a correctness fix in FRAME with a regression test.I continued as technical lead of PAPI. This period saw the 3.0.0 (2026/08/18) and 3.1.0 (2026/09/01) releases, following the 2.1.x/2.2.x line. My own merged PRs:
getPjsTxHelper and getTxHelper (tx-utils). This is the practical counterpart of my createTransaction RFC (polkadot-js/api#6213), so signers can handle chain-specific extensions.getValues in the client, after a user report (#1420).I also reviewed and gave feedback on the team's and community's PRs, including the v3 release candidates (#1411, #1413, #1430), the rename of the signer packages to tx-creator (#1412), the tx-utils mortality fix (#1403), and the known-chains update (#1402).
I answered technical questions on the RFCs above and on ecosystem issues, for example PAPI#1436 and PAPI#1434, and contributed to discussions in polkadot-fellows/runtimes#1233 and json-rpc-interface-spec#185.
I take my Rank II justification from Argument-0001. During this period I kept meeting it in these ways:
| Ranks | Activity thresholds | Agreement thresholds | Member's voting activities | Comments |
|---|---|---|---|---|
| I | 90% | N/A | N/A | No eligible referenda |
| II | 80% | N/A | 0 of 0 (100%) | No eligible referenda |
| III | 70% | 100% | N/A | |
| IV | 60% | 90% | N/A | |
| V | 50% | 80% | N/A | |
| VI | 40% | 70% | N/A |
Question(s):
Concern(s):
Comment(s): RFC-0173 is still open and under discussion. I am happy to address further feedback or a change of direction (for example towards the approach in runtimes#248) before it is finalised.
Threshold