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

TA-Lib / ta-lib

TA-Lib (Core C Library)

Java · C · RustBSD-3-Clause★ 1 638 зірок⑂ 291 форкз серп. 2016 р.Переглянути на GitHub ↗

TA-Lib/ta-lib має індекс здоров’я 31 зі 100, що відповідає смузі «У зоні ризику». Найвищий показник — Vitality (77/100), найнижчий — Security (34/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

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

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

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

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

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

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

Політика юрисдикцій високого ризику застосовує множник 50% до зваженого загального індексу здоров’я і встановлює для нього межу «У зоні ризику» на рівні 49.

Власність

TA-LibОрганізація
332 підписники12 публічних репозиторіївз серп. 2016 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

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

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

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

77Добрий · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
13.2/36Ритм комітів — 19/52 тижнів із комітами
18/18Обсяг комітів — 966 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year966
human_commit_share0,78
days_since_last_push0
active_weeks_last_year19
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 6 релізів
36/36Свіжість релізів — останній реліз 23 дн. тому
12.6/27Ритм релізів — реліз кожні ~174,2 дн.
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Використані вхідні дані
releases_count6
latest_release_tagv0.7.1
releases_from_tagsні
days_since_latest_release23
mean_days_between_releases174,2

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

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

67Помірний · 18% загального індексу
Як обчислюється оцінка
52.1/60Зірки — 1 638 зірок
20.5/25Форки — 291 форків
8.1/15Спостерігачі — 30 спостерігачів
Використані вхідні дані
forks291
stars1 638
watchers30
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ні

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

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

60Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
9.2/22.5Розподіл комітів — головний контриб’ютор — автор 59% комітів
13.5/13.5Широта контриб’юторів — 20 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Використані вхідні дані
bus_factor1
contributors_sampled20
top_contributor_share0,592
Як обчислюється оцінка
43.6/46.8Вирішення issue — закрито 93% issue
28.4/38.3Прийняття PR — злито 23/31 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 1/29 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs23
open_issues7
closed_issues98
issue_closed_ratio0,933
closed_unmerged_prs8
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
18.1/25Охоплення власника — 332 підписників у TA-Lib
20.1/25Послужний список — 12 публічних репозиторіїв, вік облікового запису ~9 р.
Використані вхідні дані
followers332
owner_typeOrganization
is_verified
owner_loginTA-Lib
public_repos12
account_age_days3 628

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

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

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

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

90Відмінний
Як обчислюється оцінка
30/30README
25/25Каталог документації
15/15Сайт документації / домашня сторінка — https://ta-lib.org/
10/10Опис репозиторію
10/10Теми — 4 тем
0/10Wiki
Використані вхідні дані
topicsta-lib, financial, series-analysis, technical-analysis
has_wikiні
homepagehttps://ta-lib.org/
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

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

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

Стан безпеки

18Критичний
Як обчислюється оцінка
3/7.5Binary-Artifacts — binaries present in source code
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
0/2.5CI-Tests — 0 out of 1 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 1/29 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 7 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — немає даних
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3,5
high_risk_jurisdiction_cap49
high_risk_jurisdiction_multiplier50
security_posture_after_multiplier18
security_posture_before_jurisdiction35
Виключено з оцінювання (немає даних або не застосовно): packaging. Залишкові ваги перенормовано. Політика юрисдикцій високого ризику застосовує множник 50% і встановлює для стану безпеки межу «У зоні ризику» на рівні 49.
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
0/25Непрямі залежності без відомих сповіщень — транзитивний набір не відокремлюється від залежностей розробки й тестування в цьому обсязі
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories0
affected_packages0
assessed_packages498
unassessed_packages1
affected_by_severitynone
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Непрямі залежності без відомих сповіщень, Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено 498 резолвлених залежностей із OSV. 1 не вдалося оцінити — немає резолвленої версії, непідтримувана екосистема або поза межами звітованого переліку пакетів. Цей репозиторій не публікує пакета, який резолвить індекс, тож натомість оцінено граф залежностей репозиторію. Цей граф змішує закріплені версії для розробки й тестування зі справді постачаними залежностями, тож оцінюються лише задекларовані runtime-залежності; транзитивні знахідки подаються як контекст і в оцінку не входять. Досяжність не аналізується.

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

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

71Добрий · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — CLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 78 з 78 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share1
agent_instruction_filesCLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md
agent_instruction_max_bytes27 322
Як обчислюється оцінка
12.6/18Розгортання однією командою — ta_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml (домовленість інструментарію, без раннера задач)
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
11/11Статична перевірка типів — Java (статично типізована)
10/10Відтворюване середовище — lockfile
10/10Підтверджена практика роботи з агентами — 9 з останніх 100 комітів створено агентом або з його зазначенням
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilesCargo.lock, pnpm-lock.yaml
has_dockerfileні
typed_languageтак
bootstrap_files
has_devcontainerні
has_linter_configні
typecheck_configs
agent_commit_share0,09
toolchain_manifeststa_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml, ta_codegen/output/rust/library/Cargo.toml, ta_codegen/output/rust/tools/Cargo.toml
dependency_bot_commit_share0
Як обчислюється оцінка
45/45Типізований код — Java (статично типізована)
43.3/55Керовані розміри файлів — 196/922 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageJava
largest_source_bytes12 329 300
source_files_sampled922
oversized_source_files196
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalні
api_schema_files

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

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

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

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'ta-lib.org' from its registry
  • Could not fetch crates package 'ta-codegen' from its registry

Докладніше

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

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

05010015020025030029172016-122021-102026-07
Мажорні 0Мінорні 1Патчі 5

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

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

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

4Binary-Artifactsbinaries present in source code
3Branch-Protectionbranch protection is not maximal on development and all release branches
0CI-Tests0 out of 1 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 1/29 approved changesets -- score normalized to 0
10Contributorsproject has 7 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
н/дPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Прямі залежності 5
РеєстрПакетОбмеження версіїМаніфест
npmkatex^0.16.47website/package.json
crates.ioserde1ta_codegen/generator/Cargo.toml
crates.ioserde_yaml0.9ta_codegen/generator/Cargo.toml
crates.ioserde_json1ta_codegen/generator/Cargo.toml
crates.ioregex1ta_codegen/generator/Cargo.toml
Усі залежності 499

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

РеєстрПакетВерсіяЗв'язок
crates.ioregex1.12.3пряма
crates.ioserde1.0.228пряма
crates.ioserde_jsonпряма
crates.ioserde_json1.0.149пряма
crates.ioserde_yaml0.9.34+deprecatedпряма
npmkatex0.16.47пряма
crates.ioaho-corasick1.1.4непряма
crates.ioequivalent1.0.2непряма
crates.iohashbrown0.16.1непряма
crates.ioindexmap2.13.0непряма
crates.ioitoa1.0.17непряма
crates.iomemchr2.8.0непряма
crates.ioproc-macro21.0.106непряма
crates.ioquote1.0.45непряма
crates.ioregex-automata0.4.14непряма
crates.ioregex-syntax0.8.10непряма
crates.ioryu1.0.23непряма
crates.ioserde_core1.0.228непряма
crates.ioserde_derive1.0.228непряма
crates.iosyn2.0.117непряма
crates.iounicode-ident1.0.24непряма
crates.iounsafe-libyaml0.2.11непряма
crates.iozmij1.0.21непряма
npm@babel/generator8.0.0непряма
npm@babel/helper-string-parser7.29.7непряма
npm@babel/helper-string-parser8.0.0непряма
npm@babel/helper-validator-identifier7.29.7непряма
npm@babel/helper-validator-identifier8.0.4непряма
npm@babel/parser7.29.7непряма
npm@babel/parser8.0.4непряма
npm@babel/types7.29.7непряма
npm@babel/types8.0.4непряма
npm@bufbuild/protobuf2.12.1непряма
npm@emnapi/core1.11.1непряма
npm@emnapi/runtime1.11.1непряма
npm@emnapi/wasi-threads1.2.2непряма
npm@esbuild/aix-ppc640.28.1непряма
npm@esbuild/android-arm0.28.1непряма
npm@esbuild/android-arm640.28.1непряма
npm@esbuild/android-x640.28.1непряма
npm@esbuild/darwin-arm640.28.1непряма
npm@esbuild/darwin-x640.28.1непряма
npm@esbuild/freebsd-arm640.28.1непряма
npm@esbuild/freebsd-x640.28.1непряма
npm@esbuild/linux-arm0.28.1непряма
npm@esbuild/linux-arm640.28.1непряма
npm@esbuild/linux-ia320.28.1непряма
npm@esbuild/linux-loong640.28.1непряма
npm@esbuild/linux-mips64el0.28.1непряма
npm@esbuild/linux-ppc640.28.1непряма
npm@esbuild/linux-riscv640.28.1непряма
npm@esbuild/linux-s390x0.28.1непряма
npm@esbuild/linux-x640.28.1непряма
npm@esbuild/netbsd-arm640.28.1непряма
npm@esbuild/netbsd-x640.28.1непряма
npm@esbuild/openbsd-arm640.28.1непряма
npm@esbuild/openbsd-x640.28.1непряма
npm@esbuild/openharmony-arm640.28.1непряма
npm@esbuild/sunos-x640.28.1непряма
npm@esbuild/win32-arm640.28.1непряма
npm@esbuild/win32-ia320.28.1непряма
npm@esbuild/win32-x640.28.1непряма
npm@jridgewell/gen-mapping0.3.13непряма
npm@jridgewell/remapping2.3.5непряма
npm@jridgewell/resolve-uri3.1.2непряма
npm@jridgewell/sourcemap-codec1.5.5непряма
npm@jridgewell/trace-mapping0.3.31непряма
npm@lit-labs/ssr-dom-shim1.6.0непряма
npm@lit/reactive-element2.1.2непряма
npm@mdit-vue/plugin-component3.0.2непряма
npm@mdit-vue/plugin-frontmatter3.0.2непряма
npm@mdit-vue/plugin-headers3.0.2непряма
npm@mdit-vue/plugin-sfc3.0.2непряма
npm@mdit-vue/plugin-title3.0.2непряма
npm@mdit-vue/plugin-toc3.0.2непряма
npm@mdit-vue/shared3.0.2непряма
npm@mdit-vue/types3.0.2непряма
npm@mdit/helper0.23.2непряма
npm@mdit/plugin-alert0.23.2непряма
npm@mdit/plugin-align0.24.2непряма
npm@mdit/plugin-attrs0.25.2непряма
npm@mdit/plugin-container0.23.2непряма
npm@mdit/plugin-demo0.23.2непряма
npm@mdit/plugin-figure0.23.2непряма
npm@mdit/plugin-footnote0.23.2непряма
npm@mdit/plugin-icon0.24.2непряма
npm@mdit/plugin-img-lazyload0.23.2непряма
npm@mdit/plugin-img-mark0.23.2непряма
npm@mdit/plugin-img-size0.23.2непряма
npm@mdit/plugin-include0.23.2непряма
npm@mdit/plugin-inline-rule0.23.2непряма
npm@mdit/plugin-katex-slim0.26.2непряма
npm@mdit/plugin-layout0.2.2непряма
npm@mdit/plugin-mark0.23.2непряма
npm@mdit/plugin-mathjax-slim0.26.2непряма
npm@mdit/plugin-plantuml0.24.2непряма
npm@mdit/plugin-spoiler0.23.2непряма
npm@mdit/plugin-stylize0.23.2непряма
npm@mdit/plugin-sub0.24.2непряма
npm@mdit/plugin-sup0.24.2непряма
npm@mdit/plugin-tab0.24.2непряма
npm@mdit/plugin-tasklist0.23.2непряма
npm@mdit/plugin-tex0.24.2непряма
npm@mdit/plugin-uml0.24.2непряма
npm@napi-rs/wasm-runtime1.1.6непряма
npm@oxc-project/types0.139.0непряма
npm@parcel/watcher2.5.6непряма
npm@parcel/watcher-android-arm642.5.6непряма
npm@parcel/watcher-darwin-arm642.5.6непряма
npm@parcel/watcher-darwin-x642.5.6непряма
npm@parcel/watcher-freebsd-x642.5.6непряма
npm@parcel/watcher-linux-arm-glibc2.5.6непряма
npm@parcel/watcher-linux-arm-musl2.5.6непряма
npm@parcel/watcher-linux-arm64-glibc2.5.6непряма
npm@parcel/watcher-linux-arm64-musl2.5.6непряма
npm@parcel/watcher-linux-x64-glibc2.5.6непряма
npm@parcel/watcher-linux-x64-musl2.5.6непряма
npm@parcel/watcher-win32-arm642.5.6непряма
npm@parcel/watcher-win32-ia322.5.6непряма
npm@parcel/watcher-win32-x642.5.6непряма
npm@pkgr/core0.3.6непряма
npm@rolldown/binding-android-arm641.1.5непряма
npm@rolldown/binding-darwin-arm641.1.5непряма
npm@rolldown/binding-darwin-x641.1.5непряма
npm@rolldown/binding-freebsd-x641.1.5непряма
npm@rolldown/binding-linux-arm-gnueabihf1.1.5непряма
npm@rolldown/binding-linux-arm64-gnu1.1.5непряма
npm@rolldown/binding-linux-arm64-musl1.1.5непряма
npm@rolldown/binding-linux-ppc64-gnu1.1.5непряма
npm@rolldown/binding-linux-s390x-gnu1.1.5непряма
npm@rolldown/binding-linux-x64-gnu1.1.5непряма
npm@rolldown/binding-linux-x64-musl1.1.5непряма
npm@rolldown/binding-openharmony-arm641.1.5непряма
npm@rolldown/binding-wasm32-wasi1.1.5непряма
npm@rolldown/binding-win32-arm64-msvc1.1.5непряма
npm@rolldown/binding-win32-x64-msvc1.1.5непряма
npm@rolldown/pluginutils1.0.1непряма
npm@shikijs/core4.3.1непряма
npm@shikijs/engine-javascript4.3.1непряма
npm@shikijs/engine-oniguruma4.3.1непряма
npm@shikijs/langs4.3.1непряма
npm@shikijs/primitive4.3.1непряма
npm@shikijs/themes4.3.1непряма
npm@shikijs/transformers4.3.1непряма
npm@shikijs/types4.3.1непряма
npm@shikijs/vscode-textmate10.0.2непряма
npm@stackblitz/sdk1.11.1непряма
npm@tybys/wasm-util0.10.3непряма
npm@types/debug4.1.13непряма
npm@types/fs-extra11.0.4непряма
npm@types/hash-sum1.0.2непряма
npm@types/hast3.0.5непряма
npm@types/jsesc2.5.1непряма
npm@types/jsonfile6.1.4непряма
npm@types/linkify-it5.0.0непряма
npm@types/markdown-it14.1.2непряма
npm@types/markdown-it-emoji3.0.1непряма
npm@types/mdast4.0.4непряма
npm@types/mdurl2.0.0непряма
npm@types/ms2.1.0непряма
npm@types/node24.13.3непряма
npm@types/node26.1.1непряма
npm@types/picomatch4.0.3непряма
npm@types/sax1.2.7непряма
npm@types/trusted-types2.0.7непряма
npm@types/unist3.0.3непряма
npm@types/web-bluetooth0.0.21непряма
npm@ungap/structured-clone1.3.3непряма
npm@vitejs/plugin-vue6.0.7непряма
npm@vue-macros/common3.1.2непряма
npm@vue/compiler-core3.5.39непряма
npm@vue/compiler-dom3.5.39непряма
npm@vue/compiler-sfc3.5.39непряма
npm@vue/compiler-ssr3.5.39непряма
npm@vue/devtools-api8.1.5непряма
npm@vue/devtools-kit8.1.5непряма
npm@vue/devtools-shared8.1.5непряма
npm@vue/reactivity3.5.39непряма
npm@vue/runtime-core3.5.39непряма
npm@vue/runtime-dom3.5.39непряма
npm@vue/server-renderer3.5.39непряма
npm@vue/shared3.5.39непряма
npm@vuepress/bundler-vite2.0.0-rc.30непряма
npm@vuepress/bundlerutils2.0.0-rc.30непряма
npm@vuepress/cli2.0.0-rc.30непряма
npm@vuepress/client2.0.0-rc.30непряма
npm@vuepress/core2.0.0-rc.30непряма
npm@vuepress/helper2.0.0-rc.130непряма
npm@vuepress/highlighter-helper2.0.0-rc.130непряма
npm@vuepress/markdown2.0.0-rc.30непряма
npm@vuepress/plugin-active-header-links2.0.0-rc.130непряма
npm@vuepress/plugin-back-to-top2.0.0-rc.130непряма
npm@vuepress/plugin-blog2.0.0-rc.130непряма
npm@vuepress/plugin-catalog2.0.0-rc.130непряма
npm@vuepress/plugin-comment2.0.0-rc.130непряма
npm@vuepress/plugin-copy-code2.0.0-rc.130непряма
npm@vuepress/plugin-copyright2.0.0-rc.130непряма
npm@vuepress/plugin-git2.0.0-rc.130непряма
npm@vuepress/plugin-icon2.0.0-rc.130непряма
npm@vuepress/plugin-links-check2.0.0-rc.130непряма
npm@vuepress/plugin-markdown-chart2.0.0-rc.130непряма
npm@vuepress/plugin-markdown-ext2.0.0-rc.130непряма
npm@vuepress/plugin-markdown-hint2.0.0-rc.130непряма
npm@vuepress/plugin-markdown-image2.0.0-rc.130непряма
npm@vuepress/plugin-markdown-include2.0.0-rc.130непряма
npm@vuepress/plugin-markdown-math2.0.0-rc.130непряма
npm@vuepress/plugin-markdown-preview2.0.0-rc.130непряма
npm@vuepress/plugin-markdown-stylize2.0.0-rc.130непряма
npm@vuepress/plugin-markdown-tab2.0.0-rc.130непряма
npm@vuepress/plugin-notice2.0.0-rc.130непряма
npm@vuepress/plugin-nprogress2.0.0-rc.130непряма
npm@vuepress/plugin-photo-swipe2.0.0-rc.130непряма
npm@vuepress/plugin-reading-time2.0.0-rc.130непряма
npm@vuepress/plugin-redirect2.0.0-rc.130непряма
npm@vuepress/plugin-rtl2.0.0-rc.130непряма
npm@vuepress/plugin-sass-palette2.0.0-rc.130непряма
npm@vuepress/plugin-seo2.0.0-rc.130непряма
npm@vuepress/plugin-shiki2.0.0-rc.130непряма
npm@vuepress/plugin-sitemap2.0.0-rc.130непряма
npm@vuepress/plugin-slimsearch2.0.0-rc.130непряма
npm@vuepress/plugin-theme-data2.0.0-rc.130непряма
npm@vuepress/shared2.0.0-rc.30непряма
npm@vuepress/utils2.0.0-rc.30непряма
npm@vueuse/core14.3.0непряма
npm@vueuse/metadata14.3.0непряма
npm@vueuse/shared14.3.0непряма
npmacorn8.17.0непряма
npmansi-regex5.0.1непряма
npmansi-regex6.2.2непряма
npmansi-styles4.3.0непряма
npmarg5.0.2непряма
npmargparse1.0.10непряма
npmargparse2.0.1непряма
npmast-kit2.2.0непряма
npmast-walker-scope0.9.0непряма
npmautoprefixer10.5.2непряма
npmbail2.0.2непряма
npmballoon-css1.2.0непряма
npmbaseline-browser-mapping2.10.43непряма
npmbcrypt-ts8.0.1непряма
npmbirpc2.9.0непряма
npmboolbase1.0.0непряма
npmbrowserslist4.28.6непряма
npmcac7.0.0непряма
npmcamelcase5.3.1непряма
npmcaniuse-lite1.0.30001805непряма
npmccount2.0.1непряма
npmchalk5.6.2непряма
npmcharacter-entities-html42.1.0непряма
npmcharacter-entities-legacy3.0.0непряма
npmcheerio1.2.0непряма
npmcheerio-select2.1.0непряма
npmchokidar5.0.0непряма
npmcli-cursor5.0.0непряма
npmcli-spinners3.4.0непряма
npmcliui6.0.0непряма
npmcolor-convert2.0.1непряма
npmcolor-name1.1.4непряма
npmcolorjs.io0.5.2непряма
npmcomma-separated-tokens2.0.3непряма
npmcommander14.0.3непряма
npmcommander8.3.0непряма
npmconfbox0.1.8непряма
npmconfbox0.2.4непряма
npmconnect-history-api-fallback2.0.0непряма
npmcreate-codepen2.0.3непряма
npmcss-select5.2.2непряма
npmcss-what6.2.2непряма
npmcsstype3.2.3непряма
npmdebug4.4.3непряма
npmdecamelize1.2.0непряма
npmdequal2.0.3непряма
npmdetect-libc2.1.2непряма
npmdevlop1.1.0непряма
npmdijkstrajs1.0.3непряма
npmdom-serializer2.0.0непряма
npmdomelementtype2.3.0непряма
npmdomhandler5.0.3непряма
npmdomutils3.2.2непряма
npmelectron-to-chromium1.5.389непряма
npmemoji-regex8.0.0непряма
npmencoding-sniffer0.2.1непряма
npmentities4.5.0непряма
npmentities6.0.1непряма
npmentities7.0.1непряма
npmenvinfo7.21.0непряма
npmesbuild0.28.1непряма
npmescalade3.2.0непряма
npmesprima4.0.1непряма
npmestree-walker2.0.2непряма
npmexsolve1.1.0непряма
npmextend3.0.2непряма
npmextend-shallow2.0.1непряма
npmfdir6.5.0непряма
npmfflate0.8.3непряма
npmfind-up4.1.0непряма
npmfraction.js5.3.4непряма
npmfs-extra11.3.6непряма
npmfsevents2.3.3непряма
npmget-caller-file2.0.5непряма
npmget-east-asian-width1.6.0непряма
npmgiscus1.6.0непряма
npmgraceful-fs4.2.11непряма
npmgray-matter4.0.3непряма
npmhas-flag4.0.0непряма
npmhash-sum2.0.0непряма
npmhast-util-from-html2.0.3непряма
npmhast-util-from-parse58.0.3непряма
npmhast-util-parse-selector4.0.0непряма
npmhast-util-sanitize5.0.2непряма
npmhast-util-to-html9.0.5непряма
npmhast-util-whitespace3.0.0непряма
npmhastscript9.0.1непряма
npmhookable5.5.3непряма
npmhtml-void-elements3.0.0непряма
npmhtmlparser210.1.0непряма
npmiconv-lite0.6.3непряма
npmimmutable5.1.9непряма
npmis-extendable0.1.1непряма
npmis-extglob2.1.1непряма
npmis-fullwidth-code-point3.0.0непряма
npmis-glob4.0.3непряма
npmis-interactive2.0.0непряма
npmis-plain-obj4.1.0непряма
npmis-unicode-supported2.1.0непряма
npmjs-yaml3.15.0непряма
npmjs-yaml4.3.0непряма
npmjsesc3.1.0непряма
npmjson52.2.3непряма
npmjsonfile6.2.1непряма
npmkind-of6.0.3непряма
npmlightningcss1.32.0непряма
npmlightningcss-android-arm641.32.0непряма
npmlightningcss-darwin-arm641.32.0непряма
npmlightningcss-darwin-x641.32.0непряма
npmlightningcss-freebsd-x641.32.0непряма
npmlightningcss-linux-arm-gnueabihf1.32.0непряма
npmlightningcss-linux-arm64-gnu1.32.0непряма
npmlightningcss-linux-arm64-musl1.32.0непряма
npmlightningcss-linux-x64-gnu1.32.0непряма
npmlightningcss-linux-x64-musl1.32.0непряма
npmlightningcss-win32-arm64-msvc1.32.0непряма
npmlightningcss-win32-x64-msvc1.32.0непряма
npmlilconfig3.1.3непряма
npmlinkify-it5.0.2непряма
npmlit3.3.3непряма
npmlit-element4.2.2непряма
npmlit-html3.3.3непряма
npmlocal-pkg1.2.1непряма
npmlocate-path5.0.0непряма
npmlog-symbols7.0.1непряма
npmmagic-string0.30.21непряма
npmmagic-string-ast1.0.3непряма
npmmarkdown-it14.3.0непряма
npmmarkdown-it-anchor9.2.1непряма
npmmarkdown-it-cjk-friendly2.0.2непряма
npmmarkdown-it-emoji3.0.0непряма
npmmdast-util-to-hast13.2.1непряма
npmmdurl2.0.0непряма
npmmicromark-util-character2.1.1непряма
npmmicromark-util-encode2.0.1непряма
npmmicromark-util-sanitize-uri2.0.1непряма
npmmicromark-util-symbol2.0.1непряма
npmmicromark-util-types2.0.2непряма
npmmimic-function5.0.1непряма
npmmlly1.8.2непряма
npmms2.1.3непряма
npmmuggle-string0.4.1непряма
npmnanoid3.3.16непряма
npmnanoid5.1.16непряма
npmnode-addon-api7.1.1непряма
npmnode-releases2.0.51непряма
npmnth-check2.1.1непряма
npmonetime7.0.0непряма
npmoniguruma-parser0.12.2непряма
npmoniguruma-to-es4.3.6непряма
npmora9.4.1непряма
npmp-limit2.3.0непряма
npmp-locate4.1.0непряма
npmp-try2.2.0непряма
npmparse57.3.0непряма
npmparse5-htmlparser2-tree-adapter7.1.0непряма
npmparse5-parser-stream7.1.2непряма
npmpath-exists4.0.0непряма
npmpathe2.0.3непряма
npmperfect-debounce2.1.0непряма
npmphotoswipe5.4.4непряма
npmpicocolors1.1.1непряма
npmpicomatch4.0.5непряма
npmpkg-types1.3.1непряма
npmpkg-types2.3.1непряма
npmpngjs5.0.0непряма
npmpostcss8.5.22непряма
npmpostcss-load-config6.0.1непряма
npmpostcss-value-parser4.2.0непряма
npmproperty-information7.2.0непряма
npmpunycode.js2.3.1непряма
npmqrcode1.5.4непряма
npmquansync0.2.11непряма
npmreaddirp5.0.0непряма
npmregex6.1.0непряма
npmregex-recursion6.0.2непряма
npmregex-utilities2.3.0непряма
npmrehype-parse9.0.1непряма
npmrehype-sanitize6.0.0непряма
npmrehype-stringify10.0.1непряма
npmrequire-directory2.1.1непряма
npmrequire-main-filename2.0.0непряма
npmrestore-cursor5.1.0непряма
npmrolldown1.1.5непряма
npmrxjs7.8.2непряма
npmsafer-buffer2.1.2непряма
npmsass1.100.0непряма
npmsass-embedded1.100.0непряма
npmsass-embedded-all-unknown1.100.0непряма
npmsass-embedded-android-arm1.100.0непряма
npmsass-embedded-android-arm641.100.0непряма
npmsass-embedded-android-riscv641.100.0непряма
npmsass-embedded-android-x641.100.0непряма
npmsass-embedded-darwin-arm641.100.0непряма
npmsass-embedded-darwin-x641.100.0непряма
npmsass-embedded-linux-arm1.100.0непряма
npmsass-embedded-linux-arm641.100.0непряма
npmsass-embedded-linux-musl-arm1.100.0непряма
npmsass-embedded-linux-musl-arm641.100.0непряма
npmsass-embedded-linux-musl-riscv641.100.0непряма
npmsass-embedded-linux-musl-x641.100.0непряма
npmsass-embedded-linux-riscv641.100.0непряма
npmsass-embedded-linux-x641.100.0непряма
npmsass-embedded-unknown-all1.100.0непряма
npmsass-embedded-win32-arm641.100.0непряма
npmsass-embedded-win32-x641.100.0непряма
npmsax1.6.0непряма
npmscule1.3.0непряма
npmsection-matter1.0.0непряма
npmset-blocking2.0.0непряма
npmshiki4.3.1непряма
npmsignal-exit4.1.0непряма
npmsitemap9.0.1непряма
npmslimsearch2.3.0непряма
npmsource-map-js1.2.1непряма
npmspace-separated-tokens2.0.2непряма
npmsprintf-js1.0.3непряма
npmstdin-discarder0.3.2непряма
npmstring-width4.2.3непряма
npmstring-width8.2.2непряма
npmstringify-entities4.0.4непряма
npmstrip-ansi6.0.1непряма
npmstrip-ansi7.2.0непряма
npmstrip-bom-string1.0.0непряма
npmsupports-color8.1.1непряма
npmsync-child-process1.0.2непряма
npmsync-message-port1.2.0непряма
npmsynckit0.11.13непряма
npmtinyglobby0.2.17непряма
npmtrim-lines3.0.1непряма
npmtrough2.2.0непряма
npmtslib2.8.1непряма
npmuc.micro2.1.0непряма
npmufo1.6.4непряма
npmundici7.28.0непряма
npmundici-types7.18.2непряма
npmundici-types8.3.0непряма
npmunified11.0.5непряма
npmunist-util-is6.0.1непряма
npmunist-util-position5.0.0непряма
npmunist-util-stringify-position4.0.0непряма
npmunist-util-visit5.1.0непряма
npmunist-util-visit-parents6.0.2непряма
npmuniversalify2.0.1непряма
npmunplugin3.3.0непряма
npmunplugin-utils0.3.2непряма
npmupath2.0.1непряма
npmupath3.0.8непряма
npmupdate-browserslist-db1.2.3непряма
npmvarint6.0.0непряма
npmvfile6.0.3непряма
npmvfile-location5.0.3непряма
npmvfile-message4.0.3непряма
npmvite8.1.4непряма
npmvue3.5.39непряма
npmvue-router5.1.0непряма
npmvuepress2.0.0-rc.30непряма
npmvuepress-plugin-components2.0.0-rc.107непряма
npmvuepress-plugin-md-enhance2.0.0-rc.107непряма
npmvuepress-shared2.0.0-rc.107непряма
npmvuepress-theme-hope2.0.0-rc.107непряма
npmweb-namespaces2.0.1непряма
npmwebpack-virtual-modules0.6.2непряма
npmwhatwg-encoding3.1.1непряма
npmwhatwg-mimetype4.0.0непряма
npmwhich-module2.0.1непряма
npmwrap-ansi6.2.0непряма
npmy18n4.0.3непряма
npmyaml2.9.0непряма
npmyargs15.4.1непряма
npmyargs-parser18.1.3непряма
npmyoctocolors2.1.2непряма
npmzwitch2.0.4непряма
Сповіщення про залежності 0

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

Жодне відоме сповіщення не стосується оцінених залежностей.

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

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "ta-lib",
        "financial",
        "series-analysis",
        "technical-analysis"
      ],
      "is_fork": false,
      "size_kb": 1008183,
      "has_wiki": false,
      "homepage": "https://ta-lib.org/",
      "languages": {
        "C": 14039671,
        "C#": 606931,
        "M4": 2173,
        "Java": 32229391,
        "Rust": 12494524,
        "SCSS": 5456,
        "CMake": 42533,
        "Shell": 15521,
        "Python": 295013,
        "Makefile": 7066,
        "TypeScript": 3352
      },
      "pushed_at": "2026-07-27T08:35:28Z",
      "created_at": "2016-08-20T06:28:16Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-27T02:56:58Z",
      "description": "TA-Lib (Core C Library)",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "BSD-3-Clause",
      "default_branch": "main",
      "license_spdx_raw": "BSD-3-Clause",
      "primary_language": "Java",
      "significant_languages": [
        "Java",
        "C",
        "Rust"
      ]
    },
    "owner": {
      "blog": "https://sourceforge.net/p/ta-lib/bugs/102/",
      "name": "TA-Lib",
      "type": "Organization",
      "login": "TA-Lib",
      "company": null,
      "location": null,
      "followers": 332,
      "avatar_url": "https://avatars.githubusercontent.com/u/21127168?v=4",
      "created_at": "2016-08-19T14:54:08Z",
      "is_verified": null,
      "public_repos": 12,
      "account_age_days": 3628
    },
    "license": {
      "state": "standard",
      "spdx_id": "BSD-3-Clause",
      "raw_spdx": "BSD-3-Clause",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.7.1",
          "kind": "patch",
          "published_at": "2026-07-03T17:36:45Z"
        },
        {
          "tag": "v0.6.4",
          "kind": "patch",
          "published_at": "2025-01-11T05:00:37Z"
        },
        {
          "tag": "v0.6.3",
          "kind": "patch",
          "published_at": "2025-01-06T00:16:36Z"
        },
        {
          "tag": "v0.6.2",
          "kind": "patch",
          "published_at": "2024-12-26T04:12:47Z"
        },
        {
          "tag": "v0.6.1",
          "kind": "patch",
          "published_at": "2024-12-23T21:37:11Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2024-02-13T17:47:56Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "144c635bb429759235696d9f95e1734169205f3a",
          "body": "…one (replaced by the generated metadata registry)",
          "is_bot": false,
          "headline": "docs: CLAUDE.md project tree — the hand-written Java meta/ layer is g…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T02:50:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4d46dbdc905712bdda7e27a978056ae3b5258b5",
          "body": "… emitters\n\nFour lints under -D warnings (unnecessary_to_owned, unnecessary_map_or,\nredundant_closure_for_method_calls, too_many_lines on the ParamHolder\nemitter — allowed per the c_stream.rs precedent). Emission-neutral: a full\ngenerate produces zero file changes.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(codegen): clear the clippy pedantic gate in the Java doc/metadata…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T02:41:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "acad5800617507d77364cd9839d06382605294d1",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-27T02:36:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bcbecf469891abc98c26fde3c8525780c3e97f7a",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-27T02:28:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dab2d5c9295d5bbc82cfd63d40766643614b1ce0",
          "body": "Merged for contribution credit. dev already carries the reworked\nimplementation (e9848f1e) built on this PR's end-bounding idea; all\nconflicts resolved to the dev version, so this merge changes no content.",
          "is_bot": false,
          "headline": "Merge PR #143: bound each MAVP ma() pass at its period's last use",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T02:01:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6160bc12d0de60ec4678dc37b12ed6b00d6de6a",
          "body": "…ith doclint\n\njava_doc.rs renders each function's ta_codegen/input/<name>/<name>.md onto the\npublic batch API -- the Java counterpart of rust_doc.rs. Until now Core.java's\nonly /** blocks were the templated streaming blurbs: 168 batch methods with no\ndocumentation and no IDE hover. Prose comes from \n[…]\nges, exit 0; xlang-hash Rust 200961 / Java\n200907 cases, 0 mismatches; cargo test all 10 suites 0 failed; 5 Java suites +\ndoclint; regen idempotent; C/Rust/.NET generated output byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "feat(java): generate batch Javadoc from the canonical .md + gate it w…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T00:27:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1bd1fcec96be1ddd94c4fee6a522cb37434dc069",
          "body": "Java gets the introspection layer C and Rust already ship, replacing the frozen\n2007 meta/ island that A2 had to delete. Package io.github.talib.metadata:\nFunctions.all()/byName(), rows as immutable records, plus a ParamHolder and a\nGENERATED STATIC SWITCH for call-by-name -- C's TA_ParamHolderAlloc\n[…]\n961 / Java\n200907 cases, 0 mismatches; cargo test all 10 suites 0 failed; 5 junit-free Java\nsuites (MetadataTest auto-discovered); regen idempotent; C/Rust/.NET generated\noutput byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "feat(java): ship the generated metadata registry + call-by-name",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T21:51:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e9848f1ec15b629fb2192e6038bcdfc25b28494f",
          "body": "…ast use (#143)\n\nBuilds on PR #143 by @dexhunter: each per-period ma() pass now ends at the\nlast output using that period — bit-safe because every dispatched MA fills\nforward (truncating the end cannot change earlier outputs). The\nflag-and-rescan selection is replaced by a counting sort sized by the\n[…]\nlock-copy and wrong-fast-path-buffer defects pass\nevery pre-existing gate and are caught only by this group.\n\nAlso adds the missing #128 CHANGELOG entry.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(mavp): group outputs by period and bound each ma() pass at its l…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T21:12:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6ceb94e83c1e0ad4aeeb8b56edc8148f8e1dafb5",
          "body": "…overy\n\nThe A2 checkpoint review found what the gates structurally cannot see.\n\nThe published ta-lib.org Java pages documented an API that no longer exists. A2\nrewrote only the import FQNs there, so the pages LOOKED reviewed while every\nsample stayed on the pre-A1 surface: MInteger/RetCode imports (\n[…]\nd; 4 Java suites pass; regen\nidempotent. Note the gate run happened on a tree that also carried another\nsession's in-flight #143 MAVP work, so it green-lit both; the commit itself is\nJava-only.\n\nMF,CC",
          "is_bot": false,
          "headline": "fix(java): A2 checkpoint review — website API docs, casing, test disc…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T20:42:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e2b15dde33c82f705d425bc6caab365ca1fc71de",
          "body": "The public batch surface returns `record OutRange(begIdx, count)` and throws on\nmisuse. A range shorter than the lookback stays a SUCCESS with count 0 -- C's\ncontract -- and is never an exception.\n\nFragments keep the C shape as package-private cores (`xxxInternal`,\n`xxxUnguardedInternal`); `java.rs`\n[…]\nJava\n200907 cases, 0 mismatches; cargo test ALL 10 suites 0 failed; 4 junit-free Java\nsuites pass (38+30+4 checks + stream smoke); regen idempotent; C/Rust/.NET\ngenerated output byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "refactor(java)!: OutRange + throwing wrappers; rename to io.github.talib",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T05:15:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "74ba14d4eae4ef89ba1dde8327433eeb510cc38f",
          "body": "Core is immutable (final fields, deep-immutable CandleSetting, defensive\ncopies, no accessor hands an array back), so sharing one across threads is\nsafe under JLS 17.5 without synchronization. Settings move to a hand-written\nCoreBuilder; Core.DEFAULT is the shared zero-config instance.\n\nCompatibilit\n[…]\n --codegen 161/0/7 x4 languages, exit 0; xlang-hash Rust 200961 /\nJava 200907 cases, 0 mismatches; cargo test 306+226+2, 0 failed; regen\nidempotent; C/Rust/.NET generated output byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "refactor(java): immutable Core + CoreBuilder; drop compatibility",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T03:27:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0e48c4eb35f8e842040a6a2f6a0363f15d58e8da",
          "body": "…riod prose\n\nPath-Dependent was the one category described only in the abstract. Add AD (a\nrunning accumulation whose level is an artifact of the start date) and SAR (a\nstate machine that can pick the opposite initial trend direction) as a two-item\nlist, so the reader sees both shapes the opening se\n[…]\nction page already names the setting it\nresponds to.\n\nLink \"Function Documentation\" in the intro to /functions/ rather than leaving\n\"the documentation\" for the reader to locate.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): give Path-Dependent two examples; trim the unstable-pe…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T01:00:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ba2269e3b6f294a72f8a7dfb6b4e62a2d74c36d7",
          "body": "TA_MAVP normalized every requested period into localPeriodArray, then, for\neach distinct period still flagged, called ma() over the whole remaining\nrange and scanned the rest of localPeriodArray to find and copy every\noutput sharing that period. Every ma() pass therefore ran to endIdx even\nwhen its \n[…]\ninside the\n1e-12 bar).\n\nThe added allocation is 2*(optInMaxPeriod+1) ints, sized by the period\nrange rather than the data, and is null-checked with full cleanup.\n\nCo-Authored-By: Aiden <aiden@weco.ai>",
          "is_bot": false,
          "headline": "perf(mavp): bound each ma() pass at its period's last use",
          "author_name": "Dex Hunter",
          "author_login": "dexhunter",
          "committed_at": "2026-07-25T12:12:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "68757ff34d2ce5ed5bf3379aa936605fa515565f",
          "body": "Transitive dev dependency of the VuePress/vite build. Path traversal in\nprevious-source-map auto-loading; not reachable here (build-time only,\nno untrusted CSS). Lockfile-only.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "build(website): bump postcss 8.5.17 -> 8.5.22 (GHSA-r28c-9q8g-f849)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T03:59:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e203f7c436a9c21fd08246661971cfcb7ee37517",
          "body": "\"If Initial Unstable Period, then...\" rather than a bare category name, so a\nreader landing mid-page sees that a section covers one case out of four, not a\nproperty every function has, and that the answer is the body below.\n\nAnchors are pinned with {#id} (markdown-it-attrs, already enabled by the th\n[…]\nnction pages deep-link\nthese sections, and letting the slugifier follow the wording would both lengthen\nthe ids and break every inbound link the next time a heading is reworded.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): phrase the stability headings as conditionals",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T02:58:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "25c5157dd47c01a1a73800d477b2e5bd3c8eb515",
          "body": "…I section\n\nReference page: trim the Start-Independent and Initial Unstable Period sections\nto what the reader needs, drop the two \"comparing across different-length\nwindows\" restatements, and link /api/unstable-period/ for what to do about an\nunstable period. Call the four things \"categories\" rathe\n[…]\nasted in issues and forum answers, so a bare rename would silently land\nthose readers at the top of a long page. The four in-repo pages that used it are\nmoved to the new anchor.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): tighten the numerical-stability wording; rename the AP…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T02:49:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ba8c75f08d225a4abc33072f3b5e0c8505463101",
          "body": "…lity line\n\nA state's definition is written once, on /functions/stability, and linked. The\nper-function line adds a clause only when there is something the link cannot\nsay: which inner function the unstable period is inherited from (DEMA -> EMA),\nwhat this function's own MAType default implies (BBAN\n[…]\nso inherits a period that still\nmoves its lookback (ADOSC -> EMA). Start-Independent, an intrinsic unstable\nperiod and plain path-dependence now render as the bare linked state.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): say only what is specific to the function in the stabi…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T01:59:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d9108cd2758e769912626825f8825398ab06b9e0",
          "body": "…ckboxes\n\nThe Properties table claimed \"Start-Independent\" for 17 functions that are not.\nThe YAML `unstable_period` flag answers the ABI question -- does this function own\na tunable TA_FUNC_UNST_* id -- which is what TA_FUNC_FLG_UNST_PER has always\nmeant, and the documentation was rendering it as a\n[…]\non) but\nunchecked cells no longer carry their tooltip. Verified: the phrases \"never\nconverges\" and \"candlestick-pattern signal\" now appear only on the pages where\nthey are true.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): derive numerical stability; state it in prose, not che…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T01:41:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7b842bb10de1a133f9f5fa0042ca82b274c57761",
          "body": "Present the RSI and BBANDS formulas as KaTeX display blocks (already enabled\nsite-wide via vuepress-theme-hope markdown.math + katex) instead of prose with\ninline math, followed by a short \"where ...\" legend line.\n\nRSI now states Wilder's published form (RS, then 100 - 100/(1+RS)) rather than\nour fu\n[…]\neriod shortcuts stay out of the docs.\n\ndocs_site: drop any \"##\" section whose body is blank, so an empty \"## Notes\"\nplaceholder in an input page never renders as a bare heading.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(rsi,bbands): typeset formulas as display math; drop empty sections",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T01:08:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1ce79015cc02f9ef42f77db0c72beffb28772c33",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T20:19:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80a11563bfea3957bf1b7b4530e5508892ba30af",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T20:11:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71105c62c7a5d43c950f05ce981785c42cc78ba8",
          "body": "… comments\n\nThe fuzz/xlang param-vector builder collected MAType candidates into a fixed\ncand[10] with an `nc < 10` guard that dropped extra values SILENTLY — it never\nreached the FUZZ_MAX_VEC overflow counter, so a MAType list longer than 10\nnon-default would quietly stop being swept. #93 (DISABLED\n[…]\n\" comment fixed.\n\nBehavior-neutral at M=11 (no coverage change); the next MAType add now fails\nthe gate instead of silently dropping arms. All gates green (--codegen,\n--xlang-hash, --fuzz-064, plain).",
          "is_bot": false,
          "headline": "test(regtest): make MAType vector-cap truncation fail loudly, refresh…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T19:56:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d7519d6c7a73403466d28630c29619d07666d198",
          "body": "MACDEXT carries 3 MAType params, so its stream-vector count is 6*M+1 in the\nMAType-list length M. #93 added TA_MAType_DISABLED (M 10->11), taking it from\n61 to 67 vectors and tripping the STREAM_MAX_VEC=64 overflow guard — a hard\nfailure of the unfiltered `ta_regtest --codegen` stream_verify gate th\n[…]\ned since #93 landed. Raise the cap to 128 (runway for ~10 more\nMATypes); the dropped MACDEXT DISABLED arms are now actually stream-verified\n(15596 legs, up from 10684). Coverage restored, not reduced.",
          "is_bot": false,
          "headline": "test(regtest): raise STREAM_MAX_VEC 64->128 for MACDEXT after #93 (#93)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T18:18:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4ebb02a3fcbac58d2640e585d2ceef0b84b21a85",
          "body": "…ers (#142)\n\nRoute the abstract sweep's empty-output cases (period consumes the whole\nrange -> TA_SUCCESS + zero-length) through server_verify, so the contract is\nverified against the Rust/Java/.NET servers, not just in-process C. The\ngeneric --codegen/--xlang-hash sweeps clamp every lookback below nbBars, so\nperiod>data was the one boundary never cross-checked. Non-vacuity guard +\n84 cases x 4 langs; sabotage-proven both ways.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "test(regtest): cross-check period>input empty-output vs language serv…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T18:01:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7bf49d271bf3ba1165dd8de360216f0d20f3fa21",
          "body": "…s (#93)\n\nThe MA page also notes that DISABLED bypasses smoothing for any period.",
          "is_bot": false,
          "headline": "docs(functions): list TA_MAType_DISABLED in per-function MAType table…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T16:57:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7566c9f4fed9bc97435fe09fa2f5a860f1085dc3",
          "body": "New TA_MAType value that makes the moving average a plain input->output copy\nwith a lookback of 0, regardless of the period parameter. Every function that\ntakes an MAType parameter (MA, MAVP, BBANDS, MACDEXT, STOCH/STOCHF/STOCHRSI,\nAPO/PPO/PVO) accepts it: they all route the copy through the single \n[…]\nISABLED swept everywhere: four-variant parity\n(guarded/unguarded/TA_S_), batch==stream (stream_verify), and bit-identical\nC/Rust/Java (--xlang-hash); the frozen-oracle differential sweep is unchanged.",
          "is_bot": false,
          "headline": "feat(ma): TA_MAType_DISABLED — period-independent no-smoothing (#93)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T16:57:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "39aac3bd8822a9b5fa77f2d91468472fe13ced7c",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T07:40:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6cf93e43b1a5dc7c0516eb54455ef27f940322f",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T07:31:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b8b7c4596b7909fcce573ba31ef97a61c240823",
          "body": "Several period-scaled integer expressions were evaluated in int32 before\nbeing stored to a double, overflowing (signed UB) well inside the advertised\n[.,100000] period range:\n\n- WMA/HMA  divider = (n*(n+1))>>1  -- the int product overflows at n>=46341\n  (the issue's 65536 is only where the post-shif\n[…]\ne build folds the overflow to the correct value (the optimizer is\n  entitled to assume no signed overflow), so the value check there is\n  coherence-only.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(wma,hma,linearreg): compute period-scaled dividers in double (#142)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T04:28:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "81d9d54b879c38ab955194b40db181f00f6591a1",
          "body": "Adding TA_MAType_HMA (#139) surfaced four places the MAType enum was still\nhand-maintained even though enums.yaml is the source of truth. All four now\nderive from enums.yaml:\n\n- include/ta_defs.h: moved the TA_MAType enum inside GENCODE SECTION 1 (a\n  one-time marker edit) and emit it from enums.yam\n[…]\nd; no\nindicator-source drift). Gates: 303 generator tests + clippy; C reference\nregtest (four-variant bitwise parity); all 4 servers built; cross-language\n--codegen-only 161/161 x 4 languages, 0 fail.",
          "is_bot": false,
          "headline": "refactor(codegen): ta_codegen owns every MAType enum surface (#140)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T03:29:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "22924cdb7856fe68bb811984f4d3eb3b959a7618",
          "body": "The flag never meant the \"start-dependent\" umbrella its name implied. An\nunstable-period function is *also* start-dependent (its warm-up depends on\nwhere the data begins) yet is deliberately NOT flagged, because it converges;\nthe flag marks only the set that never converges -- running accumulations\n\n[…]\nkeys;\nfull generator suite (611); C build + reference regtest (path-dependent set\nstill skipped correctly); all 4 language servers built; cross-language\n--codegen-only (161/161 x 4 languages, 0 fail).",
          "is_bot": false,
          "headline": "refactor(abstract): rename TA_FUNC_FLG_START_DEP -> TA_FUNC_FLG_PATH_DEP",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T02:35:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "180ec2fd99987441763044bff0b762bd505a9ac1",
          "body": "Add a generated `## Properties` table to every function page\n(backends/docs_site.rs, injected before `## Implementation`), surfacing the\nabstract-layer flags that were previously invisible in the docs:\n\n- Numerical Stability column: a single-select of three mutually-exclusive\n  states folded from tw\n[…]\nstability logic reads both `path_dependent` and the current\n`start_dependent` YAML word, so the generated pages are byte-stable across\nthe pending TA_FUNC_FLG_START_DEP -> TA_FUNC_FLG_PATH_DEP rename.",
          "is_bot": false,
          "headline": "docs(website): per-function Properties table (stability + display flags)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T02:15:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "32f69a58dd2564596629bb3f3a9977ee5ae519c8",
          "body": "Flip hma.yaml to [overlap, stream]. Recognition was already unlocked by\n#139's param-pure dual-mode split (optInTimePeriod == 2 || == 3): the\nanalyzer derives a full dual-mode plan -- mode A (degenerate, T3 input-ring\nonly) and mode B (general: two input rings + the sqrt(n)-1 dRing CIRCBUF).\nThe sol\n[…]\nC dualmode modeA=T3/state=5 modeB=T3/state=19. The abstract\nsurface carries TA_FUNC_FLG_STREAM; servers and the stream bench\nregenerated (ta_bench_stream: HMA update ~8ns, ~4x faster than batch@last).",
          "is_bot": false,
          "headline": "feat(hma): stream support via dual-mode per-arm buffer union (#141)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-23T23:07:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "728f8130c65edb21dfbadbd831b1feeaa9b085b6",
          "body": "HMA(n) = WMA(2*WMA(price,n/2) - WMA(price,n), sqrt(n)), both derived\nperiods TRUNCATED per Alan Hull's own Integer() (Tulip and pandas-ta agree;\nStockCharts rounds -- a visibly different line, documented in hma.md and\npinned by n=7/8 convention tests). Default 20 is the author's, and a period\nwhere \n[…]\n, #141\n(streaming: recognition unlocked, per-arm buffer union in the stream\nemitters remains), #142 (pre-existing WMA divider int overflow at\np >= 65536, inherited deliberately for bit-compatibility).",
          "is_bot": false,
          "headline": "feat(hma): Hull Moving Average + TA_MAType_HMA, fused single-pass (#139)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-23T16:34:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fed29d3e4d2b24cc123be14d652d16121e86a1c7",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-23T07:40:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f551684f8ee46e1f4afb6be4854300ae27a95a9",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-23T07:33:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80b70d156ce55b4044f0137007308242826628d0",
          "body": "…' term\n\nIntro paragraphs described the batch API first; now purpose -> mechanism ->\nguarantee, with batch as the closing contrast. Replace 'handle' with\n'stream' throughout (matches the actual type, e.g. TA_SMA_Stream) on the\nC, Rust and Java pages; fix a stale '*s is NULL' comment in the C example.",
          "is_bot": false,
          "headline": "docs(website): streaming intros lead with streaming; unify on 'stream…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-23T00:41:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7eb5bca6e81747f4f3968cde2cae2e5402491a1e",
          "body": "…129)\n\nBoth ids were accepted by TA_SetUnstablePeriod() but never read by any\ncomputation (0 reads at v0.6.4 and reference-pre-cutover): ADXR and\nSTOCHRSI follow the unstable period of their internal ADX and RSI. Renamed\nto TA_FUNC_UNST_UNUSED_1 / _UNUSED_22 with values preserved (the MFI/IMI\npreced\n[…]\ne two ids everywhere; the website\nunstable-period list falls to 20 entries automatically.\n\nOutput is bit-identical by construction (fuzz-064 green); full --codegen\nsweep 161 funcs x 4 languages green.",
          "is_bot": false,
          "headline": "fix(api): retire inert TA_FUNC_UNST_ADXR and TA_FUNC_UNST_STOCHRSI (#…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T19:39:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0586205b88ef9639e97e20e88b82d66fd23a3867",
          "body": "The FuncUnstId emitter (ta_defs.rs) drops the gen_code-era /* NNN */\ncomment format and writes TA_MAType-style explicit initializers, asserting\nvalues are contiguous from 0 (Java/Rust backends index by declaration\norder). Same treatment hand-applied to TA_RetCode, TA_Compatibility,\nTA_RangeType and TA_CandleSettingType. Values unchanged; no ABI change.\nAlso documents TA_Compatibility as deprecated.",
          "is_bot": false,
          "headline": "refactor(include): explicit = N values for every ta_defs.h enum",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T19:39:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df28ca3750ad90776c841a968c98fbae271fd840",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-22T07:44:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a70c72c0df9e8feaaac7d465aa20abfc9ae7e10",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-22T07:35:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d784e9f2a1a39dc4a30a38307548ffcc58ffcac8",
          "body": "The 0.8.1 entry scoped NATR to startIdx > lookback; the zero-close\noutReal[0] gap also hits ordinary full-range calls (ta-lib-python#653).\nSplit the IMI unstable-period note onto its own line.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(changelog): #98 NATR zero-close gap affects full-range calls too",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T01:43:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9bf176fc25a0fabbfe034488bf4c0fc99a62a6b7",
          "body": "TA_REALBODY/TA_UPPERSHADOW/TA_LOWERSHADOW/TA_HIGHLOWRANGE in ta_utility.h read\ntheir input arrays with no cast. In a TA_S_CDL* body those arrays are const\nfloat[], so TA_CANDLERANGE/TA_CANDLEAVERAGE compute the range in float and round\nbefore it widens into the double accumulator -- breaking PR #33'\n[…]\nregtest so the autotools dist nightly covers it.\n\nVerified: bare ./ta_regtest (VARIANT gate 167 funcs x 31104 vectors bit-identical\n+ new test green); fuzz-064 PASS, 0 failures.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "fix(ta_func): compute candle range in double inside TA_S_ bodies (#138)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T00:07:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "99826e3ac839576712de5ddd936220d5af0842f0",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T23:33:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10672914575e89c43d1b2b5c19ad30cd9bdc2439",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T23:26:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf376135e2dbc784de722ad00e154e1d4d191564",
          "body": "…tops reading garbage\n\nThe new VARIANT gate's build_regime() is the first code to read\nTA_History.openInterest and trusts the struct's \"unused arrays are NULL\"\ncontract, but testTAFunction_ALL and test_codegen_with_simulator never set the\nfield (the fuzz histories already do). On Linux the stack slo\n[…]\n see\nuninitialized reads): the poison build SIGSEGVs at test_variants.c:368 and passes\nclean with the initializer. Harness only; no library code changes.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ta_regtest): NULL-init history.openInterest so the variant gate s…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T23:18:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "190aaf1e420821bbf4a9e113a11ab5ac064c532c",
          "body": "…every slot (#137)\n\nvariant_frame::flat_inputs classified inputs by matching ParamType::Price -- an\narm that never fires, because parser::yaml expands a price bundle into Real\ninputs long before any backend sees it. Every price component therefore fell\nthrough to the Real arm and was emitted as TA_V\n[…]\nippy --all-targets clean, ta_regtest --codegen green across\nall four languages, and the full variant sweep (167 functions x 31104 vectors)\nbit-identical on the corrected inputs.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "fix(ta_regtest): feed the variant gate real OHLC bars, not volume in …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T21:41:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0fac748036faa096ea38df696ad1a33e74836f99",
          "body": "…the price bundle (#135)\n\nA price bar is declared once and used two ways. `ta_abstract` describes it as a\nsingle TA_Input_Price parameter named `inPriceHLC` whose flags word names the\ncomponents; the functions themselves take one array per component --\nTA_STOCH(startIdx, endIdx, inHigh, inLow, inClo\n[…]\n--codegen green across all four languages\n(including test_abstract's paramName comparison), 338 doctests, cargo doc\nwarning-free, and a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(ta_codegen): document the arrays a function is called with, not …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T21:21:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "08e4e5172ea2f20ad01378bd3a198ead5eca40ae",
          "body": "The clippy gate is a hard CI step and variant_frame.rs landed in 7359f7ad\nwithout ever being run through it -- I built and tested the generator but not\n`cargo clippy --all-targets -- -D warnings`, so 7 pedantic errors reached dev.\n\nReal fixes:\n- map(...).unwrap_or(...) -> map_or(...)\n- `n - 1` as a \n[…]\nentical, so no downstream artifact\nmoves. Verified: both clippy steps clean, generator tests, the generated\ncrate's 338 doctests, and a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "fix(ta_codegen): satisfy clippy pedantic in variant_frame (#137)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T20:42:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7359f7ad95676d28ed24b917a6ee4883791243e6",
          "body": "…period 1 (#137)\n\nEvery function ships four times over -- TA_<N>, TA_<N>_Unguarded, TA_S_<N> and\nTA_S_<N>_Unguarded -- and nothing gated three of them generically. #137 reported\nthis for the six post-cutover functions the frozen-reference sweep skips; the\nhole is wider than that, and was demonstrate\n[…]\n; --codegen all four languages; --xlang-hash\n(192942 cases, 0 mismatches); ASan+UBSan clean; -Wall -Wextra clean;\ncheck-source-lists; a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "test(regtest): bitwise four-variant parity gate, and fix TA_S_WMA at …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T20:17:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ab484ccbd3fd7d18eeb35bafafa9426bbc1d46cd",
          "body": "CMF landed as the 167th streamable function without updating the ratchet,\nso the dev nightly's generator-test job has been failing since 48e0170d.\nThe paired `emitted == total` assertion was already green — every\nstreamable function does emit its Java stream section.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(java): bump the stream emit ratchet to 167 for CMF (#134)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T18:57:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "519311abc6d170b5e9f9f6a8a50ed42f5d141dc6",
          "body": "The example bars put close at the exact midpoint of high/low, so the\nmoney-flow multiplier was identically zero and the AD/ADOSC/CMF doctests\ncould not fail. Measured over all 167 doctests: 62 produced an output that\nno implementation error could change (52 CDL all-zero, AD/ADOSC/CMF\nall-zero, ACOS/\n[…]\necuted them.\n\nThe generated diff is rustdoc comments only -- no library code changes.\n338 doctests pass; sabotaging CMF's divisor makes its doctest fail.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(rust): make the generated doctests able to fail (#136)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T18:44:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d661b9ae084709184c5b3ad76d776e6961a4b442",
          "body": "…en/input\n\nReworks the previous commit's hint into the generator's own idiom and extends\nit past MIN/MAX, then narrows it to the targets where it was measured to pay.\n\n- New Statement::UnrollHint IR node. `TA_UNROLL(n)` is written once per loop in\n  ta_codegen/input/<f>/<f>.c, so the source of truth\n[…]\n frozen-reference codegen\nverification passes for all 4 languages / 161 functions, and the generated\nRust/Java/.NET sources are byte-identical to before.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(minmax): express the rescan unroll as TA_UNROLL(n) from ta_codeg…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T17:19:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0365a69a37f5faaf2e3190881774c9ff7670c29e",
          "body": "Brings in dexhunter's original work so the contribution stays in the history.\nThe follow-up commit reworks the hint into the generator's TA_UNROLL(n) idiom,\nextends it to the other rescan functions, and restricts it to the compilers\nwhere it was measured to pay.",
          "is_bot": false,
          "headline": "Merge PR #128: unroll the expired-extreme rescans in MIN/MAX",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T17:11:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "48e0170d4c41ff8abd916b3826667d2a4b2b31de",
          "body": "The n-bar sum of Chaikin's money flow volume over the n-bar sum of volume.\nGroup Volume Indicators, default period 20, lookback n-1, streamable.\n\nThe per-bar multiplier is written exactly as ta_AD.c's, deliberately. Tulip's\norder, (v*num)/den, would instead make our output bit-identical to that orac\n[…]\nMF examples are all-zero and cannot fail) and #137\n(post-cutover functions reach no *_Unguarded or TA_S_* variant -- three\nsabotages of TA_S_CMF passed the entire suite before test_cmf.c was widened).",
          "is_bot": false,
          "headline": "feat(cmf): Chaikin Money Flow (#134)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T16:52:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "65e49d72ab77aa830e14e0c6d48e51296be09edd",
          "body": "The earlier approach fast-pathed monotonic windows, which are atypical in normal TA-Lib input. This targets the common random-walk case instead without changing the algorithm or adding work to the per-sample tight loop.\n\nMIN and MAX already cache the current extreme and rescan only when it expires. \n[…]\n ASan plus UBSan, generator tests, clippy, and idempotent regeneration. Wall-clock samples were inconclusive and are not claimed.\n\nFixes TA-Lib/ta-lib-python#715\n\nCo-Authored-By: Aiden <aiden@weco.ai>",
          "is_bot": false,
          "headline": "perf(minmax): unroll expired-extreme rescans",
          "author_name": "Dex Hunter",
          "author_login": "dexhunter",
          "committed_at": "2026-07-21T11:29:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cae231d8f0764c92d8ba7712d0c46a017cf1a117",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T07:40:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba3f8a516e8350a6cd35f9e538ec83ce86f39f9e",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T07:34:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb8bf53aec1796833d749fe0ca2691a50737b41b",
          "body": "escape_prose escaped every `[` outside a code span, which is right for prose\nlike inReal[i] but also mangled real markdown links, stranding the URL as plain\ntext. The shipped crate rendered a literal\n\n  \\[TradingView](https://www.tradingview.com/...)\n\nand the dangling URL tripped rustdoc's bare_urls\n[…]\neral text into a live broken link. Site-absolute destinations are\nrebased onto https://ta-lib.org/.\n\nVerified in the rendered HTML rather than by warning count — a silenced lint is\nnot a working link.",
          "is_bot": false,
          "headline": "fix(rustdoc): keep genuine inline links intact in the generated docs",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T05:31:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "09888183369784ab9f32d8a96a9fba4609589529",
          "body": "A generated page described what each parameter meant but never what values it\naccepted: 0 of 166 showed a default or a range, and the reader had to open the\nYAML. docs/ta_codegen_input_doc.md has always specified the split — numbers live\nin <name>.yaml and are injected at render — but only the prohi\n[…]\ndles\ninto inHigh/inLow/inClose, so the authored `inPriceHLC` has nothing to join\nagainst; carrying the bundle on FuncDef is the prerequisite and is left for the\nfollow-on, recorded in the status note.",
          "is_bot": false,
          "headline": "feat(docs): inject the YAML parameter metadata at render time (#132)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T05:31:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "df6f59ec1676e044f92c9c2b192aa50e14f9aa8e",
          "body": "VWMA (#131) added the 166th stream-flagged function without touching the\npin, so the suite has been red since 5e50d7f4. The count is deliberately\nhand-maintained, and this is the deliberate update.",
          "is_bot": false,
          "headline": "test(java): move the stream emit ratchet to 166",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T05:30:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eaf3a1f64515f5b7555ce6deb07e56d3358413ed",
          "body": "…d oracle\n\nThey were skipped at FUNCTION level for #118, so all three had zero differential\ncoverage vs 0.6.4 -- and the summary reported that as '3 case(s)', understating a\n~3000-comparison gap by three orders of magnitude.\n\nThe exclusion is only justified where 0.6.4's cancelling E[x^2]-mean^2 for\n[…]\nannot:\nit restores agreement with 0.6.4. That direction stays pinned by test_stddev.c\nand the BBANDS stable-variance test.\n\nAlso corrects the stochrsi-skipped label, which counts functions, not cases.",
          "is_bot": false,
          "headline": "test(fuzz-064): compare VAR/STDDEV/BBANDS where 0.6.4 is still a vali…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T03:36:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cec94326f32b0dc02d17dd206f704abeafed59d6",
          "body": "Bollinger specifies 20 periods / 2 standard deviations. The 5 came from\nTA_DEF_UI_TimePeriod_5_MINIMUM2, a generic descriptor shared with STDDEV/VAR/\nBETA/T3, never a decision about Bollinger Bands -- the deviation defaults (2.0)\nand MA type (SMA) were set correctly from the same recommendation, and\n[…]\nr changes only for callers relying on the abstract-layer\ndefault. Gates green: ta_regtest, --codegen 161/161 x3, --xlang-hash 0\nmismatches, fuzz-064 0 failures (BBANDS already excluded there by #118).",
          "is_bot": false,
          "headline": "fix(bbands): default optInTimePeriod 5 -> 20 (#133)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:55:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fae2c79c4467b82ce2be32b382d97bc3782e215c",
          "body": null,
          "is_bot": false,
          "headline": "docs(vwma): drop the cross-implementation default note",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:31:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4be71d3aa8ac755c3a028c384b445805e30c2e4e",
          "body": "… inReal\n\nThe unconditional staging buffer from 3f2f804e cost ~21% at 100k bars (the\nonly real MAVP slowdown in history — a fixed-flag bisect across ten commits\nfrom reference-pre-cutover shows everything else flat and bit-identical; the\nta_bench \"+11% vs cref\" that prompted the audit was mean-of-50\n[…]\n BBANDS' tempBuffer guard.\n\nInterleaved bench: conditional == pre-#130 baseline. In-place path stays\nbitwise-correct (193-pair gate, ASan); MAVP green on all four languages\nincl. stream + OpenAndFill.",
          "is_bot": false,
          "headline": "perf(mavp): stage the #130 in-place defence only when outReal aliases…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:25:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d72e41571d8ef090ef739f194fbc50da8e3e9ed6",
          "body": "It also fed the page description and the rustdoc.",
          "is_bot": false,
          "headline": "docs(vwma): drop the VWAP contrast from the summary",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:14:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cad531db586b08296c8645dab06e4032e27e8d2e",
          "body": "Sabotage-proven: reintroducing a guard that returns 0.0 fails this leg and\nnothing else. Also trims the flat-price comment -- agreement there is to a few\nULP in every implementation (pandas-ta 9.1e-12, Tulip 6.5e-11, ours 8.0e-11),\nso it needed a measurement, not an essay.",
          "is_bot": false,
          "headline": "test(vwma): pin the documented NaN on an all-zero-volume window (#131)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:46:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "582db41e05d52a1e82556b42d5c3769a015a3b61",
          "body": "Closes the gap between what #131's verification plan claimed and what was\nactually implemented.\n\n- Tulip Indicators 0.9.2 checked-in vectors as deterministic small cases:\n  tests/extra.txt:320 (vwma 4) and tests/untest.txt:466 (vwma 5). Only extra.txt\n  is independently derived -- its header says th\n[…]\n were re-verified live against pandas-ta-classic 0.6.52\n(max rel 4.739e-16) and cross-checked against the Tulip server (max rel\n4.739e-16) -- they are genuinely externally derived, not self-generated.",
          "is_bot": false,
          "headline": "test(vwma): add the second oracle and the flat-price case (#131)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:46:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5e50d7f4b428b01e6fd4a026489c905ff87d5431",
          "body": "Sum(P*V)/Sum(V) over a trailing window. Overlap Studies, inReal + volume\n(the OBV input shape, so a source other than close is expressible), lookback\nperiod-1, streaming from day one.\n\nKeeps the redundant /n on both sums and mirrors TA_SMA's add-new / snapshot /\nsubtract-old order, which makes it BI\n[…]\nr. abstract_volume_view() keys off the existing\nTA_IN_PRICE_VOLUME flag and is applied to both the in-process call and the JSON\nrequest so the two sides cannot diverge. Benefits every volume function.",
          "is_bot": false,
          "headline": "feat(vwma): Volume Weighted Moving Average (#131)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:46:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3f2f804e21348022a0b1105fed16280deb3c93b5",
          "body": "…functions (#130)\n\nReusing an input buffer as one of the outputs is a documented guarantee\n(\"All TA functions support this\") but returned TA_SUCCESS with wrong values:\n\n- LINEARREG/_ANGLE/_SLOPE/_INTERCEPT/TSF: the O(1) sliding recurrence read\n  the departing value after the priming write clobbered \n[…]\n path. Red on exactly the 8 functions before the fix.\n\nASan/UBSan green, --codegen 161/161 x4 languages, stream 14840 legs\nbit-exact, OpenAndFill bitwise, fuzz-064 0 failures, xlang-hash 0 mismatches.",
          "is_bot": false,
          "headline": "fix(func): in-place (input==output) calls returned wrong values in 8 …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:20:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2af1dca199ef0e7b29892349f47596480cf710e3",
          "body": "…ance trap\n\nGroundwork for the new-indicator wave (board proposals #21-#48). Each of these\nwould have let a future function ship with a gate that looked green while\ntesting nothing.\n\n- checkOracleValue(): shared |got-want| <= absTol + relTol*|want| comparison for\n  external-oracle golden values, rep\n[…]\nual 165; count them with TA_ForEachFunc instead.\n\nAll three sabotage-proven: the perturbed golden, the flipped cap and the\nmutated count each turn the run red, and the run is green with them restored.",
          "is_bot": false,
          "headline": "test(regtest): close three gate-vacuity holes + a zero-crossing toler…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T21:19:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b0c8ff23809a5fa6830b634cee498136e7e09216",
          "body": "Updates the four generator-side header sources (c.rs, rust_lang.rs,\nta_abstract_c.rs, ta_retcode.c.template) plus the hand-written headers;\nalso brings the 43 legacy Java files forward from 1999-2006/2007.",
          "is_bot": false,
          "headline": "chore: bump BSD license copyright year to 2026",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T19:18:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38148302ad5d89e3e9b6cb4260e37f83bb406274",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T18:20:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f3404024ad0deec520feb58983b41b35258880e",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T18:13:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46a1bce48ef6c0961c2e3b0493a240ac0167abc6",
          "body": "Rust and Java never ship a way to select a compatibility variant: the enum is\ncrate-internal/package-private, the setter and getter are gone, and the private\nfield stays pinned to Default. The variant branches in the generated indicators\nare dead code pending their removal. C keeps the deprecated TA\n[…]\nsabotage-proven: perturbing the Metastock seeding in CMO fails\nthe compat=1 leg.\n\nMetastock notes dropped from the EMA/RSI/MACD/CMO pages, the crate docs/README\nand the rust/java/stream website pages.",
          "is_bot": false,
          "headline": "refactor(rust,java): drop the public compatibility (Metastock) API",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T17:54:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "75318b7e0e7f0f790825c9ca33a756690e54a2b9",
          "body": "Audited every open/deferred item in docs/canonical-cutover-runbook.md\nagainst dev, main and v0.7.1: all complete. Stage 6-B (the one stage\nwithout a DONE marker) was delivered by PR #92 + 97e9f89a; the XML\nNUL-termination and large-period gaps are fixed; the server_verify and\ntag-portability deferra\n[…]\ncation-runbook.md section 4\n\nAlso drops the two pointers into the deleted file and a now-false\nNVI/PVI comment in backends/mod.rs.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: delete the canonical-cutover runbook (cutover shipped in 0.7.1)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T17:21:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "80411e03301ce609aea5d4e48ce20b532d8f9c6d",
          "body": null,
          "is_bot": false,
          "headline": "docs(changelog): 0.8.1 entry updates + deprecate TA_SetCompatibility",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T15:00:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7a528a00ada4629481c26e8563ddc23146d8be2",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T08:05:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7842d1cd3699d1b53a094f268652a6207a0ac75",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T07:58:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c99845aec0e53c6fdd3a503fea7300ea0cdb9d23",
          "body": "… on the C API page\n\n4.3: TA_S_ is a prefix, not a suffix; fix plurals and \"allows to digest\";\nstate the guarantee precisely (same output, bit-for-bit — verified by the\nregression gates); align the two signature blocks.\n\n4.4: fix grammar throughout (linked against, thread-safe, single-threaded,\n\"prior to exit\"); mirror 3.1's TA_Shutdown wording.\n\n3.0: \"declared in headers in include/*.h\" -> \"in the include/*.h headers\".",
          "is_bot": false,
          "headline": "docs(website): copyedit float-vs-double (4.3) + multi-threading (4.4)…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T01:56:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9d5e75faf510b8b5b2d5a2242be29a7a5a24511",
          "body": "…le period intro (4.2)\n\n4.1: drop the duplicated \"at runtime\"; replace \"without knowing it a\npriori\" with the concrete claim (call a function whose signature was\nunknown at compile time).\n\n4.2: reword around the actual phenomenon — recursive functions' first\noutputs depend on the starting point, an effect that decays until the\noutput is stable — instead of the \"function having memories\" framing.\nFixes the grammar errors and links the two API calls to the #api anchor.",
          "is_bot": false,
          "headline": "docs(website): copyedit abstraction-layer tail (4.1) + rewrite unstab…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T01:32:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4822d6c33a90ce2beac170c6146aab000e99f638",
          "body": "…n the C API page\n\n3.3: fix grammar in the intro and lookback paragraphs, scope the Range\nMatching waste example to startIdx=0, and state the Exact Allocation pro\nas its result.\n\n4.1: the opener implied by-name calling is what direct calls do — it is\nwhat ta_abstract enables; reword to hard-coded vs runtime lookup. Lead the\nuse-case list with wrapper generation, make the charting-app bullet\nconcrete, and point the closing off-ramp at both batch and streaming.",
          "is_bot": false,
          "headline": "docs(website): copyedit Output Size (3.3) + abstraction layer (4.1) o…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T01:10:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0e2aeaead7c0bece1606e56d1c0f4e45059fc6a",
          "body": "…PI page\n\nFix grammar and simplify wording throughout: the calling-pattern intro and\nits four parameter-group bullets, both TA_MA examples and their result\nexplanations, the single-bar EMA example, and the in-place buffer notes.\n\nAlso fix a wrong value in the range example: with startIdx=125 and\nendIdx=225, outNbElement is 101, not 100 — endIdx is inclusive (now stated\nexplicitly). Verified against the compiled library.",
          "is_bot": false,
          "headline": "docs(website): copyedit the batch-processing section (3.2) of the C A…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T00:49:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f38e132f6531f8e1bbf8135cacb6c0910e2ca8f6",
          "body": "…sources\n\nThe pre-cutover generators re-preprocessed the C source with _MANAGED /\n_JAVA / _RUST defined; all bindings are now generated natively by\nta_codegen, so only the plain-C branch was ever compiled. Remove the dead\narms and the macro scaffolding:\n\n- ta_defs.h: plain `typedef enum` for all six\n[…]\n for the frozen\n  reference-pre-cutover tag.\n\nPreprocessed output is token-identical (gcc -E diff), regtest passes\n161 functions x 4 languages against the frozen reference, and generate\nis idempotent.",
          "is_bot": false,
          "headline": "refactor: drop the dead multi-language preprocessor layer from the C …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T21:02:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a7892a23601b14673f32548c134c122ad158bc38",
          "body": "Intro: drop the \"Part of the C/C++ Core API\" breadcrumb so the page can later\ncover the Rust/Java bindings too, and say plainly that \"unstable period\" names\na setting rather than the problem it addresses.\n\nAPI section: \"family of functions\" was wrong -- each TA_FuncUnstId value maps\nto exactly one f\n[…]\n, ...) as a\ncaller would write them, instead of bare suffixes with the prefix explained in\nthe lead-in.\n\nAlso drop \"in principle\" and the last use of \"transient\", a term used nowhere\nelse on the page.",
          "is_bot": false,
          "headline": "docs(website): unstable period — clarify the API section, list the C ids",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T17:41:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c3fc0a5acb4d84a2ac625f5ef5d9e8014bfc7041",
          "body": "…te pages\n\nThe unstable-period page listed the 22 TA_FuncUnstId functions by hand, so it\ncould silently drift from the enum it documents. Generate that list instead.\n\nNew backend docs_patch.rs, a sibling to docs_site.rs. The split is deliberate:\ndocs_site OWNS whole files under website/src/functions\n[…]\n3) and reverts cleanly; deleting a\nmarker panics with the marker name; a full generate on a clean tree produces no\nother churn; a production VuePress build renders the region with no visible\nartifact.",
          "is_bot": false,
          "headline": "feat(generator): maintain generated regions inside hand-written websi…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T16:28:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dc129b3f1512044527a3112942d795122be84720",
          "body": "Explain in \"Why it exists\" that the warm-up distortion is inherent to the\nalgorithms rather than specific to TA-Lib: every implementation has to seed\nthe recursion somewhere. What TA-Lib adds is the ability to scrub those\nearly values on every function call.\n\nAdd \"What to do\" enumerating the three d\n[…]\nFUNC_UNST_ADX`, `ADXR`, ...) and so read as a typo. State the\nprefix once in the lead-in and list every name bare. The 22 names were\nverified to match the FuncUnstId enum in include/ta_defs.h exactly.",
          "is_bot": false,
          "headline": "docs(website): unstable period — add a \"What to do\" section",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T15:43:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cecaaf303b7762c8d4426d1fbe6edbab7381a8d9",
          "body": "vuepress-theme-hope renders a single `.vp-toc-placeholder` and repositions\nit by breakpoint: at >= $pc (1440px) `#toc` is absolutely placed as the\nright-hand rail, below that it collapses into a box above the content. The\ntheme leaves the placeholder `position: sticky` at every width, so on\nnarrower\n[…]\noutrank the theme: its toc.scss is imported by the TOC\ncomponent, so its injection order relative to this file differs between dev\nand build; equal specificity would make the override order-dependent.",
          "is_bot": false,
          "headline": "fix(website): stop \"On this page\" floating over the content",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T15:43:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "39c583f1777a52a3a3d4a45af4d715f2f5317cab",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T04:46:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2582d647d3c856e9ce6c689dfc1e730af08fe8c7",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T04:38:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3dc5c125fda3be250a95ae06116d55a484fe3a8",
          "body": "Core page: rename 3.0 to 'Calling into TA-Lib'; add a 3.1 'Initialize and\nShutdown' section (TA_Initialize/TA_Shutdown) before batch processing; move\nthe 'all public functions in ta_func.h' pointer under the 3.0 title; rename\n'direct call' to 'batch processing' consistently (the direct-vs-abstractio\n[…]\n Core\npage as a section instead of a separate page).\n\nDeprecate TA_SetCompatibility: undocumented on the site and marked deprecated\nin include/ta_func.h (via the generator source in ta_abstract_c.rs).",
          "is_bot": false,
          "headline": "docs(website): C API restructure + deprecate TA_SetCompatibility",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T04:32:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d2807ae256a5a63cea9ff5d294b7edc6b426f8d",
          "body": "Split the language docs into independent pages — Rust Core API, Rust\nStreaming API, Java Core API, Java Streaming API — each headed by a\n'Not yet released — estimated Q1 2027' banner. The C/C++ Streaming page\nis now C-only (the Rust and Java sections that had accreted onto it are\nremoved). Sidebar regrouped into collapsible C/C++, Rust, and Java API\ngroups. Every code example was fact-checked against the generated\nRust/Java source.",
          "is_bot": false,
          "headline": "docs(website): per-language API pages (Rust/Java Core + Streaming)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T23:08:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "239dcb7782bb3af43ca1b8c12994288f52fddb41",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-18T21:42:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d9f24356ac27d2c6841dec016e8c330b49e4af7",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-18T21:38:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "352b6ff75ef961bbfd9ea8a8cecdff3601d2f506",
          "body": "…ool_assert_comparison\n\nThe dev-nightly clippy gate runs `--all-targets -D warnings`, which promotes\nthis warning to an error; use a plain assert! so the gate stays green.",
          "is_bot": false,
          "headline": "test(java-stream): assert! over assert_eq!(_, true) — clears clippy b…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T21:31:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a060db6f81d651032d68bb112242824b6c381245",
          "body": "# Conflicts:\n#\tta_codegen/generator/src/backends/ta_abstract_c.rs\n#\tta_codegen/generator/src/server_gen.rs",
          "is_bot": false,
          "headline": "Merge branch 'java-stream' into dev",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T21:22:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62e5e1e858e1d0934d89096ade417355b4c3290a",
          "body": "…elf-check live\n\ncargo clippy --lib: 0 errors, 0 warnings (dev's 4052b053 cherry-picked for the\nparallel pre-existing fixes; the rest were this branch's). Final gates: 580\ngenerator tests green; all-language ta_regtest --codegen green with the Java\nstream pass at 165 functions / 14840 bit-exact legs\n[…]\ne new stream-pass fuzz-port self-check reporting 9/9 shapes bit-identical\nfor both porting servers (Rust, Java). PrefixProbe confirms TA_MA/TA_MAVP\nrejects now carry their own stable message prefixes.",
          "is_bot": false,
          "headline": "fix(java-stream): clippy-clean generator, verified prefix fix, fuzz s…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T18:57:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c0b5a13b2fe57401a05c494e895a700dab6f568c",
          "body": "…er_gen.rs / c_stream.rs\n\nPre-existing clippy::pedantic failures surfaced by the dev nightly's clippy gate\n(introduced by the Rust streaming API commits 9706dc61/fa85c6f6, never clippy-checked\nbefore landing on dev). Fixes: single_match/single_match_else -> if/if-let, unused\nout_args, into_iter() ->\n[…]\nrgo test (267+224+... all green) and a full `generate --backend=rust`\nconfirm the generated output is byte-identical before/after.\n\n(cherry picked from commit 4052b0534ad761a8545f7c011f7cbd3e2fe5f7eb)",
          "is_bot": false,
          "headline": "fix(generator): clear clippy pedantic errors in rust_stream.rs / serv…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T18:52:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d216a3d2706d4614ab87f4eed65484daa1eeec8",
          "body": "…ning\n\nDispatch/period-bank opens precheck their OWN lookback before delegating, so\ninsufficient-history rejects always carry the caller's stable \"TA_<NAME>\nopen:\" prefix (previously a TA_MA short-history reject surfaced as\n\"TA_SMA open:\"). flag_sync: pre-add start_dependent (dev #127), panic on\nunp\n[…]\ncompiles fuzz_data.h directly). Dedup sv input-array maps and the\nper-tier base field lists; InsufficientHistoryException server copy moves to\na template file; build.xml gains the stream-smoke target.",
          "is_bot": false,
          "headline": "fix(java-stream): review findings — prefix-stable rejects, gate harde…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T18:51:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4052b0534ad761a8545f7c011f7cbd3e2fe5f7eb",
          "body": "…er_gen.rs / c_stream.rs\n\nPre-existing clippy::pedantic failures surfaced by the dev nightly's clippy gate\n(introduced by the Rust streaming API commits 9706dc61/fa85c6f6, never clippy-checked\nbefore landing on dev). Fixes: single_match/single_match_else -> if/if-let, unused\nout_args, into_iter() ->\n[…]\nems_after_test_module) to the end of the file.\n\nNo behavior change: cargo test (267+224+... all green) and a full `generate --backend=rust`\nconfirm the generated output is byte-identical before/after.",
          "is_bot": false,
          "headline": "fix(generator): clear clippy pedantic errors in rust_stream.rs / serv…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T15:48:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 6,
      "commits_last_year": 966,
      "latest_release_at": "2026-07-03T17:36:45Z",
      "latest_release_tag": "v0.7.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 19,
      "days_since_latest_release": 23,
      "mean_days_between_releases": 174.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 37,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 291,
      "stars": 1638,
      "watchers": 30,
      "fork_history": {
        "days": [
          {
            "date": "2016-12-22",
            "count": 1
          },
          {
            "date": "2017-01-06",
            "count": 1
          },
          {
            "date": "2017-08-22",
            "count": 1
          },
          {
            "date": "2018-01-27",
            "count": 1
          },
          {
            "date": "2018-03-11",
            "count": 1
          },
          {
            "date": "2018-03-12",
            "count": 1
          },
          {
            "date": "2018-08-28",
            "count": 1
          },
          {
            "date": "2018-09-18",
            "count": 1
          },
          {
            "date": "2018-10-04",
            "count": 1
          },
          {
            "date": "2019-01-04",
            "count": 1
          },
          {
            "date": "2019-02-24",
            "count": 1
          },
          {
            "date": "2019-12-04",
            "count": 1
          },
          {
            "date": "2020-06-15",
            "count": 1
          },
          {
            "date": "2020-11-17",
            "count": 1
          },
          {
            "date": "2020-11-19",
            "count": 1
          },
          {
            "date": "2021-01-10",
            "count": 1
          },
          {
            "date": "2021-02-03",
            "count": 1
          },
          {
            "date": "2021-02-15",
            "count": 1
          },
          {
            "date": "2021-04-25",
            "count": 1
          },
          {
            "date": "2021-05-08",
            "count": 1
          },
          {
            "date": "2021-10-13",
            "count": 1
          },
          {
            "date": "2022-01-25",
            "count": 1
          },
          {
            "date": "2022-04-29",
            "count": 1
          },
          {
            "date": "2022-06-28",
            "count": 1
          },
          {
            "date": "2022-07-09",
            "count": 1
          },
          {
            "date": "2023-01-16",
            "count": 1
          },
          {
            "date": "2023-02-03",
            "count": 1
          },
          {
            "date": "2023-02-13",
            "count": 1
          },
          {
            "date": "2023-02-17",
            "count": 1
          },
          {
            "date": "2023-02-28",
            "count": 1
          },
          {
            "date": "2023-03-06",
            "count": 1
          },
          {
            "date": "2023-03-08",
            "count": 1
          },
          {
            "date": "2023-03-29",
            "count": 1
          },
          {
            "date": "2023-04-09",
            "count": 1
          },
          {
            "date": "2023-04-10",
            "count": 1
          },
          {
            "date": "2023-04-17",
            "count": 1
          },
          {
            "date": "2023-05-06",
            "count": 1
          },
          {
            "date": "2023-05-27",
            "count": 1
          },
          {
            "date": "2023-05-28",
            "count": 1
          },
          {
            "date": "2023-06-07",
            "count": 1
          },
          {
            "date": "2023-06-23",
            "count": 1
          },
          {
            "date": "2023-07-01",
            "count": 1
          },
          {
            "date": "2023-07-09",
            "count": 1
          },
          {
            "date": "2023-07-16",
            "count": 1
          },
          {
            "date": "2023-08-09",
            "count": 1
          },
          {
            "date": "2023-08-16",
            "count": 1
          },
          {
            "date": "2023-08-20",
            "count": 1
          },
          {
            "date": "2023-08-25",
            "count": 1
          },
          {
            "date": "2023-09-22",
            "count": 1
          },
          {
            "date": "2023-09-28",
            "count": 1
          },
          {
            "date": "2023-10-07",
            "count": 1
          },
          {
            "date": "2023-10-18",
            "count": 2
          },
          {
            "date": "2023-10-22",
            "count": 1
          },
          {
            "date": "2023-10-30",
            "count": 1
          },
          {
            "date": "2023-11-18",
            "count": 1
          },
          {
            "date": "2023-11-20",
            "count": 1
          },
          {
            "date": "2023-11-26",
            "count": 1
          },
          {
            "date": "2023-11-27",
            "count": 1
          },
          {
            "date": "2023-11-29",
            "count": 2
          },
          {
            "date": "2023-12-14",
            "count": 1
          },
          {
            "date": "2023-12-17",
            "count": 1
          },
          {
            "date": "2023-12-22",
            "count": 1
          },
          {
            "date": "2023-12-25",
            "count": 2
          },
          {
            "date": "2023-12-26",
            "count": 1
          },
          {
            "date": "2024-01-02",
            "count": 1
          },
          {
            "date": "2024-01-10",
            "count": 1
          },
          {
            "date": "2024-01-14",
            "count": 1
          },
          {
            "date": "2024-01-15",
            "count": 1
          },
          {
            "date": "2024-01-22",
            "count": 1
          },
          {
            "date": "2024-02-02",
            "count": 2
          },
          {
            "date": "2024-02-10",
            "count": 1
          },
          {
            "date": "2024-02-12",
            "count": 2
          },
          {
            "date": "2024-02-18",
            "count": 1
          },
          {
            "date": "2024-03-01",
            "count": 1
          },
          {
            "date": "2024-03-11",
            "count": 1
          },
          {
            "date": "2024-03-16",
            "count": 1
          },
          {
            "date": "2024-03-23",
            "count": 1
          },
          {
            "date": "2024-03-24",
            "count": 1
          },
          {
            "date": "2024-03-25",
            "count": 1
          },
          {
            "date": "2024-03-28",
            "count": 2
          },
          {
            "date": "2024-03-29",
            "count": 1
          },
          {
            "date": "2024-03-30",
            "count": 1
          },
          {
            "date": "2024-04-16",
            "count": 1
          },
          {
            "date": "2024-04-21",
            "count": 2
          },
          {
            "date": "2024-04-27",
            "count": 1
          },
          {
            "date": "2024-04-28",
            "count": 1
          },
          {
            "date": "2024-05-01",
            "count": 2
          },
          {
            "date": "2024-05-02",
            "count": 1
          },
          {
            "date": "2024-05-05",
            "count": 1
          },
          {
            "date": "2024-05-14",
            "count": 1
          },
          {
            "date": "2024-05-20",
            "count": 1
          },
          {
            "date": "2024-05-22",
            "count": 1
          },
          {
            "date": "2024-05-23",
            "count": 1
          },
          {
            "date": "2024-05-24",
            "count": 1
          },
          {
            "date": "2024-05-27",
            "count": 2
          },
          {
            "date": "2024-05-29",
            "count": 1
          },
          {
            "date": "2024-05-30",
            "count": 1
          },
          {
            "date": "2024-06-07",
            "count": 1
          },
          {
            "date": "2024-06-08",
            "count": 1
          },
          {
            "date": "2024-06-15",
            "count": 1
          },
          {
            "date": "2024-06-20",
            "count": 1
          },
          {
            "date": "2024-06-28",
            "count": 2
          },
          {
            "date": "2024-07-05",
            "count": 1
          },
          {
            "date": "2024-07-21",
            "count": 1
          },
          {
            "date": "2024-08-02",
            "count": 1
          },
          {
            "date": "2024-08-10",
            "count": 1
          },
          {
            "date": "2024-08-14",
            "count": 1
          },
          {
            "date": "2024-08-15",
            "count": 1
          },
          {
            "date": "2024-08-17",
            "count": 1
          },
          {
            "date": "2024-08-18",
            "count": 1
          },
          {
            "date": "2024-08-19",
            "count": 1
          },
          {
            "date": "2024-08-22",
            "count": 1
          },
          {
            "date": "2024-08-23",
            "count": 1
          },
          {
            "date": "2024-08-25",
            "count": 1
          },
          {
            "date": "2024-09-10",
            "count": 1
          },
          {
            "date": "2024-09-15",
            "count": 1
          },
          {
            "date": "2024-09-23",
            "count": 1
          },
          {
            "date": "2024-09-26",
            "count": 1
          },
          {
            "date": "2024-09-27",
            "count": 1
          },
          {
            "date": "2024-09-30",
            "count": 1
          },
          {
            "date": "2024-10-08",
            "count": 1
          },
          {
            "date": "2024-10-09",
            "count": 1
          },
          {
            "date": "2024-10-12",
            "count": 1
          },
          {
            "date": "2024-10-18",
            "count": 1
          },
          {
            "date": "2024-10-22",
            "count": 1
          },
          {
            "date": "2024-10-25",
            "count": 1
          },
          {
            "date": "2024-10-28",
            "count": 1
          },
          {
            "date": "2024-11-13",
            "count": 1
          },
          {
            "date": "2024-11-14",
            "count": 1
          },
          {
            "date": "2024-11-17",
            "count": 1
          },
          {
            "date": "2024-11-20",
            "count": 2
          },
          {
            "date": "2024-11-29",
            "count": 1
          },
          {
            "date": "2024-12-02",
            "count": 1
          },
          {
            "date": "2024-12-07",
            "count": 1
          },
          {
            "date": "2024-12-19",
            "count": 1
          },
          {
            "date": "2024-12-23",
            "count": 1
          },
          {
            "date": "2024-12-26",
            "count": 1
          },
          {
            "date": "2024-12-28",
            "count": 2
          },
          {
            "date": "2024-12-29",
            "count": 1
          },
          {
            "date": "2025-01-03",
            "count": 1
          },
          {
            "date": "2025-01-06",
            "count": 1
          },
          {
            "date": "2025-01-08",
            "count": 1
          },
          {
            "date": "2025-01-12",
            "count": 1
          },
          {
            "date": "2025-01-17",
            "count": 2
          },
          {
            "date": "2025-01-18",
            "count": 1
          },
          {
            "date": "2025-01-23",
            "count": 1
          },
          {
            "date": "2025-01-25",
            "count": 1
          },
          {
            "date": "2025-02-01",
            "count": 1
          },
          {
            "date": "2025-02-05",
            "count": 2
          },
          {
            "date": "2025-02-08",
            "count": 2
          },
          {
            "date": "2025-02-15",
            "count": 1
          },
          {
            "date": "2025-02-22",
            "count": 1
          },
          {
            "date": "2025-03-03",
            "count": 1
          },
          {
            "date": "2025-03-09",
            "count": 1
          },
          {
            "date": "2025-03-13",
            "count": 1
          },
          {
            "date": "2025-03-14",
            "count": 1
          },
          {
            "date": "2025-03-19",
            "count": 1
          },
          {
            "date": "2025-03-20",
            "count": 1
          },
          {
            "date": "2025-03-21",
            "count": 1
          },
          {
            "date": "2025-03-23",
            "count": 1
          },
          {
            "date": "2025-03-26",
            "count": 1
          },
          {
            "date": "2025-03-28",
            "count": 1
          },
          {
            "date": "2025-03-29",
            "count": 1
          },
          {
            "date": "2025-04-01",
            "count": 1
          },
          {
            "date": "2025-04-02",
            "count": 1
          },
          {
            "date": "2025-04-03",
            "count": 1
          },
          {
            "date": "2025-04-05",
            "count": 1
          },
          {
            "date": "2025-04-09",
            "count": 1
          },
          {
            "date": "2025-04-13",
            "count": 1
          },
          {
            "date": "2025-04-14",
            "count": 1
          },
          {
            "date": "2025-04-20",
            "count": 1
          },
          {
            "date": "2025-04-22",
            "count": 1
          },
          {
            "date": "2025-04-24",
            "count": 1
          },
          {
            "date": "2025-04-27",
            "count": 1
          },
          {
            "date": "2025-05-02",
            "count": 1
          },
          {
            "date": "2025-05-04",
            "count": 1
          },
          {
            "date": "2025-05-15",
            "count": 1
          },
          {
            "date": "2025-05-19",
            "count": 3
          },
          {
            "date": "2025-05-28",
            "count": 1
          },
          {
            "date": "2025-05-30",
            "count": 1
          },
          {
            "date": "2025-06-03",
            "count": 1
          },
          {
            "date": "2025-06-09",
            "count": 1
          },
          {
            "date": "2025-06-10",
            "count": 1
          },
          {
            "date": "2025-06-14",
            "count": 1
          },
          {
            "date": "2025-06-16",
            "count": 1
          },
          {
            "date": "2025-06-17",
            "count": 1
          },
          {
            "date": "2025-06-20",
            "count": 1
          },
          {
            "date": "2025-06-21",
            "count": 2
          },
          {
            "date": "2025-06-22",
            "count": 1
          },
          {
            "date": "2025-06-29",
            "count": 1
          },
          {
            "date": "2025-07-02",
            "count": 1
          },
          {
            "date": "2025-07-04",
            "count": 1
          },
          {
            "date": "2025-07-06",
            "count": 1
          },
          {
            "date": "2025-07-09",
            "count": 1
          },
          {
            "date": "2025-07-14",
            "count": 1
          },
          {
            "date": "2025-07-18",
            "count": 1
          },
          {
            "date": "2025-07-20",
            "count": 1
          },
          {
            "date": "2025-07-23",
            "count": 1
          },
          {
            "date": "2025-07-28",
            "count": 1
          },
          {
            "date": "2025-07-30",
            "count": 1
          },
          {
            "date": "2025-08-03",
            "count": 1
          },
          {
            "date": "2025-08-12",
            "count": 1
          },
          {
            "date": "2025-08-13",
            "count": 1
          },
          {
            "date": "2025-08-14",
            "count": 1
          },
          {
            "date": "2025-08-15",
            "count": 2
          },
          {
            "date": "2025-08-18",
            "count": 1
          },
          {
            "date": "2025-08-20",
            "count": 1
          },
          {
            "date": "2025-08-23",
            "count": 1
          },
          {
            "date": "2025-08-27",
            "count": 1
          },
          {
            "date": "2025-08-31",
            "count": 1
          },
          {
            "date": "2025-09-18",
            "count": 1
          },
          {
            "date": "2025-09-26",
            "count": 1
          },
          {
            "date": "2025-09-28",
            "count": 1
          },
          {
            "date": "2025-10-02",
            "count": 1
          },
          {
            "date": "2025-10-04",
            "count": 1
          },
          {
            "date": "2025-10-11",
            "count": 1
          },
          {
            "date": "2025-10-14",
            "count": 1
          },
          {
            "date": "2025-10-19",
            "count": 2
          },
          {
            "date": "2025-10-21",
            "count": 2
          },
          {
            "date": "2025-10-24",
            "count": 1
          },
          {
            "date": "2025-10-25",
            "count": 1
          },
          {
            "date": "2025-10-30",
            "count": 1
          },
          {
            "date": "2025-11-08",
            "count": 1
          },
          {
            "date": "2025-11-11",
            "count": 2
          },
          {
            "date": "2025-11-14",
            "count": 1
          },
          {
            "date": "2025-11-17",
            "count": 1
          },
          {
            "date": "2025-11-24",
            "count": 2
          },
          {
            "date": "2025-11-27",
            "count": 1
          },
          {
            "date": "2025-12-03",
            "count": 1
          },
          {
            "date": "2025-12-05",
            "count": 2
          },
          {
            "date": "2025-12-09",
            "count": 2
          },
          {
            "date": "2025-12-16",
            "count": 1
          },
          {
            "date": "2025-12-24",
            "count": 1
          },
          {
            "date": "2025-12-25",
            "count": 1
          },
          {
            "date": "2025-12-27",
            "count": 1
          },
          {
            "date": "2026-01-03",
            "count": 1
          },
          {
            "date": "2026-01-13",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-01-25",
            "count": 1
          },
          {
            "date": "2026-02-10",
            "count": 1
          },
          {
            "date": "2026-02-12",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 1
          },
          {
            "date": "2026-03-14",
            "count": 1
          },
          {
            "date": "2026-04-10",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-04-29",
            "count": 1
          },
          {
            "date": "2026-05-08",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-06-01",
            "count": 1
          },
          {
            "date": "2026-06-02",
            "count": 2
          },
          {
            "date": "2026-06-05",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 1
          },
          {
            "date": "2026-06-19",
            "count": 1
          },
          {
            "date": "2026-06-21",
            "count": 1
          },
          {
            "date": "2026-06-26",
            "count": 1
          },
          {
            "date": "2026-06-30",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-09",
            "count": 2
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 1
          },
          {
            "date": "2026-07-18",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 291,
        "total_forks": 291
      },
      "star_history": null,
      "open_issues_and_prs": 8
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "ta_codegen/generator/Cargo.toml",
        "ta_codegen/output/dotnet/tools/TaCodegenServe.csproj",
        "ta_codegen/output/rust/Cargo.toml",
        "ta_codegen/output/rust/library/Cargo.toml",
        "ta_codegen/output/rust/tools/Cargo.toml"
      ],
      "largest_source_bytes": 12329300,
      "source_files_sampled": 922,
      "oversized_source_files": 196,
      "agent_instruction_files": [
        "CLAUDE.md",
        "src/tools/ta_regtest/CLAUDE.md",
        "ta_codegen/generator/CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 27322
    },
    "dependencies": {
      "manifests": [
        "website/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 498,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 1,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "katex",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.16.47"
        },
        {
          "name": "serde",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_yaml",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.9"
        },
        {
          "name": "serde_json",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "regex",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "regex",
            "direct": true,
            "version": "1.12.3",
            "ecosystem": "crates"
          },
          {
            "name": "serde",
            "direct": true,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_json",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "serde_json",
            "direct": true,
            "version": "1.0.149",
            "ecosystem": "crates"
          },
          {
            "name": "serde_yaml",
            "direct": true,
            "version": "0.9.34+deprecated",
            "ecosystem": "crates"
          },
          {
            "name": "katex",
            "direct": true,
            "version": "0.16.47",
            "ecosystem": "npm"
          },
          {
            "name": "aho-corasick",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "equivalent",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.16.1",
            "ecosystem": "crates"
          },
          {
            "name": "indexmap",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "itoa",
            "direct": false,
            "version": "1.0.17",
            "ecosystem": "crates"
          },
          {
            "name": "memchr",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": false,
            "version": "1.0.106",
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": false,
            "version": "1.0.45",
            "ecosystem": "crates"
          },
          {
            "name": "regex-automata",
            "direct": false,
            "version": "0.4.14",
            "ecosystem": "crates"
          },
          {
            "name": "regex-syntax",
            "direct": false,
            "version": "0.8.10",
            "ecosystem": "crates"
          },
          {
            "name": "ryu",
            "direct": false,
            "version": "1.0.23",
            "ecosystem": "crates"
          },
          {
            "name": "serde_core",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_derive",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "2.0.117",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-ident",
            "direct": false,
            "version": "1.0.24",
            "ecosystem": "crates"
          },
          {
            "name": "unsafe-libyaml",
            "direct": false,
            "version": "0.2.11",
            "ecosystem": "crates"
          },
          {
            "name": "zmij",
            "direct": false,
            "version": "1.0.21",
            "ecosystem": "crates"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@bufbuild/protobuf",
            "direct": false,
            "version": "2.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@lit-labs/ssr-dom-shim",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@lit/reactive-element",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-component",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-frontmatter",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-headers",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-sfc",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-title",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-toc",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/shared",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/helper",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-alert",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-align",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-attrs",
            "direct": false,
            "version": "0.25.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-container",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-demo",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-figure",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-footnote",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-icon",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-img-lazyload",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-img-mark",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-img-size",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-include",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-inline-rule",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-katex-slim",
            "direct": false,
            "version": "0.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-layout",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-mark",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-mathjax-slim",
            "direct": false,
            "version": "0.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-plantuml",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-spoiler",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-stylize",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-sub",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-sup",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-tab",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-tasklist",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-tex",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-uml",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.139.0",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-android-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-darwin-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-darwin-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-freebsd-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm64-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm64-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-x64-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-x64-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-ia32",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@pkgr/core",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-android-arm64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-arm64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-x64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-freebsd-x64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-musl",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-openharmony-arm64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-wasm32-wasi",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/core",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-javascript",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-oniguruma",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/langs",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/primitive",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/themes",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/transformers",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/types",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/vscode-textmate",
            "direct": false,
            "version": "10.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@stackblitz/sdk",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/debug",
            "direct": false,
            "version": "4.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/fs-extra",
            "direct": false,
            "version": "11.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hash-sum",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hast",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsesc",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsonfile",
            "direct": false,
            "version": "6.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/linkify-it",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/markdown-it",
            "direct": false,
            "version": "14.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/markdown-it-emoji",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ms",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "24.13.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "26.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/picomatch",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/sax",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/trusted-types",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/web-bluetooth",
            "direct": false,
            "version": "0.0.21",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-vue",
            "direct": false,
            "version": "6.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@vue-macros/common",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-core",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-dom",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-sfc",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-ssr",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/devtools-api",
            "direct": false,
            "version": "8.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/devtools-kit",
            "direct": false,
            "version": "8.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/devtools-shared",
            "direct": false,
            "version": "8.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/reactivity",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/runtime-core",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/runtime-dom",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/server-renderer",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/shared",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/bundler-vite",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/bundlerutils",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/cli",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/client",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/core",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/helper",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/highlighter-helper",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/markdown",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-active-header-links",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-back-to-top",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-blog",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-catalog",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-comment",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-copy-code",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-copyright",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-git",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-icon",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-links-check",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-chart",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-ext",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-hint",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-image",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-include",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-math",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-preview",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-stylize",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-tab",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-notice",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-nprogress",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-photo-swipe",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-reading-time",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-redirect",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-rtl",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-sass-palette",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-seo",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-shiki",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-sitemap",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-slimsearch",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-theme-data",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/shared",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/utils",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vueuse/core",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vueuse/metadata",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vueuse/shared",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "arg",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ast-kit",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ast-walker-scope",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "10.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balloon-css",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.43",
            "ecosystem": "npm"
          },
          {
            "name": "bcrypt-ts",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "birpc",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "cac",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001805",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-html4",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio-select",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-cursor",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-spinners",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "colorjs.io",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "comma-separated-tokens",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "14.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "confbox",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "confbox",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "connect-history-api-fallback",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "create-codepen",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "css-select",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "css-what",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dijkstrajs",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.389",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encoding-sniffer",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "envinfo",
            "direct": false,
            "version": "7.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "exsolve",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "extend-shallow",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fflate",
            "direct": false,
            "version": "0.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fraction.js",
            "direct": false,
            "version": "5.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "11.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "giscus",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "gray-matter",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hash-sum",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-html",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-parse5",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-parse-selector",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-sanitize",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-html",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-whitespace",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hastscript",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hookable",
            "direct": false,
            "version": "5.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "html-void-elements",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "5.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "is-extendable",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-interactive",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-android-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-freebsd-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-arm64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-x64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "linkify-it",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "lit",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "lit-element",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "lit-html",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "local-pkg",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string-ast",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it-anchor",
            "direct": false,
            "version": "9.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it-cjk-friendly",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it-emoji",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-function",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mlly",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "muggle-string",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.16",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "5.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "node-addon-api",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.51",
            "ecosystem": "npm"
          },
          {
            "name": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-parser",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-to-es",
            "direct": false,
            "version": "4.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "ora",
            "direct": false,
            "version": "9.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-htmlparser2-tree-adapter",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-parser-stream",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "perfect-debounce",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "photoswipe",
            "direct": false,
            "version": "5.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-types",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-types",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pngjs",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.22",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-load-config",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode.js",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "qrcode",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "quansync",
            "direct": false,
            "version": "0.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex-recursion",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "regex-utilities",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-parse",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-sanitize",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-stringify",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-main-filename",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "rxjs",
            "direct": false,
            "version": "7.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sass",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-all-unknown",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-darwin-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-darwin-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-unknown-all",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-win32-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-win32-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "scule",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "section-matter",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shiki",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "sitemap",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "slimsearch",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "space-separated-tokens",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stdin-discarder",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "8.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-entities",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom-string",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "sync-child-process",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "sync-message-port",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "synckit",
            "direct": false,
            "version": "0.11.13",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "trim-lines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "uc.micro",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ufo",
            "direct": false,
            "version": "1.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "11.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unplugin",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "unplugin-utils",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "upath",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "upath",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "varint",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-location",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "8.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "vue",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "vue-router",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-plugin-components",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-plugin-md-enhance",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-shared",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-theme-hope",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "web-namespaces",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-virtual-modules",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-encoding",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which-module",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "15.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "18.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "yoctocolors",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 499,
        "direct_count": 6,
        "indirect_count": 493
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 23,
        "open_issues": 7,
        "closed_ratio": 0.933,
        "closed_issues": 98,
        "closed_unmerged_prs": 8
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "mario4tier",
          "commits": 601,
          "avatar_url": "https://avatars.githubusercontent.com/u/4542410?v=4"
        },
        {
          "type": "User",
          "login": "chadfurman",
          "commits": 384,
          "avatar_url": "https://avatars.githubusercontent.com/u/635170?v=4"
        },
        {
          "type": "User",
          "login": "vbmithr",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/797581?v=4"
        },
        {
          "type": "User",
          "login": "chad-fossa",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/161645047?v=4"
        },
        {
          "type": "User",
          "login": "cpp4ever",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/1954426?v=4"
        },
        {
          "type": "User",
          "login": "dexhunter",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/6930518?v=4"
        },
        {
          "type": "User",
          "login": "nehemiah888",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/141201269?v=4"
        },
        {
          "type": "User",
          "login": "greenTableWork",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/252103756?v=4"
        },
        {
          "type": "User",
          "login": "vikasnkumar",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/12120?v=4"
        },
        {
          "type": "User",
          "login": "trufanov-nok",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/5746456?v=4"
        }
      ],
      "contributors_sampled": 20,
      "top_contributor_share": 0.592
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "dev-nightly-tests.yml",
        "main-nightly-tests.yml",
        "post-release-vcpkg.yml",
        "release-step-1.yml",
        "release-step-2.yml",
        "website.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock",
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 4,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 1/29 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 7 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "144c635bb429759235696d9f95e1734169205f3a",
        "ran_at": "2026-07-27T10:40:16Z",
        "aggregate_score": 3.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-27T08:46:31Z",
      "oldest_open_prs": [
        {
          "number": 85,
          "created_at": "2026-04-05T15:05:16Z",
          "last_comment_at": "2026-07-14T19:19:38Z",
          "last_comment_author": "mario4tier"
        }
      ],
      "last_merged_pr_at": "2026-07-27T02:09:46Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 30,
          "created_at": "2024-02-13T18:07:52Z",
          "last_comment_at": "2024-11-12T04:07:23Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 60,
          "created_at": "2025-03-17T06:48:14Z",
          "last_comment_at": "2025-03-17T14:55:40Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 81,
          "created_at": "2026-02-19T20:06:41Z",
          "last_comment_at": "2026-07-04T11:37:17Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 84,
          "created_at": "2026-03-16T22:33:26Z",
          "last_comment_at": "2026-07-03T23:19:16Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 116,
          "created_at": "2026-07-15T19:03:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 144,
          "created_at": "2026-07-26T04:26:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 145,
          "created_at": "2026-07-27T04:20:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/TA-Lib/ta-lib",
    "host": "github.com",
    "name": "ta-lib",
    "owner": "TA-Lib"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": "High-Risk Jurisdiction Policy applies a 50% multiplier to weighted overall health and gives it an At risk ceiling of 49.",
      "notes": [
        {
          "code": "jurisdiction_overall_adjustment",
          "params": {
            "cap": 49,
            "pct": 50
          }
        }
      ],
      "value": 31,
      "inputs": {
        "security": 34,
        "vitality": 77,
        "community": 67,
        "governance": 60,
        "engineering": 68,
        "high_risk_jurisdiction_cap": 49,
        "high_risk_jurisdiction_multiplier": 50,
        "weighted_overall_before_jurisdiction": 62,
        "overall_after_jurisdiction_multiplier": 31
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 77,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "commits_last_year": 966,
              "human_commit_share": 0.78,
              "days_since_last_push": 0,
              "active_weeks_last_year": 19
            },
            "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": "19/52 weeks with commits",
                "points": 13.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 19
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "966 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 966
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "releases_count": 6,
              "latest_release_tag": "v0.7.1",
              "releases_from_tags": false,
              "days_since_latest_release": 23,
              "mean_days_between_releases": 174.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "6 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 23 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 23
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~174.2 days",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 174.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 67,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "forks": 291,
              "stars": 1638,
              "watchers": 30,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1,638 stars",
                "points": 52.1,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1638
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "291 forks",
                "points": 20.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 291
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "30 watchers",
                "points": 8.1,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 30
                    }
                  }
                ],
                "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
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 60,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 42,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 20,
              "top_contributor_share": 0.592
            },
            "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 59% of commits",
                "points": 9.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 59
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "20 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "merged_prs": 23,
              "open_issues": 7,
              "closed_issues": 98,
              "issue_closed_ratio": 0.933,
              "closed_unmerged_prs": 8
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "93% of issues closed",
                "points": 43.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 93
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "23/31 decided PRs merged",
                "points": 28.4,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 23,
                      "decided": 31
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "followers": 332,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "TA-Lib",
              "public_repos": 12,
              "account_age_days": 3628
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "332 followers of TA-Lib",
                "points": 18.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 332,
                      "login": "TA-Lib"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "12 public repos, account ~9 yr old",
                "points": 20.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 12
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 9
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 68,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 54,
            "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": "6 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "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": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "ta-lib",
                "financial",
                "series-analysis",
                "technical-analysis"
              ],
              "has_wiki": false,
              "homepage": "https://ta-lib.org/",
              "has_readme": true,
              "has_docs_dir": true,
              "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": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://ta-lib.org/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "4 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 34,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized. High-Risk Jurisdiction Policy applies a 50% multiplier to Security posture and gives it an At risk ceiling of 49.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "jurisdiction_posture_adjustment",
                "params": {
                  "cap": 49,
                  "pct": 50
                }
              }
            ],
            "value": 18,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3.5,
              "high_risk_jurisdiction_cap": 49,
              "high_risk_jurisdiction_multiplier": 50,
              "security_posture_after_multiplier": 18,
              "security_posture_before_jurisdiction": 35
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 1/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "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 498 resolved dependencies against OSV; 1 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": 498
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 1
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 498,
              "unassessed_packages": 1,
              "affected_by_severity": "none",
              "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": 498,
              "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": "moderate",
            "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": 50,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": true,
              "exposures": [
                {
                  "role": "top_contributor",
                  "count": 1,
                  "country": "Russia"
                }
              ],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 14
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "Russia: top_contributor (1)",
                "points": 50,
                "status": "partial",
                "details": [
                  {
                    "code": "jurisdiction_exposure",
                    "params": {
                      "role": "top_contributor",
                      "count": 1,
                      "country": "Russia"
                    }
                  }
                ],
                "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": 71,
        "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": 1,
              "agent_instruction_files": [
                "CLAUDE.md",
                "src/tools/ta_regtest/CLAUDE.md",
                "ta_codegen/generator/CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 27322
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "78 of 78 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 78,
                      "sampled": 78
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock",
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.09,
              "toolchain_manifests": [
                "ta_codegen/generator/Cargo.toml",
                "ta_codegen/output/dotnet/tools/TaCodegenServe.csproj",
                "ta_codegen/output/rust/Cargo.toml",
                "ta_codegen/output/rust/library/Cargo.toml",
                "ta_codegen/output/rust/tools/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "ta_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "ta_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml"
                    }
                  }
                ],
                "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": "Java (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "9 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 9,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "primary_language": "Java",
              "largest_source_bytes": 12329300,
              "source_files_sampled": 922,
              "oversized_source_files": 196
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Java (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "196/922 source files over 60KB",
                "points": 43.3,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 922,
                      "oversized": 196
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch npm package 'ta-lib.org' from its registry",
    "Could not fetch crates package 'ta-codegen' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T10:40:35.789371Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/t/TA-Lib/ta-lib.svg",
  "full_name": "TA-Lib/ta-lib",
  "license_state": "standard",
  "license_spdx": "BSD-3-Clause"
}

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

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

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