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

Daily-Nerd / daimon

Dream-briefing for AI coding agents: a cognitive checkpoint at session end, a 'while you were away' briefing at session start.

PythonApache-2.0★ 10 зірок⑂ 2 форкиз лип. 2026 р.Переглянути на GitHub ↗

Daily-Nerd/daimon має індекс здоров’я 59 зі 100, що відповідає смузі «Помірний». Найвищий показник — Engineering Quality (85/100), найнижчий — Security (23/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

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

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

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

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

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

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

Власність

DailyNerdOrgОрганізація
2 підписники12 публічних репозиторіївз лист. 2022 р.

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

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

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
PyPIdaimon-briefing0.22.03 865300 днів томуai-agentsbriefingcheckpointclaude-codecontextllmmemoryprovenancesession

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

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

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

74Добрий · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
2.8/36Ритм комітів — 4/52 тижнів із комітами
18/18Обсяг комітів — 222 комітів за останній рік
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Використані вхідні дані
commits_last_year222
human_commit_share0,92
days_since_last_push0
active_weeks_last_year4
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 30 релізів
36/36Свіжість релізів — останній реліз 0 дн. тому
27/27Ритм релізів — реліз кожні ~2,2 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count30
latest_release_tagv0.22.0
releases_from_tagsні
days_since_latest_release0
mean_days_between_releases2,2
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

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

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

48У зоні ризику · 18% загального індексу
Як обчислюється оцінка
15.5/60Зірки — 10 зірок
0/25Форки — 2 форків
0/15Спостерігачі — 0 спостерігачів
Використані вхідні дані
forks2
stars10
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (Apache-2.0)
18/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
6.3/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingтак
has_issue_templateні
has_code_of_conductні
has_pull_request_templateтак
Як обчислюється оцінка
47.8/80Щомісячні завантаження — 3 865 завантажень/місяць у pypi
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesdaimon-briefing
dependents
ecosystemspypi
total_downloads
monthly_downloads3 865
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

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

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

56Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
0/22.5Розподіл комітів — головний контриб’ютор — автор 100% комітів
1.4/13.5Широта контриб’юторів — 1 контриб’юторів
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Використані вхідні дані
bus_factor1
contributors_sampled1
top_contributor_share1
Як обчислюється оцінка
43.4/46.8Вирішення issue — закрито 93% issue
38.1/38.3Прийняття PR — злито 237/238 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 0/28 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs237
open_issues15
closed_issues192
issue_closed_ratio0,928
closed_unmerged_prs1

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

49У зоні ризику
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
3.4/25Охоплення власника — 2 підписників у Daily-Nerd
15.5/25Послужний список — 12 публічних репозиторіїв, вік облікового запису ~3 р.
Використані вхідні дані
followers2
owner_typeOrganization
is_verified
owner_loginDaily-Nerd
public_repos12
account_age_days1 350

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

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

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

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

85Відмінний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 5 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера
9.6/9.6Pre-commit-хуки
0/6.4.editorconfig
18/20OpenSSF Scorecard: CI-Tests — 29 out of 30 merged PRs checked by a CI test -- score normalized to 9
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configтак
has_precommit_configтак
Як обчислюється оцінка
30/30README
25/25Каталог документації
0/15Сайт документації / домашня сторінка
10/10Опис репозиторію
0/10Теми
10/10Wiki
Використані вхідні дані
topics
has_wikiтак
homepage
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

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

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

Стан безпеки

23Критичний
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — немає даних
2.2/2.5CI-Tests — 29 out of 30 merged PRs checked by a CI test -- score normalized to 9
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/28 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
0/10Dangerous-Workflow — 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
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
3.8/7.5Vulnerabilities — 5 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate2,3
Виключено з оцінювання (немає даних або не застосовно): branch_protection, signed_releases. Залишкові ваги перенормовано.

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

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

62Помірний · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — docs/hosts/gemini.md, website/docs/hosts/gemini.md, website/i18n/es/docusaurus-plugin-content-docs/current/hosts/gemini.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 92 з 92 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share1
agent_instruction_filesdocs/hosts/gemini.md, website/docs/hosts/gemini.md, website/i18n/es/docusaurus-plugin-content-docs/current/hosts/gemini.md
agent_instruction_max_bytes2 467
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера
11/11Статична перевірка типів — website/tsconfig.json
10/10Відтворюване середовище — lockfile
0/10Підтверджена практика роботи з агентами — серед останніх 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_files
has_devcontainerні
has_linter_configтак
typecheck_configswebsite/tsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Як обчислюється оцінка
27/45Типізований код — Python з конфігурацією перевірки типів (website/tsconfig.json)
52/55Керовані розміри файлів — 9/164 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languagePython
largest_source_bytes278 574
source_files_sampled164
oversized_source_files9
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
20/20Сервер MCP
0/40Придатні до запуску приклади
Використані вхідні дані
example_dirs
has_mcp_signalтак
api_schema_files

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

10зірок GitHub
1контриб'юторів
222комітів за останні 12 місяців
0днів від останнього пушу
30релізів
1бас-фактор
15відкритих issue
npm, PyPIпакетних екосистем

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

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository
  • deps.dev does not index pypi:daimon-briefing@0.22.0; advisories assessed against the repository dependency graph instead

Докладніше

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

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

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

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

10Binary-Artifactsno binaries found in the repo
н/дBranch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
9CI-Tests29 out of 30 merged PRs checked by a CI test -- score normalized to 9
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/28 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
0Dangerous-Workflowdangerous 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
0Security-Policysecurity policy file not detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
5Vulnerabilities5 existing vulnerabilities detected
Прямі залежності 9
РеєстрПакетОбмеження версіїМаніфест
PyPItomli>=2.0plugin/pyproject.toml
npm@docusaurus/core3.10.2website/package.json
npm@docusaurus/faster3.10.2website/package.json
npm@docusaurus/preset-classic3.10.2website/package.json
npm@mdx-js/react^3.0.0website/package.json
npmclsx^2.0.0website/package.json
npmprism-react-renderer^2.3.0website/package.json
npmreact^19.0.0website/package.json
npmreact-dom^19.0.0website/package.json
Усі залежності не зібрано

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

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 5500,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "CSS": 3119,
        "MDX": 118,
        "Python": 2914630,
        "TypeScript": 9271
      },
      "pushed_at": "2026-07-30T18:16:06Z",
      "created_at": "2026-07-03T01:43:48Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-30T18:05:25Z",
      "description": "Dream-briefing for AI coding agents: a cognitive checkpoint at session end, a 'while you were away' briefing at session start.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": null,
      "name": "DailyNerdOrg",
      "type": "Organization",
      "login": "Daily-Nerd",
      "company": null,
      "location": null,
      "followers": 2,
      "avatar_url": "https://avatars.githubusercontent.com/u/118483536?v=4",
      "created_at": "2022-11-17T20:44:21Z",
      "is_verified": null,
      "public_repos": 12,
      "account_age_days": 1350
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.22.0",
          "kind": "minor",
          "published_at": "2026-07-30T18:16:06Z"
        },
        {
          "tag": "v0.21.0",
          "kind": "minor",
          "published_at": "2026-07-29T03:26:14Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2026-07-23T14:18:53Z"
        },
        {
          "tag": "v0.19.0",
          "kind": "minor",
          "published_at": "2026-07-21T18:40:31Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2026-07-18T09:44:39Z"
        },
        {
          "tag": "v0.17.0",
          "kind": "minor",
          "published_at": "2026-07-16T06:10:57Z"
        },
        {
          "tag": "v0.16.1",
          "kind": "patch",
          "published_at": "2026-07-14T06:39:43Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2026-07-13T18:53:12Z"
        },
        {
          "tag": "v0.15.0",
          "kind": "minor",
          "published_at": "2026-07-11T22:18:43Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-07-11T04:14:42Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-07-10T03:46:35Z"
        },
        {
          "tag": "v0.12.3",
          "kind": "patch",
          "published_at": "2026-07-09T17:52:27Z"
        },
        {
          "tag": "v0.12.2",
          "kind": "patch",
          "published_at": "2026-07-09T17:43:15Z"
        },
        {
          "tag": "v0.12.1",
          "kind": "patch",
          "published_at": "2026-07-09T08:46:20Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-07-08T23:39:34Z"
        },
        {
          "tag": "v0.11.1",
          "kind": "patch",
          "published_at": "2026-07-08T03:26:04Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-07-08T01:10:42Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-07-07T23:42:53Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-07-07T02:08:47Z"
        },
        {
          "tag": "v0.8.2",
          "kind": "patch",
          "published_at": "2026-07-07T01:27:25Z"
        },
        {
          "tag": "v0.8.1",
          "kind": "patch",
          "published_at": "2026-07-06T20:22:09Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-07-04T08:44:06Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-07-04T07:05:47Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-07-04T00:27:43Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-07-03T23:52:14Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-07-03T22:09:41Z"
        },
        {
          "tag": "v0.3.3",
          "kind": "patch",
          "published_at": "2026-07-03T05:52:06Z"
        },
        {
          "tag": "v0.3.2",
          "kind": "patch",
          "published_at": "2026-07-03T04:24:02Z"
        },
        {
          "tag": "v0.3.1",
          "kind": "patch",
          "published_at": "2026-07-03T03:14:18Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-07-03T02:58:34Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "6ed5e2f930e300da7542d936d6f3fe9ebecf64ac",
          "body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.22.0](https://github.com/Daily-Nerd/daimon/compare/v0.21.0...v0.22.0)\n(2026-07-30)\n\n\n### Features\n\n* **briefing:** render the corroboration badge — separate axis, never a\ntrust class ([#268](https://github.com/Daily-Nerd/daimon/issues/268)\ns\n[…]\noogleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>\nCo-authored-by: Kibukx <72950620+Kibukx@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.22.0 (#394)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-30T18:15:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cb5c02562f881ea4bd0fe4e282b7e693a1868a1a",
          "body": "…rally sealed (#268 slice 5) (#446)\n\nCloses #268\n\nFinal slice. The corroboration axis (S0 #441, S1 #442, S2 #443, S3 #444,\nS4 #445) is now fenced and documented.\n\n## Summary\n- **Fence 1 — echo (the issue comment's mandated E2E)**: transcript\ncarrying a prior item in BOTH injection shapes, extraction\n[…]\nduction changes — tests and docs only\n- [x] Scars honored: 0016 (pinned clocks), 0024 (bilingual links), 0026,\n0027, 0028 (ranking fence designed below the trust lid so the ceiling\ncan't mask a boost)",
          "is_bot": false,
          "headline": "test(corroboration): fences + docs — the axis is complete and structu…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T18:03:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "05e30bb499d369876f4b72642530d0df9e6960a2",
          "body": "… a trust class (#268 slice 4) (#445)\n\nRefs #268\n\n## Summary\n- `[≈ corroborated ×N]` renders at N ≥ 2 total independent sightings\n(origin of record + **effective** origins — demotion-zeroed origins\nnever count), after `[carried]`/foreign annotations, before the quote.\n- Separate axis: `_mark()` unto\n[…]\n; mypy 63 = baseline (normalized error-set diff empty)\n- [x] Zero uncovered added lines (programmatic diff∩missing = ∅, all 5\nsource files)\n- [x] No scoring/recall change (S5 fences that structurally)",
          "is_bot": false,
          "headline": "feat(briefing): render the corroboration badge — separate axis, never…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T17:27:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "51657f2d86a25d3c86b790993a099970a987e124",
          "body": "… counts (#268 slice 3) (#444)\n\nRefs #268\n\n## Summary\n- `capture.run` threads the S2 `observed` sink into a new\n`_emit_corroborations` — both doors inherit via the converged pipeline\n(capture-parity green).\n- Rows via `store.append_event` only (admit_row redaction + write-audit\ncompliance; KNOWN_BYP\n[…]\nprogrammatically,\ndiff∩missing = ∅)\n- [x] write-audit guard green with KNOWN_BYPASSES zero-diff;\ncapture-parity green\n- [x] No plaintext of forgotten values anywhere in events.jsonl\n(asserted on disk)",
          "is_bot": false,
          "headline": "feat(capture): corroboration events — namespaced ledger rows, derived…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T16:51:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2cd699430cec817853ed194bd48ea7638674169c",
          "body": "…re (#268 slice 2) (#443)\n\nRefs #268\n\n## Summary\n- `carry.merge()` gains an optional `observed` sink: pairs passing ALL\nindependence guards are recorded as corroboration candidates —\n`(item_id, origin_session, origin_author)`.\n- Guards G1–G6 from the ratified design: bound origin, different origin\n(\n[…]\ncture guards green\n\n## Notes\n- Exact-text branch searches `native`, not `native_texts` (the latter\naccumulates carried texts mid-call — matching against a carried sibling\nwould be self-corroboration).",
          "is_bot": false,
          "headline": "feat(carry): corroboration predicate — origin-proven independence, pu…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T16:08:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ba7202aac3edb51aa19e0ef817c9b75ae652f7cc",
          "body": "Refs #268\n\n## Summary\n- New pure `policy.bind_origin(checkpoint)`: stamps\n`origin_session`/`origin_author` on every item at admission, setdefault\nsemantics on the `id`/`first_seen` rail — the first writer survives\narbitrarily many carry hops, which single-hop `carried_from` cannot\nanswer (and answer\n[…]\nstance(block, dict)` tolerance\n(drop_forgotten's shape) rather than the `or {}` idiom — the latter\nraises on torn/legacy string sections; siblings carry that latent nit,\ndeliberately not touched here.",
          "is_bot": false,
          "headline": "feat(policy): bind item origin at write time (#268 slice 1) (#442)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T15:49:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4710e1725dae7030d0ad0ca5b88ac303ea618344",
          "body": "…jected text as witness (#441)",
          "is_bot": false,
          "headline": "fix(serializer): quote verification no longer accepts daimon's own in…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T15:23:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20bc9a474c7cca93e189a7d895af1ed28d449e25",
          "body": "…rity-tested path (#437)\n\nCloses #432\n\n## What\n\nExtracts the shared capture pipeline — serialize →\ncreated/transcript_hash stamps → carry.merge (+resolved fold) →\nbind_links → supersede-candidate emission (with the #425\nforgotten-filter) → write_checkpoint → #376 rejection ledger — into one\nfunction\n[…]\narity test is the +1). The #436 write-audit ratchet guard passes\n— hook-path writes still route through\n`write_checkpoint`/`append_event`/`append_verification`, so every write\ncarries its admit frame.",
          "is_bot": false,
          "headline": "chore(capture): converge hook and CLI capture pipelines behind one pa…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T06:34:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cdebba9294ce87188608ff4eea3f655ac909ded6",
          "body": "…must carry an admit frame, with a bypass ratchet (#436)\n\nCloses #431\n\n## What\n\nThe write-side structural guard (gateway design, slice 2 — the read\nside's twin of test_scoring.py's trust-ceiling guard), in three parts:\n\n1. **`build_parser()` extracted from `cli.main`** — pure refactor, the\nsubparser\n[…]\nerived\ndata rebuilt from checkpoints that themselves pass the seam), git\nsubprocess writes (child process; the Python-side sidecar writes ARE\naudited), and the builtin-open flock sidecar (no content).",
          "is_bot": false,
          "headline": "test(policy): write-side architecture guard — every command's writes …",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T06:19:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "59271b6070ce0bf850a78c17498b3f1e0717065a",
          "body": "…d copies in historical sessions cannot survive rebuild (#435)\n\nCloses #427\n\n## What\n\nMakes the recall index's rebuild-time forgotten scrub **value-keyed** in\naddition to id-keyed. `_apply_event_resolutions` now collects each\nbucket's `forgotten:` tombstone refs, derives the bucket's forgotten\nconte\n[…]\nen_value_through_carry` no\nlonger unlinks prev remnants before the rebuild — the recall assertion\nnow runs against the untouched on-disk history.\n- Full suite from plugin/: **2214 passed, 2 skipped**.",
          "is_bot": false,
          "headline": "fix(recall): resolve forgotten tombstones by content key so sibling-i…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T05:58:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "733c2fc97e889b9b4be9dcc383ff5dd9925b090b",
          "body": "…030 (#434)\n\nCloses #433\n\n## What\n\nPromotes five reviewed scar candidates to active scars 0026–0030 (all\nlandmines) and completes the frontmatter of the one candidate\ndeliberately held back.\n\n- `0026` bare `uv sync` strips dev+pretty extras — suite fails looking\nlike code regressions\n- `0027` `write\n[…]\nles.\n\n## Tests\n\n`scar lint`: 31 files, 0 errors, 0 orphans, 0 partial-rot, 0 unreachable\nevidence. Content-only change under `.scars/` — no runtime code touched;\nscar lint CI job is the relevant gate.",
          "is_bot": false,
          "headline": "chore(scars): promote five reviewed candidates to active scars 0026-0…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T05:42:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "947ddacaa62906eabd88b647a4c04633a389ff39",
          "body": "… and trust now apply on read (#430)\n\nCloses #423\n\n## What\n\nAn inbound gate at read/index time: `policy.admit_foreign` — the pure\ntwin of `admit_checkpoint` — runs wherever a teammate's synced\ncheckpoint enters local surfaces, wired into both `store.read_team` and\n`recall._scan_sources`. In-memory o\n[…]\ns/team.md` — scope section now states the allowlist gates\nreads too; new \"The inbound gate\" subsection; corrected the\n`DAIMON_TEAM` env-table line (\"gates writes only; reads are always on\"\nwas wrong).",
          "is_bot": false,
          "headline": "feat(teamsync): gate inbound team content — scope, redaction, forget,…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T05:26:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7f730804e1f1bcf4aa9c865ce511b9ccdee7ec89",
          "body": "…pre-redaction window (#429)\n\nCloses #422\n\n## What\n\n`daimon forget` now purges the serializer chunk cache\n(`<checkpoint_dir>/.chunk-cache/`) wholesale after the successful\ntombstone+rewrite — default-on, never fatal. The command reports\nhonestly either way: `purged N cached chunk extraction(s)` on s\n[…]\nremoved, and the output carries `cache purge failed: <reason>`. Failed\nbefore (`purge_chunk_cache` did not exist).\n- Full suite from `plugin/` after `uv sync --all-extras`: **2186 passed,\n2 skipped**.",
          "is_bot": false,
          "headline": "fix(forget): purge the serializer chunk cache so deletion covers the …",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T05:09:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a17b644c10bf6a457d7c6c48a6bfeadc8aa92e5a",
          "body": "…gate writes on the kill switch (#428)\n\nCloses #421\n\n## What\n\n- New `plugin/daimon_briefing/policy.py`: a pure, I/O-free module (same\ninvariant carry.py documents) owning the ordered checkpoint admission\npipeline as `admit_checkpoint(checkpoint, forgotten_keys)` — redact\n(#104), then the value-keyed\n[…]\npen(`/`.write_*`/env access in\npolicy.py.\n\nFull suite: `uv run pytest` from `plugin/` — 2182 passed, 2 skipped\n(2174 pre-existing tests unchanged and green; redaction/forget behavior\ntests untouched).",
          "is_bot": false,
          "headline": "feat(policy): extract admission pipeline into pure policy module and …",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T04:52:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8f104da1a322e70c23cf6393332d91d36a67173",
          "body": "…a forgotten value (#426)\n\nCloses #420\n\n## What\n\nAdds `plugin/tests/test_carry_forget_adversarial.py` — two tests pinning\nthe write-boundary forget gate against carry resurrection. Test-only; no\nproduction changes.\n\n- `test_ungated_prev_cannot_resurrect_forgotten_value_through_carry`:\nbuilds the adv\n[…]\ny rewrite never touches) would keep the\nvalue searchable. The test removes the prev remnants before the rebuild\nassertion — after the raw-disk assertions — and documents this in\n`_drop_prev_remnants`.",
          "is_bot": false,
          "headline": "test(carry): adversarial forget test — ungated prev cannot resurrect …",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T04:41:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f60f2d9e2dcaa5fc75065d649d7f150d011b6818",
          "body": "…ger (#425)\n\nCloses #419\n\n## What\n\n`_emit_supersede_candidates` now filters bound (old_id, new_id,\nold_text) pairs against `store.forgotten_content_keys()` before\nemitting: a pair whose `old_text` canonicalizes (via\n`normalize.content_key`, the same keying `_drop_forgotten` uses) into\nthe forgotten \n[…]\nts.\n- `test_candidate_emission_emits_nothing_when_forgotten_keys_read_fails`\n— fail-safe: a raising ledger read emits zero events.\n\nFull suite: `uv run pytest` from `plugin/` — 2171 passed, 2 skipped.",
          "is_bot": false,
          "headline": "fix(cli): supersede-candidate emission skips values in the forget led…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T04:30:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d3556e12db08e37da7d880a377e0cf9e462ec66c",
          "body": "…ibling ids cannot survive (#424)\n\nCloses #418\n\n## What\n\n- `_cmd_forget` now appends the `forgotten:<content_key>` tombstone\nBEFORE rewriting the checkpoint, so `store._drop_forgotten` sees the new\nkey during that same write and scrubs every sibling.\n- The splice itself is now value-keyed: items are\n[…]\nmal_output` — exit 0,\nnormal success line, `forgotten:<content_key>` tombstone on the ledger,\nno forgotten text in `events.jsonl`.\n\nFull suite: `uv run pytest` from `plugin/` — 2171 passed, 2 skipped.",
          "is_bot": false,
          "headline": "fix(forget): append tombstone before rewrite and remove by value so s…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T04:27:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "91ce3b0ed13daf0bc728ab1ce39d33405c0917f5",
          "body": "…417)\n\nCloses #416\n\n## What\n\n- Add extraction **rule 21** to `SERIALIZE_SYS`: when the transcript\nstates a date, time, or interval relevant to an item, PREFER a\ncontiguous quote span that keeps that temporal detail over an\nequally-valid span that drops it. The span must still obey rule 17\n(real, con\n[…]\ne-chunk-cache`): a `PROMPT_VERSION`\nbump alone does not rotate the #48 chunk cache — its historical comment\nsays it does, but the cache key has been `EXTRACTION_VERSION` since\n#367. `scar lint` clean.",
          "is_bot": false,
          "headline": "feat(serializer): prefer quote spans that preserve temporal detail (#…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T02:45:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "23a5411b7fd412a259b844336427ec7ce6768f27",
          "body": "…brief (#415)\n\nCloses #405\n\n## What\n\nAdds a forbidden-hit dimension to the LongMemEval harness — asserting\nthat particular material must **not** surface, complementing recall\n(which only asserts the right material does).\n\n- Cases gain an optional `forbidden_hits: list[str]`\n(`dataset.forbidden_of`).\n[…]\n **not** run any real benchmark pass — the standing benchmark\ndirective blocks publishing numbers against the live serializer; this\nships the mechanism and its unit tests only.\n\n<!-- PR Type: test -->",
          "is_bot": false,
          "headline": "test(benchmark): add forbidden-hit dimension scored on the assembled …",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T01:51:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b5ca90c7c88b0e39fafb841c7c547519ed9c9d8b",
          "body": "…mpliance result (#414)\n\nCloses #407\n\n## What\n\nCommits the full 10-step deletion-durability protocol as one executable,\ndeterministic test (`plugin/tests/test_deletion_durability_protocol.py`)\nand\npublishes the compliance result in the lifecycle docs (en + es).\n\nThe protocol walks a forgotten value \n[…]\n checkpoint\nargument\nin place (drop/redact/id-stamp), so reading the `serialize()` output\nafter\nwriting yields the gated version — snapshot before writing.\n\n<!-- type:test label added after create -->",
          "is_bot": false,
          "headline": "test(store): commit the deletion-durability protocol + publish the co…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T01:51:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4f02e2efc250b1929b38e48bd2e71008dc731102",
          "body": "… can never promote belief (#413)\n\nCloses #408\n\n## What\n\nMakes trust class (`verbatim` / `inferred`) a **ceiling** on authority,\nnot just a display label.\n\n- `scoring.TRUST_CEILING` — a monotone table mapping trust class to the\nmaximum `effective_weight` any process may assign, plus\n`trust_ceiling()\n[…]\nds a scar candidate documenting that the ceiling only clips\nfresh/high-importance items (the `min()` clamp is a no-op below the lid)\n— a trap for future ceiling tests and anyone retuning `TYPE_RULES`.",
          "is_bot": false,
          "headline": "feat(scoring): trust class as an authority ceiling — recall frequency…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T01:51:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5e0f6b2826041e13d6f353222573bf102572e2e7",
          "body": "…ms are rejected, not admitted (#410)\n\nCloses #409\n\n## What\n\nA corruption regression corpus\n(`plugin/tests/test_corruption_corpus.py`) that\ndrives four fixture variants through the real serializer/store\nvalidation gates\nand asserts the malformed three are **rejected**, not silently admitted\n— the\nfa\n[…]\nrun ruff check` + `uv run mypy` on the new file — clean\n- Zero model quota (fixtures only; no LLM seam beyond the existing\nfake-chat factory)\n\n<!-- PR type: New feature? No — tests only. type:test -->",
          "is_bot": false,
          "headline": "test(serializer): corruption regression corpus — assert malformed ite…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T00:14:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0870dd698d79b16850e6c8674f345f2c9c43a9ca",
          "body": "…#411)\n\nCloses #401\n\n## What\n\n`ground_outcomes` matched completed-outcome assertions with an\nEnglish-only verb lexicon, so a Spanish session — a language the project\nsupports end to end (bilingual docs, es briefings) — never matched, and\nits verbatim outcome claims were never grounded. A Spanish \"lo\n[…]\ntly\nstates the per-language boundary of the gate — it lives only in source\ncomments. Stamping the `grounded: null` semantics in the README/docs is\na separate docs-only change and is left as follow-up.",
          "is_bot": false,
          "headline": "feat(serializer): ground Spanish outcome claims (bilingual lexicon) (…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T00:14:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9daf310eabab2b6eeefffbe31a64e9fb080ee81a",
          "body": "…capture gate, hit accounting (#412)\n\nCloses #403\nCloses #400\nCloses #402\nCloses #404\n\n## What\n\nA four-issue TDD arc that makes `daimon forget` a value-keyed guarantee:\na\nforgotten claim stays gone across a later re-extraction of the same\nsentence —\ngone at the source (the checkpoint on disk), not m\n[…]\nlean. `mypy` introduces no new errors in touched code.\n- A scar candidate fences the deliberate tension in #404 (the hit ledger\n  re-persists a bounded, redacted snapshot of the value forget removed).",
          "is_bot": false,
          "headline": "feat(store): value-keyed forget tombstone arc — canonicalization, re-…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-30T00:14:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ecb7fafefa817f0726f46b221ddd4c7f4400a30a",
          "body": "… dependency-version claim classes (#399)\n\nCloses #397\n\n## What\n\nExtends `worldcheck` from one claim class to four. Alongside slice 1's\nPR/issue-state probes, a carried item can now be spot-checked as:\n\n- **`file-exists`** — a repo-relative source path plus assertion\nvocabulary (\"the fix lives in `s\n[…]\nrobe raising mid-run is a skip, never a raise, and\nthe briefing still renders.\n\nAll `gh` probes hit a fake `gh` script on disk and the new probes touch\nonly `tmp_path` trees — zero network throughout.",
          "is_bot": false,
          "headline": "feat(worldcheck): extend spot-check to file-exists, branch-state, and…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-29T19:45:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "522a217bba088fa4f65324b0b79ad90b50e6df5b",
          "body": "Closes #392\n\n## PR Type\n- [x] Documentation only\n\n## Summary\n- Three live-reading contradictions in the historical pitch doc fixed:\nhost list (Gemini out, MCP surface in), hermes-first audience framing\ndropped, and the \"It depends on them\" line that contradicted the doc's\nown D-009 banner and the ze\n[…]\nP-DREAM-BRIEFING.md`,\n`hosts/`) verified to exist\n\n## Checklist\n- [x] Linked an approved issue (#392)\n- [x] Exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No Co-Authored-By trailers",
          "is_bot": false,
          "headline": "docs(pitch): align PITCH.md with shipped reality (#393)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-29T04:06:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "673251b2b1d5f9c0a77d8dcffa0da96d1c559054",
          "body": "Closes #390\n\n## PR Type\n- [x] Bug fix (test flake)\n\n## Summary\n- `test_status_tool_matches_cli_payload` read the live clock twice (MCP\ntool call, then `cli.status_payload`); crossing a whole-second boundary\ndiverged the rendered checkpoint age (`0s` vs `1s`) and failed CI at\nrandom — bit the v0.21.0\n[…]\nn suite — 2037 passed, 2 skipped\n\n## Checklist\n- [x] Linked an approved issue (#390, status:approved)\n- [x] Exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No Co-Authored-By trailers",
          "is_bot": false,
          "headline": "test(mcp): freeze the clock in the status-tool parity test (#391)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-29T03:37:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6a10011934449fec3bbfdd5f11804a363143aa3c",
          "body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.21.0](https://github.com/Daily-Nerd/daimon/compare/v0.20.0...v0.21.0)\n(2026-07-29)\n\n\n### Features\n\n* **cli:** configure --init — guided wizard for env and team setup\n([#386](https://github.com/Daily-Nerd/daimon/issues/386))\n([11d26d4](https:\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.21.0 (#372)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-29T03:26:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b92308f6c339921f015688b53d0d809764bdb00d",
          "body": "…ellm (#389)\n\nCloses #383\n\n## Summary\n\n- Preflight no longer hard-fails an explicit `litellm` backend with\nmissing credentials when a rescue exists: with `DAIMON_LLM_FALLBACK`\nenabled (the default) and a command backend resolving, the serialize\nproceeds — `_chat_litellm` raises its named `ChatError`\n[…]\nument: on installs with a\nresolvable command backend, the no-key class should disappear from the\nerror table and windowed `rescued` counts should rise. Worth a read\nafter a week of the rolling window.",
          "is_bot": false,
          "headline": "fix(llm): preflight no longer kills the no-key rescue on explicit lit…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-29T02:55:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b388191104d071c031cfc2e1ebcf7a9e325c77d8",
          "body": "Closes #387\n\n## Summary\n\n- The per-sidecar `daimon-team.toml` allowlist becomes the **router**,\nnot just the gate: `_dual_write_team` writes the checkpoint into every\nsidecar clone whose toml grants the project membership, and to the local\nmirror only when none does. The multi-team topology from the\n[…]\nl suite green: 2033 passed, 2 skipped\n- [x] The exact repro filed on #387 rerun against the fix: checkpoint\nroutes to the granting sidecar\n- [x] Local patch coverage before push: all new lines covered",
          "is_bot": false,
          "headline": "feat(team): scope-routed dual-write across multiple remotes (#388)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-29T02:19:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "11d26d45df9aeda59f065011698ff87ed2e3450b",
          "body": "…386)\n\nCloses #368\n\n## Summary\n\n- `daimon configure --init`: the guided wizard the two highest-friction\nonboarding moments never had — backend Q&A → serialize-timeout question\n→ immediate backend-test offer (default **yes**: a wizard that skips its\nown verification teaches nothing) → optional team w\n[…]\n# Contributor Checklist\n\n- [x] Linked an approved issue\n- [x] Added exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs updated (configuration.md)",
          "is_bot": false,
          "headline": "feat(cli): configure --init — guided wizard for env and team setup (#…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-29T01:53:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "42e1a8a311dc1723680acf63f07dab767b1a6e5c",
          "body": "… candidate (#385)\n\nRefs #276\n\n## Summary\n\n- Adds the qualification filter #276 proposed: the harvest now refuses\nto write a candidate that doesn't meet its scar type's structural\nobligations. Running tally before this change: **4 harvested candidates,\n0 promotable** — every gate below is derived fr\n[…]\nntional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs: configuration.md's harvest section (merged in #384) already\ndescribes candidates as human-review-gated; filter details are internal",
          "is_bot": false,
          "headline": "feat(scars): qualification filter for the harvest — obligations or no…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-29T01:40:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7261fd8640c7c1477245effb85edaddb239b0c60",
          "body": "Closes #280\n\n## Summary\n\n- README gains a **Scar harvest (opt-in)** feature bullet beside the\nreceipts one — the harvest now has the same front-door discovery the\nreceipts integration has had all along.\n- `docs/configuration.md` gains a dedicated **Scar harvest** section\nmirroring the Receipts secti\n[…]\n es) has no scar-harvest page; the\nreceipts feature has `concepts/receipts.md`. Full parity would add a\nbilingual concepts page — separate issue if wanted, since it doubles the\nscope with translation.",
          "is_bot": false,
          "headline": "docs(scars): give scar harvest the receipts-grade discovery path (#384)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-29T01:23:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "292bd734d078cb752dac4bc65edc4ef0c1de4692",
          "body": "Closes #342\n\n## Summary\n\n- Hung-serialize detection now keys on **liveness, not wall-clock** (the\nissue's preferred option 1): the serialize child touches a per-session\nheartbeat file at entry and during every chunk, perspective pass, and\nmerge group; \"hung\" means no heartbeat for the `DAIMON_HUNG_A\n[…]\n- [x] Linked an approved issue\n- [x] Added exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs unchanged (env var semantics extended, not renamed)",
          "is_bot": false,
          "headline": "feat(hooks): heartbeat liveness for hung-serialize detection (#382)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-29T01:13:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5c22f7215e0d16a14f226809e574c786ab036efc",
          "body": "…nts (#381)\n\nCloses #369\n\n## Summary\n\n- `pin_imperatives`: a deterministic pass in the serialize gauntlet that\nscans user-authored transcript text for hard-imperative constraint\nsentences (must / must not / never / don't / always / forbidden) and\nforce-pins any the model skipped as verbatim `strong_\n[…]\nsue\n- [x] Added exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs unchanged (serializer-internal; briefing rendering of\n`pinned` is future work)",
          "is_bot": false,
          "headline": "feat(serializer): deterministic auto-pin for hard-imperative constrai…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-29T00:32:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "115e88ff044c6150929ad00e0d4a8e8175f4ae07",
          "body": "…t text (#380)\n\nCloses #367\n\n## Summary\n\n- Chunk-cache key no longer rotates on prompt *text*: `PROMPT_VERSION`\nand `sys_hash` leave the key, replaced by an explicit\n`EXTRACTION_VERSION` (bumped only when extraction semantics actually\nchange) and a lane label (perspective name) for #360 escalation p\n[…]\ntor Checklist\n\n- [x] Linked an approved issue\n- [x] Added exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs unchanged (internal cache mechanics)",
          "is_bot": false,
          "headline": "chore(serializer): key chunk cache on extraction semantics, not promp…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-28T23:39:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0a5f7e200b0377395a049cd1ecf6f177a7f0fe5b",
          "body": "Refs #364\n\n## Summary\n\n- `daimon stats` now surfaces a rolling 14-day capture window:\nserialized / errors / rescued counts plus an error-rate percentage over\ncapture attempts — the \"is capture healthy NOW\" number #364 asks for,\nreadable on any install.\n- Adds the 10% reopen gate from #364: when the \n[…]\ncklist\n\n- [x] Linked an approved issue\n- [x] Added exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs unchanged (stats output is self-describing)",
          "is_bot": false,
          "headline": "chore(stats): rolling-window capture rate with 10% reopen gate (#379)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-28T23:28:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8a08744e8a732e07c1f579b4222b644785bd3277",
          "body": "…(#378)\n\nPromotes the `append-event-any-kind-resolves-the-item` candidate to\nactive scar **0025**, severity critical, confidence 1.0.\n\nNo issue link: `pr-validation.yml` exempts scars-only PRs from the\nissue-first gate, since the human sign-off happens at `scar promote` and\nis recorded in `authors`.\n[…]\n-rot, 0\nunreachable-evidence. The pattern anchor is escape-free per scar 0019\n(escapes in anchors are never processed) and was verified to fire on\n`append_event(..., kind=...)` calls before authoring.",
          "is_bot": false,
          "headline": "docs(scars): promote the append_event kind landmine to active (0025) …",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-28T22:13:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "69ff4d80c95291a7e8bb5ff14fd10a6aad2abb3c",
          "body": "Closes #376\n\n## What\n\nA rejection ledger: every downgrade the checkers make is recorded as a\ndurable event, and `daimon stats` reports the totals.\n\n- `store.append_verification()` / `store.verification_counts()` writing\nto a new per-project `verification.jsonl`\n- `serializer.verification_rejections(\n[…]\nately not in scope\n\nThe issue also listed worldcheck contradictions and user-rejected\nsupersede candidates. Both fire outside the capture path and are better\nas a follow-up than as extra surface here.",
          "is_bot": false,
          "headline": "feat(stats): rejection ledger for verification downgrades (#377)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-28T21:09:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "023b36c616d0b96c572dee89c36044b5abbf7fce",
          "body": "…act (#375)\n\nCloses #374\n\n## What\n\nTracks `benchmark/results/interim-317-baseline-first54.json`, the frozen\nbaseline lane for the #317 scene-traces A/B: the first 54 scored\nquestions of the sample-150 seed-0 run, sitting next to the\nalready-tracked `longmemeval-s-baseline.json`.\n\nTwo defects fixed b\n[…]\nlename now all\nagree at 54.\n- Numbers are an interim partial run and are not quotable as results;\nthe `note` field records that inline so a future reader cannot mistake\nit for a completed measurement.",
          "is_bot": false,
          "headline": "chore(bench): commit the frozen #317 baseline lane as a tracked artif…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-28T08:16:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35062e8f07552fd5417ada5f6c9c638b78aa98cb",
          "body": "Promotes the `docusaurus-i18n-md-links-break-across-locales` candidate\n(authored 2026-07-18) to active scar **0024**, and drops an unrelated\nauto-harvest candidate that was untracked.\n\nNo issue link: `pr-validation.yml` exempts scars-only PRs from the\nissue-first gate, because the human sign-off hap\n[…]\nt thinking about the locale build.\n\n## Tests\n\n`scar lint` clean: 25 files, 0 with errors, 0 orphans, 0 partial-rot, 0\nunreachable-evidence. The `scar lint` CI job covers this. No runtime\ncode touched.",
          "is_bot": false,
          "headline": "docs(scars): promote the i18n .md-link landmine to active (0024) (#373)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-28T08:00:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d4da62bc581fb859a2ff4cdd8f31619b744d7560",
          "body": "…en + es) (#371)\n\nCloses #370\n\n## What\n\nAdds the first concept-genre post to the site blog, in English and\nSpanish under the shared slug `verbatim-vs-inferred`. The Spanish\nversion is a native rewrite rather than a translation, matching the\napproach used for the existing posts.\n\nThe post covers, in \n[…]\nts. Blog tags are inline; no `tags.yml` exists, so\nthis warns rather than fails.\n\nPermalinks `/blog/verbatim-vs-inferred` and\n`/es/blog/verbatim-vs-inferred` to be verified 200 after the Pages\ndeploy.",
          "is_bot": false,
          "headline": "docs(site): concept blog post on verbatim vs inferred trust classes (…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-28T07:23:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "413f849f82afac7cd078da60ecb9ecb51f90c9ea",
          "body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.20.0](https://github.com/Daily-Nerd/daimon/compare/v0.19.0...v0.20.0)\n(2026-07-22)\n\n\n### Features\n\n* **briefing:** deterministic external-state spot-check for carried\nclaims ([#366](https://github.com/Daily-Nerd/daimon/issues/366))\n([75b05b8\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.20.0 (#354)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-23T14:18:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "75b05b8cd2e9f8717ea1dc5e13d926bd1885897f",
          "body": "…laims (#366)\n\nCloses #365\n\n## What\n\nAt briefing render, carried items whose text makes a checkable\nPR/issue-state claim (\"PR #60 awaiting review\", \"issue #171 closed\",\nbare \"#60 merged\") are spot-checked against reality via read-only `gh`\nprobes. Confirmed-current items render untouched. Contradict\n[…]\nm\nfuture briefs; rejecting via `daimon reverify` keeps it live. The\nrendered note/status vocabulary is bounded to open/closed/merged at the\nstamp site — `gh` output is trusted for truth, not for text.",
          "is_bot": false,
          "headline": "feat(briefing): deterministic external-state spot-check for carried c…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-22T06:24:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d9c325116dcf6109fb3b39475a16ace6aadf5303",
          "body": "… failed serializes (#363)\n\nCloses #360\n\n## What\n\nPerspective-diverse extraction as the opt-in escalation tier for heal's\nre-serialize. With `DAIMON_HEAL_ESCALATION=1`, `daimon heal` runs stage\n1 as one extraction pass per perspective (`decisions-and-outcomes`,\n`open-loops-and-questions`, `artifacts\n[…]\nr so chronology rules (merge rules 4/9, and the briefing's\ntail-keeping decision cap, scar #6) still see session order. All\nverification stays in the deterministic gates, which this PR does not\ntouch.",
          "is_bot": false,
          "headline": "feat(heal): perspective-diverse extraction as the escalation tier for…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-22T03:37:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "268134bd956d77241b6ea0ececb4371e9bec4c04",
          "body": "…s at capture time (#362)\n\nCloses #359\n\n## What\n\nCapture-time grounding for outcome claims, composing directly with\n#358's message-id binding:\n\n- **transcript.py** now surfaces Claude Code JSONL rows whose only\npayload is `tool_result` blocks — previously dropped as noise — as\n`{\"role\": \"tool\", \"con\n[…]\nwn slice; `carry.py`'s verbatim-freeze path replaces a\ntwin's quote+ids but leaves the twin's own `grounded` verdict in place —\nworth aligning when `grounded` becomes render-visible. #360 not touched.",
          "is_bot": false,
          "headline": "feat(serializer): ground success claims in tool results and exit code…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-22T03:13:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ef90d615fa0e16e3049e0907f300f8ffe87e8e91",
          "body": "…pture time (#361)\n\nCloses #358\n\n## What\n\nSlice 1 of message-id binding: verbatim items now carry the transcript\nmessage id(s) their quote came from, captured at serialization time,\nvalidated at the parse boundary, and used by verification with the\nwhole-transcript scan as fallback.\n\n- **Capture**: \n[…]\nself changes\nwhen markers are present (the key's primary input). Marker numbering is\npositional over the full message list, so #48's prefix-chunk reuse on\ngrown transcripts keeps citing valid markers.",
          "is_bot": false,
          "headline": "feat(serializer): bind verbatim items to transcript message ids at ca…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-22T02:30:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1fbea61a841fe385d51e94239e71c8cb518f1a64",
          "body": "Closes #355\n\n## What\n\nBumps every GitHub Action in `.github/workflows/` to its latest major,\nverified against each repo's releases as of today:\n\n| Action | Before | After | Notes |\n|---|---|---|---|\n| `actions/checkout` | v4 | v7 | |\n| `actions/setup-node` | v4 | v7 | |\n| `actions/upload-artifact` |\n[…]\nloy-pages` v4→v5 | node24 only, no input changes. |\n\nAll runners are `ubuntu-latest` (GitHub-hosted), so the\nnode24/runner-minimum-version requirements across these majors are\nautomatically satisfied.",
          "is_bot": false,
          "headline": "chore(ci): bump action majors across workflows (#357)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-22T01:15:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9ffc400ce2a8260896c59e2962e3382527c60ce7",
          "body": "…to CLI commands (#356)\n\nCloses #351\n\n## What\n\nThe agent skill (both densities in `skill_content.py`) now teaches the\nMCP tool surface shipped in 0.19.0:\n\n- FULL gains an `## MCP tool surface` section: `daimon_brief` /\n`daimon_recall` / `daimon_projects` / `daimon_status` are the same\noperations as \n[…]\ns). Existing budget guards re-verified the\nconstraints: compact ≤ 2,000 chars, full ≤ 150 lines, MUST rule last,\npinned literals intact.\n- `ruff check` clean; mypy adds no new errors in touched files.",
          "is_bot": false,
          "headline": "feat(skill): teach the MCP tool surface as a first-class alternative …",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-22T00:44:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a32819b5d7e2496fe19c6691b1495e79907d5ce8",
          "body": "Closes #352\n\n## What\n\n- Adds the 0.19.0 release post to the site blog in English and Spanish\n(shared slug `daimon-0-19`, so the permalink is `/blog/daimon-0-19` and\n`/es/blog/daimon-0-19`).\n- Covers the release headliners already public in the changelog: the\ndocs site itself, the read-only MCP serve\n[…]\nes,\nprivate paths, or unpublishable benchmark numbers).\n- Frontmatter mirrors the existing `2026-07-18-daimon-has-a-home.md`\npair (same authors key, tags, truncate marker, shared slug across\nlocales).",
          "is_bot": false,
          "headline": "docs(site): blog release post for 0.19.0 (en + es) (#353)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-21T23:56:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a687e29c7ca4694cb6a3b20d166677b1ba414717",
          "body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.19.0](https://github.com/Daily-Nerd/daimon/compare/v0.18.0...v0.19.0)\n(2026-07-21)\n\n\n### Features\n\n* **cli:** daimon forget — item removal with a tombstone event\n([#322](https://github.com/Daily-Nerd/daimon/issues/322))\n([3fa223c](https://gi\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.19.0 (#323)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T18:40:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "947cfd9da8d67167c41ab3a5245eae124d38e8ed",
          "body": "…(#350)\n\nCloses #349\n\n## PR Type\n\n- [x] Bug fix\n\n## Summary\n\n- The stale-hook warning (`sessions captured but no hook briefings\nlogged — re-run daimon hooks install`) counted spawns from every host,\nbut only the Claude Code SessionStart hook ever logs `brief:auto`. A\nmachine served exclusively by ho\n[…]\n approved issue\n- [x] Added exactly one `type:*` label\n- [x] Shellcheck N/A\n- [x] Docs unchanged (behavioral fix to a false warning)\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers",
          "is_bot": false,
          "headline": "fix(stats): scope the stale-hook warning to auto-brief-capable hosts …",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-21T05:40:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0e5db263d1328f6a145cb5c7efa2e3db1cfaad06",
          "body": "… 1) (#348)\n\nRefs #48\n\n## PR Type\n\n- [x] New feature\n\n## Summary\n\n- Slice 1 of #48: content-addressed chunk-extraction cache, generalizing\nthe #314 partials store it replaces. Key = chunk text + backend + model\n+ temperature + PROMPT_VERSION + a hash of the actual serialize system\nprompt (an un-vers\n[…]\n [x] Shellcheck N/A\n- [x] Docs: env vars documented in config docstrings; site reference can\npick up the knobs in the next docs pass\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers",
          "is_bot": false,
          "headline": "feat(serializer): content-addressed chunk-extraction cache (#48 slice…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-21T05:02:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1159f46727b92268c1f2b3df5481da5ad9c9c6da",
          "body": "Closes #261\n\n## PR Type\n\n- [x] New feature\n\n## Summary\n\n- `daimon mcp serve`: opt-in, read-only MCP server over stdio — pure\nstdlib JSON-RPC 2.0 (initialize / ping / tools/list / tools/call), no\nnew dependency, no `[mcp]` extra. Four tools: `daimon_recall`,\n`daimon_brief`, `daimon_projects`, `daimon\n[…]\nissue\n- [x] Added exactly one `type:*` label\n- [x] Shellcheck N/A (no shell scripts touched)\n- [x] Docs updated (new reference page)\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers",
          "is_bot": false,
          "headline": "feat(mcp): opt-in read-only MCP server over stdio (#347)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-21T03:39:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fe89f797eca0de9e94a963186aced0539751e3aa",
          "body": "Closes #341\n\n## PR Type\n\n- [x] Bug fix\n\n## Summary\n\n- The command fallback now gets its own guaranteed deadline budget on\nentry (`max(remaining, DAIMON_FALLBACK_MIN_SECONDS)`, default\n`DAIMON_TIMEOUT`) — previously it inherited whatever the primary left\nafter retrying the failing gateway, which was \n[…]\ns touched)\n- [x] Docs unchanged (env var documented in config docstring; site\nreference page can pick it up with the next docs pass)\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers",
          "is_bot": false,
          "headline": "fix(llm): give the command fallback its own deadline budget (#346)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-21T03:12:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "88740fa944c6790efe37e538338717a9a85f165b",
          "body": "…naugural post (#338)",
          "is_bot": false,
          "headline": "feat(site): blog — canonical home for announcements, with bilingual i…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T22:19:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "40268bbf8d1ab192d65f073faaf2ff02a71d3b71",
          "body": "…(#340)",
          "is_bot": false,
          "headline": "fix(site): Spanish landing page — wire translate() into custom index …",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T22:04:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f0ba938d8b9d97f653db0c39554c255ddca6312f",
          "body": "…lated (#336)\n\nCloses #335\n\n## What\n\nTranslates the nine pages that still fell back to English in the es\nlocale: the site overview (`index`), all five host pages, the\nconfiguration reference, the backends matrix, and team memory. The es\nlocale now has zero fallback pages — clicking through the Spani\n[…]\nide.\n\n## Tests\n\n- Local `npm run build`: en + es both compile with **zero warnings**\n(previous es builds carried a broken-anchor warning; now clean).\n- CI docs build + broken-link check gates this PR.",
          "is_bot": false,
          "headline": "docs(site): complete Spanish coverage — all remaining doc pages trans…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T21:37:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0285665bbbfb0b1c444fbd0161cfdf656caed432",
          "body": "Closes #326\n\n> **Final stage of #326** — closing is correct this time. All prior\nstages merged: README slim (#327), quickstart (#328), concepts (#329),\ncuration (#332), prose pass (#333, open in parallel — independent\nfiles).\n\n## What\n\n- Translates the five pages #326 scoped for the Spanish first pa\n[…]\nusaurus\npreserves accents in slugs); links to not-yet-translated pages resolve\nthrough the default-locale fallback.\n- The CI docs build compiles both locales and runs the broken-link check\non this PR.",
          "is_bot": false,
          "headline": "docs(site): Spanish first pass — quickstart and concepts pages (#334)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T21:28:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f545271345f0b36c9286adddab419652cb6b3dec",
          "body": "…ferences (#333)\n\nRefs #326\n\n> Intermediate stage of #326 — does not close it on merge. Remaining\nafter this: Spanish first pass (quickstart + concepts).\n\n## What\n\nProse pass over the four host pages — the only retained pages that still\nread repo-internal (team, configuration, and backends-tested sc\n[…]\n_HARVEST` config row\nexcepted — real variable name).\n- The new quickstart anchor link (`quickstart.md#2-connect-an-llm`)\nmatches the actual heading; docs build + broken-link check gates this PR\nin CI.",
          "is_bot": false,
          "headline": "docs(site): prose pass on host pages — user tone, no repo-internal re…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T21:11:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5c2241914da7dda72d4ff779584bdacc22fd16c0",
          "body": "Refs #326\n\n> First live use of the `Refs` keyword from #331 — this is an\nintermediate stage of #326 and should NOT close it on merge.\n\n## What\n\nCuration verdicts for the three pages #326 flagged as reading\nrepo-internal:\n\n- **`reference/validation.md` — removed.** Historical go/no-go gate\ndefinition\n[…]\ndates were prose words, not links).\n- Both repo originals verified present: `docs/VALIDATION.md`,\n`docs/ARCHITECTURE.md`.\n- Site build + broken-link check runs in CI (docs.yml gates `website/**`\nPRs).",
          "is_bot": false,
          "headline": "docs(site): curation — return internal-history pages to the repo (#332)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T21:01:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "68885b9b35ce3a36865681547f899100629900cd",
          "body": "…n merge (#331)\n\nCloses #330\n\n## What\n\n- Adds `refs` to the accepted issue-link keywords in both validation\nsteps (issue-reference check and approved-label lookup) in\n`pr-validation.yml`.\n- Updates the PR template comment with the convention: `Refs #N` for a\nstage of a multi-PR issue, `Closes #N` fo\n[…]\nath live.\n- Note: the validation run on THIS PR uses the workflow from main\n(pull_request event), so the green check here proves no regression; the\nnew keyword takes effect for PRs opened after merge.",
          "is_bot": false,
          "headline": "ci(pr-validation): accept Refs #N so staged issues don't auto-close o…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T20:55:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7fc22c88a46814fa79f1b62415d12b2a9ce77bda",
          "body": "…ecycle (#329)\n\nCloses #326\n\n> **Staged issue** — concepts stage of #326. Remaining: content\ncuration, prose pass, Spanish. Reopen #326 after merge (the `Closes`\nkeyword is required by PR validation).\n\n## What\n\nFour new pages under **Concepts**:\n\n- **Trust classes** — verbatim / inferred / untagged \n[…]\nted precisely on the page.\n- Cross-page links and the `configuration.md#receipts` anchor checked\nagainst actual headings.\n- Site build + broken-link check runs in CI (docs.yml gates `website/**`\nPRs).",
          "is_bot": false,
          "headline": "docs(site): concepts pages — trust classes, carry, receipts, item lif…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T20:50:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4787e3a5be93a7a1b7ec7d7d037284ce91f2fa6d",
          "body": "Closes #326\n\n> **Staged issue** — quickstart stage of #326. Remaining: content\ncuration, concepts pages, prose pass, Spanish. Reopen #326 after merge\n(the `Closes` keyword is required by PR validation).\n\n## What\n\n- Adds `getting-started/quickstart.md`: install → connect an LLM\n(`daimon configure` + \n[…]\nlative link targets exist in `website/docs/`\n(configuration, hosts/index, reference/backends-tested, team/team).\n- Site build + broken-link check runs in CI (docs.yml gates PRs touching\n`website/**`).",
          "is_bot": false,
          "headline": "docs(site): quickstart — install to first briefing in one page (#328)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T20:36:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3d87d4d7820e8a0a74eb156d52e73507b7e1e0e3",
          "body": "Closes #326\n\n> **Staged issue** — this is the README-slim opener of #326; the\nremaining stages (curation, quickstart, concepts, prose pass, Spanish)\nare still pending. Reopen #326 after merge.\n\n## What\n\n- Slims the README from 184 to 105 lines: pitch, briefing example, demo,\nminimal install, and a p\n[…]\nrep-verified to exist on the site or in\ndocs/ before cutting; the one gap found (general upgrade instructions,\npreviously only in the Codex host page) was kept as a one-line note in\nthe install block.",
          "is_bot": false,
          "headline": "docs(readme): slim README to pitch, install, and docs-site links (#327)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T20:21:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "df6b8d25fb0c50efbfe7d08ef2f272ebf595c9e1",
          "body": "…325)\n\nCloses #324\n\n## What\n\n- `website/`: Docusaurus (classic, TypeScript), branded and configured\nfor `daily-nerd.github.io/daimon`, locales `en` + `es` (Spanish navbar\nswitcher live; translations land incrementally).\n- `docs/` migrated verbatim into sidebar categories: Getting Started /\nHosts / C\n[…]\npage that does not\nexist yet.\n\n## Tests\n\n`npm run build` clean in both locales with `onBrokenLinks` enforcing;\nlocal dev server verified rendering. No Python surface touched — pytest\nsuite unaffected.",
          "is_bot": false,
          "headline": "feat(docs): Docusaurus documentation site with GitHub Pages deploy (#…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T19:41:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3fa223c9a1bb81e0d78220acb9ff2ff3c8418f21",
          "body": null,
          "is_bot": false,
          "headline": "feat(cli): daimon forget — item removal with a tombstone event (#322)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-18T18:02:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1d299eb64ca5a071e7f2b35b00be7f965f4954b5",
          "body": null,
          "is_bot": true,
          "headline": "chore(main): release 0.18.0 (#309)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-18T09:44:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e2fbd405934822d272999b685055b52d862aa21",
          "body": "…he lanes (#320)",
          "is_bot": false,
          "headline": "fix(bench): key and pin the scene-traces flag so runs never share cac…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-17T07:35:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e85b181fd991c402af13833c77d7fd3746c32f27",
          "body": "…318)",
          "is_bot": false,
          "headline": "feat(serializer): opt-in per-item scene traces, indexed for recall (#…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-17T06:28:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e184332359f19ba0e48866d1827e667e1aab314",
          "body": "…k partials across heals (#316)",
          "is_bot": false,
          "headline": "fix(serializer): scale the deadline to the wave plan and persist chun…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-17T01:24:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d756bfb994cbc62b4c418be99be8bb5dfec1f95f",
          "body": "…es cannot pin a bad response through heal (#315)",
          "is_bot": false,
          "headline": "fix(serializer): add a per-run nonce to retry markers so gateway cach…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-17T00:13:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38cfb937150992c8426a1711f346e6e25276bac7",
          "body": null,
          "is_bot": false,
          "headline": "fix(llm): extract fenced JSON from anywhere in a model response (#313)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-17T00:11:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7f020fb630ed81a53dd8174ec0f56aa6317992c",
          "body": null,
          "is_bot": false,
          "headline": "test(cli): freeze the clock in brief byte-identity tests (#310)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-16T07:16:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a16c0f4c3ff4ac107d4c5a8ac7b28865b2a2e47f",
          "body": "…old (#308)\n\nCloses #300\n\n## What\n\nCollapses **adjacent-identical result lines** in `_stats_capture`'s fold\nover `serialize.log`, so one serialize counts once.\n\nDiagnosis is on the issue: **cosmetic, not double spend.** One\nserialize, two log lines.\n\n- Doubled pairs carry exactly **one** `LLM usage \n[…]\nonsecutive serializes across six days.\n\nThis PR fixes the read side, which is the part that is still wrong today\nregardless of which writer produced the doubles.\n\n<!-- PR type: Bug fix -> type:fix -->",
          "is_bot": false,
          "headline": "fix(stats): collapse adjacent-duplicate result lines in the capture f…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-16T06:52:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e067f148154ff7c1ec44226b37e64327d99bf41c",
          "body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.17.0](https://github.com/Daily-Nerd/daimon/compare/v0.16.1...v0.17.0)\n(2026-07-16)\n\n\n### Features\n\n* **cli:** add resolve --dry-run — look before the write\n([#306](https://github.com/Daily-Nerd/daimon/issues/306))\n([4318911](https://github.c\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.17.0 (#291)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-16T06:10:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "43189112caa4cef395a5fd1fb9d8c0df015ce878",
          "body": "## Summary\n\n`daimon resolve` was a blind write: the first thing a fuzzy query did\nwas mutate the ledger. The existing ambiguity guard refused ties, but a\nconfident match on the *wrong* item passed through untouched and\nsilently suppressed a live memory. This adds `--dry-run` so an agent can\nlook bef\n[…]\nwould resolve <id>: ...`, exit 0; ambiguous and\nno-match outputs diffed byte-identical with/without `--dry-run`; `daimon\nstats --json` shows `resolve:dry-run` counted apart from `resolve`\n\nCloses #304",
          "is_bot": false,
          "headline": "feat(cli): add resolve --dry-run — look before the write (#306)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-16T04:52:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e21633c4794fd296667bac5bc0d45460a3d92b59",
          "body": "## What\n\nTwo instrument gaps from #303, in `plugin/daimon_briefing/cli.py`:\n\n1. **`resolve` now has a usage counter.** `_note_usage(\"resolve\")` fires\non success — the one verb the #257/#258 skill work exists to move was\nthe one verb with no counter at all.\n\n2. **The two match-outcome refusals record\n[…]\nrecall` counts unchanged, `resolve` absent when never called\n\nFull suite: `1725 passed, 2 skipped` (main was `1719 passed, 2 skipped`;\n+6 new tests, zero regressions). `ruff check` clean.\n\nCloses #303",
          "is_bot": false,
          "headline": "fix(stats): instrument resolve and tag recall by bench origin (#305)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-16T04:14:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "157451925a3f64c5c8576c9d3a34f8b3ec770649",
          "body": "…iled (#301)\n\nCloses #299\n\n## Summary\n\n- `sweep_orphans` treated a repeatedly-**failed** serialize identically\nto a **never-attempted** one, since a failed serialize writes no\ncheckpoint — so it was re-spawned at full LLM cost on every SessionStart\nfor up to 14 days (the only existing bound).\n- Adds\n[…]\nproved`)\n- [x] Exactly one `type:*` label to be added (`type:fix`)\n- [x] No shell scripts modified — shellcheck N/A\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` / AI-attribution trailers",
          "is_bot": false,
          "headline": "fix(hooks): skip sweep_orphans candidates the ledger already shows fa…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-16T02:53:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c2e3d36c2bd85e2f462dbad7b4710770dd06e515",
          "body": "…alls (#302)\n\n## Summary\n\n`urlopen`'s `timeout=` bounds a single blocking socket read, not the\nwhole call. A response that keeps delivering bytes never trips it, so a\nsingle LLM call could run arbitrarily long past the computed `deadline`\nand still be reported as success — observed in the field at 7\n[…]\nunder-deadline behavior is untouched and still passes.\n\n`cd plugin && uv run pytest` — 1714 passed, 2 skipped (baseline was 1711\npassed, 2 skipped; the 3 new tests account for the delta).\n\nCloses #298",
          "is_bot": false,
          "headline": "fix(llm): enforce the total deadline mid-response, not just between c…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-16T02:53:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d649371f960f0ff05b58ab354b9e9177c5a75a9a",
          "body": "## Summary\n\nThe #185 identical-bytes guard (`store.transcript_unchanged`) skipped a\nre-serialize whenever transcript bytes matched the stored\n`transcript_hash`, but never checked the checkpoint's `format_version`\nagainst the current `serializer.PROMPT_VERSION`. After a\n`PROMPT_VERSION` bump, the tra\n[…]\nhe fix; full suite passes (1691 passed, 2\nskipped)\n- [x] Confirmed all pre-existing #185 guard tests pass unchanged\n(same-version-implicit checkpoints still skip)\n- [x] `ruff check` clean\n\nCloses #293",
          "is_bot": false,
          "headline": "fix(store): make transcript_unchanged version-aware (#296)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-16T01:40:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e4bc89db7c121bea35f6285a1fc9f8dcd3871e53",
          "body": "## What\n\nThe format-drift check compared `format_version` for inequality only, so\ntwo very different events rendered the identical sentence:\n\n- checkpoint **older** than the running code — routine drift after a\nversion bump (#93). Expected, clears on re-serialize.\n- checkpoint **newer** than the run\n[…]\nx] Implemented `schema.compare_format_versions` + updated both call\nsites; tests now GREEN\n- [x] Full suite: `cd plugin && uv run pytest` — 1694 passed, 2 skipped\n- [x] `ruff check` clean\n\nCloses #294",
          "is_bot": false,
          "headline": "fix(status): give the format-drift warning a direction sense (#297)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-16T01:33:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2ca8237bf201729a54a45b2dcd32ad457ea58505",
          "body": "…ry (#295)\n\n## Summary\n\nA checkpoint's `format_version`, `created`, and `author` are facts the\ncode asserts about where a checkpoint came from — but nothing stopped\nthe extraction model from emitting these keys in its own output.\n`store.write_checkpoint` stamps them with `setdefault`, which means a\n\n[…]\nrwrite_existing_stamp`,\n`test_write_does_not_overwrite_existing_author`) pass unchanged — this\nfix never touches `store.py`.\n\nFull suite: 1698 passed, 2 skipped (pre-existing, unrelated).\n\nCloses #292",
          "is_bot": false,
          "headline": "fix(serializer): strip code-owned provenance keys at the parse bounda…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-16T01:29:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e4e7a1eb407612a08b5cb1e7a69c4a2a35c6cf32",
          "body": "…14) (#290)\n\n## Problem\n\nField report from a real session (#287): the briefing carried an\nupstream fix with the exact code quote intact — but NOT the upstream\nrepo's name. The decision item amounted to \"file issue #5 upstream\", and\n\"issue #5\" without a repo is half a pointer: if daimon had been the \n[…]\n).\n\n## Tests\n\n- `test_serialize_prompt_has_external_artifact_identifier_rule` (RED\nfirst)\n- `test_prompt_version_is_d014` (version-history comment extended)\n- Full suite green, ruff clean\n\nCloses #287",
          "is_bot": false,
          "headline": "feat(serializer): capture external-artifact identifiers verbatim (D-0…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-14T22:16:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b9afc5b40a0a399597d2518215f3e4eb9c2f8db4",
          "body": "…em, newest checkpoint wins (#289)\n\n## Problem\n\nA carried item lives in every checkpoint that carries it, so\n`recall.search` returned it once per checkpoint. Field report from a\nreal session: the same item echoed from checkpoints 15 minutes and 17\nhours old, padding the result list and pushing disti\n[…]\nstinct_items_sharing_words`\n- `test_search_dedupe_preserves_distinct_authors`\n- `test_search_dedupe_backfills_to_limit` (overfetch prevents\nunder-filled results)\n- Full suite: 1682 passed\n\nCloses #288",
          "is_bot": false,
          "headline": "fix(recall): dedupe results by item content — one hit per distinct it…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-14T22:16:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a908db5d640176468c87548adbf34aaa304295ec",
          "body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.16.1](https://github.com/Daily-Nerd/daimon/compare/v0.16.0...v0.16.1)\n(2026-07-14)\n\n\n### Bug Fixes\n\n* **config:** raise default DAIMON_TIMEOUT 120 -&gt; 420 to fit real\nserialize calls\n([#285](https://github.com/Daily-Nerd/daimon/issues/285)\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.16.1 (#282)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-14T06:39:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c31cdf5a1580c2f8fdbe2ffe2d3d1f068afc48eb",
          "body": "…re-serializing (#286)\n\n## Problem\n\n`docs/demo/README.md`'s recovery step for the known-flaky supersession\nflag (\"rerun session 2 with `DAIMON_LLM_NO_CACHE=1`\") is dead-ended by\nthe identical-bytes guard: the rerun is skipped with `transcript\nunchanged since checkpoint (hash match)`. The env var bus\n[…]\nneration,\ncorrectly id-bound.)\n\nRecipe verified end-to-end on a fresh install: delete + no-cache rerun\nproduces a fresh generation, and the ⚠ flag fired with correct `daimon\nresolve` ids.\n\nCloses #283",
          "is_bot": false,
          "headline": "docs(demo): fix the flag-rerun recipe — delete the checkpoint before …",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-14T06:37:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "14a689cac24f4ab65086a2d2d6ea19467dbef9db",
          "body": "…alize calls (#285)\n\n## Problem\n\nThe default `DAIMON_TIMEOUT=120` kills real serialize calls on the\nrecommended zero-config `claude` backend. Fresh-install smoke on the two\nsmall `docs/demo/` transcripts measured 74s/94s/73s **with one kill at\n>120s**; long-lived installs measure avg 256s / max 1732\n[…]\n (TDD: watched it fail at 120, pass at 420);\nexplicit-override path unchanged\n\nVerified: full suite 1677 passed, ruff clean. The >120s kill reproduced\non a fresh isolated install pre-fix.\n\nCloses #284",
          "is_bot": false,
          "headline": "fix(config): raise default DAIMON_TIMEOUT 120 -> 420 to fit real seri…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-14T06:37:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c255c76d09685c10e817bec1642fc1d2bb49e762",
          "body": "…ite (#281)\n\n## Problem\n\n`DAIMON_TEAM=1` is machine-global and checkpoint routing had no\nmembership check: with exactly one sidecar clone present,\n`_dual_write_team` routed **every project on the machine** into it. A\nshared team remote paired with personal projects published personal\nsession memorie\n[…]\nd against a real bare remote + two working repos:\nmember checkpoint landed in the clone under `projects/org/alpha/`,\nforeign checkpoint stayed in `local/`, status rendered the scope line.\n\nCloses #279",
          "is_bot": false,
          "headline": "fix(team): default-closed per-remote scope gate on checkpoint dual-wr…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-14T04:52:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c69c3a373e6141855ba9f0f723225033effaf4c4",
          "body": "## Problem\n\nThe LongMemEval-S harness (#267) serializes each question's haystack\nwith cross-session carry hardcoded off (`carry: \"off\"` in the config\nstamp). Carry — folding prior unresolved items forward into later\ncheckpoints — is a real product feature, and we cannot say whether it\nhelps or hurts\n[…]\n carry preserves\nthe origin session.\n- Full suite: `uv run --extra dev --extra pretty python -m pytest tests/\n-q` → 1657 passed, 2 skipped.\n- `ruff` and `mypy` clean on the changed files.\n\nCloses #274",
          "is_bot": false,
          "headline": "test(bench): carry-on configuration as a separate retrieval axis (#278)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-14T00:51:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c1474c31efa90a2251b990d0369373788c03e948",
          "body": "…(#277)\n\n## Problem\n\nRunning the plugin test suite left ~9 orphaned `daimon-windsurf-hooks.py\n--finalize <session> <transcript>` processes behind, each sleeping the\nproduction 600s quiet period while pointing at a deleted pytest tmp\ntranscript. Every serialize-capable post event in the windsurf hook\n[…]\null plugin suite: `uv run --extra dev --extra pretty python -m pytest\n-q` — 1647 passed, 2 skipped\n- `ps -eo pid,etime,command | rg finalize` after the full run — zero\nlingering processes\n\nCloses #275",
          "is_bot": false,
          "headline": "test: stop windsurf hook tests leaking detached --finalize processes …",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-14T00:40:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8a0f83ca7ec008207abd398719fd157bb0bbda1",
          "body": null,
          "is_bot": false,
          "headline": "chore: add logos directory for local brand exploration",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-13T19:00:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06cc118dbdd63dd501ee2520300acb1f36491bfe",
          "body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.16.0](https://github.com/Daily-Nerd/daimon/compare/v0.15.0...v0.16.0)\n(2026-07-13)\n\n\n### Features\n\n* **hooks:** daimon hooks status — detect stale installed hook copies\n([#271](https://github.com/Daily-Nerd/daimon/issues/271))\n([917b731](htt\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.16.0 (#249)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-13T18:53:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "56cf748d241971cb31acdb2d04b9f4243b51a799",
          "body": null,
          "is_bot": false,
          "headline": "test(bench): LongMemEval-S retrieval benchmark harness (#272)",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-13T01:15:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "917b731d0ec8e526d57d22aa3dee0762c0cb86b9",
          "body": "… (#271)",
          "is_bot": false,
          "headline": "feat(hooks): daimon hooks status — detect stale installed hook copies…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-13T01:06:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "889d1ee0e77947fc5b699cd6448c5bf51c15d1d0",
          "body": "… written (#270)",
          "is_bot": false,
          "headline": "feat(status): silent-capture alarm — sessions observed vs checkpoints…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-12T23:18:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b57c2a8fba2df63906040eac5a429b2cdf3e521",
          "body": "…#263)\n\n## Summary\n\nCodex appeared in `daimon skill list` but not `daimon hooks list`, so a\nreleased install had no supported way to install the Codex\n`SessionStart`/`Stop` lifecycle hooks — the only installer lived in the\nsource checkout (`hook/codex-hooks.py`). This packages the Codex\nintegration \n[…]\n\n- Hook mirror drift check (`sync_hooks.py --check`): in sync.\n- `daimon hooks list` now reports `codex (daimon-codex-session-start.py,\ndaimon-codex-stop.py; events: SessionStart, Stop)`.\n\nCloses #262",
          "is_bot": false,
          "headline": "fix(hooks): package Codex lifecycle hooks in `daimon hooks install` (…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-12T02:08:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8a169cb78ca4c9b5bf62799d7458375fb44c0d1b",
          "body": "…260)\n\nCloses #259\n\n### What\n\nA project-scoped `recall` that finds nothing now reruns the query\nunscoped (one extra FTS query, same index, zero-match path only) and\nprints **counts by project — never content**:\n\n```\n$ daimon recall gateway\nno matches in this project — 5 match(es) elsewhere:\n  -Users\n[…]\nsuite: 1548\npassed. Live end-to-end on a real 14-bucket corpus: a term indexed only\nin another project's bucket now signposts that bucket with its count,\nand the suggested follow-up returns the items.",
          "is_bot": false,
          "headline": "feat(recall): zero-match scoped search reports where matches exist (#…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-12T00:21:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8b6da55801d94b05f6a3fb09ffef7fa9e96d00d7",
          "body": "…e to close loops (#258)\n\nCloses #257\n\n### What\n\nTwo new sections in the full skill body, mirrored tersely in the compact\nvariant:\n\n- **Searching memory** — the briefing is only the latest checkpoint;\nwhen the user references past work it doesn't answer, run `daimon recall\n<salient terms>` BEFORE an\n[…]\nd.\n\n### Rollout note\n\nSkill content ships inside the package — existing installs need `daimon\nskill install <host>` re-run after the next release upgrade (the\ninstall-time reminder already says this).",
          "is_bot": false,
          "headline": "feat(skill): teach agents to use memory — recall on reference, resolv…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-11T23:48:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e63c068fdc619b323953c52d9af1c5ee61ef266f",
          "body": "… no drift (#256)\n\nCloses #255\n\n### What\n\n`recall._apply_event_resolutions` no longer re-implements the lifecycle\nliveness rule. Per bucket it now runs\n`store.resolutions(project_dir=<bucket name>)` (the bucket name is the\nslug; slug munging is idempotent, guarded by test since #243) and marks\n`supe\n[…]\nby:<id>` still\ncarries the target id; candidates never mark. All existing recall tests\n(exact `\"resolved\"`/`\"reopened\"` spellings, #247 no-manual-rebuild pair)\npass unchanged. Full suite: 1539 passed.",
          "is_bot": false,
          "headline": "fix(recall): index liveness fold reuses store.is_resolved — one rule,…",
          "author_name": "Kibukx",
          "author_login": "Kibukx",
          "committed_at": "2026-07-11T23:28:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 30,
      "commits_last_year": 222,
      "latest_release_at": "2026-07-30T18:16:06Z",
      "latest_release_tag": "v0.22.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 4,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 2.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "daimon-briefing",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [
            "ai-agents",
            "briefing",
            "checkpoint",
            "claude-code",
            "context",
            "llm",
            "memory",
            "provenance",
            "session",
            "Development Status :: 4 - Beta",
            "Environment :: Console",
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Topic :: Software Development"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/daimon-briefing/",
          "is_deprecated": false,
          "latest_version": "0.22.0",
          "repository_url": "https://github.com/Daily-Nerd/daimon",
          "versions_count": 30,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 3865,
          "first_published_at": "2026-07-03T02:58:59.413625Z",
          "latest_published_at": "2026-07-30T18:16:33.867942Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 2,
      "stars": 10,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-07-11",
            "count": 1
          },
          {
            "date": "2026-07-29",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 2,
        "total_forks": 2
      },
      "star_history": null,
      "open_issues_and_prs": 16
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "website/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 278574,
      "source_files_sampled": 164,
      "oversized_source_files": 9,
      "agent_instruction_files": [
        "docs/hosts/gemini.md",
        "website/docs/hosts/gemini.md",
        "website/i18n/es/docusaurus-plugin-content-docs/current/hosts/gemini.md"
      ],
      "agent_instruction_max_bytes": 2467
    },
    "dependencies": {
      "manifests": [
        "plugin/pyproject.toml",
        "website/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "tomli",
          "manifest": "plugin/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0"
        },
        {
          "name": "@docusaurus/core",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "3.10.2"
        },
        {
          "name": "@docusaurus/faster",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "3.10.2"
        },
        {
          "name": "@docusaurus/preset-classic",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "3.10.2"
        },
        {
          "name": "@mdx-js/react",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.0"
        },
        {
          "name": "clsx",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.0"
        },
        {
          "name": "prism-react-renderer",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.3.0"
        },
        {
          "name": "react",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.0.0"
        },
        {
          "name": "react-dom",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.0.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": 1,
        "merged_prs": 237,
        "open_issues": 15,
        "closed_ratio": 0.928,
        "closed_issues": 192,
        "closed_unmerged_prs": 1
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "Kibukx",
          "commits": 216,
          "avatar_url": "https://avatars.githubusercontent.com/u/72950620?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "benchmark.yml",
        "ci.yml",
        "docs.yml",
        "pr-validation.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json",
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 9,
            "reason": "29 out of 30 merged PRs checked by a CI test -- score normalized to 9",
            "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/28 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 0,
            "reason": "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": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 5,
            "reason": "5 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "6ed5e2f930e300da7542d936d6f3fe9ebecf64ac",
        "ran_at": "2026-07-30T18:17:50Z",
        "aggregate_score": 2.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-30T18:17:12Z",
      "oldest_open_prs": [
        {
          "number": 396,
          "created_at": "2026-07-29T05:20:06Z",
          "last_comment_at": "2026-07-29T05:21:33Z",
          "last_comment_author": "codecov"
        }
      ],
      "last_merged_pr_at": "2026-07-30T18:15:54Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 48,
          "created_at": "2026-07-04T00:38:09Z",
          "last_comment_at": "2026-07-21T05:03:28Z",
          "last_comment_author": "Kibukx"
        },
        {
          "number": 106,
          "created_at": "2026-07-07T07:44:33Z",
          "last_comment_at": "2026-07-21T02:04:16Z",
          "last_comment_author": "Kibukx"
        },
        {
          "number": 264,
          "created_at": "2026-07-12T02:29:26Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 269,
          "created_at": "2026-07-12T21:54:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 273,
          "created_at": "2026-07-13T00:36:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 276,
          "created_at": "2026-07-13T21:20:50Z",
          "last_comment_at": "2026-07-29T01:34:11Z",
          "last_comment_author": "Kibukx"
        },
        {
          "number": 343,
          "created_at": "2026-07-20T21:10:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 344,
          "created_at": "2026-07-20T21:10:56Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 345,
          "created_at": "2026-07-20T21:10:58Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 364,
          "created_at": "2026-07-22T05:44:11Z",
          "last_comment_at": "2026-07-29T02:59:33Z",
          "last_comment_author": "Kibukx"
        },
        {
          "number": 395,
          "created_at": "2026-07-29T05:19:41Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 398,
          "created_at": "2026-07-29T16:15:11Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 406,
          "created_at": "2026-07-29T22:42:47Z",
          "last_comment_at": "2026-07-30T02:14:37Z",
          "last_comment_author": "Kibukx"
        },
        {
          "number": 438,
          "created_at": "2026-07-30T07:00:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 439,
          "created_at": "2026-07-30T07:25:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/Daily-Nerd/daimon",
    "host": "github.com",
    "name": "daimon",
    "owner": "Daily-Nerd"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 59,
      "inputs": {
        "security": 23,
        "vitality": 74,
        "community": 48,
        "governance": 56,
        "engineering": 85
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 74,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "commits_last_year": 222,
              "human_commit_share": 0.92,
              "days_since_last_push": 0,
              "active_weeks_last_year": 4
            },
            "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": "4/52 weeks with commits",
                "points": 2.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "222 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 222
                    }
                  }
                ],
                "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": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 30,
              "latest_release_tag": "v0.22.0",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 2.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "30 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 30
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 48,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 16,
            "inputs": {
              "forks": 2,
              "stars": 10,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "10 stars",
                "points": 15.5,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "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": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "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 (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 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": 60,
            "inputs": {
              "packages": [
                "daimon-briefing"
              ],
              "dependents": null,
              "ecosystems": "pypi",
              "total_downloads": null,
              "monthly_downloads": 3865
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "3,865 downloads/month across pypi",
                "points": 47.8,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 3865,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 56,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "merged_prs": 237,
              "open_issues": 15,
              "closed_issues": 192,
              "issue_closed_ratio": 0.928,
              "closed_unmerged_prs": 1
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "93% of issues closed",
                "points": 43.4,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 93
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "237/238 decided PRs merged",
                "points": 38.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 237,
                      "decided": 238
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/28 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 49,
            "inputs": {
              "followers": 2,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "Daily-Nerd",
              "public_repos": 12,
              "account_age_days": 1350
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "2 followers of Daily-Nerd",
                "points": 3.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 2,
                      "login": "Daily-Nerd"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "12 public repos, account ~3 yr old",
                "points": 15.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 12
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 3
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "daimon-briefing"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "30 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 30
                    }
                  }
                ],
                "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": 85,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "5 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 16,
                "status": "met",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 9.6,
                "status": "met",
                "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": "29 out of 30 merged PRs checked by a CI test -- score normalized to 9",
                "points": 18,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 23,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 23,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 2.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "29 out of 30 merged PRs checked by a CI test -- score normalized to 9",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/28 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "dangerous workflow patterns detected",
                "points": 0,
                "status": "missed",
                "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "5 existing vulnerabilities detected",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 62,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "docs/hosts/gemini.md",
                "website/docs/hosts/gemini.md",
                "website/i18n/es/docusaurus-plugin-content-docs/current/hosts/gemini.md"
              ],
              "agent_instruction_max_bytes": 2467
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "docs/hosts/gemini.md, website/docs/hosts/gemini.md, website/i18n/es/docusaurus-plugin-content-docs/current/hosts/gemini.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "docs/hosts/gemini.md, website/docs/hosts/gemini.md, website/i18n/es/docusaurus-plugin-content-docs/current/hosts/gemini.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": "92 of 92 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 92,
                      "sampled": 92
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json",
                "uv.lock"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "website/tsconfig.json"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 11,
                "status": "met",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "website/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "website/tsconfig.json"
                    }
                  }
                ],
                "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": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "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": 79,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 278574,
              "source_files_sampled": 164,
              "oversized_source_files": 9
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python with type-check config (website/tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "website/tsconfig.json",
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "9/164 source files over 60KB",
                "points": 52,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 164,
                      "oversized": 9
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "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": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
    "deps.dev does not index pypi:daimon-briefing@0.22.0; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-30T18:18:10.582944Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/Daily-Nerd/daimon.svg",
  "full_name": "Daily-Nerd/daimon",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

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

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

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