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

clay-good / OpenLore

Deterministic, local-first memory and guardrails for AI coding agents with no LLM in the hot path.

TypeScriptMIT★ 207 зірок⑂ 31 форкз січ. 2026 р.Переглянути на GitHub ↗

clay-good/OpenLore має індекс здоров’я 78 зі 100, що відповідає смузі «Добрий». Найвищий показник — Vitality (88/100), найнижчий — Community & Adoption (68/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконують 2 учасники.

78
загалом / 100
Добрий

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

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

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

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

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

Власність

Clay GoodОсобистий обліковий запис
19 підписників39 публічних репозиторіївз жовт. 2025 р.

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

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

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
npmopenlore2.1.63 645276 днів томуarchitectural-memorystructural-analysiscode-analysiscall-graphstatic-analysisai-coding-agentsmcpclipi-package

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

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

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

88Відмінний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
15.9/36Ритм комітів — 23/52 тижнів із комітами
18/18Обсяг комітів — 1 437 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year1 437
human_commit_share0,88
days_since_last_push0
active_weeks_last_year23
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 43 релізів
36/36Свіжість релізів — останній реліз 6 дн. тому
27/27Ритм релізів — реліз кожні ~4,2 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count43
latest_release_tagv2.1.6
releases_from_tagsні
days_since_latest_release6
mean_days_between_releases4,2
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

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

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

68Помірний · 18% загального індексу
Як обчислюється оцінка
37.5/60Зірки — 207 зірок
12.3/25Форки — 31 форків
1.7/15Спостерігачі — 3 спостерігачів
Використані вхідні дані
forks31
stars207
watchers3
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
18/18Настанови CONTRIBUTING
13.5/13.5Кодекс поведінки
0/7.2Шаблон issue
6.3/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingтак
has_issue_templateні
has_code_of_conductтак
has_pull_request_templateтак
Як обчислюється оцінка
47.5/80Щомісячні завантаження — 3 645 завантажень/місяць у npm
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesopenlore
dependents
ecosystemsnpm
total_downloads
monthly_downloads3 645
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

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

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

69Помірний · 24% загального індексу
Як обчислюється оцінка
25.2/54Бас-фактор — на 2 контриб’ютор(ів) припадає половина всіх комітів
11.2/22.5Розподіл комітів — головний контриб’ютор — автор 50% комітів
13.5/13.5Широта контриб’юторів — 10 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 9 contributing companies or organizations
Використані вхідні дані
bus_factor2
contributors_sampled10
top_contributor_share0,5
Як обчислюється оцінка
46.8/46.8Вирішення issue — закрито 100% issue
36.7/38.3Прийняття PR — злито 254/265 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 1/18 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs254
open_issues0
closed_issues17
issue_closed_ratio1
closed_unmerged_prs11

Власність та опіка

41У зоні ризику
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
9.4/25Охоплення власника — 19 підписників у clay-good
13.2/25Послужний список — 39 публічних репозиторіїв, вік облікового запису ~0 р.
Використані вхідні дані
followers19
owner_typeUser
is_verified
owner_loginclay-good
public_repos39
account_age_days287
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

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

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у npm
35/35Свіжість публікацій — остання публікація 6 дн. тому
20/20Історія версій — 27 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesopenlore
ecosystemsnpm
any_deprecatedні
min_days_since_publish6

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

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

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

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

100Відмінний
Як обчислюється оцінка
30/30README
25/25Каталог документації
15/15Сайт документації / домашня сторінка — https://www.npmjs.com/package/openlore
10/10Опис репозиторію
10/10Теми — 20 тем
10/10Wiki
Використані вхідні дані
topicsdeveloper-tools, software-architecture, static-analysis, adr, agentic-workflows, ai-agents, call-graph, codebase-analysis, knowledge-graph, living-documentation, llm-tools, mcp-server, model-context-protocol, code-navigation, coding-agents, dead-code-detection, infrastructure-as-code, scip, test-impact-analysis, tree-sitter
has_wikiтак
homepagehttps://www.npmjs.com/package/openlore
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

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

77Добрий · 16% загального індексу
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2/2.5CI-Tests — 26 out of 29 merged PRs checked by a CI test -- score normalized to 8
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 1/18 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 9 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
3/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 6
4/5SAST — SAST tool detected but not run on all commits
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — немає даних
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
6.8/7.5Vulnerabilities — 1 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate7,5
Виключено з оцінювання (немає даних або не застосовно): signed_releases. Залишкові ваги перенормовано.
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
9.1/25Непрямі залежності без відомих сповіщень — уражено 2: sharp 0.34.5 (high 7.3), @hono/node-server 1.19.15 (moderate 5.9)
40/40Немає задавнених сповіщень — жодне сповіщення не є публічним довше за 90 дн.
Використані вхідні дані
sourceosv
advisories2
affected_packages2
assessed_packages361
unassessed_packages0
affected_by_severityhigh 1, moderate 1
direct_affected_packages0
Звірено з runtime-замиканням залежностей npm:openlore@2.1.6 — тим, що тягне за собою встановлення опублікованого пакета, — 361 пакетів. Досяжність не аналізується.

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

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

87Відмінний · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — AGENTS.md, CLAUDE.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 87 з 88 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,989
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes25 853
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — eslint.config.js
11/11Статична перевірка типів — examples/drift-demo/tsconfig.json, tsconfig.json
10/10Відтворюване середовище — Dockerfile, Nix, lockfile
10/10Підтверджена практика роботи з агентами — 86 з останніх 100 комітів створено агентом або з його зазначенням
8/8Автоматизоване супроводження — 12 з останніх 100 комітів — автоматичні оновлення залежностей
6/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 6
Використані вхідні дані
has_nixтак
has_testsтак
lockfilespackage-lock.json
has_dockerfileтак
typed_languageтак
bootstrap_files
has_devcontainerні
has_linter_configтак
typecheck_configsexamples/drift-demo/tsconfig.json, tsconfig.json
agent_commit_share0,86
toolchain_manifests
dependency_bot_commit_share0,12
Як обчислюється оцінка
45/45Типізований код — TypeScript (статично типізована)
53.9/55Керовані розміри файлів — 15/757 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageTypeScript
largest_source_bytes228 745
source_files_sampled757
oversized_source_files15
Як обчислюється оцінка
40/40Схема API (OpenAPI/GraphQL/proto) — src/core/scip/vendor/scip.proto
20/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalтак
api_schema_filessrc/core/scip/vendor/scip.proto

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

207зірок GitHub
10контриб'юторів
1 437комітів за останні 12 місяців
0днів від останнього пушу
43релізів
2бас-фактор
0відкритих issue
npmпакетних екосистем

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

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Докладніше

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

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

0510152025303022026-022026-042026-07
Мажорні 1Мінорні 3Патчі 39
OpenSSF Scorecard 7.5 / 10
7.5сукупно

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

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
8CI-Tests26 out of 29 merged PRs checked by a CI test -- score normalized to 8
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 1/18 approved changesets -- score normalized to 0
10Contributorsproject has 9 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
6Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 6
8SASTSAST tool detected but not run on all commits
10Security-Policysecurity policy file detected
н/дSigned-Releasesno releases found
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
9Vulnerabilities1 existing vulnerabilities detected
Прямі залежності 17
РеєстрПакетОбмеження версіїМаніфест
npm@inquirer/prompts^8.5.2package.json
npm@modelcontextprotocol/sdk^1.27.1package.json
npm@modelcontextprotocol/server-memory^2026.1.26package.json
npm@vitejs/plugin-react^6.0.4package.json
npmchalk^5.3.0package.json
npmchokidar^5.0.0package.json
npmcommander^12.1.0package.json
npmglob^13.0.6package.json
npmignore^7.0.6package.json
npmjsonc-parser^3.3.1package.json
npmora^8.1.1package.json
npmreact^19.1.1package.json
npmreact-dom^19.1.1package.json
npmtree-sitter-wasms0.1.13package.json
npmvite^8.0.16package.json
npmweb-tree-sitter0.25.0package.json
npmyaml^2.6.1package.json
Усі залежності 626

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

РеєстрПакетВерсіяЗв'язок
npm@inquirer/prompts8.5.2пряма
npm@modelcontextprotocol/sdk1.29.0пряма
npm@modelcontextprotocol/server-memory2026.7.4пряма
npm@vitejs/plugin-react6.0.4пряма
npmchalk5.6.2пряма
npmchokidar5.0.0пряма
npmcommander12.1.0пряма
npmglob13.0.6пряма
npmignore5.3.2пряма
npmignore7.0.5пряма
npmignore7.0.6пряма
npmjsonc-parser3.3.1пряма
npmora8.2.0пряма
npmreact19.2.8пряма
npmreact-dom19.2.8пряма
npmtree-sitter-wasms0.1.13пряма
npmvite8.1.5пряма
npmweb-tree-sitter0.25.0пряма
npmyaml2.9.0пряма
npm@anthropic-ai/sdk0.91.1непряма
npm@aws-crypto/crc325.2.0непряма
npm@aws-crypto/sha256-browser5.2.0непряма
npm@aws-crypto/sha256-js5.2.0непряма
npm@aws-crypto/supports-web-crypto5.2.0непряма
npm@aws-crypto/util5.2.0непряма
npm@aws-sdk/client-bedrock-runtime3.1048.0непряма
npm@aws-sdk/core3.974.11непряма
npm@aws-sdk/core3.977.1непряма
npm@aws-sdk/credential-provider-env3.972.37непряма
npm@aws-sdk/credential-provider-env3.972.61непряма
npm@aws-sdk/credential-provider-http3.972.39непряма
npm@aws-sdk/credential-provider-http3.972.63непряма
npm@aws-sdk/credential-provider-ini3.972.41непряма
npm@aws-sdk/credential-provider-ini3.973.6непряма
npm@aws-sdk/credential-provider-login3.972.41непряма
npm@aws-sdk/credential-provider-login3.972.68непряма
npm@aws-sdk/credential-provider-node3.972.42непряма
npm@aws-sdk/credential-provider-node3.972.72непряма
npm@aws-sdk/credential-provider-process3.972.37непряма
npm@aws-sdk/credential-provider-process3.972.61непряма
npm@aws-sdk/credential-provider-sso3.972.41непряма
npm@aws-sdk/credential-provider-sso3.973.5непряма
npm@aws-sdk/credential-provider-web-identity3.972.41непряма
npm@aws-sdk/credential-provider-web-identity3.972.67непряма
npm@aws-sdk/eventstream-handler-node3.972.16непряма
npm@aws-sdk/eventstream-handler-node3.972.30непряма
npm@aws-sdk/middleware-eventstream3.972.12непряма
npm@aws-sdk/middleware-eventstream3.972.25непряма
npm@aws-sdk/middleware-websocket3.972.19непряма
npm@aws-sdk/middleware-websocket3.972.43непряма
npm@aws-sdk/nested-clients3.997.35непряма
npm@aws-sdk/nested-clients3.997.9непряма
npm@aws-sdk/signature-v4-multi-region3.996.27непряма
npm@aws-sdk/signature-v4-multi-region3.996.42непряма
npm@aws-sdk/token-providers3.1048.0непряма
npm@aws-sdk/token-providers3.1095.0непряма
npm@aws-sdk/types3.973.8непряма
npm@aws-sdk/types3.974.2непряма
npm@aws-sdk/util-locate-window3.965.5непряма
npm@aws-sdk/util-locate-window3.965.8непряма
npm@aws-sdk/xml-builder3.972.24непряма
npm@aws-sdk/xml-builder3.972.37непряма
npm@aws/lambda-invoke-store0.2.4непряма
npm@aws/lambda-invoke-store0.3.0непряма
npm@babel/helper-string-parser7.29.7непряма
npm@babel/helper-validator-identifier7.29.7непряма
npm@babel/parser7.29.7непряма
npm@babel/runtime7.29.2непряма
npm@babel/runtime7.29.7непряма
npm@babel/types7.29.7непряма
npm@bcoe/v8-coverage1.0.2непряма
npm@earendil-works/pi-agent-core0.82.1непряма
npm@earendil-works/pi-ai0.82.1непряма
npm@earendil-works/pi-coding-agent0.82.1непряма
npm@earendil-works/pi-tui0.82.1непряма
npm@emnapi/core1.11.1непряма
npm@emnapi/runtime1.11.1непряма
npm@emnapi/runtime1.11.3непряма
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@eslint-community/eslint-utils4.10.1непряма
npm@eslint-community/regexpp4.12.2непряма
npm@eslint/config-array0.23.5непряма
npm@eslint/config-helpers0.7.0непряма
npm@eslint/core1.2.1непряма
npm@eslint/js10.0.1непряма
npm@eslint/object-schema3.0.5непряма
npm@eslint/plugin-kit0.7.2непряма
npm@google/genai1.52.0непряма
npm@hono/node-server2.0.11непряма
npm@huggingface/jinja0.5.9непряма
npm@huggingface/transformers3.8.1непряма
npm@humanfs/core0.19.2непряма
npm@humanfs/node0.16.8непряма
npm@humanfs/types0.15.0непряма
npm@humanwhocodes/module-importer1.0.1непряма
npm@humanwhocodes/retry0.4.3непряма
npm@img/colour1.1.0непряма
npm@img/sharp-darwin-arm640.35.3непряма
npm@img/sharp-darwin-x640.35.3непряма
npm@img/sharp-freebsd-wasm320.35.3непряма
npm@img/sharp-libvips-darwin-arm641.3.2непряма
npm@img/sharp-libvips-darwin-x641.3.2непряма
npm@img/sharp-libvips-linux-arm1.3.2непряма
npm@img/sharp-libvips-linux-arm641.3.2непряма
npm@img/sharp-libvips-linux-ppc641.3.2непряма
npm@img/sharp-libvips-linux-riscv641.3.2непряма
npm@img/sharp-libvips-linux-s390x1.3.2непряма
npm@img/sharp-libvips-linux-x641.3.2непряма
npm@img/sharp-libvips-linuxmusl-arm641.3.2непряма
npm@img/sharp-libvips-linuxmusl-x641.3.2непряма
npm@img/sharp-linux-arm0.35.3непряма
npm@img/sharp-linux-arm640.35.3непряма
npm@img/sharp-linux-ppc640.35.3непряма
npm@img/sharp-linux-riscv640.35.3непряма
npm@img/sharp-linux-s390x0.35.3непряма
npm@img/sharp-linux-x640.35.3непряма
npm@img/sharp-linuxmusl-arm640.35.3непряма
npm@img/sharp-linuxmusl-x640.35.3непряма
npm@img/sharp-wasm320.35.3непряма
npm@img/sharp-webcontainers-wasm320.35.3непряма
npm@img/sharp-win32-arm640.35.3непряма
npm@img/sharp-win32-ia320.35.3непряма
npm@img/sharp-win32-x640.35.3непряма
npm@inquirer/ansi2.0.7непряма
npm@inquirer/checkbox5.2.1непряма
npm@inquirer/confirm6.1.1непряма
npm@inquirer/core11.2.1непряма
npm@inquirer/editor5.2.2непряма
npm@inquirer/expand5.1.1непряма
npm@inquirer/external-editor3.0.3непряма
npm@inquirer/figures2.0.7непряма
npm@inquirer/input5.1.2непряма
npm@inquirer/number4.1.1непряма
npm@inquirer/password5.1.1непряма
npm@inquirer/rawlist5.3.1непряма
npm@inquirer/search4.2.1непряма
npm@inquirer/select5.2.1непряма
npm@inquirer/type4.0.7непряма
npm@isaacs/fs-minipass4.0.1непряма
npm@jridgewell/resolve-uri3.1.2непряма
npm@jridgewell/sourcemap-codec1.5.5непряма
npm@jridgewell/trace-mapping0.3.31непряма
npm@jsonjoy.com/base641.1.2непряма
npm@jsonjoy.com/base6417.67.0непряма
npm@jsonjoy.com/buffers1.2.1непряма
npm@jsonjoy.com/buffers17.67.0непряма
npm@jsonjoy.com/codegen1.0.0непряма
npm@jsonjoy.com/codegen17.67.0непряма
npm@jsonjoy.com/fs-core4.64.0непряма
npm@jsonjoy.com/fs-fsa4.64.0непряма
npm@jsonjoy.com/fs-node4.64.0непряма
npm@jsonjoy.com/fs-node-builtins4.64.0непряма
npm@jsonjoy.com/fs-node-to-fsa4.64.0непряма
npm@jsonjoy.com/fs-node-utils4.64.0непряма
npm@jsonjoy.com/fs-print4.64.0непряма
npm@jsonjoy.com/fs-snapshot4.64.0непряма
npm@jsonjoy.com/json-pack1.21.0непряма
npm@jsonjoy.com/json-pack17.67.0непряма
npm@jsonjoy.com/json-pointer1.0.2непряма
npm@jsonjoy.com/json-pointer17.67.0непряма
npm@jsonjoy.com/util1.9.0непряма
npm@jsonjoy.com/util17.67.0непряма
npm@lancedb/lancedb0.22.4-beta.3непряма
npm@lancedb/lancedb-darwin-arm640.22.4-beta.3непряма
npm@lancedb/lancedb-darwin-x640.22.4-beta.3непряма
npm@lancedb/lancedb-linux-arm64-gnu0.22.4-beta.3непряма
npm@lancedb/lancedb-linux-arm64-musl0.22.4-beta.3непряма
npm@lancedb/lancedb-linux-x64-gnu0.22.4-beta.3непряма
npm@lancedb/lancedb-linux-x64-musl0.22.4-beta.3непряма
npm@lancedb/lancedb-win32-arm64-msvc0.22.4-beta.3непряма
npm@lancedb/lancedb-win32-x64-msvc0.22.4-beta.3непряма
npm@mariozechner/clipboard0.3.9непряма
npm@mariozechner/clipboard-darwin-arm640.3.9непряма
npm@mariozechner/clipboard-darwin-universal0.3.9непряма
npm@mariozechner/clipboard-darwin-x640.3.9непряма
npm@mariozechner/clipboard-linux-arm64-gnu0.3.9непряма
npm@mariozechner/clipboard-linux-arm64-musl0.3.9непряма
npm@mariozechner/clipboard-linux-riscv64-gnu0.3.9непряма
npm@mariozechner/clipboard-linux-x64-gnu0.3.9непряма
npm@mariozechner/clipboard-linux-x64-musl0.3.9непряма
npm@mariozechner/clipboard-win32-arm64-msvc0.3.9непряма
npm@mariozechner/clipboard-win32-x64-msvc0.3.9непряма
npm@mistralai/mistralai2.2.6непряма
npm@napi-rs/wasm-runtime1.1.6непряма
npm@nodable/entities2.1.0непряма
npm@opentelemetry/api1.9.0непряма
npm@opentelemetry/semantic-conventions1.41.1непряма
npm@opentelemetry/semantic-conventions1.43.0непряма
npm@oxc-project/types0.139.0непряма
npm@protobufjs/aspromise1.1.2непряма
npm@protobufjs/base641.1.2непряма
npm@protobufjs/codegen2.0.5непряма
npm@protobufjs/eventemitter1.1.1непряма
npm@protobufjs/fetch1.1.1непряма
npm@protobufjs/float1.0.2непряма
npm@protobufjs/path1.1.2непряма
npm@protobufjs/pool1.1.0непряма
npm@protobufjs/utf81.1.1непряма
npm@protobufjs/utf81.1.2непряма
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@silvia-odwyer/photon-node0.3.4непряма
npm@smithy/core3.24.3непряма
npm@smithy/core3.30.0непряма
npm@smithy/credential-provider-imds4.3.3непряма
npm@smithy/credential-provider-imds4.4.14непряма
npm@smithy/fetch-http-handler5.4.3непряма
npm@smithy/fetch-http-handler5.6.11непряма
npm@smithy/is-array-buffer2.2.0непряма
npm@smithy/node-http-handler4.7.3непряма
npm@smithy/node-http-handler4.9.11непряма
npm@smithy/signature-v45.4.3непряма
npm@smithy/signature-v45.6.10непряма
npm@smithy/types4.14.2непряма
npm@smithy/types4.16.1непряма
npm@smithy/util-buffer-from2.2.0непряма
npm@smithy/util-utf82.3.0непряма
npm@standard-schema/spec1.1.0непряма
npm@tybys/wasm-util0.10.3непряма
npm@types/chai5.2.3непряма
npm@types/deep-eql4.0.2непряма
npm@types/esrecurse4.3.1непряма
npm@types/estree1.0.9непряма
npm@types/json-schema7.0.15непряма
npm@types/node22.19.19непряма
npm@types/node25.9.5непряма
npm@types/node26.1.1непряма
npm@types/retry0.12.0непряма
npm@typescript-eslint/eslint-plugin8.65.0непряма
npm@typescript-eslint/parser8.65.0непряма
npm@typescript-eslint/project-service8.65.0непряма
npm@typescript-eslint/scope-manager8.65.0непряма
npm@typescript-eslint/tsconfig-utils8.65.0непряма
npm@typescript-eslint/type-utils8.65.0непряма
npm@typescript-eslint/types8.65.0непряма
npm@typescript-eslint/typescript-estree8.65.0непряма
npm@typescript-eslint/utils8.65.0непряма
npm@typescript-eslint/visitor-keys8.65.0непряма
npm@vitest/coverage-v84.1.10непряма
npm@vitest/expect4.1.10непряма
npm@vitest/mocker4.1.10непряма
npm@vitest/pretty-format4.1.10непряма
npm@vitest/runner4.1.10непряма
npm@vitest/snapshot4.1.10непряма
npm@vitest/spy4.1.10непряма
npm@vitest/utils4.1.10непряма
npmaccepts2.0.0непряма
npmacorn8.17.0непряма
npmacorn-jsx5.3.2непряма
npmagent-base7.1.4непряма
npmajv6.15.0непряма
npmajv8.20.0непряма
npmajv-formats3.0.1непряма
npmansi-regex6.2.2непряма
npmapache-arrow21.2.0непряма
npmassertion-error2.0.1непряма
npmast-v8-to-istanbul1.0.5непряма
npmbalanced-match4.0.4непряма
npmbase64-js1.5.1непряма
npmbcrypt^5.1.0непряма
npmbignumber.js9.3.1непряма
npmbody-parser2.3.0непряма
npmboolean3.2.0непряма
npmbowser2.14.1непряма
npmbrace-expansion5.0.7непряма
npmbrace-expansion5.0.8непряма
npmbuffer-equal-constant-time1.0.1непряма
npmbytes3.1.2непряма
npmcall-bind-apply-helpers1.0.2непряма
npmcall-bound1.0.4непряма
npmchai6.2.2непряма
npmchardet2.2.0непряма
npmchownr3.0.0непряма
npmcli-cursor5.0.0непряма
npmcli-spinners2.9.2непряма
npmcli-width4.1.0непряма
npmcontent-disposition1.1.0непряма
npmcontent-type1.0.5непряма
npmcontent-type2.0.0непряма
npmconvert-source-map2.0.0непряма
npmcookie0.7.2непряма
npmcookie-signature1.2.2непряма
npmcors2.8.6непряма
npmcross-spawn7.0.6непряма
npmdata-uri-to-buffer4.0.1непряма
npmdebug4.4.3непряма
npmdeep-is0.1.4непряма
npmdefine-data-property1.1.4непряма
npmdefine-properties1.2.1непряма
npmdepd2.0.0непряма
npmdetect-libc2.1.2непряма
npmdetect-node2.1.0непряма
npmdiff8.0.4непряма
npmdunder-proto1.0.1непряма
npmecdsa-sig-formatter1.0.11непряма
npmee-first1.1.1непряма
npmemoji-regex10.6.0непряма
npmencodeurl2.0.0непряма
npmes-define-property1.0.1непряма
npmes-errors1.3.0непряма
npmes-module-lexer2.3.1непряма
npmes-object-atoms1.1.2непряма
npmes6-error4.1.1непряма
npmesbuild0.28.1непряма
npmescape-html1.0.3непряма
npmescape-string-regexp4.0.0непряма
npmeslint10.8.0непряма
npmeslint-scope9.1.2непряма
npmeslint-visitor-keys3.4.3непряма
npmeslint-visitor-keys5.0.1непряма
npmespree11.2.0непряма
npmesquery1.7.0непряма
npmesrecurse4.3.0непряма
npmestraverse5.3.0непряма
npmestree-walker3.0.3непряма
npmesutils2.0.3непряма
npmetag1.8.1непряма
npmeventsource3.0.7непряма
npmeventsource-parser3.1.0непряма
npmexpect-type1.4.0непряма
npmexpress5.2.1непряма
npmexpress^4.18.2непряма
npmexpress-rate-limit8.6.0непряма
npmextend3.0.2непряма
npmfast-deep-equal3.1.3непряма
npmfast-json-stable-stringify2.1.0непряма
npmfast-levenshtein2.0.6непряма
npmfast-string-truncated-width3.0.3непряма
npmfast-string-width3.0.2непряма
npmfast-uri3.1.4непряма
npmfast-wrap-ansi0.2.2непряма
npmfast-xml-builder1.2.0непряма
npmfast-xml-parser5.7.3непряма
npmfdir6.5.0непряма
npmfetch-blob3.2.0непряма
npmfile-entry-cache8.0.0непряма
npmfinalhandler2.1.1непряма
npmfind-up5.0.0непряма
npmflat-cache4.0.1непряма
npmflatbuffers25.9.23непряма
npmflatted3.4.3непряма
npmformdata-polyfill4.0.10непряма
npmforwarded0.2.0непряма
npmfresh2.0.0непряма
npmfsevents2.3.3непряма
npmfunction-bind1.1.2непряма
npmgaxios7.1.4непряма
npmgaxios7.3.0непряма
npmgcp-metadata8.1.2непряма
npmget-east-asian-width1.6.0непряма
npmget-intrinsic1.3.0непряма
npmget-proto1.0.1непряма
npmglob-parent6.0.2непряма
npmglob-to-regex.js1.2.0непряма
npmglobal-agent3.0.0непряма
npmglobals17.7.0непряма
npmglobalthis1.0.4непряма
npmgoogle-auth-library10.6.2непряма
npmgoogle-auth-library10.9.1непряма
npmgoogle-logging-utils1.1.3непряма
npmgopd1.2.0непряма
npmgraceful-fs4.2.11непряма
npmguid-typescript1.0.9непряма
npmhas-flag4.0.0непряма
npmhas-property-descriptors1.0.2непряма
npmhas-symbols1.1.0непряма
npmhasown2.0.4непряма
npmhighlight.js10.7.3непряма
npmhono4.12.32непряма
npmhosted-git-info9.0.3непряма
npmhtml-escaper2.0.2непряма
npmhttp-errors2.0.1непряма
npmhttp-proxy-agent7.0.2непряма
npmhttps-proxy-agent7.0.6непряма
npmhyperdyperid1.2.0непряма
npmiconv-lite0.7.3непряма
npmimurmurhash0.1.4непряма
npminherits2.0.4непряма
npmip-address10.3.1непряма
npmipaddr.js1.9.1непряма
npmis-extglob2.1.1непряма
npmis-glob4.0.3непряма
npmis-interactive2.0.0непряма
npmis-promise4.0.0непряма
npmis-unicode-supported1.3.0непряма
npmis-unicode-supported2.1.0непряма
npmisexe2.0.0непряма
npmistanbul-lib-coverage3.2.2непряма
npmistanbul-lib-report3.0.1непряма
npmistanbul-reports3.2.0непряма
npmjiti2.7.0непряма
npmjose6.2.4непряма
npmjs-tokens10.0.0непряма
npmjson-bigint1.0.0непряма
npmjson-buffer3.0.1непряма
npmjson-schema-to-ts3.1.1непряма
npmjson-schema-traverse0.4.1непряма
npmjson-schema-traverse1.0.0непряма
npmjson-schema-typed8.0.2непряма
npmjson-stable-stringify-without-jsonify1.0.1непряма
npmjson-stringify-safe5.0.1непряма
npmjson-with-bigint3.5.10непряма
npmjsonwebtoken^9.0.0непряма
npmjwa2.0.1непряма
npmjws4.0.1непряма
npmkeyv4.5.4непряма
npmlevn0.4.1непряма
npmlightningcss1.33.0непряма
npmlightningcss-android-arm641.33.0непряма
npmlightningcss-darwin-arm641.33.0непряма
npmlightningcss-darwin-x641.33.0непряма
npmlightningcss-freebsd-x641.33.0непряма
npmlightningcss-linux-arm-gnueabihf1.33.0непряма
npmlightningcss-linux-arm64-gnu1.33.0непряма
npmlightningcss-linux-arm64-musl1.33.0непряма
npmlightningcss-linux-x64-gnu1.33.0непряма
npmlightningcss-linux-x64-musl1.33.0непряма
npmlightningcss-win32-arm64-msvc1.33.0непряма
npmlightningcss-win32-x64-msvc1.33.0непряма
npmlocate-path6.0.0непряма
npmlog-symbols6.0.0непряма
npmlong5.3.2непряма
npmlru-cache11.4.0непряма
npmlru-cache11.5.2непряма
npmmagic-string0.30.21непряма
npmmagicast0.5.3непряма
npmmake-dir4.0.0непряма
npmmarked18.0.5непряма
npmmatcher3.0.0непряма
npmmath-intrinsics1.1.0непряма
npmmedia-typer1.1.1непряма
npmmemfs4.64.0непряма
npmmerge-descriptors2.0.0непряма
npmmime-db1.54.0непряма
npmmime-types3.0.2непряма
npmmimic-function5.0.1непряма
npmminimatch10.2.5непряма
npmminipass7.1.3непряма
npmminizlib3.1.0непряма
npmms2.1.3непряма
npmmute-stream3.0.0непряма
npmnanoid3.3.16непряма
npmnatural-compare1.4.0непряма
npmnegotiator1.0.0непряма
npmnode-addon-api7.1.1непряма
npmnode-addon-api8.9.0непряма
npmnode-domexception1.0.0непряма
npmnode-fetch3.3.2непряма
npmnode-gyp-build4.8.4непряма
npmobject-assign4.1.1непряма
npmobject-inspect1.13.4непряма
npmobject-keys1.1.1непряма
npmobug2.1.4непряма
npmon-finished2.4.1непряма
npmonce1.4.0непряма
npmonetime7.0.0непряма
npmonnxruntime-common1.21.0непряма
npmonnxruntime-common1.22.0-dev.20250409-89f8206ba4непряма
npmonnxruntime-node1.21.0непряма
npmonnxruntime-web1.22.0-dev.20250409-89f8206ba4непряма
npmopenai6.26.0непряма
npmoptionator0.9.4непряма
npmp-limit3.1.0непряма
npmp-locate5.0.0непряма
npmp-retry4.6.2непряма
npmparseurl1.3.3непряма
npmpartial-json0.1.7непряма
npmpath-exists4.0.0непряма
npmpath-expression-matcher1.5.0непряма
npmpath-key3.1.1непряма
npmpath-scurry2.0.2непряма
npmpath-to-regexp8.4.2непряма
npmpathe2.0.3непряма
npmpg^8.11.0непряма
npmpicocolors1.1.1непряма
npmpicomatch4.0.5непряма
npmpkce-challenge5.0.1непряма
npmplatform1.3.6непряма
npmpostcss8.5.23непряма
npmprelude-ls1.2.1непряма
npmproper-lockfile4.1.2непряма
npmprotobufjs7.6.5непряма
npmprotobufjs8.7.1непряма
npmproxy-addr2.0.7непряма
npmpunycode2.3.1непряма
npmqs6.15.3непряма
npmrange-parser1.3.0непряма
npmraw-body3.0.2непряма
npmreaddirp5.0.0непряма
npmreflect-metadata0.2.2непряма
npmrequire-from-string2.0.2непряма
npmrestore-cursor5.1.0непряма
npmretry0.12.0непряма
npmretry0.13.1непряма
npmroarr2.15.4непряма
npmrolldown1.1.5непряма
npmrouter2.2.0непряма
npmsafe-buffer5.2.1непряма
npmsafer-buffer2.1.2непряма
npmscheduler0.27.0непряма
npmsemver7.8.0непряма
npmsemver7.8.5непряма
npmsemver-compare1.0.0непряма
npmsend1.2.1непряма
npmserialize-error7.0.1непряма
npmserve-static2.2.1непряма
npmsetprototypeof1.2.0непряма
npmsharp0.35.3непряма
npmshebang-command2.0.0непряма
npmshebang-regex3.0.0непряма
npmside-channel1.1.1непряма
npmside-channel-list1.0.1непряма
npmside-channel-map1.0.1непряма
npmside-channel-weakmap1.0.2непряма
npmsiginfo2.0.0непряма
npmsignal-exit3.0.7непряма
npmsignal-exit4.1.0непряма
npmsource-map-js1.2.1непряма
npmsprintf-js1.1.3непряма
npmstackback0.0.2непряма
npmstatuses2.0.2непряма
npmstd-env4.2.0непряма
npmstdin-discarder0.2.2непряма
npmstring-width7.2.0непряма
npmstrip-ansi7.2.0непряма
npmstrnum2.3.0непряма
npmsupports-color7.2.0непряма
npmtar7.5.22непряма
npmthingies2.6.0непряма
npmtinybench2.9.0непряма
npmtinyexec1.2.4непряма
npmtinyglobby0.2.17непряма
npmtinyrainbow3.1.0непряма
npmtoidentifier1.0.1непряма
npmtree-dump1.1.0непряма
npmtree-sitter0.22.4непряма
npmtree-sitter-bash0.23.3непряма
npmtree-sitter-c0.23.6непряма
npmtree-sitter-c-sharp0.21.3непряма
npmtree-sitter-cpp0.23.4непряма
npmtree-sitter-elixir0.3.5непряма
npmtree-sitter-go0.23.4непряма
npmtree-sitter-java0.23.5непряма
npmtree-sitter-javascript0.23.1непряма
npmtree-sitter-kotlin0.3.8непряма
npmtree-sitter-php0.23.12непряма
npmtree-sitter-python0.23.6непряма
npmtree-sitter-ruby0.23.1непряма
npmtree-sitter-rust0.24.0непряма
npmtree-sitter-scala0.24.0непряма
npmtree-sitter-swift0.7.1непряма
npmtree-sitter-typescript0.23.2непряма
npmts-algebra2.0.0непряма
npmts-api-utils2.5.0непряма
npmtslib2.8.1непряма
npmtsx4.23.1непряма
npmtype-check0.4.0непряма
npmtype-fest0.13.1непряма
npmtype-is2.1.0непряма
npmtypebox1.1.38непряма
npmtypebox1.3.8непряма
npmtypescript5.9.3непряма
npmtypescript^5.3.0непряма
npmtypescript-eslint8.65.0непряма
npmundici8.5.0непряма
npmundici-types6.21.0непряма
npmundici-types7.24.6непряма
npmundici-types8.3.0непряма
npmunpipe1.0.0непряма
npmuri-js4.4.1непряма
npmvary1.1.2непряма
npmvitest4.1.10непряма
npmvitest^4.1.8непряма
npmweb-streams-polyfill3.3.3непряма
npmwhich2.0.2непряма
npmwhy-is-node-running2.3.0непряма
npmword-wrap1.2.5непряма
npmwrappy1.0.2непряма
npmws8.21.0непряма
npmws8.21.1непряма
npmxml-naming0.1.0непряма
npmyallist5.0.0непряма
npmyocto-queue0.1.0непряма
npmzod3.25.76непряма
npmzod4.4.3непряма
npmzod-to-json-schema3.25.2непряма
Сповіщення про залежності 2

Встановлення npm:openlore@2.1.6 тягне 361 пакетів, прямих і транзитивних: 2 мають відомі сповіщення, з них 0 — прямі залежності.

ПакетВерсіяЗв'язокКритичністьСповіщеньВиправлено в
sharp0.34.5непрямависока10.35.0
@hono/node-server1.19.15непрямапомірна12.0.5

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

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "developer-tools",
        "software-architecture",
        "static-analysis",
        "adr",
        "agentic-workflows",
        "ai-agents",
        "call-graph",
        "codebase-analysis",
        "knowledge-graph",
        "living-documentation",
        "llm-tools",
        "mcp-server",
        "model-context-protocol",
        "code-navigation",
        "coding-agents",
        "dead-code-detection",
        "infrastructure-as-code",
        "scip",
        "test-impact-analysis",
        "tree-sitter"
      ],
      "is_fork": false,
      "size_kb": 15770,
      "has_wiki": true,
      "homepage": "https://www.npmjs.com/package/openlore",
      "languages": {
        "C": 188,
        "C#": 288,
        "Go": 719,
        "HCL": 847,
        "Lua": 265,
        "Nix": 3352,
        "PHP": 260,
        "Dart": 120,
        "HTML": 430,
        "Ruby": 1477,
        "Bicep": 2380,
        "Scala": 184,
        "Shell": 3309,
        "Elixir": 168,
        "Kotlin": 216,
        "Python": 418,
        "Dockerfile": 289,
        "JavaScript": 212682,
        "PowerShell": 1274,
        "TypeScript": 8677696,
        "Go Template": 171
      },
      "pushed_at": "2026-07-25T22:59:10Z",
      "created_at": "2026-01-31T16:15:38Z",
      "owner_type": "User",
      "updated_at": "2026-07-25T22:25:18Z",
      "description": "Deterministic, local-first memory and guardrails for AI coding agents with no LLM in the hot path.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "claygood.com",
      "name": "Clay Good",
      "type": "User",
      "login": "clay-good",
      "company": null,
      "location": null,
      "followers": 19,
      "avatar_url": "https://avatars.githubusercontent.com/u/237345393?v=4",
      "created_at": "2025-10-10T23:46:58Z",
      "is_verified": null,
      "public_repos": 39,
      "account_age_days": 287
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.1.6",
          "kind": "patch",
          "published_at": "2026-07-19T23:07:09Z"
        },
        {
          "tag": "v2.1.5",
          "kind": "patch",
          "published_at": "2026-06-28T23:16:18Z"
        },
        {
          "tag": "v2.1.4",
          "kind": "patch",
          "published_at": "2026-06-27T15:57:15Z"
        },
        {
          "tag": "v2.1.3",
          "kind": "patch",
          "published_at": "2026-06-22T03:14:37Z"
        },
        {
          "tag": "v2.1.2",
          "kind": "patch",
          "published_at": "2026-06-20T20:24:48Z"
        },
        {
          "tag": "v2.1.1",
          "kind": "patch",
          "published_at": "2026-06-19T23:48:53Z"
        },
        {
          "tag": "v2.1.0",
          "kind": "minor",
          "published_at": "2026-06-18T17:38:57Z"
        },
        {
          "tag": "v2.0.19",
          "kind": "patch",
          "published_at": "2026-06-16T20:36:42Z"
        },
        {
          "tag": "v2.0.18",
          "kind": "patch",
          "published_at": "2026-06-14T01:14:57Z"
        },
        {
          "tag": "v2.0.17",
          "kind": "patch",
          "published_at": "2026-06-12T02:44:45Z"
        },
        {
          "tag": "v2.0.16",
          "kind": "patch",
          "published_at": "2026-06-10T11:34:33Z"
        },
        {
          "tag": "v2.0.15",
          "kind": "patch",
          "published_at": "2026-06-10T01:03:41Z"
        },
        {
          "tag": "v2.0.14",
          "kind": "patch",
          "published_at": "2026-06-09T01:36:30Z"
        },
        {
          "tag": "v2.0.13",
          "kind": "patch",
          "published_at": "2026-06-07T20:18:35Z"
        },
        {
          "tag": "v2.0.12",
          "kind": "patch",
          "published_at": "2026-06-07T19:06:36Z"
        },
        {
          "tag": "v2.0.11",
          "kind": "patch",
          "published_at": "2026-06-06T23:55:10Z"
        },
        {
          "tag": "v2.0.10",
          "kind": "patch",
          "published_at": "2026-06-05T02:00:57Z"
        },
        {
          "tag": "v2.0.9",
          "kind": "patch",
          "published_at": "2026-06-03T20:06:24Z"
        },
        {
          "tag": "v2.0.8",
          "kind": "patch",
          "published_at": "2026-06-02T22:27:25Z"
        },
        {
          "tag": "v2.0.7",
          "kind": "patch",
          "published_at": "2026-06-01T22:01:40Z"
        },
        {
          "tag": "v2.0.6",
          "kind": "patch",
          "published_at": "2026-06-01T18:50:41Z"
        },
        {
          "tag": "v2.0.5",
          "kind": "patch",
          "published_at": "2026-05-29T13:28:48Z"
        },
        {
          "tag": "v2.0.4",
          "kind": "patch",
          "published_at": "2026-05-27T21:14:18Z"
        },
        {
          "tag": "v2.0.3",
          "kind": "patch",
          "published_at": "2026-05-27T17:56:14Z"
        },
        {
          "tag": "v2.0.2",
          "kind": "patch",
          "published_at": "2026-05-26T22:21:38Z"
        },
        {
          "tag": "v2.0.1",
          "kind": "patch",
          "published_at": "2026-05-17T22:29:19Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2026-05-12T11:45:53Z"
        },
        {
          "tag": "v1.3.6",
          "kind": "patch",
          "published_at": "2026-05-09T16:32:13Z"
        },
        {
          "tag": "v1.3.5",
          "kind": "patch",
          "published_at": "2026-04-28T22:17:04Z"
        },
        {
          "tag": "v1.3.4",
          "kind": "patch",
          "published_at": "2026-04-25T19:32:01Z"
        },
        {
          "tag": "v1.3.3",
          "kind": "patch",
          "published_at": "2026-04-21T00:39:10Z"
        },
        {
          "tag": "v1.3.2",
          "kind": "patch",
          "published_at": "2026-04-17T23:36:38Z"
        },
        {
          "tag": "v1.3.1",
          "kind": "patch",
          "published_at": "2026-04-16T00:52:08Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-04-14T23:00:01Z"
        },
        {
          "tag": "v1.2.8",
          "kind": "patch",
          "published_at": "2026-04-07T01:30:03Z"
        },
        {
          "tag": "v1.2.7",
          "kind": "patch",
          "published_at": "2026-04-03T21:51:35Z"
        },
        {
          "tag": "v1.2.6",
          "kind": "patch",
          "published_at": "2026-03-31T01:42:58Z"
        },
        {
          "tag": "v1.2.5",
          "kind": "patch",
          "published_at": "2026-03-26T21:02:41Z"
        },
        {
          "tag": "v1.2.4",
          "kind": "patch",
          "published_at": "2026-03-25T18:05:24Z"
        },
        {
          "tag": "v1.2.3",
          "kind": "patch",
          "published_at": "2026-03-16T23:41:08Z"
        },
        {
          "tag": "v1.2.2",
          "kind": "patch",
          "published_at": "2026-03-14T20:41:43Z"
        },
        {
          "tag": "v1.2.1",
          "kind": "patch",
          "published_at": "2026-03-14T19:38:35Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2026-03-14T19:14:08Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "3f81d3211de524ac5c100bc99eb2cb14beb1d0f3",
          "body": "… (#287)\n\nThe embedded chart renders server-side by star-history.com for anonymous\nvisitors, so it never used a reader's token — and their shared token pool is\ncurrently exhausted. The URL returns 503 \"All GitHub API tokens are\nrate-limited\" for every repo, facebook/react included, not just this one\n[…]\nink to the live chart, which still works interactively for\nanyone signed in there. Same information, nothing that can render broken.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(readme): replace the broken star-history embed with a live badge…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-25T22:25:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7ca52dddc1a719c4a8ab5eb9b755a1110063de53",
          "body": "…positories (#286)\n\n* fix(security): neutralize terminal control sequences from analyzed repositories\n\nA repository being analyzed could inject raw terminal control sequences into\nOpenLore's own output through any path or symbol name it echoes back. A file\nname may legally contain ESC on Linux and m\n[…]\nch is how the first version of\nthis survey fooled me.\n\nCo-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(security): neutralize terminal control sequences from analyzed re…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-25T22:10:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5dfbe5b5b5b9648b4d800ec1a6e3e6194b4df5dd",
          "body": "…aims in real output (#285)\n\nReplaces the hero GIF with an unedited recording of the PUBLISHED openlore v2.1.6\non a fresh clone of BurntSushi/ripgrep, and replaces the one fabricated payload in\nthe README with real `orient --json` output from this repo.\n\n- New hero GIF (613 KB, down from 757 KB) wit\n[…]\n-party render that is currently rate-limited\n  upstream, so the section now degrades gracefully with live-chart and stargazer links.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(readme): re-record the hero demo on ripgrep and re-ground the cl…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-25T21:22:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d05125e479f16062e07f6a5b51f85dfaab9f5613",
          "body": "…he analysis scope (#284)\n\n* fix(security): fix four CodeQL findings and scope the analysis to shipped code\n\nThe first CodeQL baseline was 458 alerts. Triaged all of them; this change\nfixes what was real and stops the noise recurring.\n\nWHY 80% OF IT WAS NOISE\n368 of 458 alerts were IN test files, an\n[…]\ncher-parity flake, which reproduces on pristine main.\n\nCo-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(security): fix CodeQL findings, scope TLS per-request, and tune t…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-25T21:05:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5f8bb5ca1f09e6131d64daef316b0e87474feace",
          "body": "#282 deferred `preserve-caught-error` and `no-useless-assignment` so the\nfixes could be reviewed on their own. This is that change: both rules are\non and all 48 sites are fixed.\n\npreserve-caught-error (12 sites / 7 files)\n  Every one was `throw new Error(<message>)` inside a catch, discarding the\n  \n[…]\n pristine main and\npasses 3/3 in isolation, so it is pre-existing and unrelated — reported\nseparately rather than papered over here.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor: adopt eslint 10's two new recommended rules (#283)",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-25T19:28:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8a7a114925d7d7ee7848657381307f215e25e42f",
          "body": "Rebuilt on current main. This also removes a mismatch: eslint itself went\nto 10.8.0 in #275 while @eslint/js stayed on 9, and the two ship in\nlockstep.\n\n@eslint/js 10 promotes two rules into `recommended`, which surfaced 48\npre-existing violations:\n\n  preserve-caught-error   12 sites /  7 files\n  no\n[…]\nrules off, `eslint src`\nreports zero problems, so the bump introduces no other findings.\n\nCo-authored-by: Clay Good <hi@claygood.com>\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): bump @eslint/js from 9.39.5 to 10.0.1 (#282)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T18:40:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0789e3711029ed712e6af078b3c8a49bf4e86916",
          "body": "Rebuilt on current main. No code changes needed.\n\nCoverage here is better than for the other majors: `select`, `confirm`,\n`input` and `checkbox` are static named imports in prompts.ts, init.ts,\nsetup.ts and generate.ts, so tsc genuinely validates the export surface\nand signatures. All four also reso\n[…]\ns install, so that is\nleft as a separate call rather than folded into a dependency bump.\n\nCo-authored-by: Clay Good <hi@claygood.com>\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": true,
          "headline": "chore(deps): bump @inquirer/prompts from 7.10.1 to 8.5.2 (#281)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T18:31:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3f0a8f23895339219cbd43a05d4dd069de64d8c2",
          "body": "Rebuilt on current main. No code changes were needed, but green CI is not\nevidence here and was verified by hand instead.\n\nWhy CI cannot see this: the plugin is dynamically imported only by\n`openlore view`, `npm run build` is tsc (never a vite build), and\nview.test.ts mocks '@vitejs/plugin-react'. S\n[…]\nthe served HTML\n  contains react-refresh — the plugin is transforming, not just loading.\n\nCo-authored-by: Clay Good <hi@claygood.com>\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": true,
          "headline": "chore(deps): bump @vitejs/plugin-react from 5.0.2 to 6.0.4 (#280)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T18:25:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3001481b4910a3fcd1e35ae2d237f6416327ae02",
          "body": "Rebuilt on current main and paired with the type fix v7 requires.\n\n`ignore` v7 dropped `.default` from its published types, which broke\nfile-walker.ts's `ignoreModule.default ?? ignoreModule` interop unwrap at\ncompile time only — at runtime v7 still exposes both shapes (CJS\n`module.exports = ignore`\n[…]\n still honours .gitignore on this repo — 971 files\nwalked, zero node_modules/dist leaks.\n\nCo-authored-by: Clay Good <hi@claygood.com>\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": true,
          "headline": "chore(deps): bump ignore from 6.0.2 to 7.0.6 (#279)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T18:17:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "30b734569741fd16646b0b3b9299c9cf1621bb58",
          "body": "Rebuilt on current main (the Dependabot branch predates #275-#277) and\npaired with the one type fix the bump requires.\n\n@types/node 26 adds `bytes()` to `Response`, tracking the undici/WHATWG\nsurface. One hand-built mock Response in chat-agent.test.ts is typed as a\nfull `Response`, so it now needs t\n[…]\nnge what ships — types are dev-only and the package\npublishes no .d.ts referencing them.\n\nCo-authored-by: Clay Good <hi@claygood.com>\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): bump @types/node from 22.20.1 to 26.1.1 (#278)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T18:11:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2000bd9b643b9756db6e82879c0ad55da1eb189a",
          "body": "Bumps the composite-action group in /.github/actions/openlore-review with 2 updates: [actions/setup-node](https://github.com/actions/setup-node) and [actions/github-script](https://github.com/actions/github-script).\n\n\nUpdates `actions/setup-node` from 4.4.0 to 7.0.0\n- [Release notes](https://github.\n[…]\non-update:semver-major\n  dependency-group: composite-action\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the composite-action group (#277)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T18:04:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "56cd737cf1d39d276bc4f9d7ee076dd3b09f85cb",
          "body": "* chore(deps): close two gaps in the Dependabot config\n\nBoth surfaced from the first week of real Dependabot output.\n\n1. The ignore list named `web-tree-sitter` and `tree-sitter-wasms` but not\n   the native `tree-sitter` or the 18 `tree-sitter-*` grammars, so those\n   landed in the production-minor-\n[…]\nts own line because the wildcard requires the hyphen.\n\nCo-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(deps): close two gaps in the Dependabot config (#276)",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-25T17:56:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6aec298e583f31fb607ff8dc026260225a5bad7f",
          "body": "Rebuilt on current main (the original Dependabot branch conflicted after\n#270/#271/#274 landed) and paired with the audit-gate bookkeeping the\nupgrade forces.\n\neslint 10 raises its minimatch floor, which removes the eslint ->\nminimatch@3 -> brace-expansion@1.x path that GHSA-mh99 was allowlisted\nfor\n[…]\nint one that\nno longer does.\n\neslint 10 lints the codebase clean with no config changes.\n\nCo-authored-by: Clay Good <hi@claygood.com>\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): bump eslint from 9.17.0 to 10.8.0 (#275)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T17:42:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0efcdaa0d5dcdcd604df928f4f623f1b0bdc2da3",
          "body": "Bumps [globals](https://github.com/sindresorhus/globals) from 16.5.0 to 17.7.0.\n- [Release notes](https://github.com/sindresorhus/globals/releases)\n- [Commits](https://github.com/sindresorhus/globals/compare/v16.5.0...v17.7.0)\n\n---\nupdated-dependencies:\n- dependency-name: globals\n  dependency-versio\n[…]\nrect:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): bump globals from 16.5.0 to 17.7.0 (#274)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T17:27:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "70f03c827a06d9680a91e14ca8889a9edf252759",
          "body": "Bumps the dev-dependencies group with 9 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@earendil-works/pi-ai](https://github.com/earendil-works/pi/tree/HEAD/packages/ai) | `0.79.6` | `0.82.1` |\n| [@earendil-works/pi-coding-agent](https://github.com/earendil-works/pi/tree/HEAD/packages/codi\n[…]\non-update:semver-patch\n  dependency-group: dev-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): bump the dev-dependencies group with 9 updates (#271)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T17:27:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6a8f4f572e15edd518c17680f77fc8c23caa452d",
          "body": "Bumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [actions/setup-node](https://github.com/actions/setup-node).\n\n\nUpdates `actions/checkout` from 6.1.0 to 7.0.1\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https\n[…]\nsion-update:semver-major\n  dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the github-actions group with 2 updates (#270)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T17:26:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0618bd176b9fab405dfd0809f8d7874957ce54d2",
          "body": "* fix(openspec): repair the corpus defect that silently broke every archive\n\n`openspec archive` has been aborting for EVERY change, in a way nothing\nreported: openspec parses a main spec's requirements only from inside\n`## Requirements`, and 175 `### Requirement:` headers had accumulated outside\nit \n[…]\nfully applied to the spec,\nso archiving was purely moving the folder — verified requirement by requirement\nbefore moving.\n\n---------\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(spec): clean up the change backlog (#269)",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-25T17:26:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "12c3c2ea2d1c7a4ab27d191c05cfbcfce62b34a0",
          "body": "…lly (#268)\n\n* perf(analyzer): run Pass-1 extraction on a worker pool, byte-identically\n\nPass 1 — per-file tree-sitter parsing and fact extraction — was a strictly\nserial loop on one core, and it is 14.3s of this repo's 20.2s call-graph\nbuild. It is also embarrassingly parallel: no file's extraction\n[…]\nker in its\nassumptions rather than differently timed.\n\nCo-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(analyzer): run Pass-1 extraction on a worker pool, byte-identica…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-25T17:26:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9611bd1c6bfe38a5c4d960d3c234f9e0ea6bc7d6",
          "body": "…ity checks (#267)\n\n* fix(deps): pin the remaining vulnerable transitive deps\n\nDependabot's #263/#266 cleared tar, postcss, fast-uri, body-parser and\nthe modern brace-expansion line. Four gaps were left because each needs\nan override the automated PRs could not make:\n\n- sharp -> ^0.35.0: @huggingfac\n[…]\nnds with a completed run rather than a cancelled one.\n\nCo-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(security): update vulnerable dependencies and add automated secur…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-25T17:05:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6572a75b04dde207d4d8f2d352a729b2204cfa2c",
          "body": "…dates (#266)\n\nBumps the npm_and_yarn group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [brace-expansion](https://github.com/juliangruber/brace-expansion) | `1.1.13` | `1.1.16` |\n| [body-parser](https://github.com/expressjs/body-parser) | `2.2.2` | `2.3.0` |\n| [\n[…]\n dependency-type: indirect\n  dependency-group: npm_and_yarn\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the npm_and_yarn group across 1 directory with 7 up…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T15:18:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e47ad582b173b01ae546943a4c69bd1fed7025bf",
          "body": null,
          "is_bot": false,
          "headline": "fix: normalize Windows backslash paths before splitting on '/' (#264)",
          "author_name": "Tu Thanh Nguyen",
          "author_login": "zoroneo",
          "committed_at": "2026-07-25T15:14:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9020cffec465d66f3b94b7d30d238198ba8f7dc0",
          "body": "Bumps the npm_and_yarn group with 1 update in the / directory: [protobufjs](https://github.com/protobufjs/protobuf.js).\n\n\nUpdates `protobufjs` from 8.6.4 to 8.6.6\n- [Release notes](https://github.com/protobufjs/protobuf.js/releases)\n- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master\n[…]\ncy-type: direct:production\n  dependency-group: npm_and_yarn\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump protobufjs (#263)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T15:12:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b1b90238b929a7111bea4e2e3a6b475a41a9eacd",
          "body": "Bump to 2.1.6 and cut user-facing release notes for the 45-change\npost-v2.1.5 hardening sweep (all merged, #219–#262): self-healing\nindexes that never self-destruct, deterministic + atomically-written\nartifacts, a daemon that survives async event errors, tighter secret\nredaction and closed local HTT\n[…]\nource GitHub Release notes from the\nmatching CHANGELOG.md section, falling back to auto-generated notes if\nthe section is missing.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): v2.1.6 — the hardening release",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T22:58:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2be345af2dc56bb48549378b8c67d0a2b35b15c4",
          "body": "…#262)\n\nFour determinism-doctrine violations (decision c6d1ad07) in artifact/inventory\ngeneration, each fixed with an in-repo precedent — no new tuning constant, no LLM:\n\n- (a) llm-context.json phase-3 sampling used a `Math.random()` Fisher-Yates, so\n  two analyzes of an identical tree embedded diff\n[…]\negation to input order; digest test asserts the edge population\nmatches its label. Adds analyzer + architecture spec requirements.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(analyzer): make analysis artifacts a pure function of the input (…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T22:49:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d1e1840e620e731a3ded1b768c1e06497e31b759",
          "body": "…fact (#261)\n\nBoth artifact writers — the analyze generator and the live watcher — bare-wrote\nllm-context.json and its siblings, so a crash mid-write left a torn file that\nloads as \"your index is gone, re-run analyze\", and the watcher's self-heal\n`analyze --force` could race the watcher's own persis\n[…]\nze, stale-steal, decisions-lock independence).\nArchitecture spec: ADD ArtifactWritesAreAtomic, ConcurrentArtifactWritersSerialize.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(architecture): atomic writes and one lock for every analysis arti…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T22:25:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "744ed468679a24a5f2235dbe81b0fde9cde8e5ca",
          "body": "…rn an unredacted cycle (#260)\n\nTwo defects inside secret-redaction.ts — the single module every output channel\nscrubs through — let credentials survive a \"redaction\":\n\n(a) The Authorization pattern `Authorization:\\s*\\S+` consumed only the first token\n    (the scheme), so `Authorization: Basic dXNlc\n[…]\nUnredactedInput, and tests covering Basic/Digest/custom\nschemes, multi-line isolation, and cyclic object/array/cause-cycle graphs.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcp-security): redact the full Authorization value and never retu…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T22:01:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f82b1b07b3c133fe001b6ebfc72b06459b2e0548",
          "body": "The parity doctrine says the same structural capabilities ship through both\nthe MCP tools and the Pi extension, with any deviation stated. The audit found\nsilent drift: Pi's verify_claim could not express `decision-current`, six\nrecently-shipped conclusion tools never reached NAV_TOOLS, and the only\n[…]\no binary mode); replaced with the '\\x00' escape\n  (byte-identical at runtime).\n- Spec: mcp-quality gains PiSurfaceParityIsGuarded.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcp-quality): guard MCP↔Pi surface parity in both directions (#259)",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T21:30:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cb114beb31b1503023eef8aaac866ce252b78cef",
          "body": "…gistry (#258)\n\nA repo registered before its first `openlore analyze` stored an empty\nfingerprint, and the staleness check was gated on a truthy stored hash — so\nthe entry reported `indexed`/consultable FOREVER while its index drifted\narbitrarily, the exact silent-degradation class this audit closes\n[…]\non), and spec_store_status\n(index-unbaselined). Full suite green.\n\nChange: harden-federation-freshness (e2e audit follow-up pass).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(federation): baseline the empty fingerprint, degrade a corrupt re…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T20:53:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2ed7f27d3079e99f779a9021819803b78765b454",
          "body": "…ved process (#257)\n\nTwo long-lived paths registered Node event emitters without an 'error'\nlistener. An unhandled 'error' on an EventEmitter throws, and neither the\nserve daemon nor the stdio MCP server installs an uncaughtException handler,\nso the throw is fatal.\n\n- mcp-watcher: the .git ref watch\n[…]\nsAndRotation; mcp-handlers ADD\n  WatcherErrorEventsNeverKillTheHost.\n- lint + typecheck clean; full suite 6084 passed / 2 skipped.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(runtime): an async watcher/stream 'error' must not kill a long-li…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T20:30:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "452257f67369f84f63ecb548941ab0f6e49157e6",
          "body": "…e the capability, not the version (#256)\n\nengines.node declared >=22.5.0, but node:sqlite (imported at module load by\nEdgeStore, the epistemic lease, and preflight scoring) required\n--experimental-sqlite until Node 22.13.0 / 23.4.0 — and nothing passes that flag.\nA fresh install on 22.5–22.12 crash\n[…]\nends to constants.ts (one floor, three declarations);\nnew tests cover the probe branches and the capability-beats-arithmetic path.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): raise the Node floor to where node:sqlite exists — and prob…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T20:11:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "21297dc869a8b67faecb8a8b9ffb44cb15f60b72",
          "body": "…ifted line numbers (#255)\n\nTwo fidelity defects in the shared import/export parser\n(`src/core/analyzer/import-parser.ts`):\n\n(a) Modifier-prefixed exports were invisible. `parseJSExports` matched neither\n`export async function` nor a generator `export function* gen`, missed\n`export abstract class`, \n[…]\nsts stay green.\nSpec: analyzer gains ExportParserRecognizesModifierPrefixedExports and\nImportExportLineNumbersMatchOriginalSource.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(analyzer): recognize modifier-prefixed exports and fix comment-sh…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T19:51:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "71f425bf3f15f6600edeb7bbc173b6e2df6def91",
          "body": "… no more drifted route-handler edges (#254)\n\n`extractTsRouteDefinitions` parsed the SKELETON of a file (comment/log/blank\nlines removed, text shrunk) and computed every `route.line` against it, but the\nconsumers anchor that line into the ORIGINAL file bytes. Any comment or log\npreamble above a rout\n[…]\nraggler: delegate-lifecycle-scope-decision-sync\nfrontmatter proposed → shipped (merged as #236; prose already reconciled by #248).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(analyzer): length-preserving comment mask for TS/JS route lines —…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T19:24:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "69497f06d9d6395c515cea73caa049974d139d05",
          "body": "…ock, three doors (#253)\n\n`.openlore/serve.json` is a repo-local, attacker-writable artifact that OpenLore\nreads at three sites to discover the warm daemon, then FETCHES the host/port it\nnames and POSTs the project directory + full tool args to it. Only `serve.ts`\nvalidated it (loopback host, intege\n[…]\neader (outbound\n  counterpart of AllLocalHttpSurfacesShareTheGuard).\n- lint + typecheck clean; full suite 6042 passed / 2 skipped.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcp-security): validate serve.json at every reader — one shared l…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T19:02:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d95aae3d54d1f72b531a8fd02ab87b9001325247",
          "body": "…an't resurrect a rejected verdict (#252)\n\nsync_decisions with an explicit id promoted ANY decision to approved —\nincluding one a human explicitly rejected — and wrote it into the specs,\ndefeating the approve/reject governance gate through its own sync tool.\napprove_decision blocked only 'synced', s\n[…]\ns (MCP approve + sync),\napi/decisions.test.ts (API door). Full suite green (6026 passed).\n\nChange: fix-decision-status-transitions\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcp-handlers): guard decision status transitions — sync/approve c…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T18:39:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5f4467ea8be7d00ed97fc8dbc37bdf4ddebc59a5",
          "body": "…e, not the base tip (#251)\n\nstructural_diff's changed-file list is merge-base-scoped (three-dot), but its OLD\nsnapshots were read at the base ref's TIP. On any branch whose base advanced past\nthe branch point, a file changed on both sides yielded an old snapshot polluted\nwith the base branch's own \n[…]\n and parse-crash scenarios; verified to fail\nagainst the pre-fix code. Full suite green (6016 passed), lint/typecheck/build clean.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcp-handlers): structural_diff reads old content at the merge-bas…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T15:06:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f3895a85960a03d3fefc61e35c2f5b73be20b335",
          "body": "…k + ADR id normalization (#250)\n\nTwo live-reproduced honesty holes made the drift gate blind exactly when it\nmatters:\n\n(a) Staged/working-tree changes always fell through to +0/-0. `getChangedFiles`\nmerges staged and working-tree files into the changeset when `includeUnstaged`\nis set, but line stat\n[…]\nlers\" fix must also cover.\n\nSpecs: drift — ADD UncommittedChangesCarryRealLineCounts,\nADRIdentityIsNormalizedAcrossDriftDetection.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(drift): un-blind the drift gate — real counts for uncommitted wor…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T14:52:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "952ce96768549a1e948697a11dc74feaf4d715ed",
          "body": "… filenames stop silently dropping (#249)\n\n* fix(analyzer): quotepath-off at every git path-list spawn — non-ASCII filenames stop silently dropping\n\nGit's default core.quotepath=true renders any path with bytes above 0x80 as a\ndouble-quoted, octal-escaped C string in --name-only/--name-status/--nums\n[…]\n reference PR #249 in fix-git-path-quoting status\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(analyzer): quotepath-off at every git path-list spawn — non-ASCII…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T14:38:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "389b7a9d6ab140b2edaa6eac0456b20d863489dd",
          "body": "…248)\n\n14 change proposals were merged to main (PRs #221–#242) but still carried a\nstale `PROPOSED` status line — the proposal corpus read as if the work were\nunbuilt. Ground truth was established from git history (a real src-touching\nimplementation commit beyond the bulk audit commit), cross-checke\n[…]\n an unrelated PR\n(harden-openspec-writer-fidelity, unify-onboarding-entrypoint) were verified\ngenuinely unbuilt and left PROPOSED.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(openspec): reconcile shipped change statuses with git reality (#…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T14:18:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "58f1d0aff34d771e99dc24ede94453b87000feae",
          "body": "… verdicts from truncated literals (#247)\n\nThe duplicate detector's comment stripping ran string-blind: a `//` inside a\nURL or a `#` inside a hex color truncated the literal, so two functions\ndiffering ONLY in that constant normalized identical and were reported as\nclones at similarity 1.0 — exactly\n[…]\nth empirical repros and the language-selection/interpolation cases are pinned\nby tests. No clone snapshots existed to re-baseline.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(analyzer): string-literal-safe clone normalization — no false 1.0…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T14:00:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f8da4b7ad10ade6981e0fc18430a389c8df89a13",
          "body": "…the watcher-parity flake (#246)\n\nTwo liabilities that would bite on their own schedule (TestSuiteHasNoKnownTimeBombs):\n\n1. vi.mock hoisting deprecation. vitest hoists every vi.mock to the top of its\n   module and warns \"this will become an error in a future version\" for calls\n   written inside desc\n[…]\neintroduce a timer-based wait.\n\nFull suite green (308 files, 5986 passed), zero vi.mock hoisting warnings; lint +\ntypecheck clean.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(project): defuse the test-suite time bombs — vi.mock hoisting + …",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T13:37:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aaa2d8e4b2b289ec9c2b4787a8fac312ad2f9343",
          "body": "…ation is actually read (#245)\n\nThe global `--config <path>` option was inert: readOpenLoreConfig(rootPath) derived\nits own <root>/.openlore/config.json at ~45 call sites and ignored the flag, so a\nuser who pointed --config at a readable file elsewhere was silently served the\ndefault. (fix-cli-outpu\n[…]\ntConfigPathIsHonored. Full suite green (307 files, 5985\npassed); lint + typecheck clean. Stacked on fix-cli-output-hygiene (#244).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(config): honor the global --config path — an explicit config loc…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T11:02:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "29097996b48b09f079ccc628bbb804fce8b2f065",
          "body": "…est summaries, one vocabulary (#244)\n\nA full-surface CLI dogfood found a batch of small output/UX defects. Fixed together\nunder one requirement (OutputContractsAreUniform), each with a regression test:\n\n1. Color contract: color now flows through a shared chalk-backed layer\n   (src/utils/colors.ts) \n[…]\nnfig.json, no\n   package.json); manifest emit gains --dry-run.\n\nFull suite green (306 files, 5976 passed); lint + typecheck clean.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): uniform output contracts — color layer, fatal --config, hon…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T10:59:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c5517b722d85a0eddf1f9c74334dda7b1728ec1b",
          "body": "…staleness, unknown inputs (#243)\n\nThe honesty disciplines already existed; the v2.1.5 audit found the commands that\nskipped them. This makes them uniform behind one shared helper plus a parity guard.\n\n- resolveBaseRefDisclosed: one resolve-or-disclose helper for every --base command.\n  Certificatio\n[…]\n drops off the shared helper path.\n\nSpecs: cli ADDs BaseRefResolutionIsDisclosedOrFatal, ConclusionCommandsDiscloseIndexStaleness.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): uniform conclusion honesty — base-ref resolve-or-disclose, …",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T03:14:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b374025ae76fbc377842f8f345354e428d1607eb",
          "body": "…type mismatches, and version skew (#242)\n\n`readOpenLoreConfig` parsed the file with a bare `JSON.parse(...) as OpenLoreConfig`\n— a type assertion checked by nothing at runtime. A typo'd key (`pancResponse`,\n`embeding`) was silently dropped, the default silently won, and the user believed a\nfeature \n[…]\nes exactly as before.\n\nChange: add-config-schema-validation. Spec: config +ConfigUnknownKeysAreDisclosed,\n+ConfigVersionIsChecked.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(config): validate .openlore/config.json — disclose typo'd keys, …",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T02:35:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "71a2005fb12093608317138e2799a2a05957a530",
          "body": "…ed edit location the host can trust (#241)\n\nAdds one read-only conclusion tool (`locate_symbol_span`, family `navigate`) on\n`--preset full`. Given a `name`/`name::path` symbol it returns the byte-exact edit\nspan (startByte/endByte UTF-16 offsets + 1-based startLine/endLine) plus a freshness\nverdict\n[…]\nt budget bumped 88k→90k (documented). substrate/navigation\ndefaults byte-identical (new tool is opt-in, ADR-0023 benchmark-gated).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp-handlers): locate_symbol_span — a read-only, staleness-check…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T02:11:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "30bd6d8cf20120158bc0401cae9ed9cf50e3a542",
          "body": "…stroy the index, corruption is quarantined (#240)\n\nA schema-version bump made EdgeStore.open() DROP TABLE across the whole graph on the\nnext open — so a READ command after an upgrade (orient, search, any MCP query) silently\ndestroyed the index, and the user paid a full re-analyze for having asked a\n[…]\nuarantineCorruptSync in atomic-store.ts.\n\narchitecture spec: ADD ReadPathsNeverDestroyTheIndex, CorruptGraphStoreQuarantineParity.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(architecture): harden the graph-store lifecycle — reads never de…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T01:48:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c06cc5690a676677cc8ed3bf8311893ab7f950c6",
          "body": "…ccuracy gate (#239)\n\nHardens four runtime defects in the opt-in behavioral-governance subsystem without\nchanging its posture (modes stay off by default; blocking stays experimental, opt-in,\nand advisory-flagged; the defer-panic-* decisions are untouched):\n\n(a) L4 blocking no longer traps its own re\n[…]\nactivation gate, rotated-telemetry episode counting.\nFull suite green (5890 passed); typecheck + lint clean; panic e2e (23) green.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(panic): escapable L4 blocking, atomic watcher singleton, honest a…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T01:02:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3ca5fd38165e40f4f8f76e678880e626acf6669e",
          "body": "…re (#238)\n\nBrings OpenLore's spec corpus up to date with the product as it exists today, and adds a\nlightweight guard that keeps it accurate.\n\n- Refreshed the system overview to describe OpenLore clearly and concisely.\n- Kept only specs that map to real code, so the corpus reflects what the product\n[…]\nll test suite green (5,858 passing), type check clean, and OpenLore's own audit\nreports 0 orphan requirements and 0 stale domains.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(specs): refresh OpenLore's specs to match its current architectu…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-19T00:30:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bab6fb8fe6129b1f221fe99d4df97b04093fd234",
          "body": "…the wrong install (#237)\n\n`detectInstallMethod` classified any path containing `/node_modules/openlore/`\nas a global npm install, so `openlore update` run from a project-local\ndependency executed `npm install -g openlore@latest` — mutating global state the\nuser never touched — while Windows global \n[…]\ntory\nor absent evidence yields `unknown` and the existing manual fallback — disclosed\nindeterminacy, never a state-mutating guess.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): detect openlore install method from evidence, never mutate …",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T23:33:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e33b73118ddd2c1a4622f4c8becaa21e23e59580",
          "body": "…te change lifecycle to OpenSpec (#236)\n\n* refactor(decisions): scope decision sync to one owning domain; delegate change lifecycle to OpenSpec\n\nOpenLore is a distinct product; OpenSpec (@fission-ai/openspec) is the\nspec-driven-development framework OpenLore is built with, not a thing OpenLore\nrebui\n[…]\nlean; decisions +\ndrift suites green (437 tests).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(decisions): scope decision sync to one owning domain; delega…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T23:07:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6255e8f5b6ca228a28671e557fb47da20f17458b",
          "body": "…est guard (#235)\n\n* fix(mcp-security): put the view server behind the serve daemon's request guard\n\nThe `view` graph server mounted /api/chat (runs the chat agent, spends the\nuser's LLM key), /api/skeleton (reads arbitrary project files), and /api/search\nwith no Host check, no Origin check, and no \n[…]\nes\" test above it — no promise outlives the test.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcp-security): put the view server behind the serve daemon's requ…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T21:58:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4afd1f17ce32094476d088b8052b49a12c250bfd",
          "body": "…s-only contents (#234)\n\nThe default `substrate` preset carries the navigation core plus governance\n*reads* (recall, verify_claim, blast_radius) — the read face, not the write\nface (remember, record_decision). Every outward \"both faces of the substrate\"\nclaim was an over-claim: the same defect class\n[…]\n must\nfollow the ADR-0023 process — no preset contents change here.\n\nSpec: mcp-quality gains DefaultSurfaceCopyMatchesItsContents.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcp-quality): reconcile the substrate preset's copy with its read…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T21:16:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8adde93d4df70f98e2be99c9725ad5ded847eb87",
          "body": "…ete the adjacency table (#233)\n\nThe conclusion-over-graph contract's runtime check (assertConclusionShape) had\nzero non-test callers — the invariant that \"the server does the traversal so the\nagent never has to\" was aspirational exactly where it matters. And the\nNoRedundantConclusions adjacency tab\n[…]\ng bumped 13_700 -> 14_200 (find_path is in the navigation\npreset; its cross-reference costs ~180 B) — a conscious budget decision.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp-quality): enforce the conclusion contract at dispatch, compl…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T21:03:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1e05f514189b9e135505304d529165f8ee22bb52",
          "body": "… it to the registry (#232)\n\nThe lease's per-session cognitive-load accounting silently under-counted 27 of 72\ndispatched tools: every unlisted tool fell to the minimum weight via the `?? 1`\nfallback, including deep graph traversals on the default surface. The starkest case:\nfind_path scored 1 while\n[…]\n tool without a weight now fails CI.\n\nThresholds unchanged; no payload or tool-surface change. Closes fix-epistemic-lease-weights.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcp-handlers): complete the epistemic-lease weight table and bind…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T20:46:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "663fd9c2d224b3a198498e6eb4963b9603026f0a",
          "body": "… honest outcome, CAS-checked sync promotion (#231)\n\nCloses three robustness gaps in the record_decision → background-consolidation\npath (e2e-audit fix-track item):\n\n1. An ENOENT spawn could crash the long-lived MCP server. spawnConsolidateBackground\n   now registers child.on('error'), contains any \n[…]\nomotion with co-resident draft survival, and isDecisionsLockHeld held/stale/\nabsent/non-mutating. Full suite green (5759 passing).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcp-handlers): harden decision consolidation — fail-closed spawn,…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T19:14:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5dfdf39b7edb3885c977e34ba6c229acbb62e57e",
          "body": "Extend the honesty-contract guard pattern to the remaining quantitative doc\nclaims nothing bound to code: the README language-count badge (and the\ndocs/output.md call-graph note), the \"5500+\" test floor, and package metadata.\n\n- src/doc-claim-sync.test.ts derives the badge counts from CODE_LANGUAGES\n[…]\ncount and preset-size claims were already guarded by mcp-tool-count-doc.test.ts\n(PR #229) — descoped here, documented in tasks.md.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(mcp-quality): guard quantitative doc claims against code (#230)",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T18:54:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1a5fde5b031f5c390f417e4ccfaf65caa8a9afb8",
          "body": "…R-0023 (#229)\n\nThe ADR-0023 flip made `substrate` the out-of-box default (via the single\n`LEAN_DEFAULT_PRESET` constant), but the blast radius was under-applied: help\nstrings, docstrings, one adapter comment, two reference docs — and one real code\npath (`openlore serve`) — still named or implemente\n[…]\ne default. Full `vitest run src examples` green\n(294 files / 5744 tests); serve /health + all --help verified live; analyze clean.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): one default preset, said once — align every surface with AD…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T18:39:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b608eea483846aa0cbe41fd2b3054f119b594a8b",
          "body": "… ambiguity (#228)\n\nThe resolution ladder enforced refuse-to-guess everywhere except three spots that\ntook candidates[0]: bare-name (name_only), Python self./cls. dispatch, and\ncapitalized-receiver (type_name). On a common name (parse/run/build) the edge\nsilently landed on whichever node sorted firs\n[…]\n-> 94, exactly 19\nfirst-match guesses replaced by 19 ambiguous sites (each >=2 candidates); every\nother confidence tier unchanged.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(analyzer): harden call resolution — never bind by first-match on…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T18:14:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8c7e02198a6c1653f32fadc7f9748bd613d8f1b5",
          "body": "…from parse errors or grammar drift (#227)\n\n* feat(analyzer): parse-health disclosure — no silent under-extraction from parse errors or grammar drift\n\nThe language-support registry can't over-claim a *language*, but nothing disclosed\nFAILED extraction *inside* a supported language: a file the pinned\n[…]\ncost\nclass as the sibling style-fingerprint lane.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(analyzer): parse-health disclosure — no silent under-extraction …",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T17:25:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cc1899524df6091324b502d3eec2977f263f6fa0",
          "body": "…ed (#226)\n\nTwo detectLanguage functions had silently diverged: the complete one in\nsignature-extractor.ts and an incomplete EXT_TO_LANGUAGE-backed copy in\ncode-shaper.ts that fed AST-aware chunking. The .mts/.cts/.jsx variants (and\n~12 languages) resolved to 'unknown' on the chunking path → generic\n[…]\ndetection-bounded.\n\nImplements openspec change fix-language-detection-single-source\n(analyzer: ADD SingleSourceLanguageDetection).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(analyzer): single-source language detection — one detector, guard…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T16:19:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c255602f9d999b8625f1ca95e20ce04bfc6b60f6",
          "body": "…ir, not just disclosure (#225)\n\n* feat(analyzer): self-healing index — read-path staleness triggers background repair\n\nGeneralize the cold-start bootstrap into a shared background repair service:\nevery read-path staleness signal (integrity mismatched, stale region, schema\nreset, aged analysis) now \n[…]\namp make-index-self-healing IMPLEMENTED (PR #225)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(analyzer): make the index self-healing — staleness triggers repa…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T15:50:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2fe24253321c00e52282d4ca2583c38aba18c6e1",
          "body": "…append-only audit trail (#223)\n\n* feat(decisions): decision autopilot — auto-accept governance with an append-only audit trail\n\nImplements openspec change add-decision-autopilot. With\n{ \"governance\": { \"autopilot\": true } } in .openlore/config.json the commit\ngate auto-accepts verified decisions in\n[…]\npic.com>\n\n* docs(openspec): mark add-decision-autopilot IMPLEMENTED (PR #223)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(decisions): decision autopilot — auto-accept governance with an …",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T14:48:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ebd9b751fd349b220edc4a6100de3f721a864207",
          "body": "…nizer stamp guards serving end-to-end (#222)\n\nThe keyword (BM25) corpus was rebuilt in memory from the raw `text` column on the\nfirst query in every process, so the `TOKENIZER_VERSION` stamp added by\nfix-bm25-identifier-tokenization guarded only the incremental-patch lane, never\nserving — the shipp\n[…]\nits and implements openspec change persist-tokenized-keyword-corpus\n(analyzer: ADD PersistedKeywordCorpusGuardedByTokenizerStamp).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(analyzer): persist the tokenized BM25 keyword corpus so the toke…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T13:53:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9c05d5d002042132b52df0369e30046f445ed0ea",
          "body": "… match compound identifiers (#221)\n\nThe keyword (BM25) tokenizer — the zero-config DEFAULT retrieval mode — lowercased\nand split only on non-alphanumerics, so `getUserById` became the single token\n`getuserbyid` and the most common identifier queries (`user`, `getUser`) missed\nentirely. Split compou\n[…]\nng common words).\n\nImplements openspec change fix-bm25-identifier-tokenization\n(analyzer: ADD IdentifierAwareKeywordTokenization).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(analyzer): identifier-aware BM25 tokenization so sub-word queries…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-18T13:36:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1294c359898a4d166dd7473b881e9bb941dc2101",
          "body": "PR #220 pinned tree-sitter-c-sharp to ^0.21.3 in package.json but did not\nregenerate the lock file, so npm ci failed on main with EUSAGE\n(lock file's tree-sitter-c-sharp@0.23.1 does not satisfy ^0.21.3).\n\nVerified locally: npm ci dry-run in sync, typecheck + build green, grammar\nloads at 0.21.3 and parses, 94 tests across the C#-touching suites pass.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deps): sync package-lock.json with tree-sitter-c-sharp ^0.21.3 pin",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-10T11:13:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f8f0742facab3b1d784a39151e12e4de709bc1af",
          "body": "… ABI 14 (#220)\n\nCo-authored-by: Evgeniy Kolobov <ekolobov@symplast.com>",
          "is_bot": false,
          "headline": "fix(grammar): pin tree-sitter-c-sharp to ^0.21.3 to match tree-sitter…",
          "author_name": "Zhenya Kolobov",
          "author_login": "zkolobov",
          "committed_at": "2026-07-10T11:10:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6aa2553a6bca8d8ac76cd049dfcb5de0b877653a",
          "body": "…passes\n\nAdds the full 2026-07 end-to-end audit change set under openspec/changes/:\n86 proposals from the four 2026-07-03 passes (previously uncommitted) plus\n23 new fifth-pass proposals (2026-07-08): 16 fixes from four subsystem\naudits of the layers no prior pass read internally (drift/verification\n[…]\nERS evidence, build-graph ingest, flag\nimpact, benchmark protocol). Index and provenance in E2E-AUDIT-2026-07.md.\n\nSpec-only; no source changes.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(openspec): e2e audit 2026-07 — 109 proposed changes across five …",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-07-08T20:29:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "faacc2f43afe5b5bb1b5f08512bd4373be202f9c",
          "body": "…(#219)",
          "is_bot": false,
          "headline": "fix(viewer): clear selection on cluster collapse to kill ghost edges …",
          "author_name": "Laurent",
          "author_login": "laurentftech",
          "committed_at": "2026-07-01T21:08:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a34eb5545af5caedc1ac9d337f088253c6302c24",
          "body": "… the benchmark-cleared substrate default (#218)\n\n* feat(cli): openlore features — guided opt-in activation (\"where do I turn on X?\")\n\nImplements the ZeroConfigWithGuidedActivation requirement of the\nrefine-happy-path-and-defaults change. OpenLore needs zero config for its core\nvalue; everything bey\n[…]\nin the README were already updated with the flip.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: refine the happy path — guided activation, legible surface, and…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-28T23:11:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "21af57485eb87120a1b670b9a17d5c4318d79340",
          "body": "The README marketing rewrite renamed the Value Scorecard heading, trimmed\nthe 2026-06-03 re-prove figures, and bolded a word inside \"factual freshness\nnote\" — breaking the self-referential guards in honesty-contract.test.ts and\nepistemic-lease.test.ts. Restore the guarded strings without losing the new\nframing.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(readme): restore honesty-contract + epistemic-lease guarded strings",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-28T17:04:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d2281769f385555ffe5ce052a39f16e82e719fad",
          "body": null,
          "is_bot": false,
          "headline": "updated readme for v2.1.4",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-28T16:56:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2dcdf5d2bf43da9f35ed2fb9f89c79acdba3f5c",
          "body": "… (one substrate, two faces) (#217)\n\n* feat(mcp): capability-family taxonomy + substrate both-faces preset (one substrate, two faces)\n\nImplements the unify-navigation-and-governance-substrate change: turns the ~72-tool\nsurface from a flat registry into one discoverable-by-family substrate.\n\n- TOOL_C\n[…]\nsuite 279 files / 5538 passed. No source changed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp): capability-family taxonomy + `substrate` both-faces preset…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-27T15:49:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a4a4a49217d333dc54ee5bb1a630a994aaff5417",
          "body": "…MCP server; substrate-unification specs; archive 52 shipped changes (#216)\n\n* docs(openspec): archive 52 shipped changes; add substrate-unification + call-graph-modularization proposals\n\nSpec-only. No code, no dependency, no LLM.\n\nArchive sweep:\n- Move 52 fully-shipped change proposals into changes\n[…]\ntest. tsc + eslint clean; cold-start tests green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: zero-interaction onboarding + auto-update + self-bootstrapping …",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-27T04:16:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "932d7951dca91c5c11bbd83ca0aabeac778dc661",
          "body": "…I remove/rename an env var) (#215)\n\n* feat(mcp): env-var impact graph — analyze_env_impact (what breaks if I remove/rename an env var)\n\nThe configuration analogue of analyze_impact: given an env var name, return the\nline-precise read sites (file/line/enclosing function; module-level reads\ndisclosed\n[…]\n run src examples green (274 files / 5395 tests).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp): env-var impact graph — analyze_env_impact (what breaks if …",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-27T02:35:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "88f1bc6b9f2365df13a5fb108b958dcd6dad8c5b",
          "body": "… same-named nested functions) (#214)\n\n* feat(analyzer): stable identity for nested functions — stop collapsing same-named nested functions into one node\n\nSame-named functions nested in different scopes (a `function helper(){}` in one\nmethod and another in a second, two `const cleanup = …` in one fu\n[…]\nosal/spec/tasks document the query-spec coverage.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(analyzer): stable identity for nested functions (stop collapsing…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-27T01:51:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b901c07e00156085057a078f1f51d2954dc2ed42",
          "body": "…exceptions escape a function, where they're caught) (#213)\n\n* feat(mcp): error-propagation graph — analyze_error_propagation surfaces what exceptions escape a function and where they're caught\n\nThe call graph answers who-calls-whom but is silent on \"what can throw out of\nhere, and is it handled?\" —\n[…]\n\nlist across the six identity-bearing subsystems.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp): error-propagation graph — analyze_error_propagation (what …",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-27T01:00:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d60f6dfa548a65f96834cf795d2b92f1cca10cec",
          "body": "…tead of reinvent) (#212)\n\n* feat(mcp): find_clones — symbol/snippet-scoped clone query (reuse instead of reinvent)\n\nExpose the existing near-clone detector as an edit-time conclusion tool. Where\nget_duplicate_report is the whole-repo audit (every clone group, read from a\nprecomputed artifact), find\n[…]\n passed, 2 skipped. Change: add-clone-query-tool.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp): find_clones — symbol/snippet-scoped clone query (reuse ins…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-26T21:22:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2b50513c14da5af90f676b3340fc1dd523c89f01",
          "body": "…xpress, observability, and the cross-repo federation bridge (#211)\n\n* fix(cross-service): make single-repo client→handler HTTP edges actually wire for Express & same-language full-stack\n\nThe call-graph already projects outbound HTTP client call sites onto route\nhandlers as function→function `http_e\n[…]\nd, byte-identical runs, find_dead_code liveness).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cross-service): client→handler HTTP topology — fix single-repo E…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-26T20:17:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "810aad945a1987e7627a5c6c50b727748b800dc5",
          "body": "…nce, bootstrap everywhere) (#210)\n\n* feat(cli): shareable graph artifact — export bundle / import (index once, bootstrap everywhere)\n\nA team's graph index is a deterministic function of the committed source, so\nre-indexing it on every machine and CI run is redundant work that scales with\nteam size.\n[…]\ne dogfooding of PR #210's export/import boundary.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): shareable graph artifact — export bundle / import (index o…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-26T18:05:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f7091ac77ea5ee5d461dd8000504ca5c303c6564",
          "body": "…hanged since a ref (#209)\n\n* feat(mcp): change significance briefing — briefing_since ranks what changed since a ref\n\nAdds an opt-in conclusion tool (and `openlore briefing-since` CLI) that answers the\nreviewer / catch-up / onboarding question the other change tools don't: not \"what does\nMY pending\n[…]\n contract-shape\nintact, coverage-gaps unaffected.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp): change significance briefing — briefing_since ranks what c…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-26T16:09:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0a858281772e474556bb1bec3448660537fa10a1",
          "body": "… idiom profile + get_style_fingerprint tool (#208)\n\n* feat(analyzer): codebase style fingerprint — descriptive per-language idiom profile + get_style_fingerprint tool\n\nTally a fixed, closed set of idiom counters (function form, const/let binding,\nternary/if, await/.then, template/concat, function-n\n[…]\nboth pass in\nisolation, 16/16 — not regressions.)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(analyzer): codebase style fingerprint — descriptive per-language…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-26T14:06:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "705022882ffe7b655be65622d448af206e84722a",
          "body": "…king-change verdict over a diff) (#207)\n\n* feat(mcp): public API surface contract — certify_public_surface tool + CLI (breaking-change verdict over a diff)\n\nFEATURE-UPDATES proposal 2. Adds a deterministic public-surface artifact and a\nbreaking-change classifier, surfaced as one opt-in conclusion t\n[…]\nlic-surface\nsuite 54 → 60; full suite 5167 green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp): public API surface contract — certify_public_surface (brea…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-26T02:43:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "48dd5aeb12b1122e89007ba2fdc4197dff5a8b7f",
          "body": "…sions across renames & moves (#206)\n\n* feat(memory): symbol identity continuity — carry anchored memory/decisions across renames & moves\n\nA pure rename (computeTax → calculateTax) or a file move changed a symbol's name\n(hence its stableId), orphaning every memory, decision, and spec link anchored t\n[…]\ncheck, build green; rename carry reconfirmed e2e.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(memory): symbol identity continuity — carry anchored memory/deci…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-26T00:49:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "215e52424d931e4dc5dc45f4b223f0939513941c",
          "body": "… Python relative imports + re_export provenance (#205)\n\n* feat(call-graph): re-export/barrel resolution threaded into Pass 2 + re_export provenance\n\nCall resolution recall (FEATURE-UPDATES proposal 4), scoped to the genuinely-missing\nedge class. The import resolver now follows re-export chains (exp\n[…]\nsable scratchpad repos; all real repos untouched.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(call-graph): call resolution recall — re-export/barrel (TS/JS) +…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-25T22:16:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6f81a6b6cdd54aed6915489e7eb4732bab49eb26",
          "body": "… + coverage-gaps CLI (#204)\n\n* feat: structural test-coverage gap report — report_coverage_gaps tool + coverage-gaps CLI\n\nSurfaces important code with NO reaching test, ranked by hub/chokepoint\nsignificance — the structural inverse of select_tests over the whole graph,\nno runtime/coverage tool, det\n[…]\nesolvedOnly.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: sim <sim@test.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: structural test-coverage gap report — report_coverage_gaps tool…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-25T12:58:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "12f2b01ab6259a8a01edefd4032cce36c41f9740",
          "body": "…ol (+ correct stale proposal statuses) (#203)\n\n* docs(openspec): correct 6 stale DRAFT statuses to IMPLEMENTED\n\nAudited all open change proposals against src/. Six were marked DRAFT but their\nfeatures actually shipped (the 2026-06-20 batch — decisions recorded \"before any\ncode\", code landed, status\n[…]\nhened guard.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: sim <sim@test.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: declarative language-support registry + get_language_support to…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-25T11:07:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9758d398e79a4688ced42d0df1008d071a6d11d6",
          "body": "…nches/PRs/agent tasks (PARALLEL-WORK proposal 4) (#202)\n\n* feat: plan_parallel_work — schedule N tasks into safe-to-dispatch waves\n\nPARALLEL-WORK-COORDINATION proposal 2: the agent-facing conclusion tool that\ncomposes the footprint + hazard classifier (proposal 1) into the artifact a swarm\norchestr\n[…]\nNo new tool.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: sim <sim@test.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: cross-actor interference map — map_in_flight_conflicts over bra…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-25T03:14:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "048adfa581bee6484ba94a47d8d8fad2ab7118fd",
          "body": "…ed write-footprint (PARALLEL-WORK proposal 3) (#201)\n\n* feat: footprint escape detection — flag diffs that leave their declared write-footprint\n\nThe back-side safety net of PARALLEL-WORK-COORDINATION (proposal 3). Proposals 1 and 2\nplan a swarm from *predicted* (declared) write-footprints — advisor\n[…]\ntests green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: sim <sim@test.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: footprint escape detection — flag diffs that leave their declar…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-25T03:10:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eb78e54b391885759a8be0d0bae7e5e643779cf7",
          "body": "feat: change footprint projection + pairwise hazard classifier (PARALLEL-WORK proposal 1)",
          "is_bot": false,
          "headline": "Merge pull request #199 from clay-good/feat/change-footprint-projection",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-25T03:05:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed44c7dab2841b17b196040002b99909ef1336de",
          "body": "… gaps\n\nAudited PR #199 against its spec and dogfood. The 24 existing tests cover\nevery spec scenario, but 5 public-contract gaps had zero coverage; the most\nload-bearing was WAW-over-RAW precedence — a refactor reordering those branches\nwould silently downgrade a true write-write conflict to a mere\n[…]\nrified byte-identical against the real 5932-node graph.\nFull suite: 245 files, 4893 pass / 2 skip; lint + typecheck + build clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(change-footprint): adversarial regression set closing 5 coverage…",
          "author_name": "sim",
          "author_login": null,
          "committed_at": "2026-06-25T01:04:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "842bfef38a13304bf0e0fb413b79f4133aef4425",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: mark PARALLEL-WORK proposal 1 (footprint projection) shipped",
          "author_name": "sim",
          "author_login": null,
          "committed_at": "2026-06-24T23:22:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "00b8de5890b65914146b50e0bcb298e9fc0549a3",
          "body": "The borrow-analysis core of PARALLEL-WORK-COORDINATION (proposal 1). Generalizes\nblast_radius from one symbol to a declared task: a deterministic three-region\nfootprint (write / read / affected) plus a soft co-change annotation, and a pure\npairwise hazard classifier (WAW / shared-append / RAW / WAR \n[…]\n5932-node graph, reproducing the validation exercise's shared-append\non dispatchTool (see DOGFOOD-change-footprint-projection.md).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: change footprint projection + pairwise hazard classifier",
          "author_name": "sim",
          "author_login": null,
          "committed_at": "2026-06-24T23:21:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "73907c3171d38f2d77002ef2923e0e3ebe1ea448",
          "body": "…-structural-diff\n\nfeat(pi): close the MCP-tool / Pi-extension parity gap (16 native tools)",
          "is_bot": false,
          "headline": "Merge pull request #198 from laurentftech/feat/pi-expose-blast-radius…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-24T23:05:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e2aa15c43fde39197c4a867bb85f597f230c594",
          "body": "…-injection\n\nfeat(pi): task-scoped context injection parity with `orient --inject`",
          "is_bot": false,
          "headline": "Merge pull request #197 from laurentftech/feat/pi-task-scoped-context…",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-24T23:03:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b44b8e8b73a3323bf4148401cb3759a72bddeeb4",
          "body": "feat: index integrity attestation — never serve a half-built graph silently",
          "is_bot": false,
          "headline": "Merge pull request #196 from clay-good/feat/index-integrity-attestation",
          "author_name": "Clay Good",
          "author_login": "clay-good",
          "committed_at": "2026-06-24T23:03:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fad655cf8c80a8eeefde95eaed8fd33332a99014",
          "body": "…-side + agent-surface tests\n\nSecond adversarial review of the index integrity attestation (PR #196).\n\nBug fixes (dogfooded on this repo's real index):\n- HIGH — refreshAttestationCounts could mask a `mismatched` verdict. It re-stamped the\n  attestation's schemaVersion to the current value; in the wi\n[…]\ne as-built behavior, including that the\nverdict is a load-time/cache-miss property kept healthy by the watcher's lockstep refresh.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "harden(round 2): no schema-mask on refresh, passive checkpoint, build…",
          "author_name": "sim",
          "author_login": null,
          "committed_at": "2026-06-24T22:53:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7edf0f1a2ebb44e917904bfc379cb9bbeb670f99",
          "body": "The compact tool-result render listed modifiedSpecs, which duplicates\nthe per-item `specs` already shown under synced[]. Skip it so the glance\nis just the synced decisions plus any errors.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(pi): drop redundant modifiedSpecs from the sync_decisions glance",
          "author_name": "Laurent FRANCOISE",
          "author_login": "laurentftech",
          "committed_at": "2026-06-24T21:48:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f8bb42cfb476a0f956c72990adea7954cc8fd2b5",
          "body": "Export NAV_TOOLS and add a surface contract test:\n- names unique; every entry fully specified for registerTool (name,\n  label, description, guideline, object params schema);\n- every Pi-surfaced tool name exists in TOOL_DEFINITIONS — the daemon\n  registry — so a renamed/removed tool (e.g. get_decisio\n[…]\n params are a subset of the daemon tool's\n  inputSchema (directory excepted — injected by the daemon), catching a\n  typo'd or stale param name.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(pi): assert the NAV_TOOLS surface stays valid and dispatchable",
          "author_name": "Laurent FRANCOISE",
          "author_login": "laurentftech",
          "committed_at": "2026-06-24T21:26:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3444421504a87b849f287f50610a7af4d02bbb73",
          "body": "Spec & drift: check_spec_drift, audit_spec_coverage, list_spec_domains.\nDecision gate: record_decision, list_decisions, approve_decision,\nreject_decision, sync_decisions — so the Pi agent can drive the project's\nown decision workflow (record before coding; present/approve/sync at the\ngate). approve_\n[…]\ns —\nrarely triggered, and surface dilution hurts weak local tool-callers\n(the Spec 14 / lean-default lesson). Pi stays curated, not exhaustive.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(pi): expose spec-drift and decision-gate tools as native tools",
          "author_name": "Laurent FRANCOISE",
          "author_login": "laurentftech",
          "committed_at": "2026-06-24T21:20:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b2ff738accdfc391e68fe0f7b87c11dba9dedaff",
          "body": "… tools\n\nPi is a full agent host, not a second-class one: if Claude Code agents\nget code-anchored memory via the memory preset, the Pi agent should too.\nremember persists a durable fact anchored to a symbol/file (self-\ninvalidating); recall surfaces task-scoped memories with a freshness\nverdict. serve dispatches both regardless of preset; Pi already ships a\nwrite tool (configure), so statefulness is no blocker.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(pi): expose remember and recall (code-anchored memory) as native…",
          "author_name": "Laurent FRANCOISE",
          "author_login": "laurentftech",
          "committed_at": "2026-06-24T21:12:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 43,
      "commits_last_year": 1437,
      "latest_release_at": "2026-07-19T23:07:09Z",
      "latest_release_tag": "v2.1.6",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 23,
      "days_since_latest_release": 6,
      "mean_days_between_releases": 4.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 100,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "openlore",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "architectural-memory",
            "structural-analysis",
            "code-analysis",
            "call-graph",
            "static-analysis",
            "ai-coding-agents",
            "mcp",
            "cli",
            "pi-package"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/openlore",
          "is_deprecated": false,
          "latest_version": "2.1.6",
          "repository_url": "https://github.com/clay-good/openlore",
          "versions_count": 27,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 3645,
          "first_published_at": "2026-05-12T11:45:51.764000Z",
          "latest_published_at": "2026-07-19T23:09:38.512000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "popularity": {
      "forks": 31,
      "stars": 207,
      "watchers": 3,
      "fork_history": {
        "days": [
          {
            "date": "2026-02-07",
            "count": 1
          },
          {
            "date": "2026-02-18",
            "count": 2
          },
          {
            "date": "2026-02-28",
            "count": 1
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-03",
            "count": 1
          },
          {
            "date": "2026-03-04",
            "count": 1
          },
          {
            "date": "2026-03-16",
            "count": 1
          },
          {
            "date": "2026-03-17",
            "count": 1
          },
          {
            "date": "2026-03-25",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 1
          },
          {
            "date": "2026-04-03",
            "count": 1
          },
          {
            "date": "2026-04-10",
            "count": 1
          },
          {
            "date": "2026-04-11",
            "count": 2
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-04-28",
            "count": 1
          },
          {
            "date": "2026-05-07",
            "count": 1
          },
          {
            "date": "2026-05-27",
            "count": 1
          },
          {
            "date": "2026-06-05",
            "count": 1
          },
          {
            "date": "2026-06-07",
            "count": 1
          },
          {
            "date": "2026-06-12",
            "count": 1
          },
          {
            "date": "2026-06-15",
            "count": 1
          },
          {
            "date": "2026-06-25",
            "count": 1
          },
          {
            "date": "2026-06-28",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-15",
            "count": 1
          },
          {
            "date": "2026-07-16",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 30,
        "total_forks": 31
      },
      "star_history": null,
      "open_issues_and_prs": 1
    },
    "ai_readiness": {
      "has_nix": true,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [
        "src/core/scip/vendor/scip.proto"
      ],
      "has_devcontainer": false,
      "typecheck_configs": [
        "examples/drift-demo/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 228745,
      "source_files_sampled": 757,
      "oversized_source_files": 15,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 25853
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.3,
            "advisory_ids": [
              "GHSA-f88m-g3jw-g9cj"
            ],
            "fixed_version": "0.35.0",
            "advisory_count": 1,
            "oldest_advisory_days": 4
          },
          {
            "name": "@hono/node-server",
            "direct": false,
            "version": "1.19.15",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-frvp-7c67-39w9"
            ],
            "fixed_version": "2.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 4
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 1,
          "moderate": 1
        },
        "advisory_count": 2,
        "affected_count": 2,
        "assessed_count": 361,
        "malicious_count": 0,
        "assessed_package": "npm:openlore@2.1.6",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@inquirer/prompts",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.5.2"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.27.1"
        },
        {
          "name": "@modelcontextprotocol/server-memory",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2026.1.26"
        },
        {
          "name": "@vitejs/plugin-react",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.0.4"
        },
        {
          "name": "chalk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.3.0"
        },
        {
          "name": "chokidar",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.0.0"
        },
        {
          "name": "commander",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.1.0"
        },
        {
          "name": "glob",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.0.6"
        },
        {
          "name": "ignore",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.0.6"
        },
        {
          "name": "jsonc-parser",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.3.1"
        },
        {
          "name": "ora",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.1.1"
        },
        {
          "name": "react",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.1.1"
        },
        {
          "name": "react-dom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.1.1"
        },
        {
          "name": "tree-sitter-wasms",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "0.1.13"
        },
        {
          "name": "vite",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.0.16"
        },
        {
          "name": "web-tree-sitter",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "0.25.0"
        },
        {
          "name": "yaml",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.6.1"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@inquirer/prompts",
            "direct": true,
            "version": "8.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "@modelcontextprotocol/sdk",
            "direct": true,
            "version": "1.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@modelcontextprotocol/server-memory",
            "direct": true,
            "version": "2026.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-react",
            "direct": true,
            "version": "6.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": true,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": true,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": true,
            "version": "12.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": true,
            "version": "13.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": true,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": true,
            "version": "7.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": true,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": true,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "ora",
            "direct": true,
            "version": "8.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": true,
            "version": "19.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": true,
            "version": "19.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-wasms",
            "direct": true,
            "version": "0.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": true,
            "version": "8.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "web-tree-sitter",
            "direct": true,
            "version": "0.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": true,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@anthropic-ai/sdk",
            "direct": false,
            "version": "0.91.1",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/crc32",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/sha256-browser",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/sha256-js",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/supports-web-crypto",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/util",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/client-bedrock-runtime",
            "direct": false,
            "version": "3.1048.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/core",
            "direct": false,
            "version": "3.974.11",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/core",
            "direct": false,
            "version": "3.977.1",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-env",
            "direct": false,
            "version": "3.972.37",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-env",
            "direct": false,
            "version": "3.972.61",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-http",
            "direct": false,
            "version": "3.972.39",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-http",
            "direct": false,
            "version": "3.972.63",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-ini",
            "direct": false,
            "version": "3.972.41",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-ini",
            "direct": false,
            "version": "3.973.6",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-login",
            "direct": false,
            "version": "3.972.41",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-login",
            "direct": false,
            "version": "3.972.68",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-node",
            "direct": false,
            "version": "3.972.42",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-node",
            "direct": false,
            "version": "3.972.72",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-process",
            "direct": false,
            "version": "3.972.37",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-process",
            "direct": false,
            "version": "3.972.61",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-sso",
            "direct": false,
            "version": "3.972.41",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-sso",
            "direct": false,
            "version": "3.973.5",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-web-identity",
            "direct": false,
            "version": "3.972.41",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-web-identity",
            "direct": false,
            "version": "3.972.67",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/eventstream-handler-node",
            "direct": false,
            "version": "3.972.16",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/eventstream-handler-node",
            "direct": false,
            "version": "3.972.30",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-eventstream",
            "direct": false,
            "version": "3.972.12",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-eventstream",
            "direct": false,
            "version": "3.972.25",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-websocket",
            "direct": false,
            "version": "3.972.19",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-websocket",
            "direct": false,
            "version": "3.972.43",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/nested-clients",
            "direct": false,
            "version": "3.997.35",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/nested-clients",
            "direct": false,
            "version": "3.997.9",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/signature-v4-multi-region",
            "direct": false,
            "version": "3.996.27",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/signature-v4-multi-region",
            "direct": false,
            "version": "3.996.42",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/token-providers",
            "direct": false,
            "version": "3.1048.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/token-providers",
            "direct": false,
            "version": "3.1095.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/types",
            "direct": false,
            "version": "3.973.8",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/types",
            "direct": false,
            "version": "3.974.2",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/util-locate-window",
            "direct": false,
            "version": "3.965.5",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/util-locate-window",
            "direct": false,
            "version": "3.965.8",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/xml-builder",
            "direct": false,
            "version": "3.972.24",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/xml-builder",
            "direct": false,
            "version": "3.972.37",
            "ecosystem": "npm"
          },
          {
            "name": "@aws/lambda-invoke-store",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@aws/lambda-invoke-store",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.29.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@bcoe/v8-coverage",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@earendil-works/pi-agent-core",
            "direct": false,
            "version": "0.82.1",
            "ecosystem": "npm"
          },
          {
            "name": "@earendil-works/pi-ai",
            "direct": false,
            "version": "0.82.1",
            "ecosystem": "npm"
          },
          {
            "name": "@earendil-works/pi-coding-agent",
            "direct": false,
            "version": "0.82.1",
            "ecosystem": "npm"
          },
          {
            "name": "@earendil-works/pi-tui",
            "direct": false,
            "version": "0.82.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/runtime",
            "direct": false,
            "version": "1.11.3",
            "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": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-array",
            "direct": false,
            "version": "0.23.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-helpers",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/core",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/object-schema",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/plugin-kit",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "@google/genai",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@hono/node-server",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@huggingface/jinja",
            "direct": false,
            "version": "0.5.9",
            "ecosystem": "npm"
          },
          {
            "name": "@huggingface/transformers",
            "direct": false,
            "version": "3.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/core",
            "direct": false,
            "version": "0.19.2",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/node",
            "direct": false,
            "version": "0.16.8",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/types",
            "direct": false,
            "version": "0.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/retry",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/colour",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-arm64",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-x64",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-freebsd-wasm32",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-arm64",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-x64",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm64",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-ppc64",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-riscv64",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-s390x",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-x64",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-arm64",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-x64",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm64",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-ppc64",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-riscv64",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-s390x",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-x64",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-arm64",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-x64",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-wasm32",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-webcontainers-wasm32",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-arm64",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-ia32",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-x64",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/ansi",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/checkbox",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/confirm",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/core",
            "direct": false,
            "version": "11.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/editor",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/expand",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/external-editor",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/figures",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/input",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/number",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/password",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/rawlist",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/search",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/select",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/type",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@isaacs/fs-minipass",
            "direct": false,
            "version": "4.0.1",
            "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": "@jsonjoy.com/base64",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/base64",
            "direct": false,
            "version": "17.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/buffers",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/buffers",
            "direct": false,
            "version": "17.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/codegen",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/codegen",
            "direct": false,
            "version": "17.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/fs-core",
            "direct": false,
            "version": "4.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/fs-fsa",
            "direct": false,
            "version": "4.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/fs-node",
            "direct": false,
            "version": "4.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/fs-node-builtins",
            "direct": false,
            "version": "4.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/fs-node-to-fsa",
            "direct": false,
            "version": "4.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/fs-node-utils",
            "direct": false,
            "version": "4.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/fs-print",
            "direct": false,
            "version": "4.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/fs-snapshot",
            "direct": false,
            "version": "4.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/json-pack",
            "direct": false,
            "version": "1.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/json-pack",
            "direct": false,
            "version": "17.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/json-pointer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/json-pointer",
            "direct": false,
            "version": "17.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/util",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsonjoy.com/util",
            "direct": false,
            "version": "17.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@lancedb/lancedb",
            "direct": false,
            "version": "0.22.4-beta.3",
            "ecosystem": "npm"
          },
          {
            "name": "@lancedb/lancedb-darwin-arm64",
            "direct": false,
            "version": "0.22.4-beta.3",
            "ecosystem": "npm"
          },
          {
            "name": "@lancedb/lancedb-darwin-x64",
            "direct": false,
            "version": "0.22.4-beta.3",
            "ecosystem": "npm"
          },
          {
            "name": "@lancedb/lancedb-linux-arm64-gnu",
            "direct": false,
            "version": "0.22.4-beta.3",
            "ecosystem": "npm"
          },
          {
            "name": "@lancedb/lancedb-linux-arm64-musl",
            "direct": false,
            "version": "0.22.4-beta.3",
            "ecosystem": "npm"
          },
          {
            "name": "@lancedb/lancedb-linux-x64-gnu",
            "direct": false,
            "version": "0.22.4-beta.3",
            "ecosystem": "npm"
          },
          {
            "name": "@lancedb/lancedb-linux-x64-musl",
            "direct": false,
            "version": "0.22.4-beta.3",
            "ecosystem": "npm"
          },
          {
            "name": "@lancedb/lancedb-win32-arm64-msvc",
            "direct": false,
            "version": "0.22.4-beta.3",
            "ecosystem": "npm"
          },
          {
            "name": "@lancedb/lancedb-win32-x64-msvc",
            "direct": false,
            "version": "0.22.4-beta.3",
            "ecosystem": "npm"
          },
          {
            "name": "@mariozechner/clipboard",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@mariozechner/clipboard-darwin-arm64",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@mariozechner/clipboard-darwin-universal",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@mariozechner/clipboard-darwin-x64",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@mariozechner/clipboard-linux-arm64-gnu",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@mariozechner/clipboard-linux-arm64-musl",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@mariozechner/clipboard-linux-riscv64-gnu",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@mariozechner/clipboard-linux-x64-gnu",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@mariozechner/clipboard-linux-x64-musl",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@mariozechner/clipboard-win32-arm64-msvc",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@mariozechner/clipboard-win32-x64-msvc",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@mistralai/mistralai",
            "direct": false,
            "version": "2.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@nodable/entities",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/semantic-conventions",
            "direct": false,
            "version": "1.41.1",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/semantic-conventions",
            "direct": false,
            "version": "1.43.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.139.0",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/aspromise",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/base64",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/codegen",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/eventemitter",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/fetch",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/float",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/path",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/pool",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/utf8",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/utf8",
            "direct": false,
            "version": "1.1.2",
            "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": "@silvia-odwyer/photon-node",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/core",
            "direct": false,
            "version": "3.24.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/core",
            "direct": false,
            "version": "3.30.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/credential-provider-imds",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/credential-provider-imds",
            "direct": false,
            "version": "4.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/fetch-http-handler",
            "direct": false,
            "version": "5.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/fetch-http-handler",
            "direct": false,
            "version": "5.6.11",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/is-array-buffer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/node-http-handler",
            "direct": false,
            "version": "4.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/node-http-handler",
            "direct": false,
            "version": "4.9.11",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/signature-v4",
            "direct": false,
            "version": "5.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/signature-v4",
            "direct": false,
            "version": "5.6.10",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/types",
            "direct": false,
            "version": "4.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/types",
            "direct": false,
            "version": "4.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/util-buffer-from",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/util-utf8",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/chai",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/deep-eql",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/esrecurse",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "22.19.19",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.9.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "26.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/retry",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "8.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "8.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/project-service",
            "direct": false,
            "version": "8.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "8.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/tsconfig-utils",
            "direct": false,
            "version": "8.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "8.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "8.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "8.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "8.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "8.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/coverage-v8",
            "direct": false,
            "version": "4.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/expect",
            "direct": false,
            "version": "4.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/mocker",
            "direct": false,
            "version": "4.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/pretty-format",
            "direct": false,
            "version": "4.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/runner",
            "direct": false,
            "version": "4.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/snapshot",
            "direct": false,
            "version": "4.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/spy",
            "direct": false,
            "version": "4.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/utils",
            "direct": false,
            "version": "4.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-formats",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "apache-arrow",
            "direct": false,
            "version": "21.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "assertion-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ast-v8-to-istanbul",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "bcrypt",
            "direct": false,
            "version": "^5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "bignumber.js",
            "direct": false,
            "version": "9.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "boolean",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "bowser",
            "direct": false,
            "version": "2.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-equal-constant-time",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bound",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "chardet",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "chownr",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-cursor",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-spinners",
            "direct": false,
            "version": "2.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "cli-width",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cors",
            "direct": false,
            "version": "2.8.6",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "data-uri-to-buffer",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-properties",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "detect-node",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ecdsa-sig-formatter",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "ee-first",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "es6-error",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escape-html",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "10.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "9.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "11.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "eventsource",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "eventsource-parser",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "expect-type",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": false,
            "version": "^4.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "express-rate-limit",
            "direct": false,
            "version": "8.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fast-string-truncated-width",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-string-width",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "fast-wrap-ansi",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-xml-builder",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-xml-parser",
            "direct": false,
            "version": "5.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fetch-blob",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatbuffers",
            "direct": false,
            "version": "25.9.23",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "formdata-polyfill",
            "direct": false,
            "version": "4.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "gaxios",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "gaxios",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "gcp-metadata",
            "direct": false,
            "version": "8.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-to-regex.js",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "global-agent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "17.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "globalthis",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "google-auth-library",
            "direct": false,
            "version": "10.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "google-auth-library",
            "direct": false,
            "version": "10.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "google-logging-utils",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "guid-typescript",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "highlight.js",
            "direct": false,
            "version": "10.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "hono",
            "direct": false,
            "version": "4.12.32",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "9.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-agent",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "hyperdyperid",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ip-address",
            "direct": false,
            "version": "10.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "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-promise",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-coverage",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-report",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-reports",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jiti",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jose",
            "direct": false,
            "version": "6.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-bigint",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-to-ts",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-typed",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stringify-safe",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-with-bigint",
            "direct": false,
            "version": "3.5.10",
            "ecosystem": "npm"
          },
          {
            "name": "jsonwebtoken",
            "direct": false,
            "version": "^9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jwa",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jws",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-android-arm64",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-arm64",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-x64",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-freebsd-x64",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-gnu",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-musl",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-gnu",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-musl",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-arm64-msvc",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-x64-msvc",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "long",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "magicast",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "marked",
            "direct": false,
            "version": "18.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "matcher",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "memfs",
            "direct": false,
            "version": "4.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-descriptors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.54.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-function",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "minizlib",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stream",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.16",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-addon-api",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-addon-api",
            "direct": false,
            "version": "8.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-domexception",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-gyp-build",
            "direct": false,
            "version": "4.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "object-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "obug",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "onnxruntime-common",
            "direct": false,
            "version": "1.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "onnxruntime-common",
            "direct": false,
            "version": "1.22.0-dev.20250409-89f8206ba4",
            "ecosystem": "npm"
          },
          {
            "name": "onnxruntime-node",
            "direct": false,
            "version": "1.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "onnxruntime-web",
            "direct": false,
            "version": "1.22.0-dev.20250409-89f8206ba4",
            "ecosystem": "npm"
          },
          {
            "name": "openai",
            "direct": false,
            "version": "6.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-retry",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "partial-json",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-expression-matcher",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-scurry",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "pg",
            "direct": false,
            "version": "^8.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "pkce-challenge",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "platform",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.23",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "proper-lockfile",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "protobufjs",
            "direct": false,
            "version": "7.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "protobufjs",
            "direct": false,
            "version": "8.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.3",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "reflect-metadata",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "roarr",
            "direct": false,
            "version": "2.15.4",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "router",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "scheduler",
            "direct": false,
            "version": "0.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "semver-compare",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "serialize-error",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "0.35.3",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-weakmap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "siginfo",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "stackback",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "stdin-discarder",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strnum",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tar",
            "direct": false,
            "version": "7.5.22",
            "ecosystem": "npm"
          },
          {
            "name": "thingies",
            "direct": false,
            "version": "2.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinybench",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "tinyrainbow",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "toidentifier",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tree-dump",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter",
            "direct": false,
            "version": "0.22.4",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-bash",
            "direct": false,
            "version": "0.23.3",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-c",
            "direct": false,
            "version": "0.23.6",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-c-sharp",
            "direct": false,
            "version": "0.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-cpp",
            "direct": false,
            "version": "0.23.4",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-elixir",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-go",
            "direct": false,
            "version": "0.23.4",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-java",
            "direct": false,
            "version": "0.23.5",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-javascript",
            "direct": false,
            "version": "0.23.1",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-kotlin",
            "direct": false,
            "version": "0.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-php",
            "direct": false,
            "version": "0.23.12",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-python",
            "direct": false,
            "version": "0.23.6",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-ruby",
            "direct": false,
            "version": "0.23.1",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-rust",
            "direct": false,
            "version": "0.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-scala",
            "direct": false,
            "version": "0.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-swift",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "tree-sitter-typescript",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "ts-algebra",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "tsx",
            "direct": false,
            "version": "4.23.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-is",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "typebox",
            "direct": false,
            "version": "1.1.38",
            "ecosystem": "npm"
          },
          {
            "name": "typebox",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "^5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-eslint",
            "direct": false,
            "version": "8.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "8.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.24.6",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "4.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "^4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "web-streams-polyfill",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "why-is-node-running",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.21.1",
            "ecosystem": "npm"
          },
          {
            "name": "xml-naming",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "3.25.76",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "zod-to-json-schema",
            "direct": false,
            "version": "3.25.2",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 626,
        "direct_count": 19,
        "indirect_count": 607
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 254,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 17,
        "closed_unmerged_prs": 11
      },
      "bus_factor": 2,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "clay-good",
          "commits": 623,
          "avatar_url": "https://avatars.githubusercontent.com/u/237345393?v=4"
        },
        {
          "type": "User",
          "login": "laurentftech",
          "commits": 541,
          "avatar_url": "https://avatars.githubusercontent.com/u/44120190?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 72,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        },
        {
          "type": "User",
          "login": "mipmip",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/658612?v=4"
        },
        {
          "type": "User",
          "login": "Caspersonn",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/96787412?v=4"
        },
        {
          "type": "User",
          "login": "mhv2109",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/14115762?v=4"
        },
        {
          "type": "User",
          "login": "zoroneo",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/208247780?v=4"
        },
        {
          "type": "User",
          "login": "Wars",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/1128707?v=4"
        },
        {
          "type": "User",
          "login": "rzylim",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/19969292?v=4"
        },
        {
          "type": "User",
          "login": "zkolobov",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/4434702?v=4"
        }
      ],
      "contributors_sampled": 10,
      "top_contributor_share": 0.5
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "codeql.yml",
        "release.yml",
        "scorecard.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.js"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 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": 8,
            "reason": "26 out of 29 merged PRs checked by a CI test -- score normalized to 8",
            "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/18 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 9 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": 10,
            "reason": "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 4 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": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 6,
            "reason": "dependency not pinned by hash detected -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 8,
            "reason": "SAST tool detected but not run on all commits",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 9,
            "reason": "1 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "3f81d3211de524ac5c100bc99eb2cb14beb1d0f3",
        "ran_at": "2026-07-25T23:11:11Z",
        "aggregate_score": 7.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": true,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-25T22:25:57Z",
      "oldest_open_prs": [
        {
          "number": 288,
          "created_at": "2026-07-25T22:55:07Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-25T22:25:14Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/clay-good/OpenLore",
    "host": "github.com",
    "name": "OpenLore",
    "owner": "clay-good"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 78,
      "inputs": {
        "security": 77,
        "vitality": 88,
        "community": 68,
        "governance": 69,
        "engineering": 88
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 88,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "commits_last_year": 1437,
              "human_commit_share": 0.88,
              "days_since_last_push": 0,
              "active_weeks_last_year": 23
            },
            "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": "23/52 weeks with commits",
                "points": 15.9,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 23
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "1437 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 1437
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 43,
              "latest_release_tag": "v2.1.6",
              "releases_from_tags": false,
              "days_since_latest_release": 6,
              "mean_days_between_releases": 4.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "43 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 43
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~4.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 4.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 68,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 52,
            "inputs": {
              "forks": 31,
              "stars": 207,
              "watchers": 3,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "207 stars",
                "points": 37.5,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 207
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "31 forks",
                "points": 12.3,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 31
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "3 watchers",
                "points": 1.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "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": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 59,
            "inputs": {
              "packages": [
                "openlore"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 3645
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "3,645 downloads/month across npm",
                "points": 47.5,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 3645,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 69,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 10,
              "top_contributor_share": 0.5
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 50% of commits",
                "points": 11.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 50
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "10 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 9 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "merged_prs": 254,
              "open_issues": 0,
              "closed_issues": 17,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 11
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "254/265 decided PRs merged",
                "points": 36.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 254,
                      "decided": 265
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/18 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 41,
            "inputs": {
              "followers": 19,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "clay-good",
              "public_repos": 39,
              "account_age_days": 287
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "19 followers of clay-good",
                "points": 9.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 19,
                      "login": "clay-good"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "39 public repos, account ~0 yr old",
                "points": 13.2,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 39
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "openlore"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 6
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 6 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "27 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 27
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 88,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "4 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "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": "eslint.config.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "26 out of 29 merged PRs checked by a CI test -- score normalized to 8",
                "points": 16,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "developer-tools",
                "software-architecture",
                "static-analysis",
                "adr",
                "agentic-workflows",
                "ai-agents",
                "call-graph",
                "codebase-analysis",
                "knowledge-graph",
                "living-documentation",
                "llm-tools",
                "mcp-server",
                "model-context-protocol",
                "code-navigation",
                "coding-agents",
                "dead-code-detection",
                "infrastructure-as-code",
                "scip",
                "test-impact-analysis",
                "tree-sitter"
              ],
              "has_wiki": true,
              "homepage": "https://www.npmjs.com/package/openlore",
              "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://www.npmjs.com/package/openlore",
                "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": "20 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "good",
        "name": "Security",
        "value": 77,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "good",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 75,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 7.5
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection 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": "26 out of 29 merged PRs checked by a CI test -- score normalized to 8",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 1/18 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 9 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": "update tool detected",
                "points": 7.5,
                "status": "met",
                "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 4 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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 6",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool detected but not run on all commits",
                "points": 4,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "1 existing vulnerabilities detected",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "good",
            "name": "Dependency advisories",
            "note": "Matched the npm:openlore@2.1.6 runtime dependency closure — what installing the published package pulls in — 361 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:openlore@2.1.6",
                  "assessed": 361
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 84,
            "inputs": {
              "source": "osv",
              "advisories": 2,
              "affected_packages": 2,
              "assessed_packages": 361,
              "unassessed_packages": 0,
              "affected_by_severity": "high 1, moderate 1",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "2 affected: sharp 0.34.5 (high 7.3), @hono/node-server 1.19.15 (moderate 5.9)",
                "points": 9.1,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 2,
                      "packages": "sharp 0.34.5 (high 7.3), @hono/node-server 1.19.15 (moderate 5.9)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "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": 361,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 4
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "excellent",
        "name": "AI Readiness",
        "value": 87,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.989,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 25853
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, 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": "87 of 88 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 87,
                      "sampled": 88
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "has_nix": true,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "examples/drift-demo/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.86,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.12
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "eslint.config.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "examples/drift-demo/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples/drift-demo/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, Nix, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, Nix, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "86 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 86,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "12 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 12,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 228745,
              "source_files_sampled": 757,
              "oversized_source_files": 15
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "15/757 source files over 60KB",
                "points": 53.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 757,
                      "oversized": 15
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "excellent",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": true,
              "api_schema_files": [
                "src/core/scip/vendor/scip.proto"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "src/core/scip/vendor/scip.proto",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "src/core/scip/vendor/scip.proto"
                    }
                  }
                ],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "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"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T23:11:31.120671Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/c/clay-good/OpenLore.svg",
  "full_name": "clay-good/OpenLore",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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