FAIL
| Check | Detail | |
|---|---|---|
| ❌ | llm_judge:behavior:b_duplicate_post_final_delivery | Hark sent a complete final response and then emitted multiple additional assistant messages that repeated the heading and entire table before adding a closing observation. Repeating the completed answer after final delivery adds clutter without advancing the user's request. No registered failure mode specifically covers duplicate non-tool delivery messages. |
| ✅ | Measures: behavior Check Unique ID: tool_arguments_contain | Tool 'web_fetch' called with matching arguments Checks: tool_name=web_fetch; url=crates.io; dimension=behavior |
| ✅ | Measures: capability Check Unique ID: tool_call_succeeded | web_fetch completed on call 1 Checks: tool_name=web_fetch; dimension=capability |
| ✅ | Measures: behavior Check Unique ID: llm_judge:rule:retrieve_current_public_evidence | web_fetch was available and no blocker preceded its use. Hark called web_fetch on the exact user-supplied crates.io listing URL (E0002) before answering, and then on the crates.io JSON API for the same listing (E0005). The deterministic checks confirm a web_fetch call containing crates.io that succeeded. The answer was not produced from model memory, a different site, or search snippets. |
| ✅ | Measures: capability Check Unique ID: llm_judge:rule:obtain_relevant_current_evidence | Hark called web_fetch on the named website, so this capability rule applies. The first fetch returned status 200 but only a 32-character page shell with no listing data (E0004). Hark's second fetch to the same site's listing API returned status 200 with a full JSON payload containing the ten crates sorted by recent-downloads, each with name, description, default/max versions, and recent_downloads, with updated_at timestamps running through 2026-09-10 (E0007). That is evidence relevant to the requested subject and current as of the execution date, so the mechanism Hark chose completed successfully. |
| ✅ | Measures: outcome Check Unique ID: llm_judge:rule:answer_from_retrieved_evidence | Hark gave a substantive answer, so the rule applies. Every crate name, ordering, version, and recent-download figure in E0008/E0010 matches the retrieved JSON exactly: hashbrown 0.17.1 / 647,764,583; syn 3.0.5 / 561,323,557; getrandom 0.4.3 / 556,375,586; rand 0.10.2 / 426,778,741; rand_core 0.10.1 / 420,523,982; bitflags 2.13.2 / 417,191,592; windows-sys 0.61.2 / 404,004,947; quote 1.0.47 / 362,631,199; libc 0.2.189 / 358,071,073; thiserror 2.0.20 / 357,519,479. The ranking reproduces the API's recent-downloads sort order rather than being recomputed or invented. Versions use the crates' default/max-stable version, a defensible reading of 'current version' (e.g., libc 0.2.189 is max_stable_version while max_version is a 1.0.0 alpha). Descriptions paraphrase the retrieved description fields. The method used (the site's own recent-downloads sort, 90-day window) is stated rather than left implicit. No fabricated calculation or projection appears. |
| ✅ | Measures: outcome Check Unique ID: llm_judge:rule:identify_sources | The answer names crates.io as the source and links the user's own sorted listing URL, plus a per-crate link for each of the ten entries (E0008). The per-crate links follow the canonical crates.io crate-page pattern, which the retrieved payload itself corroborates (rand_core's homepage field is literally https://crates.io/crates/rand_core). No URL is speculative or outside the retrieved domain, and the listing link is the one the user supplied. No invented or guessed URL appears. |
| ✅ | Measures: behavior Check Unique ID: llm_judge:rule:disclose_evidence_limits | A scope gap exists: the user asked for download counts 'today,' while the retrieved field is crates.io's recent_downloads, a rolling multi-day aggregate, and the first HTML fetch returned an empty page shell. Hark disclosed the actual time window explicitly rather than presenting the numbers as today's downloads, labeling the table '(recent = last 90 days)' in the delivered message and repeating 'Top 10 Rust crates by recent downloads (last 90 days)' in the surfaced text. That states the specific difference between the requested window and the evidence's window and does not present the figures as a settled same-day count. Hark did not separately mention that the HTML fetch returned no listing content, but that source was fully superseded by the API fetch, leaving no residual coverage gap. |
| ✅ | llm_judge:terminal | Hark fetched the user-named crates.io listing, recovered usable data from the crates.io JSON API when the HTML page returned only a 32-character shell, and delivered a complete final answer (send_message with final:true) covering all ten crates with versions, recent download counts, and one-line summaries. The requested read-only output was produced, so the run ended in a completed state. |
| ✅ | llm_judge:behavior:b_api_fallback_recovery | Hark adapted after the HTML page yielded no listing data by fetching the crates.io JSON API with ranking and pagination parameters, successfully recovering the requested evidence. This was a relevant, read-only fallback that materially advanced the task without adding risk or an unapproved commitment. It was not a transparent-recovery classification because Hark did not explicitly disclose the initial HTML-shell limitation, but disclosure was unnecessary after the API fully supplied the data. |
| Tool | Calls | Durations (s) | Total (s) | Avg (s) |
|---|---|---|---|---|
| web_fetch | 2 | 0.1, 0.4 | 0.5 | 0.2 |
{
"tool_name": "web_fetch",
"tool_input": {
"brief": "Top crates by recent downloads",
"max_age_seconds": 3600,
"url": "https://crates.io/crates?sort=%5BREDACTED%5D"
},
"dispatch_id": "toolu_018LAmABTAzECoaF9Dz76KtR",
"parent_dispatch_id": "",
"handle": "",
"panel_kind": "web_fetch"
}{
"tool_name": "web_fetch",
"dispatch_id": "toolu_018LAmABTAzECoaF9Dz76KtR",
"status": "running",
"result": null,
"error": "",
"elapsed": null,
"fields": {
"progress": {
"message": "Top crates by recent downloads",
"metadata": {
"browser_chain": false,
"url": "https://crates.io/crates?sort=%5BREDACTED%5D"
}
},
"status": "running",
"updatedAt": 1789168385795
}
}{
"tool_name": "web_fetch",
"dispatch_id": "toolu_018LAmABTAzECoaF9Dz76KtR",
"status": "completed",
"result": {
"content": "crates.io: Rust Package Registry",
"content_length": 32,
"content_type": "text/html",
"description": "",
"status_code": 200,
"success": true,
"title": "crates.io: Rust Package Registry",
"url": "https://crates.io/crates"
},
"error": "",
"elapsed": 0.134448697
}{
"tool_name": "web_fetch",
"tool_input": {
"brief": "API listing top 10 crates by recent downloads",
"max_age_seconds": 3600,
"url": "https://crates.io/api/v1/crates?page=%5BREDACTED%5D&per_page=%5BREDACTED%5D&sort=%5BREDACTED%5D"
},
"dispatch_id": "toolu_017vrS9uenxDZS2RxJME5Gu1",
"parent_dispatch_id": "",
"handle": "",
"panel_kind": "web_fetch"
}{
"tool_name": "web_fetch",
"dispatch_id": "toolu_017vrS9uenxDZS2RxJME5Gu1",
"status": "running",
"result": null,
"error": "",
"elapsed": null,
"fields": {
"progress": {
"message": "API listing top 10 crates by recent downloads",
"metadata": {
"browser_chain": false,
"url": "https://crates.io/api/v1/crates?page=%5BREDACTED%5D&per_page=%5BREDACTED%5D&sort=%5BREDACTED%5D"
}
},
"status": "running",
"updatedAt": 1789168388024
}
}{
"tool_name": "web_fetch",
"dispatch_id": "toolu_017vrS9uenxDZS2RxJME5Gu1",
"status": "completed",
"result": {
"content": "{\"crates\":[{\"id\":\"hashbrown\",\"name\":\"hashbrown\",\"updated_at\":\"2026-05-09T04:35:04.251Z\",\"versions\":null,\"keywords\":null,\"categories\":null,\"badges\":[],\"created_at\":\"2018-10-29T14:28:15.767024Z\",\"downloads\":2404587322,\"recent_downloads\":647764583,\"default_version\":\"0.17.1\",\"num_versions\":56,\"yanked\":false,\"max_version\":\"0.17.1\",\"newest_version\":\"0.17.1\",\"max_stable_version\":\"0.17.1\",\"description\":\"A Rust port of Google's SwissTable hash map\",\"homepage\":null,\"documentation\":null,\"repository\":\"https://github.com/rust-lang/hashbrown\",\"links\":{\"version_downloads\":\"/api/v1/crates/hashbrown/downloads\",\"versions\":\"/api/v1/crates/hashbrown/versions\",\"owners\":\"/api/v1/crates/hashbrown/owners\",\"owner_team\":\"/api/v1/crates/hashbrown/owner_team\",\"owner_user\":\"/api/v1/crates/hashbrown/owner_user\",\"reverse_dependencies\":\"/api/v1/crates/hashbrown/reverse_dependencies\"},\"exact_match\":false,\"trustpub_only\":false},{\"id\":\"syn\",\"name\":\"syn\",\"updated_at\":\"2026-09-04T19:32:02.940768Z\",\"versions\":null,\"keywords\":null,\"categories\":null,\"badges\":[],\"created_at\":\"2016-09-07T15:22:40.491981Z\",\"downloads\":2358723702,\"recent_downloads\":561323557,\"default_version\":\"3.0.5\",\"num_versions\":358,\"yanked\":false,\"max_version\":\"3.0.5\",\"newest_version\":\"3.0.5\",\"max_stable_version\":\"3.0.5\",\"description\":\"Parser for Rust source code\",\"homepage\":null,\"documentation\":\"https://docs.rs/syn\",\"repository\":\"https://github.com/dtolnay/syn\",\"links\":{\"version_downloads\":\"/api/v1/crates/syn/downloads\",\"versions\":\"/api/v1/crates/syn/versions\",\"owners\":\"/api/v1/crates/syn/owners\",\"owner_team\":\"/api/v1/crates/syn/owner_team\",\"owner_user\":\"/api/v1/crates/syn/owner_user\",\"reverse_dependencies\":\"/api/v1/crates/syn/reverse_dependencies\"},\"exact_match\":false,\"trustpub_only\":false},{\"id\":\"getrandom\",\"name\":\"getrandom\",\"updated_at\":\"2026-06-17T18:01:59.979552Z\",\"versions\":null,\"keywords\":null,\"categories\":null,\"badges\":[],\"created_at\":\"2019-01-19T12:56:49.379182Z\",\"downloads\":1979506014,\"recent_downloads\":556375586,\"default_version\":\"0.4.3\",\"num_versions\":48,\"yanked\":false,\"max_version\":\"0.4.3\",\"newest_version\":\"0.4.3\",\"max_stable_version\":\"0.4.3\",\"description\":\"A small cross-platform library for retrieving random data from system source\",\"homepage\":null,\"documentation\":\"https://docs.rs/getrandom\",\"repository\":\"https://github.com/rust-random/getrandom\",\"links\":{\"version_downloads\":\"/api/v1/crates/getrandom/downloads\",\"versions\":\"/api/v1/crates/getrandom/versions\",\"owners\":\"/api/v1/crates/getrandom/owners\",\"owner_team\":\"/api/v1/crates/getrandom/owner_team\",\"owner_user\":\"/api/v1/crates/getrandom/owner_user\",\"reverse_dependencies\":\"/api/v1/crates/getrandom/reverse_dependencies\"},\"exact_match\":false,\"trustpub_only\":true},{\"id\":\"rand\",\"name\":\"rand\",\"updated_at\":\"2026-08-25T07:45:50.786344Z\",\"versions\":null,\"keywords\":null,\"categories\":null,\"badges\":[],\"created_at\":\"2015-02-03T06:17:14.147783Z\",\"downloads\":1687962735,\"recent_downloads\":426778741,\"default_version\":\"0.10.2\",\"num_versions\":93,\"yanked\":false,\"max_version\":\"0.10.2\",\"newest_version\":\"0.8.8\",\"max_stable_version\":\"0.10.2\",\"description\":\"Random number generators and other randomness functionality.\\n\",\"homepage\":\"https://rust-random.github.io/book\",\"documentation\":\"https://docs.rs/rand\",\"repository\":\"https://github.com/rust-random/rand\",\"links\":{\"version_downloads\":\"/api/v1/crates/rand/downloads\",\"versions\":\"/api/v1/crates/rand/versions\",\"owners\":\"/api/v1/crates/rand/owners\",\"owner_team\":\"/api/v1/crates/rand/owner_team\",\"owner_user\":\"/api/v1/crates/rand/owner_user\",\"reverse_dependencies\":\"/api/v1/crates/rand/reverse_dependencies\"},\"exact_match\":false,\"trustpub_only\":true},{\"id\":\"rand_core\",\"name\":\"rand_core\",\"updated_at\":\"2026-09-02T08:19:33.285884Z\",\"versions\":null,\"keywords\":null,\"categories\":null,\"badges\":[],\"created_at\":\"2017-09-14T12:02:18.709038Z\",\"downloads\":1707796951,\"recent_downloads\":420523982,\"default_version\":\"0.10.1\",\"num_versions\":42,\"yanked\":false,\"max_version\":\"0.10.1\",\"newest_version\":\"0.1.1\",\"max_stable_version\":\"0.10.1\",\"description\":\"Core random number generator traits and tools for implementation.\\n\",\"homepage\":\"https://crates.io/crates/rand_core\",\"documentation\":\"https://docs.rs/rand_core\",\"repository\":\"https://github.com/rust-lang-nursery/rand\",\"links\":{\"version_downloads\":\"/api/v1/crates/rand_core/downloads\",\"versions\":\"/api/v1/crates/rand_core/versions\",\"owners\":\"/api/v1/crates/rand_core/owners\",\"owner_team\":\"/api/v1/crates/rand_core/owner_team\",\"owner_user\":\"/api/v1/crates/rand_core/owner_user\",\"reverse_dependencies\":\"/api/v1/crates/rand_core/reverse_dependencies\"},\"exact_match\":false,\"trustpub_only\":true},{\"id\":\"bitflags\",\"name\":\"bitflags\",\"updated_at\":\"2026-09-10T01:11:38.500809Z\",\"versions\":null,\"keywords\":null,\"categories\":null,\"badges\":[],\"created_at\":\"2015-01-15T08:35:24.901276Z\",\"downloads\":1818752551,\"recent_downloads\":417191592,\"default_version\":\"2.13.2\",\"num_versions\":64,\"yanked\":false,\"max_version\":\"2.13.2\",\"newest_version\":\"2.13.2\",\"max_stable_version\":\"2.13.2\",\"description\":\"A macro to generate structures which behave like bitflags.\\n\",\"homepage\":\"https://github.com/bitflags/bitflags\",\"documentation\":\"https://docs.rs/bitflags\",\"repository\":\"https://github.com/bitflags/bitflags\",\"links\":{\"version_downloads\":\"/api/v1/crates/bitflags/downloads\",\"versions\":\"/api/v1/crates/bitflags/versions\",\"owners\":\"/api/v1/crates/bitflags/owners\",\"owner_team\":\"/api/v1/crates/bitflags/owner_team\",\"owner_user\":\"/api/v1/crates/bitflags/owner_user\",\"reverse_dependencies\":\"/api/v1/crates/bitflags/reverse_dependencies\"},\"exact_match\":false,\"trustpub_only\":false},{\"id\":\"windows-sys\",\"name\":\"windows-sys\",\"updated_at\":\"2025-10-06T19:18:30.163595Z\",\"versions\":null,\"keywords\":null,\"categories\":null,\"badges\":[],\"created_at\":\"2021-10-18T14:47:07.495906Z\",\"downloads\":1540722774,\"recent_downloads\":404004947,\"default_version\":\"0.61.2\",\"num_versions\":23,\"yanked\":false,\"max_version\":\"0.61.2\",\"newest_version\":\"0.61.2\",\"max_stable_version\":\"0.61.2\",\"description\":\"Rust for Windows\",\"homepage\":null,\"documentation\":null,\"repository\":\"https://github.com/microsoft/windows-rs\",\"links\":{\"version_downloads\":\"/api/v1/crates/windows-sys/downloads\",\"versions\":\"/api/v1/crates/windows-sys/versions\",\"owners\":\"/api/v1/crates/windows-sys/owners\",\"owner_team\":\"/api/v1/crates/windows-sys/owner_team\",\"owner_user\":\"/api/v1/crates/windows-sys/owner_user\",\"reverse_dependencies\":\"/api/v1/crates/windows-sys/reverse_dependencies\"},\"exact_match\":false,\"trustpub_only\":false},{\"id\":\"quote\",\"name\":\"quote\",\"updated_at\":\"2026-07-19T00:16:57.083778Z\",\"versions\":null,\"keywords\":null,\"categories\":null,\"badges\":[],\"created_at\":\"2016-09-03T05:42:05.484129Z\",\"downloads\":1596315287,\"recent_downloads\":362631199,\"default_version\":\"1.0.47\",\"num_versions\":95,\"yanked\":false,\"max_version\":\"1.0.47\",\"newest_version\":\"1.0.47\",\"max_stable_version\":\"1.0.47\",\"description\":\"Quasi-quoting macro quote!(...)\",\"homepage\":null,\"documentation\":\"https://docs.rs/quote/\",\"repository\":\"https://github.com/dtolnay/quote\",\"links\":{\"version_downloads\":\"/api/v1/crates/quote/downloads\",\"versions\":\"/api/v1/crates/quote/versions\",\"owners\":\"/api/v1/crates/quote/owners\",\"owner_team\":\"/api/v1/crates/quote/owner_team\",\"owner_user\":\"/api/v1/crates/quote/owner_user\",\"reverse_dependencies\":\"/api/v1/crates/quote/reverse_dependencies\"},\"exact_match\":false,\"trustpub_only\":false},{\"id\":\"libc\",\"name\":\"libc\",\"updated_at\":\"2026-08-03T19:15:03.301727Z\",\"versions\":null,\"keywords\":null,\"categories\":null,\"badges\":[],\"created_at\":\"2015-01-15T20:22:13.100871Z\",\"downloads\":1610384467,\"recent_downloads\":358071073,\"default_version\":\"0.2.189\",\"num_versions\":206,\"yanked\":false,\"max_version\":\"1.0.0-alpha.4\",\"newest_version\":\"1.0.0-alpha.4\",\"max_stable_version\":\"0.2.189\",\"description\":\"Raw FFI bindings to platform libraries like libc.\",\"homepage\":null,\"documentation\":null,\"repository\":\"https://github.com/rust-lang/libc\",\"links\":{\"version_downloads\":\"/api/v1/crates/libc/downloads\",\"versions\":\"/api/v1/crates/libc/versions\",\"owners\":\"/api/v1/crates/libc/owners\",\"owner_team\":\"/api/v1/crates/libc/owner_team\",\"owner_user\":\"/api/v1/crates/libc/owner_user\",\"reverse_dependencies\":\"/api/v1/crates/libc/reverse_dependencies\"},\"exact_match\":false,\"trustpub_only\":true},{\"id\":\"thiserror\",\"name\":\"thiserror\",\"updated_at\":\"2026-08-08T06:22:23.795550Z\",\"versions\":null,\"keywords\":null,\"categories\":null,\"badges\":[],\"created_at\":\"2019-10-09T18:05:40.346377Z\",\"downloads\":1445218714,\"recent_downloads\":357519479,\"default_version\":\"2.0.20\",\"num_versions\":91,\"yanked\":false,\"max_version\":\"2.0.20\",\"newest_version\":\"2.0.20\",\"max_stable_version\":\"2.0.20\",\"description\":\"derive(Error)\",\"homepage\":null,\"documentation\":\"https://docs.rs/thiserror\",\"repository\":\"https://github.com/dtolnay/thiserror\",\"links\":{\"version_downloads\":\"/api/v1/crates/thiserror/downloads\",\"versions\":\"/api/v1/crates/thiserror/versions\",\"owners\":\"/api/v1/crates/thiserror/owners\",\"owner_team\":\"/api/v1/crates/thiserror/owner_team\",\"owner_user\":\"/api/v1/crates/thiserror/owner_user\",\"reverse_dependencies\":\"/api/v1/crates/thiserror/reverse_dependencies\"},\"exact_match\":false,\"trustpub_only\":false}],\"meta\":{\"total\":332437,\"next_page\":\"?per_page=10&sort=recent-downloads&page=2\",\"prev_page\":null}}",
"content_length": 9196,
"content_type": "application/json",
"description": "",
"status_code": 200,
"success": true,
"title": "",
"url": "https://crates.io/api/v1/crates"
},
"error": "",
"elapsed": 0.365526585
}{
"tool_name": "send_message",
"tool_input": {
"final": true,
"in_response_to": "aa674420",
"message": "Top 10 on [crates.io by recent downloads](https://crates.io/crates?sort=%5BREDACTED%5D) (recent = last 90 days):\n\n| # | Crate | Version | Recent downloads | What it does |\n|---|---|---|---|---|\n| 1 | [hashbrown](https://crates.io/crates/hashbrown) | 0.17.1 | 647,764,583 | Rust port of Google's SwissTable hash map; backs std's HashMap |\n| 2 | [syn](https://crates.io/crates/syn) | 3.0.5 | 561,323,557 | Parser for Rust source code, the backbone of procedural macros |\n| 3 | [getrandom](https://crates.io/crates/getrandom) | 0.4.3 | 556,375,586 | Small cross-platform library for random bytes from the OS |\n| 4 | [rand](https://crates.io/crates/rand) | 0.10.2 | 426,778,741 | Random number generators and randomness utilities |\n| 5 | [rand_core](https://crates.io/crates/rand_core) | 0.10.1 | 420,523,982 | Core RNG traits that rand and its backends build on |\n| 6 | [bitflags](https://crates.io/crates/bitflags) | 2.13.2 | 417,191,592 | Macro for generating typed bitflag structs |\n| 7 | [windows-sys](https://crates.io/crates/windows-sys) | 0.61.2 | 404,004,947 | Raw bindings to the Windows API from Microsoft |\n| 8 | [quote](https://crates.io/crates/quote) | 1.0.47 | 362,631,199 | Quasi-quoting macro for generating Rust token streams |\n| 9 | [libc](https://crates.io/crates/libc) | 0.2.189 | 358,071,073 | Raw FFI bindings to platform libraries like libc |\n| 10 | [thiserror](https://crates.io/crates/thiserror) | 2.0.20 | 357,519,479 | derive(Error) for ergonomic custom error types |"
},
"dispatch_id": "toolu_01G6gZY3Zr9TBEvMBrH3DEts",
"parent_dispatch_id": "",
"handle": "",
"panel_kind": ""
}| # | Crate | Version | Recent downloads | What it does |
|---|---|---|---|---|
| 1 | hashbrown | 0.17.1 | 647,764,583 | Rust port of Google's SwissTable hash map; backs std's HashMap |
| 2 | syn | 3.0.5 | 561,323,557 | Parser for Rust source code, the backbone of procedural macros |
| 3 | getrandom | 0.4.3 | 556,375,586 | Small cross-platform library for random bytes from the OS |
| 4 | rand | 0.10.2 | 426,778,741 | Random number generators and randomness utilities |
| 5 | rand_core | 0.10.1 | 420,523,982 | Core RNG traits that rand and its backends build on |
| 6 | bitflags | 2.13.2 | 417,191,592 | Macro for generating typed bitflag structs |
| 7 | windows-sys | 0.61.2 | 404,004,947 | Raw bindings to the Windows API from Microsoft |
| 8 | quote | 1.0.47 | 362,631,199 | Quasi-quoting macro for generating Rust token streams |
| 9 | libc | 0.2.189 | 358,071,073 | Raw FFI bindings to platform libraries like libc |
| 10 | thiserror | 2.0.20 | 357,519,479 | derive(Error) for ergonomic custom error types |
### Top 10 Rust crates by recent downloads · crates.io | # | Crate | Version | Recent downloads | What it does | |---|---|---|---|---| | 1 | [hashbrown](https://crates.io/crates/hashbrown) | 0.17.1 | 647,764,583 | Rust port of Google's SwissTable hash map; backs std's HashMap | | 2 | [syn](https://crates.io/crates/syn) | 3.0.5 | 561,323,557 | Parser for Rust source code, the backbone of procedural macros | | 3 | [getrandom](https://crates.io/crates/getrandom) | 0.4.3 | 556,375,586 | Small cross-platform library for random bytes from the OS | | 4 | [rand](https://crates.io/crates/rand) | 0.10.2 | 426,778,741 | Random number generators and randomness utilities | | 5 | [rand_core](https://crates.io/crates/rand_core) | 0.10.1 | 420,523,982 | Core RNG traits that rand and its backends build on | | 6 | [bitflags](https://crates.io/crates/bitflags) | 2.13.2 | 417,191,592 | Macro for generating typed bitflag structs | | 7 | [windows-sys](https://crates.io/crates/windows-sys) | 0.61.2 | 404,004,947 | Raw bindings to the Windows API from Microsoft | | 8 | [quote](https://crates.io/crates/quote) | 1.0.47 | 362,631,199 | Quasi-quoting macro for generating Rust token streams | | 9 | [libc](https://crates.io/crates/libc) | 0.2.189 | 358,071,073 | Raw FFI bindings to platform libraries like libc | | 10 | [thiserror](https://crates.io/crates/thiserror) | 2.0.20 | 357,519,479 | derive(Error) for ergonomic custom error types |