Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-29 05:15 UTC

ralfbiedert / interoptopus

Productive, performant, robust interop for Rust🐙

RustMIT★ 474 зірки⑂ 47 форківз черв. 2021 р.Переглянути на GitHub ↗

ralfbiedert/interoptopus має індекс здоров’я 66 зі 100, що відповідає смузі «Помірний». Найвищий показник — Vitality (94/100), найнижчий — Security (42/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

66
загалом / 100
Помірний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

66
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

Ralf BiedertОсобистий обліковий запис
183 підписники17 публічних репозиторіївз черв. 2010 р.@Microsoft

Цей репозиторій належить особистому обліковому запису. Проєкт з єдиним власником несе більший ризик безперервності, ніж підтримуваний організацією.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
crates.iointeroptopus0.16.49 9451260 днів томуbindingscode-generationffiapi-bindings
crates.iointeroptopus_c0.16.467290 днів тому
crates.iointeroptopus_proc0.16.49 8781010 днів томуffiapi-bindings
crates.iointeroptopus_backends0.16.4293290 днів томуbindingscode-generationffiapi-bindings
crates.iointeroptopus_csharp0.16.4273290 днів тому
crates.iointeroptopus_cpython0.16.469290 днів тому
crates.iointeroptopus_proc_impl0.16.4379290 днів томуffiapi-bindings

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

94Відмінний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
25.6/36Ритм комітів — 37/52 тижнів із комітами
18/18Обсяг комітів — 851 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year851
human_commit_share0,9
days_since_last_push0
active_weeks_last_year37
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 100 релізів
36/36Свіжість релізів — останній реліз 0 дн. тому
27/27Ритм релізів — реліз кожні ~4,8 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count100
latest_release_taginteroptopus_csharp-v0.16.4
releases_from_tagsні
days_since_latest_release0
mean_days_between_releases4,8
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

60Помірний · 18% загального індексу
Як обчислюється оцінка
43.4/60Зірки — 474 зірок
13.9/25Форки — 47 форків
4.7/15Спостерігачі — 8 спостерігачів
Використані вхідні дані
forks47
stars474
watchers8
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingні
has_issue_templateні
has_code_of_conductні
has_pull_request_templateні
Як обчислюється оцінка
57.6/80Щомісячні завантаження — 20 904 завантажень/місяць у crates
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesinteroptopus, interoptopus_c, interoptopus_proc, interoptopus_backends, interoptopus_csharp, interoptopus_cpython, interoptopus_proc_impl
dependents
ecosystemscrates
total_downloads583 931
monthly_downloads20 904
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

65Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
1.6/22.5Розподіл комітів — головний контриб’ютор — автор 93% комітів
13.5/13.5Широта контриб’юторів — 25 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 11 contributing companies or organizations
Використані вхідні дані
bus_factor1
contributors_sampled25
top_contributor_share0,928
Як обчислюється оцінка
41.8/46.8Вирішення issue — закрито 89% issue
34.5/38.3Прийняття PR — злито 146/162 вирішених PR
3/15OpenSSF Scorecard: Code-Review — Found 5/21 approved changesets -- score normalized to 2
Використані вхідні дані
merged_prs146
open_issues13
closed_issues110
issue_closed_ratio0,894
closed_unmerged_prs16
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
16.3/25Охоплення власника — 183 підписників у ralfbiedert
21.1/25Послужний список — 17 публічних репозиторіїв, вік облікового запису ~16 р.
Використані вхідні дані
followers183
owner_typeUser
is_verified
owner_loginralfbiedert
public_repos17
account_age_days5 893
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 7 пакет(ів) у crates
35/35Свіжість публікацій — остання публікація 0 дн. тому
20/20Історія версій — 126 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesinteroptopus, interoptopus_c, interoptopus_proc, interoptopus_backends, interoptopus_csharp, interoptopus_cpython, interoptopus_proc_impl
ecosystemscrates
any_deprecatedні
min_days_since_publish0

Інженерна якість

Чи наявні базові інженерні практики та документація?

63Помірний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 3 процес(ів) CI
24/24Наявні тести
0/16Конфігурація лінтера
0/9.6Pre-commit-хуки
0/6.4.editorconfig
14/20OpenSSF Scorecard: CI-Tests — 7 out of 10 merged PRs checked by a CI test -- score normalized to 7
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configні
has_precommit_configні

Документація

65Помірний
Як обчислюється оцінка
30/30README
0/25Каталог документації
15/15Сайт документації / домашня сторінка — https://interoptopus.rs
10/10Опис репозиторію
10/10Теми — 3 тем
0/10Wiki
Використані вхідні дані
topicsrust, ffi, csharp
has_wikiні
homepagehttps://interoptopus.rs
has_readmeтак
has_docs_dirні
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

42У зоні ризику · 16% загального індексу

Стан безпеки

37У зоні ризику
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
1.8/2.5CI-Tests — 7 out of 10 merged PRs checked by a CI test -- score normalized to 7
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
1.5/7.5Code-Review — Found 5/21 approved changesets -- score normalized to 2
2.5/2.5Contributors — project has 11 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — немає даних
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0.8/7.5Vulnerabilities — 9 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate3,7
Виключено з оцінювання (немає даних або не застосовно): packaging, signed_releases. Залишкові ваги перенормовано.
Як обчислюється оцінка
12.3/35Прямі залежності без відомих сповіщень — уражено 1: tar 0.4.44 (high 8.1)
0/25Непрямі залежності без відомих сповіщень — транзитивний набір не відокремлюється від залежностей розробки й тестування в цьому обсязі
33.3/40Немає задавнених сповіщень — 1 пакет(ів) зі сповіщеннями без реакції понад 90 дн.; найдавніше опубліковано 131 дн. тому
Використані вхідні дані
sourceosv
advisories16
affected_packages4
assessed_packages236
unassessed_packages3
affected_by_severityhigh 2, moderate 1, unknown 1
direct_affected_packages1
Виключено з оцінювання (немає даних або не застосовно): Непрямі залежності без відомих сповіщень. Залишкові ваги перенормовано. Звірено 236 резолвлених залежностей із OSV. 3 не вдалося оцінити — немає резолвленої версії, непідтримувана екосистема або поза межами звітованого переліку пакетів. Цей репозиторій не публікує пакета, який резолвить індекс, тож натомість оцінено граф залежностей репозиторію. Цей граф змішує закріплені версії для розробки й тестування зі справді постачаними залежностями, тож оцінюються лише задекларовані runtime-залежності; транзитивні знахідки подаються як контекст і в оцінку не входять. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

66Помірний · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — CLAUDE.md
0/15Машиночитана документація (llms.txt)
10.1/40Читабельна історія комітів — намір зазначено у 17 з 90 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,189
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes14 201
Як обчислюється оцінка
18/18Розгортання однією командою — Justfile
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
11/11Статична перевірка типів — Rust (статично типізована)
10/10Відтворюване середовище — lockfile
10/10Підтверджена практика роботи з агентами — 9 з останніх 100 комітів створено агентом або з його зазначенням
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilesCargo.lock
has_dockerfileні
typed_languageтак
bootstrap_filesJustfile
has_devcontainerні
has_linter_configні
typecheck_configs
agent_commit_share0,09
toolchain_manifestsCargo.toml, crates/_old/backend_c/Cargo.toml, crates/_old/backend_cpython/Cargo.toml, crates/_old/backend_csharp_old/Cargo.toml, crates/_old/backend_csharp_old/tests/runtime/plugin.csproj, crates/backend_c/Cargo.toml, crates/backend_cpython/Cargo.toml, crates/backend_csharp/Cargo.toml, crates/backend_csharp/benches/dotnet/dotnet_benchmarks.csproj, crates/backend_csharp/tests/backend_plugins/exceptions.dll/exceptions.csproj, crates/backend_csharp/tests/backend_plugins/memory.dll/memory.csproj, crates/backend_csharp/tests/reference_plugins/complex.dll/complex.csproj, crates/backend_csharp/tests/reference_plugins/functions_behavior.dll/functions_behavior.csproj, crates/backend_csharp/tests/reference_plugins/functions_primitive.dll/functions_primitive.csproj, crates/backend_csharp/tests/reference_plugins/pattern.dll/pattern.csproj, crates/backend_csharp/tests/reference_plugins/service_async.dll/service_async.csproj, crates/backend_csharp/tests/reference_plugins/service_async_cancel.dll/service_async_cancel.csproj, crates/backend_csharp/tests/reference_plugins/service_basic.dll/service_basic.csproj, crates/backend_csharp/tests/reference_plugins/service_nested.dll/service_nested.csproj, crates/backend_csharp/tests/reference_plugins/wire.dll/wire.csproj, crates/backend_csharp/tests/reference_project/Bindings/Bindings.csproj, crates/backend_csharp/tests/reference_project/Tests/Tests.csproj, crates/backend_utils/Cargo.toml, crates/core/Cargo.toml, crates/proc_macros/Cargo.toml, crates/proc_macros_impl/Cargo.toml, crates/reference_project/Cargo.toml, examples/hello_world/Cargo.toml, examples/hello_world/bindings/hello_world.csproj, examples/production_project/core_library/Cargo.toml, examples/production_project/core_library_ffi/Cargo.toml, examples/production_project/core_library_ffi_build/Cargo.toml
dependency_bot_commit_share0
Як обчислюється оцінка
45/45Типізований код — Rust (статично типізована)
55/55Керовані розміри файлів — 0/698 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageRust
largest_source_bytes59 647
source_files_sampled698
oversized_source_files0
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalні
api_schema_files

Ключові факти

474зірок GitHub
25контриб'юторів
851комітів за останні 12 місяців
0днів від останнього пушу
100релізів
1бас-фактор
13відкритих issue
crates.ioпакетних екосистем

Попередження щодо збору даних

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch crates package 'reference_project' from its registry
  • deps.dev does not index crates:interoptopus@0.16.4; advisories assessed against the repository dependency graph instead

Докладніше

Історія зірок і форків 0 ★ / 47 ⇿
0Зірки
47Форки
93Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

010203040504422022-012024-032026-06
Мажорні 0Мінорні 0Патчі 0

Кожна точка охоплює 5 днів.

OpenSSF Scorecard 3.7 / 10
3.7сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-29 05:15 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
7CI-Tests7 out of 10 merged PRs checked by a CI test -- score normalized to 7
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
2Code-ReviewFound 5/21 approved changesets -- score normalized to 2
10Contributorsproject has 11 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
н/дPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
1Vulnerabilities9 existing vulnerabilities detected
Прямі залежності 20
РеєстрПакетОбмеження версіїМаніфест
crates.iointeroptopuscrates/backend_c/Cargo.toml
crates.iointeroptopuscrates/backend_cpython/Cargo.toml
crates.iointeroptopuscrates/backend_csharp/Cargo.toml
crates.iointeroptopus_backendscrates/backend_csharp/Cargo.toml
crates.iolibloadingcrates/backend_csharp/Cargo.toml
crates.ionetcorehostcrates/backend_csharp/Cargo.toml
crates.iotempfilecrates/backend_csharp/Cargo.toml
crates.iointeroptopuscrates/backend_utils/Cargo.toml
crates.iotarcrates/backend_utils/Cargo.toml
crates.ioteracrates/backend_utils/Cargo.toml
crates.iointeroptopus_proccrates/core/Cargo.toml
crates.ioserdecrates/core/Cargo.toml
crates.iotokiocrates/core/Cargo.toml
crates.iointeroptopus_proc_implcrates/proc_macros/Cargo.toml
crates.ioprettypleasecrates/proc_macros_impl/Cargo.toml
crates.ioproc-macro2crates/proc_macros_impl/Cargo.toml
crates.ioquotecrates/proc_macros_impl/Cargo.toml
crates.iosyncrates/proc_macros_impl/Cargo.toml
crates.iointeroptopuscrates/reference_project/Cargo.toml
crates.iotokio1crates/reference_project/Cargo.toml
Усі залежності 239

Повний розв'язаний набір залежностей із графа залежностей GitHub: 13 прямих і 226 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

РеєстрПакетВерсіяЗв'язок
crates.iolibloading0.9.0пряма
crates.ionetcorehostпряма
crates.ionetcorehost0.20.1пряма
crates.ioprettyplease0.2.37пряма
crates.ioproc-macro21.0.101пряма
crates.ioquote1.0.41пряма
crates.ioserde1.0.228пряма
crates.iosyn2.0.106пряма
crates.iotar0.4.44пряма
crates.iotempfile3.23.0пряма
crates.iotera2.0.0-alpha.6пряма
crates.iotokioпряма
crates.iotokio1.48.0пряма
crates.ioadler22.0.1непряма
crates.ioaes0.8.4непряма
crates.ioanyhow1.0.102непряма
crates.iobase640.22.1непряма
crates.iobitflags2.9.4непряма
crates.ioblock-buffer0.10.4непряма
crates.iobuild-target0.8.0непряма
crates.iobumpalo3.19.0непряма
crates.iobytes1.10.1непряма
crates.iobzip20.6.1непряма
crates.iocargo-emit0.2.1непряма
crates.iocc1.2.54непряма
crates.iocfg-if1.0.3непряма
crates.iocfg-tt0.3.0непряма
crates.iocipher0.4.4непряма
crates.ioconsole0.15.11непряма
crates.ioconst_panic0.2.15непряма
crates.ioconstant_time_eq0.4.2непряма
crates.ioconvert_case0.10.0непряма
crates.iocookie0.18.1непряма
crates.iocookie_store0.22.1непряма
crates.iocoreclr-hosting-shared0.1.4непряма
crates.iocpufeatures0.2.17непряма
crates.iocrc32fast1.5.0непряма
crates.iocrypto-common0.1.6непряма
crates.iocstr0.2.12непряма
crates.iocty0.2.2непряма
crates.iodeflate640.1.11непряма
crates.ioderanged0.5.8непряма
crates.ioderive_more2.1.1непряма
crates.ioderive_more-impl2.1.1непряма
crates.iodestruct-drop0.2.0непряма
crates.iodestruct-drop-derive0.2.0непряма
crates.iodigest0.10.7непряма
crates.iodisplaydoc0.2.5непряма
crates.iodlopen20.8.2непряма
crates.iodlopen2_derive0.4.3непряма
crates.iodocument-features0.2.12непряма
crates.ioencode_unicode1.0.0непряма
crates.ioenum-map2.7.3непряма
crates.ioenum-map-derive0.17.0непряма
crates.ioequivalent1.0.2непряма
crates.ioerrno0.3.14непряма
crates.iofastrand2.3.0непряма
crates.ioffi-opaque2.0.1непряма
crates.iofiletime0.2.27непряма
crates.iofind-msvc-tools0.1.8непряма
crates.ioflate21.1.9непряма
crates.iofn-ptr0.9.1непряма
crates.iofoldhash0.1.5непряма
crates.ioform_urlencoded1.2.2непряма
crates.iogeneric-array0.14.9непряма
crates.iogetrandom0.2.16непряма
crates.iogetrandom0.3.4непряма
crates.iogetrandom0.4.2непряма
crates.ioglob0.3.3непряма
crates.iohashbrown0.15.5непряма
crates.iohashbrown0.16.1непряма
crates.ioheck0.5.0непряма
crates.iohmac0.12.1непряма
crates.iohostfxr-sys0.13.0непряма
crates.iohttp1.4.0непряма
crates.iohttparse1.10.1непряма
crates.ioicu_collections2.1.1непряма
crates.ioicu_locale_core2.1.1непряма
crates.ioicu_normalizer2.1.1непряма
crates.ioicu_normalizer_data2.1.1непряма
crates.ioicu_properties2.1.2непряма
crates.ioicu_properties_data2.1.2непряма
crates.ioicu_provider2.1.1непряма
crates.ioid-arena2.3.0непряма
crates.ioidna1.1.0непряма
crates.ioidna_adapter1.2.1непряма
crates.ioindexmap2.13.0непряма
crates.ioinout0.1.4непряма
crates.ioinsta1.46.3непряма
crates.ioitoa1.0.15непряма
crates.iojobserver0.1.34непряма
crates.iojs-sys0.3.81непряма
crates.iokonst0.4.3непряма
crates.ioleb128fmt0.1.0непряма
crates.iolibbz2-rs-sys0.2.2непряма
crates.iolibc0.2.176непряма
crates.iolibredox0.1.14непряма
crates.iolinux-raw-sys0.11.0непряма
crates.iolitemap0.8.1непряма
crates.iolitrs1.0.0непряма
crates.iolock_api0.4.14непряма
crates.iolog0.4.28непряма
crates.iolzma-rust20.16.2непряма
crates.iomemchr2.7.6непряма
crates.iomemory-statsнепряма
crates.iomemory-stats1.2.0непряма
crates.iominiz_oxide0.8.9непряма
crates.iomio1.0.4непряма
crates.ionethost-sys0.8.0непряма
crates.ionum-conv0.2.0непряма
crates.ionum_enum0.7.6непряма
crates.ionum_enum_derive0.7.6непряма
crates.ioonce_cell1.21.3непряма
crates.ioparking_lot0.12.5непряма
crates.ioparking_lot_core0.9.12непряма
crates.iopbkdf20.12.2непряма
crates.iopercent-encoding2.3.2непряма
crates.iopin-project-lite0.2.16непряма
crates.iopkg-config0.3.32непряма
crates.ioplain0.2.3непряма
crates.iopotential_utf0.1.4непряма
crates.iopowerfmt0.2.0непряма
crates.ioppmd-rust1.4.0непряма
crates.ior-efi5.3.0непряма
crates.ior-efi6.0.0непряма
crates.ioredox_syscall0.5.18непряма
crates.ioredox_syscall0.7.3непряма
crates.ioring0.17.14непряма
crates.iorustc_version0.4.1непряма
crates.iorustix1.1.2непряма
crates.iorustls0.23.37непряма
crates.iorustls-pki-types1.14.0непряма
crates.iorustls-webpki0.103.9непряма
crates.iorustversion1.0.22непряма
crates.ioryu1.0.20непряма
crates.ioscopeguard1.2.0непряма
crates.iosemver1.0.27непряма
crates.ioserde_core1.0.228непряма
crates.ioserde_derive1.0.228непряма
crates.ioserde_json1.0.145непряма
crates.ioserde_spanned1.0.4непряма
crates.iosha10.10.6непряма
crates.iosha20.10.9непряма
crates.ioshlex1.3.0непряма
crates.iosignal-hook-registry1.4.6непряма
crates.iosimd-adler320.3.8непряма
crates.iosimilar2.7.0непряма
crates.iosmallvec1.15.1непряма
crates.iosocket20.6.0непряма
crates.iostable_deref_trait1.2.1непряма
crates.iosubtle2.6.1непряма
crates.iosynstructure0.13.2непряма
crates.iotarget-triple1.0.0непряма
crates.iotermcolor1.4.1непряма
crates.iothiserror2.0.18непряма
crates.iothiserror-impl2.0.18непряма
crates.iotime0.3.47непряма
crates.iotime-core0.1.8непряма
crates.iotime-macros0.2.27непряма
crates.iotinystr0.8.2непряма
crates.iotokio-macros2.6.0непряма
crates.iotoml1.0.3+spec-1.1.0непряма
crates.iotoml_datetime1.0.0+spec-1.1.0непряма
crates.iotoml_parser1.0.9+spec-1.1.0непряма
crates.iotoml_writer1.0.6+spec-1.1.0непряма
crates.iotrybuild1.0.116непряма
crates.iotyped-path0.12.3непряма
crates.iotypenum1.19.0непряма
crates.iotypewit1.14.2непряма
crates.iounicode-ident1.0.19непряма
crates.iounicode-segmentation1.12.0непряма
crates.iounicode-xid0.2.6непряма
crates.iountrusted0.9.0непряма
crates.ioureq3.3.0непряма
crates.ioureq-proto0.6.0непряма
crates.iourl2.5.8непряма
crates.ioutf8-zero0.8.1непряма
crates.ioutf8_iter1.0.4непряма
crates.ioversion_check0.9.5непряма
crates.iowasi0.11.1+wasi-snapshot-preview1непряма
crates.iowasip21.0.1+wasi-0.2.4непряма
crates.iowasip30.4.0+wasi-0.3.0-rc-2026-01-06непряма
crates.iowasm-bindgen0.2.104непряма
crates.iowasm-bindgen-backend0.2.104непряма
crates.iowasm-bindgen-macro0.2.104непряма
crates.iowasm-bindgen-macro-support0.2.104непряма
crates.iowasm-bindgen-shared0.2.104непряма
crates.iowasm-encoder0.244.0непряма
crates.iowasm-metadata0.244.0непряма
crates.iowasmparser0.244.0непряма
crates.iowebpki-roots1.0.6непряма
crates.iowidestring1.2.1непряма
crates.iowinapi0.3.9непряма
crates.iowinapi-i686-pc-windows-gnu0.4.0непряма
crates.iowinapi-util0.1.11непряма
crates.iowinapi-x86_64-pc-windows-gnu0.4.0непряма
crates.iowindows-link0.2.1непряма
crates.iowindows-sys0.52.0непряма
crates.iowindows-sys0.59.0непряма
crates.iowindows-sys0.61.2непряма
crates.iowindows-targets0.52.6непряма
crates.iowindows_aarch64_gnullvm0.52.6непряма
crates.iowindows_aarch64_msvc0.52.6непряма
crates.iowindows_i686_gnu0.52.6непряма
crates.iowindows_i686_gnullvm0.52.6непряма
crates.iowindows_i686_msvc0.52.6непряма
crates.iowindows_x86_64_gnu0.52.6непряма
crates.iowindows_x86_64_gnullvm0.52.6непряма
crates.iowindows_x86_64_msvc0.52.6непряма
crates.iowinnow0.7.14непряма
crates.iowit-bindgen0.46.0непряма
crates.iowit-bindgen0.51.0непряма
crates.iowit-bindgen-core0.51.0непряма
crates.iowit-bindgen-rust0.51.0непряма
crates.iowit-bindgen-rust-macro0.51.0непряма
crates.iowit-component0.244.0непряма
crates.iowit-parser0.244.0непряма
crates.iowriteable0.6.2непряма
crates.ioxattr1.6.1непряма
crates.ioyoke0.8.1непряма
crates.ioyoke-derive0.8.1непряма
crates.iozerofrom0.1.6непряма
crates.iozerofrom-derive0.1.6непряма
crates.iozeroize1.8.2непряма
crates.iozerotrie0.2.3непряма
crates.iozerovec0.11.5непряма
crates.iozerovec-derive0.11.2непряма
crates.iozip8.3.1непряма
crates.iozlib-rs0.6.3непряма
crates.iozopfli0.8.3непряма
crates.iozstd0.13.3непряма
crates.iozstd-safe7.2.4непряма
crates.iozstd-sys2.0.16+zstd.1.5.7непряма
NuGetMicrosoft.NET.Test.Sdk15.9.0непряма
NuGetNewtonsoft.Json13.0.3непряма
NuGetNewtonsoft.Json13.0.4непряма
NuGetxunit2.2.0непряма
NuGetxunit.runner.visualstudio2.4.1непряма
NuGetxunit.v3.aot4.0.0-pre.128непряма
Сповіщення про залежності 4

Цей репозиторій не публікує пакета, який розпізнає індекс, тож оцінено його власний граф залежностей — 236 пакетів, серед яких є й піниї розробки та тестування, що ніколи не постачаються: 4 мають відомі сповіщення, з них 1 прямі. 3 не вдалося оцінити — немає резолвленої версії, непідтримувана екосистема або поза наведеним переліком пакетів.

ПакетВерсіяЗв'язокКритичністьСповіщеньВиправлено в
tar0.4.44прямависока50.4.46
rustls-webpki0.103.9непрямависока80.104.0-alpha.7
bytes1.10.1непрямапомірна21.11.1
anyhow1.0.102непряманевідома11.0.103

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "rust",
        "ffi",
        "csharp"
      ],
      "is_fork": false,
      "size_kb": 6050,
      "has_wiki": false,
      "homepage": "https://interoptopus.rs",
      "languages": {
        "CSS": 889,
        "HTML": 23469,
        "Just": 3879,
        "Rust": 1467230,
        "JavaScript": 5050,
        "RenderScript": 2
      },
      "pushed_at": "2026-07-28T11:16:11Z",
      "created_at": "2021-06-13T22:13:10Z",
      "owner_type": "User",
      "updated_at": "2026-07-28T11:16:24Z",
      "description": "Productive, performant, robust interop for Rust🐙",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "Rust",
      "significant_languages": [
        "Rust"
      ]
    },
    "owner": {
      "blog": "https://xr.io",
      "name": "Ralf Biedert",
      "type": "User",
      "login": "ralfbiedert",
      "company": "@Microsoft",
      "location": null,
      "followers": 183,
      "avatar_url": "https://avatars.githubusercontent.com/u/301288?v=4",
      "created_at": "2010-06-09T21:37:36Z",
      "is_verified": null,
      "public_repos": 17,
      "account_age_days": 5893
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "interoptopus_csharp-v0.16.4",
          "kind": "other",
          "published_at": "2026-07-28T11:16:09Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.4",
          "kind": "other",
          "published_at": "2026-07-28T11:15:01Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.4",
          "kind": "other",
          "published_at": "2026-07-28T11:14:50Z"
        },
        {
          "tag": "interoptopus_c-v0.16.4",
          "kind": "other",
          "published_at": "2026-07-28T11:14:43Z"
        },
        {
          "tag": "interoptopus-v0.16.4",
          "kind": "other",
          "published_at": "2026-07-28T11:14:35Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.4",
          "kind": "other",
          "published_at": "2026-07-28T11:14:27Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.4",
          "kind": "other",
          "published_at": "2026-07-28T11:14:16Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.1",
          "kind": "other",
          "published_at": "2026-06-15T10:47:41Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.1",
          "kind": "other",
          "published_at": "2026-06-15T10:47:31Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.1",
          "kind": "other",
          "published_at": "2026-06-15T10:47:19Z"
        },
        {
          "tag": "interoptopus_c-v0.16.1",
          "kind": "other",
          "published_at": "2026-06-15T10:47:11Z"
        },
        {
          "tag": "interoptopus-v0.16.1",
          "kind": "other",
          "published_at": "2026-06-15T10:47:04Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.1",
          "kind": "other",
          "published_at": "2026-06-15T10:46:55Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.1",
          "kind": "other",
          "published_at": "2026-06-15T10:46:44Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0",
          "kind": "other",
          "published_at": "2026-06-03T16:07:08Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0",
          "kind": "other",
          "published_at": "2026-06-03T16:06:58Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0",
          "kind": "other",
          "published_at": "2026-06-03T16:06:45Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0",
          "kind": "other",
          "published_at": "2026-06-03T16:06:38Z"
        },
        {
          "tag": "interoptopus-v0.16.0",
          "kind": "other",
          "published_at": "2026-06-03T16:06:30Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0",
          "kind": "other",
          "published_at": "2026-06-03T16:06:21Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0",
          "kind": "other",
          "published_at": "2026-06-03T16:06:10Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.24",
          "kind": "other",
          "published_at": "2026-06-02T17:53:53Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0-alpha.24",
          "kind": "other",
          "published_at": "2026-06-02T17:53:43Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.24",
          "kind": "other",
          "published_at": "2026-06-02T17:53:31Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0-alpha.24",
          "kind": "other",
          "published_at": "2026-06-02T17:53:23Z"
        },
        {
          "tag": "interoptopus-v0.16.0-alpha.24",
          "kind": "other",
          "published_at": "2026-06-02T17:53:17Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0-alpha.24",
          "kind": "other",
          "published_at": "2026-06-02T17:53:07Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0-alpha.24",
          "kind": "other",
          "published_at": "2026-06-02T17:52:56Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.23",
          "kind": "other",
          "published_at": "2026-05-04T16:16:41Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0-alpha.23",
          "kind": "other",
          "published_at": "2026-05-04T16:16:31Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.23",
          "kind": "other",
          "published_at": "2026-05-04T16:16:18Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0-alpha.23",
          "kind": "other",
          "published_at": "2026-05-04T16:16:12Z"
        },
        {
          "tag": "interoptopus-v0.16.0-alpha.23",
          "kind": "other",
          "published_at": "2026-05-04T16:16:04Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0-alpha.23",
          "kind": "other",
          "published_at": "2026-05-04T16:15:57Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0-alpha.23",
          "kind": "other",
          "published_at": "2026-05-04T16:15:46Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.22",
          "kind": "other",
          "published_at": "2026-04-28T15:11:59Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0-alpha.22",
          "kind": "other",
          "published_at": "2026-04-28T15:11:49Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.22",
          "kind": "other",
          "published_at": "2026-04-28T15:11:36Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0-alpha.22",
          "kind": "other",
          "published_at": "2026-04-28T15:11:28Z"
        },
        {
          "tag": "interoptopus-v0.16.0-alpha.22",
          "kind": "other",
          "published_at": "2026-04-28T15:11:19Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0-alpha.22",
          "kind": "other",
          "published_at": "2026-04-28T15:11:07Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0-alpha.22",
          "kind": "other",
          "published_at": "2026-04-28T15:10:55Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.21",
          "kind": "other",
          "published_at": "2026-04-27T10:07:08Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0-alpha.21",
          "kind": "other",
          "published_at": "2026-04-27T10:06:57Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.21",
          "kind": "other",
          "published_at": "2026-04-27T10:06:44Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0-alpha.21",
          "kind": "other",
          "published_at": "2026-04-27T10:06:39Z"
        },
        {
          "tag": "interoptopus-v0.16.0-alpha.21",
          "kind": "other",
          "published_at": "2026-04-27T10:06:33Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0-alpha.21",
          "kind": "other",
          "published_at": "2026-04-27T10:06:23Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0-alpha.21",
          "kind": "other",
          "published_at": "2026-04-27T10:06:12Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.20",
          "kind": "other",
          "published_at": "2026-04-14T11:23:31Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0-alpha.20",
          "kind": "other",
          "published_at": "2026-04-14T11:23:06Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.20",
          "kind": "other",
          "published_at": "2026-04-14T11:22:50Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0-alpha.20",
          "kind": "other",
          "published_at": "2026-04-14T11:22:40Z"
        },
        {
          "tag": "interoptopus-v0.16.0-alpha.20",
          "kind": "other",
          "published_at": "2026-04-14T11:22:26Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0-alpha.20",
          "kind": "other",
          "published_at": "2026-04-14T11:22:12Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0-alpha.20",
          "kind": "other",
          "published_at": "2026-04-14T11:21:38Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.19",
          "kind": "other",
          "published_at": "2026-04-14T10:12:05Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0-alpha.19",
          "kind": "other",
          "published_at": "2026-04-14T10:11:14Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.19",
          "kind": "other",
          "published_at": "2026-04-14T10:10:15Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0-alpha.19",
          "kind": "other",
          "published_at": "2026-04-14T10:10:05Z"
        },
        {
          "tag": "interoptopus-v0.16.0-alpha.19",
          "kind": "other",
          "published_at": "2026-04-14T10:09:54Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0-alpha.19",
          "kind": "other",
          "published_at": "2026-04-14T10:09:43Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0-alpha.19",
          "kind": "other",
          "published_at": "2026-04-14T10:09:29Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.18",
          "kind": "other",
          "published_at": "2026-04-11T22:24:25Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0-alpha.18",
          "kind": "other",
          "published_at": "2026-04-11T22:24:01Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.18",
          "kind": "other",
          "published_at": "2026-04-11T22:23:30Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0-alpha.18",
          "kind": "other",
          "published_at": "2026-04-11T22:23:16Z"
        },
        {
          "tag": "interoptopus-v0.16.0-alpha.18",
          "kind": "other",
          "published_at": "2026-04-11T22:23:02Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0-alpha.18",
          "kind": "other",
          "published_at": "2026-04-11T22:22:38Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0-alpha.18",
          "kind": "other",
          "published_at": "2026-04-11T22:22:12Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.17",
          "kind": "other",
          "published_at": "2026-04-09T11:39:35Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0-alpha.17",
          "kind": "other",
          "published_at": "2026-04-09T11:39:14Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.17",
          "kind": "other",
          "published_at": "2026-04-09T11:38:46Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0-alpha.17",
          "kind": "other",
          "published_at": "2026-04-09T11:38:19Z"
        },
        {
          "tag": "interoptopus-v0.16.0-alpha.17",
          "kind": "other",
          "published_at": "2026-04-09T11:38:04Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0-alpha.17",
          "kind": "other",
          "published_at": "2026-04-09T11:37:51Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0-alpha.17",
          "kind": "other",
          "published_at": "2026-04-09T11:37:26Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.16",
          "kind": "other",
          "published_at": "2026-04-08T10:26:25Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.16",
          "kind": "other",
          "published_at": "2026-04-08T10:08:41Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0-alpha.16",
          "kind": "other",
          "published_at": "2026-04-08T10:07:39Z"
        },
        {
          "tag": "interoptopus-v0.16.0-alpha.16",
          "kind": "other",
          "published_at": "2026-04-08T10:07:11Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0-alpha.16",
          "kind": "other",
          "published_at": "2026-04-08T10:06:57Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0-alpha.16",
          "kind": "other",
          "published_at": "2026-04-08T10:06:19Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.14",
          "kind": "other",
          "published_at": "2026-03-31T19:47:54Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0-alpha.14",
          "kind": "other",
          "published_at": "2026-03-31T19:47:38Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.14",
          "kind": "other",
          "published_at": "2026-03-31T19:47:07Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0-alpha.14",
          "kind": "other",
          "published_at": "2026-03-31T19:47:00Z"
        },
        {
          "tag": "interoptopus-v0.16.0-alpha.14",
          "kind": "other",
          "published_at": "2026-03-31T19:46:49Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0-alpha.14",
          "kind": "other",
          "published_at": "2026-03-31T19:46:40Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0-alpha.14",
          "kind": "other",
          "published_at": "2026-03-31T19:46:24Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.13",
          "kind": "other",
          "published_at": "2026-03-31T09:24:35Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0-alpha.13",
          "kind": "other",
          "published_at": "2026-03-31T09:24:18Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.13",
          "kind": "other",
          "published_at": "2026-03-31T09:23:54Z"
        },
        {
          "tag": "interoptopus_c-v0.16.0-alpha.13",
          "kind": "other",
          "published_at": "2026-03-31T09:23:41Z"
        },
        {
          "tag": "interoptopus-v0.16.0-alpha.13",
          "kind": "other",
          "published_at": "2026-03-31T09:23:30Z"
        },
        {
          "tag": "interoptopus_proc-v0.16.0-alpha.13",
          "kind": "other",
          "published_at": "2026-03-31T09:23:20Z"
        },
        {
          "tag": "interoptopus_proc_impl-v0.16.0-alpha.13",
          "kind": "other",
          "published_at": "2026-03-31T09:23:08Z"
        },
        {
          "tag": "interoptopus_csharp-v0.16.0-alpha.12",
          "kind": "other",
          "published_at": "2026-03-29T15:22:39Z"
        },
        {
          "tag": "interoptopus_backends-v0.16.0-alpha.12",
          "kind": "other",
          "published_at": "2026-03-29T15:22:21Z"
        },
        {
          "tag": "interoptopus_cpython-v0.16.0-alpha.12",
          "kind": "other",
          "published_at": "2026-03-29T15:21:55Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "e802572749d6b3bf6879ab92c5361925250fdc04",
          "body": null,
          "is_bot": true,
          "headline": "chore: release v0.16.4",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-28T11:06:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "639a6207af3c368702ede2d62081fe82ce1f9339",
          "body": null,
          "is_bot": false,
          "headline": "Add tests for slice access.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-07-28T10:37:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "28cf4d1e61956803cc4d75e04b34e42c20662f88",
          "body": null,
          "is_bot": false,
          "headline": "Fix slice-in-struct access.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-07-28T10:37:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0d5e9281d456820655856eafe95f3fb1b2bc8ee",
          "body": null,
          "is_bot": false,
          "headline": "build: Move gloabl.json to the backend_csharp",
          "author_name": "OleRoss",
          "author_login": "OleRoss",
          "committed_at": "2026-07-23T08:04:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9fd4aed94061d57a0d896d3bb8e63b56bfe97671",
          "body": null,
          "is_bot": false,
          "headline": "Fix async Arc codegen.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-07-22T14:36:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dfe33934f76442fbc76e8913781bd5f4f5c7e1fd",
          "body": "Preserve pointer inference in generated Arc constructors so invalid service constructors continue to report only the intended macro validation error.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Stabilize generated constructor diagnostics",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-07-22T14:36:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2ecb40cd0077978610b0773ca460612b0ad69d5c",
          "body": "The generated constructor now builds Arc storage directly, so the invalid-return compile error points at Arc::new instead of Result::Ok.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Update constructor UI diagnostic",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-07-22T14:36:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a9e164976e2a99b34c94054146f1777ea7f66935",
          "body": "Use Arc storage consistently for all generated service handles so services that only provide an async runtime are not reconstructed with the wrong allocation type.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix service ownership for async constructors",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-07-22T14:36:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b56f7587acd7fecca4bf69f573cc29d820e9450d",
          "body": "Dispose cancellation registrations before freeing native task handles so an in-flight cancellation callback cannot abort through a freed pointer.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: prevent async task handle use-after-free",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-07-22T08:55:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b87299a3476146acc966da1cf56d70443904a3ac",
          "body": null,
          "is_bot": false,
          "headline": "build: Run tests with native aot enabled",
          "author_name": "OleRoss",
          "author_login": "OleRoss",
          "committed_at": "2026-07-17T12:08:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a64bea06d3ebe18e23dd54f4a1bbb6a7d929e489",
          "body": null,
          "is_bot": false,
          "headline": "build: Use xunit.v3",
          "author_name": "OleRoss",
          "author_login": "OleRoss",
          "committed_at": "2026-07-17T12:08:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6fb284c90f371d79e04be16688412e01b131106e",
          "body": "interoptopus@0.16.3\ninteroptopus_backends@0.16.3\ninteroptopus_c@0.16.3\ninteroptopus_cpython@0.16.3\ninteroptopus_csharp@0.16.3\ninteroptopus_proc@0.16.3\ninteroptopus_proc_impl@0.16.3\n\nGenerated by cargo-workspaces",
          "is_bot": false,
          "headline": "Release 0.16.3",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-07-06T15:03:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f69f80d8be13744141778c75d87ead71dc174606",
          "body": "interoptopus@0.16.2\ninteroptopus_backends@0.16.2\ninteroptopus_c@0.16.2\ninteroptopus_cpython@0.16.2\ninteroptopus_csharp@0.16.2\n\nGenerated by cargo-workspaces",
          "is_bot": false,
          "headline": "Release 0.16.2",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-07-06T15:02:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b887ebd332f649536f19118b0b0d189c9b9e4bb4",
          "body": null,
          "is_bot": false,
          "headline": "refactor: Move output into templates",
          "author_name": "OleRoss",
          "author_login": "OleRoss",
          "committed_at": "2026-07-06T14:43:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d589ad9a81c4d5dc298c73b124a27d55a050c646",
          "body": null,
          "is_bot": false,
          "headline": "feat: Emit IResult implementations",
          "author_name": "OleRoss",
          "author_login": "OleRoss",
          "committed_at": "2026-07-06T14:43:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8e3c98dce01fd390721ad453d1a17751b3a798c",
          "body": null,
          "is_bot": false,
          "headline": "feat: Add a result pattern test",
          "author_name": "OleRoss",
          "author_login": "OleRoss",
          "committed_at": "2026-07-06T14:43:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f04bf45bc17e96d69bfb4e1aa2eed55a84bc1ff",
          "body": "The previous TokioInner::Drop spawned a detached, never-joined OS thread to\ndrop the runtime when in an async context. That detached thread races with\nprocess/test-host teardown and could abort the .NET test host on Linux.\n\nUse Runtime::shutdown_background() instead: it never blocks and is safe to\nc\n[…]\n from any context, including a Tokio worker thread, removing the need for\nthe spawned thread and the Handle::try_current() branch.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix racy Tokio shutdown using shutdown_background",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-06-14T05:39:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8e3d26d009384384bea5b0d8aca5dedfb4a9c92e",
          "body": null,
          "is_bot": false,
          "headline": "Fix runtime racy shutdown on panic.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-06-12T14:49:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "031325ea57ede48fdb3c33677b84faf5073bed76",
          "body": "The C# backend generates AsUnmanaged() calls for every composite field,\nincluding slice fields, but the blittable-element slice template (fast.cs,\nused for SliceByte/SliceU32/SliceVec3f32/...) only defined ToUnmanaged().\nA struct embedding e.g. Slice<u8> therefore failed to compile with CS1061\n(Slic\n[…]\nle\ngate exercises this path; previously no composite embedded a blittable slice,\nwhich is why the broken codegen shipped uncaught.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(csharp): emit AsUnmanaged() on blittable slice bindings",
          "author_name": "Sander Saares",
          "author_login": "sandersaares",
          "committed_at": "2026-06-12T08:51:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d276a7eb4c078b47134674e35b83dc43a497003f",
          "body": "Bump workspace and inter-crate version pins from 0.16.0-alpha.24 to 0.16.0.\nRepoint docs.rs API link in the website to latest instead of a pinned alpha.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: prepare 0.16.0 release",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-06-03T16:00:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1faa5f73a219877185ea4ed922346f34fadbe010",
          "body": null,
          "is_bot": false,
          "headline": "Fix `just ci`.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-06-03T15:51:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac3561cda253f505fb428f428e6bae84277c60d8",
          "body": null,
          "is_bot": false,
          "headline": "Fix clippy and fmt.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-06-03T15:41:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb5831a5fb79052021ea4c0341ab4bb0d5913a36",
          "body": "…ions with panics in Rust.",
          "is_bot": false,
          "headline": "Remove brittle global callback handler and replace uncaught C# except…",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-06-03T15:34:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d9e903bf3a8708073dd363bf073d69af396ca9b",
          "body": null,
          "is_bot": false,
          "headline": "Surface C# exceptions as Result::Panic",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-06-03T15:34:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d7a48bc1b7b7823e7689c8f2ade8ad0beaeb6e1",
          "body": null,
          "is_bot": false,
          "headline": "Enable ctors without Result.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-06-03T15:34:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "959ce0031fb23a303c4dc71156e7beae234cfed0",
          "body": null,
          "is_bot": true,
          "headline": "chore: release v0.16.0-alpha.24",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-02T17:46:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06f3860d5f890528c037d301b40441a51ee11958",
          "body": null,
          "is_bot": false,
          "headline": "Fix format + clippy.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-06-02T17:17:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4550d834a26bbd766677f779e9a7f1f602fbb071",
          "body": null,
          "is_bot": false,
          "headline": "Support payload enums in Wire directly.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-06-02T17:08:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bafb2c0915d56cb643913b46601393e0eef323e9",
          "body": "CI was failing on master because Cargo.lock was gitignored, causing CI to resolve tera 2.0.0-alpha.6 while local builds used the cached 2.0.0-alpha.2. Tera's whitespace handling for {{ expr }} changed between those alphas, producing extra blank lines in C# backend output and breaking snapshot tests.\n[…]\nargo.lock from .gitignore so CI and local resolve identically.\n- Re-accept C# backend snapshots against the new whitespace output.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Bump tera to 2.0.0-alpha.6 and commit Cargo.lock",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-06-02T14:04:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "637ade1e06cf05d35406fbb283b06daf17092230",
          "body": null,
          "is_bot": false,
          "headline": "Add missing zero-arguments `impl_fnptr!`",
          "author_name": "Pspritechologist",
          "author_login": "Pspritechologist",
          "committed_at": "2026-06-02T13:42:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81b926ed15405ddf9d5b0a601e5b52d2c3e7a875",
          "body": null,
          "is_bot": true,
          "headline": "chore: release v0.16.0-alpha.23",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-04T16:06:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73d70c2cce60c311cb15598e43fb624b2e12a128",
          "body": null,
          "is_bot": false,
          "headline": "Fix fmt.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-05-04T14:31:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a4068c40e5f808c3c10b9ffee83ce6cda56253a",
          "body": "…ission.",
          "is_bot": false,
          "headline": "Re-enable C# reference project snapshot testing and stabilize item em…",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-05-04T14:16:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b01393f5ce9407f11c2a43728be0f884aa86cba",
          "body": null,
          "is_bot": true,
          "headline": "chore: release v0.16.0-alpha.22",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-28T15:05:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b20ca963038c9c49995947bbfd577344861bbc9d",
          "body": null,
          "is_bot": false,
          "headline": "Improve async continuation when no synchronization context is present.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-28T14:34:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26865b720ea6cc8ccef841b0135189ccba532272",
          "body": null,
          "is_bot": false,
          "headline": "Add panic tests for async methods.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-28T11:29:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8126133bc5014ea957d8748aa0231b4a01864474",
          "body": null,
          "is_bot": false,
          "headline": "Also feature gate extensions.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-28T11:29:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "42ffec52bc14b0c06cfb11cf5a16aa3f124cb0b0",
          "body": null,
          "is_bot": true,
          "headline": "chore: release v0.16.0-alpha.21",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-27T10:00:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61cb57797b4cff647ef633f57a01d793a29b8e94",
          "body": null,
          "is_bot": false,
          "headline": "Also update snapshots.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-27T09:40:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80078800c8c45d1ac83a41223c361e39796f2260",
          "body": null,
          "is_bot": false,
          "headline": "Fix doc warning.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-27T09:15:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06ab458b26c79c5e838eb4f0ecefd209c9b99b3d",
          "body": null,
          "is_bot": false,
          "headline": "Enable more lints, and suppress some for macros.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-27T09:15:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fbdcc5701d4713aab652647958f78915ff1b24e1",
          "body": null,
          "is_bot": false,
          "headline": "Improve docs.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-14T21:56:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6781bf6222474fc1d947b508cd92308b307ab274",
          "body": null,
          "is_bot": true,
          "headline": "chore: release v0.16.0-alpha.20",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-14T11:12:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0db2921cd2e47b545559f441d9567b1413c770b2",
          "body": null,
          "is_bot": false,
          "headline": "Fix lint issues(?!)",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-14T10:57:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0104225fbe9a97bf5e2f22cb42a81f0baaef040",
          "body": null,
          "is_bot": false,
          "headline": "Upgrade to tera 2.0",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-14T10:57:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "523a39d87935d87a351926486250c21e5e17f731",
          "body": null,
          "is_bot": true,
          "headline": "chore: release v0.16.0-alpha.19",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-14T10:02:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c715c7af76e1bfb38dd452a02f469d28e89453c",
          "body": null,
          "is_bot": false,
          "headline": "Fix CI.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-14T09:42:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc90b39706f83528db7d86def57dd0bf10d081b5",
          "body": null,
          "is_bot": false,
          "headline": "Update docs.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-14T09:39:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ebfc926bbe19976204e51e14674f836706e10ac",
          "body": null,
          "is_bot": false,
          "headline": "Clean up .NET code.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-14T09:06:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a1e1ad7017f5dbde08d03f93639bbd66816c948",
          "body": null,
          "is_bot": false,
          "headline": "Emit all fields as required.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-14T07:22:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e19d490676e19fa68cc3fb774ceeb667ae0397c2",
          "body": null,
          "is_bot": false,
          "headline": "Don't emit ctor.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-14T07:13:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27a69f72b5bbf3d6575f63a2d6810683fb6d92a8",
          "body": null,
          "is_bot": false,
          "headline": "Mark all option types are `?` in wire codegen.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-13T15:07:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4024521c6c73f51815d4079ddfe840a0b2a685c6",
          "body": null,
          "is_bot": false,
          "headline": "Move extension mechanism to builder.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-13T14:36:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c97c8b45ab1eafa61ec6f132821bb2386970c92e",
          "body": null,
          "is_bot": false,
          "headline": "Fix links.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-13T13:22:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ef61007d69379bad055146e7074f6a0e89fb259",
          "body": "Make convenince `Dispatch::single_file` actually useful.",
          "is_bot": false,
          "headline": "Make single_file accept namespace.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-13T12:32:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a194bbbcd6c1d229c0eef4c320c21fbea3577713",
          "body": null,
          "is_bot": false,
          "headline": "Fix doc wording.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-12T22:06:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "48a4edfe0d1ed14d376f78704124c050bb16f19d",
          "body": null,
          "is_bot": true,
          "headline": "chore: release v0.16.0-alpha.18",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-11T22:13:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "332af7b18838792763fc004c611330a5f0f31bda",
          "body": null,
          "is_bot": false,
          "headline": "Cleanup tests.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-10T21:52:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "008516e3a811a67adaf73debccae7422cac1bdb3",
          "body": null,
          "is_bot": false,
          "headline": "Disable more warnings in generated code.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-10T19:22:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56237543caf9953243d86bafa7c188aa55cd0678",
          "body": null,
          "is_bot": false,
          "headline": "Rename config functions.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-10T19:14:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55da8643135e7164113ad44ef7d49e4ae49491bc",
          "body": null,
          "is_bot": false,
          "headline": "Also add memory test for task drop.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-10T19:10:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a911c4a044674aedd976fb06ad14e5f5655394f",
          "body": null,
          "is_bot": true,
          "headline": "chore: release v0.16.0-alpha.17",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-09T11:31:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1ecd9011059fa898a3d52a3c5bd33945d96068b",
          "body": null,
          "is_bot": false,
          "headline": "Update snapshots.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-09T11:07:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f88e802457d045e271d42a96906def3a5c23805d",
          "body": null,
          "is_bot": false,
          "headline": "Format and clippy.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-09T10:58:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3511f73e471724f6a01c00f45d8298426a03b79",
          "body": null,
          "is_bot": false,
          "headline": "Improve documentation.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-09T10:49:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63a5185edb9f9f6eca062ac77cb0f6e4cca7f507",
          "body": null,
          "is_bot": false,
          "headline": "Improve Option support in Wire types.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-09T10:30:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a578951db07174e3d2c6563702dfacac5e7ccfe9",
          "body": null,
          "is_bot": true,
          "headline": "chore: release v0.16.0-alpha.16",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-08T10:20:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f89a2fb7f7509a884759eb76eed7f089f5376669",
          "body": null,
          "is_bot": false,
          "headline": "Clarify name.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-07T15:48:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fdc731531c095374842d5b4776a82974e9eb1fd",
          "body": null,
          "is_bot": false,
          "headline": "Add more callback tests.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-07T15:48:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d2304ff7e333f35e6cf0d00eec2a93e0184df31",
          "body": null,
          "is_bot": false,
          "headline": "Clean up fluff.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-07T15:48:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8fa82d8f0d0cf1d515fe828c38b1be3f0471cf67",
          "body": "When a managed callback is marshalled to unmanaged (via IntoUnmanaged()),\nthe native trampoline delegate backing the function pointer could be\ngarbage collected while Rust still held the raw pointer  causing:\n\n  'A callback was made on a garbage collected delegate'\n\nThis happened because IntoUnmanag\n[…]\n unchanged\n- Add ServiceCallbacks.create_with_callback() + GC.Collect() test\n- Revert service-level _prevent_gc (no longer needed)\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix GC of managed delegates passed across FFI boundary",
          "author_name": "Tim Peters (HE/HIM) (from Dev Box)",
          "author_login": "Darksecond",
          "committed_at": "2026-04-07T15:48:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b3be87d6cef035de08f3d97fbaea2bb4d9bccd9f",
          "body": null,
          "is_bot": false,
          "headline": "Fix broken links.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T18:33:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b0b40ce483cd29736af74b5df5b8f49b4029df4",
          "body": null,
          "is_bot": false,
          "headline": "Manually bump.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T16:47:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8680495a56f57ce2c1f8880471ac106c1386c6ad",
          "body": null,
          "is_bot": false,
          "headline": "Explain async cost more.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T16:45:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9caccca3e85400b3c73c81379e0f10c0296f6d6c",
          "body": null,
          "is_bot": false,
          "headline": "More documentation.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T16:11:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "82401cb91fc4d58a619835dfa201a1caa243119e",
          "body": null,
          "is_bot": false,
          "headline": "Switch DLL loading behavior in example.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T13:41:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "045f623a3b9513ff267b86d7f24e25f8f506deef",
          "body": null,
          "is_bot": false,
          "headline": "Update snapshots.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T12:50:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a44658abeb8650c93305632aade0d6464641f563",
          "body": null,
          "is_bot": false,
          "headline": "Fix clippy.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T12:45:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "969311d0022729f06dc5eb4fb14551c8f10e3502",
          "body": null,
          "is_bot": false,
          "headline": "Support DLL search paths.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T12:44:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4df8accce7727b34ae8175e539244e0acd08987d",
          "body": null,
          "is_bot": false,
          "headline": "Guard against various plugin misuse patterns.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T10:21:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c649f31406d5ee5fff05d41c2846ed03706d38df",
          "body": null,
          "is_bot": false,
          "headline": "Guard against misuse.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T10:15:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef569b022cfe3bbcf4521d3ddd23e68121c1f880",
          "body": null,
          "is_bot": false,
          "headline": "Fix proc macro IDE highlight.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T10:06:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd1ca48fa67dbd2c5d97dde88193679c8dc6f7e7",
          "body": null,
          "is_bot": false,
          "headline": "Also make async plugin methods cancellable.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-04-01T09:55:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80850d2ec917f273ece9fc3dfe7c08de6d0948e9",
          "body": null,
          "is_bot": false,
          "headline": "Typo.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T19:40:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d742314a5417145c9980183cd67c96bc28dd08b2",
          "body": null,
          "is_bot": false,
          "headline": "Update w. unstable API for now.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T19:30:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b8f5be7d587b8073abe74995e9198c41cea9f91",
          "body": null,
          "is_bot": false,
          "headline": "Update benchmark numbers.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T19:29:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e85f4a8f02ca20f5a4f61533ef0548d649390941",
          "body": null,
          "is_bot": false,
          "headline": "Lint.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T18:12:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f773a8f3a9c655c94f5ad098ac5d51f7c618854d",
          "body": null,
          "is_bot": false,
          "headline": "Optimize task spawning cancellation.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T18:07:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "054f6d8ae7f1e4fe60593d5c077aa6e7d8058ed2",
          "body": null,
          "is_bot": false,
          "headline": "Use `using var` style.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T18:06:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7621246400ca4d923a8d827b2c405782b31e8f5a",
          "body": null,
          "is_bot": false,
          "headline": "Fix some snaps we missed.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T18:01:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "926d2d06d7eef47d034c1143c36de239eab54469",
          "body": null,
          "is_bot": false,
          "headline": "Disable more warnings.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T17:36:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45d512afa39fe83a8679230a844f3ec7fe4aa285",
          "body": null,
          "is_bot": false,
          "headline": "Clippy and fmt.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T17:36:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22b2bc922acf12ee31991f18c5106e0e0eb9ec12",
          "body": null,
          "is_bot": false,
          "headline": "Support task cancellation token.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T17:36:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "748c8bccabd7aee045ed8833c8486f39318ec9bd",
          "body": null,
          "is_bot": false,
          "headline": "Disable more autogen warnings.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T17:36:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3fd8a4831c8044a5cafef366693961d196e866d4",
          "body": null,
          "is_bot": false,
          "headline": "Fix warnings.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T17:36:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "243fb2db7bf9a99e3f802018c2334d9caaa78d76",
          "body": null,
          "is_bot": false,
          "headline": "Emit enum size that fits the problem.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T17:36:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3ea9e440046af161cb341b37e81d459ebbae5ea",
          "body": null,
          "is_bot": false,
          "headline": "Allow users to derive / modify API hash.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T17:36:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0e01bd30bbcccc75400c7097f622862a2f65c8d",
          "body": null,
          "is_bot": false,
          "headline": "Update CStrPtr usage guides.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T17:36:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "669b6a75f17371aeab1f82f8ee96b53556389ecd",
          "body": null,
          "is_bot": false,
          "headline": "Rename api guard, add callback dispose protection.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T17:36:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93000eb04210b8978c98afb9dfc0474f1c5dce12",
          "body": null,
          "is_bot": false,
          "headline": "Also emit API guards for plugins.",
          "author_name": "Ralf Biedert",
          "author_login": "ralfbiedert",
          "committed_at": "2026-03-31T17:36:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 851,
      "latest_release_at": "2026-07-28T11:16:09Z",
      "latest_release_tag": "interoptopus_csharp-v0.16.4",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 37,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 4.8
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "interoptopus",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "bindings",
            "code-generation",
            "ffi",
            "api-bindings",
            "development-tools::ffi"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/interoptopus",
          "is_deprecated": false,
          "latest_version": "0.16.4",
          "repository_url": "https://github.com/ralfbiedert/interoptopus",
          "versions_count": 126,
          "total_downloads": 305647,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 9945,
          "first_published_at": "2021-06-13T22:31:40.919978Z",
          "latest_published_at": "2026-07-28T11:14:29.602106Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "interoptopus_c",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/interoptopus_c",
          "is_deprecated": false,
          "latest_version": "0.16.4",
          "repository_url": "https://github.com/ralfbiedert/interoptopus",
          "versions_count": 29,
          "total_downloads": 518,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 67,
          "first_published_at": "2026-03-17T10:53:51.102646Z",
          "latest_published_at": "2026-07-28T11:14:37.591863Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "interoptopus_proc",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "ffi",
            "api-bindings",
            "development-tools::ffi"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/interoptopus_proc",
          "is_deprecated": false,
          "latest_version": "0.16.4",
          "repository_url": "https://github.com/ralfbiedert/interoptopus",
          "versions_count": 101,
          "total_downloads": 273029,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 9878,
          "first_published_at": "2021-06-13T22:21:23.056024Z",
          "latest_published_at": "2026-07-28T11:14:21.153576Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "interoptopus_backends",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "bindings",
            "code-generation",
            "ffi",
            "api-bindings",
            "development-tools::ffi"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/interoptopus_backends",
          "is_deprecated": false,
          "latest_version": "0.16.4",
          "repository_url": "https://github.com/ralfbiedert/interoptopus",
          "versions_count": 29,
          "total_downloads": 1333,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 293,
          "first_published_at": "2026-03-17T10:53:59.039683Z",
          "latest_published_at": "2026-07-28T11:14:55.823545Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "interoptopus_csharp",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/interoptopus_csharp",
          "is_deprecated": false,
          "latest_version": "0.16.4",
          "repository_url": "https://github.com/ralfbiedert/interoptopus",
          "versions_count": 29,
          "total_downloads": 1193,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 273,
          "first_published_at": "2026-03-17T10:55:00.440377Z",
          "latest_published_at": "2026-07-28T11:15:05.760157Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "interoptopus_cpython",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/interoptopus_cpython",
          "is_deprecated": false,
          "latest_version": "0.16.4",
          "repository_url": "https://github.com/ralfbiedert/interoptopus",
          "versions_count": 29,
          "total_downloads": 532,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 69,
          "first_published_at": "2026-03-17T10:53:54.634187Z",
          "latest_published_at": "2026-07-28T11:14:44.341040Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "interoptopus_proc_impl",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "ffi",
            "api-bindings",
            "development-tools::ffi"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/interoptopus_proc_impl",
          "is_deprecated": false,
          "latest_version": "0.16.4",
          "repository_url": "https://github.com/ralfbiedert/interoptopus",
          "versions_count": 29,
          "total_downloads": 1679,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 379,
          "first_published_at": "2026-03-17T10:53:39.821293Z",
          "latest_published_at": "2026-07-28T11:14:09.754045Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 47,
      "stars": 474,
      "watchers": 8,
      "fork_history": {
        "days": [
          {
            "date": "2022-01-06",
            "count": 1
          },
          {
            "date": "2022-01-13",
            "count": 1
          },
          {
            "date": "2022-02-08",
            "count": 2
          },
          {
            "date": "2022-03-22",
            "count": 1
          },
          {
            "date": "2022-06-23",
            "count": 1
          },
          {
            "date": "2022-07-15",
            "count": 1
          },
          {
            "date": "2022-07-25",
            "count": 1
          },
          {
            "date": "2022-07-26",
            "count": 1
          },
          {
            "date": "2023-01-03",
            "count": 1
          },
          {
            "date": "2023-01-08",
            "count": 1
          },
          {
            "date": "2023-01-31",
            "count": 1
          },
          {
            "date": "2023-02-22",
            "count": 1
          },
          {
            "date": "2023-02-27",
            "count": 1
          },
          {
            "date": "2023-04-28",
            "count": 1
          },
          {
            "date": "2023-05-09",
            "count": 1
          },
          {
            "date": "2023-05-20",
            "count": 1
          },
          {
            "date": "2023-08-17",
            "count": 1
          },
          {
            "date": "2023-09-14",
            "count": 1
          },
          {
            "date": "2023-11-13",
            "count": 1
          },
          {
            "date": "2023-12-12",
            "count": 1
          },
          {
            "date": "2024-04-08",
            "count": 1
          },
          {
            "date": "2024-04-11",
            "count": 1
          },
          {
            "date": "2024-09-13",
            "count": 1
          },
          {
            "date": "2024-09-22",
            "count": 1
          },
          {
            "date": "2024-10-18",
            "count": 1
          },
          {
            "date": "2024-11-25",
            "count": 2
          },
          {
            "date": "2024-12-16",
            "count": 1
          },
          {
            "date": "2024-12-28",
            "count": 1
          },
          {
            "date": "2025-04-12",
            "count": 1
          },
          {
            "date": "2025-04-23",
            "count": 1
          },
          {
            "date": "2025-05-24",
            "count": 1
          },
          {
            "date": "2025-06-13",
            "count": 1
          },
          {
            "date": "2025-06-25",
            "count": 1
          },
          {
            "date": "2025-07-14",
            "count": 1
          },
          {
            "date": "2025-07-21",
            "count": 1
          },
          {
            "date": "2025-12-09",
            "count": 1
          },
          {
            "date": "2025-12-20",
            "count": 1
          },
          {
            "date": "2026-05-07",
            "count": 1
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-06-11",
            "count": 1
          },
          {
            "date": "2026-06-18",
            "count": 1
          },
          {
            "date": "2026-06-23",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 44,
        "total_forks": 47
      },
      "star_history": null,
      "open_issues_and_prs": 16
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Justfile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "Cargo.toml",
        "crates/_old/backend_c/Cargo.toml",
        "crates/_old/backend_cpython/Cargo.toml",
        "crates/_old/backend_csharp_old/Cargo.toml",
        "crates/_old/backend_csharp_old/tests/runtime/plugin.csproj",
        "crates/backend_c/Cargo.toml",
        "crates/backend_cpython/Cargo.toml",
        "crates/backend_csharp/Cargo.toml",
        "crates/backend_csharp/benches/dotnet/dotnet_benchmarks.csproj",
        "crates/backend_csharp/tests/backend_plugins/exceptions.dll/exceptions.csproj",
        "crates/backend_csharp/tests/backend_plugins/memory.dll/memory.csproj",
        "crates/backend_csharp/tests/reference_plugins/complex.dll/complex.csproj",
        "crates/backend_csharp/tests/reference_plugins/functions_behavior.dll/functions_behavior.csproj",
        "crates/backend_csharp/tests/reference_plugins/functions_primitive.dll/functions_primitive.csproj",
        "crates/backend_csharp/tests/reference_plugins/pattern.dll/pattern.csproj",
        "crates/backend_csharp/tests/reference_plugins/service_async.dll/service_async.csproj",
        "crates/backend_csharp/tests/reference_plugins/service_async_cancel.dll/service_async_cancel.csproj",
        "crates/backend_csharp/tests/reference_plugins/service_basic.dll/service_basic.csproj",
        "crates/backend_csharp/tests/reference_plugins/service_nested.dll/service_nested.csproj",
        "crates/backend_csharp/tests/reference_plugins/wire.dll/wire.csproj",
        "crates/backend_csharp/tests/reference_project/Bindings/Bindings.csproj",
        "crates/backend_csharp/tests/reference_project/Tests/Tests.csproj",
        "crates/backend_utils/Cargo.toml",
        "crates/core/Cargo.toml",
        "crates/proc_macros/Cargo.toml",
        "crates/proc_macros_impl/Cargo.toml",
        "crates/reference_project/Cargo.toml",
        "examples/hello_world/Cargo.toml",
        "examples/hello_world/bindings/hello_world.csproj",
        "examples/production_project/core_library/Cargo.toml",
        "examples/production_project/core_library_ffi/Cargo.toml",
        "examples/production_project/core_library_ffi_build/Cargo.toml"
      ],
      "largest_source_bytes": 59647,
      "source_files_sampled": 698,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 14201
    },
    "dependencies": {
      "manifests": [
        "Cargo.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "tar",
            "direct": true,
            "version": "0.4.44",
            "severity": "high",
            "ecosystem": "crates",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-3pv8-6f4r-ffg2",
              "GHSA-gchp-q4r4-x4ff",
              "GHSA-j4xf-2g29-59ph",
              "RUSTSEC-2026-0067",
              "RUSTSEC-2026-0068"
            ],
            "fixed_version": "0.4.46",
            "advisory_count": 5,
            "oldest_advisory_days": 131
          },
          {
            "name": "rustls-webpki",
            "direct": false,
            "version": "0.103.9",
            "severity": "high",
            "ecosystem": "crates",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-82j2-j2ch-gfr8",
              "GHSA-965h-392x-2mh5",
              "GHSA-pwjx-qhcg-rvj4",
              "GHSA-xgp8-3hg3-c2mh",
              "RUSTSEC-2026-0049",
              "RUSTSEC-2026-0098",
              "RUSTSEC-2026-0099",
              "RUSTSEC-2026-0104"
            ],
            "fixed_version": "0.104.0-alpha.7",
            "advisory_count": 8,
            "oldest_advisory_days": 130
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "1.10.1",
            "severity": "moderate",
            "ecosystem": "crates",
            "cvss_score": 6.2,
            "advisory_ids": [
              "GHSA-434x-w66g-qw3r",
              "RUSTSEC-2026-0007"
            ],
            "fixed_version": "1.11.1",
            "advisory_count": 2,
            "oldest_advisory_days": 175
          },
          {
            "name": "anyhow",
            "direct": false,
            "version": "1.0.102",
            "severity": "unknown",
            "ecosystem": "crates",
            "cvss_score": null,
            "advisory_ids": [
              "RUSTSEC-2026-0190"
            ],
            "fixed_version": "1.0.103",
            "advisory_count": 1,
            "oldest_advisory_days": 33
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 2,
          "unknown": 1,
          "moderate": 1
        },
        "advisory_count": 16,
        "affected_count": 4,
        "assessed_count": 236,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 3,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "crates"
      ],
      "dependencies": [
        {
          "name": "interoptopus",
          "manifest": "crates/backend_c/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "interoptopus",
          "manifest": "crates/backend_cpython/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "interoptopus",
          "manifest": "crates/backend_csharp/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "interoptopus_backends",
          "manifest": "crates/backend_csharp/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "libloading",
          "manifest": "crates/backend_csharp/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "netcorehost",
          "manifest": "crates/backend_csharp/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tempfile",
          "manifest": "crates/backend_csharp/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "interoptopus",
          "manifest": "crates/backend_utils/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tar",
          "manifest": "crates/backend_utils/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tera",
          "manifest": "crates/backend_utils/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "interoptopus_proc",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tokio",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "interoptopus_proc_impl",
          "manifest": "crates/proc_macros/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "prettyplease",
          "manifest": "crates/proc_macros_impl/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "proc-macro2",
          "manifest": "crates/proc_macros_impl/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "quote",
          "manifest": "crates/proc_macros_impl/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "syn",
          "manifest": "crates/proc_macros_impl/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "interoptopus",
          "manifest": "crates/reference_project/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tokio",
          "manifest": "crates/reference_project/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "libloading",
            "direct": true,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "netcorehost",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "netcorehost",
            "direct": true,
            "version": "0.20.1",
            "ecosystem": "crates"
          },
          {
            "name": "prettyplease",
            "direct": true,
            "version": "0.2.37",
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": true,
            "version": "1.0.101",
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": true,
            "version": "1.0.41",
            "ecosystem": "crates"
          },
          {
            "name": "serde",
            "direct": true,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": true,
            "version": "2.0.106",
            "ecosystem": "crates"
          },
          {
            "name": "tar",
            "direct": true,
            "version": "0.4.44",
            "ecosystem": "crates"
          },
          {
            "name": "tempfile",
            "direct": true,
            "version": "3.23.0",
            "ecosystem": "crates"
          },
          {
            "name": "tera",
            "direct": true,
            "version": "2.0.0-alpha.6",
            "ecosystem": "crates"
          },
          {
            "name": "tokio",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "tokio",
            "direct": true,
            "version": "1.48.0",
            "ecosystem": "crates"
          },
          {
            "name": "adler2",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "aes",
            "direct": false,
            "version": "0.8.4",
            "ecosystem": "crates"
          },
          {
            "name": "anyhow",
            "direct": false,
            "version": "1.0.102",
            "ecosystem": "crates"
          },
          {
            "name": "base64",
            "direct": false,
            "version": "0.22.1",
            "ecosystem": "crates"
          },
          {
            "name": "bitflags",
            "direct": false,
            "version": "2.9.4",
            "ecosystem": "crates"
          },
          {
            "name": "block-buffer",
            "direct": false,
            "version": "0.10.4",
            "ecosystem": "crates"
          },
          {
            "name": "build-target",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "bumpalo",
            "direct": false,
            "version": "3.19.0",
            "ecosystem": "crates"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "1.10.1",
            "ecosystem": "crates"
          },
          {
            "name": "bzip2",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "cargo-emit",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "cc",
            "direct": false,
            "version": "1.2.54",
            "ecosystem": "crates"
          },
          {
            "name": "cfg-if",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "crates"
          },
          {
            "name": "cfg-tt",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "cipher",
            "direct": false,
            "version": "0.4.4",
            "ecosystem": "crates"
          },
          {
            "name": "console",
            "direct": false,
            "version": "0.15.11",
            "ecosystem": "crates"
          },
          {
            "name": "const_panic",
            "direct": false,
            "version": "0.2.15",
            "ecosystem": "crates"
          },
          {
            "name": "constant_time_eq",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "convert_case",
            "direct": false,
            "version": "0.10.0",
            "ecosystem": "crates"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.18.1",
            "ecosystem": "crates"
          },
          {
            "name": "cookie_store",
            "direct": false,
            "version": "0.22.1",
            "ecosystem": "crates"
          },
          {
            "name": "coreclr-hosting-shared",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "cpufeatures",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "crates"
          },
          {
            "name": "crc32fast",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "crypto-common",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "crates"
          },
          {
            "name": "cstr",
            "direct": false,
            "version": "0.2.12",
            "ecosystem": "crates"
          },
          {
            "name": "cty",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "deflate64",
            "direct": false,
            "version": "0.1.11",
            "ecosystem": "crates"
          },
          {
            "name": "deranged",
            "direct": false,
            "version": "0.5.8",
            "ecosystem": "crates"
          },
          {
            "name": "derive_more",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "derive_more-impl",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "destruct-drop",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "destruct-drop-derive",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "digest",
            "direct": false,
            "version": "0.10.7",
            "ecosystem": "crates"
          },
          {
            "name": "displaydoc",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "crates"
          },
          {
            "name": "dlopen2",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "crates"
          },
          {
            "name": "dlopen2_derive",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "crates"
          },
          {
            "name": "document-features",
            "direct": false,
            "version": "0.2.12",
            "ecosystem": "crates"
          },
          {
            "name": "encode_unicode",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "enum-map",
            "direct": false,
            "version": "2.7.3",
            "ecosystem": "crates"
          },
          {
            "name": "enum-map-derive",
            "direct": false,
            "version": "0.17.0",
            "ecosystem": "crates"
          },
          {
            "name": "equivalent",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "crates"
          },
          {
            "name": "errno",
            "direct": false,
            "version": "0.3.14",
            "ecosystem": "crates"
          },
          {
            "name": "fastrand",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "ffi-opaque",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "filetime",
            "direct": false,
            "version": "0.2.27",
            "ecosystem": "crates"
          },
          {
            "name": "find-msvc-tools",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "crates"
          },
          {
            "name": "flate2",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "crates"
          },
          {
            "name": "fn-ptr",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "crates"
          },
          {
            "name": "foldhash",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "form_urlencoded",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "generic-array",
            "direct": false,
            "version": "0.14.9",
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": "0.2.16",
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.15.5",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.16.1",
            "ecosystem": "crates"
          },
          {
            "name": "heck",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "hmac",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "crates"
          },
          {
            "name": "hostfxr-sys",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "http",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "httparse",
            "direct": false,
            "version": "1.10.1",
            "ecosystem": "crates"
          },
          {
            "name": "icu_collections",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "icu_locale_core",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "icu_normalizer",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "icu_normalizer_data",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "icu_properties",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "icu_properties_data",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "icu_provider",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "id-arena",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "idna_adapter",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "indexmap",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "inout",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "insta",
            "direct": false,
            "version": "1.46.3",
            "ecosystem": "crates"
          },
          {
            "name": "itoa",
            "direct": false,
            "version": "1.0.15",
            "ecosystem": "crates"
          },
          {
            "name": "jobserver",
            "direct": false,
            "version": "0.1.34",
            "ecosystem": "crates"
          },
          {
            "name": "js-sys",
            "direct": false,
            "version": "0.3.81",
            "ecosystem": "crates"
          },
          {
            "name": "konst",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "crates"
          },
          {
            "name": "leb128fmt",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "libbz2-rs-sys",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "libc",
            "direct": false,
            "version": "0.2.176",
            "ecosystem": "crates"
          },
          {
            "name": "libredox",
            "direct": false,
            "version": "0.1.14",
            "ecosystem": "crates"
          },
          {
            "name": "linux-raw-sys",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "litemap",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "litrs",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "lock_api",
            "direct": false,
            "version": "0.4.14",
            "ecosystem": "crates"
          },
          {
            "name": "log",
            "direct": false,
            "version": "0.4.28",
            "ecosystem": "crates"
          },
          {
            "name": "lzma-rust2",
            "direct": false,
            "version": "0.16.2",
            "ecosystem": "crates"
          },
          {
            "name": "memchr",
            "direct": false,
            "version": "2.7.6",
            "ecosystem": "crates"
          },
          {
            "name": "memory-stats",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "memory-stats",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "miniz_oxide",
            "direct": false,
            "version": "0.8.9",
            "ecosystem": "crates"
          },
          {
            "name": "mio",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "crates"
          },
          {
            "name": "nethost-sys",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "num-conv",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "num_enum",
            "direct": false,
            "version": "0.7.6",
            "ecosystem": "crates"
          },
          {
            "name": "num_enum_derive",
            "direct": false,
            "version": "0.7.6",
            "ecosystem": "crates"
          },
          {
            "name": "once_cell",
            "direct": false,
            "version": "1.21.3",
            "ecosystem": "crates"
          },
          {
            "name": "parking_lot",
            "direct": false,
            "version": "0.12.5",
            "ecosystem": "crates"
          },
          {
            "name": "parking_lot_core",
            "direct": false,
            "version": "0.9.12",
            "ecosystem": "crates"
          },
          {
            "name": "pbkdf2",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "crates"
          },
          {
            "name": "percent-encoding",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "crates"
          },
          {
            "name": "pin-project-lite",
            "direct": false,
            "version": "0.2.16",
            "ecosystem": "crates"
          },
          {
            "name": "pkg-config",
            "direct": false,
            "version": "0.3.32",
            "ecosystem": "crates"
          },
          {
            "name": "plain",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "potential_utf",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "powerfmt",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "ppmd-rust",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "r-efi",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "r-efi",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "redox_syscall",
            "direct": false,
            "version": "0.5.18",
            "ecosystem": "crates"
          },
          {
            "name": "redox_syscall",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "crates"
          },
          {
            "name": "ring",
            "direct": false,
            "version": "0.17.14",
            "ecosystem": "crates"
          },
          {
            "name": "rustc_version",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "crates"
          },
          {
            "name": "rustix",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "rustls",
            "direct": false,
            "version": "0.23.37",
            "ecosystem": "crates"
          },
          {
            "name": "rustls-pki-types",
            "direct": false,
            "version": "1.14.0",
            "ecosystem": "crates"
          },
          {
            "name": "rustls-webpki",
            "direct": false,
            "version": "0.103.9",
            "ecosystem": "crates"
          },
          {
            "name": "rustversion",
            "direct": false,
            "version": "1.0.22",
            "ecosystem": "crates"
          },
          {
            "name": "ryu",
            "direct": false,
            "version": "1.0.20",
            "ecosystem": "crates"
          },
          {
            "name": "scopeguard",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "1.0.27",
            "ecosystem": "crates"
          },
          {
            "name": "serde_core",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_derive",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_json",
            "direct": false,
            "version": "1.0.145",
            "ecosystem": "crates"
          },
          {
            "name": "serde_spanned",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "crates"
          },
          {
            "name": "sha1",
            "direct": false,
            "version": "0.10.6",
            "ecosystem": "crates"
          },
          {
            "name": "sha2",
            "direct": false,
            "version": "0.10.9",
            "ecosystem": "crates"
          },
          {
            "name": "shlex",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "signal-hook-registry",
            "direct": false,
            "version": "1.4.6",
            "ecosystem": "crates"
          },
          {
            "name": "simd-adler32",
            "direct": false,
            "version": "0.3.8",
            "ecosystem": "crates"
          },
          {
            "name": "similar",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "crates"
          },
          {
            "name": "smallvec",
            "direct": false,
            "version": "1.15.1",
            "ecosystem": "crates"
          },
          {
            "name": "socket2",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "stable_deref_trait",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "subtle",
            "direct": false,
            "version": "2.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "synstructure",
            "direct": false,
            "version": "0.13.2",
            "ecosystem": "crates"
          },
          {
            "name": "target-triple",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "termcolor",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror",
            "direct": false,
            "version": "2.0.18",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror-impl",
            "direct": false,
            "version": "2.0.18",
            "ecosystem": "crates"
          },
          {
            "name": "time",
            "direct": false,
            "version": "0.3.47",
            "ecosystem": "crates"
          },
          {
            "name": "time-core",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "crates"
          },
          {
            "name": "time-macros",
            "direct": false,
            "version": "0.2.27",
            "ecosystem": "crates"
          },
          {
            "name": "tinystr",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "crates"
          },
          {
            "name": "tokio-macros",
            "direct": false,
            "version": "2.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "toml",
            "direct": false,
            "version": "1.0.3+spec-1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "toml_datetime",
            "direct": false,
            "version": "1.0.0+spec-1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "toml_parser",
            "direct": false,
            "version": "1.0.9+spec-1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "toml_writer",
            "direct": false,
            "version": "1.0.6+spec-1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "trybuild",
            "direct": false,
            "version": "1.0.116",
            "ecosystem": "crates"
          },
          {
            "name": "typed-path",
            "direct": false,
            "version": "0.12.3",
            "ecosystem": "crates"
          },
          {
            "name": "typenum",
            "direct": false,
            "version": "1.19.0",
            "ecosystem": "crates"
          },
          {
            "name": "typewit",
            "direct": false,
            "version": "1.14.2",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-ident",
            "direct": false,
            "version": "1.0.19",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-segmentation",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-xid",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "crates"
          },
          {
            "name": "untrusted",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "ureq",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "ureq-proto",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "url",
            "direct": false,
            "version": "2.5.8",
            "ecosystem": "crates"
          },
          {
            "name": "utf8-zero",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "utf8_iter",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "crates"
          },
          {
            "name": "version_check",
            "direct": false,
            "version": "0.9.5",
            "ecosystem": "crates"
          },
          {
            "name": "wasi",
            "direct": false,
            "version": "0.11.1+wasi-snapshot-preview1",
            "ecosystem": "crates"
          },
          {
            "name": "wasip2",
            "direct": false,
            "version": "1.0.1+wasi-0.2.4",
            "ecosystem": "crates"
          },
          {
            "name": "wasip3",
            "direct": false,
            "version": "0.4.0+wasi-0.3.0-rc-2026-01-06",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen",
            "direct": false,
            "version": "0.2.104",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-backend",
            "direct": false,
            "version": "0.2.104",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-macro",
            "direct": false,
            "version": "0.2.104",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-macro-support",
            "direct": false,
            "version": "0.2.104",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-shared",
            "direct": false,
            "version": "0.2.104",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-encoder",
            "direct": false,
            "version": "0.244.0",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-metadata",
            "direct": false,
            "version": "0.244.0",
            "ecosystem": "crates"
          },
          {
            "name": "wasmparser",
            "direct": false,
            "version": "0.244.0",
            "ecosystem": "crates"
          },
          {
            "name": "webpki-roots",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "crates"
          },
          {
            "name": "widestring",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "winapi",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "crates"
          },
          {
            "name": "winapi-i686-pc-windows-gnu",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "winapi-util",
            "direct": false,
            "version": "0.1.11",
            "ecosystem": "crates"
          },
          {
            "name": "winapi-x86_64-pc-windows-gnu",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "windows-link",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "windows-sys",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "crates"
          },
          {
            "name": "windows-sys",
            "direct": false,
            "version": "0.59.0",
            "ecosystem": "crates"
          },
          {
            "name": "windows-sys",
            "direct": false,
            "version": "0.61.2",
            "ecosystem": "crates"
          },
          {
            "name": "windows-targets",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_aarch64_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_aarch64_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_gnu",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_gnu",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "winnow",
            "direct": false,
            "version": "0.7.14",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen",
            "direct": false,
            "version": "0.46.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen-core",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen-rust",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen-rust-macro",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-component",
            "direct": false,
            "version": "0.244.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-parser",
            "direct": false,
            "version": "0.244.0",
            "ecosystem": "crates"
          },
          {
            "name": "writeable",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "crates"
          },
          {
            "name": "xattr",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "yoke",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "yoke-derive",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "zerofrom",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "crates"
          },
          {
            "name": "zerofrom-derive",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "crates"
          },
          {
            "name": "zeroize",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "crates"
          },
          {
            "name": "zerotrie",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "zerovec",
            "direct": false,
            "version": "0.11.5",
            "ecosystem": "crates"
          },
          {
            "name": "zerovec-derive",
            "direct": false,
            "version": "0.11.2",
            "ecosystem": "crates"
          },
          {
            "name": "zip",
            "direct": false,
            "version": "8.3.1",
            "ecosystem": "crates"
          },
          {
            "name": "zlib-rs",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "crates"
          },
          {
            "name": "zopfli",
            "direct": false,
            "version": "0.8.3",
            "ecosystem": "crates"
          },
          {
            "name": "zstd",
            "direct": false,
            "version": "0.13.3",
            "ecosystem": "crates"
          },
          {
            "name": "zstd-safe",
            "direct": false,
            "version": "7.2.4",
            "ecosystem": "crates"
          },
          {
            "name": "zstd-sys",
            "direct": false,
            "version": "2.0.16+zstd.1.5.7",
            "ecosystem": "crates"
          },
          {
            "name": "Microsoft.NET.Test.Sdk",
            "direct": false,
            "version": "15.9.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Newtonsoft.Json",
            "direct": false,
            "version": "13.0.3",
            "ecosystem": "nuget"
          },
          {
            "name": "Newtonsoft.Json",
            "direct": false,
            "version": "13.0.4",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.runner.visualstudio",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.v3.aot",
            "direct": false,
            "version": "4.0.0-pre.128",
            "ecosystem": "nuget"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 239,
        "direct_count": 13,
        "indirect_count": 226
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 3,
        "merged_prs": 146,
        "open_issues": 13,
        "closed_ratio": 0.894,
        "closed_issues": 110,
        "closed_unmerged_prs": 16
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "ralfbiedert",
          "commits": 1579,
          "avatar_url": "https://avatars.githubusercontent.com/u/301288?v=4"
        },
        {
          "type": "User",
          "login": "berkus",
          "commits": 28,
          "avatar_url": "https://avatars.githubusercontent.com/u/80306?v=4"
        },
        {
          "type": "User",
          "login": "arsher",
          "commits": 20,
          "avatar_url": "https://avatars.githubusercontent.com/u/982916?v=4"
        },
        {
          "type": "User",
          "login": "pixsperdavid",
          "commits": 17,
          "avatar_url": "https://avatars.githubusercontent.com/u/3910482?v=4"
        },
        {
          "type": "User",
          "login": "Earthmark",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/1251609?v=4"
        },
        {
          "type": "User",
          "login": "onlycs",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/61358474?v=4"
        },
        {
          "type": "User",
          "login": "OleRoss",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/97119047?v=4"
        },
        {
          "type": "User",
          "login": "Darksecond",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/291582?v=4"
        },
        {
          "type": "User",
          "login": "TheNeikos",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/1631166?v=4"
        },
        {
          "type": "User",
          "login": "enbyted",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/746515?v=4"
        }
      ],
      "contributors_sampled": 25,
      "top_contributor_share": 0.928
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "release-plz.yml",
        "rust.yml",
        "website.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 7,
            "reason": "7 out of 10 merged PRs checked by a CI test -- score normalized to 7",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 2,
            "reason": "Found 5/21 approved changesets -- score normalized to 2",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 11 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 1,
            "reason": "9 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "e802572749d6b3bf6879ab92c5361925250fdc04",
        "ran_at": "2026-07-29T05:15:31Z",
        "aggregate_score": 3.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-28T11:16:15Z",
      "oldest_open_prs": [
        {
          "number": 261,
          "created_at": "2026-03-26T11:07:50Z",
          "last_comment_at": "2026-03-31T09:41:13Z",
          "last_comment_author": "ralfbiedert"
        },
        {
          "number": 289,
          "created_at": "2026-06-16T06:21:09Z",
          "last_comment_at": "2026-06-22T17:43:07Z",
          "last_comment_author": "ralfbiedert"
        },
        {
          "number": 294,
          "created_at": "2026-07-10T14:57:59Z",
          "last_comment_at": "2026-07-11T07:49:04Z",
          "last_comment_author": "ralfbiedert"
        }
      ],
      "last_merged_pr_at": "2026-07-28T11:06:55Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 27,
          "created_at": "2021-10-26T14:53:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 48,
          "created_at": "2022-06-20T23:57:39Z",
          "last_comment_at": "2022-06-21T14:53:55Z",
          "last_comment_author": "ralfbiedert"
        },
        {
          "number": 71,
          "created_at": "2022-10-02T03:17:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 79,
          "created_at": "2023-02-08T03:51:13Z",
          "last_comment_at": "2023-02-11T20:04:15Z",
          "last_comment_author": "ralfbiedert"
        },
        {
          "number": 155,
          "created_at": "2025-03-20T07:40:40Z",
          "last_comment_at": "2025-05-23T20:51:47Z",
          "last_comment_author": "ralfbiedert"
        },
        {
          "number": 165,
          "created_at": "2025-04-29T04:45:12Z",
          "last_comment_at": "2025-05-25T11:59:13Z",
          "last_comment_author": "arontsang"
        },
        {
          "number": 171,
          "created_at": "2025-05-21T13:07:02Z",
          "last_comment_at": "2025-05-23T21:08:31Z",
          "last_comment_author": "ralfbiedert"
        },
        {
          "number": 177,
          "created_at": "2025-06-07T10:04:42Z",
          "last_comment_at": "2025-06-13T23:15:37Z",
          "last_comment_author": "enbyted"
        },
        {
          "number": 211,
          "created_at": "2025-09-04T15:09:31Z",
          "last_comment_at": "2026-03-17T18:38:35Z",
          "last_comment_author": "ralfbiedert"
        },
        {
          "number": 233,
          "created_at": "2025-10-09T10:43:14Z",
          "last_comment_at": "2026-03-17T18:31:42Z",
          "last_comment_author": "ralfbiedert"
        },
        {
          "number": 282,
          "created_at": "2026-05-19T22:02:24Z",
          "last_comment_at": "2026-05-20T14:45:31Z",
          "last_comment_author": "Xerxes004"
        },
        {
          "number": 291,
          "created_at": "2026-06-19T05:58:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 293,
          "created_at": "2026-07-07T13:59:40Z",
          "last_comment_at": "2026-07-08T10:13:10Z",
          "last_comment_author": "ralfbiedert"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/ralfbiedert/interoptopus",
    "host": "github.com",
    "name": "interoptopus",
    "owner": "ralfbiedert"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 66,
      "inputs": {
        "security": 42,
        "vitality": 94,
        "community": 60,
        "governance": 65,
        "engineering": 63
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 94,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "commits_last_year": 851,
              "human_commit_share": 0.9,
              "days_since_last_push": 0,
              "active_weeks_last_year": 37
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "37/52 weeks with commits",
                "points": 25.6,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 37
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "851 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 851
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "interoptopus_csharp-v0.16.4",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 4.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~4.8 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 4.8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 60,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "forks": 47,
              "stars": 474,
              "watchers": 8,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "474 stars",
                "points": 43.4,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 474
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "47 forks",
                "points": 13.9,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 47
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "8 watchers",
                "points": 4.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "packages": [
                "interoptopus",
                "interoptopus_c",
                "interoptopus_proc",
                "interoptopus_backends",
                "interoptopus_csharp",
                "interoptopus_cpython",
                "interoptopus_proc_impl"
              ],
              "dependents": null,
              "ecosystems": "crates",
              "total_downloads": 583931,
              "monthly_downloads": 20904
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "20,904 downloads/month across crates",
                "points": 57.6,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 20904,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 65,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 25,
              "top_contributor_share": 0.928
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 93% of commits",
                "points": 1.6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 93
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "25 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 25
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 11 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "merged_prs": 146,
              "open_issues": 13,
              "closed_issues": 110,
              "issue_closed_ratio": 0.894,
              "closed_unmerged_prs": 16
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "89% of issues closed",
                "points": 41.8,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 89
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "146/162 decided PRs merged",
                "points": 34.5,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 146,
                      "decided": 162
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 5/21 approved changesets -- score normalized to 2",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 59,
            "inputs": {
              "followers": 183,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "ralfbiedert",
              "public_repos": 17,
              "account_age_days": 5893
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "183 followers of ralfbiedert",
                "points": 16.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 183,
                      "login": "ralfbiedert"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "17 public repos, account ~16 yr old",
                "points": 21.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 17
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 16
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "interoptopus",
                "interoptopus_c",
                "interoptopus_proc",
                "interoptopus_backends",
                "interoptopus_csharp",
                "interoptopus_cpython",
                "interoptopus_proc_impl"
              ],
              "ecosystems": "crates",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "7 package(s) on crates",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 7,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "126 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 126
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 63,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "7 out of 10 merged PRs checked by a CI test -- score normalized to 7",
                "points": 14,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [
                "rust",
                "ffi",
                "csharp"
              ],
              "has_wiki": false,
              "homepage": "https://interoptopus.rs",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://interoptopus.rs",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "3 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 42,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 37,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 3.7
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "7 out of 10 merged PRs checked by a CI test -- score normalized to 7",
                "points": 1.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 5/21 approved changesets -- score normalized to 2",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 11 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "9 existing vulnerabilities detected",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "moderate",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 236 resolved dependencies against OSV; 3 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 236
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 3
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 61,
            "inputs": {
              "source": "osv",
              "advisories": 16,
              "affected_packages": 4,
              "assessed_packages": 236,
              "unassessed_packages": 3,
              "affected_by_severity": "high 2, moderate 1, unknown 1",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: tar 0.4.44 (high 8.1)",
                "points": 12.3,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "tar 0.4.44 (high 8.1)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "1 advisory-carrying package(s) unaddressed past 90 days; oldest published 131 days ago",
                "points": 33.3,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 1,
                      "oldest": 131
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 236,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 10
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 66,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "moderate",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.189,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 14201
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "17 of 90 human commits state their intent (structured subject or explanatory body)",
                "points": 10.1,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 17,
                      "sampled": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                "Justfile"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.09,
              "toolchain_manifests": [
                "Cargo.toml",
                "crates/_old/backend_c/Cargo.toml",
                "crates/_old/backend_cpython/Cargo.toml",
                "crates/_old/backend_csharp_old/Cargo.toml",
                "crates/_old/backend_csharp_old/tests/runtime/plugin.csproj",
                "crates/backend_c/Cargo.toml",
                "crates/backend_cpython/Cargo.toml",
                "crates/backend_csharp/Cargo.toml",
                "crates/backend_csharp/benches/dotnet/dotnet_benchmarks.csproj",
                "crates/backend_csharp/tests/backend_plugins/exceptions.dll/exceptions.csproj",
                "crates/backend_csharp/tests/backend_plugins/memory.dll/memory.csproj",
                "crates/backend_csharp/tests/reference_plugins/complex.dll/complex.csproj",
                "crates/backend_csharp/tests/reference_plugins/functions_behavior.dll/functions_behavior.csproj",
                "crates/backend_csharp/tests/reference_plugins/functions_primitive.dll/functions_primitive.csproj",
                "crates/backend_csharp/tests/reference_plugins/pattern.dll/pattern.csproj",
                "crates/backend_csharp/tests/reference_plugins/service_async.dll/service_async.csproj",
                "crates/backend_csharp/tests/reference_plugins/service_async_cancel.dll/service_async_cancel.csproj",
                "crates/backend_csharp/tests/reference_plugins/service_basic.dll/service_basic.csproj",
                "crates/backend_csharp/tests/reference_plugins/service_nested.dll/service_nested.csproj",
                "crates/backend_csharp/tests/reference_plugins/wire.dll/wire.csproj",
                "crates/backend_csharp/tests/reference_project/Bindings/Bindings.csproj",
                "crates/backend_csharp/tests/reference_project/Tests/Tests.csproj",
                "crates/backend_utils/Cargo.toml",
                "crates/core/Cargo.toml",
                "crates/proc_macros/Cargo.toml",
                "crates/proc_macros_impl/Cargo.toml",
                "crates/reference_project/Cargo.toml",
                "examples/hello_world/Cargo.toml",
                "examples/hello_world/bindings/hello_world.csproj",
                "examples/production_project/core_library/Cargo.toml",
                "examples/production_project/core_library_ffi/Cargo.toml",
                "examples/production_project/core_library_ffi_build/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Justfile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Justfile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Rust (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "9 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 9,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Rust",
              "largest_source_bytes": 59647,
              "source_files_sampled": 698,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Rust (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/698 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 698,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch crates package 'reference_project' from its registry",
    "deps.dev does not index crates:interoptopus@0.16.4; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-29T05:15:51.834062Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/ralfbiedert/interoptopus.svg",
  "full_name": "ralfbiedert/interoptopus",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v1.13.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаcrates.io.