diff --git a/docs/quality/diagnostic-allowances-linux.json b/docs/quality/diagnostic-allowances-linux.json index 102b3e6f..cb9ba933 100644 --- a/docs/quality/diagnostic-allowances-linux.json +++ b/docs/quality/diagnostic-allowances-linux.json @@ -1,62 +1,6 @@ { "schema": 1, "warnings": [ - { - "count": 1, - "fingerprint": "71a6fbd0e075f7bca826a065d8b76e484b4875a6f093f84e54435b13dc420bab", - "item": "crate::dlq_and_settle", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "c9df997dfba8fe967a2e7dc756fd00658525c64c2b5b7caba402e69cc0ac2ff9", - "item": "crate::ReadPlan < 'a >::segment", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "0008921133ad15a463a765a126faabe1a8b26edcb252db05337ec92b202fd46f", - "item": "crate::TEST_ASSERT_KEYED_DENSE", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "ee99fdfcbd2ac9a98b1979169a16a76f4ddcb71a8a4f48a67f79d4abd0e24319", - "item": "crate::read_merged", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "38c5fba0dcbe08fe844b3044cbbff4ee685a26765d0b1fb9948d13fd624f5190", - "item": "crate::read_stitched", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "d1ab2ef2c5d52cc346cc433c770edfd4dc2a508ec0ec7c27d5aef2937602fdad", - "item": "crate::WALK_CLOSE_SUBMITS_SNAPSHOT", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/dst/tests/runtime_sweep.rs" - }, - { - "count": 1, - "fingerprint": "4726a4571dfdb78495ced8de54fa2f3b16bb3d76083e46a6132cbeb4fa571ab5", - "item": "crate::TraceState::event", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/dst/trace_store.rs" - }, - { - "count": 1, - "fingerprint": "4536c5ad357fab836314c87fe78d95b9c23d9f545289e7ee7c0e600f6393a5d2", - "item": "crate::read", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/history/canonical_span.rs" - }, { "count": 1, "fingerprint": "926990bf4070f815519da4ea817cf8f1c3746bcd938d366e01d2064f42874d2a", @@ -78,13 +22,6 @@ "lint": "clippy::allow_attributes_without_reason", "path": "src/http.rs" }, - { - "count": 1, - "fingerprint": "3fc6f535aafafccf0492bd8dd860c3326140c64c8104e0d87824ee811be9aba4", - "item": "crate", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/project_policy.rs" - }, { "count": 1, "fingerprint": "9f75b52bc2315c18f5b5f127af17ec6b4cadc2938ee7e2e9d1b38fd6c521946a", @@ -99,13 +36,6 @@ "lint": "clippy::allow_attributes_without_reason", "path": "src/shard_directory.rs" }, - { - "count": 1, - "fingerprint": "f111c876302a05332b58f7bb0ff42c887f6655ad6ad616a6392bf092b1e3e449", - "item": "crate::serve", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "8d6026711db89f4d2295fd5cccc0b3aafdadba25af2349a816723c124357d9fa", @@ -183,27 +113,6 @@ "lint": "clippy::arithmetic_side_effects", "path": "src/postings/validated/tests.rs" }, - { - "count": 1, - "fingerprint": "c6ca46333280941cc3d9e0533fb04c013cfbc0e35fcd776a233242943a9b421d", - "item": "crate::validate_boundary", - "lint": "clippy::cast_possible_truncation", - "path": "src/application/creation/fork.rs" - }, - { - "count": 1, - "fingerprint": "6976bf455d3ff810be747836b93b0a893da0aeb7a7cb1af430f022d5901c937d", - "item": "crate::o2_tests::o2_batch_publishes_one_owner_only_after_authentication_and_admission", - "lint": "clippy::cast_possible_truncation", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "a46e69225d9ed64fdb4fc51c623c367cc0c5a1fe1d45f0d95874afd2278bf356", - "item": "crate::o2_tests::o2_batch_publishes_one_owner_only_after_authentication_and_admission", - "lint": "clippy::cast_possible_truncation", - "path": "src/application/read.rs" - }, { "count": 1, "fingerprint": "19faeb7207c3e2acf0289a7024d8e6c58a999d895294c83ba774d6ca7da28d40", @@ -246,76 +155,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/crypto/decrypt/tests.rs" }, - { - "count": 1, - "fingerprint": "287f037923e94ad9602fa8936d7d3907ad9f5766f44826900d2cbbce2c323d30", - "item": "crate::a_bounded_cleanup_drains_residue_without_touching_the_live_generation", - "lint": "clippy::cast_possible_truncation", - "path": "src/dst/tests/consumer_generations.rs" - }, - { - "count": 1, - "fingerprint": "7d7179a86e3fc221ff7892272b362fdbb9b4fdd0b2c64b343f0a043cf94a5c19", - "item": "crate::a_bounded_cleanup_drains_residue_without_touching_the_live_generation", - "lint": "clippy::cast_possible_truncation", - "path": "src/dst/tests/consumer_generations.rs" - }, - { - "count": 1, - "fingerprint": "9c302163b5ac0595c88cf4781f878f9b6a19c2f66f407371aba23db42885c6be", - "item": "crate::a_bounded_cleanup_drains_residue_without_touching_the_live_generation", - "lint": "clippy::cast_possible_truncation", - "path": "src/dst/tests/consumer_generations.rs" - }, - { - "count": 1, - "fingerprint": "a09cfaa70cac37e0689661547b045c69e00ff0f527f728ed3c1726eddf15d439", - "item": "crate::drain_filtered", - "lint": "clippy::cast_possible_truncation", - "path": "src/dst/tests/fixture_storage.rs" - }, - { - "count": 1, - "fingerprint": "9284baf0ba6fae64e2b6d3168c3aa2d9cb5fef0a5c0735d7a8179c1ae8c50844", - "item": "crate::ring_ordering_paging_and_duplicates_at_offset_level", - "lint": "clippy::cast_possible_truncation", - "path": "src/dst/tests/reads_ring.rs" - }, - { - "count": 1, - "fingerprint": "00d2626d124accbbd7a0db013c4e9b0416d8023a3eaa01e5f9ddc9928458ca43", - "item": "crate::start", - "lint": "clippy::cast_possible_truncation", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "14f564e013fdbc40790485c24d7d75850f5e764f4b29a2a25f71766869a295d5", - "item": "crate::start", - "lint": "clippy::cast_possible_truncation", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "287380e0729ca7709b0687fe7c0a679f59a540efb523bc44be95157cef9857df", - "item": "crate::start", - "lint": "clippy::cast_possible_truncation", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "a91db676c2df87beb5164c6126bc61a784386324c4da1d1ed719af0eb64b8b3c", - "item": "crate::start", - "lint": "clippy::cast_possible_truncation", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "da72cebb7a40235348c7a4943f79799dfe56e111619f56efa3129a18236c8202", - "item": "crate::start", - "lint": "clippy::cast_possible_truncation", - "path": "src/fleet.rs" - }, { "count": 1, "fingerprint": "e496b6173e09853cd12dd44b4ce012a65607277d7178f7f29d0d4531571be5cf", @@ -323,13 +162,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/fleet/repository.rs" }, - { - "count": 1, - "fingerprint": "5af623bc62c0ccc1820a8f347ac915b3aca7e21cb2a40a61cdd46b0f61ff4867", - "item": "crate::raw_page", - "lint": "clippy::cast_possible_truncation", - "path": "src/history/postings_validation_tests.rs" - }, { "count": 1, "fingerprint": "d5be370059abb30c56ae98081eb68c137b9ff42e49bf9e04c6dde993dfdf51b8", @@ -337,13 +169,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/http.rs" }, - { - "count": 1, - "fingerprint": "16d4bd61ffc5b2b6345f6ef44318516da4f02fe7d1f9aa9e8ae9d14c522dd1f6", - "item": "crate::decode_char", - "lint": "clippy::cast_possible_truncation", - "path": "src/offsets.rs" - }, { "count": 1, "fingerprint": "b9c4dae2f6f8f9a15e07cedb0173130ecb2ac25bf3b7c17858430da758e4c98a", @@ -365,20 +190,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/product.rs" }, - { - "count": 1, - "fingerprint": "b900c089908cc6049a860cb71fca75c926382dffdeeadccf7dee050cd40e8cb3", - "item": "crate::CatalogCursor::encode", - "lint": "clippy::cast_possible_truncation", - "path": "src/product_cursor.rs" - }, - { - "count": 1, - "fingerprint": "854ed2b01aff96913794d23e8c6a480c2b3b900d70b52d6ce400051af02158f7", - "item": "crate::ScanCursor::encode", - "lint": "clippy::cast_possible_truncation", - "path": "src/product_cursor.rs" - }, { "count": 1, "fingerprint": "a2b9a18d18b6ccd3e1b5e20712a504f8f17e0fdd0767eef179ed8c2f5b9cd7c0", @@ -386,34 +197,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/registry.rs" }, - { - "count": 1, - "fingerprint": "9e489bf9c63f903996f5b53ecd6642d31bd17e94bd37af89ecb868015d63a846", - "item": "crate::::now", - "lint": "clippy::cast_possible_truncation", - "path": "src/runtime.rs" - }, - { - "count": 1, - "fingerprint": "043c5b1b0ed2607c4361ee53907fda91073cc4aae91b714732a9191d7ca520c8", - "item": "crate::ManualClock::advance", - "lint": "clippy::cast_possible_truncation", - "path": "src/runtime.rs" - }, - { - "count": 1, - "fingerprint": "c4bc68ccc02a08088a6b3aa54ec76539b649f03f03a2be166e28b999dcc96351", - "item": "crate::MonotonicNow::millis", - "lint": "clippy::cast_possible_truncation", - "path": "src/runtime.rs" - }, - { - "count": 1, - "fingerprint": "7801c4f0eb99e050a6ee03c0ba53d2e916006cd4b99c8f409cf9624daf0dcf85", - "item": "crate::tests::segment_order_cannot_erase_a_hot_key_or_change_decisions", - "lint": "clippy::cast_possible_truncation", - "path": "src/scaler3.rs" - }, { "count": 1, "fingerprint": "90d71b08a4ec0e9c9cf53d4401ee70aa94259e74cdef52f841689d649feab830", @@ -533,62 +316,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/sse/feed.rs" }, - { - "count": 1, - "fingerprint": "600c95d869121238690c36c6bb288384251ab6cd254720bdb70869962613f5c3", - "item": "crate::append_component", - "lint": "clippy::cast_possible_truncation", - "path": "src/tenant.rs" - }, - { - "count": 1, - "fingerprint": "358ce14a15bcb1303d944d7ddb0a25af031ee3be1d7f7b8fedca7dc3efe0d400", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "912e8a7dd64cff86d6fea635c8bac3f1a891e6e211a159e45c5bfcfa0a75769c", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "98a8d307be3f07092b75eb79afdc8aefddaca92ad6560be5e39cdb04d547110a", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "bc239863ff133dc798b6490cf539d3bf1e621430d5ff58bcb0a1a0efc075b3e4", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "c99a2114a5372bda63a2d157747bf968720a72cc6f8ccc07a84542bc7c656626", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "d232522a5cda132af240bbfce31cd37908c01281acf799ce8ac606826f081905", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "d7102acf975a77cf046584fb45217d444dd25ea9e35b49c75ffe28b2fe31fa73", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, { "count": 1, "fingerprint": "4059af753fe3c118d6d67633e67b56814f4f88db59c04f2d9b5a3a9635ba17dd", @@ -687,13 +414,6 @@ "lint": "clippy::disallowed_methods", "path": "src/bootstrap/runtime_handoff.rs" }, - { - "count": 1, - "fingerprint": "c3c8e6f10636569f7060d6fb5a83ad511cafbbe936bcd93bd0054a9c3721ca05", - "item": "crate::reset_refuses_while_in_flight", - "lint": "clippy::disallowed_methods", - "path": "src/dst/trace_store_tests/streams.rs" - }, { "count": 1, "fingerprint": "467ecb0e93130ae35e1b6f44dcb300042a7f8aa3c8ba97139d917f1c1477258d", @@ -708,13 +428,6 @@ "lint": "clippy::disallowed_methods", "path": "src/http.rs" }, - { - "count": 1, - "fingerprint": "363a60fc119bb47f10bce7c4759afe3477bfd115ef0ced4e31b16e2513282769", - "item": "crate::main", - "lint": "clippy::disallowed_methods", - "path": "src/main.rs" - }, { "count": 1, "fingerprint": "a4b24ddc151fb02ad8eabfe6eac9e73cde3ec8bdbd1ad791fe279b189c0673b8", @@ -764,34 +477,6 @@ "lint": "clippy::disallowed_methods", "path": "src/sse/feed.rs" }, - { - "count": 1, - "fingerprint": "daeb065d8b240050dd2a5c8b3982bd8fc6d6b0ed97b395068693949c86dacbbb", - "item": "crate::serve", - "lint": "clippy::disallowed_methods", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "077dcb0658838b0eae07fae1248464feb53eb4915ab8e665afe5540f99f3be58", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::disallowed_methods", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "3daf3c339406341074978c72f890391f92eecea5aaaee0cc01a9682afcff1762", - "item": "crate::TouchJournal::start", - "lint": "clippy::disallowed_methods", - "path": "src/touch.rs" - }, - { - "count": 1, - "fingerprint": "1d034ec3d0e5fb08a999d4f13e4ecce20c136c35c7c22a9d8b5048c8adcd2ac9", - "item": "crate::main", - "lint": "clippy::excessive_nesting", - "path": "examples/readertest.rs" - }, { "count": 1, "fingerprint": "1aa80d18a19ab8c44adad6867582390fd403d7e578c6c980d86a41215fc4d6a6", @@ -836,941 +521,234 @@ }, { "count": 1, - "fingerprint": "4e1a3f179a244f81df2b9047242dda35a2955194fb9d9a2890da450bd1fe9b35", - "item": "crate::dlq_and_settle", + "fingerprint": "1283f4769ff60ff780684ab18786940d14d286f9c38f4a5358460e212b6602d5", + "item": "crate::PlainBatch::append_selected", "lint": "clippy::excessive_nesting", - "path": "src/application/consumer/delivery.rs" + "path": "src/application/read_batch.rs" }, { "count": 1, - "fingerprint": "40534a041f5b422f47767b3bb700b718265f762e51dde78a4a0f98a24b7816d7", - "item": "crate::pull", + "fingerprint": "6f4579e4eaffb0de154901d2ed0630b9b0f5771608d9a231864aec2c39822c5d", + "item": "crate::PlainBatch::append_selected", "lint": "clippy::excessive_nesting", - "path": "src/application/consumer/delivery.rs" + "path": "src/application/read_batch.rs" }, { "count": 1, - "fingerprint": "9f202dfb5f87c9c73eb680fa96b61b41237fbfe9d9b326b733805e33f52e6d35", - "item": "crate::pull", + "fingerprint": "bac5133a4e6124c4c76294dab221641d1794067f018bf6ef8e32f208cb810d7e", + "item": "crate::PlainBatch::append_selected", "lint": "clippy::excessive_nesting", - "path": "src/application/consumer/delivery.rs" + "path": "src/application/read_batch.rs" }, { "count": 1, - "fingerprint": "ef4325435bbee056e68c6efe90654ffd71a5fcd935fee2eefea19f106399dcd2", - "item": "crate::pull", + "fingerprint": "dcbc2ce425da5e94f5c95a1675826f38834007addec44856567ebf0ca3b35ba8", + "item": "crate::PlainBatch::append_selected", "lint": "clippy::excessive_nesting", - "path": "src/application/consumer/delivery.rs" + "path": "src/application/read_batch.rs" }, { "count": 1, - "fingerprint": "42ebb9c72561e888b59478a720e62e9546de1060541143151da6eb0b7285b98e", - "item": "crate::tests::r05_cancelled_ttl_attempt_releases_only_its_owned_slot", + "fingerprint": "7c5a2db9c9f40a9c66d251f218ffc8a3eb4c4251db8a32f919bb2d2f3c8ddf42", + "item": "crate::decode_frames_into", "lint": "clippy::excessive_nesting", - "path": "src/application/creation.rs" + "path": "src/application/read_decode.rs" }, { "count": 1, - "fingerprint": "25d0f8111c690996070f43095a86bf7bafb1a92223936708c5044d225d02c98c", - "item": "crate::delete_lifecycle", + "fingerprint": "e6db68f213ea417c121609c8c1d3436b61244e5ad04a6b1fedf722205e875d11", + "item": "crate::decode_frames_into", "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" + "path": "src/application/read_decode.rs" }, { "count": 1, - "fingerprint": "30f0c95408939467c14ca3ebbb543ed194ed31339dd5e24377cb7e974fafd400", - "item": "crate::delete_lifecycle", + "fingerprint": "11ebf48002f0bd185b30c0846e03215817952e638fd4dab4e6b8f8abe10a8761", + "item": "crate::ReadService::execute_read", "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" + "path": "src/application/read_request.rs" }, { "count": 1, - "fingerprint": "350abd10e6ecc8bc3cebc3d28cf789f3a58e611cb76e0fad483ecd00daa0de65", - "item": "crate::delete_lifecycle", + "fingerprint": "5f94e07b1f88452a7d5f66cc25f142ae234997d0ec4e76d91eea8e063d84f5f7", + "item": "crate::ReadService::execute_read", "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" + "path": "src/application/read_request.rs" }, { "count": 1, - "fingerprint": "3c82ef4fa6edd14deb7e92e6e135a13763ecb50283c2ff0b61014b01adf4b79c", - "item": "crate::delete_lifecycle", + "fingerprint": "801c98a16e59df733387de266fb8bddc9e3eef56045ed6cca11f167c8f221ee4", + "item": "crate::ReadService::execute_read", "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" + "path": "src/application/read_request.rs" }, { "count": 1, - "fingerprint": "5ae95c68a36189a6a97270a7d0b38556b11a7698362a79682ebcaea19619852b", - "item": "crate::delete_lifecycle", + "fingerprint": "aee72b6c9eebf7b3a09b1302260cf78aca541449d543fd9b50077f0d98d45eeb", + "item": "crate::ReadService::execute_read", "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" + "path": "src/application/read_request.rs" }, { "count": 1, - "fingerprint": "f85b889c8716747ed7035b9afcca76089da7c5e7a2cc7050fd7ea3784579470d", - "item": "crate::delete_lifecycle", + "fingerprint": "72618f7a12c31f2645d31d9b442018e2d913c176acb1fcf8409344e5726b1815", + "item": "crate::records::::visit_seq", "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" + "path": "src/application/read_wire.rs" }, { "count": 1, - "fingerprint": "fd3c924d424859c4b5dd84f87bcfcbd4e9d770521fa8405ec8bcf07efef2e380", - "item": "crate::delete_lifecycle", + "fingerprint": "befec59aa11f6b538b8d3172a45d97785fe9611a62711ec01e3dc74c4841ac00", + "item": "crate::RequestWork::run", "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" + "path": "src/application/request_work.rs" }, { "count": 1, - "fingerprint": "00cb7e1681732ced8a5729d8a36bcfc4880ae70c60e13787aac0dee004851212", - "item": "crate::validate_boundary", + "fingerprint": "4a5cbe55fc4a512bfe2bbecf5e8ac4c79b6c64b9b1647c56fd3a5b7c2f10d2ff", + "item": "crate::Ticket::wait", "lint": "clippy::excessive_nesting", - "path": "src/application/creation/fork.rs" + "path": "src/application/request_work.rs" }, { "count": 1, - "fingerprint": "9261bca38e050f6bc31edb34d7eac39535119dc56391181972edd1ae220b9d41", - "item": "crate::publish", + "fingerprint": "3cc16d7cd21fe23ec23e7994f70555a46e6793e78a1256dd8e74553442c5a4af", + "item": "crate::drain_once", "lint": "clippy::excessive_nesting", - "path": "src/application/creation/initialization.rs" + "path": "src/billing.rs" }, { "count": 1, - "fingerprint": "dbd216ac9137bf7a166271b93955bd5a65bff4a51bfd26ed592587c48b6b1393", - "item": "crate::CreationService::create_product", + "fingerprint": "b67a4fff62e09d5ccd1dc88896892fd9c90384cfffad928e2ccd97f2c1233da4", + "item": "crate::drain_once", "lint": "clippy::excessive_nesting", - "path": "src/application/creation/product.rs" + "path": "src/billing.rs" }, { "count": 1, - "fingerprint": "2152575a7b7844c0789cb5916bec1dc8286ff3e879ed34a90925fbda45e9d5d4", - "item": "crate::execute_segment", + "fingerprint": "b8619f089e9a898e9a4935e4d91028bd602c18d3ac91d140343ed9d5762cdf74", + "item": "crate::drain_once", "lint": "clippy::excessive_nesting", - "path": "src/application/read.rs" + "path": "src/billing.rs" }, { "count": 1, - "fingerprint": "b2ed7a64ac4e12752e50ea7f6086069b9ce54b39ea7e5c59eb75ec09c219d325", - "item": "crate::fork_chain_of", + "fingerprint": "ceebc667343eb1d7af7d4e60f7436504a48488f58d43cf61d47ace40bab61865", + "item": "crate::drain_once", "lint": "clippy::excessive_nesting", - "path": "src/application/read.rs" + "path": "src/billing.rs" }, { "count": 1, - "fingerprint": "1283f4769ff60ff780684ab18786940d14d286f9c38f4a5358460e212b6602d5", - "item": "crate::PlainBatch::append_selected", + "fingerprint": "1eb43c11928ed8346116410b8fef89bbc6048766f282c81da654ee8d618119a1", + "item": "crate::tombstone_walk", "lint": "clippy::excessive_nesting", - "path": "src/application/read_batch.rs" + "path": "src/billing.rs" }, { "count": 1, - "fingerprint": "6f4579e4eaffb0de154901d2ed0630b9b0f5771608d9a231864aec2c39822c5d", - "item": "crate::PlainBatch::append_selected", - "lint": "clippy::excessive_nesting", - "path": "src/application/read_batch.rs" - }, - { - "count": 1, - "fingerprint": "bac5133a4e6124c4c76294dab221641d1794067f018bf6ef8e32f208cb810d7e", - "item": "crate::PlainBatch::append_selected", - "lint": "clippy::excessive_nesting", - "path": "src/application/read_batch.rs" - }, - { - "count": 1, - "fingerprint": "dcbc2ce425da5e94f5c95a1675826f38834007addec44856567ebf0ca3b35ba8", - "item": "crate::PlainBatch::append_selected", - "lint": "clippy::excessive_nesting", - "path": "src/application/read_batch.rs" - }, - { - "count": 1, - "fingerprint": "7c5a2db9c9f40a9c66d251f218ffc8a3eb4c4251db8a32f919bb2d2f3c8ddf42", - "item": "crate::decode_frames_into", - "lint": "clippy::excessive_nesting", - "path": "src/application/read_decode.rs" - }, - { - "count": 1, - "fingerprint": "e6db68f213ea417c121609c8c1d3436b61244e5ad04a6b1fedf722205e875d11", - "item": "crate::decode_frames_into", - "lint": "clippy::excessive_nesting", - "path": "src/application/read_decode.rs" - }, - { - "count": 1, - "fingerprint": "11ebf48002f0bd185b30c0846e03215817952e638fd4dab4e6b8f8abe10a8761", - "item": "crate::ReadService::execute_read", - "lint": "clippy::excessive_nesting", - "path": "src/application/read_request.rs" - }, - { - "count": 1, - "fingerprint": "5f94e07b1f88452a7d5f66cc25f142ae234997d0ec4e76d91eea8e063d84f5f7", - "item": "crate::ReadService::execute_read", - "lint": "clippy::excessive_nesting", - "path": "src/application/read_request.rs" - }, - { - "count": 1, - "fingerprint": "801c98a16e59df733387de266fb8bddc9e3eef56045ed6cca11f167c8f221ee4", - "item": "crate::ReadService::execute_read", - "lint": "clippy::excessive_nesting", - "path": "src/application/read_request.rs" - }, - { - "count": 1, - "fingerprint": "aee72b6c9eebf7b3a09b1302260cf78aca541449d543fd9b50077f0d98d45eeb", - "item": "crate::ReadService::execute_read", - "lint": "clippy::excessive_nesting", - "path": "src/application/read_request.rs" - }, - { - "count": 1, - "fingerprint": "72618f7a12c31f2645d31d9b442018e2d913c176acb1fcf8409344e5726b1815", - "item": "crate::records::::visit_seq", - "lint": "clippy::excessive_nesting", - "path": "src/application/read_wire.rs" - }, - { - "count": 1, - "fingerprint": "befec59aa11f6b538b8d3172a45d97785fe9611a62711ec01e3dc74c4841ac00", - "item": "crate::RequestWork::run", - "lint": "clippy::excessive_nesting", - "path": "src/application/request_work.rs" - }, - { - "count": 1, - "fingerprint": "4a5cbe55fc4a512bfe2bbecf5e8ac4c79b6c64b9b1647c56fd3a5b7c2f10d2ff", - "item": "crate::Ticket::wait", - "lint": "clippy::excessive_nesting", - "path": "src/application/request_work.rs" - }, - { - "count": 1, - "fingerprint": "7c8d260b0b1720495fd47fd9a739569d0cd61496f669c49020928ec9228ab033", - "item": "crate::resume_incarnation", - "lint": "clippy::excessive_nesting", - "path": "src/application/topology.rs" - }, - { - "count": 1, - "fingerprint": "3cc16d7cd21fe23ec23e7994f70555a46e6793e78a1256dd8e74553442c5a4af", - "item": "crate::drain_once", - "lint": "clippy::excessive_nesting", - "path": "src/billing.rs" - }, - { - "count": 1, - "fingerprint": "b67a4fff62e09d5ccd1dc88896892fd9c90384cfffad928e2ccd97f2c1233da4", - "item": "crate::drain_once", - "lint": "clippy::excessive_nesting", - "path": "src/billing.rs" - }, - { - "count": 1, - "fingerprint": "b8619f089e9a898e9a4935e4d91028bd602c18d3ac91d140343ed9d5762cdf74", - "item": "crate::drain_once", - "lint": "clippy::excessive_nesting", - "path": "src/billing.rs" - }, - { - "count": 1, - "fingerprint": "ceebc667343eb1d7af7d4e60f7436504a48488f58d43cf61d47ace40bab61865", - "item": "crate::drain_once", - "lint": "clippy::excessive_nesting", - "path": "src/billing.rs" - }, - { - "count": 1, - "fingerprint": "1eb43c11928ed8346116410b8fef89bbc6048766f282c81da654ee8d618119a1", - "item": "crate::tombstone_walk", - "lint": "clippy::excessive_nesting", - "path": "src/billing.rs" - }, - { - "count": 1, - "fingerprint": "525bc1ec3f373286062971b854fa22533ec2dc1a1378958dbf85e28b9c7846d9", - "item": "crate::tombstone_walk", - "lint": "clippy::excessive_nesting", - "path": "src/billing.rs" - }, - { - "count": 1, - "fingerprint": "7965655162764ba230f8f0558403f35666082f5472436173428657015f74d14f", - "item": "crate::tombstone_walk", - "lint": "clippy::excessive_nesting", - "path": "src/billing.rs" - }, - { - "count": 1, - "fingerprint": "bfc5b26ccb9cda109577e2c4ccc524f1ee3beb235ab112bcc26b0e4d19c21bd6", - "item": "crate::tombstone_walk", - "lint": "clippy::excessive_nesting", - "path": "src/billing.rs" - }, - { - "count": 1, - "fingerprint": "2f62db7585b4d3ccaa95e66fe7ad581dc1180577d52b456a221b29fc087f4ef2", - "item": "crate::main", - "lint": "clippy::excessive_nesting", - "path": "src/bin/livebench.rs" - }, - { - "count": 1, - "fingerprint": "4239b5b2ef451cfc3c075064486fc3ff459ba62405925418cd8db6d37813a5b1", - "item": "crate::main", - "lint": "clippy::excessive_nesting", - "path": "src/bin/livebench.rs" - }, - { - "count": 1, - "fingerprint": "abcf4ae5d0e9c8f9414eea67a7bde2f1048d3213507670cfd6824992b36090b8", - "item": "crate::main", - "lint": "clippy::excessive_nesting", - "path": "src/bin/livebench.rs" - }, - { - "count": 1, - "fingerprint": "cae7a8d75308315a2440fec7618150f7d79054ba9c20e850ffbef47adaeed2e8", - "item": "crate::main", - "lint": "clippy::excessive_nesting", - "path": "src/bin/livebench.rs" - }, - { - "count": 1, - "fingerprint": "1eac21836af3d62faaf86c992f6e6a774c3f293cc7dd274d2683179da33988cd", - "item": "crate::run", - "lint": "clippy::excessive_nesting", - "path": "src/bootstrap.rs" - }, - { - "count": 1, - "fingerprint": "7fe6a1e41ab4be24f2266a6b2738614cdd5a7e8ee622f2a37e48df551518cad7", - "item": "crate::run", - "lint": "clippy::excessive_nesting", - "path": "src/bootstrap.rs" - }, - { - "count": 1, - "fingerprint": "b0a969acd3a47342907192890b2674b9ea3dd2dd50b7a2bbcbd3f6ab65185ffa", - "item": "crate::run", - "lint": "clippy::excessive_nesting", - "path": "src/bootstrap.rs" - }, - { - "count": 1, - "fingerprint": "ec7117bdc45729391aca40eb28900ebca02f9ad02d9cf6611c112ae8def5a273", - "item": "crate::::drop", - "lint": "clippy::excessive_nesting", - "path": "src/bootstrap/runtime_handoff.rs" - }, - { - "count": 1, - "fingerprint": "20915c85f18212ea79ef304324e79b7418de39d6017b019bbfb88a14d18fbbc4", - "item": "crate::::delete_stream", - "lint": "clippy::excessive_nesting", - "path": "src/dst/fault_store.rs" - }, - { - "count": 1, - "fingerprint": "a3f50add507862112bcb0572ef759a1844b9691c0949142659919d6098c0b6fd", - "item": "crate::::delete_stream", - "lint": "clippy::excessive_nesting", - "path": "src/dst/fault_store.rs" - }, - { - "count": 1, - "fingerprint": "02fb0b5040299908eb75e672ed0057ed59824416ce3d63df2349931000fbab03", - "item": "crate::::list", - "lint": "clippy::excessive_nesting", - "path": "src/dst/fault_store.rs" - }, - { - "count": 1, - "fingerprint": "484a3e984d3f8323567c87f5234c69963717ccbc43dd5ba8dcd80ac3028110f3", - "item": "crate::readiness_endpoint_refuses_each_permanent_critical_exit", - "lint": "clippy::excessive_nesting", - "path": "src/dst/review_readiness.rs" - }, - { - "count": 1, - "fingerprint": "38b4b5b4f365c240f983831949ac1c0b721c31c6ba3b9ed095b8683383e97eb4", - "item": "crate::r16_unauthorized_watch_shapes_are_independent_of_existence", - "lint": "clippy::excessive_nesting", - "path": "src/dst/review_security.rs" - }, - { - "count": 1, - "fingerprint": "beac18e52a4e5e4bcbfabf624dc1bc9185118a356cc1c76368cbc5dd440a8ae4", - "item": "crate::r16_unauthorized_watch_shapes_are_independent_of_existence", - "lint": "clippy::excessive_nesting", - "path": "src/dst/review_security.rs" - }, - { - "count": 1, - "fingerprint": "fe2069e7763d98d2b2a1d3b02013973bf1432956a9970e240895fede3f9dbc3c", - "item": "crate::r16_unauthorized_watch_shapes_are_independent_of_existence", - "lint": "clippy::excessive_nesting", - "path": "src/dst/review_security.rs" - }, - { - "count": 1, - "fingerprint": "7944f4056ffd5311351a49104fd999ff60f2fa54e8d3d8e8b11f33e61e7e6402", - "item": "crate::OpLog::audit", - "lint": "clippy::excessive_nesting", - "path": "src/dst/runtime.rs" - }, - { - "count": 1, - "fingerprint": "b11118ab102192ad1cc42f532b7ec00d82c7a340ed61051c1ac104a9d71f7a93", - "item": "crate::OpLog::audit", - "lint": "clippy::excessive_nesting", - "path": "src/dst/runtime.rs" - }, - { - "count": 1, - "fingerprint": "fb62bbd1021e932cf5fdc140a5f4db1b2c06ad36db64f17be41310a1754a59a2", - "item": "crate::Workload::append_to", - "lint": "clippy::excessive_nesting", - "path": "src/dst/runtime.rs" - }, - { - "count": 1, - "fingerprint": "580d2ad6ac21a732ec42174ec819dcd149063e8819b25f4bdc043cf320e2f48d", - "item": "crate::product_consumer_drains_lineage_across_split", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/consumer_product.rs" - }, - { - "count": 1, - "fingerprint": "01f29285e5b5e3906d6dc5cb23aebac8c693299e54bf334a73e89abde40a1d51", - "item": "crate::rig_opener", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/fixture_http.rs" - }, - { - "count": 1, - "fingerprint": "24d6a9f7d08260ec8d41b585b5cd32e156e5a9b0b117cc840c45911732880158", - "item": "crate::r09_fleet_cancels_entered_documents_without_partial_authority_or_lost_retry", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/fleet_controller.rs" - }, - { - "count": 1, - "fingerprint": "ba04939f0f75a7c37688a56805d79f9171f2eeb312d37e9d334617c86631c78f", - "item": "crate::r09_fleet_cancels_entered_documents_without_partial_authority_or_lost_retry", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/fleet_controller.rs" - }, - { - "count": 1, - "fingerprint": "c849f9dbe87bd3cd71d409d13273ebb815eb5be62a0fd48a4a57d61ac54342eb", - "item": "crate::r05_unknown_child_state_preserves_its_source_reference", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/fork_lifecycle.rs" - }, - { - "count": 1, - "fingerprint": "fc1101b26da17357fcbc421fcb84beeb56f04c7b14262fcc48739ac08ffb6971", - "item": "crate::r05_unknown_child_state_preserves_its_source_reference", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/fork_lifecycle.rs" - }, - { - "count": 1, - "fingerprint": "4e09b4b11bc905358797d7b4881dda9492eb422131e163dfbb0e63084914db0d", - "item": "crate::an_initialization_cannot_be_resumed_with_another_key", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/lifecycle_creation.rs" - }, - { - "count": 2, - "fingerprint": "47c874007589f3c3294157c7f1e65f8f794f8b1dee4b73ec2a990dca0a212396", - "item": "crate::livefeed_remote_sealed_predecessor_streams_through_owner", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/livefeed_history.rs" - }, - { - "count": 1, - "fingerprint": "dedb3df47790ea5d018d365d1788da658fe89b965b07e76ffc4053f669c2b300", - "item": "crate::livefeed_split_shared_subscribers_swap_once_deliver_twice", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/livefeed_swap.rs" - }, - { - "count": 1, - "fingerprint": "28a8ee77e7a3c036337c0a3463d49b0711893258a54d3e617c9ce7bc075ed02d", - "item": "crate::cut_resume_never_skips_a_durable_record", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/persistence_faults.rs" - }, - { - "count": 1, - "fingerprint": "2c37182cb22d080ea24dbcab995f749bdc692d610818cb41241001b317702308", - "item": "crate::cut_resume_never_skips_a_durable_record", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/persistence_faults.rs" - }, - { - "count": 1, - "fingerprint": "49560d6a75a831b67a5d2b7472d23c2cfecbe157d48b31d7306356b374cee6b9", - "item": "crate::the_first_advance_seals_the_history_layout::wait_absorbed", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/reads_history.rs" - }, - { - "count": 1, - "fingerprint": "7809e9cb9c94055a5bca6d983583ee40841106a34d92a33b70bc067b4fe9cebd", - "item": "crate::the_first_advance_seals_the_history_layout::wait_absorbed", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/reads_history.rs" - }, - { - "count": 1, - "fingerprint": "f705df536f1c133fec22b72a67d74ae24a7012bed3b97c525efb16351dfa64fd", - "item": "crate::a_duplicate_absorbed_op_does_not_advance_the_trim", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/reads_ring.rs" - }, - { - "count": 1, - "fingerprint": "e13069f5d295aa1a0bc9ba761037dd5419e672cc1e003a2833d20a9462ee432f", - "item": "crate::r09a_cancelled_topology_job_leaves_exact_debt_for_a_fresh_read_owner", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/request_topology_debt.rs" - }, - { - "count": 1, - "fingerprint": "47dd963a38cd246519b3c94c97f538c3251ece297e312681e5b57f72c0f476a7", - "item": "crate::r17a_each_required_engine_exit_changes_real_health_and_readyz", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/runtime_engine_lifecycle.rs" - }, - { - "count": 1, - "fingerprint": "160515be4a62535d57f518177f2ba2aa31a9ada7a4f1724fea9e71aad7a1df37", - "item": "crate::open_gate_escalates_holdoff_for_engines_that_die_young", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/runtime_open_gate.rs" - }, - { - "count": 1, - "fingerprint": "f93d8e4dcb13e18325d41a73785f005b0db03929d72ccdf9ef2d3b62d239fd12", - "item": "crate::tombstone_walk_fairness_under_occupied_budget", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/runtime_sweep.rs" - }, - { - "count": 1, - "fingerprint": "1ba944c8796d64e85591514448ffd5eb882b1de1506de50d55f20404327ed3a0", - "item": "crate::noisy_neighbor_cannot_degrade_a_compliant_project", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/security_isolation.rs" - }, - { - "count": 1, - "fingerprint": "e21dadb6bdf009384ba30b2a458eef4ae3203860fb2585de44b2a37c141a4e96", - "item": "crate::noisy_neighbor_cannot_degrade_a_compliant_project", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/security_isolation.rs" - }, - { - "count": 1, - "fingerprint": "cceace2aa58346ed40165ffab88a9c66f603b7d13e76d5932d8d63e151b1ccec", - "item": "crate::product_sse_controls_carry_signed_cursors", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/sse_delivery.rs" - }, - { - "count": 1, - "fingerprint": "f2c96a740bf36f56cb4d1daef714716078255447ff01f767c09a7fb971bfc15f", - "item": "crate::sse_follows_lineage_across_split", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/sse_delivery.rs" - }, - { - "count": 1, - "fingerprint": "5233d9b140eedafdf1a6d5ef39edf3e0e77aead9dbca56c8355fbc7b95604acf", - "item": "crate::::delete_stream", - "lint": "clippy::excessive_nesting", - "path": "src/dst/trace_store.rs" - }, - { - "count": 1, - "fingerprint": "a7f3ede7bc2c16bbde8eca36a575c5562508da5abf0782f71dac4dea29e25851", - "item": "crate::::delete_stream", - "lint": "clippy::excessive_nesting", - "path": "src/dst/trace_store.rs" - }, - { - "count": 1, - "fingerprint": "be5566b4de849f072132e9527e11b919150e7e2214eb569fe25e20bf069980ab", - "item": "crate::concurrent_begins_with_reverse_finishes_resolve_every_event_exactly_once", - "lint": "clippy::excessive_nesting", - "path": "src/dst/trace_store_tests/concurrency.rs" - }, - { - "count": 1, - "fingerprint": "17502ef4ad24ab8eff377569c3983dfeb9d0f0c5928c5d090838b9db49e906fc", - "item": "crate::::delete_stream", - "lint": "clippy::excessive_nesting", - "path": "src/dst/trace_store_tests/mod.rs" - }, - { - "count": 1, - "fingerprint": "06698729ff291ef104d9733ec1037c19a65d3270530b92d93f2eeab5ba6196c2", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "2835ee8305da81421eb5976b96d36eb88328147bbae4f76f8ff2e4beba248ad5", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "36b90f4f43f5a7a78c3cbed3c2459912fcad41b06935b0c0cd48090d94929161", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "404fd54290c30fad44947c652d821a7faa6849b8c4b4188e4e3f431b0ce9627d", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "419888b61336a2fe088a9d4001c92cb5bb80fac1ab21c15f5ed2126c247ab5b2", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "5827e1b189432eb44bcb935ca65e398807270e9b01838328d719631717471aa6", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "5c2dc2ab4e0b392223dd9fc3a006db0c52d72882376d1c5c48347279fb168db2", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "5cdee18e4f40367d8f98d7b20db1aa4881ab79ef977a0b2134c34e992c46d057", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "6b08b3fcd5155c8097a536a7a63b0fa95ae9f7b2b7ea05d7feca9401e24a8773", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "79c43ce915ae0f1c0bf008d365be655d2b6ebe3a68dd35d0b6ce691878fcd6f7", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "7a6dcd68fbe4cd8ede5068e19764016cce533afb56f09c013fbb331360468b9c", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "7b667d3b38ba531b9b6bb2210c1d1495db5af847091b241539617f60147c6ea5", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "8440778e362a9f8d5367803f3618c074e1788d2d27bc085227e6d976ebc3ff18", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "a3f6e52fc8f1b9487fd2cba23d77056e6ce5bf4c26ff368e988732cef895ecd4", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "aedc6320892e20a9e3f90ac59c15a11361caf654946dba23e51a9428534ff2ff", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "c133ec13755d7052663af995576bda9b090b7a0dbae27ce19e299a9decfcac5d", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 2, - "fingerprint": "ca06ad69f8478620482688011c82a86d4bee98ae8fedec04963bcbd0d798b82a", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "d24fb286c1b3c215d48debd7d731496c8d5af785ff6d639a47794e3a72845f25", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 2, - "fingerprint": "eb2efd7c80d77c5e633e875b3cab5d6d5fefe733b94b50cac5f08b4f7400cf1b", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "f2fa0c5cfce116cff386c2b9a2c5effce455460a33b587007df5c50a79f4cf10", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "3624e804e1dc6bce3409cf6585bcea1217d1b130ae1fe593c9cdc81f5c91f499", - "item": "crate::tests::cancelled_fleet_append_keeps_durable_outbox_and_same_retry_id", - "lint": "clippy::excessive_nesting", - "path": "src/fleet/outbox.rs" - }, - { - "count": 1, - "fingerprint": "ae32359b623c26c7e626d9d6b30d70f99380751ff439f13a2064cc03038e3e37", - "item": "crate::FleetRepository::read_population", - "lint": "clippy::excessive_nesting", - "path": "src/fleet/repository.rs" - }, - { - "count": 1, - "fingerprint": "ccd56e1e8b8de8f0f00baf3002d4252b358a1be553562ea6691499ca76cec929", - "item": "crate::FleetRepository::read_population", - "lint": "clippy::excessive_nesting", - "path": "src/fleet/repository.rs" - }, - { - "count": 2, - "fingerprint": "353c4adbd7a84fd0ee4d793ecf5004cea4e4def0c78fee65c123890742e0e22b", - "item": "crate::raw_page", - "lint": "clippy::excessive_nesting", - "path": "src/history/postings_validation_tests.rs" - }, - { - "count": 1, - "fingerprint": "8943707662c6a381a961be34fe8a2c04f6585d385985d76b8d9be4a48d752496", - "item": "crate::raw_page", - "lint": "clippy::excessive_nesting", - "path": "src/history/postings_validation_tests.rs" - }, - { - "count": 1, - "fingerprint": "2855a1d3e51e88876253da4f8ba9f26cf2ee5b2cc3ad2e777c624c12cb081153", - "item": "crate::Absorber::gather_due", - "lint": "clippy::excessive_nesting", - "path": "src/history/worker.rs" - }, - { - "count": 1, - "fingerprint": "4760b6f6157e0b1d432988b788d8adeb347837b9b292dee165c1a6cdaf9195e2", - "item": "crate::Absorber::gather_due", - "lint": "clippy::excessive_nesting", - "path": "src/history/worker.rs" - }, - { - "count": 1, - "fingerprint": "8a8eaa70b4ae377f730cf0227b9e6920fc09472b9b3ea808132597d6cb3ea2b7", - "item": "crate::Absorber::gather_due", - "lint": "clippy::excessive_nesting", - "path": "src/history/worker.rs" - }, - { - "count": 1, - "fingerprint": "af1057e5fc7df11aaaa5f2ca8eb50174498749ae1f1d2a01f831a84b5bad9c9c", - "item": "crate::Absorber::gather_due", - "lint": "clippy::excessive_nesting", - "path": "src/history/worker.rs" - }, - { - "count": 1, - "fingerprint": "ed9cecb327df14c2c913d96e97d8ad89b5839f3c74db66a939da84a8748dde91", - "item": "crate::Absorber::gather_due", - "lint": "clippy::excessive_nesting", - "path": "src/history/worker.rs" - }, - { - "count": 1, - "fingerprint": "03fd5ad47796621bb1fad1fc50f1afa04a61bf97e56df584548eff1a83123caf", - "item": "crate::append_typed", - "lint": "clippy::excessive_nesting", - "path": "src/http.rs" - }, - { - "count": 1, - "fingerprint": "c16effd6b3a25113a54e7aa093387baba1119d0f514ae932d54bd969ec0d2262", - "item": "crate::Lint < 'a >::check_signature", - "lint": "clippy::excessive_nesting", - "path": "src/mt_lint.rs" - }, - { - "count": 1, - "fingerprint": "ca558a37425e30fbdb804eaac607efc6ef5633ba19965106ab64d517dc755fff", - "item": "crate::Lint < 'a >::check_signature", - "lint": "clippy::excessive_nesting", - "path": "src/mt_lint.rs" - }, - { - "count": 1, - "fingerprint": "62e4970a5e4f5eda75b45c3fd034e451a2be59428eb6dc41b07e3484f46d5137", - "item": "crate::multitenancy_identity_lint::walk", - "lint": "clippy::excessive_nesting", - "path": "src/mt_lint.rs" - }, - { - "count": 1, - "fingerprint": "0b719f20a83a38b88ce0da46cea55093a68027d2f0ce6623e13ec224e0172d92", - "item": "crate::evaluate_alerts", - "lint": "clippy::excessive_nesting", - "path": "src/ops.rs" - }, - { - "count": 1, - "fingerprint": "26ff70f428f00c9c0849d4c549921fd2a0d8364c10f3af93f35fdd44a939e03f", - "item": "crate::evaluate_alerts", + "fingerprint": "525bc1ec3f373286062971b854fa22533ec2dc1a1378958dbf85e28b9c7846d9", + "item": "crate::tombstone_walk", "lint": "clippy::excessive_nesting", - "path": "src/ops.rs" + "path": "src/billing.rs" }, { "count": 1, - "fingerprint": "99174ea4895f6da1a337aed08aa25f82c6a294a47218164bfb729845c074da69", - "item": "crate::evaluate_alerts", + "fingerprint": "7965655162764ba230f8f0558403f35666082f5472436173428657015f74d14f", + "item": "crate::tombstone_walk", "lint": "clippy::excessive_nesting", - "path": "src/ops.rs" + "path": "src/billing.rs" }, { "count": 1, - "fingerprint": "cfc9ec8eaf75c436b9f846e7c169116d067f8f86e4e00ea2dec1751fd3e95d1a", - "item": "crate::evaluate_alerts", + "fingerprint": "bfc5b26ccb9cda109577e2c4ccc524f1ee3beb235ab112bcc26b0e4d19c21bd6", + "item": "crate::tombstone_walk", "lint": "clippy::excessive_nesting", - "path": "src/ops.rs" + "path": "src/billing.rs" }, { "count": 1, - "fingerprint": "1adc3d19b47aa3d3209f102e5361dd68d672773c401b9d0a880d508974f423c9", - "item": "crate::PostingsCache::install_chunk", + "fingerprint": "1eac21836af3d62faaf86c992f6e6a774c3f293cc7dd274d2683179da33988cd", + "item": "crate::run", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/bootstrap.rs" }, { "count": 1, - "fingerprint": "71315063affd6894197cd9487a914fa165f6e26b9027a21ee3bbbbb602d0b6f7", - "item": "crate::PostingsCache::install_chunk", + "fingerprint": "7fe6a1e41ab4be24f2266a6b2738614cdd5a7e8ee622f2a37e48df551518cad7", + "item": "crate::run", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/bootstrap.rs" }, { "count": 1, - "fingerprint": "854ca224ea7f6eab1503bc29c77d0408af96ef8b2b7d203dd5db1b1e8cf7fd4b", - "item": "crate::PostingsCache::install_chunk", + "fingerprint": "b0a969acd3a47342907192890b2674b9ea3dd2dd50b7a2bbcbd3f6ab65185ffa", + "item": "crate::run", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/bootstrap.rs" }, { "count": 1, - "fingerprint": "bc7870d3a916f24bf6963419e15f3d37ef8269feb5fe2b5e87c311d5016d0185", - "item": "crate::PostingsCache::install_chunk", + "fingerprint": "ec7117bdc45729391aca40eb28900ebca02f9ad02d9cf6611c112ae8def5a273", + "item": "crate::::drop", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/bootstrap/runtime_handoff.rs" }, { "count": 1, - "fingerprint": "d7489bb1a7ca147bad29e7b9f02252cbb393de5af438f17dfd7bad7d6ae8a03b", - "item": "crate::PostingsCache::install_chunk", + "fingerprint": "3624e804e1dc6bce3409cf6585bcea1217d1b130ae1fe593c9cdc81f5c91f499", + "item": "crate::tests::cancelled_fleet_append_keeps_durable_outbox_and_same_retry_id", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/fleet/outbox.rs" }, { "count": 1, - "fingerprint": "e3b1c12d60832044bb2bd049eb3fa05c626d3d4cfef0aed2174db3e498b08fdf", - "item": "crate::PostingsCache::install_chunk", + "fingerprint": "ae32359b623c26c7e626d9d6b30d70f99380751ff439f13a2064cc03038e3e37", + "item": "crate::FleetRepository::read_population", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/fleet/repository.rs" }, { "count": 1, - "fingerprint": "e581f85d334fee30402ae991ba37378bf1c3a493bb3bb4326847fe50322a17c6", - "item": "crate::PostingsCache::install_chunk", + "fingerprint": "ccd56e1e8b8de8f0f00baf3002d4252b358a1be553562ea6691499ca76cec929", + "item": "crate::FleetRepository::read_population", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/fleet/repository.rs" }, { "count": 1, - "fingerprint": "094f714370f3d7661be35ec291df37b3b91ba41c7d75c4a2f7ccb0967dcf1c70", - "item": "crate::PostingsCache::runs_for", + "fingerprint": "03fd5ad47796621bb1fad1fc50f1afa04a61bf97e56df584548eff1a83123caf", + "item": "crate::append_typed", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/http.rs" }, { "count": 1, - "fingerprint": "14a19b4e20199fa3b581ba1d3357e8c7efde1a4145ab2bae93908b19d7fc2ef9", - "item": "crate::PostingsCache::runs_for", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 2, - "fingerprint": "15903317f9d8c2d89996988f99fff9914847b235df393cb1830de223057ec941", - "item": "crate::PostingsCache::runs_for", + "fingerprint": "0b719f20a83a38b88ce0da46cea55093a68027d2f0ce6623e13ec224e0172d92", + "item": "crate::evaluate_alerts", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/ops.rs" }, { "count": 1, - "fingerprint": "2dc0d3b96dfadceda5980f809287085c0eca469ef6021dfcc8f44e925eef22ff", - "item": "crate::PostingsCache::runs_for", + "fingerprint": "26ff70f428f00c9c0849d4c549921fd2a0d8364c10f3af93f35fdd44a939e03f", + "item": "crate::evaluate_alerts", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/ops.rs" }, { "count": 1, - "fingerprint": "a5139260699f5ac85f0993f246b9dfefd3f1ebe54ece2a46e049e4d552040874", - "item": "crate::PostingsCache::runs_for", + "fingerprint": "99174ea4895f6da1a337aed08aa25f82c6a294a47218164bfb729845c074da69", + "item": "crate::evaluate_alerts", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/ops.rs" }, { "count": 1, - "fingerprint": "19bda40d2b1848079641d64db6ba18ea4771bc39c51eee283b75464db39e0832", - "item": "crate::PostingsCache::spawn_load", + "fingerprint": "cfc9ec8eaf75c436b9f846e7c169116d067f8f86e4e00ea2dec1751fd3e95d1a", + "item": "crate::evaluate_alerts", "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" + "path": "src/ops.rs" }, { "count": 1, @@ -1807,13 +785,6 @@ "lint": "clippy::excessive_nesting", "path": "src/product.rs" }, - { - "count": 1, - "fingerprint": "41aa761eb93bf5bc439ab385082f2353246ab1b5817b589cf07fe25936b83574", - "item": "crate::QuotaRegistry::admit", - "lint": "clippy::excessive_nesting", - "path": "src/quota.rs" - }, { "count": 1, "fingerprint": "194d60ed469b75f7246e155f672469339b422294f18914fe017600f43959d0ee", @@ -1884,34 +855,6 @@ "lint": "clippy::excessive_nesting", "path": "src/registry.rs" }, - { - "count": 1, - "fingerprint": "922d5806a61e4942d1df2829ab59f4f25f480a7ca55c4455ef6312ace8638fd9", - "item": "crate::::sleep", - "lint": "clippy::excessive_nesting", - "path": "src/runtime.rs" - }, - { - "count": 1, - "fingerprint": "6a3920d33a903650e2bb4c9d61d60dad13588da55952c78a4ef194d580fcc5b7", - "item": "crate::tests::r10_telemetry_cache_progress_and_database_lifetimes_are_runtime_owned", - "lint": "clippy::excessive_nesting", - "path": "src/runtime/telemetry.rs" - }, - { - "count": 1, - "fingerprint": "f56ac2edf2fd4344f049479cd96fada5edff21ed2a2a09c227db8b3a2b95f767", - "item": "crate::State::forget_previous_incarnation", - "lint": "clippy::excessive_nesting", - "path": "src/scaler3.rs" - }, - { - "count": 1, - "fingerprint": "630ee19906cd5e125941d1079dd7af6a82e0ef78f10a35c55f4825d7f87e0709", - "item": "crate::evaluate_state", - "lint": "clippy::excessive_nesting", - "path": "src/scaler3.rs" - }, { "count": 1, "fingerprint": "708c0e28416e32bac3d3263265aa780e38c67bdf8cee5d74d18258cd16d7dc7a", @@ -2472,97 +1415,6 @@ "lint": "clippy::excessive_nesting", "path": "src/sse/feed.rs" }, - { - "count": 1, - "fingerprint": "173f2f6dde9a5ad9529b4d1f763eda850776f1ebdc369c20173ec4069b174b16", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "3cb26d4cd1091c901a3b38002e62653a46e425af637fcd674d506af5af97e2ed", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 2, - "fingerprint": "40f449a96943b4a803b49e4a1a6a23438b9d64e1bd400c0fcd0f0929a971bbad", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "760f81f102b1c5db0391459eb9adc582a2421e0b4b200aff55a96d453582bc35", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "861464a6851cce249a2f98f59b7fbb63b7b8ef692ca222a0b374fab825d522d7", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "87e4599589da0813221f7df8ce3aed5a5e08b9626aab1a0a0baaefcac4f1269e", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "95001c4e76e15e6aba1ce5c1b3dc7fb6a8ac2a425ae80b22449662da161dcabe", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "997f9cf12cbf51ddbc877e32937a05fbf56821dabbf437513954affdd93f9c44", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "9acbe20160993ff8fc01f9a787f8f5e8c6f0e25620a289fcd0ce3a4f41f3d0c8", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "aa08f1d5041f23b0990bb7c5d627a1cf305f4b04682c22004bdbca07d6190f13", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "b4e88c948105b39f1667eb4b54f128884dbde5b53b95be0fd1e24f3bf0aca920", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "fef1361f9942917be20c8b945eb53c83a94e9821fa2bc2b468c3aaf4baf198f9", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "fef1bde05635023b601fad11ca3f731d0562ee02ca7ba4e6657e01f024df78bc", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "4b75276d0a81c454a1ce970e376ab33d82c69fe2c630be962ea834301558749e", @@ -2647,83 +1499,6 @@ "lint": "clippy::excessive_nesting", "path": "src/sse/source.rs" }, - { - "count": 1, - "fingerprint": "13b437276e982f3894e983e01f345242c6c64c112cc803461289e2e5cd1de24e", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::excessive_nesting", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "4a5975fa9ea7f64af10fd4d14dcc3c943340b61b8af8af976e90f6ddf470d14c", - "item": "crate::encode_prefix", - "lint": "clippy::excessive_nesting", - "path": "src/telemetry_batch.rs" - }, - { - "count": 1, - "fingerprint": "cf2d4b10046cb61f96849b301cecb817e73fd85fbbdb245672281abd219282aa", - "item": "crate::TouchJournal::start", - "lint": "clippy::excessive_nesting", - "path": "src/touch.rs" - }, - { - "count": 1, - "fingerprint": "20de1f0b3e58a074307b546329b9d4d2016b9e3096ec7fe706ce296a94ca3eeb", - "item": "crate::dlq_and_settle", - "lint": "clippy::expect_used", - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "44afff99d1565b8d7b2ed92e7462ceeb566de7406c6b40a222be52709179f081", - "item": "crate::relay_queue_cursor", - "lint": "clippy::expect_used", - "path": "src/application/consumer_remote.rs" - }, - { - "count": 1, - "fingerprint": "b4886b6b928cfc707944b06ef4a2af7a587347beda2fd9f5868f1aa1b6dbadab", - "item": "crate::relay_sweep_segment", - "lint": "clippy::expect_used", - "path": "src/application/consumer_remote.rs" - }, - { - "count": 1, - "fingerprint": "77c7c5dcc68868ef977c9f613eb03268f9f78d53910c39f2e7637ad3a59f0e5e", - "item": "crate::json_entries", - "lint": "clippy::expect_used", - "path": "src/application/creation.rs" - }, - { - "count": 1, - "fingerprint": "89b8ed38656716b2b492981f0be58883b33af405feabff434d78c5f2b9e53bf2", - "item": "crate::json_entries", - "lint": "clippy::expect_used", - "path": "src/application/creation.rs" - }, - { - "count": 1, - "fingerprint": "e717a00beba453e59d6b13536a1b7174ebd58c4ecdd25afc2c139b6e7f1e464d", - "item": "crate::stamp_fork_reference", - "lint": "clippy::expect_used", - "path": "src/application/creation/anchor.rs" - }, - { - "count": 1, - "fingerprint": "d6ea231d3a69fe169353a15ad6f1f0ab948014b41d5246ae7acd76a629eb5bf6", - "item": "crate::delete_lifecycle", - "lint": "clippy::expect_used", - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "d6b0356f48129c9473db129f483e5683ab5a24a6a5d4c03169a88f1849c6e937", - "item": "crate::decide_claim", - "lint": "clippy::expect_used", - "path": "src/application/lifecycle/claims.rs" - }, { "count": 1, "fingerprint": "f64df6f2bc5a9d405a454945afe3c5bbd50e569c7e16d7000edbc3c77bf417e1", @@ -2740,73 +1515,24 @@ }, { "count": 1, - "fingerprint": "350a8df21f66d6ec939ca1073f4340bfd87bebb9ca0b8f9bb748157b290498a9", - "item": "crate::resume_incarnation", - "lint": "clippy::expect_used", - "path": "src/application/topology.rs" - }, - { - "count": 1, - "fingerprint": "6a3a8bf77c6a257cad8bd26381b57f40a7c711c0ac37fb282d7b3cfcaccf272b", - "item": "crate::resume_incarnation", - "lint": "clippy::expect_used", - "path": "src/application/topology.rs" - }, - { - "count": 1, - "fingerprint": "f63dbc656498275beffa3c416eebdd2d65dff345d1e865ea87c39fc54c39a2bd", - "item": "crate::resume_merge", - "lint": "clippy::expect_used", - "path": "src/application/topology.rs" - }, - { - "count": 1, - "fingerprint": "add7a6c6099dc69f69f31022e843efa9b3b5bc319e4719a078413b2832f066a1", - "item": "crate::PendingAudit < 'a >::take", - "lint": "clippy::expect_used", - "path": "src/audit.rs" - }, - { - "count": 1, - "fingerprint": "6af87f90eba85adf522cbee9d1ad73eb337372ef8b6db4671ddaa0e18583242e", - "item": "crate::StorageExecutor::new", - "lint": "clippy::expect_used", - "path": "src/bootstrap/process_executor.rs" - }, - { - "count": 1, - "fingerprint": "75d9869dda3b6afee7741a19317a3a134164d05b3d451b3963479a04f1f86575", - "item": "crate::DbHandoff::claim", - "lint": "clippy::expect_used", - "path": "src/bootstrap/runtime_handoff.rs" - }, - { - "count": 1, - "fingerprint": "4dbd38eb9f014637015593b42de14ee15a0fab8c64fd39eddd704ca8b0b6452b", - "item": "crate::on_slatedb_rt", - "lint": "clippy::expect_used", - "path": "src/bootstrap/runtime_handoff.rs" - }, - { - "count": 1, - "fingerprint": "23fe18d6bb468f82a2161e564ba0a9407164c015daadd31ea51a63d87ba6f605", - "item": "crate::DeploymentIdentity::raw_adapter_sref", + "fingerprint": "6af87f90eba85adf522cbee9d1ad73eb337372ef8b6db4671ddaa0e18583242e", + "item": "crate::StorageExecutor::new", "lint": "clippy::expect_used", - "path": "src/deployment.rs" + "path": "src/bootstrap/process_executor.rs" }, { "count": 1, - "fingerprint": "42eeb6c95de8528603672d7cf38b8c88e9e9386bcbeb5ea38ae21702ef707233", - "item": "crate::mac16", + "fingerprint": "75d9869dda3b6afee7741a19317a3a134164d05b3d451b3963479a04f1f86575", + "item": "crate::DbHandoff::claim", "lint": "clippy::expect_used", - "path": "src/product_cursor.rs" + "path": "src/bootstrap/runtime_handoff.rs" }, { "count": 1, - "fingerprint": "d2c08919e550724cb8980cc2f388bf5af1b0918d6bc9495b52baf5e6dc1d68fa", - "item": "crate::mac_key", + "fingerprint": "4dbd38eb9f014637015593b42de14ee15a0fab8c64fd39eddd704ca8b0b6452b", + "item": "crate::on_slatedb_rt", "lint": "clippy::expect_used", - "path": "src/product_cursor.rs" + "path": "src/bootstrap/runtime_handoff.rs" }, { "count": 1, @@ -2857,27 +1583,6 @@ "lint": "clippy::expect_used", "path": "src/sse/source.rs" }, - { - "count": 1, - "fingerprint": "e839bd2f53899a7dc90e76f33999e3859c00065332629dc505248ef302b9436a", - "item": "crate::ProjectId::stream_ref", - "lint": "clippy::expect_used", - "path": "src/tenant.rs" - }, - { - "count": 1, - "fingerprint": "a590444a59baf51ef92d12387b2fa9b15658d9f2298d2d2ba00d7ca211229907", - "item": "crate::system_project", - "lint": "clippy::expect_used", - "path": "src/tenant.rs" - }, - { - "count": 1, - "fingerprint": "bf50dd3ce823a8bcbf08445c192db0440927ea2581360724743b3d9111cce397", - "item": "crate::idle_engine_store_traffic_is_bounded_by_the_poll_cadence", - "lint": "clippy::field_reassign_with_default", - "path": "src/dst/tests/runtime_open_gate.rs" - }, { "count": 1, "fingerprint": "e5211d90a1e337352430a9f0a55c4d657343a918e50c030c0ef6f0cadbf85870", @@ -2892,20 +1597,6 @@ "lint": "clippy::fn_params_excessive_bools", "path": "src/application/append/contract.rs" }, - { - "count": 1, - "fingerprint": "e8a14ab85d4f54761243199b7d4e22951df2562856ae53c7e9d23533048cd7db", - "item": "crate::LeaseRig::publish", - "lint": "clippy::fn_params_excessive_bools", - "path": "src/dst/tests/security_freshness.rs" - }, - { - "count": 1, - "fingerprint": "d812a79721e290156794d6e0d93b78e97749718f34f1ac9a1ba59173f34a96fd", - "item": "crate::TraceStore::with_options", - "lint": "clippy::fn_params_excessive_bools", - "path": "src/dst/trace_store.rs" - }, { "count": 1, "fingerprint": "2d7ffb6b7490d20b6b2bb0a7ed903bbfac4cee03b702a300bec63ad9b758c48f", @@ -2969,20 +1660,6 @@ "lint": "clippy::large_enum_variant", "path": "src/shard.rs" }, - { - "count": 1, - "fingerprint": "1d68c795d411a2826189e4c607b033e51c5b95c5c0088ae683e59c0cb7a99fc5", - "item": "crate::spawn_refresher", - "lint": "clippy::let_underscore_must_use", - "path": "src/auth_feed.rs" - }, - { - "count": 1, - "fingerprint": "d5d453a0badc787ef4a63eab31c3ac29282921eb4df51015af220492473c1d6e", - "item": "crate::tests::refresh_once_publishes_from_files_and_survives_a_broken_one", - "lint": "clippy::let_underscore_must_use", - "path": "src/auth_feed.rs" - }, { "count": 1, "fingerprint": "cdb928566335511055c455f14f4e266a294a14a8c65be524eecbc9b07fb1af5b", @@ -2990,111 +1667,6 @@ "lint": "clippy::let_underscore_must_use", "path": "src/bootstrap/runtime_handoff.rs" }, - { - "count": 1, - "fingerprint": "01acc1eb1c1eb39eda1a83e4ba94a3e93e31213318e7adb900942590c9393324", - "item": "crate::FaultState::gate", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/fault_store.rs" - }, - { - "count": 1, - "fingerprint": "88f47529d21b6f01cbb3f4f038cc84ed7d52ef820898a220fc9dfbfd9a667e8e", - "item": "crate::expiry_closes_the_storage_gauge", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/billing_maintenance.rs" - }, - { - "count": 1, - "fingerprint": "b45de03533ae5f12677be0a22fab17b1783ce02b2fdc66cf2f590097e3e9ef8b", - "item": "crate::faults_actually_fire", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/fault_substrate.rs" - }, - { - "count": 1, - "fingerprint": "9dbb40087926a1e51d1a41aa872956dee1d6e1985e2cae529432a15e038d25f9", - "item": "crate::lost_response_counter_tracks_applied_behaviour_only", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/fault_substrate.rs" - }, - { - "count": 1, - "fingerprint": "370d271bfbb095ae2412b1956cc870859f6b93d84dbf3075d5597330e377a1a3", - "item": "crate::http_rig_build", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/fixture_http.rs" - }, - { - "count": 1, - "fingerprint": "c873b19fe6d8b5010de14f5b9a916eacdffe33f54308e7a46d442e829718eece", - "item": "crate::HeldDocument::enter", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/fleet_controller.rs" - }, - { - "count": 1, - "fingerprint": "1315068f273a06efe4703faf6a527bd960801c350dee43e9eec4f44db035f562", - "item": "crate::fork_cascade_hard_delete_releases_the_stream_slot", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/quota_enforcement.rs" - }, - { - "count": 1, - "fingerprint": "563fc7af72d23dad003733fdbc28b5926bf19c7bc5113ed08d3c0e45a6cf8760", - "item": "crate::a_hung_open_is_deadlined_and_its_late_engine_reaped", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/runtime_open_gate.rs" - }, - { - "count": 1, - "fingerprint": "19133a040966a0c16c5e512d6243a28683d97c2712e0e00226a1e6c3488b535b", - "item": "crate::naive_get_or_open", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/runtime_open_gate.rs" - }, - { - "count": 1, - "fingerprint": "6d50d40ac8ce2e9451fc55e721fd33109694eab33cd0c98a2d4faa256e78c2fb", - "item": "crate::reopen_storm_reproduces_the_eu_central_wedge", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/runtime_open_gate.rs" - }, - { - "count": 1, - "fingerprint": "b635928dcb8e9632df7d4f118b1c5182888d6b769533c304035885c939845aee", - "item": "crate::drain_billing_clean", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/runtime_sweep.rs" - }, - { - "count": 1, - "fingerprint": "aa27a3793517915419675661f5b33642fa11119b0cc7711d3c24743dae37327c", - "item": "crate::reset_racing_with_begin_cannot_orphan_an_operation", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/trace_store_tests/concurrency.rs" - }, - { - "count": 1, - "fingerprint": "074ade8238bf36c30a7b368691990756cc43f3fcd2e4a718701b6c189a19ee7f", - "item": "crate::start", - "lint": "clippy::let_underscore_must_use", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "1ec581eaae0ffbc70f357d7dbdec2fc40ab13894c1892399eba6f8609acb5d15", - "item": "crate::active_absorber_cancel", - "lint": "clippy::let_underscore_must_use", - "path": "src/history/controller_tests.rs" - }, - { - "count": 1, - "fingerprint": "61152cc28d95328fc84f8c9316d0964497d26902d37d91410de277226d20f378", - "item": "crate::active_absorber_cancel", - "lint": "clippy::let_underscore_must_use", - "path": "src/history/controller_tests.rs" - }, { "count": 1, "fingerprint": "d963f9293297f7309ece0814abaae351b55f6aae12735f766725924f1b82f344", @@ -3298,20 +1870,6 @@ "lint": "clippy::let_underscore_must_use", "path": "src/sse/feed.rs" }, - { - "count": 1, - "fingerprint": "512a06dbe849c0dbd9d7806c871c90877537f72ee36cb14a9400383206d6f622", - "item": "crate::serve", - "lint": "clippy::let_underscore_must_use", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "e3c14913f8a45b4d11532c05831d3360fc4a7201bbb4be9ae19c09ecd5f1f42d", - "item": "crate::serve", - "lint": "clippy::let_underscore_must_use", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "886d9483a0bc959975ba2a8ded5f51066d40d817567cdaeae4d315171a08e51d", @@ -3319,55 +1877,6 @@ "lint": "clippy::let_underscore_must_use", "path": "src/sse/source.rs" }, - { - "count": 1, - "fingerprint": "137834f6fe95fc546b5385452dd2c65d199c35b095702506622a978243b4e94e", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::let_underscore_must_use", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "e813e58dc76b0d8dacc5ee1269019999cb3bd5359400c9333ccafdda3a8697bf", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::let_underscore_must_use", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "b6f6f1d5231cb405cba03de4dd9fe3771c01c91561ab05062e53199c80b67f57", - "item": "crate::drive_shutdown", - "lint": "clippy::let_underscore_must_use", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "2c081f6b7b6c7a95b3d5200429c04bb2ef3891bd456f08c3b91223c74591d9f3", - "item": "crate::begin_sealing_for_close", - "lint": "clippy::match_same_arms", - "path": "src/application/lifecycle.rs" - }, - { - "count": 1, - "fingerprint": "ede11c01c2cce57665b90ad067af4f52ef23c6570d0799286c0ec6e2c45e5fc6", - "item": "crate::prepare_execution", - "lint": "clippy::match_same_arms", - "path": "src/application/lifecycle.rs" - }, - { - "count": 1, - "fingerprint": "136ef7ae296df02b2a77784e50d83e7c002bfe06711eae3173c3a5eac15bda79", - "item": "crate::final_err_disposition", - "lint": "clippy::match_same_arms", - "path": "src/application/lifecycle/claims.rs" - }, - { - "count": 1, - "fingerprint": "37ee8bcadbf20e419e2ef2f53503959ec976561d8125cdbc014d5be236660047", - "item": "crate::Workload::attempt_with_deadline", - "lint": "clippy::match_same_arms", - "path": "src/dst/runtime.rs" - }, { "count": 1, "fingerprint": "37ad9fc70d48095f983c2413ff24b72a396c2c624e7b09f0c8db44bd9d459f63", @@ -3375,34 +1884,6 @@ "lint": "clippy::match_same_arms", "path": "src/shard/transaction/mod.rs" }, - { - "count": 1, - "fingerprint": "decd1e456a1fc9f0e78141ad423f798722c55e370eee478eff21e02f24f8534c", - "item": "crate::serve", - "lint": "clippy::match_same_arms", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "f59ccdfbec270a6aa037979049d7b83004be4e8d9687dd7b8ff41e531a055e13", - "item": "crate::delivery_messages", - "lint": "clippy::needless_pass_by_value", - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "e324a90671f2476662f4bbd7f2615af43fb6712f3c2a70f31c0f98535c66370a", - "item": "crate::TraceState::begin_operation", - "lint": "clippy::needless_pass_by_value", - "path": "src/dst/trace_store.rs" - }, - { - "count": 1, - "fingerprint": "f7a2a93715136528159aeddbbc6e1b44ca2ce5b150dfbef93d0027d3fe04043c", - "item": "crate::TraceState::begin_operation", - "lint": "clippy::needless_pass_by_value", - "path": "src/dst/trace_store.rs" - }, { "count": 1, "fingerprint": "eae5e7a122aca8fea003f07434179afc796c5deefe04bb2074f92f6776185fe3", @@ -3410,13 +1891,6 @@ "lint": "clippy::needless_pass_by_value", "path": "src/http/read.rs" }, - { - "count": 1, - "fingerprint": "5826a9e9a605f678ae967e60803368f8fa13d4a6bd4e7f8c0bd3fdc7d345ea96", - "item": "crate::RuntimeCaps::with", - "lint": "clippy::needless_pass_by_value", - "path": "src/runtime.rs" - }, { "count": 1, "fingerprint": "6ce788248f78d6875e88116f072d743e3c3a39023ea033fb6506a346554b2596", @@ -3438,13 +1912,6 @@ "lint": "clippy::option_option", "path": "src/product.rs" }, - { - "count": 1, - "fingerprint": "1547e2b7526251a95388930120b6c039a56fd151bcf9cd53cc4b87d2455d08a7", - "item": "crate::serve", - "lint": "clippy::redundant_clone", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "f84413aba6d5c4fecf2d44be51b89be799a1d64733301cf7d52fd495669d38e7", @@ -3452,13 +1919,6 @@ "lint": "clippy::redundant_clone", "path": "src/sse/session.rs" }, - { - "count": 1, - "fingerprint": "fea6f3b8a3b0fc5422e62cebb233e6a9d13500d827dca9029273d0840343a839", - "item": "crate::serve", - "lint": "clippy::redundant_clone", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "d397af65cb249cc1e8643233406c3e6e2ad6fe694f8ccd93d07dccf770b1eebf", @@ -3482,94 +1942,6 @@ "metric": 6, "path": "src/application/append/close.rs" }, - { - "count": 1, - "fingerprint": "a004b85b47935b9f8c546e222edc941b08d4784438c1aed2d2755b99ee0b9c5a", - "item": "crate::ConsumerService::authorize", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/consumer.rs" - }, - { - "count": 1, - "fingerprint": "c8b385496a7807aef5914035668bdd01377b4a05f5c7e7a93327efaed2e7da4b", - "item": "crate::ConsumerService::sweep_local", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/consumer.rs" - }, - { - "count": 1, - "fingerprint": "1bd0e2bc2288549e5b89d45e9af7a2d38ff937974b05ac5dade623715872c625", - "item": "crate::delete", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/consumer/deletion.rs" - }, - { - "count": 1, - "fingerprint": "37e4bf3e42dd068c2f5512ee518e42ffe1048dad1f52b1f0aedc90a20c821eaa", - "item": "crate::foreign_segment_drained", - "lint": "clippy::too_many_arguments", - "metric": 7, - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "5d14e23eb255b375e0ebc226868542a3010e20ae174f95e5252c6aae52bfaf50", - "item": "crate::relay_queue_cursor", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/consumer_remote.rs" - }, - { - "count": 1, - "fingerprint": "c251d3416705b4538bf921d7ea669437310db46d1cd2b80ec16b2bae0af602a7", - "item": "crate::relay_sweep_segment", - "lint": "clippy::too_many_arguments", - "metric": 7, - "path": "src/application/consumer_remote.rs" - }, - { - "count": 1, - "fingerprint": "e5c5b995eea1c55603654eea93a399e9ebd26d09b3ec64ee683040fcd30cc0db", - "item": "crate::create_request_hash", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/creation.rs" - }, - { - "count": 1, - "fingerprint": "c34852f94b4bcefb8c68ef6a9101a3b477e52e7957f0cf6128adecf367e7e826", - "item": "crate::fresh_desc", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/creation.rs" - }, - { - "count": 1, - "fingerprint": "a3b4e0de159936b506a87bcb53a8a152b0da9fe9ece6bac69796ec68fd3032d4", - "item": "crate::seed", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/creation/initialization.rs" - }, - { - "count": 1, - "fingerprint": "d3d0264ce67de9341f1a28b304ed2be7d8238287e18bfc8640a9a9a6bd0a184d", - "item": "crate::ReadService::new", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "633e7fb955ab614ef74c7bf785b7643205da432351717f8bae73e651a48be2da", - "item": "crate::absorption_race", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/read.rs" - }, { "count": 1, "fingerprint": "f3753b732c6e33c16383d7a6e0abbcf37ead1486eb14debb4717d08ce09c6379", @@ -3589,66 +1961,34 @@ { "count": 1, "fingerprint": "43a4f507fda9318d481868ed30d0b9dba5ff81e9b40cb39813a7d7892189724c", - "item": "crate::scan_page_once", - "lint": "clippy::too_many_arguments", - "metric": 7, - "path": "src/application/read_remote.rs" - }, - { - "count": 1, - "fingerprint": "ee0ec60bd3b1b7535ec7e35f35b6ae338286717c4d66e4da674bec382e3b3006", - "item": "crate::ReadService::read_scan_span", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/read_scan.rs" - }, - { - "count": 1, - "fingerprint": "03caac24fb96422b05f0401f803b91d98aaf78edb6993e0e9f8b7d5a9b6ec9da", - "item": "crate::ReadService::remote_scan_span", - "lint": "clippy::too_many_arguments", - "metric": 7, - "path": "src/application/read_scan.rs" - }, - { - "count": 1, - "fingerprint": "74b37b2c10cb2b365cec70d2486b29b4bdad3a99a730d1e2170c7cf876734205", - "item": "crate::spawn_refresher", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/auth_feed.rs" - }, - { - "count": 1, - "fingerprint": "d78673e2697852400b3478461536185bbbd433f88d3c03a5540bc44073fc36d1", - "item": "crate::FrameDecryptor::decrypt_append", + "item": "crate::scan_page_once", "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/crypto/decrypt.rs" + "metric": 7, + "path": "src/application/read_remote.rs" }, { "count": 1, - "fingerprint": "ce371c8a7f3ddb11e926091c9f2cc881492b5e945391e7dd663d82f58ae84aad", - "item": "crate::rig_opener", + "fingerprint": "ee0ec60bd3b1b7535ec7e35f35b6ae338286717c4d66e4da674bec382e3b3006", + "item": "crate::ReadService::read_scan_span", "lint": "clippy::too_many_arguments", "metric": 6, - "path": "src/dst/tests/fixture_http.rs" + "path": "src/application/read_scan.rs" }, { "count": 1, - "fingerprint": "b68e3b0324edff5c87f77d331094194dac5d1b63fa01d0c7c2584a8918ea3d69", - "item": "crate::TraceState::begin_operation", + "fingerprint": "03caac24fb96422b05f0401f803b91d98aaf78edb6993e0e9f8b7d5a9b6ec9da", + "item": "crate::ReadService::remote_scan_span", "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/dst/trace_store.rs" + "metric": 7, + "path": "src/application/read_scan.rs" }, { "count": 1, - "fingerprint": "d4b387794821cd2deaf5f4ca72f65c10a957163bad7c47326ce3491ba7f7460c", - "item": "crate::TraceState::observe", + "fingerprint": "d78673e2697852400b3478461536185bbbd433f88d3c03a5540bc44073fc36d1", + "item": "crate::FrameDecryptor::decrypt_append", "lint": "clippy::too_many_arguments", "metric": 6, - "path": "src/dst/trace_store.rs" + "path": "src/crypto/decrypt.rs" }, { "count": 1, @@ -3754,14 +2094,6 @@ "metric": 7, "path": "src/product.rs" }, - { - "count": 1, - "fingerprint": "68829ee93b496db0d6c936a103ec07e54c3184c0ca0a86e925d6399af138d64b", - "item": "crate::QuotaRegistry::admit_append", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/quota.rs" - }, { "count": 1, "fingerprint": "1c8e09a8608e3cec2e627b5a07348e803c3817db03602ce159ae69944f203682", @@ -3818,142 +2150,6 @@ "metric": 110, "path": "src/application/append/close.rs" }, - { - "count": 1, - "fingerprint": "eb9d5827b97abad3e0eecebc477d7999bdd1d8b2bcc6971401d60f868945c795", - "item": "crate::put", - "lint": "clippy::too_many_lines", - "metric": 143, - "path": "src/application/consumer.rs" - }, - { - "count": 1, - "fingerprint": "1c6913ca428c333ece9624cbccda5a9292d396656b0555350676dfc6b0bcbbfc", - "item": "crate::delete", - "lint": "clippy::too_many_lines", - "metric": 102, - "path": "src/application/consumer/deletion.rs" - }, - { - "count": 1, - "fingerprint": "68c3bbc636e54eb0d7a0b3046b27ba577775c395b0459146a40526a24538b0cb", - "item": "crate::resume_deletion", - "lint": "clippy::too_many_lines", - "metric": 108, - "path": "src/application/consumer/deletion.rs" - }, - { - "count": 1, - "fingerprint": "b02eeaa06ec37e4467a96fc72aeeab3ec46c2ecd6a56fa6a5bcef0293a22d1cd", - "item": "crate::dlq_and_settle", - "lint": "clippy::too_many_lines", - "metric": 117, - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "eff63a2b95e15d539627c196b8898f6818f6839e32a01634a269f0b325d75de7", - "item": "crate::pull", - "lint": "clippy::too_many_lines", - "metric": 176, - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "ab52472a99cb01a7e0cd3de1de4eb79d1eacb8b64dae9e0a31242cc7880e866b", - "item": "crate::settle", - "lint": "clippy::too_many_lines", - "metric": 169, - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "50b05bc1d369ffae99037c8e2c349c80aaf4faab5d9b90920d3425b83f476bb5", - "item": "crate::install", - "lint": "clippy::too_many_lines", - "metric": 133, - "path": "src/application/creation/anchor.rs" - }, - { - "count": 1, - "fingerprint": "fa83d718a1c91c2a37610d3f40cc61e45ee106ef5dff6386f84f5d31634d3d57", - "item": "crate::resolve", - "lint": "clippy::too_many_lines", - "metric": 133, - "path": "src/application/creation/claim.rs" - }, - { - "count": 1, - "fingerprint": "c89b878a58fc7d64767230e53a479b9cf1fdb06003587aa0fa72cb610e16e079", - "item": "crate::delete_lifecycle", - "lint": "clippy::too_many_lines", - "metric": 120, - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "9db6f5b359c24116ab99b69948a73662f8fcf683641e2dba09724364eadfea29", - "item": "crate::release_fork_ref", - "lint": "clippy::too_many_lines", - "metric": 108, - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "1dac42c2def9beea11c272d9d65832db0638480e73b5ee8251b9a709ac859587", - "item": "crate::prepare", - "lint": "clippy::too_many_lines", - "metric": 124, - "path": "src/application/creation/fork.rs" - }, - { - "count": 1, - "fingerprint": "40b27f4264bc1f246e8ab117e877350614161c92de1552ba9f8500835720186d", - "item": "crate::validate_boundary", - "lint": "clippy::too_many_lines", - "metric": 110, - "path": "src/application/creation/fork.rs" - }, - { - "count": 1, - "fingerprint": "daeb36d3e3a8cc7674ea6e88b0ead58f9655b44576f270ff4e29b2903df33678", - "item": "crate::seed", - "lint": "clippy::too_many_lines", - "metric": 135, - "path": "src/application/creation/initialization.rs" - }, - { - "count": 1, - "fingerprint": "6d05999b63302ffaf9b27bc05561ad0b8d53ad922a918f1c2baa9c4ce37a9085", - "item": "crate::CreationService::create_product", - "lint": "clippy::too_many_lines", - "metric": 117, - "path": "src/application/creation/product.rs" - }, - { - "count": 1, - "fingerprint": "80c2fab589cc4b4bbae6c48312d3d72379194aa5681188357aa625561bc03190", - "item": "crate::execute_segment", - "lint": "clippy::too_many_lines", - "metric": 143, - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "356b6413e1a23f83718ecfe5cbb250a77811980fc145f8ac12fc71c175f4619b", - "item": "crate::Fp::site", - "lint": "clippy::too_many_lines", - "metric": 101, - "path": "src/failpoints.rs" - }, - { - "count": 1, - "fingerprint": "12a18c2763841ff3cfdc9ff1429be22eb1557191d507e7d805aae69c3b8ab3aa", - "item": "crate::start", - "lint": "clippy::too_many_lines", - "metric": 541, - "path": "src/fleet.rs" - }, { "count": 1, "fingerprint": "214887cac247a2556137e4149db01eca5acd0d4b77bdbb5e6c7962367557a67f", @@ -3962,14 +2158,6 @@ "metric": 123, "path": "src/fleet/repository/document_tests.rs" }, - { - "count": 1, - "fingerprint": "64ca907aa6f5007d541a9618d0c501e1924d6308d617e5562b56ff0fab1d68b1", - "item": "crate::active_absorber_cancel", - "lint": "clippy::too_many_lines", - "metric": 179, - "path": "src/history/controller_tests.rs" - }, { "count": 1, "fingerprint": "c73584523522a3762b0bcdd1dfd03bdea4d1afce1bb1c36bb3fd847421c42a62", @@ -4010,22 +2198,6 @@ "metric": 110, "path": "src/http.rs" }, - { - "count": 1, - "fingerprint": "bd24c3550d04b1b71ea06978774f17a053727aecbe8096bb293c1663e7f41866", - "item": "crate::PostingsCache::install_chunk", - "lint": "clippy::too_many_lines", - "metric": 159, - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "4f62aed58587a974442a2f6324930c8d77d8e99f2b9c078cb1b6aaf4229cd9fb", - "item": "crate::PostingsCache::runs_for", - "lint": "clippy::too_many_lines", - "metric": 162, - "path": "src/postings_cache.rs" - }, { "count": 1, "fingerprint": "f5378450433727efbfa596667bc8253f5e57d6939262c2597982ccacc508068b", @@ -4154,14 +2326,6 @@ "metric": 129, "path": "src/sse/feed.rs" }, - { - "count": 1, - "fingerprint": "2137c3c953cb295c7df70604ce9004490e65bd94165e089321e387d56a32ddd4", - "item": "crate::serve", - "lint": "clippy::too_many_lines", - "metric": 497, - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "66f57ea6b4bdc50aa663e8802e084282c8ca87ece4fd4fce486b75a40700051f", @@ -4186,13 +2350,6 @@ "metric": 128, "path": "src/sse/source.rs" }, - { - "count": 1, - "fingerprint": "dcb603471750f1dc05803d2425a4d7fd7dc30846681e686f97de24e2347e9a6b", - "item": "crate::reg::M", - "lint": "clippy::type_complexity", - "path": "src/failpoints.rs" - }, { "count": 1, "fingerprint": "954fe0bf97703429fbbb66fe42a4d63ccdad7d0f630fff9765de39c4fc0ca96f", @@ -4221,13 +2378,6 @@ "lint": "clippy::type_complexity", "path": "src/sse/source.rs" }, - { - "count": 1, - "fingerprint": "4f84b1f903baebf6f998640334f0b737e373d4c1c9e09b84f54a8614ce03e189", - "item": "crate::livefeed_remote_sealed_predecessor_streams_through_owner", - "lint": "clippy::unnecessary_to_owned", - "path": "src/dst/tests/livefeed_history.rs" - }, { "count": 1, "fingerprint": "f3fd81128a33528e5268d68bb42f43a116a7166d7780ad3948147a3e984b6ca4", @@ -4235,13 +2385,6 @@ "lint": "clippy::unnecessary_wraps", "path": "src/registry.rs" }, - { - "count": 1, - "fingerprint": "774188d62e2c1dfab6c5ff389c7639b157671e13df6de05c1134d17ca665ec21", - "item": "crate::mix", - "lint": "clippy::unusual_byte_groupings", - "path": "src/dst/fault_store.rs" - }, { "count": 1, "fingerprint": "ff7731d0845c383fbf80de4bd214d4197d2e99952e8a1d74d8aeda228bb22727", @@ -4256,41 +2399,6 @@ "lint": "clippy::unwrap_used", "path": "src/application/append/contract.rs" }, - { - "count": 1, - "fingerprint": "e0390ed8d951a6dce9f7f6ee0777469c41c75af09930b2e22cf955c848755b9f", - "item": "crate::ConsumerService::queue_position", - "lint": "clippy::unwrap_used", - "path": "src/application/consumer.rs" - }, - { - "count": 1, - "fingerprint": "16ab9594855c427f4a65dfe38ea3629bd53a6ee4391a6dd8362f320c722b0551", - "item": "crate::validate_boundary", - "lint": "clippy::unwrap_used", - "path": "src/application/creation/fork.rs" - }, - { - "count": 1, - "fingerprint": "34a919c9b9e5cf280c9bf56bd2747b29062a42d307d5809f4cd67691660b3b6b", - "item": "crate::seed", - "lint": "clippy::unwrap_used", - "path": "src/application/creation/initialization.rs" - }, - { - "count": 1, - "fingerprint": "64ffd9e77598203d0f3ca8a1fff6754fe9c94d177853345b9d1a9f76c754ffbe", - "item": "crate::execute_segment", - "lint": "clippy::unwrap_used", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "67efc16f663ea2fb945a6db2e5f6759e664f104e222bf9fdecc630b8fcbadb51", - "item": "crate::read_stitched", - "lint": "clippy::unwrap_used", - "path": "src/application/read.rs" - }, { "count": 1, "fingerprint": "f2214df93dd43613446ec659a2de14e255cf22a69cb8c3a7f2a067986c2b570f", @@ -4298,62 +2406,6 @@ "lint": "clippy::unwrap_used", "path": "src/application/read_scan.rs" }, - { - "count": 1, - "fingerprint": "6014b1aa6add876df5db2da816491f9050257ec26f0e50d0c4fe0687ad9ef730", - "item": "crate:: as Drop>::drop", - "lint": "clippy::unwrap_used", - "path": "src/audit.rs" - }, - { - "count": 1, - "fingerprint": "9375a6112a76aabe637ef8b03563c63dd562d03156db08619f4980b6acad2452", - "item": "crate::PendingAudit < 'a >::take", - "lint": "clippy::unwrap_used", - "path": "src/audit.rs" - }, - { - "count": 1, - "fingerprint": "dc39e1a52100a6faeac2f8acd2d170bdae29f475b95273a40e6893ccc15330b9", - "item": "crate::observe_denial", - "lint": "clippy::unwrap_used", - "path": "src/audit.rs" - }, - { - "count": 1, - "fingerprint": "cc28b723168aad66f2e97760c083e4524a0958416041699da43b583b9249713a", - "item": "crate::latency", - "lint": "clippy::unwrap_used", - "path": "src/bin/verify.rs" - }, - { - "count": 1, - "fingerprint": "fded73500a08aae4e9eeda1645dfc83b6064d6dd544c5c25b969b3d496d5a0e9", - "item": "crate::latency", - "lint": "clippy::unwrap_used", - "path": "src/bin/verify.rs" - }, - { - "count": 1, - "fingerprint": "730010c152b1433ddceb819a81576c406ec6290c180b78d381ba4d18eaefd040", - "item": "crate::start", - "lint": "clippy::unwrap_used", - "path": "src/fleet.rs" - }, - { - "count": 2, - "fingerprint": "959ff60f565e7bbec729df35be2d3ae8adbdcc0c6d1c78d8d0ebb04497a5f3e3", - "item": "crate::start", - "lint": "clippy::unwrap_used", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "a65af3e91358948160e80c4e79ba5ffd720eccf745d8b7cfbfed46cf3370f4c4", - "item": "crate::start", - "lint": "clippy::unwrap_used", - "path": "src/fleet.rs" - }, { "count": 1, "fingerprint": "4cf780f4e1cc935f33696f5f0a6283d0ae302c87f4fea11186d6929c637b6658", @@ -4676,13 +2728,6 @@ "lint": "clippy::unwrap_used", "path": "src/sse/registry.rs" }, - { - "count": 1, - "fingerprint": "bbeb8e923ea2ee7bd8b5794620614dc22e7c94d6aff8ec3941a2bfd5febdcade", - "item": "crate::response_from_stream", - "lint": "clippy::unwrap_used", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "47ef3e4da68eee0609dc78313dca45277aff6344fb5415e5aa7dcf852d7cf572", @@ -4732,69 +2777,6 @@ "lint": "clippy::unwrap_used", "path": "src/sse/source.rs" }, - { - "count": 1, - "fingerprint": "20c3acc01822fdb78e771b898502ed53a4206d8bb8db2b34fc65d4d87163276d", - "item": "crate::TaskSupervisor::incomplete_shutdown_failure", - "lint": "clippy::unwrap_used", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "30d712b2122b4fdd8fa362a2b13f07760ec21ed80f928b8815a3876baf9b970e", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::unwrap_used", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "60a71a130702a263dcad0e099f43d7e96f5776f921eb44db9d1dca33fc9f6a6b", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::unwrap_used", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "b5bdd9f0c8a87be648b57157e2b40459ec06e20daa6719790c0abd11fd068ab0", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::unwrap_used", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "ab5f6ab54d91cc0ea9ec9ab1ac608bb6bdf6857e84d599ebcc8c4a9374924207", - "item": "crate::TaskSupervisor::observe_shutdown", - "lint": "clippy::unwrap_used", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "b4c250e6670d01ae4792c586b20aef709d7b0665efc273d220a4caa8fd6b9cb3", - "item": "crate::TouchJournal::flush_bucket", - "lint": "clippy::unwrap_used", - "path": "src/touch.rs" - }, - { - "count": 1, - "fingerprint": "a7fae912a54e5fc1a2fd6fe904321b47d2a27fc4b93605dc0fd42722faea1edb", - "item": "crate::TouchJournal::ingest", - "lint": "clippy::unwrap_used", - "path": "src/touch.rs" - }, - { - "count": 1, - "fingerprint": "2c355b4eacb4c6bb50690d1dac2e09669bbed828167f3c16ff07a2a00c2024c9", - "item": "crate::TouchRegistry::close_shard", - "lint": "clippy::unwrap_used", - "path": "src/touch.rs" - }, - { - "count": 1, - "fingerprint": "79bf708a68180b65b78fb4b5de7c69048961f330cf30f057b3f782cac8932941", - "item": "crate::TouchRegistry::journal", - "lint": "clippy::unwrap_used", - "path": "src/touch.rs" - }, { "count": 1, "fingerprint": "2047871277f8d0a05956c4e1cb344f06202a24b6f24cdfa44c02003dd37efc98", @@ -4830,13 +2812,6 @@ "lint": "unreachable_pub", "path": "src/application/read_keys.rs" }, - { - "count": 1, - "fingerprint": "4e88cb6514e617e1c971f3f310f8fa373479b64549b29331bfbbc294b88569cb", - "item": "crate::spawn_refresher", - "lint": "unreachable_pub", - "path": "src/auth_feed.rs" - }, { "count": 1, "fingerprint": "86b45b21b38060107772bcbbe6d6d8321bc97e6f55ace1e028bc4c9933dde421", @@ -4844,34 +2819,6 @@ "lint": "unreachable_pub", "path": "src/bootstrap.rs" }, - { - "count": 1, - "fingerprint": "6ca31a8ab2daa6134a18669c50ca283247b46bcd9efc9a73d74cbc16d2f0fa5e", - "item": "crate::TraceStore::with_options", - "lint": "unreachable_pub", - "path": "src/dst/trace_store.rs" - }, - { - "count": 1, - "fingerprint": "9554e7d8e300567e64cd59df2571adaccca65e294d297e0dc3ae8116a5af864a", - "item": "crate::Fp::site", - "lint": "unreachable_pub", - "path": "src/failpoints.rs" - }, - { - "count": 1, - "fingerprint": "ffa2489531b69a28379bccc8278747181e096c43162692ea2da4e8c3a1d1cf9c", - "item": "crate::return_home_allowed", - "lint": "unreachable_pub", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "ad907f25e85f19eaa3dd025e471f21d74241f3fc26097b184fce8f7bf1d028b1", - "item": "crate::start", - "lint": "unreachable_pub", - "path": "src/fleet.rs" - }, { "count": 1, "fingerprint": "d91fa00511a45a2bbe81098aaedd53117257c5fdaf21b07c035c38750757e1a4", @@ -4879,20 +2826,6 @@ "lint": "unreachable_pub", "path": "src/http.rs" }, - { - "count": 1, - "fingerprint": "29c0649b53152c989e6cce54f8ff7429712f981515f1a7f8a0bb7cf0f81b25b7", - "item": "crate::PostingsCache::install_chunk", - "lint": "unreachable_pub", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "cdef6075904a49d749b5537324284772b22a038225271e402fac5d701f1a87a3", - "item": "crate::PostingsCache::runs_for", - "lint": "unreachable_pub", - "path": "src/postings_cache.rs" - }, { "count": 1, "fingerprint": "2cc4727e49d4e69d488b184fac42dcec24c8b38b9e3e5d041421d83d92f24a7f", @@ -4907,13 +2840,6 @@ "lint": "unreachable_pub", "path": "src/product.rs" }, - { - "count": 1, - "fingerprint": "6487b3fbddd2c3343d03313756888a3276394c4cfb7c47863403ff72fd1df099", - "item": "crate::QuotaRegistry::admit_append", - "lint": "unreachable_pub", - "path": "src/quota.rs" - }, { "count": 1, "fingerprint": "f6269145e7da12ea84288ac84f204a1635a1bc7f8391b9117d01097252cfd7d8", @@ -4942,13 +2868,6 @@ "lint": "unreachable_pub", "path": "src/registry.rs" }, - { - "count": 1, - "fingerprint": "267171222ab33983f7c4565129274bd6a6b36290c6126ea4b8a6d5f816e484ef", - "item": "crate::RuntimeCaps::with", - "lint": "unreachable_pub", - "path": "src/runtime.rs" - }, { "count": 1, "fingerprint": "4a034c08934265d15e51ea98686e48bde353a689522b69fa1ac6c093effa7883", diff --git a/docs/quality/diagnostic-allowances.json b/docs/quality/diagnostic-allowances.json index ffa6609a..6ea56695 100644 --- a/docs/quality/diagnostic-allowances.json +++ b/docs/quality/diagnostic-allowances.json @@ -1,62 +1,6 @@ { "schema": 1, "warnings": [ - { - "count": 1, - "fingerprint": "71a6fbd0e075f7bca826a065d8b76e484b4875a6f093f84e54435b13dc420bab", - "item": "crate::dlq_and_settle", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "c9df997dfba8fe967a2e7dc756fd00658525c64c2b5b7caba402e69cc0ac2ff9", - "item": "crate::ReadPlan < 'a >::segment", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "0008921133ad15a463a765a126faabe1a8b26edcb252db05337ec92b202fd46f", - "item": "crate::TEST_ASSERT_KEYED_DENSE", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "ee99fdfcbd2ac9a98b1979169a16a76f4ddcb71a8a4f48a67f79d4abd0e24319", - "item": "crate::read_merged", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "38c5fba0dcbe08fe844b3044cbbff4ee685a26765d0b1fb9948d13fd624f5190", - "item": "crate::read_stitched", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "d1ab2ef2c5d52cc346cc433c770edfd4dc2a508ec0ec7c27d5aef2937602fdad", - "item": "crate::WALK_CLOSE_SUBMITS_SNAPSHOT", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/dst/tests/runtime_sweep.rs" - }, - { - "count": 1, - "fingerprint": "4726a4571dfdb78495ced8de54fa2f3b16bb3d76083e46a6132cbeb4fa571ab5", - "item": "crate::TraceState::event", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/dst/trace_store.rs" - }, - { - "count": 1, - "fingerprint": "4536c5ad357fab836314c87fe78d95b9c23d9f545289e7ee7c0e600f6393a5d2", - "item": "crate::read", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/history/canonical_span.rs" - }, { "count": 1, "fingerprint": "926990bf4070f815519da4ea817cf8f1c3746bcd938d366e01d2064f42874d2a", @@ -78,13 +22,6 @@ "lint": "clippy::allow_attributes_without_reason", "path": "src/http.rs" }, - { - "count": 1, - "fingerprint": "3fc6f535aafafccf0492bd8dd860c3326140c64c8104e0d87824ee811be9aba4", - "item": "crate", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/project_policy.rs" - }, { "count": 1, "fingerprint": "9f75b52bc2315c18f5b5f127af17ec6b4cadc2938ee7e2e9d1b38fd6c521946a", @@ -99,13 +36,6 @@ "lint": "clippy::allow_attributes_without_reason", "path": "src/shard_directory.rs" }, - { - "count": 1, - "fingerprint": "f111c876302a05332b58f7bb0ff42c887f6655ad6ad616a6392bf092b1e3e449", - "item": "crate::serve", - "lint": "clippy::allow_attributes_without_reason", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "8d6026711db89f4d2295fd5cccc0b3aafdadba25af2349a816723c124357d9fa", @@ -183,27 +113,6 @@ "lint": "clippy::arithmetic_side_effects", "path": "src/postings/validated/tests.rs" }, - { - "count": 1, - "fingerprint": "c6ca46333280941cc3d9e0533fb04c013cfbc0e35fcd776a233242943a9b421d", - "item": "crate::validate_boundary", - "lint": "clippy::cast_possible_truncation", - "path": "src/application/creation/fork.rs" - }, - { - "count": 1, - "fingerprint": "6976bf455d3ff810be747836b93b0a893da0aeb7a7cb1af430f022d5901c937d", - "item": "crate::o2_tests::o2_batch_publishes_one_owner_only_after_authentication_and_admission", - "lint": "clippy::cast_possible_truncation", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "a46e69225d9ed64fdb4fc51c623c367cc0c5a1fe1d45f0d95874afd2278bf356", - "item": "crate::o2_tests::o2_batch_publishes_one_owner_only_after_authentication_and_admission", - "lint": "clippy::cast_possible_truncation", - "path": "src/application/read.rs" - }, { "count": 1, "fingerprint": "19faeb7207c3e2acf0289a7024d8e6c58a999d895294c83ba774d6ca7da28d40", @@ -246,83 +155,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/crypto/decrypt/tests.rs" }, - { - "count": 1, - "fingerprint": "287f037923e94ad9602fa8936d7d3907ad9f5766f44826900d2cbbce2c323d30", - "item": "crate::a_bounded_cleanup_drains_residue_without_touching_the_live_generation", - "lint": "clippy::cast_possible_truncation", - "path": "src/dst/tests/consumer_generations.rs" - }, - { - "count": 1, - "fingerprint": "7d7179a86e3fc221ff7892272b362fdbb9b4fdd0b2c64b343f0a043cf94a5c19", - "item": "crate::a_bounded_cleanup_drains_residue_without_touching_the_live_generation", - "lint": "clippy::cast_possible_truncation", - "path": "src/dst/tests/consumer_generations.rs" - }, - { - "count": 1, - "fingerprint": "9c302163b5ac0595c88cf4781f878f9b6a19c2f66f407371aba23db42885c6be", - "item": "crate::a_bounded_cleanup_drains_residue_without_touching_the_live_generation", - "lint": "clippy::cast_possible_truncation", - "path": "src/dst/tests/consumer_generations.rs" - }, - { - "count": 1, - "fingerprint": "a09cfaa70cac37e0689661547b045c69e00ff0f527f728ed3c1726eddf15d439", - "item": "crate::drain_filtered", - "lint": "clippy::cast_possible_truncation", - "path": "src/dst/tests/fixture_storage.rs" - }, - { - "count": 1, - "fingerprint": "9284baf0ba6fae64e2b6d3168c3aa2d9cb5fef0a5c0735d7a8179c1ae8c50844", - "item": "crate::ring_ordering_paging_and_duplicates_at_offset_level", - "lint": "clippy::cast_possible_truncation", - "path": "src/dst/tests/reads_ring.rs" - }, - { - "count": 1, - "fingerprint": "63864b20e596bb147a34d1b2931d80d476e1cbc92780108f0365c72434f53e67", - "item": "crate::rss_bytes", - "lint": "clippy::cast_possible_truncation", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "00d2626d124accbbd7a0db013c4e9b0416d8023a3eaa01e5f9ddc9928458ca43", - "item": "crate::start", - "lint": "clippy::cast_possible_truncation", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "14f564e013fdbc40790485c24d7d75850f5e764f4b29a2a25f71766869a295d5", - "item": "crate::start", - "lint": "clippy::cast_possible_truncation", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "287380e0729ca7709b0687fe7c0a679f59a540efb523bc44be95157cef9857df", - "item": "crate::start", - "lint": "clippy::cast_possible_truncation", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "a91db676c2df87beb5164c6126bc61a784386324c4da1d1ed719af0eb64b8b3c", - "item": "crate::start", - "lint": "clippy::cast_possible_truncation", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "da72cebb7a40235348c7a4943f79799dfe56e111619f56efa3129a18236c8202", - "item": "crate::start", - "lint": "clippy::cast_possible_truncation", - "path": "src/fleet.rs" - }, { "count": 1, "fingerprint": "e496b6173e09853cd12dd44b4ce012a65607277d7178f7f29d0d4531571be5cf", @@ -330,13 +162,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/fleet/repository.rs" }, - { - "count": 1, - "fingerprint": "5af623bc62c0ccc1820a8f347ac915b3aca7e21cb2a40a61cdd46b0f61ff4867", - "item": "crate::raw_page", - "lint": "clippy::cast_possible_truncation", - "path": "src/history/postings_validation_tests.rs" - }, { "count": 1, "fingerprint": "d5be370059abb30c56ae98081eb68c137b9ff42e49bf9e04c6dde993dfdf51b8", @@ -344,13 +169,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/http.rs" }, - { - "count": 1, - "fingerprint": "16d4bd61ffc5b2b6345f6ef44318516da4f02fe7d1f9aa9e8ae9d14c522dd1f6", - "item": "crate::decode_char", - "lint": "clippy::cast_possible_truncation", - "path": "src/offsets.rs" - }, { "count": 1, "fingerprint": "b9c4dae2f6f8f9a15e07cedb0173130ecb2ac25bf3b7c17858430da758e4c98a", @@ -372,20 +190,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/product.rs" }, - { - "count": 1, - "fingerprint": "b900c089908cc6049a860cb71fca75c926382dffdeeadccf7dee050cd40e8cb3", - "item": "crate::CatalogCursor::encode", - "lint": "clippy::cast_possible_truncation", - "path": "src/product_cursor.rs" - }, - { - "count": 1, - "fingerprint": "854ed2b01aff96913794d23e8c6a480c2b3b900d70b52d6ce400051af02158f7", - "item": "crate::ScanCursor::encode", - "lint": "clippy::cast_possible_truncation", - "path": "src/product_cursor.rs" - }, { "count": 1, "fingerprint": "a2b9a18d18b6ccd3e1b5e20712a504f8f17e0fdd0767eef179ed8c2f5b9cd7c0", @@ -393,34 +197,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/registry.rs" }, - { - "count": 1, - "fingerprint": "9e489bf9c63f903996f5b53ecd6642d31bd17e94bd37af89ecb868015d63a846", - "item": "crate::::now", - "lint": "clippy::cast_possible_truncation", - "path": "src/runtime.rs" - }, - { - "count": 1, - "fingerprint": "043c5b1b0ed2607c4361ee53907fda91073cc4aae91b714732a9191d7ca520c8", - "item": "crate::ManualClock::advance", - "lint": "clippy::cast_possible_truncation", - "path": "src/runtime.rs" - }, - { - "count": 1, - "fingerprint": "c4bc68ccc02a08088a6b3aa54ec76539b649f03f03a2be166e28b999dcc96351", - "item": "crate::MonotonicNow::millis", - "lint": "clippy::cast_possible_truncation", - "path": "src/runtime.rs" - }, - { - "count": 1, - "fingerprint": "7801c4f0eb99e050a6ee03c0ba53d2e916006cd4b99c8f409cf9624daf0dcf85", - "item": "crate::tests::segment_order_cannot_erase_a_hot_key_or_change_decisions", - "lint": "clippy::cast_possible_truncation", - "path": "src/scaler3.rs" - }, { "count": 1, "fingerprint": "90d71b08a4ec0e9c9cf53d4401ee70aa94259e74cdef52f841689d649feab830", @@ -540,62 +316,6 @@ "lint": "clippy::cast_possible_truncation", "path": "src/sse/feed.rs" }, - { - "count": 1, - "fingerprint": "600c95d869121238690c36c6bb288384251ab6cd254720bdb70869962613f5c3", - "item": "crate::append_component", - "lint": "clippy::cast_possible_truncation", - "path": "src/tenant.rs" - }, - { - "count": 1, - "fingerprint": "358ce14a15bcb1303d944d7ddb0a25af031ee3be1d7f7b8fedca7dc3efe0d400", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "912e8a7dd64cff86d6fea635c8bac3f1a891e6e211a159e45c5bfcfa0a75769c", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "98a8d307be3f07092b75eb79afdc8aefddaca92ad6560be5e39cdb04d547110a", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "bc239863ff133dc798b6490cf539d3bf1e621430d5ff58bcb0a1a0efc075b3e4", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "c99a2114a5372bda63a2d157747bf968720a72cc6f8ccc07a84542bc7c656626", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "d232522a5cda132af240bbfce31cd37908c01281acf799ce8ac606826f081905", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "d7102acf975a77cf046584fb45217d444dd25ea9e35b49c75ffe28b2fe31fa73", - "item": "crate::start", - "lint": "clippy::cast_sign_loss", - "path": "src/fleet.rs" - }, { "count": 1, "fingerprint": "4059af753fe3c118d6d67633e67b56814f4f88db59c04f2d9b5a3a9635ba17dd", @@ -687,13 +407,6 @@ "lint": "clippy::disallowed_methods", "path": "src/bootstrap/runtime_handoff.rs" }, - { - "count": 1, - "fingerprint": "c3c8e6f10636569f7060d6fb5a83ad511cafbbe936bcd93bd0054a9c3721ca05", - "item": "crate::reset_refuses_while_in_flight", - "lint": "clippy::disallowed_methods", - "path": "src/dst/trace_store_tests/streams.rs" - }, { "count": 1, "fingerprint": "467ecb0e93130ae35e1b6f44dcb300042a7f8aa3c8ba97139d917f1c1477258d", @@ -708,13 +421,6 @@ "lint": "clippy::disallowed_methods", "path": "src/http.rs" }, - { - "count": 1, - "fingerprint": "363a60fc119bb47f10bce7c4759afe3477bfd115ef0ced4e31b16e2513282769", - "item": "crate::main", - "lint": "clippy::disallowed_methods", - "path": "src/main.rs" - }, { "count": 1, "fingerprint": "a4b24ddc151fb02ad8eabfe6eac9e73cde3ec8bdbd1ad791fe279b189c0673b8", @@ -764,34 +470,6 @@ "lint": "clippy::disallowed_methods", "path": "src/sse/feed.rs" }, - { - "count": 1, - "fingerprint": "daeb065d8b240050dd2a5c8b3982bd8fc6d6b0ed97b395068693949c86dacbbb", - "item": "crate::serve", - "lint": "clippy::disallowed_methods", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "077dcb0658838b0eae07fae1248464feb53eb4915ab8e665afe5540f99f3be58", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::disallowed_methods", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "3daf3c339406341074978c72f890391f92eecea5aaaee0cc01a9682afcff1762", - "item": "crate::TouchJournal::start", - "lint": "clippy::disallowed_methods", - "path": "src/touch.rs" - }, - { - "count": 1, - "fingerprint": "1d034ec3d0e5fb08a999d4f13e4ecce20c136c35c7c22a9d8b5048c8adcd2ac9", - "item": "crate::main", - "lint": "clippy::excessive_nesting", - "path": "examples/readertest.rs" - }, { "count": 1, "fingerprint": "1aa80d18a19ab8c44adad6867582390fd403d7e578c6c980d86a41215fc4d6a6", @@ -834,125 +512,6 @@ "lint": "clippy::excessive_nesting", "path": "src/application/append/content.rs" }, - { - "count": 1, - "fingerprint": "4e1a3f179a244f81df2b9047242dda35a2955194fb9d9a2890da450bd1fe9b35", - "item": "crate::dlq_and_settle", - "lint": "clippy::excessive_nesting", - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "40534a041f5b422f47767b3bb700b718265f762e51dde78a4a0f98a24b7816d7", - "item": "crate::pull", - "lint": "clippy::excessive_nesting", - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "9f202dfb5f87c9c73eb680fa96b61b41237fbfe9d9b326b733805e33f52e6d35", - "item": "crate::pull", - "lint": "clippy::excessive_nesting", - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "ef4325435bbee056e68c6efe90654ffd71a5fcd935fee2eefea19f106399dcd2", - "item": "crate::pull", - "lint": "clippy::excessive_nesting", - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "42ebb9c72561e888b59478a720e62e9546de1060541143151da6eb0b7285b98e", - "item": "crate::tests::r05_cancelled_ttl_attempt_releases_only_its_owned_slot", - "lint": "clippy::excessive_nesting", - "path": "src/application/creation.rs" - }, - { - "count": 1, - "fingerprint": "25d0f8111c690996070f43095a86bf7bafb1a92223936708c5044d225d02c98c", - "item": "crate::delete_lifecycle", - "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "30f0c95408939467c14ca3ebbb543ed194ed31339dd5e24377cb7e974fafd400", - "item": "crate::delete_lifecycle", - "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "350abd10e6ecc8bc3cebc3d28cf789f3a58e611cb76e0fad483ecd00daa0de65", - "item": "crate::delete_lifecycle", - "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "3c82ef4fa6edd14deb7e92e6e135a13763ecb50283c2ff0b61014b01adf4b79c", - "item": "crate::delete_lifecycle", - "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "5ae95c68a36189a6a97270a7d0b38556b11a7698362a79682ebcaea19619852b", - "item": "crate::delete_lifecycle", - "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "f85b889c8716747ed7035b9afcca76089da7c5e7a2cc7050fd7ea3784579470d", - "item": "crate::delete_lifecycle", - "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "fd3c924d424859c4b5dd84f87bcfcbd4e9d770521fa8405ec8bcf07efef2e380", - "item": "crate::delete_lifecycle", - "lint": "clippy::excessive_nesting", - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "00cb7e1681732ced8a5729d8a36bcfc4880ae70c60e13787aac0dee004851212", - "item": "crate::validate_boundary", - "lint": "clippy::excessive_nesting", - "path": "src/application/creation/fork.rs" - }, - { - "count": 1, - "fingerprint": "9261bca38e050f6bc31edb34d7eac39535119dc56391181972edd1ae220b9d41", - "item": "crate::publish", - "lint": "clippy::excessive_nesting", - "path": "src/application/creation/initialization.rs" - }, - { - "count": 1, - "fingerprint": "dbd216ac9137bf7a166271b93955bd5a65bff4a51bfd26ed592587c48b6b1393", - "item": "crate::CreationService::create_product", - "lint": "clippy::excessive_nesting", - "path": "src/application/creation/product.rs" - }, - { - "count": 1, - "fingerprint": "2152575a7b7844c0789cb5916bec1dc8286ff3e879ed34a90925fbda45e9d5d4", - "item": "crate::execute_segment", - "lint": "clippy::excessive_nesting", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "b2ed7a64ac4e12752e50ea7f6086069b9ce54b39ea7e5c59eb75ec09c219d325", - "item": "crate::fork_chain_of", - "lint": "clippy::excessive_nesting", - "path": "src/application/read.rs" - }, { "count": 1, "fingerprint": "1283f4769ff60ff780684ab18786940d14d286f9c38f4a5358460e212b6602d5", @@ -1044,13 +603,6 @@ "lint": "clippy::excessive_nesting", "path": "src/application/request_work.rs" }, - { - "count": 1, - "fingerprint": "7c8d260b0b1720495fd47fd9a739569d0cd61496f669c49020928ec9228ab033", - "item": "crate::resume_incarnation", - "lint": "clippy::excessive_nesting", - "path": "src/application/topology.rs" - }, { "count": 1, "fingerprint": "3cc16d7cd21fe23ec23e7994f70555a46e6793e78a1256dd8e74553442c5a4af", @@ -1107,34 +659,6 @@ "lint": "clippy::excessive_nesting", "path": "src/billing.rs" }, - { - "count": 1, - "fingerprint": "2f62db7585b4d3ccaa95e66fe7ad581dc1180577d52b456a221b29fc087f4ef2", - "item": "crate::main", - "lint": "clippy::excessive_nesting", - "path": "src/bin/livebench.rs" - }, - { - "count": 1, - "fingerprint": "4239b5b2ef451cfc3c075064486fc3ff459ba62405925418cd8db6d37813a5b1", - "item": "crate::main", - "lint": "clippy::excessive_nesting", - "path": "src/bin/livebench.rs" - }, - { - "count": 1, - "fingerprint": "abcf4ae5d0e9c8f9414eea67a7bde2f1048d3213507670cfd6824992b36090b8", - "item": "crate::main", - "lint": "clippy::excessive_nesting", - "path": "src/bin/livebench.rs" - }, - { - "count": 1, - "fingerprint": "cae7a8d75308315a2440fec7618150f7d79054ba9c20e850ffbef47adaeed2e8", - "item": "crate::main", - "lint": "clippy::excessive_nesting", - "path": "src/bin/livebench.rs" - }, { "count": 1, "fingerprint": "1eac21836af3d62faaf86c992f6e6a774c3f293cc7dd274d2683179da33988cd", @@ -1163,398 +687,6 @@ "lint": "clippy::excessive_nesting", "path": "src/bootstrap/runtime_handoff.rs" }, - { - "count": 1, - "fingerprint": "20915c85f18212ea79ef304324e79b7418de39d6017b019bbfb88a14d18fbbc4", - "item": "crate::::delete_stream", - "lint": "clippy::excessive_nesting", - "path": "src/dst/fault_store.rs" - }, - { - "count": 1, - "fingerprint": "a3f50add507862112bcb0572ef759a1844b9691c0949142659919d6098c0b6fd", - "item": "crate::::delete_stream", - "lint": "clippy::excessive_nesting", - "path": "src/dst/fault_store.rs" - }, - { - "count": 1, - "fingerprint": "02fb0b5040299908eb75e672ed0057ed59824416ce3d63df2349931000fbab03", - "item": "crate::::list", - "lint": "clippy::excessive_nesting", - "path": "src/dst/fault_store.rs" - }, - { - "count": 1, - "fingerprint": "484a3e984d3f8323567c87f5234c69963717ccbc43dd5ba8dcd80ac3028110f3", - "item": "crate::readiness_endpoint_refuses_each_permanent_critical_exit", - "lint": "clippy::excessive_nesting", - "path": "src/dst/review_readiness.rs" - }, - { - "count": 1, - "fingerprint": "38b4b5b4f365c240f983831949ac1c0b721c31c6ba3b9ed095b8683383e97eb4", - "item": "crate::r16_unauthorized_watch_shapes_are_independent_of_existence", - "lint": "clippy::excessive_nesting", - "path": "src/dst/review_security.rs" - }, - { - "count": 1, - "fingerprint": "beac18e52a4e5e4bcbfabf624dc1bc9185118a356cc1c76368cbc5dd440a8ae4", - "item": "crate::r16_unauthorized_watch_shapes_are_independent_of_existence", - "lint": "clippy::excessive_nesting", - "path": "src/dst/review_security.rs" - }, - { - "count": 1, - "fingerprint": "fe2069e7763d98d2b2a1d3b02013973bf1432956a9970e240895fede3f9dbc3c", - "item": "crate::r16_unauthorized_watch_shapes_are_independent_of_existence", - "lint": "clippy::excessive_nesting", - "path": "src/dst/review_security.rs" - }, - { - "count": 1, - "fingerprint": "7944f4056ffd5311351a49104fd999ff60f2fa54e8d3d8e8b11f33e61e7e6402", - "item": "crate::OpLog::audit", - "lint": "clippy::excessive_nesting", - "path": "src/dst/runtime.rs" - }, - { - "count": 1, - "fingerprint": "b11118ab102192ad1cc42f532b7ec00d82c7a340ed61051c1ac104a9d71f7a93", - "item": "crate::OpLog::audit", - "lint": "clippy::excessive_nesting", - "path": "src/dst/runtime.rs" - }, - { - "count": 1, - "fingerprint": "fb62bbd1021e932cf5fdc140a5f4db1b2c06ad36db64f17be41310a1754a59a2", - "item": "crate::Workload::append_to", - "lint": "clippy::excessive_nesting", - "path": "src/dst/runtime.rs" - }, - { - "count": 1, - "fingerprint": "580d2ad6ac21a732ec42174ec819dcd149063e8819b25f4bdc043cf320e2f48d", - "item": "crate::product_consumer_drains_lineage_across_split", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/consumer_product.rs" - }, - { - "count": 1, - "fingerprint": "01f29285e5b5e3906d6dc5cb23aebac8c693299e54bf334a73e89abde40a1d51", - "item": "crate::rig_opener", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/fixture_http.rs" - }, - { - "count": 1, - "fingerprint": "24d6a9f7d08260ec8d41b585b5cd32e156e5a9b0b117cc840c45911732880158", - "item": "crate::r09_fleet_cancels_entered_documents_without_partial_authority_or_lost_retry", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/fleet_controller.rs" - }, - { - "count": 1, - "fingerprint": "ba04939f0f75a7c37688a56805d79f9171f2eeb312d37e9d334617c86631c78f", - "item": "crate::r09_fleet_cancels_entered_documents_without_partial_authority_or_lost_retry", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/fleet_controller.rs" - }, - { - "count": 1, - "fingerprint": "c849f9dbe87bd3cd71d409d13273ebb815eb5be62a0fd48a4a57d61ac54342eb", - "item": "crate::r05_unknown_child_state_preserves_its_source_reference", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/fork_lifecycle.rs" - }, - { - "count": 1, - "fingerprint": "fc1101b26da17357fcbc421fcb84beeb56f04c7b14262fcc48739ac08ffb6971", - "item": "crate::r05_unknown_child_state_preserves_its_source_reference", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/fork_lifecycle.rs" - }, - { - "count": 1, - "fingerprint": "4e09b4b11bc905358797d7b4881dda9492eb422131e163dfbb0e63084914db0d", - "item": "crate::an_initialization_cannot_be_resumed_with_another_key", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/lifecycle_creation.rs" - }, - { - "count": 2, - "fingerprint": "47c874007589f3c3294157c7f1e65f8f794f8b1dee4b73ec2a990dca0a212396", - "item": "crate::livefeed_remote_sealed_predecessor_streams_through_owner", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/livefeed_history.rs" - }, - { - "count": 1, - "fingerprint": "dedb3df47790ea5d018d365d1788da658fe89b965b07e76ffc4053f669c2b300", - "item": "crate::livefeed_split_shared_subscribers_swap_once_deliver_twice", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/livefeed_swap.rs" - }, - { - "count": 1, - "fingerprint": "28a8ee77e7a3c036337c0a3463d49b0711893258a54d3e617c9ce7bc075ed02d", - "item": "crate::cut_resume_never_skips_a_durable_record", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/persistence_faults.rs" - }, - { - "count": 1, - "fingerprint": "2c37182cb22d080ea24dbcab995f749bdc692d610818cb41241001b317702308", - "item": "crate::cut_resume_never_skips_a_durable_record", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/persistence_faults.rs" - }, - { - "count": 1, - "fingerprint": "49560d6a75a831b67a5d2b7472d23c2cfecbe157d48b31d7306356b374cee6b9", - "item": "crate::the_first_advance_seals_the_history_layout::wait_absorbed", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/reads_history.rs" - }, - { - "count": 1, - "fingerprint": "7809e9cb9c94055a5bca6d983583ee40841106a34d92a33b70bc067b4fe9cebd", - "item": "crate::the_first_advance_seals_the_history_layout::wait_absorbed", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/reads_history.rs" - }, - { - "count": 1, - "fingerprint": "f705df536f1c133fec22b72a67d74ae24a7012bed3b97c525efb16351dfa64fd", - "item": "crate::a_duplicate_absorbed_op_does_not_advance_the_trim", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/reads_ring.rs" - }, - { - "count": 1, - "fingerprint": "e13069f5d295aa1a0bc9ba761037dd5419e672cc1e003a2833d20a9462ee432f", - "item": "crate::r09a_cancelled_topology_job_leaves_exact_debt_for_a_fresh_read_owner", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/request_topology_debt.rs" - }, - { - "count": 1, - "fingerprint": "47dd963a38cd246519b3c94c97f538c3251ece297e312681e5b57f72c0f476a7", - "item": "crate::r17a_each_required_engine_exit_changes_real_health_and_readyz", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/runtime_engine_lifecycle.rs" - }, - { - "count": 1, - "fingerprint": "160515be4a62535d57f518177f2ba2aa31a9ada7a4f1724fea9e71aad7a1df37", - "item": "crate::open_gate_escalates_holdoff_for_engines_that_die_young", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/runtime_open_gate.rs" - }, - { - "count": 1, - "fingerprint": "f93d8e4dcb13e18325d41a73785f005b0db03929d72ccdf9ef2d3b62d239fd12", - "item": "crate::tombstone_walk_fairness_under_occupied_budget", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/runtime_sweep.rs" - }, - { - "count": 1, - "fingerprint": "1ba944c8796d64e85591514448ffd5eb882b1de1506de50d55f20404327ed3a0", - "item": "crate::noisy_neighbor_cannot_degrade_a_compliant_project", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/security_isolation.rs" - }, - { - "count": 1, - "fingerprint": "e21dadb6bdf009384ba30b2a458eef4ae3203860fb2585de44b2a37c141a4e96", - "item": "crate::noisy_neighbor_cannot_degrade_a_compliant_project", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/security_isolation.rs" - }, - { - "count": 1, - "fingerprint": "cceace2aa58346ed40165ffab88a9c66f603b7d13e76d5932d8d63e151b1ccec", - "item": "crate::product_sse_controls_carry_signed_cursors", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/sse_delivery.rs" - }, - { - "count": 1, - "fingerprint": "f2c96a740bf36f56cb4d1daef714716078255447ff01f767c09a7fb971bfc15f", - "item": "crate::sse_follows_lineage_across_split", - "lint": "clippy::excessive_nesting", - "path": "src/dst/tests/sse_delivery.rs" - }, - { - "count": 1, - "fingerprint": "5233d9b140eedafdf1a6d5ef39edf3e0e77aead9dbca56c8355fbc7b95604acf", - "item": "crate::::delete_stream", - "lint": "clippy::excessive_nesting", - "path": "src/dst/trace_store.rs" - }, - { - "count": 1, - "fingerprint": "a7f3ede7bc2c16bbde8eca36a575c5562508da5abf0782f71dac4dea29e25851", - "item": "crate::::delete_stream", - "lint": "clippy::excessive_nesting", - "path": "src/dst/trace_store.rs" - }, - { - "count": 1, - "fingerprint": "be5566b4de849f072132e9527e11b919150e7e2214eb569fe25e20bf069980ab", - "item": "crate::concurrent_begins_with_reverse_finishes_resolve_every_event_exactly_once", - "lint": "clippy::excessive_nesting", - "path": "src/dst/trace_store_tests/concurrency.rs" - }, - { - "count": 1, - "fingerprint": "17502ef4ad24ab8eff377569c3983dfeb9d0f0c5928c5d090838b9db49e906fc", - "item": "crate::::delete_stream", - "lint": "clippy::excessive_nesting", - "path": "src/dst/trace_store_tests/mod.rs" - }, - { - "count": 1, - "fingerprint": "06698729ff291ef104d9733ec1037c19a65d3270530b92d93f2eeab5ba6196c2", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "2835ee8305da81421eb5976b96d36eb88328147bbae4f76f8ff2e4beba248ad5", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "36b90f4f43f5a7a78c3cbed3c2459912fcad41b06935b0c0cd48090d94929161", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "404fd54290c30fad44947c652d821a7faa6849b8c4b4188e4e3f431b0ce9627d", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "419888b61336a2fe088a9d4001c92cb5bb80fac1ab21c15f5ed2126c247ab5b2", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "5827e1b189432eb44bcb935ca65e398807270e9b01838328d719631717471aa6", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "5c2dc2ab4e0b392223dd9fc3a006db0c52d72882376d1c5c48347279fb168db2", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "5cdee18e4f40367d8f98d7b20db1aa4881ab79ef977a0b2134c34e992c46d057", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "6b08b3fcd5155c8097a536a7a63b0fa95ae9f7b2b7ea05d7feca9401e24a8773", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "79c43ce915ae0f1c0bf008d365be655d2b6ebe3a68dd35d0b6ce691878fcd6f7", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "7a6dcd68fbe4cd8ede5068e19764016cce533afb56f09c013fbb331360468b9c", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "7b667d3b38ba531b9b6bb2210c1d1495db5af847091b241539617f60147c6ea5", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "8440778e362a9f8d5367803f3618c074e1788d2d27bc085227e6d976ebc3ff18", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "a3f6e52fc8f1b9487fd2cba23d77056e6ce5bf4c26ff368e988732cef895ecd4", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "aedc6320892e20a9e3f90ac59c15a11361caf654946dba23e51a9428534ff2ff", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "c133ec13755d7052663af995576bda9b090b7a0dbae27ce19e299a9decfcac5d", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 2, - "fingerprint": "ca06ad69f8478620482688011c82a86d4bee98ae8fedec04963bcbd0d798b82a", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "d24fb286c1b3c215d48debd7d731496c8d5af785ff6d639a47794e3a72845f25", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 2, - "fingerprint": "eb2efd7c80d77c5e633e875b3cab5d6d5fefe733b94b50cac5f08b4f7400cf1b", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "f2fa0c5cfce116cff386c2b9a2c5effce455460a33b587007df5c50a79f4cf10", - "item": "crate::start", - "lint": "clippy::excessive_nesting", - "path": "src/fleet.rs" - }, { "count": 1, "fingerprint": "3624e804e1dc6bce3409cf6585bcea1217d1b130ae1fe593c9cdc81f5c91f499", @@ -1576,55 +708,6 @@ "lint": "clippy::excessive_nesting", "path": "src/fleet/repository.rs" }, - { - "count": 2, - "fingerprint": "353c4adbd7a84fd0ee4d793ecf5004cea4e4def0c78fee65c123890742e0e22b", - "item": "crate::raw_page", - "lint": "clippy::excessive_nesting", - "path": "src/history/postings_validation_tests.rs" - }, - { - "count": 1, - "fingerprint": "8943707662c6a381a961be34fe8a2c04f6585d385985d76b8d9be4a48d752496", - "item": "crate::raw_page", - "lint": "clippy::excessive_nesting", - "path": "src/history/postings_validation_tests.rs" - }, - { - "count": 1, - "fingerprint": "2855a1d3e51e88876253da4f8ba9f26cf2ee5b2cc3ad2e777c624c12cb081153", - "item": "crate::Absorber::gather_due", - "lint": "clippy::excessive_nesting", - "path": "src/history/worker.rs" - }, - { - "count": 1, - "fingerprint": "4760b6f6157e0b1d432988b788d8adeb347837b9b292dee165c1a6cdaf9195e2", - "item": "crate::Absorber::gather_due", - "lint": "clippy::excessive_nesting", - "path": "src/history/worker.rs" - }, - { - "count": 1, - "fingerprint": "8a8eaa70b4ae377f730cf0227b9e6920fc09472b9b3ea808132597d6cb3ea2b7", - "item": "crate::Absorber::gather_due", - "lint": "clippy::excessive_nesting", - "path": "src/history/worker.rs" - }, - { - "count": 1, - "fingerprint": "af1057e5fc7df11aaaa5f2ca8eb50174498749ae1f1d2a01f831a84b5bad9c9c", - "item": "crate::Absorber::gather_due", - "lint": "clippy::excessive_nesting", - "path": "src/history/worker.rs" - }, - { - "count": 1, - "fingerprint": "ed9cecb327df14c2c913d96e97d8ad89b5839f3c74db66a939da84a8748dde91", - "item": "crate::Absorber::gather_due", - "lint": "clippy::excessive_nesting", - "path": "src/history/worker.rs" - }, { "count": 1, "fingerprint": "03fd5ad47796621bb1fad1fc50f1afa04a61bf97e56df584548eff1a83123caf", @@ -1632,27 +715,6 @@ "lint": "clippy::excessive_nesting", "path": "src/http.rs" }, - { - "count": 1, - "fingerprint": "c16effd6b3a25113a54e7aa093387baba1119d0f514ae932d54bd969ec0d2262", - "item": "crate::Lint < 'a >::check_signature", - "lint": "clippy::excessive_nesting", - "path": "src/mt_lint.rs" - }, - { - "count": 1, - "fingerprint": "ca558a37425e30fbdb804eaac607efc6ef5633ba19965106ab64d517dc755fff", - "item": "crate::Lint < 'a >::check_signature", - "lint": "clippy::excessive_nesting", - "path": "src/mt_lint.rs" - }, - { - "count": 1, - "fingerprint": "62e4970a5e4f5eda75b45c3fd034e451a2be59428eb6dc41b07e3484f46d5137", - "item": "crate::multitenancy_identity_lint::walk", - "lint": "clippy::excessive_nesting", - "path": "src/mt_lint.rs" - }, { "count": 1, "fingerprint": "0b719f20a83a38b88ce0da46cea55093a68027d2f0ce6623e13ec224e0172d92", @@ -1681,97 +743,6 @@ "lint": "clippy::excessive_nesting", "path": "src/ops.rs" }, - { - "count": 1, - "fingerprint": "1adc3d19b47aa3d3209f102e5361dd68d672773c401b9d0a880d508974f423c9", - "item": "crate::PostingsCache::install_chunk", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "71315063affd6894197cd9487a914fa165f6e26b9027a21ee3bbbbb602d0b6f7", - "item": "crate::PostingsCache::install_chunk", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "854ca224ea7f6eab1503bc29c77d0408af96ef8b2b7d203dd5db1b1e8cf7fd4b", - "item": "crate::PostingsCache::install_chunk", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "bc7870d3a916f24bf6963419e15f3d37ef8269feb5fe2b5e87c311d5016d0185", - "item": "crate::PostingsCache::install_chunk", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "d7489bb1a7ca147bad29e7b9f02252cbb393de5af438f17dfd7bad7d6ae8a03b", - "item": "crate::PostingsCache::install_chunk", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "e3b1c12d60832044bb2bd049eb3fa05c626d3d4cfef0aed2174db3e498b08fdf", - "item": "crate::PostingsCache::install_chunk", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "e581f85d334fee30402ae991ba37378bf1c3a493bb3bb4326847fe50322a17c6", - "item": "crate::PostingsCache::install_chunk", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "094f714370f3d7661be35ec291df37b3b91ba41c7d75c4a2f7ccb0967dcf1c70", - "item": "crate::PostingsCache::runs_for", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "14a19b4e20199fa3b581ba1d3357e8c7efde1a4145ab2bae93908b19d7fc2ef9", - "item": "crate::PostingsCache::runs_for", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 2, - "fingerprint": "15903317f9d8c2d89996988f99fff9914847b235df393cb1830de223057ec941", - "item": "crate::PostingsCache::runs_for", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "2dc0d3b96dfadceda5980f809287085c0eca469ef6021dfcc8f44e925eef22ff", - "item": "crate::PostingsCache::runs_for", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "a5139260699f5ac85f0993f246b9dfefd3f1ebe54ece2a46e049e4d552040874", - "item": "crate::PostingsCache::runs_for", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "19bda40d2b1848079641d64db6ba18ea4771bc39c51eee283b75464db39e0832", - "item": "crate::PostingsCache::spawn_load", - "lint": "clippy::excessive_nesting", - "path": "src/postings_cache.rs" - }, { "count": 1, "fingerprint": "e835026b048c84c3bda7e05559ee028d921f113131c10d8f4d67e59f600c6bbc", @@ -1807,13 +778,6 @@ "lint": "clippy::excessive_nesting", "path": "src/product.rs" }, - { - "count": 1, - "fingerprint": "41aa761eb93bf5bc439ab385082f2353246ab1b5817b589cf07fe25936b83574", - "item": "crate::QuotaRegistry::admit", - "lint": "clippy::excessive_nesting", - "path": "src/quota.rs" - }, { "count": 1, "fingerprint": "194d60ed469b75f7246e155f672469339b422294f18914fe017600f43959d0ee", @@ -1884,34 +848,6 @@ "lint": "clippy::excessive_nesting", "path": "src/registry.rs" }, - { - "count": 1, - "fingerprint": "922d5806a61e4942d1df2829ab59f4f25f480a7ca55c4455ef6312ace8638fd9", - "item": "crate::::sleep", - "lint": "clippy::excessive_nesting", - "path": "src/runtime.rs" - }, - { - "count": 1, - "fingerprint": "6a3920d33a903650e2bb4c9d61d60dad13588da55952c78a4ef194d580fcc5b7", - "item": "crate::tests::r10_telemetry_cache_progress_and_database_lifetimes_are_runtime_owned", - "lint": "clippy::excessive_nesting", - "path": "src/runtime/telemetry.rs" - }, - { - "count": 1, - "fingerprint": "f56ac2edf2fd4344f049479cd96fada5edff21ed2a2a09c227db8b3a2b95f767", - "item": "crate::State::forget_previous_incarnation", - "lint": "clippy::excessive_nesting", - "path": "src/scaler3.rs" - }, - { - "count": 1, - "fingerprint": "630ee19906cd5e125941d1079dd7af6a82e0ef78f10a35c55f4825d7f87e0709", - "item": "crate::evaluate_state", - "lint": "clippy::excessive_nesting", - "path": "src/scaler3.rs" - }, { "count": 1, "fingerprint": "708c0e28416e32bac3d3263265aa780e38c67bdf8cee5d74d18258cd16d7dc7a", @@ -2472,97 +1408,6 @@ "lint": "clippy::excessive_nesting", "path": "src/sse/feed.rs" }, - { - "count": 1, - "fingerprint": "173f2f6dde9a5ad9529b4d1f763eda850776f1ebdc369c20173ec4069b174b16", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "3cb26d4cd1091c901a3b38002e62653a46e425af637fcd674d506af5af97e2ed", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 2, - "fingerprint": "40f449a96943b4a803b49e4a1a6a23438b9d64e1bd400c0fcd0f0929a971bbad", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "760f81f102b1c5db0391459eb9adc582a2421e0b4b200aff55a96d453582bc35", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "861464a6851cce249a2f98f59b7fbb63b7b8ef692ca222a0b374fab825d522d7", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "87e4599589da0813221f7df8ce3aed5a5e08b9626aab1a0a0baaefcac4f1269e", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "95001c4e76e15e6aba1ce5c1b3dc7fb6a8ac2a425ae80b22449662da161dcabe", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "997f9cf12cbf51ddbc877e32937a05fbf56821dabbf437513954affdd93f9c44", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "9acbe20160993ff8fc01f9a787f8f5e8c6f0e25620a289fcd0ce3a4f41f3d0c8", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "aa08f1d5041f23b0990bb7c5d627a1cf305f4b04682c22004bdbca07d6190f13", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "b4e88c948105b39f1667eb4b54f128884dbde5b53b95be0fd1e24f3bf0aca920", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "fef1361f9942917be20c8b945eb53c83a94e9821fa2bc2b468c3aaf4baf198f9", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "fef1bde05635023b601fad11ca3f731d0562ee02ca7ba4e6657e01f024df78bc", - "item": "crate::serve", - "lint": "clippy::excessive_nesting", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "4b75276d0a81c454a1ce970e376ab33d82c69fe2c630be962ea834301558749e", @@ -2635,94 +1480,17 @@ }, { "count": 1, - "fingerprint": "a2843483e6ef9a3229a2829b8289c064f77697580d2528f37d6f713bea0c7457", - "item": "crate::refresh_transition", - "lint": "clippy::excessive_nesting", - "path": "src/sse/source.rs" - }, - { - "count": 1, - "fingerprint": "de211232c3edd14f05a74835e2706ddd37ceff3e152e1813b112f389e43faf75", - "item": "crate::refresh_transition", - "lint": "clippy::excessive_nesting", - "path": "src/sse/source.rs" - }, - { - "count": 1, - "fingerprint": "13b437276e982f3894e983e01f345242c6c64c112cc803461289e2e5cd1de24e", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::excessive_nesting", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "4a5975fa9ea7f64af10fd4d14dcc3c943340b61b8af8af976e90f6ddf470d14c", - "item": "crate::encode_prefix", - "lint": "clippy::excessive_nesting", - "path": "src/telemetry_batch.rs" - }, - { - "count": 1, - "fingerprint": "cf2d4b10046cb61f96849b301cecb817e73fd85fbbdb245672281abd219282aa", - "item": "crate::TouchJournal::start", - "lint": "clippy::excessive_nesting", - "path": "src/touch.rs" - }, - { - "count": 1, - "fingerprint": "20de1f0b3e58a074307b546329b9d4d2016b9e3096ec7fe706ce296a94ca3eeb", - "item": "crate::dlq_and_settle", - "lint": "clippy::expect_used", - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "44afff99d1565b8d7b2ed92e7462ceeb566de7406c6b40a222be52709179f081", - "item": "crate::relay_queue_cursor", - "lint": "clippy::expect_used", - "path": "src/application/consumer_remote.rs" - }, - { - "count": 1, - "fingerprint": "b4886b6b928cfc707944b06ef4a2af7a587347beda2fd9f5868f1aa1b6dbadab", - "item": "crate::relay_sweep_segment", - "lint": "clippy::expect_used", - "path": "src/application/consumer_remote.rs" - }, - { - "count": 1, - "fingerprint": "77c7c5dcc68868ef977c9f613eb03268f9f78d53910c39f2e7637ad3a59f0e5e", - "item": "crate::json_entries", - "lint": "clippy::expect_used", - "path": "src/application/creation.rs" - }, - { - "count": 1, - "fingerprint": "89b8ed38656716b2b492981f0be58883b33af405feabff434d78c5f2b9e53bf2", - "item": "crate::json_entries", - "lint": "clippy::expect_used", - "path": "src/application/creation.rs" - }, - { - "count": 1, - "fingerprint": "e717a00beba453e59d6b13536a1b7174ebd58c4ecdd25afc2c139b6e7f1e464d", - "item": "crate::stamp_fork_reference", - "lint": "clippy::expect_used", - "path": "src/application/creation/anchor.rs" - }, - { - "count": 1, - "fingerprint": "d6ea231d3a69fe169353a15ad6f1f0ab948014b41d5246ae7acd76a629eb5bf6", - "item": "crate::delete_lifecycle", - "lint": "clippy::expect_used", - "path": "src/application/creation/deletion.rs" + "fingerprint": "a2843483e6ef9a3229a2829b8289c064f77697580d2528f37d6f713bea0c7457", + "item": "crate::refresh_transition", + "lint": "clippy::excessive_nesting", + "path": "src/sse/source.rs" }, { "count": 1, - "fingerprint": "d6b0356f48129c9473db129f483e5683ab5a24a6a5d4c03169a88f1849c6e937", - "item": "crate::decide_claim", - "lint": "clippy::expect_used", - "path": "src/application/lifecycle/claims.rs" + "fingerprint": "de211232c3edd14f05a74835e2706ddd37ceff3e152e1813b112f389e43faf75", + "item": "crate::refresh_transition", + "lint": "clippy::excessive_nesting", + "path": "src/sse/source.rs" }, { "count": 1, @@ -2738,34 +1506,6 @@ "lint": "clippy::expect_used", "path": "src/application/read_remote.rs" }, - { - "count": 1, - "fingerprint": "350a8df21f66d6ec939ca1073f4340bfd87bebb9ca0b8f9bb748157b290498a9", - "item": "crate::resume_incarnation", - "lint": "clippy::expect_used", - "path": "src/application/topology.rs" - }, - { - "count": 1, - "fingerprint": "6a3a8bf77c6a257cad8bd26381b57f40a7c711c0ac37fb282d7b3cfcaccf272b", - "item": "crate::resume_incarnation", - "lint": "clippy::expect_used", - "path": "src/application/topology.rs" - }, - { - "count": 1, - "fingerprint": "f63dbc656498275beffa3c416eebdd2d65dff345d1e865ea87c39fc54c39a2bd", - "item": "crate::resume_merge", - "lint": "clippy::expect_used", - "path": "src/application/topology.rs" - }, - { - "count": 1, - "fingerprint": "add7a6c6099dc69f69f31022e843efa9b3b5bc319e4719a078413b2832f066a1", - "item": "crate::PendingAudit < 'a >::take", - "lint": "clippy::expect_used", - "path": "src/audit.rs" - }, { "count": 1, "fingerprint": "6af87f90eba85adf522cbee9d1ad73eb337372ef8b6db4671ddaa0e18583242e", @@ -2787,27 +1527,6 @@ "lint": "clippy::expect_used", "path": "src/bootstrap/runtime_handoff.rs" }, - { - "count": 1, - "fingerprint": "23fe18d6bb468f82a2161e564ba0a9407164c015daadd31ea51a63d87ba6f605", - "item": "crate::DeploymentIdentity::raw_adapter_sref", - "lint": "clippy::expect_used", - "path": "src/deployment.rs" - }, - { - "count": 1, - "fingerprint": "42eeb6c95de8528603672d7cf38b8c88e9e9386bcbeb5ea38ae21702ef707233", - "item": "crate::mac16", - "lint": "clippy::expect_used", - "path": "src/product_cursor.rs" - }, - { - "count": 1, - "fingerprint": "d2c08919e550724cb8980cc2f388bf5af1b0918d6bc9495b52baf5e6dc1d68fa", - "item": "crate::mac_key", - "lint": "clippy::expect_used", - "path": "src/product_cursor.rs" - }, { "count": 1, "fingerprint": "71c94b87ea313746b3655e25606c249376b24edc6bbc4662d58a76e102cf5b85", @@ -2857,27 +1576,6 @@ "lint": "clippy::expect_used", "path": "src/sse/source.rs" }, - { - "count": 1, - "fingerprint": "e839bd2f53899a7dc90e76f33999e3859c00065332629dc505248ef302b9436a", - "item": "crate::ProjectId::stream_ref", - "lint": "clippy::expect_used", - "path": "src/tenant.rs" - }, - { - "count": 1, - "fingerprint": "a590444a59baf51ef92d12387b2fa9b15658d9f2298d2d2ba00d7ca211229907", - "item": "crate::system_project", - "lint": "clippy::expect_used", - "path": "src/tenant.rs" - }, - { - "count": 1, - "fingerprint": "bf50dd3ce823a8bcbf08445c192db0440927ea2581360724743b3d9111cce397", - "item": "crate::idle_engine_store_traffic_is_bounded_by_the_poll_cadence", - "lint": "clippy::field_reassign_with_default", - "path": "src/dst/tests/runtime_open_gate.rs" - }, { "count": 1, "fingerprint": "e5211d90a1e337352430a9f0a55c4d657343a918e50c030c0ef6f0cadbf85870", @@ -2892,20 +1590,6 @@ "lint": "clippy::fn_params_excessive_bools", "path": "src/application/append/contract.rs" }, - { - "count": 1, - "fingerprint": "e8a14ab85d4f54761243199b7d4e22951df2562856ae53c7e9d23533048cd7db", - "item": "crate::LeaseRig::publish", - "lint": "clippy::fn_params_excessive_bools", - "path": "src/dst/tests/security_freshness.rs" - }, - { - "count": 1, - "fingerprint": "d812a79721e290156794d6e0d93b78e97749718f34f1ac9a1ba59173f34a96fd", - "item": "crate::TraceStore::with_options", - "lint": "clippy::fn_params_excessive_bools", - "path": "src/dst/trace_store.rs" - }, { "count": 1, "fingerprint": "2d7ffb6b7490d20b6b2bb0a7ed903bbfac4cee03b702a300bec63ad9b758c48f", @@ -2969,20 +1653,6 @@ "lint": "clippy::large_enum_variant", "path": "src/shard.rs" }, - { - "count": 1, - "fingerprint": "1d68c795d411a2826189e4c607b033e51c5b95c5c0088ae683e59c0cb7a99fc5", - "item": "crate::spawn_refresher", - "lint": "clippy::let_underscore_must_use", - "path": "src/auth_feed.rs" - }, - { - "count": 1, - "fingerprint": "d5d453a0badc787ef4a63eab31c3ac29282921eb4df51015af220492473c1d6e", - "item": "crate::tests::refresh_once_publishes_from_files_and_survives_a_broken_one", - "lint": "clippy::let_underscore_must_use", - "path": "src/auth_feed.rs" - }, { "count": 1, "fingerprint": "cdb928566335511055c455f14f4e266a294a14a8c65be524eecbc9b07fb1af5b", @@ -2990,111 +1660,6 @@ "lint": "clippy::let_underscore_must_use", "path": "src/bootstrap/runtime_handoff.rs" }, - { - "count": 1, - "fingerprint": "01acc1eb1c1eb39eda1a83e4ba94a3e93e31213318e7adb900942590c9393324", - "item": "crate::FaultState::gate", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/fault_store.rs" - }, - { - "count": 1, - "fingerprint": "88f47529d21b6f01cbb3f4f038cc84ed7d52ef820898a220fc9dfbfd9a667e8e", - "item": "crate::expiry_closes_the_storage_gauge", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/billing_maintenance.rs" - }, - { - "count": 1, - "fingerprint": "b45de03533ae5f12677be0a22fab17b1783ce02b2fdc66cf2f590097e3e9ef8b", - "item": "crate::faults_actually_fire", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/fault_substrate.rs" - }, - { - "count": 1, - "fingerprint": "9dbb40087926a1e51d1a41aa872956dee1d6e1985e2cae529432a15e038d25f9", - "item": "crate::lost_response_counter_tracks_applied_behaviour_only", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/fault_substrate.rs" - }, - { - "count": 1, - "fingerprint": "370d271bfbb095ae2412b1956cc870859f6b93d84dbf3075d5597330e377a1a3", - "item": "crate::http_rig_build", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/fixture_http.rs" - }, - { - "count": 1, - "fingerprint": "c873b19fe6d8b5010de14f5b9a916eacdffe33f54308e7a46d442e829718eece", - "item": "crate::HeldDocument::enter", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/fleet_controller.rs" - }, - { - "count": 1, - "fingerprint": "1315068f273a06efe4703faf6a527bd960801c350dee43e9eec4f44db035f562", - "item": "crate::fork_cascade_hard_delete_releases_the_stream_slot", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/quota_enforcement.rs" - }, - { - "count": 1, - "fingerprint": "563fc7af72d23dad003733fdbc28b5926bf19c7bc5113ed08d3c0e45a6cf8760", - "item": "crate::a_hung_open_is_deadlined_and_its_late_engine_reaped", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/runtime_open_gate.rs" - }, - { - "count": 1, - "fingerprint": "19133a040966a0c16c5e512d6243a28683d97c2712e0e00226a1e6c3488b535b", - "item": "crate::naive_get_or_open", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/runtime_open_gate.rs" - }, - { - "count": 1, - "fingerprint": "6d50d40ac8ce2e9451fc55e721fd33109694eab33cd0c98a2d4faa256e78c2fb", - "item": "crate::reopen_storm_reproduces_the_eu_central_wedge", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/runtime_open_gate.rs" - }, - { - "count": 1, - "fingerprint": "b635928dcb8e9632df7d4f118b1c5182888d6b769533c304035885c939845aee", - "item": "crate::drain_billing_clean", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/tests/runtime_sweep.rs" - }, - { - "count": 1, - "fingerprint": "aa27a3793517915419675661f5b33642fa11119b0cc7711d3c24743dae37327c", - "item": "crate::reset_racing_with_begin_cannot_orphan_an_operation", - "lint": "clippy::let_underscore_must_use", - "path": "src/dst/trace_store_tests/concurrency.rs" - }, - { - "count": 1, - "fingerprint": "074ade8238bf36c30a7b368691990756cc43f3fcd2e4a718701b6c189a19ee7f", - "item": "crate::start", - "lint": "clippy::let_underscore_must_use", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "1ec581eaae0ffbc70f357d7dbdec2fc40ab13894c1892399eba6f8609acb5d15", - "item": "crate::active_absorber_cancel", - "lint": "clippy::let_underscore_must_use", - "path": "src/history/controller_tests.rs" - }, - { - "count": 1, - "fingerprint": "61152cc28d95328fc84f8c9316d0964497d26902d37d91410de277226d20f378", - "item": "crate::active_absorber_cancel", - "lint": "clippy::let_underscore_must_use", - "path": "src/history/controller_tests.rs" - }, { "count": 1, "fingerprint": "d963f9293297f7309ece0814abaae351b55f6aae12735f766725924f1b82f344", @@ -3298,20 +1863,6 @@ "lint": "clippy::let_underscore_must_use", "path": "src/sse/feed.rs" }, - { - "count": 1, - "fingerprint": "512a06dbe849c0dbd9d7806c871c90877537f72ee36cb14a9400383206d6f622", - "item": "crate::serve", - "lint": "clippy::let_underscore_must_use", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "e3c14913f8a45b4d11532c05831d3360fc4a7201bbb4be9ae19c09ecd5f1f42d", - "item": "crate::serve", - "lint": "clippy::let_underscore_must_use", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "886d9483a0bc959975ba2a8ded5f51066d40d817567cdaeae4d315171a08e51d", @@ -3319,55 +1870,6 @@ "lint": "clippy::let_underscore_must_use", "path": "src/sse/source.rs" }, - { - "count": 1, - "fingerprint": "137834f6fe95fc546b5385452dd2c65d199c35b095702506622a978243b4e94e", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::let_underscore_must_use", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "e813e58dc76b0d8dacc5ee1269019999cb3bd5359400c9333ccafdda3a8697bf", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::let_underscore_must_use", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "b6f6f1d5231cb405cba03de4dd9fe3771c01c91561ab05062e53199c80b67f57", - "item": "crate::drive_shutdown", - "lint": "clippy::let_underscore_must_use", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "2c081f6b7b6c7a95b3d5200429c04bb2ef3891bd456f08c3b91223c74591d9f3", - "item": "crate::begin_sealing_for_close", - "lint": "clippy::match_same_arms", - "path": "src/application/lifecycle.rs" - }, - { - "count": 1, - "fingerprint": "ede11c01c2cce57665b90ad067af4f52ef23c6570d0799286c0ec6e2c45e5fc6", - "item": "crate::prepare_execution", - "lint": "clippy::match_same_arms", - "path": "src/application/lifecycle.rs" - }, - { - "count": 1, - "fingerprint": "136ef7ae296df02b2a77784e50d83e7c002bfe06711eae3173c3a5eac15bda79", - "item": "crate::final_err_disposition", - "lint": "clippy::match_same_arms", - "path": "src/application/lifecycle/claims.rs" - }, - { - "count": 1, - "fingerprint": "37ee8bcadbf20e419e2ef2f53503959ec976561d8125cdbc014d5be236660047", - "item": "crate::Workload::attempt_with_deadline", - "lint": "clippy::match_same_arms", - "path": "src/dst/runtime.rs" - }, { "count": 1, "fingerprint": "37ad9fc70d48095f983c2413ff24b72a396c2c624e7b09f0c8db44bd9d459f63", @@ -3375,34 +1877,6 @@ "lint": "clippy::match_same_arms", "path": "src/shard/transaction/mod.rs" }, - { - "count": 1, - "fingerprint": "decd1e456a1fc9f0e78141ad423f798722c55e370eee478eff21e02f24f8534c", - "item": "crate::serve", - "lint": "clippy::match_same_arms", - "path": "src/sse/session.rs" - }, - { - "count": 1, - "fingerprint": "f59ccdfbec270a6aa037979049d7b83004be4e8d9687dd7b8ff41e531a055e13", - "item": "crate::delivery_messages", - "lint": "clippy::needless_pass_by_value", - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "e324a90671f2476662f4bbd7f2615af43fb6712f3c2a70f31c0f98535c66370a", - "item": "crate::TraceState::begin_operation", - "lint": "clippy::needless_pass_by_value", - "path": "src/dst/trace_store.rs" - }, - { - "count": 1, - "fingerprint": "f7a2a93715136528159aeddbbc6e1b44ca2ce5b150dfbef93d0027d3fe04043c", - "item": "crate::TraceState::begin_operation", - "lint": "clippy::needless_pass_by_value", - "path": "src/dst/trace_store.rs" - }, { "count": 1, "fingerprint": "eae5e7a122aca8fea003f07434179afc796c5deefe04bb2074f92f6776185fe3", @@ -3410,13 +1884,6 @@ "lint": "clippy::needless_pass_by_value", "path": "src/http/read.rs" }, - { - "count": 1, - "fingerprint": "5826a9e9a605f678ae967e60803368f8fa13d4a6bd4e7f8c0bd3fdc7d345ea96", - "item": "crate::RuntimeCaps::with", - "lint": "clippy::needless_pass_by_value", - "path": "src/runtime.rs" - }, { "count": 1, "fingerprint": "6ce788248f78d6875e88116f072d743e3c3a39023ea033fb6506a346554b2596", @@ -3438,13 +1905,6 @@ "lint": "clippy::option_option", "path": "src/product.rs" }, - { - "count": 1, - "fingerprint": "1547e2b7526251a95388930120b6c039a56fd151bcf9cd53cc4b87d2455d08a7", - "item": "crate::serve", - "lint": "clippy::redundant_clone", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "f84413aba6d5c4fecf2d44be51b89be799a1d64733301cf7d52fd495669d38e7", @@ -3452,13 +1912,6 @@ "lint": "clippy::redundant_clone", "path": "src/sse/session.rs" }, - { - "count": 1, - "fingerprint": "fea6f3b8a3b0fc5422e62cebb233e6a9d13500d827dca9029273d0840343a839", - "item": "crate::serve", - "lint": "clippy::redundant_clone", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "d397af65cb249cc1e8643233406c3e6e2ad6fe694f8ccd93d07dccf770b1eebf", @@ -3477,98 +1930,10 @@ { "count": 1, "fingerprint": "06a943a7466276f27ca9d7e9cb6a03cddae446e556320e91050279f857830476", - "item": "crate::complete", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/append/close.rs" - }, - { - "count": 1, - "fingerprint": "a004b85b47935b9f8c546e222edc941b08d4784438c1aed2d2755b99ee0b9c5a", - "item": "crate::ConsumerService::authorize", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/consumer.rs" - }, - { - "count": 1, - "fingerprint": "c8b385496a7807aef5914035668bdd01377b4a05f5c7e7a93327efaed2e7da4b", - "item": "crate::ConsumerService::sweep_local", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/consumer.rs" - }, - { - "count": 1, - "fingerprint": "1bd0e2bc2288549e5b89d45e9af7a2d38ff937974b05ac5dade623715872c625", - "item": "crate::delete", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/consumer/deletion.rs" - }, - { - "count": 1, - "fingerprint": "37e4bf3e42dd068c2f5512ee518e42ffe1048dad1f52b1f0aedc90a20c821eaa", - "item": "crate::foreign_segment_drained", - "lint": "clippy::too_many_arguments", - "metric": 7, - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "5d14e23eb255b375e0ebc226868542a3010e20ae174f95e5252c6aae52bfaf50", - "item": "crate::relay_queue_cursor", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/consumer_remote.rs" - }, - { - "count": 1, - "fingerprint": "c251d3416705b4538bf921d7ea669437310db46d1cd2b80ec16b2bae0af602a7", - "item": "crate::relay_sweep_segment", - "lint": "clippy::too_many_arguments", - "metric": 7, - "path": "src/application/consumer_remote.rs" - }, - { - "count": 1, - "fingerprint": "e5c5b995eea1c55603654eea93a399e9ebd26d09b3ec64ee683040fcd30cc0db", - "item": "crate::create_request_hash", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/creation.rs" - }, - { - "count": 1, - "fingerprint": "c34852f94b4bcefb8c68ef6a9101a3b477e52e7957f0cf6128adecf367e7e826", - "item": "crate::fresh_desc", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/creation.rs" - }, - { - "count": 1, - "fingerprint": "a3b4e0de159936b506a87bcb53a8a152b0da9fe9ece6bac69796ec68fd3032d4", - "item": "crate::seed", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/creation/initialization.rs" - }, - { - "count": 1, - "fingerprint": "d3d0264ce67de9341f1a28b304ed2be7d8238287e18bfc8640a9a9a6bd0a184d", - "item": "crate::ReadService::new", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "633e7fb955ab614ef74c7bf785b7643205da432351717f8bae73e651a48be2da", - "item": "crate::absorption_race", + "item": "crate::complete", "lint": "clippy::too_many_arguments", "metric": 6, - "path": "src/application/read.rs" + "path": "src/application/append/close.rs" }, { "count": 1, @@ -3610,14 +1975,6 @@ "metric": 7, "path": "src/application/read_scan.rs" }, - { - "count": 1, - "fingerprint": "74b37b2c10cb2b365cec70d2486b29b4bdad3a99a730d1e2170c7cf876734205", - "item": "crate::spawn_refresher", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/auth_feed.rs" - }, { "count": 1, "fingerprint": "d78673e2697852400b3478461536185bbbd433f88d3c03a5540bc44073fc36d1", @@ -3626,30 +1983,6 @@ "metric": 6, "path": "src/crypto/decrypt.rs" }, - { - "count": 1, - "fingerprint": "ce371c8a7f3ddb11e926091c9f2cc881492b5e945391e7dd663d82f58ae84aad", - "item": "crate::rig_opener", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/dst/tests/fixture_http.rs" - }, - { - "count": 1, - "fingerprint": "b68e3b0324edff5c87f77d331094194dac5d1b63fa01d0c7c2584a8918ea3d69", - "item": "crate::TraceState::begin_operation", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/dst/trace_store.rs" - }, - { - "count": 1, - "fingerprint": "d4b387794821cd2deaf5f4ca72f65c10a957163bad7c47326ce3491ba7f7460c", - "item": "crate::TraceState::observe", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/dst/trace_store.rs" - }, { "count": 1, "fingerprint": "d91f803c88dc8b85411a4e19588804f57e1008b361be7f5246671d7d35e81991", @@ -3754,14 +2087,6 @@ "metric": 7, "path": "src/product.rs" }, - { - "count": 1, - "fingerprint": "68829ee93b496db0d6c936a103ec07e54c3184c0ca0a86e925d6399af138d64b", - "item": "crate::QuotaRegistry::admit_append", - "lint": "clippy::too_many_arguments", - "metric": 6, - "path": "src/quota.rs" - }, { "count": 1, "fingerprint": "1c8e09a8608e3cec2e627b5a07348e803c3817db03602ce159ae69944f203682", @@ -3818,142 +2143,6 @@ "metric": 110, "path": "src/application/append/close.rs" }, - { - "count": 1, - "fingerprint": "eb9d5827b97abad3e0eecebc477d7999bdd1d8b2bcc6971401d60f868945c795", - "item": "crate::put", - "lint": "clippy::too_many_lines", - "metric": 143, - "path": "src/application/consumer.rs" - }, - { - "count": 1, - "fingerprint": "1c6913ca428c333ece9624cbccda5a9292d396656b0555350676dfc6b0bcbbfc", - "item": "crate::delete", - "lint": "clippy::too_many_lines", - "metric": 102, - "path": "src/application/consumer/deletion.rs" - }, - { - "count": 1, - "fingerprint": "68c3bbc636e54eb0d7a0b3046b27ba577775c395b0459146a40526a24538b0cb", - "item": "crate::resume_deletion", - "lint": "clippy::too_many_lines", - "metric": 108, - "path": "src/application/consumer/deletion.rs" - }, - { - "count": 1, - "fingerprint": "b02eeaa06ec37e4467a96fc72aeeab3ec46c2ecd6a56fa6a5bcef0293a22d1cd", - "item": "crate::dlq_and_settle", - "lint": "clippy::too_many_lines", - "metric": 117, - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "eff63a2b95e15d539627c196b8898f6818f6839e32a01634a269f0b325d75de7", - "item": "crate::pull", - "lint": "clippy::too_many_lines", - "metric": 176, - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "ab52472a99cb01a7e0cd3de1de4eb79d1eacb8b64dae9e0a31242cc7880e866b", - "item": "crate::settle", - "lint": "clippy::too_many_lines", - "metric": 169, - "path": "src/application/consumer/delivery.rs" - }, - { - "count": 1, - "fingerprint": "50b05bc1d369ffae99037c8e2c349c80aaf4faab5d9b90920d3425b83f476bb5", - "item": "crate::install", - "lint": "clippy::too_many_lines", - "metric": 133, - "path": "src/application/creation/anchor.rs" - }, - { - "count": 1, - "fingerprint": "fa83d718a1c91c2a37610d3f40cc61e45ee106ef5dff6386f84f5d31634d3d57", - "item": "crate::resolve", - "lint": "clippy::too_many_lines", - "metric": 133, - "path": "src/application/creation/claim.rs" - }, - { - "count": 1, - "fingerprint": "c89b878a58fc7d64767230e53a479b9cf1fdb06003587aa0fa72cb610e16e079", - "item": "crate::delete_lifecycle", - "lint": "clippy::too_many_lines", - "metric": 120, - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "9db6f5b359c24116ab99b69948a73662f8fcf683641e2dba09724364eadfea29", - "item": "crate::release_fork_ref", - "lint": "clippy::too_many_lines", - "metric": 108, - "path": "src/application/creation/deletion.rs" - }, - { - "count": 1, - "fingerprint": "1dac42c2def9beea11c272d9d65832db0638480e73b5ee8251b9a709ac859587", - "item": "crate::prepare", - "lint": "clippy::too_many_lines", - "metric": 124, - "path": "src/application/creation/fork.rs" - }, - { - "count": 1, - "fingerprint": "40b27f4264bc1f246e8ab117e877350614161c92de1552ba9f8500835720186d", - "item": "crate::validate_boundary", - "lint": "clippy::too_many_lines", - "metric": 110, - "path": "src/application/creation/fork.rs" - }, - { - "count": 1, - "fingerprint": "daeb36d3e3a8cc7674ea6e88b0ead58f9655b44576f270ff4e29b2903df33678", - "item": "crate::seed", - "lint": "clippy::too_many_lines", - "metric": 135, - "path": "src/application/creation/initialization.rs" - }, - { - "count": 1, - "fingerprint": "6d05999b63302ffaf9b27bc05561ad0b8d53ad922a918f1c2baa9c4ce37a9085", - "item": "crate::CreationService::create_product", - "lint": "clippy::too_many_lines", - "metric": 117, - "path": "src/application/creation/product.rs" - }, - { - "count": 1, - "fingerprint": "80c2fab589cc4b4bbae6c48312d3d72379194aa5681188357aa625561bc03190", - "item": "crate::execute_segment", - "lint": "clippy::too_many_lines", - "metric": 143, - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "356b6413e1a23f83718ecfe5cbb250a77811980fc145f8ac12fc71c175f4619b", - "item": "crate::Fp::site", - "lint": "clippy::too_many_lines", - "metric": 101, - "path": "src/failpoints.rs" - }, - { - "count": 1, - "fingerprint": "12a18c2763841ff3cfdc9ff1429be22eb1557191d507e7d805aae69c3b8ab3aa", - "item": "crate::start", - "lint": "clippy::too_many_lines", - "metric": 541, - "path": "src/fleet.rs" - }, { "count": 1, "fingerprint": "214887cac247a2556137e4149db01eca5acd0d4b77bdbb5e6c7962367557a67f", @@ -3962,14 +2151,6 @@ "metric": 123, "path": "src/fleet/repository/document_tests.rs" }, - { - "count": 1, - "fingerprint": "64ca907aa6f5007d541a9618d0c501e1924d6308d617e5562b56ff0fab1d68b1", - "item": "crate::active_absorber_cancel", - "lint": "clippy::too_many_lines", - "metric": 179, - "path": "src/history/controller_tests.rs" - }, { "count": 1, "fingerprint": "c73584523522a3762b0bcdd1dfd03bdea4d1afce1bb1c36bb3fd847421c42a62", @@ -4010,22 +2191,6 @@ "metric": 110, "path": "src/http.rs" }, - { - "count": 1, - "fingerprint": "bd24c3550d04b1b71ea06978774f17a053727aecbe8096bb293c1663e7f41866", - "item": "crate::PostingsCache::install_chunk", - "lint": "clippy::too_many_lines", - "metric": 159, - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "4f62aed58587a974442a2f6324930c8d77d8e99f2b9c078cb1b6aaf4229cd9fb", - "item": "crate::PostingsCache::runs_for", - "lint": "clippy::too_many_lines", - "metric": 162, - "path": "src/postings_cache.rs" - }, { "count": 1, "fingerprint": "f5378450433727efbfa596667bc8253f5e57d6939262c2597982ccacc508068b", @@ -4154,14 +2319,6 @@ "metric": 129, "path": "src/sse/feed.rs" }, - { - "count": 1, - "fingerprint": "2137c3c953cb295c7df70604ce9004490e65bd94165e089321e387d56a32ddd4", - "item": "crate::serve", - "lint": "clippy::too_many_lines", - "metric": 497, - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "66f57ea6b4bdc50aa663e8802e084282c8ca87ece4fd4fce486b75a40700051f", @@ -4186,13 +2343,6 @@ "metric": 128, "path": "src/sse/source.rs" }, - { - "count": 1, - "fingerprint": "dcb603471750f1dc05803d2425a4d7fd7dc30846681e686f97de24e2347e9a6b", - "item": "crate::reg::M", - "lint": "clippy::type_complexity", - "path": "src/failpoints.rs" - }, { "count": 1, "fingerprint": "954fe0bf97703429fbbb66fe42a4d63ccdad7d0f630fff9765de39c4fc0ca96f", @@ -4221,13 +2371,6 @@ "lint": "clippy::type_complexity", "path": "src/sse/source.rs" }, - { - "count": 1, - "fingerprint": "4f84b1f903baebf6f998640334f0b737e373d4c1c9e09b84f54a8614ce03e189", - "item": "crate::livefeed_remote_sealed_predecessor_streams_through_owner", - "lint": "clippy::unnecessary_to_owned", - "path": "src/dst/tests/livefeed_history.rs" - }, { "count": 1, "fingerprint": "f3fd81128a33528e5268d68bb42f43a116a7166d7780ad3948147a3e984b6ca4", @@ -4235,13 +2378,6 @@ "lint": "clippy::unnecessary_wraps", "path": "src/registry.rs" }, - { - "count": 1, - "fingerprint": "774188d62e2c1dfab6c5ff389c7639b157671e13df6de05c1134d17ca665ec21", - "item": "crate::mix", - "lint": "clippy::unusual_byte_groupings", - "path": "src/dst/fault_store.rs" - }, { "count": 1, "fingerprint": "ff7731d0845c383fbf80de4bd214d4197d2e99952e8a1d74d8aeda228bb22727", @@ -4256,41 +2392,6 @@ "lint": "clippy::unwrap_used", "path": "src/application/append/contract.rs" }, - { - "count": 1, - "fingerprint": "e0390ed8d951a6dce9f7f6ee0777469c41c75af09930b2e22cf955c848755b9f", - "item": "crate::ConsumerService::queue_position", - "lint": "clippy::unwrap_used", - "path": "src/application/consumer.rs" - }, - { - "count": 1, - "fingerprint": "16ab9594855c427f4a65dfe38ea3629bd53a6ee4391a6dd8362f320c722b0551", - "item": "crate::validate_boundary", - "lint": "clippy::unwrap_used", - "path": "src/application/creation/fork.rs" - }, - { - "count": 1, - "fingerprint": "34a919c9b9e5cf280c9bf56bd2747b29062a42d307d5809f4cd67691660b3b6b", - "item": "crate::seed", - "lint": "clippy::unwrap_used", - "path": "src/application/creation/initialization.rs" - }, - { - "count": 1, - "fingerprint": "64ffd9e77598203d0f3ca8a1fff6754fe9c94d177853345b9d1a9f76c754ffbe", - "item": "crate::execute_segment", - "lint": "clippy::unwrap_used", - "path": "src/application/read.rs" - }, - { - "count": 1, - "fingerprint": "67efc16f663ea2fb945a6db2e5f6759e664f104e222bf9fdecc630b8fcbadb51", - "item": "crate::read_stitched", - "lint": "clippy::unwrap_used", - "path": "src/application/read.rs" - }, { "count": 1, "fingerprint": "f2214df93dd43613446ec659a2de14e255cf22a69cb8c3a7f2a067986c2b570f", @@ -4298,62 +2399,6 @@ "lint": "clippy::unwrap_used", "path": "src/application/read_scan.rs" }, - { - "count": 1, - "fingerprint": "6014b1aa6add876df5db2da816491f9050257ec26f0e50d0c4fe0687ad9ef730", - "item": "crate:: as Drop>::drop", - "lint": "clippy::unwrap_used", - "path": "src/audit.rs" - }, - { - "count": 1, - "fingerprint": "9375a6112a76aabe637ef8b03563c63dd562d03156db08619f4980b6acad2452", - "item": "crate::PendingAudit < 'a >::take", - "lint": "clippy::unwrap_used", - "path": "src/audit.rs" - }, - { - "count": 1, - "fingerprint": "dc39e1a52100a6faeac2f8acd2d170bdae29f475b95273a40e6893ccc15330b9", - "item": "crate::observe_denial", - "lint": "clippy::unwrap_used", - "path": "src/audit.rs" - }, - { - "count": 1, - "fingerprint": "cc28b723168aad66f2e97760c083e4524a0958416041699da43b583b9249713a", - "item": "crate::latency", - "lint": "clippy::unwrap_used", - "path": "src/bin/verify.rs" - }, - { - "count": 1, - "fingerprint": "fded73500a08aae4e9eeda1645dfc83b6064d6dd544c5c25b969b3d496d5a0e9", - "item": "crate::latency", - "lint": "clippy::unwrap_used", - "path": "src/bin/verify.rs" - }, - { - "count": 1, - "fingerprint": "730010c152b1433ddceb819a81576c406ec6290c180b78d381ba4d18eaefd040", - "item": "crate::start", - "lint": "clippy::unwrap_used", - "path": "src/fleet.rs" - }, - { - "count": 2, - "fingerprint": "959ff60f565e7bbec729df35be2d3ae8adbdcc0c6d1c78d8d0ebb04497a5f3e3", - "item": "crate::start", - "lint": "clippy::unwrap_used", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "a65af3e91358948160e80c4e79ba5ffd720eccf745d8b7cfbfed46cf3370f4c4", - "item": "crate::start", - "lint": "clippy::unwrap_used", - "path": "src/fleet.rs" - }, { "count": 1, "fingerprint": "4cf780f4e1cc935f33696f5f0a6283d0ae302c87f4fea11186d6929c637b6658", @@ -4676,13 +2721,6 @@ "lint": "clippy::unwrap_used", "path": "src/sse/registry.rs" }, - { - "count": 1, - "fingerprint": "bbeb8e923ea2ee7bd8b5794620614dc22e7c94d6aff8ec3941a2bfd5febdcade", - "item": "crate::response_from_stream", - "lint": "clippy::unwrap_used", - "path": "src/sse/session.rs" - }, { "count": 1, "fingerprint": "47ef3e4da68eee0609dc78313dca45277aff6344fb5415e5aa7dcf852d7cf572", @@ -4732,69 +2770,6 @@ "lint": "clippy::unwrap_used", "path": "src/sse/source.rs" }, - { - "count": 1, - "fingerprint": "20c3acc01822fdb78e771b898502ed53a4206d8bb8db2b34fc65d4d87163276d", - "item": "crate::TaskSupervisor::incomplete_shutdown_failure", - "lint": "clippy::unwrap_used", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "30d712b2122b4fdd8fa362a2b13f07760ec21ed80f928b8815a3876baf9b970e", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::unwrap_used", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "60a71a130702a263dcad0e099f43d7e96f5776f921eb44db9d1dca33fc9f6a6b", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::unwrap_used", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "b5bdd9f0c8a87be648b57157e2b40459ec06e20daa6719790c0abd11fd068ab0", - "item": "crate::TaskSupervisor::launch_shutdown", - "lint": "clippy::unwrap_used", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "ab5f6ab54d91cc0ea9ec9ab1ac608bb6bdf6857e84d599ebcc8c4a9374924207", - "item": "crate::TaskSupervisor::observe_shutdown", - "lint": "clippy::unwrap_used", - "path": "src/tasks/shutdown.rs" - }, - { - "count": 1, - "fingerprint": "b4c250e6670d01ae4792c586b20aef709d7b0665efc273d220a4caa8fd6b9cb3", - "item": "crate::TouchJournal::flush_bucket", - "lint": "clippy::unwrap_used", - "path": "src/touch.rs" - }, - { - "count": 1, - "fingerprint": "a7fae912a54e5fc1a2fd6fe904321b47d2a27fc4b93605dc0fd42722faea1edb", - "item": "crate::TouchJournal::ingest", - "lint": "clippy::unwrap_used", - "path": "src/touch.rs" - }, - { - "count": 1, - "fingerprint": "2c355b4eacb4c6bb50690d1dac2e09669bbed828167f3c16ff07a2a00c2024c9", - "item": "crate::TouchRegistry::close_shard", - "lint": "clippy::unwrap_used", - "path": "src/touch.rs" - }, - { - "count": 1, - "fingerprint": "79bf708a68180b65b78fb4b5de7c69048961f330cf30f057b3f782cac8932941", - "item": "crate::TouchRegistry::journal", - "lint": "clippy::unwrap_used", - "path": "src/touch.rs" - }, { "count": 1, "fingerprint": "2047871277f8d0a05956c4e1cb344f06202a24b6f24cdfa44c02003dd37efc98", @@ -4830,13 +2805,6 @@ "lint": "unreachable_pub", "path": "src/application/read_keys.rs" }, - { - "count": 1, - "fingerprint": "4e88cb6514e617e1c971f3f310f8fa373479b64549b29331bfbbc294b88569cb", - "item": "crate::spawn_refresher", - "lint": "unreachable_pub", - "path": "src/auth_feed.rs" - }, { "count": 1, "fingerprint": "86b45b21b38060107772bcbbe6d6d8321bc97e6f55ace1e028bc4c9933dde421", @@ -4844,34 +2812,6 @@ "lint": "unreachable_pub", "path": "src/bootstrap.rs" }, - { - "count": 1, - "fingerprint": "6ca31a8ab2daa6134a18669c50ca283247b46bcd9efc9a73d74cbc16d2f0fa5e", - "item": "crate::TraceStore::with_options", - "lint": "unreachable_pub", - "path": "src/dst/trace_store.rs" - }, - { - "count": 1, - "fingerprint": "9554e7d8e300567e64cd59df2571adaccca65e294d297e0dc3ae8116a5af864a", - "item": "crate::Fp::site", - "lint": "unreachable_pub", - "path": "src/failpoints.rs" - }, - { - "count": 1, - "fingerprint": "ffa2489531b69a28379bccc8278747181e096c43162692ea2da4e8c3a1d1cf9c", - "item": "crate::return_home_allowed", - "lint": "unreachable_pub", - "path": "src/fleet.rs" - }, - { - "count": 1, - "fingerprint": "ad907f25e85f19eaa3dd025e471f21d74241f3fc26097b184fce8f7bf1d028b1", - "item": "crate::start", - "lint": "unreachable_pub", - "path": "src/fleet.rs" - }, { "count": 1, "fingerprint": "d91fa00511a45a2bbe81098aaedd53117257c5fdaf21b07c035c38750757e1a4", @@ -4879,20 +2819,6 @@ "lint": "unreachable_pub", "path": "src/http.rs" }, - { - "count": 1, - "fingerprint": "29c0649b53152c989e6cce54f8ff7429712f981515f1a7f8a0bb7cf0f81b25b7", - "item": "crate::PostingsCache::install_chunk", - "lint": "unreachable_pub", - "path": "src/postings_cache.rs" - }, - { - "count": 1, - "fingerprint": "cdef6075904a49d749b5537324284772b22a038225271e402fac5d701f1a87a3", - "item": "crate::PostingsCache::runs_for", - "lint": "unreachable_pub", - "path": "src/postings_cache.rs" - }, { "count": 1, "fingerprint": "2cc4727e49d4e69d488b184fac42dcec24c8b38b9e3e5d041421d83d92f24a7f", @@ -4907,13 +2833,6 @@ "lint": "unreachable_pub", "path": "src/product.rs" }, - { - "count": 1, - "fingerprint": "6487b3fbddd2c3343d03313756888a3276394c4cfb7c47863403ff72fd1df099", - "item": "crate::QuotaRegistry::admit_append", - "lint": "unreachable_pub", - "path": "src/quota.rs" - }, { "count": 1, "fingerprint": "f6269145e7da12ea84288ac84f204a1635a1bc7f8391b9117d01097252cfd7d8", @@ -4942,13 +2861,6 @@ "lint": "unreachable_pub", "path": "src/registry.rs" }, - { - "count": 1, - "fingerprint": "267171222ab33983f7c4565129274bd6a6b36290c6126ea4b8a6d5f816e484ef", - "item": "crate::RuntimeCaps::with", - "lint": "unreachable_pub", - "path": "src/runtime.rs" - }, { "count": 1, "fingerprint": "4a034c08934265d15e51ea98686e48bde353a689522b69fa1ac6c093effa7883", diff --git a/docs/quality/owners.json b/docs/quality/owners.json index a9f80e5f..33fc8ed5 100644 --- a/docs/quality/owners.json +++ b/docs/quality/owners.json @@ -1815,6 +1815,86 @@ "path": "src/postings.rs", "reason": "Postings codec and span planner tests; compile beside the same private codec in the server, fuzz and invariant harness crates so the owner stays within the file-size limit; no copied codec or public test API.", "syntax": "path = \"postings/tests.rs\"" + }, + { + "category": "effect", + "count": 1, + "owner": "crate::TouchJournal::start", + "path": "src/touch.rs", + "reason": "Per-stream touch flusher started under the journal map lock and ended by the journal's own close; no supervisor is reachable at creation and the task owns nothing beyond its journal.", + "syntax": "tokio::spawn" + }, + { + "category": "effect", + "count": 1, + "owner": "crate::TaskSupervisor::launch_shutdown", + "path": "src/tasks/shutdown.rs", + "reason": "The one shutdown driver: it joins the supervised set and publishes the report every observer waits on, so it cannot itself be supervised.", + "syntax": "tokio::spawn" + }, + { + "category": "effect", + "count": 1, + "owner": "crate::main", + "path": "src/main.rs", + "reason": "Process entry reads the Tokio worker floor once before the runtime exists; no service configuration or credentials are inferred.", + "syntax": "std::env::var" + }, + { + "category": "global", + "count": 1, + "owner": "crate::reg::M", + "path": "src/failpoints.rs", + "reason": "The DST failpoint registry: one process-wide lazily initialised map keyed by point and stream name, armed and read only by the DST program; a per-runtime copy would let a parked point outlive the runtime that armed it.", + "syntax": "std :: sync :: OnceLock < Registry >" + }, + { + "category": "effect", + "count": 1, + "owner": "crate::reset_refuses_while_in_flight", + "path": "src/dst/trace_store_tests/streams.rs", + "reason": "Trace-store regression leaks one abandoned list stream on purpose so its lifetime guard never runs and reset must refuse; nothing else escapes the test.", + "syntax": "std::mem::forget" + }, + { + "category": "unresolved-glob", + "count": 1, + "owner": "crate", + "path": "src/fleet/tests.rs", + "reason": "Fleet test module imports its enclosing production owner; the compiler resolves the parent exports and the fixtures pin peer choice, the return-home budget and victim selection.", + "syntax": "compiler-resolved import; syntax cannot infer exports" + }, + { + "category": "unresolved-glob", + "count": 1, + "owner": "crate", + "path": "src/sse/session/tests.rs", + "reason": "SSE session test module imports its enclosing production owner; the compiler resolves the parent exports and the fixtures pin cursor and segment naming.", + "syntax": "compiler-resolved import; syntax cannot infer exports" + }, + { + "category": "unresolved-glob", + "count": 1, + "owner": "crate", + "path": "src/tenant/tests.rs", + "reason": "Tenant test module imports its enclosing production owner; the compiler resolves the parent exports and the fixtures pin the identity grammar.", + "syntax": "compiler-resolved import; syntax cannot infer exports" + }, + { + "category": "by-path-module", + "count": 1, + "owner": "crate::tests", + "path": "src/tenant.rs", + "reason": "Tenant grammar tests; declared by path because the fuzz and invariant harness crates compile the tenant module by path; no copied grammar or public test API.", + "syntax": "path = \"tenant/tests.rs\"" + }, + { + "category": "effect", + "count": 1, + "owner": "crate::serve", + "path": "src/sse/session.rs", + "reason": "The SSE driver task is owned by the subscription it drives and ends with the session; a supervised driver would tie a request-scoped task to the runtime supervisor.", + "syntax": "tokio::spawn" } ] } diff --git a/docs/quality/source-allowances.json b/docs/quality/source-allowances.json index 936f6d92..b74c2129 100644 --- a/docs/quality/source-allowances.json +++ b/docs/quality/source-allowances.json @@ -1554,62 +1554,6 @@ "path": "bench/awsbench/src/main.rs", "syntax": "allow (unreachable_code)" }, - { - "category": "exception", - "count": 1, - "owner": "crate::dlq_and_settle", - "path": "src/application/consumer/delivery.rs", - "syntax": "allow (clippy :: too_many_arguments)" - }, - { - "category": "exception", - "count": 1, - "owner": "crate::ReadPlan < 'a >::segment", - "path": "src/application/read.rs", - "syntax": "allow (clippy :: too_many_arguments)" - }, - { - "category": "exception", - "count": 1, - "owner": "crate::TEST_ASSERT_KEYED_DENSE", - "path": "src/application/read.rs", - "syntax": "allow (clippy :: too_many_arguments)" - }, - { - "category": "exception", - "count": 1, - "owner": "crate::read_merged", - "path": "src/application/read.rs", - "syntax": "allow (clippy :: too_many_arguments)" - }, - { - "category": "exception", - "count": 1, - "owner": "crate::read_stitched", - "path": "src/application/read.rs", - "syntax": "allow (clippy :: too_many_arguments)" - }, - { - "category": "exception", - "count": 1, - "owner": "crate::WALK_CLOSE_SUBMITS_SNAPSHOT", - "path": "src/dst/tests/runtime_sweep.rs", - "syntax": "allow (non_snake_case)" - }, - { - "category": "exception", - "count": 1, - "owner": "crate::TraceState::event", - "path": "src/dst/trace_store.rs", - "syntax": "allow (clippy :: too_many_arguments)" - }, - { - "category": "exception", - "count": 1, - "owner": "crate::read", - "path": "src/history/canonical_span.rs", - "syntax": "allow (clippy :: too_many_arguments)" - }, { "category": "exception", "count": 1, @@ -1729,20 +1673,6 @@ "path": "src/product.rs", "syntax": "allow (clippy :: result_large_err , reason = \"transport boundary returns Axum wire response directly; application errors stay compact\")" }, - { - "category": "exception", - "count": 1, - "owner": "crate", - "path": "src/project_policy.rs", - "syntax": "allow (dead_code)" - }, - { - "category": "exception", - "count": 1, - "owner": "crate::serve", - "path": "src/sse/session.rs", - "syntax": "allow (clippy :: too_many_arguments)" - }, { "category": "exception", "count": 1, @@ -1988,13 +1918,6 @@ "path": "src/failpoints.rs", "syntax": "std :: sync :: OnceLock < tokio :: sync :: Notify >" }, - { - "category": "global", - "count": 1, - "owner": "crate::reg::M", - "path": "src/failpoints.rs", - "syntax": "std :: sync :: OnceLock < Mutex < HashMap < (Fp , String) , FpState > > >" - }, { "category": "global", "count": 1, @@ -3773,13 +3696,6 @@ "path": "src/deployment_bearer.rs", "syntax": "compiler-resolved import; syntax cannot infer exports" }, - { - "category": "unresolved-glob", - "count": 1, - "owner": "crate::tests", - "path": "src/fleet.rs", - "syntax": "compiler-resolved import; syntax cannot infer exports" - }, { "category": "unresolved-glob", "count": 1, @@ -4151,13 +4067,6 @@ "path": "src/sse/service.rs", "syntax": "compiler-resolved import; syntax cannot infer exports" }, - { - "category": "unresolved-glob", - "count": 1, - "owner": "crate::tests", - "path": "src/sse/session.rs", - "syntax": "compiler-resolved import; syntax cannot infer exports" - }, { "category": "unresolved-glob", "count": 1, @@ -4186,13 +4095,6 @@ "path": "src/telemetry_batch.rs", "syntax": "compiler-resolved import; syntax cannot infer exports" }, - { - "category": "unresolved-glob", - "count": 1, - "owner": "crate::tests", - "path": "src/tenant.rs", - "syntax": "compiler-resolved import; syntax cannot infer exports" - }, { "category": "unresolved-glob", "count": 1, diff --git a/docs/refactor/test-inventory.json b/docs/refactor/test-inventory.json index f55f8539..9298ee46 100644 --- a/docs/refactor/test-inventory.json +++ b/docs/refactor/test-inventory.json @@ -2160,7 +2160,7 @@ "attributes": [ "#[tokio::test(flavor = \"current_thread\", start_paused = true)]" ], - "function_sha256": "ebd8cf2db4bf1a26a03716d8da99e98671cb514d9f8298a69702f50987631166", + "function_sha256": "c19966727f38f37212c94748fdbc1737679222c79fa8a2810079c4740890a7c9", "mechanisms": [ "STORE_LATENCY" ], @@ -2811,7 +2811,7 @@ "attributes": [ "#[tokio::test(flavor = \"multi_thread\", worker_threads = 4)]" ], - "function_sha256": "6a83c50969fe771c13aa8f46f7fbbd163ebcf3a12191a9a8c96cd5797ede4a0e", + "function_sha256": "b81632e4d007350aa2784b7a0aa34f3358a943f4102aa5d84e63220658d12f78", "mechanisms": [], "configuration": [], "file": "src/dst/tests/livefeed_history.rs", @@ -4743,18 +4743,6 @@ "file": "src/dst/trace_store_tests/streams.rs", "scenarios": [] }, - { - "name": "reset_refuses_while_in_flight", - "attributes": [ - "#[tokio::test]", - "#[should_panic(expected = \"while operations are active\")]" - ], - "function_sha256": "8dbca7724f55e7f2f2d9c3a7fdad5701e038a944e2bdd39d259839d152c0ce70", - "mechanisms": [], - "configuration": [], - "file": "src/dst/trace_store_tests/streams.rs", - "scenarios": [] - }, { "name": "restart_invalidates_process_local_touch_cursors", "attributes": [ @@ -5535,7 +5523,7 @@ "attributes": [ "#[tokio::test(flavor = \"multi_thread\", worker_threads = 4)]" ], - "function_sha256": "a546f8f58f27f9b678a3b98253c10f7b695e3f7f36ed75f9e2772ae8ee0d0007", + "function_sha256": "db24635d68ea5f36ee93262da9a9e3df35767a2f5e3245972145871d0dfecfad", "mechanisms": [], "configuration": [ "let store = FaultStore::uniform(inner.clone(), 103, FaultPlan::new(0, 0, 0));" diff --git a/examples/readertest.rs b/examples/readertest.rs index bd05a460..eaaf4bcc 100644 --- a/examples/readertest.rs +++ b/examples/readertest.rs @@ -52,6 +52,10 @@ impl slatedb::BlockTransformer for TestTransformer { clippy::disallowed_methods, reason = "main; the example reads its one path argument from the process environment; routing it through the server's configuration would couple an example to the runtime" )] +#[expect( + clippy::excessive_nesting, + reason = "main; the example nests the scan loop inside the per-range task it times; flattening it would separate the count from the range it measures" +)] async fn main() -> anyhow::Result<()> { let path = std::env::args() .nth(1) diff --git a/scripts/quality/mutations.sh b/scripts/quality/mutations.sh index 245216d4..4860a8f3 100755 --- a/scripts/quality/mutations.sh +++ b/scripts/quality/mutations.sh @@ -16,7 +16,7 @@ BASE=$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["merge_ba git diff --no-ext-diff --binary --src-prefix="a/$PREFIX" --dst-prefix="b/$PREFIX" "$BASE" -- > "$QUALITY_MUTANTS_OUT/harness-pr.diff" TOTAL=0 REGISTERED=(src/bin/pilot/benchmark.rs src/bin/pilot/benchmark/config.rs src/bin/pilot/benchmark/window.rs src/bin/pilot/generator.rs src/bin/pilot/generator/membership.rs) -for owner in postings_codec postings batch retained quota cursors queue rollup_allocation rollup_storage tasks touch read_accumulator read_spool shard_directory history_partition ops scaler postings_cache sharddir crypto tail_ring shard bootstrap read_request http_read queue_cleanup transaction_append record; do +for owner in postings_codec postings batch retained quota cursors queue rollup_allocation rollup_storage tasks touch read_accumulator read_spool shard_directory history_partition ops scaler postings_cache sharddir crypto tail_ring shard bootstrap read_request http_read queue_cleanup transaction_append record tasks_shutdown runtime runtime_telemetry product_cursor quota_registry fleet sse_session; do case "$owner" in postings_codec) file=src/postings.rs; filter=postings:: ;; postings) file=src/postings/validated.rs; filter=postings:: ;; @@ -41,6 +41,13 @@ for owner in postings_codec postings batch retained quota cursors queue rollup_a queue_cleanup) file=src/shard/transaction/queue/cleanup.rs; filter=shard:: ;; transaction_append) file=src/shard/transaction/append.rs; filter=shard:: ;; record) file=src/shard/record.rs; filter=shard:: ;; + fleet) file=src/fleet.rs; filter=fleet:: ;; + sse_session) file=src/sse/session.rs; filter="sse:: dst_tests::sse_delivery:: dst_tests::livefeed_swap::" ;; + tasks_shutdown) file=src/tasks/shutdown.rs; filter=tasks:: ;; + runtime) file=src/runtime.rs; filter=runtime:: ;; + runtime_telemetry) file=src/runtime/telemetry.rs; filter=runtime:: ;; + product_cursor) file=src/product_cursor.rs; filter=product_cursor:: ;; + quota_registry) file=src/quota.rs; filter=quota:: ;; postings_cache) file=src/postings_cache.rs; filter=postings_cache:: ;; sharddir) file=src/sharddir.rs; filter=sharddir:: ;; crypto) file=src/crypto.rs; filter=crypto:: ;; @@ -55,7 +62,7 @@ for owner in postings_codec postings batch retained quota cursors queue rollup_a package=streams-quality-invariants mutation_file="$PREFIX$file" mutation_diff="$QUALITY_MUTANTS_OUT/harness-pr.diff" - if [[ "$owner" == tasks || "$owner" == touch || "$owner" == read_accumulator || "$owner" == read_spool || "$owner" == shard_directory || "$owner" == history_partition || "$owner" == ops || "$owner" == scaler || "$owner" == postings_cache || "$owner" == sharddir || "$owner" == crypto || "$owner" == tail_ring || "$owner" == shard || "$owner" == bootstrap || "$owner" == read_request || "$owner" == http_read || "$owner" == queue_cleanup || "$owner" == transaction_append || "$owner" == record ]]; then + if [[ "$owner" == tasks || "$owner" == touch || "$owner" == read_accumulator || "$owner" == read_spool || "$owner" == shard_directory || "$owner" == history_partition || "$owner" == ops || "$owner" == scaler || "$owner" == postings_cache || "$owner" == sharddir || "$owner" == crypto || "$owner" == tail_ring || "$owner" == shard || "$owner" == bootstrap || "$owner" == read_request || "$owner" == http_read || "$owner" == queue_cleanup || "$owner" == transaction_append || "$owner" == record || "$owner" == tasks_shutdown || "$owner" == runtime || "$owner" == runtime_telemetry || "$owner" == product_cursor || "$owner" == quota_registry || "$owner" == fleet || "$owner" == sse_session ]]; then # These owners use actual service clocks, task handles and storage types. # Keep their code and tests in the service crate without substitute models. package=streams-slate diff --git a/src/application/consumer.rs b/src/application/consumer.rs index 09c7e2af..4da27524 100644 --- a/src/application/consumer.rs +++ b/src/application/consumer.rs @@ -154,6 +154,10 @@ pub(crate) struct AuthorizedConsumerContext { record: crate::queue::ConsumerRecord, } impl ConsumerService { + #[expect( + clippy::too_many_arguments, + reason = "ConsumerService::authorize; authorization takes the tenant, stream, consumer and credential parts separately as the handler parsed them; a request struct would exist only for this signature" + )] pub(crate) async fn authorize( self: &Arc, sref: &crate::tenant::TenantStreamRef, @@ -439,6 +443,10 @@ async fn load_consumer_record( } } +#[expect( + clippy::too_many_lines, + reason = "put; the consumer put validates the configuration, decides create-versus-update and publishes the record in one conditional-write sequence; splitting it would separate the validation from the write it guards" +)] pub(crate) async fn put( context: AuthorizedStreamContext, doc: ConfigInput, @@ -647,6 +655,10 @@ pub(crate) struct QueuePosition { } /// Internal callers provide the incarnation-bound target only after fleet authorization. impl ConsumerService { + #[expect( + clippy::too_many_arguments, + reason = "ConsumerService::sweep_local; the local sweep takes the descriptor, segment, consumer and generation parts separately as the sweep resolved them; a sweep struct would exist only for this signature" + )] pub(crate) async fn sweep_local( &self, target: InternalTarget, @@ -698,6 +710,10 @@ impl ConsumerService { } } } + #[expect( + clippy::unwrap_used, + reason = "ConsumerService::queue_position; a poisoned stream state may hold a half-advanced durable frontier; recovering it could report a queue position past a length never made durable" + )] pub(crate) async fn queue_position( &self, target: InternalTarget, diff --git a/src/application/consumer/deletion.rs b/src/application/consumer/deletion.rs index 739bbbf0..0713dcd1 100644 --- a/src/application/consumer/deletion.rs +++ b/src/application/consumer/deletion.rs @@ -9,6 +9,14 @@ use crate::application::consumer_remote::relay_sweep_segment; use crate::application::read_remote::InternalTarget; use std::sync::Arc; +#[expect( + clippy::too_many_arguments, + reason = "delete; consumer deletion takes the tenant, stream, consumer, generation and fencing parts separately as the handler resolved them; a delete struct would exist only for this signature" +)] +#[expect( + clippy::too_many_lines, + reason = "delete; the fence, the tombstone and the per-segment cleanup are one deletion whose resumption depends on which step landed; splitting them would separate the steps from the resumption they order" +)] pub(crate) async fn delete( state: Arc, sref: crate::tenant::TenantStreamRef, @@ -160,6 +168,10 @@ pub(crate) async fn delete( }) } +#[expect( + clippy::too_many_lines, + reason = "resume_deletion; resumption replays the per-segment cleanup a fenced deletion left behind in the order the debt records; splitting it would separate the steps from the debt that orders them" +)] async fn resume_deletion( context: AuthorizedDeletionContext, ) -> Result { diff --git a/src/application/consumer/delivery.rs b/src/application/consumer/delivery.rs index 26f27ee6..ba419b92 100644 --- a/src/application/consumer/delivery.rs +++ b/src/application/consumer/delivery.rs @@ -11,6 +11,14 @@ use bytes::Bytes; use serde_json::json; use std::sync::Arc; +#[expect( + clippy::too_many_lines, + reason = "pull; the pull walks the lineage oldest-first and each segment's skip, stop and deliver verdicts depend on the walk so far; splitting it would separate the verdicts from the walk that orders them" +)] +#[expect( + clippy::excessive_nesting, + reason = "pull; the walk nests each foreign segment's drain probe and each sealed segment's cursor check inside the lineage loop; flattening it would separate the skip from the segment it skips" +)] pub(crate) async fn pull( context: AuthorizedConsumerContext, doc: PullInput, @@ -210,6 +218,10 @@ pub(crate) async fn pull( } } +#[expect( + clippy::too_many_arguments, + reason = "foreign_segment_drained; the probe takes the descriptor, segment, consumer, generation, sealed end and owner separately as the walk resolved them; a probe struct would exist only for this signature" +)] async fn foreign_segment_drained( state: &Arc, desc: &StreamDesc, @@ -238,6 +250,7 @@ async fn foreign_segment_drained( /// Encode only leases granted by the committer, with the same key, stream /// epoch, segment and consumer generation used for the durable Receive. +#[derive(Clone, Copy)] struct MessageContext<'a> { desc: &'a StreamDesc, key: &'a crate::crypto::StreamKey, @@ -393,6 +406,10 @@ async fn read_coverage( }) } +#[expect( + clippy::too_many_lines, + reason = "settle; settlement decides the acknowledged, released, dead-lettered and expired outcomes against one durable Receive; splitting it would separate the outcomes from the leases they settle" +)] pub(crate) async fn settle( context: AuthorizedConsumerContext, doc: SettleInput, @@ -573,7 +590,18 @@ pub(crate) async fn settle( } // Preserve the explicit source incarnation and one bounded poisoned segment. -#[allow(clippy::too_many_arguments)] +#[expect( + clippy::too_many_arguments, + reason = "dlq_and_settle; the dead-letter path takes the stream, consumer, key, epoch, identity, route and segment separately as settlement resolved them; a context struct would exist only for this signature" +)] +#[expect( + clippy::too_many_lines, + reason = "dlq_and_settle; the dead-letter appends and the settlement of the poisoned leases are one bounded sequence over the same leases; splitting it would separate the appends from the leases they release" +)] +#[expect( + clippy::expect_used, + reason = "dlq_and_settle; the dead-letter target's incarnation was checked before any message is appended; a second fallible read would add a branch no configured target reaches" +)] async fn dlq_and_settle( state: &Arc, desc: &StreamDesc, @@ -676,12 +704,14 @@ async fn dlq_and_settle( ts_hint_ms: None, key_version: 0, }; - if let Err(error) = state.append.execute(command).await { - if error.definitively_rejected() { + match state.append.execute(command).await { + Ok(_) => {} + Err(error) if error.definitively_rejected() => { blocked += 1; tracing::warn!(stream=%desc.name,consumer=%cname,dead_letter_stream=%dlq,error=%error,"dead-letter delivery refused; source lease retained"); + continue; } - continue; + Err(_) => continue, } } let engine = match state.engine_for(&route).await { diff --git a/src/application/consumer_remote.rs b/src/application/consumer_remote.rs index 7c6c0aa7..fa339250 100644 --- a/src/application/consumer_remote.rs +++ b/src/application/consumer_remote.rs @@ -4,6 +4,14 @@ use crate::application::read_remote::InternalTarget; use serde_json::json; use std::sync::Arc; +#[expect( + clippy::too_many_arguments, + reason = "relay_queue_cursor; the relay takes the owner, stream, consumer, generation and segment parts separately as the pull resolved them; a relay struct would exist only for this signature" +)] +#[expect( + clippy::expect_used, + reason = "relay_queue_cursor; a fleet GET request carries no streaming body, so it is clonable; a fallible clone would add a branch no fleet request reaches" +)] pub(super) async fn relay_queue_cursor( state: &Arc, base: &str, @@ -37,6 +45,14 @@ pub(super) async fn relay_queue_cursor( Some((v["cursor"].as_u64()?, v["tail"].as_u64()?)) } +#[expect( + clippy::too_many_arguments, + reason = "relay_sweep_segment; the relay takes the owner, stream, consumer, generation and segment parts separately as the sweep resolved them; a relay struct would exist only for this signature" +)] +#[expect( + clippy::expect_used, + reason = "relay_sweep_segment; a fleet sweep request carries no streaming body, so it is clonable; a fallible clone would add a branch no fleet request reaches" +)] pub(super) async fn relay_sweep_segment( state: &Arc, base: &str, diff --git a/src/application/creation.rs b/src/application/creation.rs index c4bad873..8c18e00c 100644 --- a/src/application/creation.rs +++ b/src/application/creation.rs @@ -148,6 +148,10 @@ fn init_claim_stale(desc: &crate::registry::PersistedDescriptor) -> bool { .as_ref() .is_some_and(|init| now_ms() - init.claimed_ms > crate::registry::INIT_CLAIM_MS) } +#[expect( + clippy::too_many_arguments, + reason = "create_request_hash; the request hash covers every field a client can vary, taken separately as the handler parsed them; a request struct would exist only to be hashed" +)] pub(crate) fn create_request_hash( content_type: &str, ttl_secs: Option, @@ -181,6 +185,10 @@ pub(crate) fn create_request_hash( } hex(&h.finalize()[..16]) } +#[expect( + clippy::too_many_arguments, + reason = "fresh_desc; a fresh descriptor is built from the resolved name, epoch, policy and fork parts separately as creation decided them; a builder would restate the descriptor's own fields" +)] pub(crate) fn fresh_desc( service: &CreationService, sref: &crate::tenant::TenantStreamRef, @@ -220,6 +228,10 @@ pub(crate) fn fresh_desc( } } +#[expect( + clippy::expect_used, + reason = "json_entries; a serde_json::Value serialises infallibly; a fallible path would add a branch no value reaches" +)] pub(crate) fn json_entries(body: &[u8], allow_empty_array: bool) -> Result, String> { let v: serde_json::Value = serde_json::from_slice(body).map_err(|_| "invalid JSON body".to_string())?; @@ -250,6 +262,10 @@ mod tests { use crate::application::request_work::{Action, Key, Kind, RequestWork, WorkError}; use std::{sync::Arc, time::Duration}; + #[expect( + clippy::excessive_nesting, + reason = "r05_cancelled_ttl_attempt_releases_only_its_owned_slot; the fixture nests the drain wait inside the timeout that bounds it inside the test; flattening it would separate the wait from the bound it must respect" + )] #[tokio::test] async fn r05_cancelled_ttl_attempt_releases_only_its_owned_slot() { let project = crate::tenant::ProjectId::new("creation-test").unwrap(); diff --git a/src/application/creation/anchor.rs b/src/application/creation/anchor.rs index 34d81b33..8db86589 100644 --- a/src/application/creation/anchor.rs +++ b/src/application/creation/anchor.rs @@ -3,6 +3,10 @@ use super::deletion::release_fork_ref; use super::raw::CreatePlan; use super::*; +#[expect( + clippy::too_many_lines, + reason = "install; the anchor install is one conditional write over the source's fork reference plus the compensation each declined outcome requires; splitting it would separate the write from the compensation it orders" +)] pub(super) async fn install( state: &Arc, plan: &CreatePlan, @@ -187,6 +191,10 @@ enum ReferenceStamp { AlreadyPresent, TargetChanged, } +#[expect( + clippy::expect_used, + reason = "stamp_fork_reference; the persisted copy carries the fork reference the match just observed; a fallible write would add a branch no observed reference reaches" +)] fn stamp_fork_reference(current: &StreamDesc, fork_id: &str) -> Mutation { if current.deleted { return Mutation::Decline(ReferenceStamp::TargetChanged); diff --git a/src/application/creation/claim.rs b/src/application/creation/claim.rs index 4c02842a..63bfb519 100644 --- a/src/application/creation/claim.rs +++ b/src/application/creation/claim.rs @@ -2,6 +2,10 @@ use super::raw::CreatePlan; use super::*; +#[expect( + clippy::too_many_lines, + reason = "resolve; claim resolution is one decision over the existing descriptor's lifecycle, retained name and pending initialization; splitting it would separate the verdicts from the descriptor they judge" +)] pub(super) async fn resolve( state: &Arc, plan: &CreatePlan, diff --git a/src/application/creation/deletion.rs b/src/application/creation/deletion.rs index 465d6b59..80e536a6 100644 --- a/src/application/creation/deletion.rs +++ b/src/application/creation/deletion.rs @@ -65,6 +65,10 @@ pub(super) async fn clear_parent_debt( state.registry.invalidate(sref); Ok(()) } +#[expect( + clippy::too_many_lines, + reason = "release_fork_ref; one conditional write over the source's fork reference whose absent, foreign, recreated-source and released outcomes each decide conclusiveness; splitting it would separate the read from the verdict it justifies" +)] pub(super) fn release_fork_ref( state: &Arc, src_ref: crate::tenant::TenantStreamRef, @@ -253,7 +257,6 @@ fn delete_lifecycle( // the deployment tenant's same-named stream while B's own survived. let state = state.clone(); let sref = sref.clone(); - let name = sref.name().as_str().to_string(); Box::pin(async move { let d = match state.registry.get(&sref).await.map_err(|e| e.to_string())? { Some(d) => d, @@ -268,71 +271,7 @@ fn delete_lifecycle( // generation that was tombstoned but never released its own // parent is reachable by deleting it again. if let crate::registry::Lifecycle::Deleted { parent_ref_pending } = d.lifecycle() { - if parent_ref_pending && let Some((src, fid, sep)) = parent.clone() { - // Clear the debt only on a CONCLUSIVE release: an - // absent reference on a live source may still be - // installed by a creator in flight, and this very - // retry is what repairs that crash later. A source - // recreated since the fork is conclusive too — the - // incarnation this debt was owed to is gone. - if release_fork_ref(&state, d.ref_in_project(&src), &fid, &sep).await? { - clear_parent_debt(&state, &d.sref(), &d.stream_epoch, Some((&src, &fid))) - .await?; - } - } - // Then walk UP. A crashed cascade leaves the debt on a - // hidden intermediate generation, and the only request a - // client will ever retry is the original delete of the leaf. - // Repairing only this descriptor left the ancestor pinned - // and reported success. - // Each hop resolves in the project of the descriptor that - // HOLDS the reference (chain-invariant today, structurally - // per-hop). - let mut next = d.forked_from.as_ref().map(|f| d.ref_in_project(&f.source)); - for _ in 0..64 { - let Some(anc_ref) = next else { break }; - let Some(anc) = state - .registry - .get(&anc_ref) - .await - .map_err(|e| e.to_string())? - else { - break; - }; - if !(anc.deleted && anc.parent_ref_pending) { - break; - } - let conclusive = match anc.forked_from.as_ref() { - Some(gp) => { - release_fork_ref( - &state, - anc.ref_in_project(&gp.source), - &gp.fork_id, - &gp.source_epoch, - ) - .await? - } - None => true, - }; - if conclusive { - let debt = anc - .forked_from - .as_ref() - .map(|gp| (gp.source.clone(), gp.fork_id.clone())); - clear_parent_debt( - &state, - &anc_ref, - &anc.stream_epoch, - debt.as_ref().map(|(a, b)| (a.as_str(), b.as_str())), - ) - .await?; - } - next = anc - .forked_from - .as_ref() - .map(|g| anc.ref_in_project(&g.source)); - } - return Ok(()); + return repair_tombstone(&state, &d, parent_ref_pending).await; } // Soft-versus-hard is decided INSIDE the CAS, against the // children the descriptor has at that instant. Deciding it from @@ -344,7 +283,7 @@ fn delete_lifecycle( // The debt is recorded in the SAME write as the tombstone, so a // crash between them is impossible. #[cfg(test)] - crate::failpoints::pause_delete_before_decision(&name).await; + crate::failpoints::pause_delete_before_decision(sref.name().as_str()).await; let epoch = d.stream_epoch.clone(); // Round-22 item 7: ONE logical close instant, decided here, // stamped into the tombstone write below and used by every @@ -389,27 +328,7 @@ fn delete_lifecycle( // committer queue is backpressure, never a silent drop; a // submission that still fails is safe because the debt lives // on the tombstone and the sweep reconciler retries it. - { - let seg_ids: Vec = d - .segments - .as_ref() - .map(|m| m.segments.iter().map(|sg| sg.seg_id).collect()) - .unwrap_or_else(|| vec![0]); - for sid in seg_ids { - let identity = d.dynamic_segment_identity(sid); - let route = d - .segment_route_by_id(sid) - .expect("segment selected from validated topology"); - if let Ok(engine) = state.resolve(&route).await - && let Err(e) = engine.submit_billing_close(identity, close_stamp).await - { - tracing::warn!( - "delete {name}: billing close submit failed \ - (tombstone debt persists; sweep retries): {e}" - ); - } - } - } + submit_billing_closes(&state, &d, close_stamp).await; if let Some((src, fid, sep)) = parent { // Released CONCLUSIVELY: the tombstone owes nothing more. // This is `update`, not `cas_update`, because the @@ -433,6 +352,116 @@ enum DeleteTransition { Retained, Tombstoned, } +/// Pay a tombstone's unpaid parent debt, then walk UP the fork chain: a +/// crashed cascade leaves the debt on a hidden intermediate generation, and +/// the only request a client will ever retry is the original delete of the +/// leaf, so repairing only its descriptor left the ancestor pinned. +async fn repair_tombstone( + state: &Arc, + d: &StreamDesc, + parent_ref_pending: bool, +) -> Result<(), String> { + let parent = d + .forked_from + .as_ref() + .map(|f| (f.source.clone(), f.fork_id.clone(), f.source_epoch.clone())); + if parent_ref_pending && let Some((src, fid, sep)) = parent { + // Clear the debt only on a CONCLUSIVE release: an + // absent reference on a live source may still be + // installed by a creator in flight, and this very + // retry is what repairs that crash later. A source + // recreated since the fork is conclusive too — the + // incarnation this debt was owed to is gone. + if release_fork_ref(state, d.ref_in_project(&src), &fid, &sep).await? { + clear_parent_debt(state, &d.sref(), &d.stream_epoch, Some((&src, &fid))).await?; + } + } + // Then walk UP. A crashed cascade leaves the debt on a + // hidden intermediate generation, and the only request a + // client will ever retry is the original delete of the leaf. + // Repairing only this descriptor left the ancestor pinned + // and reported success. + // Each hop resolves in the project of the descriptor that + // HOLDS the reference (chain-invariant today, structurally + // per-hop). + let mut next = d.forked_from.as_ref().map(|f| d.ref_in_project(&f.source)); + for _ in 0..64 { + let Some(anc_ref) = next else { break }; + let Some(anc) = state + .registry + .get(&anc_ref) + .await + .map_err(|e| e.to_string())? + else { + break; + }; + if !(anc.deleted && anc.parent_ref_pending) { + break; + } + let conclusive = match anc.forked_from.as_ref() { + Some(gp) => { + release_fork_ref( + state, + anc.ref_in_project(&gp.source), + &gp.fork_id, + &gp.source_epoch, + ) + .await? + } + None => true, + }; + if conclusive { + let debt = anc + .forked_from + .as_ref() + .map(|gp| (gp.source.clone(), gp.fork_id.clone())); + clear_parent_debt( + state, + &anc_ref, + &anc.stream_epoch, + debt.as_ref().map(|(a, b)| (a.as_str(), b.as_str())), + ) + .await?; + } + next = anc + .forked_from + .as_ref() + .map(|g| anc.ref_in_project(&g.source)); + } + Ok(()) +} + +/// Advance every segment's storage clock to the persisted close stamp and +/// zero its gauge. Submission is awaited: a full committer queue is +/// backpressure, never a silent drop, and a submission that still fails is +/// safe because the debt lives on the tombstone and the sweep retries it. +#[expect( + clippy::expect_used, + reason = "submit_billing_closes; every segment id is read from the descriptor's own validated topology, whose routes are total over its segments; a fallible lookup would add a branch no listed segment reaches" +)] +async fn submit_billing_closes(state: &Arc, d: &StreamDesc, close_stamp: i64) { + let seg_ids: Vec = d + .segments + .as_ref() + .map(|m| m.segments.iter().map(|sg| sg.seg_id).collect()) + .unwrap_or_else(|| vec![0]); + for sid in seg_ids { + let identity = d.dynamic_segment_identity(sid); + let route = d + .segment_route_by_id(sid) + .expect("segment selected from validated topology"); + if let Ok(engine) = state.resolve(&route).await + && let Err(e) = engine.submit_billing_close(identity, close_stamp).await + { + tracing::warn!( + "delete {}: billing close submit failed \ + (tombstone debt persists; sweep retries): {e}", + d.name + ); + } + } +} + fn delete_transition(current: &StreamDesc, close_ms: i64) -> Mutation { if current.deleted { return Mutation::Decline(DeleteTransition::AlreadyDeleted); diff --git a/src/application/creation/fork.rs b/src/application/creation/fork.rs index 5be80f59..87a09240 100644 --- a/src/application/creation/fork.rs +++ b/src/application/creation/fork.rs @@ -21,6 +21,10 @@ pub(super) struct PreparedFork { pub content_type: String, pub ttl_secs: Option, } +#[expect( + clippy::too_many_lines, + reason = "prepare; fork preparation validates the source, its lifecycle, the boundary and the child's policy in the order a fork request must fail; splitting it would separate the checks from the order that decides which error a client sees" +)] pub(super) async fn prepare( state: &Arc, input: Preparation<'_>, @@ -176,6 +180,22 @@ struct Boundary { sub: u64, materialize: Option, } +#[expect( + clippy::too_many_lines, + reason = "validate_boundary; the boundary walk reads the source record at the fork offset and certifies the materialized partial in one pass; splitting it would separate the partial from the record it is cut from" +)] +#[expect( + clippy::unwrap_used, + reason = "validate_boundary; a poisoned stream state may hold a half-advanced durable frontier; recovering it could validate a boundary against a length never made durable" +)] +#[expect( + clippy::cast_possible_truncation, + reason = "validate_boundary; the sub-offset was checked against the record's length, itself a usize; a checked conversion would only restate that bound" +)] +#[expect( + clippy::excessive_nesting, + reason = "validate_boundary; the walk nests the ceiling verdict inside the partial-record branch of the boundary check; flattening it would separate the verdict from the partial it certifies" +)] async fn validate_boundary( state: &Arc, src: &StreamDesc, diff --git a/src/application/creation/initialization.rs b/src/application/creation/initialization.rs index 991f2c5c..4474dbba 100644 --- a/src/application/creation/initialization.rs +++ b/src/application/creation/initialization.rs @@ -3,6 +3,18 @@ use super::deletion::release_fork_ref; use super::raw::CreatePlan; use super::*; +#[expect( + clippy::too_many_arguments, + reason = "seed; seeding takes the plan, descriptor, key and fork parts separately as creation resolved them; a seed struct would exist only for this signature" +)] +#[expect( + clippy::too_many_lines, + reason = "seed; the tail seed, the fork reference and the readiness publish are one initialization whose compensation depends on which step failed; splitting them would separate the steps from the compensation they order" +)] +#[expect( + clippy::unwrap_used, + reason = "seed; a poisoned stream state may hold a half-advanced durable frontier; recovering it could seed a child from a length never made durable" +)] pub(super) async fn seed( state: &Arc, plan: &CreatePlan, @@ -162,6 +174,10 @@ pub(super) async fn seed( Ok((next, closed_now)) } +#[expect( + clippy::excessive_nesting, + reason = "publish; the readiness verdict nests the fork-claim compensation inside the declined-CAS branch; flattening it would separate the compensation from the verdict that requires it" +)] pub(super) async fn publish( state: &Arc, plan: &CreatePlan, diff --git a/src/application/creation/product.rs b/src/application/creation/product.rs index 66c98d04..598a39e5 100644 --- a/src/application/creation/product.rs +++ b/src/application/creation/product.rs @@ -17,6 +17,10 @@ impl From for ProductCreateError { } } impl CreationService { + #[expect( + clippy::too_many_lines, + reason = "create_product; the winner, retained-name and fresh-create branches are one decision over the product's name; splitting them would separate the decision from the write it guards" + )] pub(crate) async fn create_product( self: &Arc, sref: crate::tenant::TenantStreamRef, @@ -115,15 +119,14 @@ impl CreationService { })?; if created { (true, winner) + } else if winner.soft_deleted || !winner.fork_children.is_empty() { + return Err(CreationError::new( + CreationFailure::Conflict, + "gone", + "name is retained for live forks", + ) + .into()); } else { - if winner.soft_deleted || !winner.fork_children.is_empty() { - return Err(CreationError::new( - CreationFailure::Conflict, - "gone", - "name is retained for live forks", - ) - .into()); - } (false, validate_live(winner)?) } } diff --git a/src/application/lifecycle.rs b/src/application/lifecycle.rs index bfe1428d..d4ff4052 100644 --- a/src/application/lifecycle.rs +++ b/src/application/lifecycle.rs @@ -429,9 +429,8 @@ pub(crate) async fn begin_sealing_for_close( EnterSeal::Installed { generation } | EnterSeal::AlreadyOurs { generation } => { Ok(Some(generation)) } - EnterSeal::AlreadyCompleted => Ok(None), - EnterSeal::AlreadySealed => Ok(None), // already terminal; the close is a no-op - EnterSeal::Missing => Ok(None), + // Already terminal or absent: the close is a no-op. + EnterSeal::AlreadyCompleted | EnterSeal::AlreadySealed | EnterSeal::Missing => Ok(None), EnterSeal::Conflicting(m) => Err(SealError::Conflict(m)), EnterSeal::PendingTopology => Err(SealError::Resumable( "a split or merge is in flight; retry the close".into(), @@ -681,10 +680,9 @@ async fn prepare_execution( EnterSeal::Installed { generation } | EnterSeal::AlreadyOurs { generation } => { our_gen = Some(generation); } - EnterSeal::AlreadyCompleted => return Ok(None), + EnterSeal::AlreadyCompleted | EnterSeal::Missing => return Ok(None), EnterSeal::AlreadySealed if op_id.is_empty() => return Ok(None), EnterSeal::AlreadySealed => return Err(SealError::OtherOperation), - EnterSeal::Missing => return Ok(None), EnterSeal::Conflicting(m) => return Err(SealError::Conflict(m)), EnterSeal::PendingTopology => { return Err(SealError::Resumable( diff --git a/src/application/lifecycle/claims.rs b/src/application/lifecycle/claims.rs index a411fbb5..03b27063 100644 --- a/src/application/lifecycle/claims.rs +++ b/src/application/lifecycle/claims.rs @@ -61,6 +61,10 @@ pub(crate) enum SealClaim { } /// An attempt-local decision. No captured output can leak from a CAS that lost. +#[expect( + clippy::expect_used, + reason = "decide_claim; the persisted copy carries the claim the match just observed; a fallible write would add a branch no observed claim reaches" +)] pub(super) fn decide_claim( current: &StreamDesc, op_id: &str, @@ -218,7 +222,6 @@ pub(crate) enum FinalDisposition { pub(crate) fn final_err_disposition(e: &crate::shard::AppendErr) -> FinalDisposition { use crate::shard::AppendErr::*; match e { - ProducerGap { .. } | ProducerEpochSeq => FinalDisposition::AmbiguousOrTransient, ProducerStale { .. } | ProducerSeqReused | CtMismatch @@ -226,6 +229,8 @@ pub(crate) fn final_err_disposition(e: &crate::shard::AppendErr) -> FinalDisposi | SeqConflict { .. } | Closed { .. } | SealSuperseded => FinalDisposition::DefinitivelyRejected, + // A producer gap or epoch/sequence disagreement may still resolve + // once the producer catches up, like every other error. _ => FinalDisposition::AmbiguousOrTransient, } } diff --git a/src/application/read.rs b/src/application/read.rs index 37c55902..14ddede7 100644 --- a/src/application/read.rs +++ b/src/application/read.rs @@ -29,7 +29,10 @@ pub(crate) struct ReadPlan<'a> { } impl<'a> ReadPlan<'a> { - #[allow(clippy::too_many_arguments)] + #[expect( + clippy::too_many_arguments, + reason = "ReadPlan::segment; the constructor takes every field of the plan it builds, as the caller resolved them; a builder would restate the plan's own fields" + )] pub(crate) fn segment( key: &'a StreamKey, epoch: &'a [u8; 16], @@ -57,7 +60,10 @@ impl<'a> ReadPlan<'a> { } /// Compatibility call shape for in-crate engine probes; there is one executor. -#[allow(clippy::too_many_arguments)] +#[expect( + clippy::too_many_arguments, + reason = "read_merged; the compatibility call shape lists the segment plan's fields positionally for the in-crate engine probes; a plan struct is what it builds" +)] pub(crate) async fn read_merged( key: &StreamKey, epoch: &[u8; 16], @@ -112,13 +118,27 @@ pub(crate) struct ReadPage { /// (`src/dst.rs`). A second copy of this boundary logic would be a copy /// that can drift, and drift here means the oracle stops testing what /// production does. -#[allow(clippy::too_many_arguments)] /// Round-13 CODE-RED bisect: the repro's stream carries ONLY rk="" /// records, so keyed reads must be dense too — armed by the test. #[cfg(test)] pub(crate) static TEST_ASSERT_KEYED_DENSE: std::sync::atomic::AtomicBool = std::sync::atomic::AtomicBool::new(false); +#[expect( + clippy::too_many_lines, + reason = "execute_segment; the ring, history and tail legs of one segment read share the boundary the plan fixed; splitting them would separate the legs from the boundary that orders them" +)] +#[expect( + clippy::unwrap_used, + reason = "execute_segment; a poisoned stream state may hold a half-advanced durable frontier; recovering it could serve a page past a length never made durable" +)] +#[cfg_attr( + test, + expect( + clippy::excessive_nesting, + reason = "execute_segment; the keyed-dense audit nests the offset walk inside the test-armed check of the history leg; flattening it would separate the audit from the leg it inspects" + ) +)] async fn execute_segment(plan: ReadPlan<'_>) -> Result { let ReadPlan { key, @@ -327,6 +347,10 @@ pub(crate) struct ReadService { } impl ReadService { + #[expect( + clippy::too_many_arguments, + reason = "ReadService::new; the service is assembled from its registry, shard directory, peer, ownership and topology collaborators as bootstrap wires them; a builder would restate the service's own fields" + )] pub(crate) fn new( registry: Arc, shards: ShardDirectory, @@ -406,22 +430,20 @@ fn fork_chain_of(state: &ReadService, desc: &StreamDesc) -> ForkChainFuture { ) }); chain.push((cur, boundary, epoch)); - match parent { - None => break, - Some((src, src_ref, want_epoch)) => { - let d = match state_reg.get(&src_ref).await { - Ok(Some(d)) if !d.deleted => d, - _ => return Err(format!("fork source '{src}' is gone")), - }; - if !want_epoch.is_empty() && d.stream_epoch != want_epoch { - return Err(format!( - "fork source '{src}' is a different incarnation (expected {want_epoch}, found {})", - d.stream_epoch - )); - } - cur = d; - } + let Some((src, src_ref, want_epoch)) = parent else { + break; + }; + let d = match state_reg.get(&src_ref).await { + Ok(Some(d)) if !d.deleted => d, + _ => return Err(format!("fork source '{src}' is gone")), + }; + if !want_epoch.is_empty() && d.stream_epoch != want_epoch { + return Err(format!( + "fork source '{src}' is a different incarnation (expected {want_epoch}, found {})", + d.stream_epoch + )); } + cur = d; } Ok(chain) }) @@ -435,7 +457,10 @@ fn fork_chain_of(state: &ReadService, desc: &StreamDesc) -> ForkChainFuture { /// matching record: match-free scanned ranges and drained ancestors /// count as progress (follow-up review finding 6), so filtered /// callers never rescan a range the chain already proved empty. -#[allow(clippy::too_many_arguments)] +#[expect( + clippy::unwrap_used, + reason = "read_stitched; a poisoned stream state may hold a half-advanced durable frontier; recovering it could stitch a page past a length never made durable" +)] pub(crate) async fn read_stitched( state: &ReadService, desc: &StreamDesc, @@ -775,6 +800,10 @@ async fn decode_history_range( /// A tail page is accepted only after ruling out a concurrent durable trim. /// A retained dense durable-ring interval already proves what was inspected. /// Other filtered scans still need the remotely durable boundary/layout tuple. +#[expect( + clippy::too_many_arguments, + reason = "absorption_race; the race check takes the engine, hash, page, cursor, end and filter flag the read loop already holds; a context struct would exist only for this signature" +)] async fn absorption_race( engine: &Arc, hash: [u8; 16], @@ -833,6 +862,10 @@ async fn absorption_race( #[cfg(test)] mod o2_tests { use super::*; + #[expect( + clippy::cast_possible_truncation, + reason = "o2_batch_publishes_one_owner_only_after_authentication_and_admission; the fixture's offsets are counters below 256 that seed and check each payload byte; checked conversions would only restate the fixture's size" + )] #[test] fn o2_batch_publishes_one_owner_only_after_authentication_and_admission() { let key = crate::crypto::StreamKey([7; 32]); diff --git a/src/application/topology.rs b/src/application/topology.rs index eb5ce0b5..0aa06d83 100644 --- a/src/application/topology.rs +++ b/src/application/topology.rs @@ -410,6 +410,14 @@ pub(crate) async fn resume_fenced( resume_incarnation(st, sref, Some(epoch)).await } +#[expect( + clippy::expect_used, + reason = "resume_incarnation; the segment map was checked present before the split resumes; a second fallible read would add a branch no checked topology reaches" +)] +#[expect( + clippy::excessive_nesting, + reason = "resume_incarnation; the route salt loop nests the prefix comparison inside the resumed split's mutation closure; flattening it would separate the candidate route from the topology it must differ from" +)] async fn resume_incarnation( st: &TopologyService, sref: &crate::tenant::TenantStreamRef, @@ -552,6 +560,10 @@ async fn resume_incarnation( /// merged child on the low parent's route. Crash-resumable from the /// persisted pending intent; the seal-gap read semantics apply to both /// parents automatically (pending.segs names them). +#[expect( + clippy::expect_used, + reason = "resume_merge; the segment map was checked present before the merge resumes; a second fallible read would add a branch no checked topology reaches" +)] async fn resume_merge( st: &TopologyService, desc: &StreamDesc, diff --git a/src/audit.rs b/src/audit.rs index a802b6b3..0cb1bad9 100644 --- a/src/audit.rs +++ b/src/audit.rs @@ -116,6 +116,10 @@ impl AuditJournal { /// Observe a product-surface response on its way out. Enforce-mode /// denials (a `DenialTag` extension) journal; everything else is a /// no-op. Never blocks and never alters the response. +#[expect( + clippy::unwrap_used, + reason = "observe_denial; a poisoned audit queue may hold a half-pushed or half-drained event; recovering it could publish or drop an event twice" +)] pub(crate) fn observe_denial( state: &crate::http::AppState, route: &str, @@ -171,6 +175,14 @@ struct PendingAudit<'a> { body: Vec, } impl<'a> PendingAudit<'a> { + #[expect( + clippy::unwrap_used, + reason = "PendingAudit::take; a poisoned audit queue may hold a half-pushed or half-drained event; recovering it could publish or drop an event twice" + )] + #[expect( + clippy::expect_used, + reason = "PendingAudit::take; an oversized selection is only produced from a first queued event that overflowed the budget, so the queue holds it; a fallible pop would add a branch no oversized selection reaches" + )] fn take( queue: &'a Mutex>, dropped: &'a AtomicU64, @@ -210,6 +222,10 @@ impl<'a> PendingAudit<'a> { } } impl Drop for PendingAudit<'_> { + #[expect( + clippy::unwrap_used, + reason = "PendingAudit::drop; a poisoned audit queue may hold a half-pushed or half-drained event; recovering it could publish or drop an event twice" + )] fn drop(&mut self) { if self.events.is_empty() { return; diff --git a/src/auth_feed.rs b/src/auth_feed.rs index bab396c2..17ad6272 100644 --- a/src/auth_feed.rs +++ b/src/auth_feed.rs @@ -344,7 +344,15 @@ pub(crate) async fn refresh_once( /// are meaningful from the first request), then a fixed cadence. The /// cadence must be well inside `POLICY_STALENESS_MAX_SECS` or the cell /// oscillates into staleness refusals; boot enforces that. -pub fn spawn_refresher( +#[expect( + clippy::too_many_arguments, + reason = "spawn_refresher; the refresher takes the auth service, its three sources, the cadence and the supervisor as boot wires them; a bundle struct would exist only for this signature" +)] +#[expect( + clippy::let_underscore_must_use, + reason = "spawn_refresher; the supervisor rejects a spawn only while it is stopping, when no refresh is owed; a rejected refresher has nothing left to fetch" +)] +pub(crate) fn spawn_refresher( auth: Arc, keys: Box, policies: Box, @@ -444,6 +452,10 @@ mod tests { assert_eq!(report.finished(), vec!["auth-refresher"]); } + #[expect( + clippy::let_underscore_must_use, + reason = "refresh_once_publishes_from_files_and_survives_a_broken_one; the fixture removes its temporary directory on the way out; a failed removal leaves nothing the assertions depend on" + )] #[tokio::test] async fn refresh_once_publishes_from_files_and_survives_a_broken_one() { let dir = std::env::temp_dir().join(format!("mt-feed-{}", std::process::id())); diff --git a/src/bin/livebench.rs b/src/bin/livebench.rs index 7040f80f..05f96aec 100644 --- a/src/bin/livebench.rs +++ b/src/bin/livebench.rs @@ -164,6 +164,10 @@ fn legacy_wait_url_sig(sig_key: &[u8; 32], watch_key_hex: &str) -> String { clippy::cast_possible_truncation, reason = "main; tenant selection hashes a 64-bit transaction id on a 64-bit target; a checked conversion would only restate the pointer width the bench assumes" )] +#[expect( + clippy::excessive_nesting, + reason = "main; the bench nests each consumer's poll loop and each generator's publish loop inside the task it spawns for them; flattening them would separate the loops from the tasks whose lifetimes bound them" +)] async fn main() -> anyhow::Result<()> { let args = Args::parse(); let http = client(); diff --git a/src/bin/verify.rs b/src/bin/verify.rs index 003adcb4..c02413c7 100644 --- a/src/bin/verify.rs +++ b/src/bin/verify.rs @@ -156,8 +156,8 @@ async fn latency(args: &Args) -> anyhow::Result<()> { let _ = s.get(&key).await?.bytes().await?; get_ms.push(t.elapsed().as_secs_f64() * 1000.0); } - put_ms.sort_by(|a, b| a.partial_cmp(b).unwrap()); - get_ms.sort_by(|a, b| a.partial_cmp(b).unwrap()); + put_ms.sort_by(f64::total_cmp); + get_ms.sort_by(f64::total_cmp); println!( "10KiB PUT ms: min={:.0} p50={:.0} max={:.0}", put_ms[0], diff --git a/src/deployment.rs b/src/deployment.rs index 6435737f..ee3ffc0d 100644 --- a/src/deployment.rs +++ b/src/deployment.rs @@ -50,6 +50,10 @@ impl DeploymentIdentity { /// already be canonical (`canonical_name` ran at the route boundary); /// the checked construction keeps unvalidated bytes out of registry /// paths and identity hashes. + #[expect( + clippy::expect_used, + reason = "DeploymentIdentity::raw_adapter_sref; the raw adapters pass names they already validated as canonical; a fallible lookup would add a branch no adapter reaches" + )] // mt-lint: allow(name-param-shared-core): the raw adapters' ONE identity source — a canonical name becomes deployment-tenant identity here and nowhere else (SR-6) pub(crate) fn raw_adapter_sref(&self, canonical_name: &str) -> TenantStreamRef { TenantStreamRef::new( diff --git a/src/dst/fault_store.rs b/src/dst/fault_store.rs index 50c79400..14ff2128 100644 --- a/src/dst/fault_store.rs +++ b/src/dst/fault_store.rs @@ -122,7 +122,7 @@ fn mix(seed: u64, path: &str, op: u8, n: u64) -> u64 { let mut h: u64 = 0xcbf2_9ce4_8422_2325; for b in path.as_bytes() { h ^= *b as u64; - h = h.wrapping_mul(0x1000_0000_1b3); + h = h.wrapping_mul(0x100_0000_01b3); } let mut z = seed ^ h ^ ((op as u64) << 56) ^ n.wrapping_mul(0x9e37_79b9_7f4a_7c15); z = (z ^ (z >> 30)).wrapping_mul(0xbf58_476d_1ce4_e5b9); @@ -211,6 +211,10 @@ impl FaultState { /// Latency / hold / error decision, shared by every verb. /// `Ok(true)` means "perform it, then discard the response". + #[expect( + clippy::let_underscore_must_use, + reason = "FaultState::gate; the permit is the wait itself and is released the moment it is granted, so the gate paces operations without holding them; a bound permit would serialise the store" + )] async fn gate(&self, op: StoreOp, path: &str) -> OsResult { self.ops.fetch_add(1, Ordering::Relaxed); let class = ObjClass::of(path); @@ -430,6 +434,10 @@ impl ObjectStore for FaultStore { /// recovery walked an untouched store. Faults apply at two points a /// real listing can fail: before the first item, and mid-stream after /// partial results (truncation with a terminal error). + #[expect( + clippy::excessive_nesting, + reason = "FaultStore::list; the listing unfold nests the gate verdict inside the first-poll branch of the scripted stream; flattening it would separate the verdict from the poll it fails" + )] fn list( &self, prefix: Option<&ObjPath>, @@ -515,6 +523,10 @@ impl ObjectStore for FaultStore { /// zombie DB in ladder pass 3. Leaving the most dangerous verb /// unfaulted was a real gap. A faulted delete leaves the object in /// place, which is how garbage accumulates when GC cannot keep up. + #[expect( + clippy::excessive_nesting, + reason = "FaultStore::delete_stream; the delete unfold nests the one-item inner stream and the lost-response verdict inside each location's step; flattening them would separate the verdict from the delete it may lose" + )] fn delete_stream( &self, locations: futures_util::stream::BoxStream<'static, OsResult>, diff --git a/src/dst/review_readiness.rs b/src/dst/review_readiness.rs index 2816e151..4ff8bc16 100644 --- a/src/dst/review_readiness.rs +++ b/src/dst/review_readiness.rs @@ -7,6 +7,10 @@ use super::fixture_storage::mem; use crate::tasks::{Policy, TaskResult}; use std::time::Duration; +#[expect( + clippy::excessive_nesting, + reason = "readiness_endpoint_refuses_each_permanent_critical_exit; the fixture nests the unready wait inside the timeout that bounds it inside the test; flattening it would separate the wait from the bound it must respect" +)] #[tokio::test] async fn readiness_endpoint_refuses_each_permanent_critical_exit() { for outcome in 0..3 { diff --git a/src/dst/review_security.rs b/src/dst/review_security.rs index 8603681b..99c29f09 100644 --- a/src/dst/review_security.rs +++ b/src/dst/review_security.rs @@ -147,6 +147,10 @@ async fn r15_bodyless_and_unauthorized_requests_never_poll_the_body() { engine_shutdown(&rig.state).await; } +#[expect( + clippy::excessive_nesting, + reason = "r16_unauthorized_watch_shapes_are_independent_of_existence; the fixture nests the deleted-versus-initializing stamp inside its descriptor mutation and the query sweep inside the cursor and key sweeps; flattening them would separate each shape from the descriptor and the shapes it is compared against" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn r16_unauthorized_watch_shapes_are_independent_of_existence() { use axum::http::{Method, StatusCode}; diff --git a/src/dst/runtime.rs b/src/dst/runtime.rs index 12e6401b..3a32fba7 100644 --- a/src/dst/runtime.rs +++ b/src/dst/runtime.rs @@ -60,6 +60,10 @@ impl OpLog { /// Audit what a reader actually drained. `observed` is per routing key, /// in read order. + #[expect( + clippy::excessive_nesting, + reason = "OpLog::audit; the audit nests each key's acknowledged-but-unreadable and out-of-order checks inside the per-key walk; flattening them would separate the verdicts from the key they judge" + )] pub(crate) fn audit(&self, observed: &HashMap>) -> Result<(), String> { // The ledger must be self-consistent, or a harness bug could // silently weaken every check below. @@ -330,11 +334,8 @@ impl Workload { self.coverage.hit(mech::APPEND_REJECTED); Outcome::Rejected } - Ok(Err(AppendErr::Moved | AppendErr::Closed { .. } | AppendErr::Internal(_))) => { - self.coverage.hit(mech::APPEND_UNKNOWN); - Outcome::Unknown - } - Err(_) => { + Ok(Err(AppendErr::Moved | AppendErr::Closed { .. } | AppendErr::Internal(_))) + | Err(_) => { self.coverage.hit(mech::APPEND_UNKNOWN); Outcome::Unknown } @@ -376,6 +377,10 @@ impl Workload { clippy::too_many_arguments, reason = "Workload::append_to; the DST workload takes the engine, stream, key, payload and fault knobs separately as each scenario states them; a request struct would hide which knob a scenario varies" )] + #[expect( + clippy::excessive_nesting, + reason = "Workload::append_to; the append log nests the duplicate mark inside the acknowledged arm of the outcome match inside the attempt loop; flattening it would separate the mark from the acknowledgement it qualifies" + )] pub(crate) async fn append_to( &mut self, engines: &[&Arc], diff --git a/src/dst/tests/billing_maintenance.rs b/src/dst/tests/billing_maintenance.rs index f5a16201..0d1c2b29 100644 --- a/src/dst/tests/billing_maintenance.rs +++ b/src/dst/tests/billing_maintenance.rs @@ -10,6 +10,10 @@ use std::sync::Arc; /// A stream whose TTL lapsed has a dead descriptor and a live gauge; /// the drain-time reconciler resubmits the closure until the gauge /// zeroes, and journals the lifecycle observation. +#[expect( + clippy::let_underscore_must_use, + reason = "expiry_closes_the_storage_gauge; the fixture drains billing debt until the gauge closes, and each pass's own result is irrelevant to the closure it polls for; a handled result would only restate the poll" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn expiry_closes_the_storage_gauge() { let store = mem(); diff --git a/src/dst/tests/consumer_generations.rs b/src/dst/tests/consumer_generations.rs index 774bee5e..95511fe7 100644 --- a/src/dst/tests/consumer_generations.rs +++ b/src/dst/tests/consumer_generations.rs @@ -511,6 +511,10 @@ async fn a_parked_saga_never_touches_a_recreated_stream() { clippy::too_many_lines, reason = "bounded cleanup scenario; seeding dead-generation residue at scale, draining it in bounded steps and checking the live generation form one causal sequence; helper phases would hide which step touched the live rows" )] +#[expect( + clippy::cast_possible_truncation, + reason = "a_bounded_cleanup_drains_residue_without_touching_the_live_generation; the fixture's row counts and budgets are small whole numbers it chose; checked conversions would only restate the fixture" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn a_bounded_cleanup_drains_residue_without_touching_the_live_generation() { let store = mem(); diff --git a/src/dst/tests/consumer_product.rs b/src/dst/tests/consumer_product.rs index cd69b37e..614fe659 100644 --- a/src/dst/tests/consumer_product.rs +++ b/src/dst/tests/consumer_product.rs @@ -411,6 +411,10 @@ async fn product_consumer_dlq_flow() { clippy::too_many_lines, reason = "lineage consumption scenario; consuming the sealed predecessor's backlog, splitting and continuing on the children form one causal sequence; helper phases would hide which lineage step delivered or settled out of order" )] +#[expect( + clippy::excessive_nesting, + reason = "product_consumer_drains_lineage_across_split; the fixture nests the drained verdict inside the empty-page branch of its pull loop; flattening it would separate the verdict from the page that proves it" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn product_consumer_drains_lineage_across_split() { let _l = gap_lock().lock().await; diff --git a/src/dst/tests/fault_substrate.rs b/src/dst/tests/fault_substrate.rs index a2337fd7..095a3330 100644 --- a/src/dst/tests/fault_substrate.rs +++ b/src/dst/tests/fault_substrate.rs @@ -51,6 +51,10 @@ async fn fault_placement_is_a_pure_function_of_the_seed() { } /// A fault store that never injects proves nothing. +#[expect( + clippy::let_underscore_must_use, + reason = "faults_actually_fire; the fixture issues puts only to make the fault plan fire and counts the injections afterwards; each put's own outcome is the fault under test" +)] #[tokio::test] async fn faults_actually_fire() { let s = FaultStore::uniform(mem(), 7, FaultPlan::new(20, 20, 30)); @@ -138,6 +142,10 @@ async fn deletes_and_reads_are_faulted_too() { /// only increment when a response was *actually* discarded. Counting the /// decision at roll time (the previous behaviour) let a scenario satisfy /// `require(STORE_LOST_RESPONSE)` on a verb that ignored the decision. +#[expect( + clippy::let_underscore_must_use, + reason = "lost_response_counter_tracks_applied_behaviour_only; the fixture issues a multipart put only to prove the lost-response fault cannot apply to it; the put's outcome is not the claim" +)] #[tokio::test] async fn lost_response_counter_tracks_applied_behaviour_only() { let inner = mem(); diff --git a/src/dst/tests/fixture_http.rs b/src/dst/tests/fixture_http.rs index b247b3da..e5ee8943 100644 --- a/src/dst/tests/fixture_http.rs +++ b/src/dst/tests/fixture_http.rs @@ -241,6 +241,14 @@ pub(super) async fn http_rig_with_auth_service( /// directory lifecycle (a fenced or failed engine evicts itself and arms /// the anti-flap holdoff) instead of a rig-only shape with no close /// callback at all. +#[expect( + clippy::too_many_arguments, + reason = "rig_opener; the rig opener takes the store, keys, shard config, park, absorber config and close notifier the rig assembles separately; a rig struct would restate the rig itself" +)] +#[expect( + clippy::excessive_nesting, + reason = "rig_opener; the opener nests the close callback inside the engine construction it must outlive; flattening it would separate the callback from the incarnation it reports" +)] pub(super) fn rig_opener( store: Arc, keys: Arc, @@ -350,6 +358,10 @@ fn fixture_config( clippy::too_many_lines, reason = "HTTP rig builder; every runtime owner is wired in one place so the fixture's dependency order stays visible to scenario authors; pass-through steps would hide which owner a scenario option changed" )] +#[expect( + clippy::let_underscore_must_use, + reason = "http_rig_build; the supervisor rejects a spawn only while it is stopping, when the rig is being torn down; a rejected rig task has nothing left to serve" +)] pub(super) async fn http_rig_build( store: Arc, runtime: RigRuntime, diff --git a/src/dst/tests/fixture_storage.rs b/src/dst/tests/fixture_storage.rs index a3c2b446..d51d0eb1 100644 --- a/src/dst/tests/fixture_storage.rs +++ b/src/dst/tests/fixture_storage.rs @@ -147,6 +147,10 @@ pub(super) async fn open_engine_with_absorber_layout( /// Drain the merged reader WITH a key filter (drain_observed hardcodes /// unfiltered reads): paginate read_merged and collect attempt ids. +#[expect( + clippy::cast_possible_truncation, + reason = "drain_filtered; the fixture's attempt numbers are small counters it wrote itself; a checked conversion would only restate the fixture" +)] pub(super) async fn drain_filtered( engine: &Arc, hash: [u8; 16], diff --git a/src/dst/tests/fleet_controller.rs b/src/dst/tests/fleet_controller.rs index e928b4ae..0c60eada 100644 --- a/src/dst/tests/fleet_controller.rs +++ b/src/dst/tests/fleet_controller.rs @@ -23,6 +23,10 @@ impl std::fmt::Display for HeldDocument { } } impl HeldDocument { + #[expect( + clippy::let_underscore_must_use, + reason = "HeldDocument::enter; the permit is the park itself and is released the moment the test grants it; a held permit would keep the document entered after the test released it" + )] async fn enter(&self, path: &Path, write: bool) { if path.as_ref() == self.path && write == self.write { self.entered.fetch_add(1, Ordering::SeqCst); @@ -89,6 +93,10 @@ impl ObjectStore for HeldDocument { clippy::too_many_lines, reason = "fleet cancellation scenario; entering documents, cancelling under partial authority and checking the retained retry form one causal sequence; helper phases would hide which document lost its retry" )] +#[expect( + clippy::excessive_nesting, + reason = "r09_fleet_cancels_entered_documents_without_partial_authority_or_lost_retry; the fixture nests the entered wait and the desired-state poll inside the timeouts that bound them; flattening them would separate the waits from the bounds they must respect" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn r09_fleet_cancels_entered_documents_without_partial_authority_or_lost_retry() { for (path, write) in [ diff --git a/src/dst/tests/fork_lifecycle.rs b/src/dst/tests/fork_lifecycle.rs index 867777fb..1be50671 100644 --- a/src/dst/tests/fork_lifecycle.rs +++ b/src/dst/tests/fork_lifecycle.rs @@ -807,6 +807,10 @@ async fn fork_lifecycle_is_idempotent_and_epoch_checked() { clippy::disallowed_methods, reason = "unknown child fixture; the parked creation is released and joined before the source reference is checked; it must park concurrently in its unknown state" )] +#[expect( + clippy::excessive_nesting, + reason = "r05_unknown_child_state_preserves_its_source_reference; the fixture nests the park wait inside its timeout and the child's descriptor stamp inside its mutation; flattening them would separate the wait from its bound and the stamp from the descriptor it alters" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn r05_unknown_child_state_preserves_its_source_reference() { let _serial = gap_lock().lock().await; diff --git a/src/dst/tests/lifecycle_creation.rs b/src/dst/tests/lifecycle_creation.rs index a3349346..7404b96e 100644 --- a/src/dst/tests/lifecycle_creation.rs +++ b/src/dst/tests/lifecycle_creation.rs @@ -70,6 +70,10 @@ async fn a_stale_initialization_never_becomes_visible() { /// body under a different key completed the creation with a key the /// descriptor's own fingerprint does not match — a stream that cannot /// decrypt its first record. +#[expect( + clippy::excessive_nesting, + reason = "an_initialization_cannot_be_resumed_with_another_key; the fixture nests the planted init claim inside the descriptor mutation inside the planting closure; flattening it would separate the claim from the descriptor it is planted on" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn an_initialization_cannot_be_resumed_with_another_key() { const OTHER_KEY: &str = "CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk="; diff --git a/src/dst/tests/livefeed_history.rs b/src/dst/tests/livefeed_history.rs index 2c8aaeae..fdfabbfc 100644 --- a/src/dst/tests/livefeed_history.rs +++ b/src/dst/tests/livefeed_history.rs @@ -78,6 +78,10 @@ async fn fork_materialized_partial_respects_the_record_ceiling() { clippy::too_many_lines, reason = "remote lineage scenario; two instances, the child's owner and the whole-lineage stream form one causal sequence; helper phases would hide which owner served the sealed predecessor" )] +#[expect( + clippy::excessive_nesting, + reason = "livefeed_remote_sealed_predecessor_streams_through_owner; the fixture nests the per-prefix owner choice inside the override loop of its two-instance layout; flattening it would separate the choice from the prefix it assigns" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn livefeed_remote_sealed_predecessor_streams_through_owner() { let store = mem(); @@ -204,9 +208,7 @@ async fn livefeed_remote_sealed_predecessor_streams_through_owner() { 0, "the feed tears down at zero" ); - state_b - .peer - .set_peer("inst-a", &"http://127.0.0.1:9".to_string()); + state_b.peer.set_peer("inst-a", "http://127.0.0.1:9"); let mut down = lf_connect(addr_b, "xown", "?cursor=beginning").await; let (held, eof3) = hub_sse_collect(&mut down, 2, |_| false).await; assert!(!eof3, "a peer outage is a stall, not a disconnect:\n{held}"); diff --git a/src/dst/tests/livefeed_swap.rs b/src/dst/tests/livefeed_swap.rs index f9501555..db86dbb3 100644 --- a/src/dst/tests/livefeed_swap.rs +++ b/src/dst/tests/livefeed_swap.rs @@ -384,6 +384,10 @@ async fn livefeed_split_cursor_decodes_to_segment_local_and_resumes() { /// Round-4 blocker 2 (red): TWO shared subscribers, one swap — both /// receive the successor record exactly once, and both head cursors /// decode to the successor's segment-local position. +#[expect( + clippy::excessive_nesting, + reason = "livefeed_split_shared_subscribers_swap_once_deliver_twice; the fixture nests the frame rendering inside the read of each split child inside the subscriber check; flattening it would separate the rendering from the child it renders" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn livefeed_split_shared_subscribers_swap_once_deliver_twice() { let store = mem(); diff --git a/src/dst/tests/persistence_faults.rs b/src/dst/tests/persistence_faults.rs index ac0a69d9..799f8e2b 100644 --- a/src/dst/tests/persistence_faults.rs +++ b/src/dst/tests/persistence_faults.rs @@ -355,6 +355,10 @@ fn delivered_records(complete: &str) -> Vec { clippy::too_many_lines, reason = "cut-resume scenario; two resuming subscribers, a swinging absorb boundary, the serial appends and the exact per-subscriber reconciliation form one causal sequence; helper phases would hide which reconnect skipped a durable record" )] +#[expect( + clippy::excessive_nesting, + reason = "cut_resume_never_skips_a_durable_record; the fixture nests the gap diagnostics inside the per-subscriber failure report; flattening them would separate the context lines from the gap they explain" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 8)] async fn cut_resume_never_skips_a_durable_record() { let _l = gap_lock().lock().await; // shared failpoint schedule diff --git a/src/dst/tests/quota_enforcement.rs b/src/dst/tests/quota_enforcement.rs index a8dc7b6f..9ba49361 100644 --- a/src/dst/tests/quota_enforcement.rs +++ b/src/dst/tests/quota_enforcement.rs @@ -810,6 +810,10 @@ async fn catalog_failure_fails_the_stream_seed_closed() { /// Observed through the quota registry on the deployment tenant: the /// probe reservation at a cap of 1 succeeds only if BOTH the fork's /// own delete and the cascaded source tombstone released. +#[expect( + clippy::let_underscore_must_use, + reason = "fork_cascade_hard_delete_releases_the_stream_slot; the fixture admits once only to seed the project's tracked slot; the guard it returns is dropped on purpose so the seed occupies nothing" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn fork_cascade_hard_delete_releases_the_stream_slot() { let (state, addr) = http_rig(mem()).await; diff --git a/src/dst/tests/reads_history.rs b/src/dst/tests/reads_history.rs index 2af77d48..f66c35b4 100644 --- a/src/dst/tests/reads_history.rs +++ b/src/dst/tests/reads_history.rs @@ -49,6 +49,10 @@ async fn the_first_advance_seals_the_history_layout() { __maint, ); + #[expect( + clippy::excessive_nesting, + reason = "wait_absorbed; the fixture nests the absorbed-frontier read and its verdict inside the poll loop; flattening them would separate the verdict from the frontier it reads" + )] async fn wait_absorbed( engine: &Arc, hash: [u8; 16], diff --git a/src/dst/tests/reads_ring.rs b/src/dst/tests/reads_ring.rs index 29828a3a..e51b25d1 100644 --- a/src/dst/tests/reads_ring.rs +++ b/src/dst/tests/reads_ring.rs @@ -34,6 +34,10 @@ fn window(from: u64, to: u64, max_bytes: usize) -> crate::shard::RingScan { clippy::disallowed_methods, reason = "ring ordering fixture; the appender is joined before the delivered offsets are compared; it must append concurrently with the parked waiter" )] +#[expect( + clippy::cast_possible_truncation, + reason = "ring_ordering_paging_and_duplicates_at_offset_level; the fixture's frame counts are small offsets it published itself; a checked conversion would only restate the fixture" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn ring_ordering_paging_and_duplicates_at_offset_level() { let inner = mem(); @@ -288,6 +292,10 @@ async fn tail_ring_matches_the_db_scan_and_restarts_cold() { /// `read_merged`, is the 2026-07-27 boundary-race DST failure: records /// vanished from a `completed = true` page at exactly the sampled /// absorbed boundary. +#[expect( + clippy::excessive_nesting, + reason = "a_duplicate_absorbed_op_does_not_advance_the_trim; the fixture nests the absorbed poll inside the wait closure it builds per engine; flattening it would separate the poll from the engine it watches" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn a_duplicate_absorbed_op_does_not_advance_the_trim() { let inner = mem(); diff --git a/src/dst/tests/request_topology_debt.rs b/src/dst/tests/request_topology_debt.rs index 40fec0a1..fb3eecd3 100644 --- a/src/dst/tests/request_topology_debt.rs +++ b/src/dst/tests/request_topology_debt.rs @@ -10,6 +10,10 @@ use std::{sync::atomic::Ordering, time::Duration}; clippy::too_many_lines, reason = "topology debt scenario; cancelling the job, measuring the exact debt and opening a fresh read owner form one causal sequence; helper phases would hide which owner inherited the debt" )] +#[expect( + clippy::excessive_nesting, + reason = "r09a_cancelled_topology_job_leaves_exact_debt_for_a_fresh_read_owner; the fixture nests the settled-topology verdict inside the descriptor poll loop; flattening it would separate the verdict from the descriptor it reads" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn r09a_cancelled_topology_job_leaves_exact_debt_for_a_fresh_read_owner() { let store = FaultStore::new(mem(), 911, FaultProfile::clean()); diff --git a/src/dst/tests/runtime_engine_lifecycle.rs b/src/dst/tests/runtime_engine_lifecycle.rs index 85bd7543..bc1f4676 100644 --- a/src/dst/tests/runtime_engine_lifecycle.rs +++ b/src/dst/tests/runtime_engine_lifecycle.rs @@ -49,6 +49,10 @@ async fn ready_rig() -> super::fixture_http::HttpRig { rig } +#[expect( + clippy::excessive_nesting, + reason = "r17a_each_required_engine_exit_changes_real_health_and_readyz; the fixture nests the exit wait inside the timeout that bounds it inside the test; flattening it would separate the wait from the bound it must respect" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn r17a_each_required_engine_exit_changes_real_health_and_readyz() { let independent = ready_rig().await; diff --git a/src/dst/tests/runtime_open_gate.rs b/src/dst/tests/runtime_open_gate.rs index b86f943e..f2d0affd 100644 --- a/src/dst/tests/runtime_open_gate.rs +++ b/src/dst/tests/runtime_open_gate.rs @@ -55,6 +55,10 @@ async fn seed_untrimmed_wal(store: Arc, prefix: &str, records: clippy::disallowed_methods, reason = "reopen storm reproduction; the detached open is the defect being reproduced and its abandonment is counted through the fenced opens and the empty serving map; owning the open would remove the storm the scenario exists to reproduce" )] +#[expect( + clippy::let_underscore_must_use, + reason = "naive_get_or_open; the fixture's opener hands the engine to whichever client still waits, and a send with no receiver means that client already timed out; that disconnect is the storm under test" +)] async fn naive_get_or_open( lock: &tokio::sync::Mutex<()>, shards: &std::sync::RwLock>>, @@ -133,6 +137,10 @@ async fn naive_get_or_open( /// storm's signature from docs/SOAK-REGIONS.md, scaled down: WAL read /// amplification ≥ 3× the WAL itself, multiple writers opened and fenced, /// and — the wedge — the serving map STILL empty when the dust settles. +#[expect( + clippy::let_underscore_must_use, + reason = "reopen_storm_reproduces_the_eu_central_wedge; the fixture drops each client's future at its timeout on purpose, exactly as the handler does; the outcome it discards is the disconnect under test" +)] #[tokio::test(flavor = "current_thread", start_paused = true)] async fn reopen_storm_reproduces_the_eu_central_wedge() { let inner = mem(); @@ -334,12 +342,10 @@ async fn idle_engine_store_traffic_is_bounded_by_the_poll_cadence() { manifest_poll_interval: std::time::Duration::from_millis( crate::DEFAULT_MANIFEST_POLL_MS, ), - compactor_options: { - let mut co = slatedb::config::CompactorOptions::default(); - co.poll_interval = - std::time::Duration::from_millis(crate::DEFAULT_COMPACTOR_POLL_MS); - Some(co) - }, + compactor_options: Some(slatedb::config::CompactorOptions { + poll_interval: std::time::Duration::from_millis(crate::DEFAULT_COMPACTOR_POLL_MS), + ..Default::default() + }), ..Default::default() }) .build() @@ -514,6 +520,10 @@ async fn health_reports_unready_when_no_shard_has_ever_opened() { /// An engine that keeps dying young must meet an escalating holdoff, not /// an eager reopen: rapid open→die cycles against a sick store ARE the /// storm, whatever kills the engine. +#[expect( + clippy::excessive_nesting, + reason = "open_gate_escalates_holdoff_for_engines_that_die_young; the fixture nests the retry sleep inside the wait arm of its open loop; flattening it would separate the sleep from the holdoff it honours" +)] #[tokio::test(flavor = "current_thread", start_paused = true)] async fn open_gate_escalates_holdoff_for_engines_that_die_young() { use crate::sharddir::{OpenGate, OpenOutcome}; @@ -584,6 +594,10 @@ async fn open_gate_escalates_holdoff_for_engines_that_die_young() { /// eu-central-1 with an open looping in slatedb compactions recovery for /// 20+ minutes. One open, 648 coalesced waiters, zero storm — and an /// unavailable shard with no path back. +#[expect( + clippy::let_underscore_must_use, + reason = "a_hung_open_is_deadlined_and_its_late_engine_reaped; the permit is the park itself and is released the moment the test grants it; a held permit would keep the opener parked after release" +)] #[tokio::test(flavor = "current_thread", start_paused = true)] async fn a_hung_open_is_deadlined_and_its_late_engine_reaped() { use crate::sharddir::{OpenGate, OpenOutcome}; diff --git a/src/dst/tests/runtime_sweep.rs b/src/dst/tests/runtime_sweep.rs index c470258b..b95d5581 100644 --- a/src/dst/tests/runtime_sweep.rs +++ b/src/dst/tests/runtime_sweep.rs @@ -8,6 +8,10 @@ use std::sync::Arc; /// Drain billing debt until the sweep's own probes read clean, so the /// retention decision under test is the MAINTENANCE one. +#[expect( + clippy::let_underscore_must_use, + reason = "drain_billing_clean; the fixture drains billing debt until its own probes read clean; each pass's result is irrelevant to the cleanliness it polls for" +)] async fn drain_billing_clean(state: &Arc, prefixes: &[&str]) { for _ in 0..200 { let _ = crate::billing::drain_once(state).await; @@ -690,6 +694,10 @@ async fn tombstone_walk_peak_residency_stays_under_the_budget() { clippy::too_many_lines, reason = "walk fairness scenario; two shards' pinned debt, the occupied budget and the alternating walk form one causal sequence; helper phases would hide which shard the walk starved" )] +#[expect( + clippy::excessive_nesting, + reason = "tombstone_walk_fairness_under_occupied_budget; the fixture nests the pin request inside the first-seen check of the shard walk; flattening it would separate the pin from the shard it occupies" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn tombstone_walk_fairness_under_occupied_budget() { let _serial = sweep_lock().lock().await; @@ -815,7 +823,10 @@ async fn tombstone_walk_fairness_under_occupied_budget() { ); } -#[allow(non_snake_case)] +#[allow( + non_snake_case, + reason = "WALK_CLOSE_SUBMITS_SNAPSHOT; the snapshot is spelled as the constant it stands in for so the assertion reads as the invariant it pins; a snake-case name would hide that it is a fixed value" +)] fn WALK_CLOSE_SUBMITS_SNAPSHOT() -> u64 { crate::billing::WALK_CLOSE_SUBMITS.load(std::sync::atomic::Ordering::Relaxed) } diff --git a/src/dst/tests/security_freshness.rs b/src/dst/tests/security_freshness.rs index f2b2b1b5..9cf819bb 100644 --- a/src/dst/tests/security_freshness.rs +++ b/src/dst/tests/security_freshness.rs @@ -56,6 +56,10 @@ impl LeaseRig { fn revoked(&mut self) -> bool { self.watch.revoked_with_clock(&self.state, &self.clock) } + #[expect( + clippy::fn_params_excessive_bools, + reason = "LeaseRig::publish; the fixture publishes the policy and the grants as two independent switches the scenarios toggle separately; an enum would restate two booleans" + )] fn publish(&mut self, policy: bool, grants: bool) { self.version += 1; if policy { diff --git a/src/dst/tests/security_isolation.rs b/src/dst/tests/security_isolation.rs index 5f7ad164..6d24ecb4 100644 --- a/src/dst/tests/security_isolation.rs +++ b/src/dst/tests/security_isolation.rs @@ -232,6 +232,10 @@ async fn one_cell_serves_two_projects_with_full_isolation() { clippy::disallowed_methods, reason = "noisy-neighbor fixture; the hostile and compliant campaigns are joined together before their outcomes are compared; they must run concurrently to contend on one cell" )] +#[expect( + clippy::excessive_nesting, + reason = "noisy_neighbor_cannot_degrade_a_compliant_project; the fixture nests each tenant's request loop inside the task that runs it concurrently with the other tenant; flattening them would separate the loops from the concurrency under test" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn noisy_neighbor_cannot_degrade_a_compliant_project() { const PRIV: &str = include_str!("../fixtures/mt-test-rsa.pem"); diff --git a/src/dst/tests/sse_delivery.rs b/src/dst/tests/sse_delivery.rs index 67068c48..2b037701 100644 --- a/src/dst/tests/sse_delivery.rs +++ b/src/dst/tests/sse_delivery.rs @@ -37,6 +37,10 @@ async fn sse_send_disconnects_a_stalled_subscriber() { clippy::too_many_lines, reason = "lineage delivery scenario; subscribing from offset zero, splitting and receiving every pre-split and post-split record form one causal sequence; helper phases would hide which record the subscriber skipped" )] +#[expect( + clippy::excessive_nesting, + reason = "sse_follows_lineage_across_split; the fixture nests the line scan inside the chunk scan of each read; flattening it would separate the control frames from the chunk that carries them" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn sse_follows_lineage_across_split() { use tokio::io::{AsyncReadExt, AsyncWriteExt}; @@ -168,6 +172,10 @@ async fn sse_follows_lineage_across_split() { clippy::too_many_lines, reason = "signed control scenario; the product control frames, their signed key cursors and the resumed subscription form one causal sequence; helper phases would hide which frame carried a raw cursor" )] +#[expect( + clippy::excessive_nesting, + reason = "product_sse_controls_carry_signed_cursors; the fixture nests the line scan inside the chunk scan of each read; flattening it would separate the control frames from the chunk that carries them" +)] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn product_sse_controls_carry_signed_cursors() { use tokio::io::{AsyncReadExt, AsyncWriteExt}; diff --git a/src/dst/trace_store.rs b/src/dst/trace_store.rs index 75cbc535..c615f0aa 100644 --- a/src/dst/trace_store.rs +++ b/src/dst/trace_store.rs @@ -182,7 +182,10 @@ struct TraceState { } impl TraceState { - #[allow(clippy::too_many_arguments)] + #[expect( + clippy::too_many_arguments, + reason = "TraceState::event; an event row takes the sequence, kind, operation, path, size, outcome, hash and detail as the tracer observed them; a row struct is what it builds" + )] fn event( &self, seq: u64, @@ -217,6 +220,10 @@ impl TraceState { /// abandoned by async cancellation between dispatch and completion, /// leaving a permanent Pending event and a stuck active entry that /// made `reset()` refuse forever). + #[expect( + clippy::too_many_arguments, + reason = "TraceState::begin_operation; an operation opens with the kind, operation, path, size, hash and detail the store call carried; an operation struct is the event it records" + )] fn begin_operation( self: &Arc, op: StoreOp, @@ -225,7 +232,7 @@ impl TraceState { content_hash: Option, detail: Option, ) -> TraceOperation { - let ev = |seq| { + let ev = move |seq| { self.event( seq, TraceEventKind::Operation, @@ -233,8 +240,8 @@ impl TraceState { path, bytes, TraceOutcome::Pending, - content_hash.clone(), - detail.clone(), + content_hash, + detail, ) }; let mut log = self.log.lock().unwrap(); @@ -270,6 +277,10 @@ impl TraceState { /// Push an already-resolved observation (delete-stream items are /// complete facts at the moment they pass through). + #[expect( + clippy::too_many_arguments, + reason = "TraceState::observe; an observation takes the kind, operation, path, detail and outcome as the tracer resolved them; an observation struct is the row it appends" + )] fn observe( &self, kind: TraceEventKind, @@ -420,7 +431,11 @@ impl TraceStore { /// Explicit knobs. `content_hashes` opts into retaining a 16-hex-char /// sha256 prefix of each put payload; payload bytes themselves are /// never retained either way. - pub fn with_options( + #[expect( + clippy::fn_params_excessive_bools, + reason = "TraceStore::with_options; redaction and content hashing are two independent retention switches the harness sets separately; an options enum would restate two booleans" + )] + pub(crate) fn with_options( inner: Arc, redact: bool, content_hashes: bool, @@ -631,6 +646,10 @@ impl ObjectStore for TraceStore { /// (PR 3.2): while it is alive — consuming inputs, producing /// outputs — `reset()` refuses; exhaustion or drop retires the /// lifetime exactly once. + #[expect( + clippy::excessive_nesting, + reason = "TraceStore::delete_stream; the traced unfold nests each result's observation inside the poll of the inner stream; flattening it would separate the observation from the result it records" + )] fn delete_stream( &self, locations: futures_util::stream::BoxStream<'static, OsResult>, diff --git a/src/dst/trace_store_tests/concurrency.rs b/src/dst/trace_store_tests/concurrency.rs index 05511b75..33570b35 100644 --- a/src/dst/trace_store_tests/concurrency.rs +++ b/src/dst/trace_store_tests/concurrency.rs @@ -14,6 +14,10 @@ use std::sync::Arc; /// lock) this interleaving could push events out of id order, /// completions then found the wrong slot, both events stayed /// Pending, and `reset()` panicked forever. +#[expect( + clippy::excessive_nesting, + reason = "concurrent_begins_with_reverse_finishes_resolve_every_event_exactly_once; the fixture nests each contender's begin inside the scoped thread it spawns inside the barrier scope; flattening it would separate the contention from the threads that stage it" +)] #[test] fn concurrent_begins_with_reverse_finishes_resolve_every_event_exactly_once() { let s = TraceStore::verbatim(Arc::new(object_store::memory::InMemory::new())); @@ -66,6 +70,10 @@ fn concurrent_begins_with_reverse_finishes_resolve_every_event_exactly_once() { /// observes the active lifetime and refuses. After joining, nothing /// is active and nothing is Pending — deterministically, in every /// round. +#[expect( + clippy::let_underscore_must_use, + reason = "reset_racing_with_begin_cannot_orphan_an_operation; a refused reset is a legal outcome of the race the fixture stages; the assertions that follow check the invariants a refusal must still keep" +)] #[test] fn reset_racing_with_begin_cannot_orphan_an_operation() { let s = TraceStore::verbatim(Arc::new(object_store::memory::InMemory::new())); diff --git a/src/dst/trace_store_tests/mod.rs b/src/dst/trace_store_tests/mod.rs index 63125256..5bb04e44 100644 --- a/src/dst/trace_store_tests/mod.rs +++ b/src/dst/trace_store_tests/mod.rs @@ -75,6 +75,10 @@ impl ObjectStore for DeleteSpy { async fn copy_opts(&self, from: &ObjPath, to: &ObjPath, opts: CopyOptions) -> OsResult<()> { self.inner.copy_opts(from, to, opts).await } + #[expect( + clippy::excessive_nesting, + reason = "DeleteSpy::delete_stream; the scripted delete nests the consumed count inside the location match inside its unfold loop; flattening it would separate the count from the location it consumes" + )] fn delete_stream( &self, locations: futures_util::stream::BoxStream<'static, OsResult>, diff --git a/src/dst/trace_store_tests/streams.rs b/src/dst/trace_store_tests/streams.rs index a98c6eaf..849fb48b 100644 --- a/src/dst/trace_store_tests/streams.rs +++ b/src/dst/trace_store_tests/streams.rs @@ -10,6 +10,10 @@ use object_store::{ObjectStore, PutOptions, PutPayload}; /// alternative is silent misattribution of the late completion. #[tokio::test] #[should_panic(expected = "while operations are active")] +#[expect( + clippy::disallowed_methods, + reason = "reset_refuses_while_in_flight; the fixture leaks the abandoned stream on purpose so its guard never runs and the operation stays in flight; dropping it would finish the very operation the refusal is about" +)] async fn reset_refuses_while_in_flight() { use futures_util::StreamExt; let s = TraceStore::new(mem()); diff --git a/src/failpoints.rs b/src/failpoints.rs index 494daf65..2fe13215 100644 --- a/src/failpoints.rs +++ b/src/failpoints.rs @@ -102,7 +102,11 @@ impl Fp { /// The site contract: WHERE the point fires, stated as the /// window it opens. This is the enumerable registry the DST /// program audits against. - pub fn site(self) -> &'static str { + #[expect( + clippy::too_many_lines, + reason = "Fp::site; the site registry states every failpoint's window in the one match the DST program audits; splitting it would separate the sites from the registry that enumerates them" + )] + pub(crate) fn site(self) -> &'static str { match self { Fp::StopAfterTombstone => { "delete cascade: after the named generation is tombstoned \ @@ -233,9 +237,11 @@ fn active(fp: Fp) -> bool { ACTIVE[fp.idx()].load(std::sync::atomic::Ordering::Acquire) > 0 } -fn reg() -> &'static Mutex> { - static M: std::sync::OnceLock>> = - std::sync::OnceLock::new(); +/// Every armed point, keyed by point and stream name. +type Registry = Mutex>; + +fn reg() -> &'static Registry { + static M: std::sync::OnceLock = std::sync::OnceLock::new(); M.get_or_init(|| Mutex::new(HashMap::new())) } diff --git a/src/fleet.rs b/src/fleet.rs index 0ba84a73..a5b6002a 100644 --- a/src/fleet.rs +++ b/src/fleet.rs @@ -192,7 +192,12 @@ pub(crate) fn valid_peer_url_with(url: &str, allow_http: bool, peer_domains: Opt /// ~REBALANCE_RETURN_SECS period (FLEET-CAMPAIGN.md, 4 shards over 4 /// instances). A drained home (owns nothing) is always below the mean, /// so the ladder-p3 refill this block exists for still happens. -pub fn return_home_allowed(owned: usize, gain: usize, total: usize, active_n: usize) -> bool { +pub(crate) fn return_home_allowed( + owned: usize, + gain: usize, + total: usize, + active_n: usize, +) -> bool { if active_n == 0 { return false; } @@ -225,6 +230,13 @@ pub(crate) fn pick_victim_shard(shard_lags: &[(String, u64)], served: &[String]) /// keeps those OS-reclaimable pages in resident_size (measured on the /// wedge repro: resident 120 MB vs phys_footprint 2 MB after drain). /// phys_footprint is the metric Darwin's own memory limits use. +#[cfg_attr( + target_os = "macos", + expect( + clippy::cast_possible_truncation, + reason = "rss_bytes; the mach info word count is the size of a small fixed struct in 32-bit words; a checked conversion would only restate the ABI" + ) +)] pub(crate) fn rss_bytes() -> u64 { #[cfg(target_os = "linux")] { @@ -410,7 +422,31 @@ pub(crate) fn start_configured( /// operator surface cannot be given different coordination stores — /// 6.1.1-C left that to caller discipline, and nothing in the types /// required the argument to equal `state.fleet`. -pub fn start(state: Arc, cfg: FleetCfg, tasks: &crate::tasks::TaskSupervisor) { +#[expect( + clippy::too_many_lines, + reason = "start; the fleet tick reads the authority once and derives the heartbeat, the desired count, the rebalance and the publications from that one read; splitting it would separate the decisions from the read that dates them" +)] +#[expect( + clippy::excessive_nesting, + reason = "start; the tick nests each decision inside the branch of the authority state that permits it; flattening them would separate the decisions from the state they were read under" +)] +#[expect( + clippy::unwrap_used, + reason = "start; a poisoned timing ring may hold a half-recorded wait, and the fleet documents serialise infallibly as plain data; recovering the former or handling the latter would add branches no tick reaches" +)] +#[expect( + clippy::cast_sign_loss, + reason = "start; the desired counts are ceilings of non-negative ratios bounded by the fleet maximum and the wedge seconds are clamped at zero; checked conversions would only restate those bounds" +)] +#[expect( + clippy::cast_possible_truncation, + reason = "start; the desired counts are ceilings of ratios bounded by the fleet maximum, far below u64; checked conversions would only restate that bound" +)] +#[expect( + clippy::let_underscore_must_use, + reason = "start; the supervisor rejects a spawn only while it is stopping, when no fleet tick is owed; a rejected loop has nothing left to decide" +)] +pub(crate) fn start(state: Arc, cfg: FleetCfg, tasks: &crate::tasks::TaskSupervisor) { let _ = tasks.spawn("fleet", crate::tasks::Policy::Critical, move |cancel| async move { // The ONE authority: the same repository the drainer and the // operator view read through. @@ -1105,148 +1141,4 @@ pub(crate) async fn drain_fleet_events( } #[cfg(test)] -mod tests { - use super::*; - use std::collections::HashMap; - - fn peers(v: &[(&str, f64, u64)]) -> HashMap { - v.iter() - .map(|(n, c, l)| (n.to_string(), (*c, *l))) - .collect() - } - - // Regression: ladder pass 3 did 7 moves in 10 minutes because moves - // were allowed to peers that were themselves behind. - #[test] - fn target_is_the_coolest_healthy_peer() { - let p = peers(&[("a", 90.0, 0), ("b", 10.0, 0), ("c", 50.0, 0)]); - assert_eq!(pick_move_target(&p, "a", 60).as_deref(), Some("b")); - } - - #[test] - fn target_excludes_self() { - let p = peers(&[("a", 1.0, 0), ("b", 80.0, 0)]); - assert_eq!(pick_move_target(&p, "a", 60).as_deref(), Some("b")); - } - - #[test] - fn no_target_when_every_peer_is_also_lagging() { - // fleet-wide backlog: hold shards rather than pass them around - let p = peers(&[("a", 5.0, 90), ("b", 5.0, 80), ("c", 5.0, 70)]); - assert_eq!(pick_move_target(&p, "a", 60), None); - } - - // Regression: FLEET-CAMPAIGN.md — 4 shards over 4 instances drew - // 1/1/2/0; the rebalancer moved one off the 2-owner, return-home - // handed it straight back once the home was healthy, and ownership - // oscillated on a ~300 s period. - // Round-19: fleet/urls.json and heartbeats are bucket-writable - // inputs, and relays send the fleet-internal credential (sometimes a - // customer stream key) to whatever they name. Anything that is not a - // bare origin must be refused before it is stored. - #[test] - fn peer_urls_must_be_bare_origins() { - // Dev escape hatch on: plain http loopback is a valid origin. - let allow = |u: &str| valid_peer_url_with(u, true, None); - assert!(allow("https://cv-abc.fra.prisma.build")); - assert!(allow("http://127.0.0.1:8091")); - // userinfo, path, query, fragment, backslash, whitespace - assert!(!allow("https://evil@attacker.example")); - assert!(!allow("https://host.example/path")); - assert!(!allow("https://host.example?x=1")); - assert!(!allow("https://host.example#f")); - assert!(!allow("https://host.example\\@evil")); - assert!(!allow("https://host .example")); - // non-http schemes and bare hosts - assert!(!allow("file:///etc/passwd")); - assert!(!allow("host.example")); - assert!(!allow("")); - // non-numeric port - assert!(!allow("http://host.example:evil")); - // TLS mandatory once the dev escape hatch is off - let strict = |u: &str| valid_peer_url_with(u, false, None); - assert!(!strict("http://127.0.0.1:8091")); - assert!(strict("https://cv-abc.fra.prisma.build")); - } - - #[test] - fn peer_domain_allowlist_is_enforced_when_set() { - let v = |u: &str| valid_peer_url_with(u, false, Some("prisma.build")); - assert!(v("https://cv-abc.fra.prisma.build")); - assert!(v("https://prisma.build")); - assert!(!v("https://attacker.example")); - // suffix-matching must not accept a lookalike domain - assert!(!v("https://evilprisma.build")); - } - - #[test] - fn return_home_suppressed_at_fair_share() { - // home kept 1 of its 2 shards; mean is ceil(4/4)=1; returning - // would make 2 > 1 — the exact flap case. - assert!(!return_home_allowed(1, 1, 4, 4)); - } - - #[test] - fn drained_home_still_gets_refilled() { - // ladder p3: the once-lagged instance owns nothing; the mean is - // 1; refilling to 1 is exactly fair. - assert!(return_home_allowed(0, 1, 4, 4)); - } - - #[test] - fn fine_granularity_returns_normally() { - // 16 shards over 4 instances: home at 3 takes its 4th back. - assert!(return_home_allowed(3, 1, 16, 4)); - assert!(!return_home_allowed(4, 1, 16, 4)); - } - - #[test] - fn multiple_pending_returns_share_the_budget() { - // two overrides pointing at the same healthy home in one pass: - // the second must count the first (16/4: home at 2, gains 1+1 - // fine; a third would breach). - assert!(return_home_allowed(2, 1, 16, 4)); - assert!(return_home_allowed(2, 2, 16, 4)); - assert!(!return_home_allowed(2, 3, 16, 4)); - } - - #[test] - fn empty_active_set_never_returns() { - assert!(!return_home_allowed(0, 1, 4, 0)); - } - - #[test] - fn target_must_be_well_under_the_threshold_not_merely_under_it() { - // threshold/2 gate: a peer at 40s with a 60s threshold is not healthy - let p = peers(&[("a", 5.0, 0), ("b", 5.0, 40)]); - assert_eq!(pick_move_target(&p, "a", 60), None); - } - - // Regression: victim was derived via shard_for_hash(lag_map_key), but - // the lag map is keyed by storage_hash while shards are chosen by - // stream_hash(name) - so it almost never matched and D3 never moved. - #[test] - fn victim_is_the_laggiest_shard_we_actually_serve() { - let lags = vec![ - ("000".to_string(), 10), - ("011".to_string(), 90), - ("111".to_string(), 40), - ]; - let served = vec!["000".to_string(), "111".to_string()]; - // 011 is laggier but we do not serve it - assert_eq!(pick_victim_shard(&lags, &served).as_deref(), Some("111")); - } - - #[test] - fn no_victim_when_we_serve_nothing_with_lag() { - let lags = vec![("011".to_string(), 90)]; - let served = vec!["000".to_string()]; - assert_eq!(pick_victim_shard(&lags, &served), None); - } - - #[test] - fn no_victim_when_nothing_lags() { - let served = vec!["000".to_string()]; - assert_eq!(pick_victim_shard(&[], &served), None); - } -} +mod tests; diff --git a/src/fleet/tests.rs b/src/fleet/tests.rs new file mode 100644 index 00000000..888cd6bc --- /dev/null +++ b/src/fleet/tests.rs @@ -0,0 +1,145 @@ +//! The fleet loop's unit tests: peer choice, return-home budget and victim selection. +#![cfg(test)] +use super::*; +use std::collections::HashMap; + +fn peers(v: &[(&str, f64, u64)]) -> HashMap { + v.iter() + .map(|(n, c, l)| (n.to_string(), (*c, *l))) + .collect() +} + +// Regression: ladder pass 3 did 7 moves in 10 minutes because moves +// were allowed to peers that were themselves behind. +#[test] +fn target_is_the_coolest_healthy_peer() { + let p = peers(&[("a", 90.0, 0), ("b", 10.0, 0), ("c", 50.0, 0)]); + assert_eq!(pick_move_target(&p, "a", 60).as_deref(), Some("b")); +} + +#[test] +fn target_excludes_self() { + let p = peers(&[("a", 1.0, 0), ("b", 80.0, 0)]); + assert_eq!(pick_move_target(&p, "a", 60).as_deref(), Some("b")); +} + +#[test] +fn no_target_when_every_peer_is_also_lagging() { + // fleet-wide backlog: hold shards rather than pass them around + let p = peers(&[("a", 5.0, 90), ("b", 5.0, 80), ("c", 5.0, 70)]); + assert_eq!(pick_move_target(&p, "a", 60), None); +} + +// Regression: FLEET-CAMPAIGN.md — 4 shards over 4 instances drew +// 1/1/2/0; the rebalancer moved one off the 2-owner, return-home +// handed it straight back once the home was healthy, and ownership +// oscillated on a ~300 s period. +// Round-19: fleet/urls.json and heartbeats are bucket-writable +// inputs, and relays send the fleet-internal credential (sometimes a +// customer stream key) to whatever they name. Anything that is not a +// bare origin must be refused before it is stored. +#[test] +fn peer_urls_must_be_bare_origins() { + // Dev escape hatch on: plain http loopback is a valid origin. + let allow = |u: &str| valid_peer_url_with(u, true, None); + assert!(allow("https://cv-abc.fra.prisma.build")); + assert!(allow("http://127.0.0.1:8091")); + // userinfo, path, query, fragment, backslash, whitespace + assert!(!allow("https://evil@attacker.example")); + assert!(!allow("https://host.example/path")); + assert!(!allow("https://host.example?x=1")); + assert!(!allow("https://host.example#f")); + assert!(!allow("https://host.example\\@evil")); + assert!(!allow("https://host .example")); + // non-http schemes and bare hosts + assert!(!allow("file:///etc/passwd")); + assert!(!allow("host.example")); + assert!(!allow("")); + // non-numeric port + assert!(!allow("http://host.example:evil")); + // TLS mandatory once the dev escape hatch is off + let strict = |u: &str| valid_peer_url_with(u, false, None); + assert!(!strict("http://127.0.0.1:8091")); + assert!(strict("https://cv-abc.fra.prisma.build")); +} + +#[test] +fn peer_domain_allowlist_is_enforced_when_set() { + let v = |u: &str| valid_peer_url_with(u, false, Some("prisma.build")); + assert!(v("https://cv-abc.fra.prisma.build")); + assert!(v("https://prisma.build")); + assert!(!v("https://attacker.example")); + // suffix-matching must not accept a lookalike domain + assert!(!v("https://evilprisma.build")); +} + +#[test] +fn return_home_suppressed_at_fair_share() { + // home kept 1 of its 2 shards; mean is ceil(4/4)=1; returning + // would make 2 > 1 — the exact flap case. + assert!(!return_home_allowed(1, 1, 4, 4)); +} + +#[test] +fn drained_home_still_gets_refilled() { + // ladder p3: the once-lagged instance owns nothing; the mean is + // 1; refilling to 1 is exactly fair. + assert!(return_home_allowed(0, 1, 4, 4)); +} + +#[test] +fn fine_granularity_returns_normally() { + // 16 shards over 4 instances: home at 3 takes its 4th back. + assert!(return_home_allowed(3, 1, 16, 4)); + assert!(!return_home_allowed(4, 1, 16, 4)); +} + +#[test] +fn multiple_pending_returns_share_the_budget() { + // two overrides pointing at the same healthy home in one pass: + // the second must count the first (16/4: home at 2, gains 1+1 + // fine; a third would breach). + assert!(return_home_allowed(2, 1, 16, 4)); + assert!(return_home_allowed(2, 2, 16, 4)); + assert!(!return_home_allowed(2, 3, 16, 4)); +} + +#[test] +fn empty_active_set_never_returns() { + assert!(!return_home_allowed(0, 1, 4, 0)); +} + +#[test] +fn target_must_be_well_under_the_threshold_not_merely_under_it() { + // threshold/2 gate: a peer at 40s with a 60s threshold is not healthy + let p = peers(&[("a", 5.0, 0), ("b", 5.0, 40)]); + assert_eq!(pick_move_target(&p, "a", 60), None); +} + +// Regression: victim was derived via shard_for_hash(lag_map_key), but +// the lag map is keyed by storage_hash while shards are chosen by +// stream_hash(name) - so it almost never matched and D3 never moved. +#[test] +fn victim_is_the_laggiest_shard_we_actually_serve() { + let lags = vec![ + ("000".to_string(), 10), + ("011".to_string(), 90), + ("111".to_string(), 40), + ]; + let served = vec!["000".to_string(), "111".to_string()]; + // 011 is laggier but we do not serve it + assert_eq!(pick_victim_shard(&lags, &served).as_deref(), Some("111")); +} + +#[test] +fn no_victim_when_we_serve_nothing_with_lag() { + let lags = vec![("011".to_string(), 90)]; + let served = vec!["000".to_string()]; + assert_eq!(pick_victim_shard(&lags, &served), None); +} + +#[test] +fn no_victim_when_nothing_lags() { + let served = vec!["000".to_string()]; + assert_eq!(pick_victim_shard(&[], &served), None); +} diff --git a/src/history/canonical_span.rs b/src/history/canonical_span.rs index df867e90..014b9638 100644 --- a/src/history/canonical_span.rs +++ b/src/history/canonical_span.rs @@ -25,7 +25,10 @@ impl ResultPage { true } } -#[allow(clippy::too_many_arguments)] +#[expect( + clippy::too_many_arguments, + reason = "read; the canonical span read takes the partition, route, incarnation, range, filter, budget and sink the gather planned separately; a request struct would restate the plan per span" +)] pub(super) async fn read( part: &Arc, route: RouteHash, diff --git a/src/history/controller_tests.rs b/src/history/controller_tests.rs index 2bf0cdf9..af569ba2 100644 --- a/src/history/controller_tests.rs +++ b/src/history/controller_tests.rs @@ -4,6 +4,14 @@ use crate::shard::{AppendFinish, AppendReq, ShardConfig}; use bytes::Bytes; use std::sync::atomic::Ordering; +#[expect( + clippy::too_many_lines, + reason = "active_absorber_cancel; the fixture stages the engine, the held store, the absorber and its cancellation in the order the scenario requires; splitting it would separate the stages from the cancellation they set up" +)] +#[expect( + clippy::let_underscore_must_use, + reason = "active_absorber_cancel; the fixture closes the database and partition on the way out; a failed close leaves nothing the assertions depend on" +)] async fn active_absorber_cancel(hold_store: bool) { let shard_store: Arc = Arc::new(object_store::memory::InMemory::new()); let data_store = FaultStore::uniform( diff --git a/src/history/postings_validation_tests.rs b/src/history/postings_validation_tests.rs index 26f223c0..8b4441c5 100644 --- a/src/history/postings_validation_tests.rs +++ b/src/history/postings_validation_tests.rs @@ -160,6 +160,14 @@ async fn o4a_valid_page_seams_and_match_free_progress_remain_usable() { db.close().await.unwrap(); } +#[expect( + clippy::cast_possible_truncation, + reason = "raw_page; the fixture's run counts are small tables it wrote itself; a checked conversion would only restate the fixture" +)] +#[expect( + clippy::excessive_nesting, + reason = "raw_page; the fixture nests the varint continuation bit inside the per-field encoding loop of each run; flattening it would separate the bit from the field it continues" +)] fn raw_page(first: u64, end: u64, total: u64, runs: &[[u64; 4]]) -> Vec { let mut value = vec![1, 0]; value.extend_from_slice(&first.to_le_bytes()); diff --git a/src/history/worker.rs b/src/history/worker.rs index ac4eeb1e..9ad791d0 100644 --- a/src/history/worker.rs +++ b/src/history/worker.rs @@ -303,6 +303,10 @@ impl Absorber { } v2_lane } + #[expect( + clippy::excessive_nesting, + reason = "Absorber::gather_due; the outcome handling nests the per-stream bookkeeping inside the advanced, partial, no-work and failed arms of one gather; flattening it would separate the bookkeeping from the outcome that decides it" + )] async fn gather_due( &self, pending: &mut HashMap<[u8; 16], PendingAbsorb>, diff --git a/src/main.rs b/src/main.rs index 0cb49aab..5ce9cc0d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,10 @@ #[global_allocator] static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; +#[expect( + clippy::disallowed_methods, + reason = "main; the Tokio worker floor is process configuration read once before any runtime, supervisor or configuration owner exists; routing it through an owner would need the runtime it sizes" +)] fn main() -> anyhow::Result<()> { tracing_subscriber::fmt() .with_env_filter( diff --git a/src/mt_lint.rs b/src/mt_lint.rs index 703f2632..61a0c163 100644 --- a/src/mt_lint.rs +++ b/src/mt_lint.rs @@ -147,6 +147,10 @@ impl<'a> Lint<'a> { } } + #[expect( + clippy::excessive_nesting, + reason = "Lint::check_signature; the signature walk nests the type and name checks inside each typed input; flattening it would separate the checks from the input they classify" + )] fn check_signature(&mut self, line: usize, name: &str, sig: &syn::Signature) { let mut has_sref_param = false; let mut name_params: Vec<(String, String)> = Vec::new(); @@ -357,6 +361,10 @@ fn multitenancy_identity_lint() { // Recursive: new submodules are scanned the day they appear. // src/dst/ (harness + tests) and src/bin/ (single-tenant client // tools) stay out by directory. + #[expect( + clippy::excessive_nesting, + reason = "walk; the directory walk nests the excluded-tree check inside the directory branch; flattening it would separate the exclusion from the directory it prunes" + )] fn walk(root: &std::path::Path, dir: &std::path::Path, out: &mut Vec) { for e in std::fs::read_dir(dir).unwrap().filter_map(|e| e.ok()) { let p = e.path(); diff --git a/src/offsets.rs b/src/offsets.rs index d5676d62..ed44f622 100644 --- a/src/offsets.rs +++ b/src/offsets.rs @@ -71,7 +71,10 @@ fn decode_char(ch: char) -> Option { 'I' | 'i' | 'L' | 'l' => Some(1), _ => { let up = ch.to_ascii_uppercase() as u8; - ALPHABET.iter().position(|&a| a == up).map(|p| p as u8) + ALPHABET + .iter() + .position(|&a| a == up) + .and_then(|p| u8::try_from(p).ok()) } } } diff --git a/src/postings_cache.rs b/src/postings_cache.rs index f4aacddd..b5fea3a9 100644 --- a/src/postings_cache.rs +++ b/src/postings_cache.rs @@ -194,7 +194,15 @@ impl PostingsCache { clippy::unwrap_used, reason = "PostingsCache::install_chunk; a poisoned cache index may hold a partially installed slice or in-flight load; recovering it could serve a truncated postings slice or miscount resident bytes" )] - pub fn install_chunk( + #[expect( + clippy::too_many_lines, + reason = "PostingsCache::install_chunk; installing a chunk decides replacement, bridging, fresh admission and eviction against one index snapshot; splitting it would separate the decisions from the snapshot they share" + )] + #[expect( + clippy::excessive_nesting, + reason = "PostingsCache::install_chunk; the install nests the bridge and eviction verdicts inside the resident-slice branches under the index lock; flattening them would separate the verdicts from the slice they judge" + )] + pub(crate) fn install_chunk( &self, inc: SegmentHash, chunk_from: u64, @@ -416,7 +424,15 @@ impl PostingsCache { clippy::unwrap_used, reason = "PostingsCache::runs_for; a poisoned cache index may hold a partially installed slice or in-flight load; recovering it could serve a truncated postings slice or miscount resident bytes" )] - pub async fn runs_for( + #[expect( + clippy::too_many_lines, + reason = "PostingsCache::runs_for; serving runs decides the resident, loading and corrupt paths against one index snapshot; splitting it would separate the paths from the snapshot they share" + )] + #[expect( + clippy::excessive_nesting, + reason = "PostingsCache::runs_for; the lookup nests the coverage and corruption verdicts inside the resident and in-flight branches under the index lock; flattening them would separate the verdicts from the entry they judge" + )] + pub(crate) async fn runs_for( self: &Arc, part: &Arc, route: RouteHash, @@ -623,6 +639,10 @@ impl PostingsCache { clippy::unwrap_used, reason = "PostingsCache::spawn_load; a poisoned cache index may hold a partially installed slice or in-flight load; recovering it could serve a truncated postings slice or miscount resident bytes" )] + #[expect( + clippy::excessive_nesting, + reason = "PostingsCache::spawn_load; the loader nests the admission of the loaded runs inside the completion branch of the spawned load; flattening it would separate the admission from the load it admits" + )] fn spawn_load( self: &Arc, part: Arc, diff --git a/src/product_cursor.rs b/src/product_cursor.rs index 86eafa13..a84bbfc2 100644 --- a/src/product_cursor.rs +++ b/src/product_cursor.rs @@ -44,6 +44,10 @@ pub(crate) struct KeyCursor { /// stream key and epoch — a cursor minted for one project's stream /// can never authenticate against another project's same-named, /// same-keyed stream. +#[expect( + clippy::expect_used, + reason = "mac_key; HMAC-SHA256 accepts a key of any length, so construction from the derived key cannot fail; a fallible path would add a branch no key reaches" +)] fn mac_key(project: &crate::tenant::ProjectId, key: &StreamKey, epoch: &[u8; 16]) -> [u8; 32] { use hmac::{Hmac, Mac}; use sha2::Sha256; @@ -56,6 +60,10 @@ fn mac_key(project: &crate::tenant::ProjectId, key: &StreamKey, epoch: &[u8; 16] out } +#[expect( + clippy::expect_used, + reason = "mac16; HMAC-SHA256 accepts a key of any length, so construction from the derived key cannot fail; a fallible path would add a branch no key reaches" +)] fn mac16(k: &[u8; 32], payload: &[u8]) -> [u8; MAC_LEN] { use hmac::{Hmac, Mac}; use sha2::Sha256; @@ -129,7 +137,7 @@ impl CatalogCursor { let pb = self.project.as_str().as_bytes(); let mut p = Vec::with_capacity(1 + 2 + pb.len() + self.last_name.len() + MAC_LEN); p.push(KIND_CATALOG_V1); - p.extend_from_slice(&(pb.len() as u16).to_le_bytes()); + p.extend_from_slice(&u16::try_from(pb.len()).unwrap_or(u16::MAX).to_le_bytes()); p.extend_from_slice(pb); p.extend_from_slice(self.last_name.as_bytes()); if let Some(k) = key { @@ -146,7 +154,11 @@ impl ScanCursor { p.push(KIND_SCAN_V2); p.extend_from_slice(&self.epoch); p.extend_from_slice(&self.map_version.to_le_bytes()); - p.extend_from_slice(&(self.segments.len() as u32).to_le_bytes()); + p.extend_from_slice( + &u32::try_from(self.segments.len()) + .unwrap_or(u32::MAX) + .to_le_bytes(), + ); for (id, end) in &self.segments { p.extend_from_slice(&id.to_le_bytes()); p.extend_from_slice(&end.to_le_bytes()); diff --git a/src/project_policy.rs b/src/project_policy.rs index 2d692512..6ee67df8 100644 --- a/src/project_policy.rs +++ b/src/project_policy.rs @@ -13,7 +13,10 @@ //! Stage 5 wires the real snapshot/delta feed without touching the //! verification logic. -#![allow(dead_code)] // consumed across MT Stages 2b/4/5 as wiring lands +#![allow( + dead_code, + reason = "project_policy; the policy types are consumed across MT Stages 2b/4/5 as their wiring lands; removing them now would re-add each one with its stage" +)] use std::collections::HashMap; use std::sync::Arc; diff --git a/src/quota.rs b/src/quota.rs index a46b47a3..079db74c 100644 --- a/src/quota.rs +++ b/src/quota.rs @@ -518,6 +518,10 @@ impl QuotaRegistry { clippy::unwrap_used, reason = "QuotaRegistry::admit; a poisoned entry or project map may be partially updated; recovery could mint fresh request credit or orphan charged state" )] + #[expect( + clippy::excessive_nesting, + reason = "QuotaRegistry::admit; admission nests the idle eviction inside the untracked-project branch of the tracker lookup; flattening it would separate the eviction from the refusal it forestalls" + )] pub(crate) fn admit( &self, project: &ProjectId, @@ -623,7 +627,11 @@ impl QuotaRegistry { clippy::unwrap_used, reason = "QuotaRegistry::admit_append; either poisoned bucket or its project map may contain an incomplete charge; recovery could admit beyond a limit or charge only half a batch" )] - pub fn admit_append( + #[expect( + clippy::too_many_arguments, + reason = "QuotaRegistry::admit_append; append admission takes the project, its quotas, the payload size and the clock parts separately as the request resolved them; a request struct would exist only for this signature" + )] + pub(crate) fn admit_append( &self, project: &ProjectId, quotas: &ProjectQuotas, diff --git a/src/runtime.rs b/src/runtime.rs index 79b35ef7..e4854286 100644 --- a/src/runtime.rs +++ b/src/runtime.rs @@ -47,6 +47,10 @@ impl TrustedNow { pub(crate) struct MonotonicNow(Duration); impl MonotonicNow { + #[expect( + clippy::cast_possible_truncation, + reason = "MonotonicNow::millis; the millisecond count is clamped to i64::MAX before the cast; a checked conversion would only restate the clamp" + )] pub(crate) fn millis(self) -> i64 { self.0.as_millis().min(i64::MAX as u128) as i64 } @@ -88,6 +92,10 @@ impl Default for SystemClock { } impl Clock for SystemClock { + #[expect( + clippy::cast_possible_truncation, + reason = "SystemClock::now; the Unix millisecond count stays below i64::MAX for hundreds of millions of years; a checked conversion would only restate that horizon" + )] fn now(&self) -> TrustedNow { TrustedNow( std::time::SystemTime::now() @@ -199,8 +207,9 @@ impl RuntimeCaps { /// Assemble from explicit implementations with ONE entropy source /// for both the boot id and later epochs (production goes through /// [`RuntimeCaps::production`]). - pub fn with(clock: Arc, entropy: Arc, instance: &str) -> Self { - Self::with_sources(clock, &*entropy, entropy.clone(), instance) + pub(crate) fn with(clock: Arc, entropy: Arc, instance: &str) -> Self { + let boot = entropy.clone(); + Self::with_sources(clock, &*boot, entropy, instance) } /// Assemble with DOMAIN-SEPARATED sources (PR 4.1): the boot id is @@ -296,6 +305,10 @@ impl ManualClock { } /// Ordinary passage of time: both domains move together. + #[expect( + clippy::cast_possible_truncation, + reason = "ManualClock::advance; test clock advances are small fixture durations; a checked conversion would only restate the fixture's scale" + )] pub(crate) fn advance(&self, by: Duration) { *self.inner.wall_ms.lock().unwrap() += by.as_millis() as i64; self.advance_monotonic(by); @@ -324,6 +337,10 @@ impl Clock for ManualClock { MonotonicNow(*self.inner.mono.lock().unwrap()) } + #[expect( + clippy::excessive_nesting, + reason = "ManualClock::sleep; the wake loop nests the deadline check between registering for the next advance and awaiting it; flattening it would separate the check from the registration that makes it race-free" + )] fn sleep(&self, d: Duration) -> futures_util::future::BoxFuture<'static, ()> { let inner = self.inner.clone(); let deadline = *inner.mono.lock().unwrap() + d; diff --git a/src/runtime/telemetry.rs b/src/runtime/telemetry.rs index c93f4331..100b90b3 100644 --- a/src/runtime/telemetry.rs +++ b/src/runtime/telemetry.rs @@ -74,6 +74,10 @@ mod tests { config } + #[expect( + clippy::excessive_nesting, + reason = "r10_telemetry_cache_progress_and_database_lifetimes_are_runtime_owned; the fixture nests the release wait inside the timeout that bounds it inside the test; flattening it would separate the wait from the bound it must respect" + )] #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn r10_telemetry_cache_progress_and_database_lifetimes_are_runtime_owned() { let clock = Arc::new(ManualClock::at(1000)); diff --git a/src/scaler3.rs b/src/scaler3.rs index f9d5934f..be03333f 100644 --- a/src/scaler3.rs +++ b/src/scaler3.rs @@ -148,6 +148,13 @@ impl State { self.hot_keys.retain(|name, _| live.contains(name)); } + #[cfg_attr( + test, + expect( + clippy::excessive_nesting, + reason = "State::forget_previous_incarnation; the test-only visit counter nests inside the retain closure of the incarnation sweep; flattening it would separate the count from the sweep it audits" + ) + )] fn forget_previous_incarnation(&mut self, name: &crate::tenant::TenantStreamRef, epoch: &str) { #[cfg(test)] let mut visited = 0; @@ -365,11 +372,7 @@ fn evaluate_state( if let Some((k, _)) = top.top_share() { hot_updates .entry(name.clone()) - .and_modify(|prior| { - if k < prior.0 { - *prior = RoutingKeyHash(k); - } - }) + .and_modify(|prior| prior.0 = prior.0.min(k)) .or_insert(RoutingKeyHash(k)); } INEFFECTIVE_SPLIT_AVOIDED.fetch_add(1, std::sync::atomic::Ordering::Relaxed); @@ -788,6 +791,10 @@ mod tests { assert!(state.hot_keys.is_empty()); } + #[expect( + clippy::cast_possible_truncation, + reason = "segment_order_cannot_erase_a_hot_key_or_change_decisions; the fixture's segment ids are 0, 1 and 2; a checked conversion would only restate the fixture" + )] #[test] fn segment_order_cannot_erase_a_hot_key_or_change_decisions() { let name = test_desc("hot-and-cold").sref(); diff --git a/src/sse/session.rs b/src/sse/session.rs index d467e1de..1c2bab37 100644 --- a/src/sse/session.rs +++ b/src/sse/session.rs @@ -155,7 +155,26 @@ fn count_cutoff(reason: super::feed::SourceCutoff) { /// here (finding 9). The caller builds the initial read source /// (`SingleSource` for single-segment/fork streams, `LineageSource` /// for connect-time lineage, Stage 7A). -#[allow(clippy::too_many_arguments)] +#[expect( + clippy::too_many_arguments, + reason = "serve; the session takes the state, the surface, the descriptor, key, params, headers and lease parts as the handler authorized them; a request struct would restate the authorization" +)] +#[expect( + clippy::too_many_lines, + reason = "serve; the session is one subscribe, drive and stream sequence whose teardown depends on which step admitted it; splitting it would separate the steps from the teardown they order" +)] +#[expect( + clippy::excessive_nesting, + reason = "serve; the driver nests the lease, version and generation waits and the take verdicts inside the drive loop of the spawned task; flattening them would separate each wake from the verdict it produces" +)] +#[expect( + clippy::let_underscore_must_use, + reason = "serve; the changed waits are only registrations on watches the driver already owns; handled results would only restate the registration" +)] +#[expect( + clippy::disallowed_methods, + reason = "serve; the driver task is owned by the subscription it drives and ends with it; a supervised driver would tie a request-scoped task to the runtime supervisor" +)] pub(crate) async fn serve( state: Arc, desc: crate::registry::StreamDesc, @@ -277,7 +296,7 @@ pub(crate) async fn serve( }, rk_hash: crate::crypto::stream_hash(&lane_rk), epoch, - key: key.clone(), + key, desc: desc.clone(), raw_cursor: params.cursor.clone(), }; @@ -293,7 +312,7 @@ pub(crate) async fn serve( crate::billing::meter_read(&state, &desc, 0, 0); let body_state = state.clone(); - let task_state = state.clone(); + let task_state = state; let task_desc = desc.clone(); let task_lease = SseLease::of(¶ms); #[cfg(test)] @@ -818,16 +837,14 @@ pub(crate) async fn serve( // did NOT change and the version was NOT bumped — // park rather than spin (finding 6). The next // durable advance or the heartbeat retries. - Some(DriveOutcome::NoProgress) => {} + // Idle means the head already covers the frontier; + // None means another driver won and its publication + // bumps ver_wait (registered at loop top). + Some(DriveOutcome::NoProgress | DriveOutcome::Idle) | None => {} Some(DriveOutcome::SourceFailed) => { tracing::warn!("livefeed source read failed; parking until next wake"); } - // Head already covers the frontier: nothing to do. - Some(DriveOutcome::Idle) => {} Some(DriveOutcome::Cancelled) => return, - // Contended: park; the winner's publication bumps - // ver_wait (registered at loop top). - None => {} } } // Round-11.4 fleet finding: an at-tail session has no @@ -894,6 +911,10 @@ pub(crate) fn feed_key_of( } } +#[expect( + clippy::unwrap_used, + reason = "response_from_stream; the response builder only carries the fixed content-type and cache headers the session sets, so it cannot fail; a fallible build would add a branch no session reaches" +)] fn response_from_stream( stream: impl futures_util::Stream> + Send + 'static, binary: bool, @@ -924,145 +945,4 @@ fn response_from_stream( // name the ACTUAL live segment, not hard-coded zero. // ================================================================== #[cfg(test)] -mod tests { - use super::*; - - /// A materialized one-segment map whose only live segment has a - /// NONZERO id (a lineage pruned down to a later segment) meets the - /// LiveFeed eligibility condition — and its cursors must name that - /// segment. - #[test] - fn product_cursor_names_the_actual_live_segment() { - let mut desc = crate::sse::feed::tests::test_desc("segtest").to_persisted(); - desc.segments = Some(crate::segmap::SegmentMap { - version: 7, - next_seg_id: 6, - pending: None, - segments: vec![crate::segmap::SegmentDesc { - seg_id: 5, - lo: 0, - hi: crate::segmap::KEYSPACE_END, - shard_prefix: String::new(), - route_hash: [0u8; 16], - created_ms: 1, - predecessors: vec![0], - successors: Vec::new(), - sealed_ms: None, - sealed_next_offset: None, - }], - }); - let desc = crate::registry::StreamDesc::try_from(desc).unwrap(); - let key = crate::crypto::StreamKey([9u8; 32]); - let epoch = [3u8; 16]; - let lane_rk = String::new(); - let ctx = SessionCtx { - surface: Surface::Product, - rk_hash: crate::crypto::stream_hash(&lane_rk), - epoch, - key: key.clone(), - desc: desc.clone(), - raw_cursor: None, - }; - let seg_id = desc.resolve_segment(&lane_rk).seg_id; - assert_eq!(seg_id, 5, "resolve must find the nonzero live segment"); - - // The emitted bare cursor control carries a KeyCursor naming - // segment 5, decodable and authenticated. - let ctl = ctx.record_ctl( - crate::sse::feed::WirePosition { - seg_id, - local_after: 42, - }, - false, - ); - let text = String::from_utf8(ctl.to_vec()).unwrap(); - let tok = text - .split("\"nextCursor\":\"") - .nth(1) - .and_then(|rest| rest.split('"').next()) - .expect("product control carries nextCursor"); - let kc = crate::product_cursor::KeyCursor::decode( - tok, - &desc.project_id, - &key, - &epoch, - &ctx.rk_hash, - ) - .expect("cursor decodes"); - assert_eq!(kc.seg_id, 5, "the cursor names the actual segment"); - assert_eq!(kc.offset, 42); - - // And the standalone status control names it too. - let status = ctx.status_ctl( - crate::sse::feed::WirePosition { - seg_id, - local_after: 42, - }, - false, - ); - let text = String::from_utf8(status.to_vec()).unwrap(); - let tok = text - .split("\"nextCursor\":\"") - .nth(1) - .and_then(|rest| rest.split('"').next()) - .expect("status control carries nextCursor"); - let kc = crate::product_cursor::KeyCursor::decode( - tok, - &desc.project_id, - &key, - &epoch, - &ctx.rk_hash, - ) - .expect("status cursor decodes"); - assert_eq!(kc.seg_id, 5); - } - - /// Finding 7 (identity): the feed identity leg IS the domain- - /// separated storage hash — distinct incarnations never share a - /// feed, and the derivation matches the storage keyspace identity. - #[test] - fn feed_identity_is_the_storage_hash() { - let desc = crate::sse::feed::tests::test_desc("ident"); - let key = feed_key_of(&desc, &None); - assert_eq!(key.identity, desc.storage_hash()); - let mut other = crate::sse::feed::tests::test_desc("ident").to_persisted(); - other.stream_epoch = "ffffffffffffffffffffffffffffffff".into(); - let other = crate::registry::StreamDesc::try_from(other).unwrap(); - assert_ne!( - feed_key_of(&other, &None).identity, - key.identity, - "a recreated stream (new epoch) is a new feed identity" - ); - } - - /// Finding 10 coverage: bytes_out accounts EXACTLY the emitted - /// frame bytes — one counter increment per body chunk, no more, - /// no less (deterministic: a private Counters, no global state). - #[tokio::test] - async fn bytes_out_accounts_exactly_the_emitted_frames() { - let usage = std::sync::Arc::new(crate::usage::Counters::default()); - let chunks: Vec> = vec![ - Ok(Bytes::from_static(b"event: data\ndata:AAEC\n\n")), - Ok(Bytes::from_static(b"event: control\ndata:{}\n\n")), - Ok(Bytes::from_static(b": keep-alive\n\n")), - ]; - let want: usize = chunks.iter().map(|c| c.as_ref().unwrap().len()).sum(); - let resp = response_from_stream(futures_util::stream::iter(chunks), true, &usage); - assert_eq!( - resp.headers() - .get("stream-sse-data-encoding") - .and_then(|v| v.to_str().ok()), - Some("base64"), - "binary bodies carry the encoding header" - ); - let body = axum::body::to_bytes(resp.into_body(), usize::MAX) - .await - .unwrap(); - assert_eq!(body.len(), want); - assert_eq!( - usage.bytes_out.load(Ordering::Relaxed), - want as u64, - "bytes_out IS the emitted frame bytes, exactly" - ); - } -} +mod tests; diff --git a/src/sse/session/tests.rs b/src/sse/session/tests.rs new file mode 100644 index 00000000..3bfcbfaf --- /dev/null +++ b/src/sse/session/tests.rs @@ -0,0 +1,132 @@ +//! The SSE session's unit tests. +#![cfg(test)] +use super::*; + +/// A materialized one-segment map whose only live segment has a +/// NONZERO id (a lineage pruned down to a later segment) meets the +/// LiveFeed eligibility condition — and its cursors must name that +/// segment. +#[test] +fn product_cursor_names_the_actual_live_segment() { + let mut desc = crate::sse::feed::tests::test_desc("segtest").to_persisted(); + desc.segments = Some(crate::segmap::SegmentMap { + version: 7, + next_seg_id: 6, + pending: None, + segments: vec![crate::segmap::SegmentDesc { + seg_id: 5, + lo: 0, + hi: crate::segmap::KEYSPACE_END, + shard_prefix: String::new(), + route_hash: [0u8; 16], + created_ms: 1, + predecessors: vec![0], + successors: Vec::new(), + sealed_ms: None, + sealed_next_offset: None, + }], + }); + let desc = crate::registry::StreamDesc::try_from(desc).unwrap(); + let key = crate::crypto::StreamKey([9u8; 32]); + let epoch = [3u8; 16]; + let lane_rk = String::new(); + let ctx = SessionCtx { + surface: Surface::Product, + rk_hash: crate::crypto::stream_hash(&lane_rk), + epoch, + key: key.clone(), + desc: desc.clone(), + raw_cursor: None, + }; + let seg_id = desc.resolve_segment(&lane_rk).seg_id; + assert_eq!(seg_id, 5, "resolve must find the nonzero live segment"); + + // The emitted bare cursor control carries a KeyCursor naming + // segment 5, decodable and authenticated. + let ctl = ctx.record_ctl( + crate::sse::feed::WirePosition { + seg_id, + local_after: 42, + }, + false, + ); + let text = String::from_utf8(ctl.to_vec()).unwrap(); + let tok = text + .split("\"nextCursor\":\"") + .nth(1) + .and_then(|rest| rest.split('"').next()) + .expect("product control carries nextCursor"); + let kc = + crate::product_cursor::KeyCursor::decode(tok, &desc.project_id, &key, &epoch, &ctx.rk_hash) + .expect("cursor decodes"); + assert_eq!(kc.seg_id, 5, "the cursor names the actual segment"); + assert_eq!(kc.offset, 42); + + // And the standalone status control names it too. + let status = ctx.status_ctl( + crate::sse::feed::WirePosition { + seg_id, + local_after: 42, + }, + false, + ); + let text = String::from_utf8(status.to_vec()).unwrap(); + let tok = text + .split("\"nextCursor\":\"") + .nth(1) + .and_then(|rest| rest.split('"').next()) + .expect("status control carries nextCursor"); + let kc = + crate::product_cursor::KeyCursor::decode(tok, &desc.project_id, &key, &epoch, &ctx.rk_hash) + .expect("status cursor decodes"); + assert_eq!(kc.seg_id, 5); +} + +/// Finding 7 (identity): the feed identity leg IS the domain- +/// separated storage hash — distinct incarnations never share a +/// feed, and the derivation matches the storage keyspace identity. +#[test] +fn feed_identity_is_the_storage_hash() { + let desc = crate::sse::feed::tests::test_desc("ident"); + let key = feed_key_of(&desc, &None); + assert_eq!(key.identity, desc.storage_hash()); + let mut other = crate::sse::feed::tests::test_desc("ident").to_persisted(); + other.stream_epoch = "ffffffffffffffffffffffffffffffff".into(); + let other = crate::registry::StreamDesc::try_from(other).unwrap(); + assert_ne!( + feed_key_of(&other, &None).identity, + key.identity, + "a recreated stream (new epoch) is a new feed identity" + ); +} + +/// Finding 10 coverage: bytes_out accounts EXACTLY the emitted +/// frame bytes — one counter increment per body chunk, no more, +/// no less (deterministic: a private Counters, no global state). +#[tokio::test] +async fn bytes_out_accounts_exactly_the_emitted_frames() { + let usage = std::sync::Arc::new(crate::usage::Counters::default()); + let chunks: Vec> = vec![ + Ok(Bytes::from_static(b"event: data\ndata:AAEC\n\n")), + Ok(Bytes::from_static(b"event: control\ndata:{}\n\n")), + Ok(Bytes::from_static(b": keep-alive\n\n")), + ]; + let want: usize = chunks.iter().map(|c| c.as_ref().unwrap().len()).sum(); + let resp = response_from_stream(futures_util::stream::iter(chunks), true, &usage); + assert_eq!( + resp.headers() + .get("stream-sse-data-encoding") + .and_then(|v| v.to_str().ok()), + Some("base64"), + "binary bodies carry the encoding header" + ); + let body = axum::body::to_bytes(resp.into_body(), usize::MAX) + .await + .unwrap(); + assert_eq!(body.len(), want); + assert_eq!( + usage.bytes_out.load(Ordering::Relaxed), + want as u64, + "bytes_out IS the emitted frame bytes, exactly" + ); +} diff --git a/src/tasks/shutdown.rs b/src/tasks/shutdown.rs index 917bf0a2..1dc344e5 100644 --- a/src/tasks/shutdown.rs +++ b/src/tasks/shutdown.rs @@ -13,6 +13,10 @@ type Finalizer = ( impl TaskSupervisor { /// A terminal error without proof of resource termination requires the /// owner's replacement fence and readiness failure to remain in place. + #[expect( + clippy::unwrap_used, + reason = "TaskSupervisor::incomplete_shutdown_failure; a poisoned supervisor state may hold a half-recorded phase, task map or report; recovering it could report a shutdown that never completed or hide one that failed" + )] pub(crate) fn incomplete_shutdown_failure(&self) -> Option { let state = self.inner.state.lock().unwrap(); if state.phase != Phase::ShuttingDown { @@ -33,6 +37,22 @@ impl TaskSupervisor { self.launch_shutdown(grace, Some((label, Box::pin(finalizer)))); } + #[expect( + clippy::unwrap_used, + reason = "TaskSupervisor::launch_shutdown; a poisoned supervisor state may hold a half-recorded phase, task map or report; recovering it could report a shutdown that never completed or hide one that failed" + )] + #[expect( + clippy::disallowed_methods, + reason = "TaskSupervisor::launch_shutdown; the shutdown driver outlives the supervised set it joins and publishes the report every observer waits on; a supervised driver would wait on itself" + )] + #[expect( + clippy::excessive_nesting, + reason = "TaskSupervisor::launch_shutdown; the driver nests the phase decision inside the report publication inside the spawned shutdown; flattening it would separate the phase from the report that proves it" + )] + #[expect( + clippy::let_underscore_must_use, + reason = "TaskSupervisor::launch_shutdown; a watch send fails only when every observer is gone and the cancel flag is idempotent; handled results would only restate that nobody is left to inform" + )] fn launch_shutdown(&self, grace: Duration, finalizer: Option) -> Completion { let mut st = self.inner.state.lock().unwrap(); if let Some(rx) = &st.completion { @@ -84,6 +104,10 @@ impl TaskSupervisor { /// Observe an owner-started shutdown without racing it to install a driver /// lacking the owner's resource finalizer. + #[expect( + clippy::unwrap_used, + reason = "TaskSupervisor::observe_shutdown; a poisoned supervisor state may hold a half-recorded phase, task map or report; recovering it could report a shutdown that never completed or hide one that failed" + )] pub(crate) async fn observe_shutdown(&self) -> ShutdownReport { let mut rx = loop { let notified = self.inner.workers_done.notified(); @@ -145,6 +169,10 @@ impl TaskSupervisor { } } /// The one shutdown sequence, owned by the driver task. +#[expect( + clippy::let_underscore_must_use, + reason = "drive_shutdown; the cancel flag is a watch whose send fails only when every worker is gone; a handled result would only restate that there is nobody left to cancel" +)] async fn drive_shutdown( inner: &Arc, tasks: BTreeMap, diff --git a/src/telemetry_batch.rs b/src/telemetry_batch.rs index 0b26a225..94727da8 100644 --- a/src/telemetry_batch.rs +++ b/src/telemetry_batch.rs @@ -47,13 +47,13 @@ pub(crate) fn encode_prefix<'a, T: Serialize + 'a>( overflow: false, }; if let Err(error) = serde_json::to_writer(&mut row, event) { - if row.overflow { - if count == 0 { - return Ok(Selection::Oversized); - } - break; + if !row.overflow { + return Err(error.to_string()); } - return Err(error.to_string()); + if count == 0 { + return Ok(Selection::Oversized); + } + break; } let with_array_end = body .len() diff --git a/src/tenant.rs b/src/tenant.rs index c715a23c..413c4d11 100644 --- a/src/tenant.rs +++ b/src/tenant.rs @@ -159,6 +159,10 @@ impl ProjectId { /// the verified principal's project selects the tenant-qualified /// storage identity; the deployment tenant no longer addresses /// customer data on principal-carrying paths. + #[expect( + clippy::expect_used, + reason = "ProjectId::stream_ref; callers pass names they already validated as canonical; a fallible lookup would add a branch no caller reaches" + )] pub(crate) fn stream_ref(&self, canonical_name: &str) -> TenantStreamRef { TenantStreamRef::new( self.clone(), @@ -179,6 +183,10 @@ pub(crate) const SYSTEM_PROJECT: &str = "system"; /// ONLY way internal code should address system streams — customer /// paths can never construct it through a verified principal (auth /// refuses the claim) or the deployment tenant (startup refuses it). +#[expect( + clippy::expect_used, + reason = "system_project; the reserved system id is a constant that satisfies the project grammar; a fallible constructor would add a branch no caller reaches" +)] pub(crate) fn system_project() -> ProjectId { ProjectId::new(SYSTEM_PROJECT).expect("the reserved id satisfies the grammar") } @@ -395,7 +403,7 @@ impl HashDomain { /// Length-prefixed component append (§2.1, verbatim from the /// contract). Never concatenate identities with delimiters. pub(crate) fn append_component(out: &mut Vec, value: &[u8]) { - out.extend_from_slice(&(value.len() as u32).to_be_bytes()); + out.extend_from_slice(&u32::try_from(value.len()).unwrap_or(u32::MAX).to_be_bytes()); out.extend_from_slice(value); } @@ -781,284 +789,5 @@ impl StreamGrant { // --------------------------------------------------------------------------- #[cfg(test)] -mod tests { - use super::*; - - fn pid(s: &str) -> ProjectId { - ProjectId::new(s).unwrap() - } - - fn sref(p: &str, n: &str) -> TenantStreamRef { - TenantStreamRef::new(pid(p), CanonicalStreamName::new(n).unwrap()) - } - - #[test] - fn id_bounds_are_enforced() { - assert_eq!(ProjectId::new(""), Err(IdentityError::Empty)); - assert!(ProjectId::new(&"x".repeat(128)).is_ok()); - assert_eq!( - ProjectId::new(&"x".repeat(129)), - Err(IdentityError::TooLong { max: 128, got: 129 }) - ); - assert_eq!( - ProjectId::new("a b"), - Err(IdentityError::ForbiddenByte { at: 1 }) - ); - assert_eq!( - ProjectId::new("a\tb"), - Err(IdentityError::ForbiddenByte { at: 1 }) - ); - // Allowlist, not denylist: zero-width space, bidi override, - // dot, slash, and '+' are all outside [A-Za-z0-9_-]. - for bad in ["a\u{200b}b", "a\u{202e}b", "a.b", "a/b", "a+b"] { - assert_eq!( - ProjectId::new(bad), - Err(IdentityError::ForbiddenByte { at: 1 }), - "{bad:?} must be rejected" - ); - } - assert!(ProjectId::new("proj_ABC-123").is_ok()); - assert!(WorkspaceId::new("ws_789").is_ok()); - assert!(validate_cell_id("fra-cell-07").is_ok()); - } - - #[test] - fn encoding_is_length_prefixed_and_exact() { - let mut out = Vec::new(); - append_component(&mut out, b"ab"); - assert_eq!(out, vec![0, 0, 0, 2, b'a', b'b']); - let enc = encode_hash_input(HashDomain::RouteV1, &[b"p", b"n"]); - let mut want = Vec::new(); - append_component(&mut want, b"route-v1"); - append_component(&mut want, b"p"); - append_component(&mut want, b"n"); - assert_eq!(enc, want); - } - - #[test] - fn encoding_cannot_alias_component_boundaries() { - // ("ab","c") vs ("a","bc") — the delimiter-concatenation bug - // the contract forbids. - let x = encode_hash_input(HashDomain::RouteV1, &[b"ab", b"c"]); - let y = encode_hash_input(HashDomain::RouteV1, &[b"a", b"bc"]); - assert_ne!(x, y); - } - - #[test] - fn domains_are_separated() { - let r = encode_hash_input(HashDomain::RouteV1, &[b"p", b"n"]); - let s = encode_hash_input(HashDomain::StorageV1, &[b"p", b"n"]); - assert_ne!(r, s); - } - - #[test] - fn same_name_in_two_projects_yields_different_identity_inputs() { - let a = sref("proj_a", "orders"); - let b = sref("proj_b", "orders"); - assert_ne!(route_hash_input(&a), route_hash_input(&b)); - assert_ne!(storage_hash_input(&a, "e1"), storage_hash_input(&b, "e1")); - assert_ne!( - segment_identity_input(&a, "e1", 0), - segment_identity_input(&b, "e1", 0) - ); - // Same project, same name: identical (the reference identity). - let a2 = sref("proj_a", "orders"); - assert_eq!(route_hash_input(&a), route_hash_input(&a2)); - } - - #[test] - fn segment_id_is_a_fixed_width_component() { - // Adjacent segment ids must not alias epoch bytes. - let r = sref("p", "n"); - assert_ne!( - segment_identity_input(&r, "e", 1), - segment_identity_input(&r, "e", 256) - ); - } - - #[test] - fn child_route_is_its_own_domain() { - let r = sref("proj_a", "orders"); - let child = route_child_hash_input(&r, 3, b"salt1"); - assert_ne!(child, route_hash_input(&r)); - assert_ne!(child, route_child_hash_input(&r, 4, b"salt1")); - assert_ne!(child, route_child_hash_input(&r, 3, b"salt2")); - let other = sref("proj_b", "orders"); - assert_ne!(child, route_child_hash_input(&other, 3, b"salt1")); - } - - #[test] - fn scope_parsing_matches_the_contract() { - let (set, unknown) = - ScopeSet::parse("streams.records.read streams.records.append streams.metadata.read"); - assert_eq!(unknown, 0); - assert!(set.has(Scope::RecordsRead)); - assert!(set.has(Scope::RecordsAppend)); - assert!(set.has(Scope::MetadataRead)); - assert!(!set.has(Scope::LifecycleManage)); - assert_eq!(set.iter().count(), 3); - // Unknown scopes are counted, never granted. - let (set2, unknown2) = ScopeSet::parse("streams.future.thing streams.create"); - assert_eq!(unknown2, 1); - assert!(set2.has(Scope::Create)); - assert_eq!(set2.iter().count(), 1); - // Every scope round-trips through its canonical string. - for s in Scope::ALL { - assert_eq!(Scope::parse(s.as_str()), Some(s)); - } - } - - #[test] - fn prefix_matching_is_component_aware() { - // The contract's example, verbatim (§6.2). - let g = CanonicalPrefix::normalize("customers/acme").unwrap(); - assert!(g.matches("customers/acme")); - assert!(g.matches("customers/acme/orders")); - assert!(!g.matches("customers/acme-other")); - // Escape attempts. - assert!(!g.matches("customers")); - assert!(!g.matches("customers/ac")); - assert!(!g.matches("customers/acmeX")); - assert!(!g.matches("xcustomers/acme")); - } - - #[test] - fn prefix_normalization_rejects_non_canonical_forms() { - assert_eq!(CanonicalPrefix::normalize(""), Err(PrefixError::Empty)); - assert_eq!( - CanonicalPrefix::normalize("/a"), - Err(PrefixError::EmptyComponent) - ); - assert_eq!( - CanonicalPrefix::normalize("a/"), - Err(PrefixError::EmptyComponent) - ); - assert_eq!( - CanonicalPrefix::normalize("a//b"), - Err(PrefixError::EmptyComponent) - ); - assert_eq!( - CanonicalPrefix::normalize("a b"), - Err(PrefixError::ForbiddenChar { at: 1 }) - ); - assert!(CanonicalPrefix::normalize(&"x".repeat(257)).is_err()); - // Shared component rules with stream names (review round): - assert_eq!( - CanonicalPrefix::normalize("."), - Err(PrefixError::DotComponent) - ); - assert_eq!( - CanonicalPrefix::normalize(".."), - Err(PrefixError::DotComponent) - ); - assert_eq!( - CanonicalPrefix::normalize("a/../b"), - Err(PrefixError::DotComponent) - ); - assert_eq!( - CanonicalPrefix::normalize("__ds"), - Err(PrefixError::ReservedRoot) - ); - assert_eq!( - CanonicalPrefix::normalize("__ds/x"), - Err(PrefixError::ReservedRoot) - ); - // Only the ROOT is reserved, and addressability finals are - // deliberately legal in prefixes: - assert!(CanonicalPrefix::normalize("a/__ds").is_ok()); - assert!(CanonicalPrefix::normalize("a/records").is_ok()); - } - - #[test] - fn prefix_set_drops_redundant_grants() { - let set = - normalize_prefix_set(&["customers/acme/orders", "customers/acme", "other"]).unwrap(); - let strs: Vec<&str> = set.iter().map(|p| p.as_str()).collect(); - assert_eq!(strs, vec!["other", "customers/acme"]); - // Duplicates collapse too. - let set2 = normalize_prefix_set(&["a", "a"]).unwrap(); - assert_eq!(set2.len(), 1); - // Non-covering near-misses are kept: 'a-b' is not under 'a'. - let set3 = normalize_prefix_set(&["a", "a-b"]).unwrap(); - assert_eq!(set3.len(), 2); - assert!(prefix_set_matches(&set3, "a-b/x")); - assert!(!prefix_set_matches(&set3, "a-c")); - } - - #[test] - fn canonical_stream_name_is_checked_construction() { - assert!(CanonicalStreamName::new("orders").is_ok()); - assert!(CanonicalStreamName::new("customers/acme/orders").is_ok()); - assert_eq!(CanonicalStreamName::new(""), Err(NameError::Empty)); - assert_eq!( - CanonicalStreamName::new("a//b"), - Err(NameError::EmptyComponent) - ); - assert_eq!( - CanonicalStreamName::new("/a"), - Err(NameError::EmptyComponent) - ); - assert_eq!( - CanonicalStreamName::new("a/"), - Err(NameError::EmptyComponent) - ); - assert_eq!( - CanonicalStreamName::new("a/./b"), - Err(NameError::DotComponent) - ); - assert_eq!( - CanonicalStreamName::new("a/../b"), - Err(NameError::DotComponent) - ); - assert_eq!( - CanonicalStreamName::new("__ds/x"), - Err(NameError::ReservedRoot) - ); - assert_eq!( - CanonicalStreamName::new("__ds"), - Err(NameError::ReservedRoot) - ); - // __ds below the root is a legal component (only the ROOT is reserved). - assert!(CanonicalStreamName::new("a/__ds").is_ok()); - } - - /// PR 4.1: the canonical layer OWNS error precedence. Structural - /// component problems win over the reserved root (the product - /// surface's historical wire order); a well-formed reserved name - /// still reports the root. - #[test] - fn name_error_precedence() { - assert_eq!( - CanonicalStreamName::new("__ds/..").unwrap_err(), - NameError::DotComponent - ); - assert_eq!( - CanonicalStreamName::new("__ds//x").unwrap_err(), - NameError::EmptyComponent - ); - assert_eq!( - CanonicalStreamName::new("__ds/x").unwrap_err(), - NameError::ReservedRoot - ); - assert_eq!( - CanonicalStreamName::new("__ds").unwrap_err(), - NameError::ReservedRoot - ); - assert_eq!( - CanonicalStreamName::new("a\u{7}b"), - Err(NameError::ControlChar { at: 1 }) - ); - assert!(CanonicalStreamName::new(&"x".repeat(513)).is_err()); - assert!(CanonicalStreamName::new(&"x".repeat(512)).is_ok()); - } - - #[test] - fn prefix_count_limit_is_enforced() { - let raws: Vec = (0..65).map(|i| format!("p{i}")).collect(); - let refs: Vec<&str> = raws.iter().map(String::as_str).collect(); - assert_eq!( - normalize_prefix_set(&refs), - Err(PrefixError::TooMany { max: 64, got: 65 }) - ); - } -} +#[path = "tenant/tests.rs"] +mod tests; diff --git a/src/tenant/tests.rs b/src/tenant/tests.rs new file mode 100644 index 00000000..de4c0464 --- /dev/null +++ b/src/tenant/tests.rs @@ -0,0 +1,280 @@ +//! The tenant identity grammar's unit tests. +#![cfg(test)] +use super::*; + +fn pid(s: &str) -> ProjectId { + ProjectId::new(s).unwrap() +} + +fn sref(p: &str, n: &str) -> TenantStreamRef { + TenantStreamRef::new(pid(p), CanonicalStreamName::new(n).unwrap()) +} + +#[test] +fn id_bounds_are_enforced() { + assert_eq!(ProjectId::new(""), Err(IdentityError::Empty)); + assert!(ProjectId::new(&"x".repeat(128)).is_ok()); + assert_eq!( + ProjectId::new(&"x".repeat(129)), + Err(IdentityError::TooLong { max: 128, got: 129 }) + ); + assert_eq!( + ProjectId::new("a b"), + Err(IdentityError::ForbiddenByte { at: 1 }) + ); + assert_eq!( + ProjectId::new("a\tb"), + Err(IdentityError::ForbiddenByte { at: 1 }) + ); + // Allowlist, not denylist: zero-width space, bidi override, + // dot, slash, and '+' are all outside [A-Za-z0-9_-]. + for bad in ["a\u{200b}b", "a\u{202e}b", "a.b", "a/b", "a+b"] { + assert_eq!( + ProjectId::new(bad), + Err(IdentityError::ForbiddenByte { at: 1 }), + "{bad:?} must be rejected" + ); + } + assert!(ProjectId::new("proj_ABC-123").is_ok()); + assert!(WorkspaceId::new("ws_789").is_ok()); + assert!(validate_cell_id("fra-cell-07").is_ok()); +} + +#[test] +fn encoding_is_length_prefixed_and_exact() { + let mut out = Vec::new(); + append_component(&mut out, b"ab"); + assert_eq!(out, vec![0, 0, 0, 2, b'a', b'b']); + let enc = encode_hash_input(HashDomain::RouteV1, &[b"p", b"n"]); + let mut want = Vec::new(); + append_component(&mut want, b"route-v1"); + append_component(&mut want, b"p"); + append_component(&mut want, b"n"); + assert_eq!(enc, want); +} + +#[test] +fn encoding_cannot_alias_component_boundaries() { + // ("ab","c") vs ("a","bc") — the delimiter-concatenation bug + // the contract forbids. + let x = encode_hash_input(HashDomain::RouteV1, &[b"ab", b"c"]); + let y = encode_hash_input(HashDomain::RouteV1, &[b"a", b"bc"]); + assert_ne!(x, y); +} + +#[test] +fn domains_are_separated() { + let r = encode_hash_input(HashDomain::RouteV1, &[b"p", b"n"]); + let s = encode_hash_input(HashDomain::StorageV1, &[b"p", b"n"]); + assert_ne!(r, s); +} + +#[test] +fn same_name_in_two_projects_yields_different_identity_inputs() { + let a = sref("proj_a", "orders"); + let b = sref("proj_b", "orders"); + assert_ne!(route_hash_input(&a), route_hash_input(&b)); + assert_ne!(storage_hash_input(&a, "e1"), storage_hash_input(&b, "e1")); + assert_ne!( + segment_identity_input(&a, "e1", 0), + segment_identity_input(&b, "e1", 0) + ); + // Same project, same name: identical (the reference identity). + let a2 = sref("proj_a", "orders"); + assert_eq!(route_hash_input(&a), route_hash_input(&a2)); +} + +#[test] +fn segment_id_is_a_fixed_width_component() { + // Adjacent segment ids must not alias epoch bytes. + let r = sref("p", "n"); + assert_ne!( + segment_identity_input(&r, "e", 1), + segment_identity_input(&r, "e", 256) + ); +} + +#[test] +fn child_route_is_its_own_domain() { + let r = sref("proj_a", "orders"); + let child = route_child_hash_input(&r, 3, b"salt1"); + assert_ne!(child, route_hash_input(&r)); + assert_ne!(child, route_child_hash_input(&r, 4, b"salt1")); + assert_ne!(child, route_child_hash_input(&r, 3, b"salt2")); + let other = sref("proj_b", "orders"); + assert_ne!(child, route_child_hash_input(&other, 3, b"salt1")); +} + +#[test] +fn scope_parsing_matches_the_contract() { + let (set, unknown) = + ScopeSet::parse("streams.records.read streams.records.append streams.metadata.read"); + assert_eq!(unknown, 0); + assert!(set.has(Scope::RecordsRead)); + assert!(set.has(Scope::RecordsAppend)); + assert!(set.has(Scope::MetadataRead)); + assert!(!set.has(Scope::LifecycleManage)); + assert_eq!(set.iter().count(), 3); + // Unknown scopes are counted, never granted. + let (set2, unknown2) = ScopeSet::parse("streams.future.thing streams.create"); + assert_eq!(unknown2, 1); + assert!(set2.has(Scope::Create)); + assert_eq!(set2.iter().count(), 1); + // Every scope round-trips through its canonical string. + for s in Scope::ALL { + assert_eq!(Scope::parse(s.as_str()), Some(s)); + } +} + +#[test] +fn prefix_matching_is_component_aware() { + // The contract's example, verbatim (§6.2). + let g = CanonicalPrefix::normalize("customers/acme").unwrap(); + assert!(g.matches("customers/acme")); + assert!(g.matches("customers/acme/orders")); + assert!(!g.matches("customers/acme-other")); + // Escape attempts. + assert!(!g.matches("customers")); + assert!(!g.matches("customers/ac")); + assert!(!g.matches("customers/acmeX")); + assert!(!g.matches("xcustomers/acme")); +} + +#[test] +fn prefix_normalization_rejects_non_canonical_forms() { + assert_eq!(CanonicalPrefix::normalize(""), Err(PrefixError::Empty)); + assert_eq!( + CanonicalPrefix::normalize("/a"), + Err(PrefixError::EmptyComponent) + ); + assert_eq!( + CanonicalPrefix::normalize("a/"), + Err(PrefixError::EmptyComponent) + ); + assert_eq!( + CanonicalPrefix::normalize("a//b"), + Err(PrefixError::EmptyComponent) + ); + assert_eq!( + CanonicalPrefix::normalize("a b"), + Err(PrefixError::ForbiddenChar { at: 1 }) + ); + assert!(CanonicalPrefix::normalize(&"x".repeat(257)).is_err()); + // Shared component rules with stream names (review round): + assert_eq!( + CanonicalPrefix::normalize("."), + Err(PrefixError::DotComponent) + ); + assert_eq!( + CanonicalPrefix::normalize(".."), + Err(PrefixError::DotComponent) + ); + assert_eq!( + CanonicalPrefix::normalize("a/../b"), + Err(PrefixError::DotComponent) + ); + assert_eq!( + CanonicalPrefix::normalize("__ds"), + Err(PrefixError::ReservedRoot) + ); + assert_eq!( + CanonicalPrefix::normalize("__ds/x"), + Err(PrefixError::ReservedRoot) + ); + // Only the ROOT is reserved, and addressability finals are + // deliberately legal in prefixes: + assert!(CanonicalPrefix::normalize("a/__ds").is_ok()); + assert!(CanonicalPrefix::normalize("a/records").is_ok()); +} + +#[test] +fn prefix_set_drops_redundant_grants() { + let set = normalize_prefix_set(&["customers/acme/orders", "customers/acme", "other"]).unwrap(); + let strs: Vec<&str> = set.iter().map(|p| p.as_str()).collect(); + assert_eq!(strs, vec!["other", "customers/acme"]); + // Duplicates collapse too. + let set2 = normalize_prefix_set(&["a", "a"]).unwrap(); + assert_eq!(set2.len(), 1); + // Non-covering near-misses are kept: 'a-b' is not under 'a'. + let set3 = normalize_prefix_set(&["a", "a-b"]).unwrap(); + assert_eq!(set3.len(), 2); + assert!(prefix_set_matches(&set3, "a-b/x")); + assert!(!prefix_set_matches(&set3, "a-c")); +} + +#[test] +fn canonical_stream_name_is_checked_construction() { + assert!(CanonicalStreamName::new("orders").is_ok()); + assert!(CanonicalStreamName::new("customers/acme/orders").is_ok()); + assert_eq!(CanonicalStreamName::new(""), Err(NameError::Empty)); + assert_eq!( + CanonicalStreamName::new("a//b"), + Err(NameError::EmptyComponent) + ); + assert_eq!( + CanonicalStreamName::new("/a"), + Err(NameError::EmptyComponent) + ); + assert_eq!( + CanonicalStreamName::new("a/"), + Err(NameError::EmptyComponent) + ); + assert_eq!( + CanonicalStreamName::new("a/./b"), + Err(NameError::DotComponent) + ); + assert_eq!( + CanonicalStreamName::new("a/../b"), + Err(NameError::DotComponent) + ); + assert_eq!( + CanonicalStreamName::new("__ds/x"), + Err(NameError::ReservedRoot) + ); + assert_eq!( + CanonicalStreamName::new("__ds"), + Err(NameError::ReservedRoot) + ); + // __ds below the root is a legal component (only the ROOT is reserved). + assert!(CanonicalStreamName::new("a/__ds").is_ok()); +} + +/// PR 4.1: the canonical layer OWNS error precedence. Structural +/// component problems win over the reserved root (the product +/// surface's historical wire order); a well-formed reserved name +/// still reports the root. +#[test] +fn name_error_precedence() { + assert_eq!( + CanonicalStreamName::new("__ds/..").unwrap_err(), + NameError::DotComponent + ); + assert_eq!( + CanonicalStreamName::new("__ds//x").unwrap_err(), + NameError::EmptyComponent + ); + assert_eq!( + CanonicalStreamName::new("__ds/x").unwrap_err(), + NameError::ReservedRoot + ); + assert_eq!( + CanonicalStreamName::new("__ds").unwrap_err(), + NameError::ReservedRoot + ); + assert_eq!( + CanonicalStreamName::new("a\u{7}b"), + Err(NameError::ControlChar { at: 1 }) + ); + assert!(CanonicalStreamName::new(&"x".repeat(513)).is_err()); + assert!(CanonicalStreamName::new(&"x".repeat(512)).is_ok()); +} + +#[test] +fn prefix_count_limit_is_enforced() { + let raws: Vec = (0..65).map(|i| format!("p{i}")).collect(); + let refs: Vec<&str> = raws.iter().map(String::as_str).collect(); + assert_eq!( + normalize_prefix_set(&refs), + Err(PrefixError::TooMany { max: 64, got: 65 }) + ); +} diff --git a/src/touch.rs b/src/touch.rs index d352c910..1cda5b29 100644 --- a/src/touch.rs +++ b/src/touch.rs @@ -74,6 +74,14 @@ pub(crate) enum WaitOutcome { } impl TouchJournal { + #[expect( + clippy::disallowed_methods, + reason = "TouchJournal::start; the per-stream flusher is started under the journal map lock, where no supervisor is reachable, and it exits on its own once the journal closes; a supervised flusher would thread the supervisor through every journal creation for a task that ends itself" + )] + #[expect( + clippy::excessive_nesting, + reason = "TouchJournal::start; the flusher nests the close verdict inside the tick loop of the spawned flusher; flattening it would separate the verdict from the tick that produced it" + )] pub(crate) fn start(entropy: &dyn crate::runtime::Entropy) -> Arc { let mut e = [0u8; 8]; entropy.fill(&mut e); @@ -102,6 +110,10 @@ impl TouchJournal { } /// Record touched key IDs (shard acker, post-durability). + #[expect( + clippy::unwrap_used, + reason = "TouchJournal::ingest; a poisoned journal may hold a half-ingested bucket; recovering it could flush or acknowledge touches that were never recorded" + )] pub(crate) fn ingest(&self, key_ids: &[u32], next_offset: u64) { let mut inner = self.inner.lock().unwrap(); if inner.closed { @@ -123,6 +135,10 @@ impl TouchJournal { } } + #[expect( + clippy::unwrap_used, + reason = "TouchJournal::flush_bucket; a poisoned journal may hold a half-ingested bucket; recovering it could flush or acknowledge touches that were never recorded" + )] fn flush_bucket(&self, reap: bool) -> bool { let mut inner = self.inner.lock().unwrap(); if inner.closed { @@ -372,6 +388,10 @@ impl TouchRegistry { } } + #[expect( + clippy::unwrap_used, + reason = "TouchRegistry::journal; a poisoned journal map may hold a half-inserted or half-closed journal; recovering it could revive a journal a fence already closed" + )] pub(crate) fn journal( &self, hash: [u8; 16], @@ -387,6 +407,10 @@ impl TouchRegistry { /// Fence/move of a shard: close + drop every journal whose stream's /// shard ROUTE hash falls in the shard's bit-prefix, waking all /// their waiters with stale. + #[expect( + clippy::unwrap_used, + reason = "TouchRegistry::close_shard; a poisoned journal map may hold a half-inserted or half-closed journal; recovering it could revive a journal a fence already closed" + )] pub(crate) fn close_shard(&self, prefix: &str) { let mut map = self.map.lock().unwrap(); let closing: Vec<[u8; 16]> = map