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

wrmsr / om

My python monorepo.

PythonBSD-3-Clause★ 7 зірок⑂ 0 форківз квіт. 2023 р.Переглянути на GitHub ↗

wrmsr/om має індекс здоров’я 48 зі 100, що відповідає смузі «У зоні ризику». Найвищий показник — AI Readiness (77/100), найнижчий — Security (21/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

48
загалом / 100
У зоні ризику

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

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

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

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

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

Власність

wrmsrОсобистий обліковий запис
92 підписники240 публічних репозиторіївз січ. 2011 р.

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

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

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікація
PyPIomdev0.0.352 7585850 днів тому
PyPIomllm0.0.35-90 днів тому
PyPIomcore0.0.3580480 днів тому
PyPIomxtra0.0.35-690 днів тому
PyPIominfra0.0.352 5165850 днів тому

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

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

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

60Помірний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
35.3/36Ритм комітів — 51/52 тижнів із комітами
18/18Обсяг комітів — 4 075 комітів за останній рік
0/10OpenSSF Scorecard: Maintained — немає даних
Використані вхідні дані
commits_last_year4 075
human_commit_share1
days_since_last_push0
active_weeks_last_year51
Як обчислюється оцінка
0/27Випускає релізи — релізів не опубліковано
0/36Свіжість релізів — релізів немає
0/27Ритм релізів — релізів немає
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count0

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

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

38У зоні ризику · 18% загального індексу
Як обчислюється оцінка
12.6/60Зірки — 7 зірок
0/25Форки — 0 форків
0/15Спостерігачі — 1 спостерігачів
Використані вхідні дані
forks0
stars7
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (BSD-3-Clause)
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ні
Як обчислюється оцінка
50.5/80Щомісячні завантаження — 6 078 завантажень/місяць у pypi
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesomdev, omllm, omcore, omxtra, ominfra
dependents
ecosystemspypi
total_downloads
monthly_downloads6 078
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

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

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

52Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
0/22.5Розподіл комітів — головний контриб’ютор — автор 100% комітів
1.4/13.5Широта контриб’юторів — 1 контриб’юторів
0/10OpenSSF Scorecard: Contributors — немає даних
Використані вхідні дані
bus_factor1
contributors_sampled1
top_contributor_share1
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
14.2/25Охоплення власника — 92 підписників у wrmsr
25/25Послужний список — 240 публічних репозиторіїв, вік облікового запису ~15 р.
Використані вхідні дані
followers92
owner_typeUser
is_verified
owner_loginwrmsr
public_repos240
account_age_days5 678
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

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

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 5 пакет(ів) у pypi
35/35Свіжість публікацій — остання публікація 0 дн. тому
20/20Історія версій — 585 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesomdev, omllm, omcore, omxtra, ominfra
ecosystemspypi
any_deprecatedні
min_days_since_publish0

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

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

61Помірний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 1 процес(ів) CI
24/24Наявні тести
0/16Конфігурація лінтера
0/9.6Pre-commit-хуки
6.4/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — немає даних
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigтак
has_linter_configні
has_precommit_configні

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

50Помірний
Як обчислюється оцінка
30/30README
0/25Каталог документації
0/15Сайт документації / домашня сторінка
10/10Опис репозиторію
0/10Теми
10/10Wiki
Використані вхідні дані
topics
has_wikiтак
homepage
has_readmeтак
has_docs_dirні
has_descriptionтак

Безпека

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

21Критичний · 16% загального індексу

Стан безпеки

1Критичний
Як обчислюється оцінка
0/30Політика безпеки (SECURITY.md)
0/25Конфігурація Dependabot
0/25Файли фіксації залежностей — опублікована бібліотека — lockfile є справою застосунків, не очікується
0/20Процес CodeQL
Використані вхідні дані
sourcefile_signals
lockfilesCargo.lock
manifestspyproject.toml, requirements-ci.txt, requirements-dev.txt, requirements-ext.txt, requirements-frz.txt, requirements.txt
has_codeql_workflowні
has_security_policyні
has_dependabot_configні
Виключено з оцінювання (немає даних або не застосовно): Файли фіксації залежностей. Залишкові ваги перенормовано.
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
0/25Непрямі залежності без відомих сповіщень — транзитивний набір не відокремлюється від залежностей розробки й тестування в цьому обсязі
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories9
affected_packages4
assessed_packages371
unassessed_packages69
affected_by_severityhigh 1, moderate 2, unknown 1
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Непрямі залежності без відомих сповіщень, Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено 371 резолвлених залежностей із OSV. 69 не вдалося оцінити — немає резолвленої версії, непідтримувана екосистема або поза межами звітованого переліку пакетів. Цей репозиторій не публікує пакета, який резолвить індекс, тож натомість оцінено граф залежностей репозиторію. Цей граф змішує закріплені версії для розробки й тестування зі справді постачаними залежностями, тож оцінюються лише задекларовані runtime-залежності; транзитивні знахідки подаються як контекст і в оцінку не входять. Досяжність не аналізується.

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

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

77Добрий · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — AGENTS.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 90 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,9
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes3 068
Як обчислюється оцінка
18/18Розгортання однією командою — Makefile, omdev/pyproject/tests/skeleton/Makefile
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
11/11Статична перевірка типів — omcore/py.typed, omdev/py.typed, ominfra/py.typed, omllm/py.typed, omxtra/py.typed, x/pipdeptree/py.typed
10/10Відтворюване середовище — Dockerfile, lockfile
0/10Підтверджена практика роботи з агентами — серед останніх 100 комітів немає створених агентом
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — немає даних
Використані вхідні дані
has_nixні
has_testsтак
lockfilesCargo.lock
has_dockerfileтак
typed_languageні
bootstrap_filesMakefile, omdev/pyproject/tests/skeleton/Makefile
has_devcontainerні
has_linter_configні
typecheck_configsomcore/py.typed, omdev/py.typed, ominfra/py.typed, omllm/py.typed, omxtra/py.typed, x/pipdeptree/py.typed
agent_commit_share0
toolchain_manifestsomdev/rs/_boilerplate/Cargo.toml, x/ommlds/nanochat/rustbpe/Cargo.toml
dependency_bot_commit_share0
Як обчислюється оцінка
27/45Типізований код — Python з конфігурацією перевірки типів (omcore/py.typed, omdev/py.typed, ominfra/py.typed, omllm/py.typed, omxtra/py.typed, x/pipdeptree/py.typed)
54.3/55Керовані розміри файлів — 61/4 878 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languagePython
largest_source_bytes1 397 928
source_files_sampled4 878
oversized_source_files61
Як обчислюється оцінка
40/40Схема API (OpenAPI/GraphQL/proto) — omxtra/specs/proto/tests/examples/addressbook.proto
0/20Сервер MCP
40/40Придатні до запуску приклади — demos, examples, notebooks, samples
Використані вхідні дані
example_dirsdemos, examples, notebooks, samples
has_mcp_signalні
api_schema_filesomxtra/specs/proto/tests/examples/addressbook.proto

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

7зірок GitHub
1контриб'юторів
4 075комітів за останні 12 місяців
0днів від останнього пушу
0релізів
1бас-фактор
0відкритих issue
PyPIпакетних екосистем

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

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch pypi package 'omdev.cexts._boilerplate' from its registry
  • Could not fetch pypi package 'omcore._check' from its registry
  • Could not fetch pypi package 'omxtra.collections.stl._stl' from its registry
  • deps.dev does not index pypi:omdev@0.0.35; advisories assessed against the repository dependency graph instead
  • OpenSSF Scorecard did not return a usable result (2026/07/31 04:51:10 Warning: PATs stored in env variables GITHUB_AUTH_TOKEN and GITHUB_TOKEN differ. Scorecard will use the former.); skipping Scorecard checks

Докладніше

Прямі залежності 9
РеєстрПакетОбмеження версіїМаніфест
PyPIomcore== 0.0.36.pkg/omcore-cext/pyproject.toml
PyPIomdev== 0.0.36.pkg/omdev-cext/pyproject.toml
PyPIomdev== 0.0.36.pkg/omdev-cli/pyproject.toml
PyPIomdev== 0.0.36.pkg/omdev-rs/pyproject.toml
PyPIomcore== 0.0.36.pkg/omdev/pyproject.toml
PyPIomcore== 0.0.36.pkg/ominfra/pyproject.toml
PyPIomcore== 0.0.36.pkg/omllm/pyproject.toml
PyPIomxtra== 0.0.36.pkg/omxtra-cext/pyproject.toml
PyPIomcore== 0.0.36.pkg/omxtra/pyproject.toml
Усі залежності 440

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

РеєстрПакетВерсіяЗв'язок
PyPIomcore0.0.36пряма
PyPIomdev0.0.36пряма
PyPIomxtra0.0.36пряма
crates.ioahash0.8.12непряма
crates.ioaho-corasick1.1.4непряма
crates.ioarc-swap1.8.2непряма
crates.ioautocfg1.5.0непряма
crates.iobit-set0.8.0непряма
crates.iobit-vec0.8.0непряма
crates.iocastaway0.2.4непряма
crates.iocfg-if1.0.4непряма
crates.iocompact_str0.9.0непряма
crates.iocrossbeam-deque0.8.6непряма
crates.iocrossbeam-epoch0.9.18непряма
crates.iocrossbeam-utils0.8.21непряма
crates.iodary_heap0.3.8непряма
crates.ioeither1.15.0непряма
crates.ioequivalent1.0.2непряма
crates.iofancy-regex0.16.2непряма
crates.iogetrandom0.3.4непряма
crates.iohashbrown0.17.0непряма
crates.ioheck0.5.0непряма
crates.ioindexmap2.14.0непряма
crates.ioindoc2.0.7непряма
crates.ioitoa1.0.15непряма
crates.iolibc0.2.184непряма
crates.iolibc0.2.188непряма
crates.iolog0.4.29непряма
crates.iomemchr2.7.6непряма
crates.iomemoffset0.9.1непряма
crates.ioonce_cell1.21.4непряма
crates.ioportable-atomic1.13.1непряма
crates.ioportable-atomic1.14.0непряма
crates.ioproc-macro21.0.106непряма
crates.ioproc-macro21.0.107непряма
crates.iopyo30.27.2непряма
crates.iopyo30.29.0непряма
crates.iopyo3-build-config0.27.2непряма
crates.iopyo3-build-config0.29.0непряма
crates.iopyo3-ffi0.27.2непряма
crates.iopyo3-ffi0.29.0непряма
crates.iopyo3-log0.13.3непряма
crates.iopyo3-macros0.27.2непряма
crates.iopyo3-macros0.29.0непряма
crates.iopyo3-macros-backend0.27.2непряма
crates.iopyo3-macros-backend0.29.0непряма
crates.ioquote1.0.45непряма
crates.ioquote1.0.47непряма
crates.ior-efi5.3.0непряма
crates.iorayon1.12.0непряма
crates.iorayon-core1.13.0непряма
crates.ioregex-automata0.4.13непряма
crates.ioregex-syntax0.8.8непряма
crates.iorustversion1.0.22непряма
crates.ioryu1.0.20непряма
crates.iostatic_assertions1.1.0непряма
crates.iosyn2.0.117непряма
crates.iosyn2.0.119непряма
crates.iotarget-lexicon0.13.5непряма
crates.iounicode-ident1.0.24непряма
crates.iounindent0.2.4непряма
crates.ioversion_check0.9.5непряма
crates.iowasip21.0.1+wasi-0.2.4непряма
crates.iowit-bindgen0.46.0непряма
crates.iozerocopy0.8.27непряма
crates.iozerocopy-derive0.8.27непряма
PyPIaiohappyeyeballs2.7.1непряма
PyPIaiohttp3.14.3непряма
PyPIaiohttp-jinja21.6непряма
PyPIaiomysqlнепряма
PyPIaiomysql0.3.2непряма
PyPIaiosignal1.4.0непряма
PyPIaiosqliteнепряма
PyPIaiosqlite0.22.1непряма
PyPIannotated-doc0.0.5непряма
PyPIantlr4-python3-runtime4.13.2непряма
PyPIanyioнепряма
PyPIanyio4.14.2непряма
PyPIanyio4.8.0непряма
PyPIapswнепряма
PyPIapsw3.53.4.0непряма
PyPIasgiref3.12.1непряма
PyPIasn1crypto1.5.1непряма
PyPIast-serialize0.6.0непряма
PyPIastpretty3.0.0непряма
PyPIasttokensнепряма
PyPIasttokens3.0.2непряма
PyPIasyncpgнепряма
PyPIasyncpg0.30.0непряма
PyPIasyncpg0.31.0непряма
PyPIasyncpg-stubs0.31.3непряма
PyPIasyncsshнепряма
PyPIasyncssh2.24.0непряма
PyPIattrs26.1.0непряма
PyPIbasedpyright1.39.9непряма
PyPIbcrypt5.0.0непряма
PyPIbitsandbytes0.50.0непряма
PyPIblackнепряма
PyPIblack26.5.1непряма
PyPIblobfile3.2.0непряма
PyPIboto31.43.60непряма
PyPIbotocore1.43.60непряма
PyPIbotocore-stubs1.43.14непряма
PyPIbrotliнепряма
PyPIbrotli1.2.0непряма
PyPIbuildнепряма
PyPIbuild1.5.0непряма
PyPIcbor2непряма
PyPIcbor26.1.3непряма
PyPIcertifi2026.7.22непряма
PyPIcffi2.1.0непряма
PyPIcharset-normalizer3.4.9непряма
PyPIclick8.4.2непряма
PyPIcloudpickleнепряма
PyPIcloudpickle3.1.2непряма
PyPIcontourpy1.3.3непряма
PyPIcramjam2.11.0непряма
PyPIcryptographyнепряма
PyPIcryptography49.0.0непряма
PyPIcycler0.12.1непряма
PyPIcython3.2.9непряма
PyPIdatasets5.0.0непряма
PyPIddgs9.14.4непряма
PyPIdebugpy1.8.21непряма
PyPIdecorator5.3.1непряма
PyPIdeno2.9.4непряма
PyPIdiffusers0.39.0непряма
PyPIdill0.4.1непряма
PyPIdiskcache5.6.3непряма
PyPIdocutilsнепряма
PyPIdocutils0.23непряма
PyPIdocutils-stubs0.0.22непряма
PyPIduckdbнепряма
PyPIduckdb1.5.5непряма
PyPIexecnet2.1.2непряма
PyPIexecutingнепряма
PyPIexecuting2.2.1непряма
PyPIfake-useragent2.2.0непряма
PyPIfilelock3.32.2непряма
PyPIflake87.3.0непряма
PyPIflake8-pyproject1.2.4непряма
PyPIflatbuffers25.12.19непряма
PyPIfonttools4.63.0непряма
PyPIfrozenlist1.8.0непряма
PyPIfsspec2026.4.0непряма
PyPIgguf0.19.0непряма
PyPIgoogle-api-core2.33.0непряма
PyPIgoogle-api-python-client2.198.0непряма
PyPIgoogle-auth2.56.2непряма
PyPIgoogle-auth-httplib20.4.0непряма
PyPIgoogle-cloud-compute1.50.0непряма
PyPIgoogleapis-common-protos1.75.0непряма
PyPIgprof2dotнепряма
PyPIgprof2dot2025.4.14непряма
PyPIgreenletнепряма
PyPIgreenlet3.5.4непряма
PyPIgrpcio1.83.0непряма
PyPIgrpcio-status1.83.0непряма
PyPIguppy33.1.7непряма
PyPIh110.16.0непряма
PyPIh24.4.0непряма
PyPIhf-xet1.5.2непряма
PyPIhpack4.2.0непряма
PyPIhttpcore1.0.9непряма
PyPIhttplib20.32.0непряма
PyPIhttpxнепряма
PyPIhttpx0.28.1непряма
PyPIhuggingface-hubнепряма
PyPIhuggingface-hub1.24.0непряма
PyPIhyperframe6.1.0непряма
PyPIid1.6.1непряма
PyPIidna3.18непряма
PyPIimageio2.37.4непряма
PyPIimportlib-metadata9.0.0непряма
PyPIiniconfig2.3.0непряма
PyPIinvoke3.0.3непряма
PyPIipythonнепряма
PyPIipython9.15.0непряма
PyPIipython-pygments-lexers1.1.1непряма
PyPIjaraco-classes3.4.0непряма
PyPIjaraco-context6.1.2непряма
PyPIjaraco-functools4.6.0непряма
PyPIjedi0.20.0непряма
PyPIjinja2непряма
PyPIjinja23.1.6непряма
PyPIjmespath1.1.0непряма
PyPIjoblib1.5.3непряма
PyPIjson50.15.0непряма
PyPIkeyring25.7.0непряма
PyPIkiwisolver1.5.0непряма
PyPIlazy-loader0.5непряма
PyPIlibrt0.13.0непряма
PyPIlinkify-it-py2.1.0непряма
PyPIllama-cpp-pythonнепряма
PyPIllama-cpp-python0.3.34непряма
PyPIlxml6.1.1непряма
PyPIlxml-stubs0.5.1непряма
PyPIlz4непряма
PyPIlz44.4.5непряма
PyPImarkdown-it-pyнепряма
PyPImarkdown-it-py4.2.0непряма
PyPImarkupsafeнепряма
PyPImarkupsafe3.0.3непряма
PyPImatplotlib3.11.1непряма
PyPImatplotlib-inline0.2.2непряма
PyPImccabe0.7.0непряма
PyPImdit-py-pluginsнепряма
PyPImdit-py-plugins0.6.1непряма
PyPImdurl0.1.2непряма
PyPImemrayнепряма
PyPImemray1.19.3непряма
PyPImlxнепряма
PyPImlx0.32.0непряма
PyPImlx-lmнепряма
PyPImlx-lm0.31.3непряма
PyPImlx-metal0.32.0непряма
PyPImore-itertools11.1.0непряма
PyPImpmath1.3.0непряма
PyPImsgpack1.2.1непряма
PyPImultidict6.7.1непряма
PyPImultiprocess0.70.19непряма
PyPImwparserfromhellнепряма
PyPImwparserfromhell0.7.2непряма
PyPImypyнепряма
PyPImypy2.3.0непряма
PyPImypy-extensions1.1.0непряма
PyPImysql-connector-pythonнепряма
PyPImysql-connector-python9.7.0непряма
PyPImysqlclientнепряма
PyPImysqlclient2.2.8непряма
PyPInarwhals2.24.0непряма
PyPInetworkx3.6.1непряма
PyPInh30.3.6непряма
PyPInodeenv1.10.0непряма
PyPInodejs-wheel-binaries24.16.0непряма
PyPInumpy2.5.1непряма
PyPIobjgraph3.6.2непряма
PyPIominfra0.0.36непряма
PyPIomllm0.0.36непряма
PyPIonnxruntime1.28.0непряма
PyPIopencv-python5.0.0.93непряма
PyPIorjsonнепряма
PyPIorjson3.11.9непряма
PyPIoutcome1.3.0.post0непряма
PyPIpackaging26.2непряма
PyPIpandas3.0.5непряма
PyPIparamikoнепряма
PyPIparamiko5.0.0непряма
PyPIparso0.8.7непряма
PyPIpathspec1.1.1непряма
PyPIpcppнепряма
PyPIpcpp1.30непряма
PyPIpexpect4.9.0непряма
PyPIpg8000непряма
PyPIpg80001.31.5непряма
PyPIpillowнепряма
PyPIpillow12.3.0непряма
PyPIplatformdirs4.11.0непряма
PyPIplaywright1.61.0непряма
PyPIpluggy1.6.0непряма
PyPIpprintpp0.4.0непряма
PyPIprimp1.3.1непряма
PyPIpriority2.0.0непряма
PyPIprompt-toolkit3.0.53непряма
PyPIpropcache0.5.2непряма
PyPIproto-plus1.28.2непряма
PyPIprotobuf7.35.1непряма
PyPIpsutilнепряма
PyPIpsutil7.2.2непряма
PyPIpsycopgнепряма
PyPIpsycopg3.3.4непряма
PyPIpsycopg2непряма
PyPIpsycopg22.9.12непряма
PyPIptyprocess0.7.0непряма
PyPIpudb2025.1.5непряма
PyPIpure-eval0.2.3непряма
PyPIpy-cpuinfo9.0.0непряма
PyPIpyarrow25.0.0непряма
PyPIpyasn10.6.4непряма
PyPIpyasn1-modules0.4.2непряма
PyPIpyclipper1.4.0непряма
PyPIpycodestyle2.14.0непряма
PyPIpycparserнепряма
PyPIpycparser3.0непряма
PyPIpycryptodomex3.23.0непряма
PyPIpydantic-monty0.0.19непряма
PyPIpydantic-monty-runtime0.0.19непряма
PyPIpyee13.0.1непряма
PyPIpyflakes3.4.0непряма
PyPIpygmentsнепряма
PyPIpygments2.20.0непряма
PyPIpyinstrument5.1.2непряма
PyPIpyjwt2.13.0непряма
PyPIpymysqlнепряма
PyPIpymysql1.2.0непряма
PyPIpynacl1.6.2непряма
PyPIpyopenssl26.3.0непряма
PyPIpyparsing3.3.2непряма
PyPIpyproject-hooks1.2.0непряма
PyPIpyright1.1.411непряма
PyPIpytesseractнепряма
PyPIpytesseract0.3.13непряма
PyPIpytestнепряма
PyPIpytest8.3.4непряма
PyPIpytest9.1.1непряма
PyPIpytest-benchmark5.2.3непряма
PyPIpytest-clarity1.0.1непряма
PyPIpytest-mock3.15.1непряма
PyPIpytest-stress1.0.1непряма
PyPIpytest-subprocess1.6.0непряма
PyPIpytest-timeout2.4.0непряма
PyPIpytest-xdist3.8.0непряма
PyPIpython-dateutil2.9.0.post0непряма
PyPIpython-snappyнепряма
PyPIpython-snappy0.7.3непряма
PyPIpytokens0.4.1непряма
PyPIpytz2026.3.post1непряма
PyPIpyyamlнепряма
PyPIpyyaml6.0.2непряма
PyPIpyyaml6.0.3непряма
PyPIrapidocr-onnxruntimeнепряма
PyPIrapidocr-onnxruntime1.4.4непряма
PyPIreadme-renderer45.0непряма
PyPIregex2026.7.19непряма
PyPIrequests2.34.2непряма
PyPIrequests-toolbelt1.0.0непряма
PyPIrfc39862.0.0непряма
PyPIrichнепряма
PyPIrich15.0.0непряма
PyPIripgrep15.1.0непряма
PyPIruff0.16.0непряма
PyPIs3transfer0.19.2непряма
PyPIsafetensors0.8.0непряма
PyPIscikit-image0.26.0непряма
PyPIscikit-learn1.9.0непряма
PyPIscipy1.18.0непряма
PyPIscramp1.4.15непряма
PyPIsegnoнепряма
PyPIsegno1.6.6непряма
PyPIsentence-transformers5.6.0непряма
PyPIsentencepiece0.2.2непряма
PyPIsetuptools83.0.0непряма
PyPIshapely2.1.2непряма
PyPIshellingham1.5.4непряма
PyPIsix1.17.0непряма
PyPIsniffioнепряма
PyPIsniffio1.3.1непряма
PyPIsnowflake-connector-pythonнепряма
PyPIsnowflake-connector-python4.7.1непряма
PyPIsocksio1.0.0непряма
PyPIsortedcontainers2.4.0непряма
PyPIsqlalchemyнепряма
PyPIsqlalchemy2.0.51непряма
PyPIsqlean-pyнепряма
PyPIsqlean-py3.50.4.5непряма
PyPIsqlite-vec0.1.9непряма
PyPIstack-data0.6.3непряма
PyPIsympy1.14.0непряма
PyPItavily-python0.7.26непряма
PyPItextualнепряма
PyPItextual8.2.8непряма
PyPItextual-devнепряма
PyPItextual-dev1.8.0непряма
PyPItextual-serve1.1.3непряма
PyPItextual-speedupsнепряма
PyPItextual-speedups0.2.1непряма
PyPIthreadpoolctl3.6.0непряма
PyPItifffile2026.7.14непряма
PyPItiktoken0.13.0непряма
PyPItinygradнепряма
PyPItokenizers0.22.2непряма
PyPItomlkit0.15.1непряма
PyPItorchнепряма
PyPItorch2.13.0непряма
PyPItorchvision0.28.0непряма
PyPItqdm4.70.0непряма
PyPItraitlets5.15.1непряма
PyPItransformersнепряма
PyPItransformers5.11.0непряма
PyPItree-sitter0.26.0непряма
PyPItree-sitter-bash0.25.1непряма
PyPItree-sitter-css0.25.0непряма
PyPItree-sitter-go0.25.0непряма
PyPItree-sitter-html0.23.2непряма
PyPItree-sitter-java0.23.5непряма
PyPItree-sitter-javascript0.25.0непряма
PyPItree-sitter-json0.24.8непряма
PyPItree-sitter-markdown0.5.1непряма
PyPItree-sitter-python0.25.0непряма
PyPItree-sitter-regex0.25.0непряма
PyPItree-sitter-rust0.24.2непряма
PyPItree-sitter-sql0.3.11непряма
PyPItree-sitter-toml0.7.0непряма
PyPItree-sitter-xml0.7.0непряма
PyPItree-sitter-yaml0.7.2непряма
PyPItrino0.338.0непряма
PyPItrioнепряма
PyPItrio0.33.0непряма
PyPItrio-asyncioнепряма
PyPItwineнепряма
PyPItwine7.0.0непряма
PyPItyper0.27.0непряма
PyPItypes-awscrt0.34.1непряма
PyPItypes-boto31.43.60непряма
PyPItypes-docutils0.22.3.20260724непряма
PyPItypes-greenlet3.5.0.20260518непряма
PyPItypes-paramiko5.0.0.20260724непряма
PyPItypes-psutil7.2.2.20260518непряма
PyPItypes-pygments2.20.0.20260728непряма
PyPItypes-pymysql1.2.0.20260724непряма
PyPItypes-pyyaml6.0.12.20260724непряма
PyPItypes-regex2026.7.19.20260720непряма
PyPItypes-s3transfer0.16.0непряма
PyPItypes-setuptools83.0.0.20260724непряма
PyPItypes-ujson5.10.0.20250822непряма
PyPItyping-extensions4.16.0непряма
PyPItzlocal5.4.4непряма
PyPIuc-micro-py2.0.0непряма
PyPIujsonнепряма
PyPIujson5.13.0непряма
PyPIunicorn2.1.4непряма
PyPIuritemplate4.2.0непряма
PyPIurllib32.7.0непряма
PyPIurwid4.0.8непряма
PyPIurwid-readline0.15.1непряма
PyPIuvнепряма
PyPIuv0.12.0непряма
PyPIuvicorn0.51.0непряма
PyPIwatchdog6.0.0непряма
PyPIwcwidth0.8.2непряма
PyPIwheelнепряма
PyPIwheel0.47.0непряма
PyPIwikitextparserнепряма
PyPIwikitextparser1.0.2непряма
PyPIwsproto1.3.2непряма
PyPIxxhash3.8.1непряма
PyPIyappi1.7.6непряма
PyPIyarl1.24.5непряма
PyPIzipp4.1.0непряма
PyPIzstandard0.25.0непряма
Сповіщення про залежності 4

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

ПакетВерсіяЗв'язокКритичністьСповіщеньВиправлено в
pyo30.27.2непрямависока40.29.0
diskcache5.6.3непрямапомірна2
pytest8.3.4непрямапомірна29.0.3
crossbeam-epoch0.9.18непряманевідома10.9.20

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

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 54773,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "C": 106587,
        "C++": 306513,
        "CSS": 5200,
        "GDB": 60,
        "HTML": 4945,
        "Java": 40274,
        "Rust": 60748,
        "ANTLR": 14750,
        "Jinja": 7633,
        "Shell": 9022,
        "Python": 29236729,
        "Clojure": 1802,
        "PLpgSQL": 1515,
        "Makefile": 13302,
        "Dockerfile": 13080,
        "JavaScript": 13418,
        "Vim Script": 92,
        "Jupyter Notebook": 1188
      },
      "pushed_at": "2026-07-31T04:49:43Z",
      "created_at": "2023-04-25T22:05:37Z",
      "owner_type": "User",
      "updated_at": "2026-07-31T04:49:53Z",
      "description": "My python monorepo.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "BSD-3-Clause",
      "default_branch": "master",
      "license_spdx_raw": "BSD-3-Clause",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "http://wrmsr.com/",
      "name": "wrmsr",
      "type": "User",
      "login": "wrmsr",
      "company": null,
      "location": "San Frandisco",
      "followers": 92,
      "avatar_url": "https://avatars.githubusercontent.com/u/559096?v=4",
      "created_at": "2011-01-12T09:06:47Z",
      "is_verified": null,
      "public_repos": 240,
      "account_age_days": 5678
    },
    "license": {
      "state": "standard",
      "spdx_id": "BSD-3-Clause",
      "raw_spdx": "BSD-3-Clause",
      "file_present": true,
      "scorecard_found": null,
      "profile_has_license": true
    },
    "activity": {
      "releases": [],
      "recent_commits": [
        {
          "oid": "b286a1be2ce1a98596e5912ebca432d341991b48",
          "body": "…ies.",
          "is_bot": false,
          "headline": "Bump all package versions to 0.0.36 and align inter‑package dependenc…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T04:49:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc02e7871c02d67ac933c7098caa056fa1181402",
          "body": "Upgrade tinygrad submodule to the latest commit.",
          "is_bot": false,
          "headline": "Bump boto3, botocore, and types-boto3 to 1.43.60",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T04:29:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4734c625789e1972bb35b91af1e8274ceaad398f",
          "body": "… and add proper shutdown semantics to ImmediateExecutor\n\n* Capture and validate return values in async and sync commands, returning a boolean check instead of raw results.\n* Simplify and correct parser class configuration: iterate over MRO directly, delete duplicate entries correctly, and merge ann\n[…]\ncellation logic in `wait_futures` and `wait_dependent_futures`.\n* Add extensive tests covering inheritance precedence, async command validation, executor behavior, and edge cases for futures handling.",
          "is_bot": false,
          "headline": "Fix async CLI return handling, refine Argparse parser MRO processing,…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T04:04:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5cb4d01a3fce21ed05e9a000d3035d0629ce5211",
          "body": "Validate ManifestLoader configuration types, fix class‑key parsing edge cases, and expand tests for config merging, manifest loading, and private class handling.",
          "is_bot": false,
          "headline": "Improve asyncio_maybe_timeout handling and add timeout tests",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T03:57:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "33e8ce0b7eae42656ca945dcee2ff6039c8c0667",
          "body": "…ndling\n\nReplace the manual loop in `ConditionDeque.pop` with `cond.wait_for` and raise `TimeoutError` on timeout. Added unit tests covering FnTarget runner chaining, SequentialWait progression, and ConditionDeque behavior including timeout, `if_empty` callback, and thread‑synchronised push.",
          "is_bot": false,
          "headline": "Add tests for targets, waiting and ConditionDeque; fix pop timeout ha…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T03:52:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "438ce242bfd80e63e2f989baae4d4542aeec9996",
          "body": "- Permit port 0 in TcpSocketBinder validation and add tests for default ephemeral ports.\n- Add optional no‑close behavior to StandardSocketHandler.\n- Use SocketWriter when write buffer size is zero, fixing buffer handling.\n- Introduce unit tests for socket binding, handlers, IO pair behavior, and datetime utilities.",
          "is_bot": false,
          "headline": "Allow zero port and improve socket handling",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T03:47:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ea4c8ca96dafb55e12419f60392ceb8b702d05d",
          "body": "Create threads with isolated contextvars, replace rmtree with safe unlink for temporary files, delete callback entries on keyed exit‑stack removal, and add tests for LinuxOsRelease, path checks, temp file cleanup, and keyed exit‑stack reuse.",
          "is_bot": false,
          "headline": "Fix variant ID key case and strengthen path containment logic",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T03:43:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a9026b73aa2f265596bef9eee3ff78166f11fe3",
          "body": "Update Bind placeholder detection, add validation to iterables.chunk, refine recursion limiting logic, and extend test coverage for builders, genmachine, guard, pairs, pipes, cells, class dictionary helpers, datetimes, iterables, and recursion.",
          "is_bot": false,
          "headline": "Fix DebugFnBuilder sys path flag and improve GenMachine.close robustness",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T03:35:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b0c106535ef428803cdfa2aac0b5c21b2b522e6",
          "body": "Remove unnecessary Py_DECREF in StrongCache dispatch and add tests for strong‑cache reference ownership and uncached‑miss handling.",
          "is_bot": false,
          "headline": "Replace manual timedelta to seconds conversion with total_seconds()",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T03:20:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08027702b0b779bd6cc7948311582ddd7fea388e",
          "body": "…tilities, progress bar, decoding, and indent writer.\n\nTests cover global timer context and decorator, ANSI color palette bounds, term coloring selection, progress bar behavior for empty and small sequences, and proper decoding of multibyte offsets. Also correct the bounds check in _clamp_ofs, handle zero‑total progress bars safely, select struct format based on raw input length, and fix newline offset handling in IndentWriter.",
          "is_bot": false,
          "headline": "Add extensive unit tests and fix edge‑case bugs in timers, terminal u…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T03:00:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "876b7a9b509df3ccdeb1b1b6097b572245186a53",
          "body": "Improve rendering by escaping strings and attribute values, remove unused dataclass imports, fix lifecycle manager recursion order, correct pwgen CLI character class selection, and add tests for content removal, rendering, lifecycle dependencies, and password generation.",
          "is_bot": false,
          "headline": "Add strict mode to Dom.remove and enforce content presence",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T02:57:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee54ee90f2fd818bab44b18433c640b6cbf19791",
          "body": "…ests\n\n- Initialize depth‑first traversal with root in seen set and use safe dict.get for immediate dominators.\n- Replace recursive DFS with explicit stack in dominator tree construction.\n- Simplify DOT graph creation, correctly escape IDs, and improve make_simple handling.\n- Strengthen iterator uti\n[…]\npling histogram, and Stats (empty data defaults, percentile bounds, bin count checks, trim behavior).\n- Introduce C‑style division/modulus utilities with zero‑divisor handling and corresponding tests.",
          "is_bot": false,
          "headline": "Fix bugs across graph, iterator, and math modules and add extensive t…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T02:10:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "09d7d43f5580a172eab1d0e4909e466d88d160e8",
          "body": "Add tests for distribution, bytes codecs, chain codec, and registry; improve CodecRegistry.register to detect duplicate names atomically.",
          "is_bot": false,
          "headline": "Validate bin count in distribute_evenly and add tests",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T02:08:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed376d1f54fd99961a046f19259851d852d9f397",
          "body": "Correct IdentityWeakSet discard handling, OrderedSet pop behavior, ProxySet operator overloads, SortedListDict deletion and value iteration, SkipList descending iteration edge cases, and add comprehensive tests for frozen, identity, ordered, proxy, mappings, ranked, skiplist, and utils.",
          "is_bot": false,
          "headline": "Fix FrozenDict reuse logic, hashing, and update methods",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T02:05:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e06221fe2299faacaa7cec79288ccaafaa4480f5",
          "body": "Synchronize all package versions and internal dependencies to the new 0.0.35 release.",
          "is_bot": false,
          "headline": "Bump version to 0.0.35",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-31T01:59:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3053c41834007f1d36928ad950f06847377dc40f",
          "body": "Introduce a zero‑dependency Redis client built as a non‑HTTP pipeline, including command encoder, response decoder, client handlers, and a demo script for synchronous and asynchronous drivers. Add comprehensive unit tests covering address parsing, fragmented replies, end‑to‑end client behavior, and error handling. Mark `_IoPipelineAsgiStepResult` with a TypeAlias comment.",
          "is_bot": false,
          "headline": "Add RESP2 Redis client pipeline example and tests",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T23:44:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4fe8afd8ca7852b6e915dd52e1fbfb7fcb1cbf0",
          "body": null,
          "is_bot": false,
          "headline": "Add nginx and redis to development and system dependency sets",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T23:18:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c710628970e5d42fa4d95fd929f26f9fab6be02a",
          "body": "…tor fast‑path\n\nIntroduce `ElementCollection.provision_plan` cached per key and integrate a fast‑path in `AsyncInjectorImpl` that directly executes compiled plans. Refactor `impl/plans.py` to use async‑native two‑colored nodes, add `is_degenerate` handling, and make `ProvisionPlan.provide` async. Update imports, proxy loading, and tests (planning demo, GC, plan parity) to exercise the new compiler and fast‑path behavior. Adjust documentation and TODO notes accordingly.",
          "is_bot": false,
          "headline": "Add async‑native provision‑plan compiler with per‑key cache and injec…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T23:15:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38e00cd38c0cc295bdfcb5bc7918cd1a44b8f81a",
          "body": "Inject permissions manager to enable permission handling in the command suite.",
          "is_bot": false,
          "headline": "Add PermissionsCommand to UI command manager",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T23:12:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "925b860b15304d5909e2cfc466a04af73790b33e",
          "body": "…parsing\n\nIntroduce _IoPipelineHttpResponseReaderState to manage pending data and end-of-response detection, and _raise_http_response_aborted to surface aborts as HttpClientError. Extend both async and sync pipeline clients to handle IoPipelineHttpResponseAborted messages and enforce proper read sem\n[…]\nlicit default ports, and construct accurate Host headers. Add comprehensive unit tests for request preparation, response streaming, and abort scenarios. Include new permissions command implementation.",
          "is_bot": false,
          "headline": "Add response abort handling, response reader state, and improved URL …",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T23:05:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "07f00773edcc5d4b38266846dd32e012f66c651d",
          "body": "…prompting\n\nIntroduce an InputPermissionAsker class and switch to StandardPermissionDecider with ASK rules for filesystem permissions, importing the new decider and updating the permission handling logic accordingly.",
          "is_bot": false,
          "headline": "Add fdio client comparability note and enable interactive permission …",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T22:46:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dd875bcf39bd5d935d75760b4da51817546f2e0",
          "body": "Introduce `ProvisionPlan` and `ProvisionPlanCompiler` to compile static provision plans, update `OnceProvisionMap.provide` to accept an optional compute function for compiled scopes, refactor the planning demo to use the new API, and add a full test suite (`test_plans.py`) covering memoization, singleton sharing, scoped caching, cycle detection, unbound keys, listener fallback, parent delegation, cross‑boundary coherence, and compiler reuse.",
          "is_bot": false,
          "headline": "Add experimental provision‑plan compiler",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T22:23:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0cef492244e8455e1b0eda0cbbdd0110d056bd52",
          "body": "…P pipelines\n\nIntroduce CanByteStreamBuffer types and ByteStreamBuffers utilities, update compressors, decompressors, aggregators, chunking, websocket handling, and related tests to work with segmented buffers. Drivers (asyncio, fdio, sync, pure) now emit SegmentedByteStreamBuffer instances instead of raw bytes, and decoders adopt mutable buffers without unnecessary copying. This refactors the codebase to a unified, zero‑copy byte buffer model.",
          "is_bot": false,
          "headline": "Replace BytesLike usage with ByteStreamBuffer abstractions across HTT…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T22:16:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9972669f1abc0f78698521d086e22b564cce33ff",
          "body": "Rename `SimplePermissionsManager` to `StandardPermissionsManager` throughout the codebase. Introduce a `PermissionRequestor` alias and a new `PermissionAsker` interface. Update `PermissionDecider` signatures to accept a requestor, add a `StandardPermissionDecider` implementation, and modify all permission checks in tools and UI to pass the execution context (`ctx`). This enhances permission handling with explicit requestor awareness.",
          "is_bot": false,
          "headline": "Refactor permission system to use requestor context and rename manager",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T22:15:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "008bf020ef52773be8a2a4cbe7dccb1ac082eb6b",
          "body": "…ring\n\nIntroduce `Plan` and `PlanCompiler` to statically compile injection graphs, allocate slot‑based memoization, handle singleton and delimited scopes, detect cycles at compile time, and fall back to interpreter for unsupported providers. Includes a self‑test suite and benchmarking demo to verify semantics and measure performance.",
          "is_bot": false,
          "headline": "Add experimental provision‑plan compiler with shape/link/execute laye…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T21:50:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2039195635702927a0b4daed6668aa51040491c8",
          "body": "Introduce a tiny, dependency‑free SVG rendering library that supports grouped bar charts, legends, axes, and automatic layout. Includes data models, scaling utilities, and a benchmark_dashboard helper to generate client and server benchmark SVG files.",
          "is_bot": false,
          "headline": "Add SVG dashboard renderer and benchmark generator",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T21:47:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "912c1ba5fc1ff6cae39a34c92ad2ab0243d8ea7e",
          "body": "Use a Protocol to define the callable signature, improving type checking and readability.",
          "is_bot": false,
          "headline": "Replace ProvisionListener type alias with Protocol",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T21:35:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd90d729f59dbd1ff5a851a60098e3f9caf708c5",
          "body": "Introduce `read_batch_max_bytes` and `read_batch_max_reads` in the driver configs, validate their values, and modify the read loops of asyncio, fdio, pure, and sync drivers to respect these limits. The changes ensure input flushing occurs before EOF, handle partial read errors correctly, and update related tests to cover the new behavior.",
          "is_bot": false,
          "headline": "Add configurable read batch limits to I/O pipeline drivers",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T21:31:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91c26dcf11879f5145848c96fda7aa1d90b05c31",
          "body": "…tions for request handling and scope entry\n\nImplemented a non‑generator `_RequestGuard` and inlined request‑frame logic in `_try_provide` to eliminate contextmanager overhead. Added manual async context manager `_Entry` in `DelimitedScopeImpl` and `_AsyncScopeEntry` wrapper for `async_enter_scope`, removing `contextlib` usage and importing `types`. Updated imports accordingly and streamlined source‑stack handling. These changes improve hot‑path performance.",
          "is_bot": false,
          "headline": "Replace generator‑based context managers with manual class implementa…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T21:18:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "610da5825e5bf7221ca844f0334ace027bc8a973",
          "body": "Introduce a self‑contained benchmark module with latency and memory tests, auto‑calibrating iteration counts, async support, JSON output, and optional cProfile profiling. Provides a command‑line interface to run, filter, and profile benchmarks, helping detect performance regressions and memory leaks.",
          "is_bot": false,
          "headline": "Add DIY benchmarking and profiling suite for omcore.inject",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T21:01:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd6b55d62b33dd97d6f94bae0a9de25f80ff1a9d",
          "body": "Add `target_factory` and `case_runner` parameters to `_run_client_suite`, defaulting to a fresh Nginx fixture for each case to prevent state leakage. Update documentation to reflect the new behavior. Introduce tests that verify a new target is created for every client case and that an external base URL is reused across cases.",
          "is_bot": false,
          "headline": "Refresh client target per case and make client suite injectable",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T20:42:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06666b0f4c3336675e612431696fc46c39660a6b",
          "body": "Introduce DelimitedScope as the new unit‑of‑work scope, implement ContextVar‑backed opening policies, and update the injector to validate scope registration, prevent redeclaration in child injectors, and enforce eager bindings to be local to their scope. Add new error types (ScopeAlreadyRegisteredError, ScopeNotRegisteredError, ScopeEagerNonLocalError) and adjust default scopes handling. Update documentation, tests, and utility functions to use the new DelimitedScope API.",
          "is_bot": false,
          "headline": "Replace SeededScope with DelimitedScope and add contextual scope support",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T20:35:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad116fe8eb4b4c6892601be4dd1491a5ed8b83cf",
          "body": "Introduce a new bench module providing client and server benchmark implementations, utilities for parsing, partitioning, and result handling, along with a comprehensive test suite covering core functionality.",
          "is_bot": false,
          "headline": "Add self-contained HTTP pipeline benchmarks and tests",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T19:23:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "893d3578e7e716f8d4b35598dbe5a38d0e028450",
          "body": "Implemented PermissionRules collection, deciders, FS, shell, and URL matchers, managers, and marshaling support. Replaced the old PermissionGranter with PermissionDecider in filesystem, read, and bash tools, introduced SimplePermissionsManager and a default deny decider, and updated the UI accordingly while removing the obsolete PermissionGranter module and adding comprehensive tests.",
          "is_bot": false,
          "headline": "Add modular permissions system and migrate tools to PermissionDecider",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T19:20:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96680ace6af894fc3bb558d05af54d9141c70e7a",
          "body": null,
          "is_bot": false,
          "headline": "Bump nginx to 1.31.3 and nginx_vts to 0.2.6",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T18:56:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "778af450813dd2b66244ba007d12a2d7e4c9cc5e",
          "body": "Simplify runner creation by using the default asyncio.Runner, which already creates a fresh event loop.",
          "is_bot": false,
          "headline": "Remove redundant loop_factory argument from asyncio.Runner",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T18:11:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b2150668e22252872d8f197aca5a72b9ad5ba81",
          "body": "…rencing inj, and asyncio coalescing; refactor pipeline driver attribute declarations\n\nExtended test suite now covers:\n- Verification that injector keys are not type‑checked and can return any bound value.\n- A late‑binding example using a custom getter type that avoids importing the injection machin\n[…]\ner`, `PureIoPipelineDriver`, `SyncSocketIoPipelineDriver`) have been cleaned up by consolidating and reordering attribute definitions, removing duplicated declarations, and simplifying initialization.",
          "is_bot": false,
          "headline": "Add injector tests for type‑unchecked keys, late binding without refe…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T18:02:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1b14ad656f1a68db607b27e9246e87c53cf460a3",
          "body": "…cs, and tunnel mode\n\nIntroduce `is_interim` on response heads and a new `tunnel` body mode. Update the HTTP client pipeline to skip interim responses, correctly process HEAD and CONNECT requests, and reject conflicting Transfer‑Encoding/Content‑Length headers. Implement a client‑aware response deco\n[…]\nndler to manage interim and final response states. Add comprehensive tests for these behaviors and fix the WebSocket client upgrade handler to consume the HTTP response end after a successful upgrade.",
          "is_bot": false,
          "headline": "Add proper handling for interim (1xx) responses, HEAD/CONNECT semanti…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T05:12:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b6ccabc280eb6f8088c396859bd6081a0dd6f9ff",
          "body": "Implement weak reference handling for bound cached methods, including a fallback strong holder for non‑weakrefable objects, new cache spec flags, descriptor adjustments, and code‑gen changes. Add comprehensive tests for weak binding behavior, element‑collection garbage collection, and update related documentation and TODO entries.",
          "is_bot": false,
          "headline": "Add weak‑instance caching with pinning and strong_instance option",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T04:49:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f9fda2c49986888109d7acb0780d12543e9f7c2",
          "body": "…internal constants, add dead‑injector detection, and support weak‑parent private injectors. Update late binding to use weak refs, adjust seeded‑scope manager and child handling, and add comprehensive GC hygiene tests.",
          "is_bot": false,
          "headline": "Fix reference‑cycle leaks by weak‑ref‑ing injector relationships and …",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T03:59:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d657a17e8b29b6cf0205a53e7f78577701ff604",
          "body": "…class\n\nMoved the file to `omcore/diag`, merged a split comment line, replaced `# pragma: no cover` with `# noqa`, and added an `other: ta.Any` attribute to the inline test class.",
          "is_bot": false,
          "headline": "Rename refcycles module, tighten comments, and add type hint to test …",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T02:18:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a74f61becfef595287915b0a02e78a83b94b9452",
          "body": "Switches all uses of `uuid.uuid4()` to the newer `uuid.uuid7()` to obtain time‑ordered, sortable identifiers across tagging, multipart encoding, storage journaling, linecache reservations, and LLM backend tool call IDs.",
          "is_bot": false,
          "headline": "Replace uuid4 with uuid7 for UUID generation",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T01:09:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d108ef4bee28cee0f3a705fa0e390a85dbc71566",
          "body": null,
          "is_bot": false,
          "headline": "Bump package versions to 0.0.34 across all components.",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T00:08:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1a70eaf08371c0b3cb109d5597493a762c9526c",
          "body": null,
          "is_bot": false,
          "headline": "Add transformers to backend dependency skip list",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-30T00:04:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87fac6d8d22ebcf89d158d8f89e1679ece2dd879",
          "body": "Replace the pipdeptree module call in the Makefile, drop pipdeptree from dev and frozen requirements, and remove obsolete packages (Flask stack, blinker, installer, itsdangerous, nab‑*, tomli, truststore, Werkzeug, etc.) while adjusting build version.",
          "is_bot": false,
          "headline": "Use x.pipdeptree for the dep‑tree target and prune unused dependencies",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T23:54:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8f8f68b4947805627bd77180aead1fd6468ad56",
          "body": null,
          "is_bot": false,
          "headline": "Upgrade filelock to 3.32.2 and bump tinygrad submodule",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T23:48:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3fd8fd19136c18384ba27744a195eff16c40c10",
          "body": "Drop the type:ignore on session.verify and session.pip_proxy assignments, and add a try/except to import stdlib_pkgs from pip._internal.metadata.base for pip 26.2+, falling back to the previous location.",
          "is_bot": false,
          "headline": "Remove unnecessary type:ignore comments and improve stdlib_pkgs import",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T23:47:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81f20644e6a81b5fd12155bc1db1f1fdf044d604",
          "body": "Introduce CommandContext and CommandClass with full argparse handling, replace ui_text_to_rich_text with text_to_rich_text, add QuitSignal/RaiseQuitSignal, ensure MarkdownText writes a trailing newline, update CommandsManager to use TextDisplayer, add Echo and Quit simple commands, and integrate command handling into Session and the bare UI.",
          "is_bot": false,
          "headline": "Refactor command architecture and UI utilities",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T23:34:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9df7f67b4f86d8b4e77a00d4a6a9d9b5ad568ad",
          "body": "Add multi‑scope seed discussion to the TODO and refactor the UI module (display, json, rich, text) and related tests to use the new Text, TextStyle, and TextDisplayer names throughout the codebase.",
          "is_bot": false,
          "headline": "Rename UiText API to Text and update all references",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T23:02:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14af4de74aa963dd6fe3cd049e3ea82a6ada05f6",
          "body": "Introduce base Command classes with argument parsing, error handling, and a CommandsManager that parses text input, resolves commands, and executes them with UI feedback. This provides a structured command infrastructure for the harness.",
          "is_bot": false,
          "headline": "Add command framework to harness",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T22:55:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c50d40548cb7eba79be18ff9f5bec1a3f8366128",
          "body": "…ending‑removal semantics\n\nDocument the required removal contract, reentrant decode handling, and test coverage for inbound/outbound topology mutations.",
          "is_bot": false,
          "headline": "Add comprehensive TODO describing dynamic decoder removal and Netty p…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T22:47:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e2882752e4c371bb201e6db2695719f337cdf53",
          "body": "…bda with inj.target\n\nIntroduce `ScopeFrozenError` and a `freeze()` method for `SeededScopeImpl`, adding a frozen flag and guard in provision. Extend `OnceProvisionMap` with a `has()` check and use it to enforce frozen behavior. Ensure async injector initialization before `provide_kwargs` and `injec\n[…]\ndings with the preferred `inj.target` across the codebase, updating imports, docs, and tests. Add new tests for frozen scopes and adjust documentation regarding collection ordering and lambda binding.",
          "is_bot": false,
          "headline": "Add frozen‑scope support and request‑sharing fixes; replace typed_lam…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T22:44:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2da874e09190a88b6b6facf57d2bdafe39756dfc",
          "body": "…xpose in UI package\n\nIntroduce MarkdownUiText class as a placeholder for markdown rendering and update imports accordingly.",
          "is_bot": false,
          "headline": "Add UiTextDisplayer abstraction with Nop and Print implementations; e…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T22:40:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f91dd94fc66b990531bfd777b9660b66b522267",
          "body": "…xamples, and common patterns\n\nInclude tests for graph shapes, failure paths, scopes, multibindings, overrides, lifecycle management, and real‑world composition patterns.",
          "is_bot": false,
          "headline": "Add extensive injector test suite covering adversarial cases, usage e…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T22:03:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eb603ecff1091f3d36688f48d5810d7373b405e2",
          "body": "Update documentation to include the pure driver as a reference implementation, adjust fdio and sync drivers to use the flow service’s auto‑read logic, introduce a deterministic PureIoPipelineDriver, add extensive conformance and pure‑driver unit tests, and enable heap scheduler to accept an injected clock for deterministic timing.",
          "is_bot": false,
          "headline": "Add pure no‑I/O driver and comprehensive driver conformance tests",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T21:58:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96b178a21d79551313800b611846fc05cd0716fe",
          "body": "Introduce a new “interop” package with modules for llama‑cpp, mlx, tavily, tinygrad, torch, and transformers, including utilities for hacks, function creation, name generation, patching, tokenization, generation, loading, and streaming. Extend the project dependencies to include llama‑cpp‑python, mlx, mlx‑lm, tinygrad, torch, and transformers, and rename the huggingface group to “interop”. Add corresponding tests, fixtures, and helper scripts.",
          "is_bot": false,
          "headline": "Add interop support for multiple backends and update dependencies",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T21:57:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a50cc8b8b060d8a1b3c4de4c6dff82825d5c0591",
          "body": "Implemented a new `Session` class that holds an `Agent` and forwards prompts, added the corresponding import, and updated the UI to use `Session.prompt` instead of calling the agent directly. Also renamed agent imports to `agn` and adjusted related references.",
          "is_bot": false,
          "headline": "Add Session wrapper in harness and integrate it into the bare UI",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T21:29:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09d855eed21a87f88a34101d08cfd61e79982de8",
          "body": "Refactor TurnLoop to build the LLM context in a dedicated method and add a verbose CLI flag for conditional event output.",
          "is_bot": false,
          "headline": "Add error handling to tool execution and expose errors in ToolResult",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T21:22:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68427b27abb94ea2d600e02d4afc1654ed7ba7f2",
          "body": "Expose the new LlmAiStreamEvent, emit it while iterating over llm.StreamBackend streams, and switch the bare UI example to use the streaming backend with event logging.",
          "is_bot": false,
          "headline": "Add LlmAiStreamEvent and stream handling in TurnLoop",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T20:56:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54d1b8db4465cbb699065e5a262029ae914b6879",
          "body": "Add a cached RichMarkdown configuration, import typing, lang, and Rich UI utilities, adjust permission prompt formatting, and remove stray debug printing.",
          "is_bot": false,
          "headline": "Render AI text content with Rich Markdown",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T20:41:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9606d7600ffa4c4c25c1124172023df7ca24339",
          "body": "Upgrade pgvector to 0.8.6, bump boto3, botocore, types‑boto3 to 1.43.59, and update APSW. Refine event handling to print only AiMessage objects and advance the tinygrad submodule reference.",
          "is_bot": false,
          "headline": "Bump pgvector image and update core dependencies",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T20:32:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8714f408e7eaabf906bf4955802c8fe6c6c0331",
          "body": "Remove unused static _run_* helper methods and the functools import, using check.isinstance within the lambdas to invoke the appropriate instance method directly.",
          "is_bot": false,
          "headline": "Replace timeout callbacks with inline lambdas",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T20:28:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "965bbb670f732f689aae44c17361346f46d74c9b",
          "body": "Introduce DESIGN.md detailing architecture, lifecycle, flow control, scheduling, and driver contracts. Update README with a link to the design doc and clean up the TODO list accordingly.",
          "is_bot": false,
          "headline": "Add comprehensive pipeline design documentation",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T20:14:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "518a02695c82b05e624c2a936c832737d00a5fe7",
          "body": "Add listener logic to record write activity when a FlushOutput completes successfully, introduce WRITE_ACTIVITY_STATES, update documentation, and extend tests to cover flush completion handling, failure cases, and interaction with idle timers.",
          "is_bot": false,
          "headline": "Track successful FlushOutput as write activity",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T20:00:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04308935dfad716c00add68fc7d0b1c07c79f373",
          "body": "Include tests for immediate and streaming backends using SyncAsyncHttpClient and lang.sync_await to verify synchronous execution.",
          "is_bot": false,
          "headline": "Add sync test cases for OpenAI completions backends",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T19:58:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57e9abf0c47e0fd4497963a02b777e892c701af4",
          "body": "Implement a new handler that schedules and cancels write deadlines for FlushOutput and FinalOutput fences, emits TimeoutIoPipelineError on expiry, and integrates with pipeline scheduling. Extend tests for sync, asyncio, and fdio drivers to cover timeout behavior and remove obsolete TODO comments.",
          "is_bot": false,
          "headline": "Add WriteTimeoutIoPipelineHandler with outbound timeout enforcement",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T19:37:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed9309b44d708c43cce5e90fa66ca3d8dbb44f82",
          "body": "…eyed elements concatenate\n\nUpdate ElementCollection to apply overrides by whole‑bucket replacement for keyed elements while concatenating unkeyed ones. Add detailed docstring to `override` explaining the behavior. Adjust tests to reflect the new override logic (remove xfails, add cases for set/map multi‑bindings and eager handling). Clean up imports and TODO notes related to validation.",
          "is_bot": false,
          "headline": "Fix override semantics: per‑key elements now replace wholesale, non‑k…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T19:33:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b476a13a331256f008f9fe1fbe940677b9ee03f",
          "body": "Introduce a non‑blocking `drain_socket` helper for tests and a new `TestFdioSslIoPipelineHandlerShutdownTimeout` class that verifies TLS shutdown timeout handling, timer scheduling, error propagation, and proper driver cleanup.",
          "is_bot": false,
          "headline": "Add TLS shutdown timeout test and socket drain helper",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T19:02:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c40884503c57c337082e9324d414a518869240be",
          "body": "These tests capture the intended semantics for set, map, eager bindings, and non‑keyed elements, which currently fail because the override implementation replaces per‑key element lists wholesale (see TODO.md).",
          "is_bot": false,
          "headline": "Add xfail tests for override merging behavior and edge cases",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T18:59:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db6fa95fcbbba86c7438c55df0c58d19f305ec15",
          "body": "Introduce a RecordingSelectFdioPoller to capture poll timeouts and a new TestFdioSslIoPipelineHandlerTimeout verifying TLS handshake timeout handling with FdioManager. Add InputPermissionGranter that prompts the user for permission instead of using a constant granter.",
          "is_bot": false,
          "headline": "Add FDIO TLS handshake timeout test and interactive permission granter",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T18:55:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef682bc973b26b324cec62099fc121e0e2d68c31",
          "body": "The `in_` argument now accepts a scope name (`str`) as well as a `Scope` instance, enabling configuration by string identifiers.",
          "is_bot": false,
          "headline": "Allow string values for `in_` scope parameter in bind()",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T18:49:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e1ccd2de628eadc51d7cedeaefd9cc8af7ff0f0",
          "body": "…ivers\n\nRefactor the fdio and sync socket pipeline drivers to use a new common `HeapIoPipelineSchedulingService` instead of duplicated internal scheduler implementations. Update driver code to call `run_due()` and adjust imports accordingly. Add comprehensive heap scheduler unit tests and a new FDIO HTTP server timeout test covering partial request handling and timeout propagation. Update related test expectations and clean up TODO entries.",
          "is_bot": false,
          "headline": "Extract shared heap‑based scheduling service and integrate it into dr…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T18:46:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bded591d6230fe627f0e7d9185424b404c5745e7",
          "body": "Introduce a generic `ScopeImpl` with class methods (`scope_cls`, `eager_point`, `auto_elements`), replace `make_scope_impl` usage with a new `get_scope_impl` lookup, update element collection and eager‑point checks accordingly, and restructure the scope implementation registry.",
          "is_bot": false,
          "headline": "Refactor scope handling to generic class‑based implementation",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T18:45:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c4e51c5ec8dbaf39558171609bb611073ae130b",
          "body": null,
          "is_bot": false,
          "headline": "--",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T18:39:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5f06b3674b3c3d110395e02bf4d23127259a737e",
          "body": "Introduce `_has_init` flag and async helpers in `InputManager` to import `readline` only when stdin is a TTY. Use the manager for all prompts, handling `EOFError` to exit cleanly, and rename the backend variable for clarity. This prevents unnecessary imports and improves graceful shutdown.",
          "is_bot": false,
          "headline": "Add lazy readline initialization and robust input handling",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T18:19:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2cc73da71e2a87dae4a345cab14d81dc02393c6c",
          "body": "Introduces a lock‑protected `input` method that runs `input()` in a background thread, enabling safe concurrent usage in asynchronous contexts.",
          "is_bot": false,
          "headline": "Add async InputManager with thread‑offloaded input handling",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T18:15:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "94c8367358b450452404a5200d7e0125c3c9f7ef",
          "body": "…e in IoPipelineDriverSocketFdioHandler with timer support, deadline handling, cancellation, and manager wake‑up.",
          "is_bot": false,
          "headline": "Add fdio HTTP ping server demo and tests; implement scheduling servic…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T17:46:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d62be7b6ea8f38920d71778bd1f8fef3ffa251e5",
          "body": "Introduce PermissionGranter and ConstantPermissionGranter, expose them in the agent package, update LsTool, ReadTool, and BashTool to require a PermissionGranter and enforce permission checks, and wire a constant granter into the bare UI.",
          "is_bot": false,
          "headline": "Add permission granter infrastructure and integrate it into tools",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T17:42:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc7e23681d378e22d8c6733295bd0da34ccdad6f",
          "body": "Eliminate `omcore.lang.cached_function` wrappers and related imports from dummy, filesystem, and shell tools. Update all callers—including tests and the bare UI—to import the tool classes (`GetWeatherTool`, `LsTool`, `ReadTool`, `BashTool`) and invoke `.tool()` on instantiated objects, simplifying the tool registration flow.",
          "is_bot": false,
          "headline": "Remove cached tool factories and use tool class instances directly",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T17:30:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41a58aa0537b6c75cf24abdef8464f0e0a924429",
          "body": "Introduce `next_deadline` and `on_timeout` abstract methods, compute poll timeout from the earliest handler deadline, validate caller‑provided timeout, invoke `on_timeout` when due, clean up closed handlers, adjust poller unregister behavior, and add extensive unit tests for the new functionality.",
          "is_bot": false,
          "headline": "Add deadline handling and timeout callbacks to FDIO manager and handlers",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T17:24:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1bcd521045da099a42a9707e115ec7948e3358ca",
          "body": "Introduce -S/--start-col and -E/--end-col options with validation and end‑line adjustment, add optional argument logging, and include a regression test for docstring wrapping.",
          "is_bot": false,
          "headline": "Add column support to docwrap CLI",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T17:23:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13691e20f006a93f6f3788d847ec795be9425d31",
          "body": "This updates the submodule reference from a17387d6a to 3803f1583, bringing in recent changes and fixes.",
          "is_bot": false,
          "headline": "Upgrade tinygrad submodule to newer commit",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T16:40:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3df3b73164386ff5a2ebdcb62ba373e52f7eb36c",
          "body": "…ful shutdown\n\nReplace the previous non‑completable FinalOutput with a dataclass implementing Completable[None]. Adjust pipeline contexts to return the message, add helper methods to finish the Completable on success or error, and update asyncio, fdio, and sync drivers to invoke these helpers during drain and close. Refactor handlers and tests to track and assert the FinalOutput’s completion state, ensuring proper graceful termination without premature aborts.",
          "is_bot": false,
          "headline": "Make FinalOutput a Completable and integrate its lifecycle into grace…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T04:52:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e70584ddc9fcbdf990cc1913a66c27761d3e965",
          "body": "… fields class‑level defaults\n\nIntroduce a WeakKeyDictionary cache for dataclass ClassReflection in `reflect_tool_params`, add stricter type checks and return a `Sequence`. Move `_active` and `_active_used` to class attributes in `SegmentedByteStreamBuffer` to define default state more cleanly.",
          "is_bot": false,
          "headline": "Cache dataclass reflection for tool parameters and make active buffer…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T04:51:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e618472858f15c37166be5687126ed581eae3f98",
          "body": "…ernal `_ref` accesses\n\nRefactor pipeline code to use the new `ref` property, introduce a local `pipeline` variable for state checks, and update propagation, error handling, and handler lookup logic accordingly.",
          "is_bot": false,
          "headline": "Expose public `ref` on `IoPipelineHandlerContext` and replace all int…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T04:36:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e92316c781ae115a6c1321205c5522ea1a265670",
          "body": "- Added AbortedIoPipelineError and made IoPipelineFlowMessages.FlushOutput implement Completable, ensuring it signals success only after all prior output leaves pipeline buffers.\n- Refactored Completable binding/unbinding, unified finish logic, and aggregated listener exceptions without leaking inte\n[…]\nsted SSL handler to queue pending FlushOutput messages and emit them in order.\n- Extended tests to verify immediate completion without a writer, proper ordering, listener behavior, and abort handling.",
          "is_bot": false,
          "headline": "Make FlushOutput a Completable and improve completion lifecycle handling",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T04:31:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d35916f1fccc6cfa50cb463462d79ad1af414512",
          "body": "…ression/TLS pipelines\n\nIntroduce a _TimeoutResponseIoPipelineHandler and a new backpressure test that validates a 504 Gateway Timeout response drains correctly over slow TLS gzip streams. Add reference‑cycle tests for active HTTP compression and TLS handlers, and update pipeline TODOs to reflect timeout scheduling work.",
          "is_bot": false,
          "headline": "Add timeout response integration test and ensure no cyclic GC in comp…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T03:22:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f18c24b77c23868491addbd3a0eb35d05e5f0b5",
          "body": "…cies accordingly.",
          "is_bot": false,
          "headline": "Bump all package versions to 0.0.33 and update inter‑package dependen…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T03:21:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71263fb6c8856bab183e0ac0837137cd4a6adc4b",
          "body": "Update test helpers to instantiate the lexer via its Config wrapper, matching the new initialization API.",
          "is_bot": false,
          "headline": "Use JsonStreamLexer.Config for lexer construction in tests",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T03:05:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79fd97883e88a5fbf2dbb97651d5fe3495e6ee50",
          "body": "…f ownership and schedule_context API\n\nReplace direct imports of dataclasses with package-relative imports, refactor HttpHeaders, decoder/encoder, SSL handler, and various pipeline components to store non‑owning weak references. Add a new `schedule_context` method to `IoPipelineScheduling` and updat\n[…]\nUpdate caches, handler contexts, and driver implementations accordingly. Add comprehensive tests to verify that pipeline topology, handlers, and active timers do not require cyclic garbage collection.",
          "is_bot": false,
          "headline": "Break reference cycles in pipeline core and drivers, introduce weakre…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T02:57:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1c97f8715ee2572c73537c09318179f5110b1ac7",
          "body": "…tructors\n\nIntroduce frozen, kw‑only Config dataclasses for JsonStreamLexer, JsonStreamParser, and JsonValueBuilder, replace multiple keyword arguments with a single config object, and update internal attribute accesses accordingly. Adjust package initialization, utilities, and tests to use the new Config classes and enable code generation, while adding formatting and linting directives.",
          "is_bot": false,
          "headline": "Add Config dataclasses to streaming JSON components and refactor cons…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T02:00:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1896980e1147d9c3b79a61f0b36c60878eed054f",
          "body": "…enchmark\n\nReplace function‑based reflect_tool_fn usage for the dummy weather and bash tools with ToolClass subclasses, introducing explicit name, params_cls, description, and execute methods. Add a new benchmark suite for the streaming JSON parser that measures performance across feeding modes against stdlib C and pure‑python decoders.",
          "is_bot": false,
          "headline": "Refactor tools to class‑based implementation and add JSON streaming b…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T01:45:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe001156402e608cf9f0e011a7acc22af370490b",
          "body": "Introduce a lightweight PackedPosition type and unpack_position helper, store it in Token as packed_pos, and expose a .position property. Update the JSON stream lexer to emit packed tuples and adjust the parser to use the new property, improving token creation performance.",
          "is_bot": false,
          "headline": "Replace Position with packed tuple for token positions",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T01:36:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5d879367f8bc2db11ea42e8ddb3f2a39c6d0f25",
          "body": "Introduce a unified `_fail` path that marks the driver as FAILED and closes resources, track a closing writer, and handle transport read/write errors as driver failures. Add a `_ReadFailedCommand` to propagate read exceptions, wrap command execution, output handling, and scheduling with fail logic, \n[…]\nfely repeatable. Apply analogous improvements to the fdio and sync drivers. Expand the test suite with lifecycle, error‑propagation, and draining‑abort scenarios, and update documentation accordingly.",
          "is_bot": false,
          "headline": "Add robust failure handling and idempotent close to I/O pipeline drivers",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T01:24:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "22ecaa976624dddc4ac4afc1787a98e45915c8c3",
          "body": "Cover eager formatting, streaming modes (including buffered and small read buffers), line mode, JSON5 input handling, and error cases to ensure correct output and exit codes.",
          "is_bot": false,
          "headline": "Add comprehensive tests for the JSON CLI tool",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T01:19:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b64faca5d5896b2898e3ce8106daac78ca7f9f0c",
          "body": "Convert ls and read tools into ToolClass subclasses, simplify tool construction via .tool(), expose ToolClass in package init, and adjust description handling accordingly.",
          "is_bot": false,
          "headline": "Refactor filesystem tools to use the new ToolClass abstraction",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T01:17:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f367d4de2630214100da99b74eee8dfbea59c6e8",
          "body": "…d position tracking and suspendable input handling\n\nIntroduce new buffer management (_more, _read_chars, _consume_to) and fast‑path for single‑character buffers, simplify token scanning, fix string/number/identifier/comment parsing, improve error handling, and update utils and parser to correctly flush EOF and suppress secondary errors during context exit.",
          "is_bot": false,
          "headline": "Refactor streaming JSON lexer to use a single buffer with offset‑base…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T01:08:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d1632851bb3b10cbc1a5a336038e0d01dcd48a0",
          "body": "Introduce a drain task, request/cancel logic, and a DrainCompletedCommand to manage writer.drain() without blocking the driver. Queue output messages while a drain is pending, update writability checks, and ensure proper cleanup on shutdown and failure. Extend tests to verify non‑blocking behavior, coalesced drains, and error propagation.",
          "is_bot": false,
          "headline": "Add asynchronous drain handling and coalescing for output writes",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T00:50:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "333700a30094befedb0402b7994fe1f4621cffaf",
          "body": "… utilities\n\nExpose instantiate_tool_params and reflect_tool_params in the agent package and implement a generic cached wrapper that builds llm.Tool instances and executes them with proper parameter handling.",
          "is_bot": false,
          "headline": "Add abstract ToolClass base for LLM tools and expose param reflection…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T00:44:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "063a0fdd14829c07e0138a513ee88b0aec9b4efd",
          "body": "…boto3 to 1.43.58, upgrade uv to 0.12.0, and update the tinygrad submodule.\n\nRefresh cached model metadata and align frozen requirements with the new dependency versions.",
          "is_bot": false,
          "headline": "Bump MySQL Docker image to 9.7.2, upgrade boto3, botocore, and types‑…",
          "author_name": "wrmsr",
          "author_login": "wrmsr",
          "committed_at": "2026-07-29T00:28:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 0,
      "commits_last_year": 4075,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 51,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "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": "omdev",
          "exists": true,
          "license": "BSD-3-Clause",
          "keywords": [
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Operating System :: POSIX",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.14"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/omdev/",
          "is_deprecated": false,
          "latest_version": "0.0.35",
          "repository_url": "https://github.com/wrmsr/om",
          "versions_count": 585,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 2758,
          "first_published_at": "2024-08-27T16:05:04.836569Z",
          "latest_published_at": "2026-07-31T04:49:25.882405Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        },
        {
          "name": "omllm",
          "exists": true,
          "license": "BSD-3-Clause",
          "keywords": [
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Operating System :: POSIX",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.14"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/omllm/",
          "is_deprecated": false,
          "latest_version": "0.0.35",
          "repository_url": "https://github.com/wrmsr/om",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-07-14T19:33:15.590147Z",
          "latest_published_at": "2026-07-31T04:49:26.649241Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        },
        {
          "name": "omcore",
          "exists": true,
          "license": "BSD-3-Clause",
          "keywords": [
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Operating System :: POSIX",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.14"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/omcore/",
          "is_deprecated": false,
          "latest_version": "0.0.35",
          "repository_url": "https://github.com/wrmsr/om",
          "versions_count": 8,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 804,
          "first_published_at": "2026-07-14T20:45:31.052768Z",
          "latest_published_at": "2026-07-31T04:49:14.561944Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        },
        {
          "name": "omxtra",
          "exists": true,
          "license": "BSD-3-Clause",
          "keywords": [
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Operating System :: POSIX",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.14"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/omxtra/",
          "is_deprecated": false,
          "latest_version": "0.0.35",
          "repository_url": "https://github.com/wrmsr/om",
          "versions_count": 69,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-02-06T19:29:52.615753Z",
          "latest_published_at": "2026-07-31T04:49:17.544445Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        },
        {
          "name": "ominfra",
          "exists": true,
          "license": "BSD-3-Clause",
          "keywords": [
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Operating System :: POSIX",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.14"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/ominfra/",
          "is_deprecated": false,
          "latest_version": "0.0.35",
          "repository_url": "https://github.com/wrmsr/om",
          "versions_count": 585,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 2516,
          "first_published_at": "2024-08-27T16:05:07.031671Z",
          "latest_published_at": "2026-07-31T04:49:20.380559Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 7,
      "watchers": 1,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "demos",
        "examples",
        "notebooks",
        "samples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile",
        "omdev/pyproject/tests/skeleton/Makefile"
      ],
      "api_schema_files": [
        "omxtra/specs/proto/tests/examples/addressbook.proto"
      ],
      "has_devcontainer": false,
      "typecheck_configs": [
        "omcore/py.typed",
        "omdev/py.typed",
        "ominfra/py.typed",
        "omllm/py.typed",
        "omxtra/py.typed",
        "x/pipdeptree/py.typed"
      ],
      "toolchain_manifests": [
        "omdev/rs/_boilerplate/Cargo.toml",
        "x/ommlds/nanochat/rustbpe/Cargo.toml"
      ],
      "largest_source_bytes": 1397928,
      "source_files_sampled": 4878,
      "oversized_source_files": 61,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 3068
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml",
        "requirements-ci.txt",
        "requirements-dev.txt",
        "requirements-ext.txt",
        "requirements-frz.txt",
        "requirements.txt"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "pyo3",
            "direct": false,
            "version": "0.27.2",
            "severity": "high",
            "ecosystem": "crates",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-36hh-v3qg-5jq4",
              "GHSA-chgr-c6px-7xpp",
              "RUSTSEC-2026-0176",
              "RUSTSEC-2026-0177"
            ],
            "fixed_version": "0.29.0",
            "advisory_count": 4,
            "oldest_advisory_days": 49
          },
          {
            "name": "diskcache",
            "direct": false,
            "version": "5.6.3",
            "severity": "moderate",
            "ecosystem": "pypi",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-w8v5-vhqr-4h9v",
              "PYSEC-2026-2447"
            ],
            "fixed_version": null,
            "advisory_count": 2,
            "oldest_advisory_days": 169
          },
          {
            "name": "pytest",
            "direct": false,
            "version": "8.3.4",
            "severity": "moderate",
            "ecosystem": "pypi",
            "cvss_score": 6.8,
            "advisory_ids": [
              "GHSA-6w46-j5rx-g56g",
              "PYSEC-2026-1845"
            ],
            "fixed_version": "9.0.3",
            "advisory_count": 2,
            "oldest_advisory_days": 189
          },
          {
            "name": "crossbeam-epoch",
            "direct": false,
            "version": "0.9.18",
            "severity": "unknown",
            "ecosystem": "crates",
            "cvss_score": null,
            "advisory_ids": [
              "RUSTSEC-2026-0204"
            ],
            "fixed_version": "0.9.20",
            "advisory_count": 1,
            "oldest_advisory_days": 24
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 1,
          "unknown": 1,
          "moderate": 2
        },
        "advisory_count": 9,
        "affected_count": 4,
        "assessed_count": 371,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 69,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "omcore",
          "manifest": ".pkg/omcore-cext/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "== 0.0.36"
        },
        {
          "name": "omdev",
          "manifest": ".pkg/omdev-cext/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "== 0.0.36"
        },
        {
          "name": "omdev",
          "manifest": ".pkg/omdev-cli/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "== 0.0.36"
        },
        {
          "name": "omdev",
          "manifest": ".pkg/omdev-rs/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "== 0.0.36"
        },
        {
          "name": "omcore",
          "manifest": ".pkg/omdev/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "== 0.0.36"
        },
        {
          "name": "omcore",
          "manifest": ".pkg/ominfra/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "== 0.0.36"
        },
        {
          "name": "omcore",
          "manifest": ".pkg/omllm/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "== 0.0.36"
        },
        {
          "name": "omxtra",
          "manifest": ".pkg/omxtra-cext/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "== 0.0.36"
        },
        {
          "name": "omcore",
          "manifest": ".pkg/omxtra/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "== 0.0.36"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "omcore",
            "direct": true,
            "version": "0.0.36",
            "ecosystem": "pypi"
          },
          {
            "name": "omdev",
            "direct": true,
            "version": "0.0.36",
            "ecosystem": "pypi"
          },
          {
            "name": "omxtra",
            "direct": true,
            "version": "0.0.36",
            "ecosystem": "pypi"
          },
          {
            "name": "ahash",
            "direct": false,
            "version": "0.8.12",
            "ecosystem": "crates"
          },
          {
            "name": "aho-corasick",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "arc-swap",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "crates"
          },
          {
            "name": "autocfg",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "bit-set",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "bit-vec",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "castaway",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "crates"
          },
          {
            "name": "cfg-if",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "crates"
          },
          {
            "name": "compact_str",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "crossbeam-deque",
            "direct": false,
            "version": "0.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "crossbeam-epoch",
            "direct": false,
            "version": "0.9.18",
            "ecosystem": "crates"
          },
          {
            "name": "crossbeam-utils",
            "direct": false,
            "version": "0.8.21",
            "ecosystem": "crates"
          },
          {
            "name": "dary_heap",
            "direct": false,
            "version": "0.3.8",
            "ecosystem": "crates"
          },
          {
            "name": "either",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "crates"
          },
          {
            "name": "equivalent",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "crates"
          },
          {
            "name": "fancy-regex",
            "direct": false,
            "version": "0.16.2",
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.17.0",
            "ecosystem": "crates"
          },
          {
            "name": "heck",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "indexmap",
            "direct": false,
            "version": "2.14.0",
            "ecosystem": "crates"
          },
          {
            "name": "indoc",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "crates"
          },
          {
            "name": "itoa",
            "direct": false,
            "version": "1.0.15",
            "ecosystem": "crates"
          },
          {
            "name": "libc",
            "direct": false,
            "version": "0.2.184",
            "ecosystem": "crates"
          },
          {
            "name": "libc",
            "direct": false,
            "version": "0.2.188",
            "ecosystem": "crates"
          },
          {
            "name": "log",
            "direct": false,
            "version": "0.4.29",
            "ecosystem": "crates"
          },
          {
            "name": "memchr",
            "direct": false,
            "version": "2.7.6",
            "ecosystem": "crates"
          },
          {
            "name": "memoffset",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "crates"
          },
          {
            "name": "once_cell",
            "direct": false,
            "version": "1.21.4",
            "ecosystem": "crates"
          },
          {
            "name": "portable-atomic",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "crates"
          },
          {
            "name": "portable-atomic",
            "direct": false,
            "version": "1.14.0",
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": false,
            "version": "1.0.106",
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": false,
            "version": "1.0.107",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-build-config",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-build-config",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-ffi",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-ffi",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-log",
            "direct": false,
            "version": "0.13.3",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-macros",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-macros",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-macros-backend",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-macros-backend",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": false,
            "version": "1.0.45",
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": false,
            "version": "1.0.47",
            "ecosystem": "crates"
          },
          {
            "name": "r-efi",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "rayon",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "crates"
          },
          {
            "name": "rayon-core",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "regex-automata",
            "direct": false,
            "version": "0.4.13",
            "ecosystem": "crates"
          },
          {
            "name": "regex-syntax",
            "direct": false,
            "version": "0.8.8",
            "ecosystem": "crates"
          },
          {
            "name": "rustversion",
            "direct": false,
            "version": "1.0.22",
            "ecosystem": "crates"
          },
          {
            "name": "ryu",
            "direct": false,
            "version": "1.0.20",
            "ecosystem": "crates"
          },
          {
            "name": "static_assertions",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "2.0.117",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "2.0.119",
            "ecosystem": "crates"
          },
          {
            "name": "target-lexicon",
            "direct": false,
            "version": "0.13.5",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-ident",
            "direct": false,
            "version": "1.0.24",
            "ecosystem": "crates"
          },
          {
            "name": "unindent",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "crates"
          },
          {
            "name": "version_check",
            "direct": false,
            "version": "0.9.5",
            "ecosystem": "crates"
          },
          {
            "name": "wasip2",
            "direct": false,
            "version": "1.0.1+wasi-0.2.4",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen",
            "direct": false,
            "version": "0.46.0",
            "ecosystem": "crates"
          },
          {
            "name": "zerocopy",
            "direct": false,
            "version": "0.8.27",
            "ecosystem": "crates"
          },
          {
            "name": "zerocopy-derive",
            "direct": false,
            "version": "0.8.27",
            "ecosystem": "crates"
          },
          {
            "name": "aiohappyeyeballs",
            "direct": false,
            "version": "2.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "aiohttp",
            "direct": false,
            "version": "3.14.3",
            "ecosystem": "pypi"
          },
          {
            "name": "aiohttp-jinja2",
            "direct": false,
            "version": "1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "aiomysql",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "aiomysql",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "aiosignal",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "aiosqlite",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "aiosqlite",
            "direct": false,
            "version": "0.22.1",
            "ecosystem": "pypi"
          },
          {
            "name": "annotated-doc",
            "direct": false,
            "version": "0.0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "antlr4-python3-runtime",
            "direct": false,
            "version": "4.13.2",
            "ecosystem": "pypi"
          },
          {
            "name": "anyio",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "anyio",
            "direct": false,
            "version": "4.14.2",
            "ecosystem": "pypi"
          },
          {
            "name": "anyio",
            "direct": false,
            "version": "4.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "apsw",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "apsw",
            "direct": false,
            "version": "3.53.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "asgiref",
            "direct": false,
            "version": "3.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "asn1crypto",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ast-serialize",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "astpretty",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "asttokens",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "asttokens",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "asyncpg",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "asyncpg",
            "direct": false,
            "version": "0.30.0",
            "ecosystem": "pypi"
          },
          {
            "name": "asyncpg",
            "direct": false,
            "version": "0.31.0",
            "ecosystem": "pypi"
          },
          {
            "name": "asyncpg-stubs",
            "direct": false,
            "version": "0.31.3",
            "ecosystem": "pypi"
          },
          {
            "name": "asyncssh",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "asyncssh",
            "direct": false,
            "version": "2.24.0",
            "ecosystem": "pypi"
          },
          {
            "name": "attrs",
            "direct": false,
            "version": "26.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "basedpyright",
            "direct": false,
            "version": "1.39.9",
            "ecosystem": "pypi"
          },
          {
            "name": "bcrypt",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "bitsandbytes",
            "direct": false,
            "version": "0.50.0",
            "ecosystem": "pypi"
          },
          {
            "name": "black",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "black",
            "direct": false,
            "version": "26.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "blobfile",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "boto3",
            "direct": false,
            "version": "1.43.60",
            "ecosystem": "pypi"
          },
          {
            "name": "botocore",
            "direct": false,
            "version": "1.43.60",
            "ecosystem": "pypi"
          },
          {
            "name": "botocore-stubs",
            "direct": false,
            "version": "1.43.14",
            "ecosystem": "pypi"
          },
          {
            "name": "brotli",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "brotli",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "build",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "build",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cbor2",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "cbor2",
            "direct": false,
            "version": "6.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2026.7.22",
            "ecosystem": "pypi"
          },
          {
            "name": "cffi",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.9",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "cloudpickle",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "cloudpickle",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "contourpy",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "cramjam",
            "direct": false,
            "version": "2.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": "49.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cycler",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "cython",
            "direct": false,
            "version": "3.2.9",
            "ecosystem": "pypi"
          },
          {
            "name": "datasets",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ddgs",
            "direct": false,
            "version": "9.14.4",
            "ecosystem": "pypi"
          },
          {
            "name": "debugpy",
            "direct": false,
            "version": "1.8.21",
            "ecosystem": "pypi"
          },
          {
            "name": "decorator",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "deno",
            "direct": false,
            "version": "2.9.4",
            "ecosystem": "pypi"
          },
          {
            "name": "diffusers",
            "direct": false,
            "version": "0.39.0",
            "ecosystem": "pypi"
          },
          {
            "name": "dill",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "diskcache",
            "direct": false,
            "version": "5.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "docutils",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "docutils",
            "direct": false,
            "version": "0.23",
            "ecosystem": "pypi"
          },
          {
            "name": "docutils-stubs",
            "direct": false,
            "version": "0.0.22",
            "ecosystem": "pypi"
          },
          {
            "name": "duckdb",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "duckdb",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "pypi"
          },
          {
            "name": "execnet",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "executing",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "executing",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "fake-useragent",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": false,
            "version": "3.32.2",
            "ecosystem": "pypi"
          },
          {
            "name": "flake8",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "flake8-pyproject",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "pypi"
          },
          {
            "name": "flatbuffers",
            "direct": false,
            "version": "25.12.19",
            "ecosystem": "pypi"
          },
          {
            "name": "fonttools",
            "direct": false,
            "version": "4.63.0",
            "ecosystem": "pypi"
          },
          {
            "name": "frozenlist",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fsspec",
            "direct": false,
            "version": "2026.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "gguf",
            "direct": false,
            "version": "0.19.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-api-core",
            "direct": false,
            "version": "2.33.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-api-python-client",
            "direct": false,
            "version": "2.198.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-auth",
            "direct": false,
            "version": "2.56.2",
            "ecosystem": "pypi"
          },
          {
            "name": "google-auth-httplib2",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-cloud-compute",
            "direct": false,
            "version": "1.50.0",
            "ecosystem": "pypi"
          },
          {
            "name": "googleapis-common-protos",
            "direct": false,
            "version": "1.75.0",
            "ecosystem": "pypi"
          },
          {
            "name": "gprof2dot",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "gprof2dot",
            "direct": false,
            "version": "2025.4.14",
            "ecosystem": "pypi"
          },
          {
            "name": "greenlet",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "greenlet",
            "direct": false,
            "version": "3.5.4",
            "ecosystem": "pypi"
          },
          {
            "name": "grpcio",
            "direct": false,
            "version": "1.83.0",
            "ecosystem": "pypi"
          },
          {
            "name": "grpcio-status",
            "direct": false,
            "version": "1.83.0",
            "ecosystem": "pypi"
          },
          {
            "name": "guppy3",
            "direct": false,
            "version": "3.1.7",
            "ecosystem": "pypi"
          },
          {
            "name": "h11",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "h2",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "hf-xet",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "hpack",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "httpcore",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "pypi"
          },
          {
            "name": "httplib2",
            "direct": false,
            "version": "0.32.0",
            "ecosystem": "pypi"
          },
          {
            "name": "httpx",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "httpx",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "pypi"
          },
          {
            "name": "huggingface-hub",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "huggingface-hub",
            "direct": false,
            "version": "1.24.0",
            "ecosystem": "pypi"
          },
          {
            "name": "hyperframe",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "id",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.18",
            "ecosystem": "pypi"
          },
          {
            "name": "imageio",
            "direct": false,
            "version": "2.37.4",
            "ecosystem": "pypi"
          },
          {
            "name": "importlib-metadata",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "iniconfig",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invoke",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "ipython",
            "direct": false,
            "version": "9.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython-pygments-lexers",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-classes",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-context",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-functools",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jedi",
            "direct": false,
            "version": "0.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "jmespath",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "joblib",
            "direct": false,
            "version": "1.5.3",
            "ecosystem": "pypi"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "0.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "keyring",
            "direct": false,
            "version": "25.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "kiwisolver",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "lazy-loader",
            "direct": false,
            "version": "0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "librt",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "linkify-it-py",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "llama-cpp-python",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "llama-cpp-python",
            "direct": false,
            "version": "0.3.34",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml-stubs",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "lz4",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "lz4",
            "direct": false,
            "version": "4.4.5",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown-it-py",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "markdown-it-py",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markupsafe",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "markupsafe",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib",
            "direct": false,
            "version": "3.11.1",
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib-inline",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mccabe",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mdit-py-plugins",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mdit-py-plugins",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "memray",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "memray",
            "direct": false,
            "version": "1.19.3",
            "ecosystem": "pypi"
          },
          {
            "name": "mlx",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mlx",
            "direct": false,
            "version": "0.32.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mlx-lm",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mlx-lm",
            "direct": false,
            "version": "0.31.3",
            "ecosystem": "pypi"
          },
          {
            "name": "mlx-metal",
            "direct": false,
            "version": "0.32.0",
            "ecosystem": "pypi"
          },
          {
            "name": "more-itertools",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mpmath",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "msgpack",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "multidict",
            "direct": false,
            "version": "6.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "multiprocess",
            "direct": false,
            "version": "0.70.19",
            "ecosystem": "pypi"
          },
          {
            "name": "mwparserfromhell",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mwparserfromhell",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mypy",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-extensions",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mysql-connector-python",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mysql-connector-python",
            "direct": false,
            "version": "9.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mysqlclient",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mysqlclient",
            "direct": false,
            "version": "2.2.8",
            "ecosystem": "pypi"
          },
          {
            "name": "narwhals",
            "direct": false,
            "version": "2.24.0",
            "ecosystem": "pypi"
          },
          {
            "name": "networkx",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nh3",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "pypi"
          },
          {
            "name": "nodeenv",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "nodejs-wheel-binaries",
            "direct": false,
            "version": "24.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "objgraph",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "pypi"
          },
          {
            "name": "ominfra",
            "direct": false,
            "version": "0.0.36",
            "ecosystem": "pypi"
          },
          {
            "name": "omllm",
            "direct": false,
            "version": "0.0.36",
            "ecosystem": "pypi"
          },
          {
            "name": "onnxruntime",
            "direct": false,
            "version": "1.28.0",
            "ecosystem": "pypi"
          },
          {
            "name": "opencv-python",
            "direct": false,
            "version": "5.0.0.93",
            "ecosystem": "pypi"
          },
          {
            "name": "orjson",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "orjson",
            "direct": false,
            "version": "3.11.9",
            "ecosystem": "pypi"
          },
          {
            "name": "outcome",
            "direct": false,
            "version": "1.3.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "packaging",
            "direct": false,
            "version": "26.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "paramiko",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "paramiko",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "parso",
            "direct": false,
            "version": "0.8.7",
            "ecosystem": "pypi"
          },
          {
            "name": "pathspec",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pcpp",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pcpp",
            "direct": false,
            "version": "1.30",
            "ecosystem": "pypi"
          },
          {
            "name": "pexpect",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pg8000",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pg8000",
            "direct": false,
            "version": "1.31.5",
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": false,
            "version": "12.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": false,
            "version": "4.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.61.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pluggy",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pprintpp",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "primp",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "priority",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "prompt-toolkit",
            "direct": false,
            "version": "3.0.53",
            "ecosystem": "pypi"
          },
          {
            "name": "propcache",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "proto-plus",
            "direct": false,
            "version": "1.28.2",
            "ecosystem": "pypi"
          },
          {
            "name": "protobuf",
            "direct": false,
            "version": "7.35.1",
            "ecosystem": "pypi"
          },
          {
            "name": "psutil",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "psutil",
            "direct": false,
            "version": "7.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg",
            "direct": false,
            "version": "3.3.4",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg2",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg2",
            "direct": false,
            "version": "2.9.12",
            "ecosystem": "pypi"
          },
          {
            "name": "ptyprocess",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pudb",
            "direct": false,
            "version": "2025.1.5",
            "ecosystem": "pypi"
          },
          {
            "name": "pure-eval",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "py-cpuinfo",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyarrow",
            "direct": false,
            "version": "25.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1",
            "direct": false,
            "version": "0.6.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1-modules",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyclipper",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pycodestyle",
            "direct": false,
            "version": "2.14.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pycparser",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pycparser",
            "direct": false,
            "version": "3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pycryptodomex",
            "direct": false,
            "version": "3.23.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-monty",
            "direct": false,
            "version": "0.0.19",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-monty-runtime",
            "direct": false,
            "version": "0.0.19",
            "ecosystem": "pypi"
          },
          {
            "name": "pyee",
            "direct": false,
            "version": "13.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyflakes",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyinstrument",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyjwt",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pymysql",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pymysql",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pynacl",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyopenssl",
            "direct": false,
            "version": "26.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyparsing",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyproject-hooks",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyright",
            "direct": false,
            "version": "1.1.411",
            "ecosystem": "pypi"
          },
          {
            "name": "pytesseract",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytesseract",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": "8.3.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": "9.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-benchmark",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-clarity",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-mock",
            "direct": false,
            "version": "3.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-stress",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-subprocess",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-timeout",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-xdist",
            "direct": false,
            "version": "3.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": false,
            "version": "2.9.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-snappy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "python-snappy",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pytokens",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytz",
            "direct": false,
            "version": "2026.3.post1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "rapidocr-onnxruntime",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "rapidocr-onnxruntime",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "readme-renderer",
            "direct": false,
            "version": "45.0",
            "ecosystem": "pypi"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "2026.7.19",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": false,
            "version": "2.34.2",
            "ecosystem": "pypi"
          },
          {
            "name": "requests-toolbelt",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rfc3986",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": false,
            "version": "15.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ripgrep",
            "direct": false,
            "version": "15.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ruff",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "s3transfer",
            "direct": false,
            "version": "0.19.2",
            "ecosystem": "pypi"
          },
          {
            "name": "safetensors",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "scikit-image",
            "direct": false,
            "version": "0.26.0",
            "ecosystem": "pypi"
          },
          {
            "name": "scikit-learn",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "scipy",
            "direct": false,
            "version": "1.18.0",
            "ecosystem": "pypi"
          },
          {
            "name": "scramp",
            "direct": false,
            "version": "1.4.15",
            "ecosystem": "pypi"
          },
          {
            "name": "segno",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "segno",
            "direct": false,
            "version": "1.6.6",
            "ecosystem": "pypi"
          },
          {
            "name": "sentence-transformers",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sentencepiece",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "setuptools",
            "direct": false,
            "version": "83.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "shapely",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "shellingham",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "pypi"
          },
          {
            "name": "six",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sniffio",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sniffio",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "snowflake-connector-python",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "snowflake-connector-python",
            "direct": false,
            "version": "4.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "socksio",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sortedcontainers",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy",
            "direct": false,
            "version": "2.0.51",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlean-py",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sqlean-py",
            "direct": false,
            "version": "3.50.4.5",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlite-vec",
            "direct": false,
            "version": "0.1.9",
            "ecosystem": "pypi"
          },
          {
            "name": "stack-data",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "sympy",
            "direct": false,
            "version": "1.14.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tavily-python",
            "direct": false,
            "version": "0.7.26",
            "ecosystem": "pypi"
          },
          {
            "name": "textual",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "textual",
            "direct": false,
            "version": "8.2.8",
            "ecosystem": "pypi"
          },
          {
            "name": "textual-dev",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "textual-dev",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "textual-serve",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "textual-speedups",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "textual-speedups",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "threadpoolctl",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tifffile",
            "direct": false,
            "version": "2026.7.14",
            "ecosystem": "pypi"
          },
          {
            "name": "tiktoken",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tinygrad",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "tokenizers",
            "direct": false,
            "version": "0.22.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tomlkit",
            "direct": false,
            "version": "0.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "torch",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "torch",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "torchvision",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tqdm",
            "direct": false,
            "version": "4.70.0",
            "ecosystem": "pypi"
          },
          {
            "name": "traitlets",
            "direct": false,
            "version": "5.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "transformers",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "transformers",
            "direct": false,
            "version": "5.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter",
            "direct": false,
            "version": "0.26.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-bash",
            "direct": false,
            "version": "0.25.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-css",
            "direct": false,
            "version": "0.25.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-go",
            "direct": false,
            "version": "0.25.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-html",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-java",
            "direct": false,
            "version": "0.23.5",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-javascript",
            "direct": false,
            "version": "0.25.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-json",
            "direct": false,
            "version": "0.24.8",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-markdown",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-python",
            "direct": false,
            "version": "0.25.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-regex",
            "direct": false,
            "version": "0.25.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-rust",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-sql",
            "direct": false,
            "version": "0.3.11",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-toml",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-xml",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tree-sitter-yaml",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "trino",
            "direct": false,
            "version": "0.338.0",
            "ecosystem": "pypi"
          },
          {
            "name": "trio",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "trio",
            "direct": false,
            "version": "0.33.0",
            "ecosystem": "pypi"
          },
          {
            "name": "trio-asyncio",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "twine",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "twine",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typer",
            "direct": false,
            "version": "0.27.0",
            "ecosystem": "pypi"
          },
          {
            "name": "types-awscrt",
            "direct": false,
            "version": "0.34.1",
            "ecosystem": "pypi"
          },
          {
            "name": "types-boto3",
            "direct": false,
            "version": "1.43.60",
            "ecosystem": "pypi"
          },
          {
            "name": "types-docutils",
            "direct": false,
            "version": "0.22.3.20260724",
            "ecosystem": "pypi"
          },
          {
            "name": "types-greenlet",
            "direct": false,
            "version": "3.5.0.20260518",
            "ecosystem": "pypi"
          },
          {
            "name": "types-paramiko",
            "direct": false,
            "version": "5.0.0.20260724",
            "ecosystem": "pypi"
          },
          {
            "name": "types-psutil",
            "direct": false,
            "version": "7.2.2.20260518",
            "ecosystem": "pypi"
          },
          {
            "name": "types-pygments",
            "direct": false,
            "version": "2.20.0.20260728",
            "ecosystem": "pypi"
          },
          {
            "name": "types-pymysql",
            "direct": false,
            "version": "1.2.0.20260724",
            "ecosystem": "pypi"
          },
          {
            "name": "types-pyyaml",
            "direct": false,
            "version": "6.0.12.20260724",
            "ecosystem": "pypi"
          },
          {
            "name": "types-regex",
            "direct": false,
            "version": "2026.7.19.20260720",
            "ecosystem": "pypi"
          },
          {
            "name": "types-s3transfer",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "types-setuptools",
            "direct": false,
            "version": "83.0.0.20260724",
            "ecosystem": "pypi"
          },
          {
            "name": "types-ujson",
            "direct": false,
            "version": "5.10.0.20250822",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-extensions",
            "direct": false,
            "version": "4.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tzlocal",
            "direct": false,
            "version": "5.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "uc-micro-py",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ujson",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "ujson",
            "direct": false,
            "version": "5.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "unicorn",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "uritemplate",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "urllib3",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "urwid",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "pypi"
          },
          {
            "name": "urwid-readline",
            "direct": false,
            "version": "0.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "uv",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "uv",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "uvicorn",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "pypi"
          },
          {
            "name": "watchdog",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "pypi"
          },
          {
            "name": "wheel",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "wheel",
            "direct": false,
            "version": "0.47.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wikitextparser",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "wikitextparser",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "wsproto",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "xxhash",
            "direct": false,
            "version": "3.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "yappi",
            "direct": false,
            "version": "1.7.6",
            "ecosystem": "pypi"
          },
          {
            "name": "yarl",
            "direct": false,
            "version": "1.24.5",
            "ecosystem": "pypi"
          },
          {
            "name": "zipp",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "zstandard",
            "direct": false,
            "version": "0.25.0",
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 440,
        "direct_count": 3,
        "indirect_count": 437
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "wrmsr",
          "commits": 14002,
          "avatar_url": "https://avatars.githubusercontent.com/u/559096?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock"
      ],
      "scorecard": null,
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-31T04:50:53Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/wrmsr/om",
    "host": "github.com",
    "name": "om",
    "owner": "wrmsr"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 48,
      "inputs": {
        "security": 21,
        "vitality": 60,
        "community": 38,
        "governance": 52,
        "engineering": 61
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 60,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "commits_last_year": 4075,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 51
            },
            "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": "51/52 weeks with commits",
                "points": 35.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 51
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "4075 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 4075
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "OpenSSF Scorecard unavailable",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "OpenSSF Scorecard unavailable",
                "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": "at_risk",
        "name": "Community & Adoption",
        "value": 38,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 13,
            "inputs": {
              "forks": 0,
              "stars": 7,
              "watchers": 1,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "7 stars",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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 (BSD-3-Clause)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "BSD-3-Clause"
                    }
                  }
                ],
                "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": "moderate",
            "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": 63,
            "inputs": {
              "packages": [
                "omdev",
                "omllm",
                "omcore",
                "omxtra",
                "ominfra"
              ],
              "dependents": null,
              "ecosystems": "pypi",
              "total_downloads": null,
              "monthly_downloads": 6078
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "6,078 downloads/month across pypi",
                "points": 50.5,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 6078,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "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": 52,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 12,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "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 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "OpenSSF Scorecard unavailable",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "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": 62,
            "inputs": {
              "followers": 92,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "wrmsr",
              "public_repos": 240,
              "account_age_days": 5678
            },
            "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": "92 followers of wrmsr",
                "points": 14.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 92,
                      "login": "wrmsr"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "240 public repos, account ~15 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 240
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 15
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "omdev",
                "omllm",
                "omcore",
                "omxtra",
                "ominfra"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "5 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 5,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "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": "585 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 585
                    }
                  }
                ],
                "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": 61,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "OpenSSF Scorecard unavailable",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "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": null,
                "points": 0,
                "status": "missed",
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 21,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Dependency lockfiles. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dependency_lockfiles"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "source": "file_signals",
              "lockfiles": [
                "Cargo.lock"
              ],
              "manifests": [
                "pyproject.toml",
                "requirements-ci.txt",
                "requirements-dev.txt",
                "requirements-ext.txt",
                "requirements-frz.txt",
                "requirements.txt"
              ],
              "has_codeql_workflow": false,
              "has_security_policy": false,
              "has_dependabot_config": false
            },
            "components": [
              {
                "key": "security_policy_security_md",
                "name": "Security policy (SECURITY.md)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 30
              },
              {
                "key": "dependabot_config",
                "name": "Dependabot config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "dependency_lockfiles",
                "name": "Dependency lockfiles",
                "detail": "published library — lockfiles are an application concern, not expected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "lockfiles_not_expected",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "codeql_workflow",
                "name": "CodeQL workflow",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 371 resolved dependencies against OSV; 69 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",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 371
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 69
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 9,
              "affected_packages": 4,
              "assessed_packages": 371,
              "unassessed_packages": 69,
              "affected_by_severity": "high 1, moderate 2, unknown 1",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "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": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "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": 371,
              "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": 2
            },
            "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": "good",
        "name": "AI Readiness",
        "value": 77,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.9,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 3068
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.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": "90 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 90,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [
                "Makefile",
                "omdev/pyproject/tests/skeleton/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "omcore/py.typed",
                "omdev/py.typed",
                "ominfra/py.typed",
                "omllm/py.typed",
                "omxtra/py.typed",
                "x/pipdeptree/py.typed"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "omdev/rs/_boilerplate/Cargo.toml",
                "x/ommlds/nanochat/rustbpe/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile, omdev/pyproject/tests/skeleton/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile, omdev/pyproject/tests/skeleton/Makefile"
                    }
                  }
                ],
                "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": "omcore/py.typed, omdev/py.typed, ominfra/py.typed, omllm/py.typed, omxtra/py.typed, x/pipdeptree/py.typed",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "omcore/py.typed, omdev/py.typed, ominfra/py.typed, omllm/py.typed, omxtra/py.typed, x/pipdeptree/py.typed"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "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": "OpenSSF Scorecard unavailable",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 1397928,
              "source_files_sampled": 4878,
              "oversized_source_files": 61
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python with type-check config (omcore/py.typed, omdev/py.typed, ominfra/py.typed, omllm/py.typed, omxtra/py.typed, x/pipdeptree/py.typed)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "omcore/py.typed, omdev/py.typed, ominfra/py.typed, omllm/py.typed, omxtra/py.typed, x/pipdeptree/py.typed",
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "61/4878 source files over 60KB",
                "points": 54.3,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 4878,
                      "oversized": 61
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "good",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "example_dirs": [
                "demos",
                "examples",
                "notebooks",
                "samples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": [
                "omxtra/specs/proto/tests/examples/addressbook.proto"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "omxtra/specs/proto/tests/examples/addressbook.proto",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "omxtra/specs/proto/tests/examples/addressbook.proto"
                    }
                  }
                ],
                "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": "demos, examples, notebooks, samples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "demos, examples, notebooks, samples"
                    }
                  }
                ],
                "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 pypi package 'omdev.cexts._boilerplate' from its registry",
    "Could not fetch pypi package 'omcore._check' from its registry",
    "Could not fetch pypi package 'omxtra.collections.stl._stl' from its registry",
    "deps.dev does not index pypi:omdev@0.0.35; advisories assessed against the repository dependency graph instead",
    "OpenSSF Scorecard did not return a usable result (2026/07/31 04:51:10 Warning: PATs stored in env variables GITHUB_AUTH_TOKEN and GITHUB_TOKEN differ. Scorecard will use the former.); skipping Scorecard checks"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-31T04:51:43.342565Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/w/wrmsr/om.svg",
  "full_name": "wrmsr/om",
  "license_state": "standard",
  "license_spdx": "BSD-3-Clause"
}

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

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

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