• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

iotaledger / iota / 39883454019
72%

Build:
DEFAULT BRANCH: develop
Ran 23 Oct 2026 02:16AM UTC
Jobs 1
Files 1127
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Oct 2026 07:13PM UTC coverage: 71.364% (+0.2%) from 71.118%
39883454019

push

github

web-flow
fix(iota-core,iota-types): label a committed user transaction as shared or owned without merging its shared inputs (#13246)

# Description of change

- Stacked on #13245.
- With the P-COOL flow, the consensus handler labels every committed
transaction as shared or owned for its metrics before validating it. For
a `UserTransactionV1` it merged the shared objects of the transaction
and of its Move authenticators, and that merge panics when two
declarations of one object disagree. Only `validity_check`, which runs
later, rejects such a transaction.
- The label now checks the transaction's own shared inputs and each Move
authenticator's shared objects separately, without merging them. The
answer is the same as before for every transaction, so the metric labels
do not change, and validation drops the transaction.
- `shared_input_objects()` is unchanged: its other callers run after
validation.
- Testnet and Mainnet are unaffected: committed `UserTransactionV1`
transactions exist only with `enable_pcool_flow`, run only on
devnet-style chains. This fix applies there with or without
`pcool_deterministic_validation`.
- Commits:
- `fix(iota-core): label a committed user transaction as shared or owned
without merging its shared inputs`
- `test(iota-core, iota-types): check that a committed user transaction
whose shared object declarations disagree is dropped`

## Links to any relevant issues

None.

## How the change has been tested

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [x] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

New tests commit such a transaction and check that the consensus handler
drops it, with and without deterministic validation.

~~~shell
cargo ci-clippy
IOTA_SKIP_SIMTESTS=1 cargo nextest run -p iota-core --lib -E
'test(/consensus_ha... (continued)

79 of 79 new or added lines in 2 files covered. (100.0%)

4746 existing lines in 100 files now uncovered.

195017 of 273269 relevant lines covered (71.36%)

458151.16 hits per line

Coverage Regressions

Lines Coverage ∆ File
731
5.65
0.0% crates/iota-indexer/src/read.rs
400
87.95
0.47% crates/iota-core/src/authority.rs
293
84.58
1.98% crates/iota-core/src/checkpoints/mod.rs
240
91.96
0.08% crates/iota-core/src/authority/authority_per_epoch_store.rs
229
80.76
2.0% iota-execution/latest/iota-adapter/src/execution_engine.rs
197
0.0
0.0% crates/iota-open-rpc/src/examples.rs
191
88.64
-0.31% crates/iota-node/src/lib.rs
143
70.25
2.79% crates/iota-core/src/authority/authority_store.rs
132
87.27
0.36% crates/iota-core/src/authority/authority_store_pruner.rs
126
90.52
-0.36% crates/iota-protocol-config/src/lib.rs
109
84.45
0.21% crates/iota-types/src/transaction.rs
107
12.03
0.02% crates/iota-graphql-rpc/src/types/object.rs
99
0.0
0.0% iota-execution/latest/iota-adapter/src/static_programmable_transactions/execution/context.rs
75
96.95
0.04% crates/starfish/core/src/dag_state.rs
71
83.88
0.06% crates/iota-core/src/authority_server/validator_v2.rs
68
92.74
-0.56% crates/iota-network/src/state_sync/mod.rs
67
80.13
2.81% crates/iota-transaction-checks/src/lib.rs
65
72.39
0.0% crates/iota-json/src/lib.rs
63
95.88
0.03% crates/starfish/core/src/authority_service.rs
62
0.0
0.0% crates/iota-graphql-rpc/src/types/iota_names_registration.rs
59
0.0
0.0% crates/iota-indexer/src/apis/indexer_api.rs
53
96.16
-0.19% crates/starfish/core/src/transactions_synchronizer.rs
53
0.0
0.0% iota-execution/latest/iota-adapter/src/static_programmable_transactions/typing/verify/input_arguments.rs
48
96.7
0.39% crates/iota-core/src/consensus_handler.rs
48
94.07
0.0% iota-execution/latest/iota-adapter/src/programmable_transactions/execution.rs
46
92.93
0.3% iota-execution/latest/iota-adapter/src/programmable_transactions/context.rs
46
89.9
0.18% iota-execution/latest/iota-move-natives/src/object_runtime/mod.rs
42
67.61
0.0% crates/iota-types/src/storage/mod.rs
42
97.26
0.08% crates/starfish/core/src/core.rs
39
91.73
0.36% iota-execution/latest/iota-adapter/src/temporary_store.rs
35
73.86
0.39% crates/iota-json-rpc-types/src/lib.rs
29
0.0
0.0% crates/iota-indexer-streaming/src/memory.rs
28
43.33
-2.55% crates/iota-indexer/src/pruning/watermark_task.rs
27
80.68
-1.19% crates/test-cluster/src/lib.rs
26
93.63
0.0% iota-execution/latest/iota-move-natives/src/test_scenario.rs
25
89.68
0.0% crates/iota-core/src/checkpoints/checkpoint_executor/mod.rs
25
0.0
0.0% crates/iota-indexer/src/apis/extended_api.rs
25
95.64
0.16% crates/starfish/core/src/commit_syncer/fast.rs
24
94.58
0.72% crates/iota-core/src/authority/consensus_quarantine.rs
23
88.08
3.81% crates/iota-core/src/post_consensus_input_reader/reader.rs
23
35.42
-9.58% crates/iota-indexer/src/errors.rs
23
84.44
0.01% crates/iota-json-rpc/src/read_api.rs
23
87.72
0.0% crates/iota-types/src/base_types.rs
22
92.53
0.0% crates/iota-types/src/move_package.rs
21
92.7
0.39% crates/iota-core/src/post_consensus_validation.rs
21
66.09
0.29% crates/iota-json-rpc/src/authority_state.rs
20
95.71
0.01% crates/starfish/core/src/commit_solidifier.rs
17
94.52
-4.25% crates/iota-types/src/deny_list_v1.rs
17
88.05
0.0% crates/iota-types/src/dynamic_field/visitor.rs
16
0.0
0.0% crates/iota-indexer/src/apis/coin_api.rs
15
96.34
-1.72% crates/iota-core/src/post_consensus_input_reader/shared.rs
15
98.08
0.16% crates/starfish/core/src/commit_observer.rs
14
85.89
1.12% crates/iota-core/src/consensus_manager/mod.rs
14
44.44
0.0% crates/iota-indexer/src/models/display.rs
13
88.74
-1.31% crates/iota-test-transaction-builder/src/lib.rs
13
20.37
0.0% crates/iota-types/src/timelock/timelock.rs
12
0.0
-54.55% crates/iota-cluster-test/src/config.rs
12
76.92
-23.08% crates/iota-core/src/consensus_manager/starfish_manager.rs
12
68.71
0.46% crates/iota-json-rpc/src/indexer_api.rs
12
84.18
0.0% crates/iota-network/src/state_sync/builder.rs
11
91.58
-0.1% crates/iota-core/src/execution_cache/writeback_cache.rs
11
0.0
0.0% crates/iota-indexer/src/indexer.rs
11
68.28
0.63% crates/iota-types/src/move_authenticator.rs
10
93.49
0.0% crates/iota-types/src/proto_value.rs
9
0.0
0.0% crates/iota-indexer/src/apis/read_api.rs
9
85.0
0.0% crates/iota-types/src/coin.rs
9
90.74
0.31% iota-execution/latest/iota-adapter/src/gas_charger.rs
8
98.75
-0.35% crates/iota-core/src/authority/handler_object_state.rs
8
77.25
2.58% crates/iota-types/src/iota_system_state/mod.rs
8
94.37
-0.22% crates/starfish/core/src/header_synchronizer.rs
7
64.3
0.82% crates/iota-json-rpc-types/src/iota_transaction.rs
6
91.09
2.74% crates/iota-grpc-server/src/server.rs
6
97.45
0.01% crates/iota-json-rpc/src/coin_api.rs
6
91.02
0.0% crates/iota-types/src/lib.rs
5
38.46
0.0% crates/iota-core/src/checkpoints/checkpoint_output.rs
5
98.83
-0.35% crates/iota-core/src/post_consensus_input_reader/owned.rs
5
51.49
0.99% crates/iota-json-rpc-types/src/object_changes.rs
5
98.55
0.05% crates/iota-network-stack/src/server.rs
5
81.48
0.0% crates/iota-types/src/governance.rs
4
90.59
-0.37% crates/iota-core/src/grpc_indexes.rs
4
84.26
3.64% crates/iota-http/src/config.rs
4
56.69
1.39% crates/iota-json-rpc-types/src/iota_object.rs
4
77.34
-0.26% crates/iota-network/src/randomness/mod.rs
4
52.04
-1.36% crates/iota-sdk/src/apis/read.rs
4
69.7
0.0% crates/iota-types/src/timelock/timelocked_staked_iota.rs
4
95.51
-1.68% crates/starfish/core/src/commit_consumer.rs
3
98.68
2.0% crates/iota-core/src/transaction_input_loader.rs
3
94.99
-0.38% crates/iota-genesis-builder/src/lib.rs
3
82.14
0.0% crates/iota-genesis-builder/src/validator_info.rs
3
97.54
1.88% crates/iota-http/src/lib.rs
3
41.49
0.0% crates/iota-tool/src/db_tool/db_dump.rs
3
99.48
0.03% crates/starfish/core/src/linearizer.rs
2
90.17
-0.26% crates/iota-grpc-server/src/types.rs
2
89.04
-0.27% crates/iota-network/src/discovery/mod.rs
1
86.11
-2.78% crates/iota-cluster-test/src/test_case/native_transfer_test.rs
1
89.69
0.34% crates/iota-core/src/connection_monitor.rs
1
99.02
1.0% crates/iota-core/src/post_consensus_input_reader/package.rs
1
96.32
0.53% crates/iota-core/src/transaction_driver/mod.rs
1
93.94
-3.03% crates/iota-json-rpc-types/src/iota_protocol.rs
1
97.06
-0.98% crates/starfish/core/src/storage/mod.rs
Jobs
ID Job ID Ran Files Coverage
1 nextest+simtest - 39883454019.1 23 Oct 2026 02:16AM UTC 1127
71.36
GitHub Action Run
Source Files on build 39883454019
  • Tree
  • List 1127
  • Changed 133
  • Source Changed 103
  • Coverage Changed 121
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #39883454019
  • 129e1931 on github
  • Prev Build on develop (#39704840957)
  • Next Build on develop (#40049193734)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc