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

nicolasmelo1 / logion

Agent-native course marketplace and skill registry for executable AI-agent curricula

PythonMIT★ 33 зірки⑂ 2 форкиз трав. 2026 р.Переглянути на GitHub ↗

nicolasmelo1/logion має індекс здоров’я 65 зі 100, що відповідає смузі «Помірний». Найвищий показник — Engineering Quality (90/100), найнижчий — Security (48/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

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

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

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

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

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

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

Власність

Nicolas LealОсобистий обліковий запис
120 підписників73 публічні репозиторіїз черв. 2015 р.@palmaresHQ

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

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

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
PyPIlogion-cli0.1.152 675155 днів томуlogionmarketplaceagentskillcli
PyPIlogion-client0.1.15-105 днів томуagentlogionmarketplacesdk
PyPIlogion-skillmap0.1.0-12 дні томуlogionskillmappackage-mapinference
npm@logionsh/cli0.1.153 077155 днів томуlogionclimarketplaceagent

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

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

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

73Добрий · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
7.6/36Ритм комітів — 11/52 тижнів із комітами
18/18Обсяг комітів — 276 комітів за останній рік
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Використані вхідні дані
commits_last_year276
human_commit_share0,97
days_since_last_push0
active_weeks_last_year11
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 42 релізів
36/36Свіжість релізів — останній реліз 2 дн. тому
27/27Ритм релізів — реліз кожні ~2,1 дн.
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Використані вхідні дані
releases_count42
latest_release_taglogion-skillmap-v0.1.0
releases_from_tagsні
days_since_latest_release2
mean_days_between_releases2,1

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

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

58Помірний · 18% загального індексу
Як обчислюється оцінка
24.4/60Зірки — 33 зірок
0/25Форки — 2 форків
0/15Спостерігачі — 0 спостерігачів
Використані вхідні дані
forks2
stars33
watchers0
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так
Як обчислюється оцінка
50.1/80Щомісячні завантаження — 5 752 завантажень/місяць у npm, pypi
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packageslogion-cli, logion-client, logion-skillmap, @logionsh/cli
dependents
ecosystemsnpm, pypi
total_downloads
monthly_downloads5 752
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

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

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

52Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
0.3/22.5Розподіл комітів — головний контриб’ютор — автор 98% комітів
4.1/13.5Широта контриб’юторів — 3 контриб’юторів
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Використані вхідні дані
bus_factor1
contributors_sampled3
top_contributor_share0,985
Як обчислюється оцінка
15.6/46.8Вирішення issue — закрито 33% issue
31.3/38.3Прийняття PR — злито 184/225 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 0/29 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs184
open_issues6
closed_issues3
issue_closed_ratio0,333
closed_unmerged_prs41
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
15/25Охоплення власника — 120 підписників у nicolasmelo1
25/25Послужний список — 73 публічних репозиторіїв, вік облікового запису ~11 р.
Використані вхідні дані
followers120
owner_typeUser
is_verified
owner_loginnicolasmelo1
public_repos73
account_age_days4 055
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

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

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 4 пакет(ів) у npm, pypi
35/35Свіжість публікацій — остання публікація 2 дн. тому
20/20Історія версій — 15 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packageslogion-cli, logion-client, logion-skillmap, @logionsh/cli
ecosystemsnpm, pypi
any_deprecatedні
min_days_since_publish2

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

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

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

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

100Відмінний
Як обчислюється оцінка
30/30README
25/25Каталог документації
15/15Сайт документації / домашня сторінка — https://logion.sh
10/10Опис репозиторію
10/10Теми — 20 тем
10/10Wiki
Використані вхідні дані
topicsagents, claude-code, claude-code-skill, clawhub, directory, hermes, hermes-skill, network, openclaw, skill, skill-development, skills, skills-course, logion, ai, ai-agent, ai-agents, llm, llm-tools, openai
has_wikiтак
homepagehttps://logion.sh
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

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

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

Стан безпеки

35У зоні ризику
Як обчислюється оцінка
6.8/7.5Binary-Artifacts — binaries present in source code
3.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 28 out of 28 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/29 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 27 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate3,5
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
25/25Непрямі залежності без відомих сповіщень — жодна непряма залежність не має відомих сповіщень
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories0
affected_packages0
assessed_packages17
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено з runtime-замиканням залежностей pypi:logion-cli@0.1.15 — тим, що тягне за собою встановлення опублікованого пакета, — 17 пакетів. Досяжність не аналізується.

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

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

76Добрий · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — AGENTS.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 94 з 97 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,969
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes6 968
Як обчислюється оцінка
18/18Розгортання однією командою — Makefile, packages/agent-companion/Makefile, packages/agent-proving-ground/Makefile, packages/client/Makefile
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — eslint.config.mjs
11/11Статична перевірка типів — packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed
10/10Відтворюване середовище — lockfile
8/10Підтверджена практика роботи з агентами — 4 з останніх 100 комітів створено агентом або з його зазначенням
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilespackage-lock.json, uv.lock
has_dockerfileні
typed_languageні
bootstrap_filesMakefile, packages/agent-companion/Makefile, packages/agent-proving-ground/Makefile, packages/client/Makefile
has_devcontainerні
has_linter_configтак
typecheck_configspackages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed
agent_commit_share0,04
toolchain_manifests
dependency_bot_commit_share0
Як обчислюється оцінка
27/45Типізований код — Python з конфігурацією перевірки типів (packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed)
54.9/55Керовані розміри файлів — 1/569 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languagePython
largest_source_bytes60 138
source_files_sampled569
oversized_source_files1
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalні
api_schema_files

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

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

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

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch pypi package 'logion' from its registry
  • Could not fetch pypi package 'logion-bot' from its registry
  • Could not fetch pypi package 'logion-indexer' from its registry
  • Could not fetch pypi package 'logion-landing' from its registry
  • Could not fetch pypi package 'logion-scanners' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Докладніше

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

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

111222212026-072026-072026-07
Мажорні 0Мінорні 0Патчі 0
OpenSSF Scorecard 3.5 / 10
3.5сукупно

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

9Binary-Artifactsbinaries present in source code
5Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests28 out of 28 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/29 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities27 existing vulnerabilities detected
Прямі залежності 23
РеєстрПакетОбмеження версіїМаніфест
PyPIpyyaml>=6.0,<7.0packages/agent-companion/pyproject.toml
PyPIpydantic>=2.8packages/agent-proving-ground/pyproject.toml
PyPIpyyaml>=6.0packages/agent-proving-ground/pyproject.toml
PyPIrich>=13.7packages/agent-proving-ground/pyproject.toml
PyPIlogion-clientpackages/cli/pyproject.toml
PyPIlogion-skillmappackages/cli/pyproject.toml
PyPIpydantic>=2.7,<3.0.0packages/cli/pyproject.toml
PyPIpyyaml>=6.0,<7.0packages/cli/pyproject.toml
PyPIshtab>=1.7,<2.0packages/cli/pyproject.toml
PyPIemail-validator>=2.1,<3.0.0packages/client/pyproject.toml
PyPIhttpx>=0.27,<1.0.0packages/client/pyproject.toml
PyPIpydantic>=2.7,<3.0.0packages/client/pyproject.toml
PyPIlogion-skillmappackages/indexer/pyproject.toml
PyPIpyyaml>=6.0packages/indexer/pyproject.toml
PyPIfastapi>=0.136.1,<0.137.0packages/landing/pyproject.toml
PyPIjinja2>=3.1.6,<4.0.0packages/landing/pyproject.toml
PyPImarkdown-it-py>=4.0.0,<5.0.0packages/landing/pyproject.toml
PyPIpyyaml>=6.0.2,<7.0.0packages/landing/pyproject.toml
PyPIpyyaml>=6.0,<7.0packages/scanners/pyproject.toml
PyPIpyyaml>=6.0packages/skillmap/pyproject.toml
PyPIhttpx>=0.28,<0.29packages/social-management/pyproject.toml
PyPIpydantic>=2.6,<3packages/social-management/pyproject.toml
PyPIpyyaml>=6.0,<7.0packages/social-management/pyproject.toml
Усі залежності не зібрано

Не вдалося зібрати розв'язаний набір залежностей для цього звіту: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Сповіщення про залежності 0

Встановлення pypi:logion-cli@0.1.15 тягне 17 пакетів, прямих і транзитивних: 0 мають відомі сповіщення, з них 0 — прямі залежності.

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

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

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "agents",
        "claude-code",
        "claude-code-skill",
        "clawhub",
        "directory",
        "hermes",
        "hermes-skill",
        "network",
        "openclaw",
        "skill",
        "skill-development",
        "skills",
        "skills-course",
        "logion",
        "ai",
        "ai-agent",
        "ai-agents",
        "llm",
        "llm-tools",
        "openai"
      ],
      "is_fork": false,
      "size_kb": 3785,
      "has_wiki": true,
      "homepage": "https://logion.sh",
      "languages": {
        "CSS": 37107,
        "HTML": 59093,
        "Shell": 84505,
        "Python": 2968987,
        "Makefile": 17570,
        "JavaScript": 58295,
        "PowerShell": 74267,
        "TypeScript": 47517
      },
      "pushed_at": "2026-07-24T10:29:45Z",
      "created_at": "2026-05-13T21:35:35Z",
      "owner_type": "User",
      "updated_at": "2026-07-23T13:09:30Z",
      "description": "Agent-native course marketplace and skill registry for executable AI-agent curricula",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Nicolas Leal",
      "type": "User",
      "login": "nicolasmelo1",
      "company": "@palmaresHQ",
      "location": "São Paulo",
      "followers": 120,
      "avatar_url": "https://avatars.githubusercontent.com/u/12915742?v=4",
      "created_at": "2015-06-16T17:14:54Z",
      "is_verified": null,
      "public_repos": 73,
      "account_age_days": 4055
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "logion-skillmap-v0.1.0",
          "kind": "other",
          "published_at": "2026-07-22T12:14:10Z"
        },
        {
          "tag": "logion-cli-v0.1.15",
          "kind": "other",
          "published_at": "2026-07-19T01:48:58Z"
        },
        {
          "tag": "logion-client-v0.1.15",
          "kind": "other",
          "published_at": "2026-07-19T01:48:50Z"
        },
        {
          "tag": "logion-companion-v0.1.15",
          "kind": "other",
          "published_at": "2026-07-19T01:48:37Z"
        },
        {
          "tag": "logion-companion-v0.1.14",
          "kind": "other",
          "published_at": "2026-07-18T19:04:34Z"
        },
        {
          "tag": "logion-cli-v0.1.13",
          "kind": "other",
          "published_at": "2026-07-07T16:53:26Z"
        },
        {
          "tag": "logion-client-v0.1.13",
          "kind": "other",
          "published_at": "2026-07-07T16:53:25Z"
        },
        {
          "tag": "logion-companion-v0.1.13",
          "kind": "other",
          "published_at": "2026-07-07T16:52:57Z"
        },
        {
          "tag": "logion-cli-v0.1.12",
          "kind": "other",
          "published_at": "2026-07-03T11:08:23Z"
        },
        {
          "tag": "logion-client-v0.1.12",
          "kind": "other",
          "published_at": "2026-07-03T11:08:22Z"
        },
        {
          "tag": "logion-companion-v0.1.12",
          "kind": "other",
          "published_at": "2026-07-03T11:07:58Z"
        },
        {
          "tag": "logion-client-v0.1.11",
          "kind": "other",
          "published_at": "2026-07-02T02:48:04Z"
        },
        {
          "tag": "logion-cli-v0.1.11",
          "kind": "other",
          "published_at": "2026-07-02T02:47:55Z"
        },
        {
          "tag": "logion-companion-v0.1.11",
          "kind": "other",
          "published_at": "2026-07-02T02:47:38Z"
        },
        {
          "tag": "logion-client-v0.1.5",
          "kind": "other",
          "published_at": "2026-07-01T04:50:16Z"
        },
        {
          "tag": "logion-cli-v0.1.10",
          "kind": "other",
          "published_at": "2026-07-01T04:23:55Z"
        },
        {
          "tag": "logion-companion-v0.1.7",
          "kind": "other",
          "published_at": "2026-07-01T04:23:36Z"
        },
        {
          "tag": "logion-cli-v0.1.9",
          "kind": "other",
          "published_at": "2026-06-29T02:26:05Z"
        },
        {
          "tag": "logion-companion-v0.1.6",
          "kind": "other",
          "published_at": "2026-06-29T02:25:51Z"
        },
        {
          "tag": "logion-cli-v0.1.8",
          "kind": "other",
          "published_at": "2026-06-29T01:30:53Z"
        },
        {
          "tag": "logion-companion-v0.1.5",
          "kind": "other",
          "published_at": "2026-06-29T01:30:51Z"
        },
        {
          "tag": "logion-cli-v0.1.7",
          "kind": "other",
          "published_at": "2026-06-29T00:54:57Z"
        },
        {
          "tag": "logion-cli-v0.1.6",
          "kind": "other",
          "published_at": "2026-06-29T00:24:09Z"
        },
        {
          "tag": "logion-cli-v0.1.5",
          "kind": "other",
          "published_at": "2026-06-29T00:13:06Z"
        },
        {
          "tag": "logion-cli-v0.1.4",
          "kind": "other",
          "published_at": "2026-06-28T23:44:00Z"
        },
        {
          "tag": "logion-companion-v0.1.4",
          "kind": "other",
          "published_at": "2026-06-28T23:44:00Z"
        },
        {
          "tag": "installer-v0.1.4",
          "kind": "other",
          "published_at": "2026-06-28T23:43:54Z"
        },
        {
          "tag": "logion-client-v0.1.4",
          "kind": "other",
          "published_at": "2026-06-28T23:43:53Z"
        },
        {
          "tag": "logion-cli-v0.1.3",
          "kind": "other",
          "published_at": "2026-06-28T23:08:19Z"
        },
        {
          "tag": "logion-companion-v0.1.3",
          "kind": "other",
          "published_at": "2026-06-28T23:08:04Z"
        },
        {
          "tag": "installer-v0.1.3",
          "kind": "other",
          "published_at": "2026-06-28T23:08:02Z"
        },
        {
          "tag": "logion-client-v0.1.3",
          "kind": "other",
          "published_at": "2026-06-28T23:08:00Z"
        },
        {
          "tag": "logion-client-v0.1.2",
          "kind": "other",
          "published_at": "2026-06-28T21:05:44Z"
        },
        {
          "tag": "logion-cli-v0.1.2",
          "kind": "other",
          "published_at": "2026-06-28T21:05:39Z"
        },
        {
          "tag": "logion-companion-v0.1.2",
          "kind": "other",
          "published_at": "2026-06-28T21:05:15Z"
        },
        {
          "tag": "logion-companion-v0.1.1",
          "kind": "other",
          "published_at": "2026-06-28T18:45:37Z"
        },
        {
          "tag": "logion-cli-v0.1.1",
          "kind": "other",
          "published_at": "2026-06-28T18:42:04Z"
        },
        {
          "tag": "logion-client-v0.1.1",
          "kind": "other",
          "published_at": "2026-06-28T18:37:29Z"
        },
        {
          "tag": "logion-cli-v0.1.0",
          "kind": "other",
          "published_at": "2026-06-28T17:31:30Z"
        },
        {
          "tag": "installer-v1",
          "kind": "other",
          "published_at": "2026-06-28T17:28:30Z"
        },
        {
          "tag": "logion-companion-v0.1.0",
          "kind": "other",
          "published_at": "2026-06-28T17:26:37Z"
        },
        {
          "tag": "logion-client-v0.1.0",
          "kind": "other",
          "published_at": "2026-06-28T17:25:21Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "6efa11ff0c1e8139620ef913a4e4e0bafb861b4a",
          "body": "* docs(roadmap): ground ARD in AI Catalog connectors\n\nSigned-off-by: Nicolas Melo <nicolasmelo12@gmail.com>\n\n* docs(protocol): pin AI Catalog and ARD specifications\n\nSigned-off-by: Nicolas Melo <nicolasmelo12@gmail.com>\n\n* fix(ci): restore public phase vocabulary guard\n\nSigned-off-by: Nicolas Melo <nicolasmelo12@gmail.com>\n\n---------\n\nSigned-off-by: Nicolas Melo <nicolasmelo12@gmail.com>",
          "is_bot": false,
          "headline": "docs(roadmap): ground ARD in AI Catalog connectors (#237)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-23T13:07:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c2c8ecb2ce6892bd5bf25990842a3a580488b7a",
          "body": "Signed-off-by: Nicolas Melo <nicolasmelo12@gmail.com>",
          "is_bot": false,
          "headline": "docs(roadmap): publish canonical planning (#236)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-23T04:43:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "551095ed36f8aae5a5ef0b925bb8b2f7db94d204",
          "body": null,
          "is_bot": false,
          "headline": "feat(proving-ground): add identity oauth observed-effect scenario (#235)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-23T01:42:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b202f84e0a08e70bd2dfe9f84e45f1425ca6767",
          "body": "Co-authored-by: nicolasmelo1 <12915742+nicolasmelo1@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: sync OpenAPI contract from logion-private (#234)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-23T01:05:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f98beb116210a46a6c25397dc57b0f11adecca3a",
          "body": "* chore(client): classify capabilities operation\n\n* test(client): stage capabilities operation coverage",
          "is_bot": false,
          "headline": "chore(client): classify capabilities operation (#233)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-23T00:31:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c7ebbc678d40f8d4a421c5781fe6dd85f76ccc2",
          "body": null,
          "is_bot": false,
          "headline": "ci(contract): record approved v1 main change (#232)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T17:52:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6fa6d6956e84cf1d74b1193a75cace19b4f0f45",
          "body": "Co-authored-by: nicolasmelo1 <12915742+nicolasmelo1@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: sync OpenAPI contract from logion-private (#229)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T17:20:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "981547850007c0bf0ec66948f6499cfbd855091e",
          "body": null,
          "is_bot": false,
          "headline": "ci(contract): allow approved v1 default change (#231)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T17:20:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a56d8f95bf2c5cc76b9325f80f9deb4034ebf95",
          "body": null,
          "is_bot": false,
          "headline": "fix(client): classify platform bounty admin operations (#230)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T16:51:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e88010497dafdac3a014505a0392c63c049d669",
          "body": null,
          "is_bot": false,
          "headline": "ci(contract): check public v1 compatibility (#228)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T15:56:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7fa30e78e9a83ddc6fba90421938cd45d4bd1add",
          "body": "* fix(cli): rank query results by relevance\n\n* test(cli): preserve explicit listing sort",
          "is_bot": false,
          "headline": "fix(cli): rank query results by relevance (#227)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T15:56:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f66658cefe0ab854a6036c4d045a420db70ebd7",
          "body": "* fix(landing): chain terminal and page scrolling\n\n* fix(landing): expand legal pages and refine bolts",
          "is_bot": false,
          "headline": "fix(landing): refine lightning and scrolling (#226)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T12:30:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3824c72c46eadcb15e81ef46c4c685a7d094f00f",
          "body": "* ci: publish logion-skillmap to PyPI\n\n* chore: sync OpenAPI contract from logion-private\n\n* test(client): cover indexed listing operations\n\n---------\n\nCo-authored-by: nicolasmelo1 <12915742+nicolasmelo1@users.noreply.github.com>",
          "is_bot": false,
          "headline": "ci: publish skillmap and sync OpenAPI contract (#224)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T00:09:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af4ca8096003eb3b46eec8ba0684943053f3962f",
          "body": null,
          "is_bot": false,
          "headline": "fix(deps): update gitpython security release (#222)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-21T22:38:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50ed8cbaa690b888a9809687b8a2cd4959accaf7",
          "body": "* feat(indexer): record aggregate run progress\n\n* fix(indexer): preserve primary run failures\n\n* test(indexer): cover progress reporting",
          "is_bot": false,
          "headline": "feat(indexer): record aggregate run progress (#221)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-21T20:51:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f46d4180719c231cf4f39a5a7a1f1e0796d0f76a",
          "body": "* feat(landing): lead with product examples\n\n* feat(landing): animate agent workflow examples\n\n* feat(landing): sharpen agent-native proof story\n\n* fix(landing): refine terminal command contrast\n\n* feat(landing): connect terminal demo narratives\n\n* fix(landing): stabilize animated terminal layouts\n\n* fix(landing): make terminal panes independently scrollable",
          "is_bot": false,
          "headline": "feat(landing): tell the product through agent workflows (#220)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-21T20:50:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c76824fb95b1a8df47f1fd8b14fc15542e6af67",
          "body": null,
          "is_bot": false,
          "headline": "perf(indexer): enrich repositories concurrently (#219)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-21T10:58:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed4bd7fe8de49f073acaf5eedfe8825f3487cda1",
          "body": "…aktp (#217)\n\n* docs(landing): native-use beat after install; v1 event-log line on aktp page\n\n* docs(landing): replace em-dashes in body copy with plain punctuation",
          "is_bot": false,
          "headline": "docs(landing): native-use beat after install + v1 event-log line on /…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-21T05:31:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56407e81b004eca18b540053a949991c5fb48ad5",
          "body": "…ts (#216)\n\n* feat(landing): AKTP protocol page, header link, colorized transcripts\n\n* fix(landing): keep aktp diagram text inside box borders",
          "is_bot": false,
          "headline": "feat(landing): AKTP protocol page + header link + colorized transcrip…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-20T22:13:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e9f18793ebd4b213d8f90f4b41ca7497b4c50ab",
          "body": null,
          "is_bot": false,
          "headline": "fix(indexer): bound write request timeouts (#215)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-20T14:42:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "badfaeeb82e8584b1bfe8a9e5d90c49169f802d0",
          "body": null,
          "is_bot": false,
          "headline": "fix(indexer): encode github content paths (#214)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-20T00:21:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2926e80fe0f42ab1dda55676dd5257c5d2bc27bf",
          "body": "…213)\n\n* docs(readme,landing): the network-continual-learning line, shown not told\n\nREADME: the 'loop, not a transaction' bullet now states the thesis in one\nsentence — one accepted improvement becomes everyone's new starting\npoint; whoever joins today starts at today's level, never from zero —\nand \n[…]\nnding\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs(readme,landing): network continual learning — shown, not told (#…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-19T18:50:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2878017b06d631a749174dd5460da625c8c42d72",
          "body": null,
          "is_bot": false,
          "headline": "fix(indexer): tolerate transient github disconnects (#212)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-19T18:50:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "678ae61f10d9538a8bbec3077a122a8e9b0e2137",
          "body": null,
          "is_bot": false,
          "headline": "fix(indexer): remove lobehub source (#211)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-19T18:46:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8190330573f0b7fc7bea683b97ce55fc48115466",
          "body": "fix(release): allow resuming release when tags already exist on origin",
          "is_bot": false,
          "headline": "Merge pull request #210 from nicolasmelo1/fix/release-resume-remote-tags",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-19T02:56:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32e7c6641779cabd12239968416e4a52b8c81fa2",
          "body": null,
          "is_bot": false,
          "headline": "fix(release): allow resuming release when tags already exist on origin",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-19T02:52:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d8dfb82145d62f1c5803c54f1b856d4a877281b",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): 0.1.15",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T01:47:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65f90f30e8ea7a8f3ab8bc811fe4770d4fd7cb4a",
          "body": "* feat(cli): indexed listing discovery opt-in and get command\n\n- Add --include-indexed and --tier flags to logion listings search\n- Add logion indexed get LISTING_ID command\n- Wire IndexedListingsResource in client V1 namespace\n- Implement resource methods without touching generated files\n- Update h\n[…]\ncontract operation)\n- Rename test_indexed_get_default_parser_limit to test_indexed_get_parses_listing_id\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(cli): indexed listing discovery opt-in and get command (#207)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T23:59:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a8e992e0edbb652075e526c880bf7b5fbfdede01",
          "body": "* chore(release): prepare companion v0.1.14\n\n* docs(release): align changelog attribution",
          "is_bot": false,
          "headline": "chore(release): prepare companion v0.1.14 (#206)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T18:47:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20b9946c192c764f1e02c7e597fb05ca74a1918b",
          "body": "* fix(scanners): ignore eval wording in comments\n\n* test(scanners): cover slash comments",
          "is_bot": false,
          "headline": "fix(scanners): ignore eval wording in comments (#205)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T17:04:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad6fd95c94da83969928351405f0c3f8dff3249e",
          "body": "…(#204)\n\nmarketplace_loop proves the buyer contract inside a single session:\npurchase, install, use, and review all happen in one agent process.\nThis scenario splits the journey across two sessions (the runner\nalready spawns a fresh driver process per phase): session one buys and\ninstalls and stops;\n[…]\nnt instead of repurchasing.\n\nPrompt-lint tests mirror marketplace_loop's rule: the visible prompt\nnever mentions reporting or reviews — the contract must come from\ncompanion policy, not the goal text.",
          "is_bot": false,
          "headline": "feat(agent-proving-ground): cross_session_skill_use builtin scenario …",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T15:24:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dbb4a9f6cdbb801e4ef1b374a318ff908e189eff",
          "body": null,
          "is_bot": false,
          "headline": "fix(indexer): parse lockfile URL schemes (#203)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T14:15:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f80a071fc64778f280534975557438642a95f6c0",
          "body": "* feat(indexer): add public skill hub sources\n\n* fix(indexer): report invalid lockfile JSON",
          "is_bot": false,
          "headline": "feat(indexer): add public skill hub sources (#202)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T14:06:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1cb58a267aaa0b00242b90c11282a76072710c5",
          "body": "* fix(indexer): expand hub catalog coverage\n\n* fix(indexer): bypass cache for known lookups\n\n* fix(indexer): fail closed on catalog provenance\n\n* fix(indexer): validate external pagination data",
          "is_bot": false,
          "headline": "fix(indexer): expand hub catalog coverage (#200)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T13:49:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c18c10564ae69cf531d05593c164a89d3b715e6",
          "body": "Hero hook, a new top 'Proof over popularity' section, an FAQ entry\nanswering 'why pay for an improvement my own AI can write', and the\nllms.txt summary now state the product thesis directly: generating\nimprovements is cheap; proving they are real is scarce; Logion sells\nthe proof. The unshipped proof layer (hidden-test scoring, benchmark\nvs field reconciliation) stays explicitly labeled as direction, per\nthe landing truth rule.",
          "is_bot": false,
          "headline": "feat(landing): lead with the proof-over-popularity thesis (#198)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T12:41:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5d00b0fb3fe6a7c5fb91c94ba09475b10518fa5",
          "body": "* fix(indexer): crawl skills.sh sitemaps\n\n* fix(indexer): parse sitemap locations safely\n\n* fix(indexer): tighten sitemap origin handling",
          "is_bot": false,
          "headline": "fix(indexer): crawl skills.sh sitemaps (#199)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T12:20:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea0ad9f8f1c050b2bb276bb807a078ac4a68db36",
          "body": "* fix(indexer): retry transient tarball fetches\n\n* perf(indexer): skip restricted tarball fetches\n\n* fix(indexer): retry transient HTTP responses\n\n* fix(indexer): close retried HTTP errors",
          "is_bot": false,
          "headline": "fix(indexer): retry transient tarball fetches (#197)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T10:52:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a3e6c0b1667e81acbccc4728746c7e88eed6ddd8",
          "body": "* fix(indexer): preserve run diagnostics and partial state\n\n* fix(indexer): capture adapter construction failures\n\n* fix(indexer): bound push error diagnostics",
          "is_bot": false,
          "headline": "fix(indexer): preserve run diagnostics and partial state (#196)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-17T17:43:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d389b4ab5136db8dad24628a1dc7e1cbfc4dbf91",
          "body": "* feat(indexer): on-disk conditional-request HTTP cache\n\nAdd a persistent ETag/Last-Modified cache (http_cache.DiskCache) wired\ninto Transport: stored validators are sent as If-None-Match /\nIf-Modified-Since and a 304 serves the cached body. Cache dir defaults to\n~/.cache/logion-indexer, overridable\n[…]\nhe\n  two-step crawl --out / push --plan resume path, the GitHub-token\n  rate-limit need, and install-from-source via clone + uv sync\n  --all-packages (logion-skillmap is an unpublished workspace dep).",
          "is_bot": false,
          "headline": "fix(indexer): close indexing reliability gaps (#194)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-16T20:16:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1bac46b4e6824f32638258b7c5f4ea6663841f85",
          "body": "…error codes (#193)\n\n- onboarding --setup-token called client.v1.setup_tokens.redeem, but the\n  generated SDK only exposes client.v1.github_setup.redeem_token — the\n  real (non-mocked) redeem path would raise AttributeError. Point the\n  CLI and the test mocks at the actual resource/method.\n- registe\n[…]\nng,\n  npm-wrapper, agent-proving-ground, social-management) and describe the\n  shipped GitHub surfaces (identity linkage, sign-in -> setup-token\n  install, source links, package maps, bounty PR lane).",
          "is_bot": false,
          "headline": "fix(cli): call the real SDK setup-token redeem; register package-map …",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-16T01:39:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7caa08fedbf4114d978235bc6f045a9ed8d67694",
          "body": "* feat(indexer): add public skillhub indexer package\n\nAdd packages/indexer/ (logion-indexer) — a public, operator-run\ncrawler CLI that discovers skills from hub pages (skills.sh,\nClawHub, LobeHub, browse.sh, Hermes docs, skills-lock.json) and\ndirect GitHub repos, resolves each to its canonical GitHu\n[…]\nT endpoints\n- Catch network exceptions in Crawler.fetch_page() to prevent crawl crashes\n- Auto-configure transport API host from Pusher base_url\n- Document plan push behavior for minimal skill objects",
          "is_bot": false,
          "headline": "feat(indexer): add public skillhub indexer package (#191)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-15T23:18:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1171096ac8e03557cea72a106340cb93a8e09030",
          "body": "…ver (#188)\n\n* feat(cli): courses source-link set/show/remove commands\n\nAdd CLI commands to manage course-to-GitHub-repo source links. The\nSDK is regenerated from the updated OpenAPI contract to expose three\nnew operations: set_course_source_link, get_course_source_link,\ndelete_course_source_link.\n\n\n[…]\ncenario bindings and GitHub checks\n\n* fix(proving-ground): paginate GitHub observer reads\n\n* fix(cli): preserve JSON errors across source-link commands\n\n* style(cli): format source-link error handling",
          "is_bot": false,
          "headline": "feat(cli): courses source-link commands + proving-ground GitHub obser…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-15T16:32:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3bc33b4397a7a072bc8129794a831a10afe0847c",
          "body": "* perf(cli): defer runtime imports during parser setup\n\n* test(cli): harden startup regression checks\n\n* fix(cli): preserve lazy import seams\n\n* perf(cli): cache resolved lazy modules",
          "is_bot": false,
          "headline": "perf(cli): defer runtime imports during parser setup (#189)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-14T01:14:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0927e82dce82c3d0f27f9f3fedb47e13b2f5c8c2",
          "body": "* fix(scanners): pull Trivy vuln DB from mirror.gcr.io, GHCR fallback\n\nTrivy's built-in default DB repository (ghcr.io/aquasecurity/trivy-db)\nis aggressively rate-limited (TOOMANYREQUESTS) under community-wide\nload. On a cold cache the scan can burn its whole 300s timeout on the\nDB download or fail \n[…]\nn-semantic-release>=10.5.3,<10.6.0 (click~=8.1.0). psr 10.6.1 relaxes\nthat to click<9,>=8.1.0, so widen the psr pin to >=10.6.1,<10.7.0 and let\nclick resolve to 8.4.2. Dependency audit is green again.",
          "is_bot": false,
          "headline": "fix(scanners): pull Trivy vuln DB from mirror, GHCR fallback (#186)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-13T19:56:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "13a3b8613f760ed8602446d843e95d557fd802b6",
          "body": "* feat(landing): smooth scroll and stacked-section scrolling\n\n- html scroll-behavior: smooth, falling back to auto under\n  prefers-reduced-motion\n- content sections are position: sticky and stack: each section pins as\n  it fills the viewport and the next slides up over it. Sections keep a\n  transpar\n[…]\n, never under reduced motion, ctrl+wheel zoom untouched, and\nkeyboard/scrollbar/anchor movement resyncs the target. scrollTo uses\nbehavior: \"instant\" per tick so the CSS smoothing doesn't double-ease.",
          "is_bot": false,
          "headline": "feat(landing): smooth scroll and stacked-section scrolling (#185)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-13T00:56:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35861927186c9d7076a1bde89eafc39c9068e4f0",
          "body": "* fix(landing): fingerprint static asset URLs; add hero engraving\n\nTwo changes:\n\n- cache busting: /static responses are edge/browser-cached for hours,\n  so deploys shipped fresh HTML against stale CSS/JS — the setup-complete\n  fixes were invisible for up to 4h after deploy. Every template asset\n  UR\n[…]\nimperceptible — the raster is ~100vh tall, so bottom vs\ncenter anchoring looked identical. bottom: -18vh crops the lower fifth\nbelow the edge so the figure visibly rises from the bottom of the\nscreen.",
          "is_bot": false,
          "headline": "fix(landing): fingerprint static asset URLs; add hero engraving (#184)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-13T00:32:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c76dd42051e954a0ff518c4084290c41cf29ed9",
          "body": "…e on bad handoff (#183)\n\nPost-launch feedback on the setup-complete page:\n\n- drop the \"GitHub linked\" header status: it was the third flex item in\n  the space-between header, pushing the nav to the center; with it gone\n  the nav sits right-aligned again and the @login nav swap plus the\n  personaliz\n[…]\n with an\n  ellipsis on one line and scrolls horizontally; the homepage curl\n  command remains fully visible (guard test unchanged)\n- the token-safety warning renders in the design's bright accent gold",
          "is_bot": false,
          "headline": "fix(landing): polish setup-complete — right-aligned nav, redirect hom…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T23:42:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4faaca76052114c747646f39b109e8f2021e0737",
          "body": null,
          "is_bot": false,
          "headline": "fix(cli): tolerate unwritable auto-update state (#182)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T23:30:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80e2145187cc929c1d74f4fb25741b5c39286292",
          "body": "…#181)\n\nLanding revision in three parts:\n\n- copy/structure: plain-language hero subheading, positive product\n  definition, merge the three overlapping trust sections into one,\n  fold harness into install, drop redundant economy checklist and the\n  spec-language caveat (honesty anchors preserved; pol\n[…]\nain homepage (hidden outside setup_mode + .cta[hidden] CSS fix);\n  the dedicated \"sign in with GitHub again\" retry link is gone — the\n  pre-authenticated install CTA doubles as the expired-state retry",
          "is_bot": false,
          "headline": "fix(landing): copy rewrite, mobile perf path, setup-state CTA fixes (…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T23:08:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c3c201b0c946cf99789c1778e05e1f21bdab95a4",
          "body": "* feat(cli): auto-github-pr submissions surface\n\n- sync OpenAPI contract from private backend changes\n- regenerate client models/operations removing register-pr\n- add accepts_github_prs to bounty create/update, github_pr to submission create\n- remove register-pr command; open-pr becomes repair comma\n[…]\nrender_bounty helper that duplicated the GitHub PR line\n- print _bounty_github_pr_line in create, update and get (human mode only)\n- JSON output unchanged: emit(result, json_output=config.json_output)",
          "is_bot": false,
          "headline": "feat(cli): Phase 15.5.2 auto GitHub PR submissions (#179)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T17:25:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ef51c768b0d42c2a5577ebca42473d8a026f8e02",
          "body": "…en tests (#180)\n\nBack-ports the reply_opened_unfunded fix that landed only in the\nvendored private copy (Copilot autofix on the private PR): the top-up\nhost is derived from bounty_url instead of hardcoding https://logion.sh,\nso staging/self-hosted deployments point users at the right host.\n\nAdds TestRepliesGolden mirrored byte-identically in both repos\n(15.3/16.11 parity discipline) so this reply's behavior drifting in one\ncopy fails that repo's CI.",
          "is_bot": false,
          "headline": "fix(bot): derive top-up URL from bounty_url; pin reply copy with gold…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T01:26:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2ea3218d83302067c318dd8c46137c13586400f",
          "body": "* feat(bot): issue-mention bounty bot grammar, parser, and replies\n\n* fix(deps): track packages/bot in the deps lock guardrail\n\ncheck_deps_lock.py enumerates pyprojects explicitly, so the new\npackages/bot workspace member was invisible to make check-deps-lock.\nAdd it to the list and regenerate .deps\n[…]\nAdd reply_refused_course_slug_not_found so a slug typo gets a precise\n  refusal instead of the misleading multiple-courses message.\n- Add SPDX headers to the new package and re-sort known-first-party.",
          "is_bot": false,
          "headline": "feat(bot): issue-mention bounty bot grammar, parser, and replies (#178)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T00:31:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a6991f3cb78077f401cb1d4554f60b1089949f19",
          "body": null,
          "is_bot": false,
          "headline": "fix(scanners): match quoted uv dependencies (#177)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-11T11:22:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c3693d2213ed4eeffd09ab236acec4f6b375319",
          "body": null,
          "is_bot": false,
          "headline": "fix(scanners): block runtime code acquisition (#176)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-11T07:27:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4aa4858848772984f1be2183df75efafbd286a9d",
          "body": "… JSON envelopes (#175)\n\nPhase 15.5 gap closure on the CLI submission surface:\n\n- open-pr/register-pr are mutating and now require --yes (require_yes),\n  matching accept/reject/withdraw and the companion confirmation policy\n- fork_required responses render FORK_NEXT_STEPS (branch to push,\n  register\n[…]\nrom the\n  rev-parse that resolves ROOT, so check-models finds the contract when\n  invoked from the pre-commit hook (git exports GIT_DIR to hooks and\n  --show-toplevel then resolves to packages/client)",
          "is_bot": false,
          "headline": "fix(cli): gate bounty PR commands behind --yes, add fork guidance and…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-11T03:14:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4e3fcff90c0cb9596ede5aeb53d7ccce557baf61",
          "body": "…it, noindex, @login nav (#172)\n\n- setup-complete.js: strip the fragment even without #hid and show the\n  styled expired state on direct visit / refresh after claim (was stuck\n  on 'linking your GitHub account…' forever)\n- setup-complete.js: stop replacing the 'GitHub linked' heading with the\n  raw \n[…]\nomplete: Cache-Control no-store + X-Robots-Tag noindex,\n  removed from sitemap, robots.txt disallows /setup/ for every UA group\n- tests: invert the sitemap lock, cover headers, robots and the nav hook",
          "is_bot": false,
          "headline": "fix(landing): setup-complete follow-ups — expired state on direct vis…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-10T23:12:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0836859e7325adaab148b5c8b33af68b40170e33",
          "body": "chore: sync OpenAPI contract from logion-private",
          "is_bot": false,
          "headline": "Merge pull request #165 from nicolasmelo1/automation/sync-openapi",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-10T02:12:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0e30671ccf14427e32057c2ea9568f4952fcab9",
          "body": "feat(cli/sdk): bounty submission PR open/register commands",
          "is_bot": false,
          "headline": "Merge pull request #169 from nicolasmelo1/feat/phase-15.5-cli-sdk-v2",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-10T02:08:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa3050009ed913ef68ddf4a3ec02a3c2623a6fe3",
          "body": null,
          "is_bot": false,
          "headline": "feat(cli/sdk): bounty submission PR open/register commands",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-10T02:04:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6a0b7f618d3d285a043726963389d87229bc623",
          "body": null,
          "is_bot": false,
          "headline": "chore: sync OpenAPI contract from logion-private",
          "author_name": "nicolasmelo1",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-10T00:31:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db0d40fa5df0af5e029dc200a48c9cfb1504de33",
          "body": "… (#167)\n\n* docs(readme): reframe to the end-goal — verifiable capability network\n\nLead with the end goal (proof over popularity, a loop not a transaction,\nskills as the wedge not the ceiling, one node among many) and add an honest\n'What's live today' vs 'Where it's going' split so the shipped marke\n[…]\nd \"roadmap\" — public-audit forbids planning vocabulary\n\nThe public-audit guardrail (and its test) forbid the word \"roadmap\"/\"Phase\";\nreword the \"where it's going\" intro to \"what we are building next\".",
          "is_bot": false,
          "headline": "docs(readme): reframe to the end-goal — verifiable capability network…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-09T20:08:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "99bf70b48cc89e1e5e6e94f443e3056012ac2233",
          "body": "…oute with setup_mode context\\n- Render linked GitHub state with masked install command CTA\\n- Add setup-complete.js to claim handoff via URL fragment\\n- Update site.yaml copy and hide sign-in CTA in setup mode\\n- Add landing route tests (#156)",
          "is_bot": false,
          "headline": "feat(landing): setup-complete handoff page\\n\\n- Add /setup/complete r…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-09T16:02:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20d2d4debbf52e7fb1a1450668bf171e7e756302",
          "body": null,
          "is_bot": false,
          "headline": "fix(social-management): harden file post input (#166)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-09T16:02:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bed9a83d9cdc9a2721c301a41e6ca065cabafdb7",
          "body": "…xpired invite in README badge\\n- Replace expired invite in landing site footer (#158)",
          "is_bot": false,
          "headline": "docs: update Discord invite link to current vanity URL\\n\\n- Replace e…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-08T14:22:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70fc034291c8a0091fe09f435fb982362f7cde61",
          "body": "* feat(social-management): add --file option to post commands\\n\\n- Allow Discord and X posts to be read from a file\\n- Preserves real newlines from the file (e.g. for Discord formatting)\\n- Validate that at least one of --text or --file is provided\\n- Update README examples and add CLI tests\n\n* Pote\n[…]\nnding\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(social-management): add --file option to post commands (#157)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-08T14:17:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d18bb5d351ad9dd72ee2a82641ed042b0611d9c7",
          "body": "* feat(social-management): add alerts channel support for Discord read/post\n\n- Add 'alerts' webhook slot (DISCORD_WEBHOOK_ALERTS) to constants and config\n- Add DISCORD_CHANNEL_ALERTS env var for read target\n- Add --channel flag to 'discord read' (support|alerts, default: support)\n- Add 'alerts' to -\n[…]\n third-party content is vendored: tests are gated behind\nLOGION_SKILLMAP_NET_FIXTURES=1 and skip when gh is unavailable, so normal\ntest/pre-commit runs don't hit the network. Pins recorded 2026-07-07.",
          "is_bot": false,
          "headline": "feat(social-management): add alerts channel support (#154)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-08T00:23:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "99d15f80e37d266180858eeffa7447e89892f249",
          "body": "* feat(skillmap): add deterministic package-map inference engine\n\n- logion-skillmap stdlib-only package with parser, validator, inference, spec conformance, and resolver\n- Precedence: author map > plugin manifest > skill scan\n- Passes: exclusion, harness-mirror dedup, metadata, spec conformance, emi\n[…]\nt.toml files\nthat did not include packages/skillmap/pyproject.toml. CI failed because\nthe new dependency (pyyaml) was not tracked by the gate.\n\n* fix(skillmap): address Copilot round-2 review comments",
          "is_bot": false,
          "headline": "feat(skillmap): add deterministic package-map inference engine (#153)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T22:39:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f13264b10fc807e16db036492eb34e09620c8888",
          "body": "… (#155)\n\nTwo CLI improvements:\n\n1. `logion completion <bash|zsh|tcsh>` prints a tab-completion script\n   generated by introspecting the live argparse tree via shtab, so every\n   command, subcommand, and flag is covered and stays in sync with no\n   hand-maintained list. Supports --json (script wrapp\n[…]\nwser flag fall back to the\n   copy-paste instructions.\n\nBrowser helpers live in a new identity/_browser.py to keep github.py\nunder the per-file line budget. shtab added to .deps.lock.json review gate.",
          "is_bot": false,
          "headline": "feat(cli): shell tab-completion + auto-open browser in github connect…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T22:29:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d192cf68f47cefb7c9e8ea50ffc49a12af2a405b",
          "body": "The 0.1.13 release commit tripped the public audit on main (PR Safety\nfailure): the auto-generated changelog carried 'Phase 18.3' and a\nprivate repo name from commit subjects.\n\n- Reword the two offending 0.1.13 changelog lines.\n- Sanitize commit subjects in the changelog generator (Phase->phase,\n  r\n[…]\nmes -> neutral wording).\n- Validate the generated entry against the public-audit patterns\n  before writing, so future leaks fail the release early instead of\n  breaking main after the tags are pushed.",
          "is_bot": false,
          "headline": "fix(release): keep generated changelog public-safe",
          "author_name": "Nicolas Melo",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T17:00:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2ccf9eccd0ee5e8e770b0286b96d0425cd0caade",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' of https://github.com/nicolasmelo1/logion",
          "author_name": "Nicolas Melo",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T16:53:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87e3fdfe182fc299e49639882e675d70174c94a9",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): 0.1.13",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-07T16:52:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e7ef362d6dd12e3b98121e9324e4ae921c11382",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' of https://github.com/nicolasmelo1/logion",
          "author_name": "Nicolas Melo",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T03:43:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3f1d3011b96bcf56c4bf0313a0fb3b4bf5e5a78",
          "body": null,
          "is_bot": false,
          "headline": "fix(cli): harden setup token onboarding (#152)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T01:25:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b4794811c739a3cb0eeb5462e00bba4741a7e49",
          "body": "* feat(landing): add GitHub sign-in CTA to nav and hero\n\n* test(landing): add sign-in CTA test across all surfaces\n\nAdd test_signin_cta_present_on_all_surfaces asserting the GitHub\nsign-in href appears on HTML, markdown, and llms-full.txt surfaces.\nAlso add sign-in reference to landing.md for markdo\n[…]\nore[attr-defined] for client.v1.setup_tokens.redeem\n  (resource not yet in generated SDK)\n- Remove test_setup_token_flag_allows_noninteractive (tested\n  unreachable path; env-var path is the real one)",
          "is_bot": false,
          "headline": "feat(landing): landing GitHub signin (#150)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T23:49:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "18c6b529b508eee7bbad4d084211aeb7740af0cc",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' of https://github.com/nicolasmelo1/logion",
          "author_name": "Nicolas Melo",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T21:46:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4337022ca2738306fbcb50e8d6f227fb60ef7eb4",
          "body": "… to haiku (#149)\n\n* refactor(proving-ground): flatten package layout, default claude-code to haiku\n\n- Move src/logion_agent_proving_ground/ to agent_proving_ground/ at the\n  package root; update imports, pyproject packaging/entry point, ruff\n  config, README, and Makefile lint/typecheck paths accor\n[…]\neded fixtures. Assertions can set\n  include_baseline: true to opt out of baseline-delta filtering, and\n  course_exists without owner_agent now searches all roles instead of\n  querying unauthenticated.",
          "is_bot": false,
          "headline": "refactor(proving-ground): flatten package layout, default claude-code…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T21:44:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f5116bf046e4da9ff815bf99be176cfd48da0785",
          "body": "…bounty in mock loop (#148)\n\n- docs/e2e-marketplace-loop.md referenced logion-private/workspace paths,\n  tripping the public-safe audit; moved to workspace shared-docs\n- proving-ground README: drop private repo references and the doc link\n- mock adapter: add fund_bounty operation (open -> funded + ledger debit)\n  so the scripted marketplace_loop satisfies the new status: funded assertion",
          "is_bot": false,
          "headline": "fix(ci): move private-referencing e2e guide out of public repo, fund …",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T17:04:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a98a9b0cd22279073ebb3ce509c3ead66c3078b5",
          "body": "…bounty in mock loop\n\n- docs/e2e-marketplace-loop.md referenced logion-private/workspace paths,\n  tripping the public-safe audit; moved to workspace shared-docs\n- proving-ground README: drop private repo references and the doc link\n- mock adapter: add fund_bounty operation (open -> funded + ledger debit)\n  so the scripted marketplace_loop satisfies the new status: funded assertion",
          "is_bot": false,
          "headline": "fix(ci): move private-referencing e2e guide out of public repo, fund …",
          "author_name": "Nicolas Melo",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T16:46:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a2292d363630c4ad1f9e3d3f4c7ec7f749008da",
          "body": "- HermesDriver and ProviderDriver now read model/provider from\n  driver_config and inject --model/--provider flags into the CLI\n  command, overriding any default_args values.\n- marketplace_loop.yaml defaults to glm-5.1 on ollama-cloud.\n- _override_flag() helper replaces existing flag values instead of\n  appending duplicates.\n- Added unit tests for both HermesDriver and ProviderDriver config.\n- Updated e2e guide with model/provider selection docs and cost table.",
          "is_bot": false,
          "headline": "feat(proving-ground): add model/provider config to driver_config",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T16:34:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6dde8d8eb2aed85b6b844a9213bd4a6326ac28c",
          "body": "Document the full marketplace_loop e2e setup procedure including\nDB migration, credit seeding, stale data cleanup, and troubleshooting.\nUpdate agent-proving-ground README with prerequisites for clean runs.",
          "is_bot": false,
          "headline": "docs(proving-ground): add e2e reproducible setup guide",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T16:13:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22ca96a240800a4c81902e2f275fd9f81e82f4d1",
          "body": "…cept\n\n- Change creator_opens_bounty assertion from status:open to status:funded\n  since the agent naturally funds the bounty during creation\n- Add fund step to opens phase success_hint\n- Remove fund step from accepts phase success_hint (already done)",
          "is_bot": false,
          "headline": "fix(proving-ground): bounty status funded, fund in opens phase not ac…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T15:35:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf82186a17766960c1cc20fc4b3d9dd9a17aea76",
          "body": "…sts query",
          "is_bot": false,
          "headline": "refactor(proving-ground): extract candidates variable in purchase_exi…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T15:21:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1fffaa03113f7dbc9ebecbd992b47d5d750a62da",
          "body": "…y accept hint",
          "is_bot": false,
          "headline": "fix(proving-ground): increase max-turns to 80, add fund step to bount…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T13:55:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b90b6debcb534d573403e60402092d1f58ed3bc6",
          "body": "* fix(proving-ground): phase-isolated scaffolding and bounty submission visibility\n\nTwo bugs uncovered by the marketplace_loop e2e run:\n\n1. Hermes prompt contamination: _build_prompt() unconditionally\n   injected course-creation scaffolding into every phase, causing\n   the operator agent to create a\n[…]\nat session dicts (for backward compat\nor direct SDK use) still work since they lack the envelope markers.\n\nAdds a regression test that wraps a session in the v1 envelope and\nasserts the push succeeds.",
          "is_bot": false,
          "headline": "Fix/cli uploads push v1 envelope (#145)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T12:48:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8291fed38e579f36035db2fcef55ed9a0d7b40e0",
          "body": "… visibility (#146)\n\nTwo bugs uncovered by the marketplace_loop e2e run:\n\n1. Hermes prompt contamination: _build_prompt() unconditionally\n   injected course-creation scaffolding into every phase, causing\n   the operator agent to create a NEW course instead of approving\n   the creator's pending publi\n[…]\nsubmissions; add creator_agent to the\n   marketplace_loop scenario params.\n\nAlso adds 15 regression tests for _phase_scaffolding and\n_build_prompt, and .gitignore entries for proving-ground artifacts.",
          "is_bot": false,
          "headline": "fix(proving-ground): phase-isolated scaffolding and bounty submission…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T12:47:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fd3827fc5b1784f98f99d09af89e4a592a1371a6",
          "body": null,
          "is_bot": false,
          "headline": "fix(agent-proving-ground): fix Hermes local-devrig flow (#144)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T01:28:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02b1e3c96576f09c8fe1811d04e7f5051c3dc86d",
          "body": null,
          "is_bot": false,
          "headline": "fix(agent-proving-ground): isolate marketplace assertions (#143)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-05T17:58:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ba7ff5deda2d1500c72b7055cc7e7e8b4747a02",
          "body": "…nd local assertions (#142)\n\n- Add remote and local-devrig API adapters.\n- Add env parsing helpers for devrig.env.\n- Add stdlib-urllib HTTP health check helpers.\n- Add capability-gated local assertions: logs, db, events.\n- Wire new adapters and assertions into CLI/registry.\n- Pass agent_roles into create_world so local-devrig can override roles.\n- Add unit tests for adapters, env parsing, and local assertions.\n\nAll changes are local to packages/agent-proving-ground.",
          "is_bot": false,
          "headline": "feat(agent-proving-ground): Phase 18.3 remote/local-devrig adapters a…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-05T15:48:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8787847610b89ba6b3e68d77ac5eefe9cbd7e44",
          "body": null,
          "is_bot": false,
          "headline": "feat(agent-proving-ground): add real agent drivers for phase 18.2 (#140)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-05T03:08:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50e20ae9f37f5b612be339002981bcbc0218990a",
          "body": "* feat: add agent-proving-ground package (phase 18.1 core)\n\nAdds logion-agent-proving-ground, a deterministic scenario runner for\nmulti-agent product proving ground.\n\nHighlights:\n- mock API adapter + scripted driver for scenario authoring\n- Pydantic YAML scenario schema with agents, phases, goals an\n[…]\n472+Copilot@users.noreply.github.com>\n\n* fix(agent-proving-ground): address latest copilot review\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: agent proving ground core (phase 18.1) (#139)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-04T19:52:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c65126e0ae21d9c5ade4e09605006884c48dd17d",
          "body": "Co-authored-by: nicolasmelo1 <12915742+nicolasmelo1@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: sync OpenAPI contract from logion-private (#129)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-04T02:47:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4db67a79357350445b56b4bf5bde25b98282561e",
          "body": null,
          "is_bot": false,
          "headline": "Document admin devrig persona (#138)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-04T02:47:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd757dbc45f2255fb2ec6d45f96911e814e84db7",
          "body": "* feat(identity): add GitHub identity CLI commands and SDK methods\n\nImplements the public surface of GitHub Identity & OAuth Core.\n\n- Regenerated OpenAPI contract with GitHub OAuth endpoints\n- SDK: 6 identity resource methods (begin_authorization, complete_callback,\n  begin_device_flow, poll_device_\n[…]\ny, recall, and landing checks\n\n* chore(deps): sync uv lock\n\n* style(cli): format recall ranker and taxonomy test\n\n* fix(cli): align github identity flow\n\n* fix(cli): harden github identity json errors",
          "is_bot": false,
          "headline": "feat(identity): add GitHub identity CLI commands and SDK methods (#136)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T22:09:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6cab5629bf816eedcf5d75b56a9c16ba33a43de3",
          "body": "* feat(identity): add GitHub identity CLI commands and SDK methods\n\nImplements the public surface of GitHub Identity & OAuth Core.\n\n- Regenerated OpenAPI contract with GitHub OAuth endpoints\n- SDK: 6 identity resource methods (begin_authorization, complete_callback,\n  begin_device_flow, poll_device_\n[…]\nidentity, recall, and landing checks\n\n* chore(deps): sync uv lock\n\n* style(cli): format recall ranker and taxonomy test\n\n* fix(cli): align github identity flow\n\n* Sync agent skill copies after updates",
          "is_bot": false,
          "headline": "fix(cli): sync agent skill copies after updates (#137)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T21:10:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2a6c678a318d8a5696ca73996a59ce0c312a3bec",
          "body": "* feat(credits): add --currency flag to top-up CLI command\n\nThe CLI now accepts an optional --currency flag (default: usd) on\n`credits top-up`. When set to a non-USD currency, the backend converts\nthe charge to the buyer's local currency at the current exchange rate;\ncredits are always granted in US\n[…]\n_amount_minor from the backend PR #105. Regenerated from the\nFastAPI app and re-synced generated models. Removed the now-unnecessary\ntype: ignore[call-arg] workaround since currency is a native field.",
          "is_bot": false,
          "headline": "feat(credits): add --currency flag to top-up CLI command (#134)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T14:04:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a597feb152bcad20dc455080ac49a6994e44a709",
          "body": "…135)\n\n- docs/installer.md said the logion.sh redirect points at the latest\n  installer-v* release; the landing route actually redirects to the raw\n  scripts on main (release assets back the direct-GitHub path only)\n- README still framed PyPI/npm availability as 'shipping with the first\n  public release' with a pre-release badge; packages are live",
          "is_bot": false,
          "headline": "docs: fix installer redirect claim and post-publish README wording (#…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T12:29:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d5eb5aff26ffd6663a93a8000e5e8d59550e34e",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): 0.1.12",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-03T11:07:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1de4131c7d97fca51c83d9996872ff7f5ec6a3f0",
          "body": "The release orchestrator now collects merged PRs since the last\nrelease tag via git log, groups them by Conventional Commit type,\ncredits authors (including external contributors), and prepends a\nnew entry to releases/CHANGELOG.md during the release sequence.\n\nThis runs automatically as part of 'make release VERSION=X' — no\nmanual changelog editing needed. External contributors like first-time\nPR authors are credited by name in the Contributors line.",
          "is_bot": false,
          "headline": "feat(release): auto-generate changelog from merged PRs (#133)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T11:03:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "953b27faa1fdaffca2c46de8a6ec4f9d5c17e31a",
          "body": null,
          "is_bot": false,
          "headline": "fix(update): clean installer output and docs guidance (#132)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T04:24:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "420560063943c6d3f34d9521754f92746d2d4a64",
          "body": "* fix(cli): align Codex skill path and companion cleanup\n\nSigned-off-by: maelrx <eumael.mkt@gmail.com>\n\n* docs(cli): clarify Codex skill sync wording\n\nSigned-off-by: maelrx <eumael.mkt@gmail.com>\n\n* fix(devrig): resolve harness review feedback\n\n---------\n\nSigned-off-by: maelrx <eumael.mkt@gmail.com>",
          "is_bot": false,
          "headline": "fix(cli): align Codex skill path and companion cleanup (#131)",
          "author_name": "M'ael",
          "author_login": "maelrx",
          "committed_at": "2026-07-03T00:36:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 42,
      "commits_last_year": 276,
      "latest_release_at": "2026-07-22T12:14:10Z",
      "latest_release_tag": "logion-skillmap-v0.1.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 11,
      "days_since_latest_release": 2,
      "mean_days_between_releases": 2.1
    },
    "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": "logion-cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "logion",
            "marketplace",
            "agent",
            "skill",
            "cli",
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Topic :: Software Development :: Libraries"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/logion-cli/",
          "is_deprecated": false,
          "latest_version": "0.1.15",
          "repository_url": "https://github.com/nicolasmelo1/logion",
          "versions_count": 15,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 2675,
          "first_published_at": "2026-06-28T17:31:18.179929Z",
          "latest_published_at": "2026-07-19T01:48:44.386378Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "logion-client",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "agent",
            "logion",
            "marketplace",
            "sdk",
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Topic :: Software Development :: Libraries"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/logion-client/",
          "is_deprecated": false,
          "latest_version": "0.1.15",
          "repository_url": "https://github.com/nicolasmelo1/logion",
          "versions_count": 10,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-06-28T17:25:09.233923Z",
          "latest_published_at": "2026-07-19T01:48:40.251614Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "logion-skillmap",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "logion",
            "skillmap",
            "package-map",
            "inference",
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Topic :: Software Development :: Libraries"
          ],
          "ecosystem": "pypi",
          "matches_repo": null,
          "registry_url": "https://pypi.org/project/logion-skillmap/",
          "is_deprecated": false,
          "latest_version": "0.1.0",
          "repository_url": null,
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-07-22T12:13:58.217736Z",
          "latest_published_at": "2026-07-22T12:13:59.289043Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 2
        },
        {
          "name": "@logionsh/cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "logion",
            "cli",
            "marketplace",
            "agent"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@logionsh/cli",
          "is_deprecated": false,
          "latest_version": "0.1.15",
          "repository_url": "https://github.com/nicolasmelo1/logion",
          "versions_count": 15,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 3077,
          "first_published_at": "2026-06-28T17:40:39.731000Z",
          "latest_published_at": "2026-07-19T01:48:58.647000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 2,
      "stars": 33,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-10",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 2,
        "total_forks": 2
      },
      "star_history": null,
      "open_issues_and_prs": 9
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile",
        "packages/agent-companion/Makefile",
        "packages/agent-proving-ground/Makefile",
        "packages/client/Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "packages/client/src/logion/py.typed",
        "packages/npm-wrapper/tsconfig.json",
        "packages/skillmap/logion_skillmap/py.typed"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 60138,
      "source_files_sampled": 569,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 6968
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 17,
        "malicious_count": 0,
        "assessed_package": "pypi:logion-cli@0.1.15",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "pyyaml",
          "manifest": "packages/agent-companion/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0,<7.0"
        },
        {
          "name": "pydantic",
          "manifest": "packages/agent-proving-ground/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.8"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/agent-proving-ground/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0"
        },
        {
          "name": "rich",
          "manifest": "packages/agent-proving-ground/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=13.7"
        },
        {
          "name": "logion-client",
          "manifest": "packages/cli/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "logion-skillmap",
          "manifest": "packages/cli/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pydantic",
          "manifest": "packages/cli/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.7,<3.0.0"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/cli/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0,<7.0"
        },
        {
          "name": "shtab",
          "manifest": "packages/cli/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.7,<2.0"
        },
        {
          "name": "email-validator",
          "manifest": "packages/client/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.1,<3.0.0"
        },
        {
          "name": "httpx",
          "manifest": "packages/client/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.27,<1.0.0"
        },
        {
          "name": "pydantic",
          "manifest": "packages/client/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.7,<3.0.0"
        },
        {
          "name": "logion-skillmap",
          "manifest": "packages/indexer/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pyyaml",
          "manifest": "packages/indexer/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0"
        },
        {
          "name": "fastapi",
          "manifest": "packages/landing/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.136.1,<0.137.0"
        },
        {
          "name": "jinja2",
          "manifest": "packages/landing/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.1.6,<4.0.0"
        },
        {
          "name": "markdown-it-py",
          "manifest": "packages/landing/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0,<5.0.0"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/landing/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0.2,<7.0.0"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/scanners/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0,<7.0"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/skillmap/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0"
        },
        {
          "name": "httpx",
          "manifest": "packages/social-management/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.28,<0.29"
        },
        {
          "name": "pydantic",
          "manifest": "packages/social-management/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.6,<3"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/social-management/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0,<7.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 3,
        "merged_prs": 184,
        "open_issues": 6,
        "closed_ratio": 0.333,
        "closed_issues": 3,
        "closed_unmerged_prs": 41
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "nicolasmelo1",
          "commits": 267,
          "avatar_url": "https://avatars.githubusercontent.com/u/12915742?v=4"
        },
        {
          "type": "User",
          "login": "nicolasfmelo",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/73129502?v=4"
        },
        {
          "type": "User",
          "login": "maelrx",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/184181604?v=4"
        }
      ],
      "contributors_sampled": 3,
      "top_contributor_share": 0.985
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "companion-publishability.yml",
        "copilot-pr-review.yml",
        "deploy-landing-vercel.yml",
        "install-smoke.yml",
        "pr-safety.yml",
        "pr-title.yml",
        "release-all.yml",
        "release-cli.yml",
        "release-client.yml",
        "release-companion.yml",
        "release-installer.yml",
        "release-npm.yml",
        "release-skillmap.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.mjs"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json",
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 9,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 5,
            "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": 10,
            "reason": "28 out of 28 merged PRs checked by a CI test -- score normalized to 10",
            "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 0/29 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "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": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "27 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "6efa11ff0c1e8139620ef913a4e4e0bafb861b4a",
        "ran_at": "2026-07-24T14:14:46Z",
        "aggregate_score": 3.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-23T13:10:56Z",
      "oldest_open_prs": [
        {
          "number": 170,
          "created_at": "2026-07-10T11:22:13Z",
          "last_comment_at": "2026-07-10T23:16:16Z",
          "last_comment_author": "nicolasmelo1"
        },
        {
          "number": 171,
          "created_at": "2026-07-10T12:20:06Z",
          "last_comment_at": "2026-07-10T23:16:19Z",
          "last_comment_author": "nicolasmelo1"
        },
        {
          "number": 238,
          "created_at": "2026-07-24T01:50:59Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-23T13:07:40Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 159,
          "created_at": "2026-07-08T15:05:23Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 160,
          "created_at": "2026-07-08T15:05:25Z",
          "last_comment_at": "2026-07-09T22:04:26Z",
          "last_comment_author": "nicolasmelo1"
        },
        {
          "number": 161,
          "created_at": "2026-07-08T15:05:27Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 162,
          "created_at": "2026-07-08T15:05:29Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 163,
          "created_at": "2026-07-08T15:05:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 164,
          "created_at": "2026-07-08T15:05:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/nicolasmelo1/logion",
    "host": "github.com",
    "name": "logion",
    "owner": "nicolasmelo1"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 65,
      "inputs": {
        "security": 48,
        "vitality": 73,
        "community": 58,
        "governance": 52,
        "engineering": 90
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 73,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "commits_last_year": 276,
              "human_commit_share": 0.97,
              "days_since_last_push": 0,
              "active_weeks_last_year": 11
            },
            "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": "11/52 weeks with commits",
                "points": 7.6,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "276 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 276
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 42,
              "latest_release_tag": "logion-skillmap-v0.1.0",
              "releases_from_tags": false,
              "days_since_latest_release": 2,
              "mean_days_between_releases": 2.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "42 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 42
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 2 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "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": 58,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 24,
            "inputs": {
              "forks": 2,
              "stars": 33,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "33 stars",
                "points": 24.4,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 33
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "2 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "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": 63,
            "inputs": {
              "packages": [
                "logion-cli",
                "logion-client",
                "logion-skillmap",
                "@logionsh/cli"
              ],
              "dependents": null,
              "ecosystems": "npm, pypi",
              "total_downloads": null,
              "monthly_downloads": 5752
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "5,752 downloads/month across npm, pypi",
                "points": 50.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 5752,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 52,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 16,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 3,
              "top_contributor_share": 0.985
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 98% of commits",
                "points": 0.3,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 98
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "3 contributors",
                "points": 4.1,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "at_risk",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 47,
            "inputs": {
              "merged_prs": 184,
              "open_issues": 6,
              "closed_issues": 3,
              "issue_closed_ratio": 0.333,
              "closed_unmerged_prs": 41
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "33% of issues closed",
                "points": 15.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 33
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "184/225 decided PRs merged",
                "points": 31.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 184,
                      "decided": 225
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 62,
            "inputs": {
              "followers": 120,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "nicolasmelo1",
              "public_repos": 73,
              "account_age_days": 4055
            },
            "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": "120 followers of nicolasmelo1",
                "points": 15,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 120,
                      "login": "nicolasmelo1"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "73 public repos, account ~11 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 73
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 11
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "logion-cli",
                "logion-client",
                "logion-skillmap",
                "@logionsh/cli"
              ],
              "ecosystems": "npm, pypi",
              "any_deprecated": false,
              "min_days_since_publish": 2
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "4 package(s) on npm, pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 4,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 2 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "15 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "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": 90,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "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": "13 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 13
                    }
                  }
                ],
                "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.mjs",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "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": "28 out of 28 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "agents",
                "claude-code",
                "claude-code-skill",
                "clawhub",
                "directory",
                "hermes",
                "hermes-skill",
                "network",
                "openclaw",
                "skill",
                "skill-development",
                "skills",
                "skills-course",
                "logion",
                "ai",
                "ai-agent",
                "ai-agents",
                "llm",
                "llm-tools",
                "openai"
              ],
              "has_wiki": true,
              "homepage": "https://logion.sh",
              "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://logion.sh",
                "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": "at_risk",
        "name": "Security",
        "value": 48,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 35,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 3.5
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "28 out of 28 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "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 0/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "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 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "27 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:logion-cli@0.1.15 runtime dependency closure — what installing the published package pulls in — 17 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "pypi:logion-cli@0.1.15",
                  "assessed": 17
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 17,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 17,
              "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": "good",
        "name": "AI Readiness",
        "value": 76,
        "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.969,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 6968
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "94 of 97 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 94,
                      "sampled": 97
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json",
                "uv.lock"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [
                "Makefile",
                "packages/agent-companion/Makefile",
                "packages/agent-proving-ground/Makefile",
                "packages/client/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "packages/client/src/logion/py.typed",
                "packages/npm-wrapper/tsconfig.json",
                "packages/skillmap/logion_skillmap/py.typed"
              ],
              "agent_commit_share": 0.04,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile, packages/agent-companion/Makefile, packages/agent-proving-ground/Makefile, packages/client/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile, packages/agent-companion/Makefile, packages/agent-proving-ground/Makefile, packages/client/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.mjs",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "4 of the last 100 commits agent-authored or agent-credited",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 4,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 60138,
              "source_files_sampled": 569,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python with type-check config (packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed",
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/569 source files over 60KB",
                "points": 54.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 569,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch pypi package 'logion' from its registry",
    "Could not fetch pypi package 'logion-bot' from its registry",
    "Could not fetch pypi package 'logion-indexer' from its registry",
    "Could not fetch pypi package 'logion-landing' from its registry",
    "Could not fetch pypi package 'logion-scanners' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-24T14:15:05.372069Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/nicolasmelo1/logion.svg",
  "full_name": "nicolasmelo1/logion",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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