Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 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 Sterne⑂ 2 Forksseit Juli 2026Auf GitHub ansehen ↗

Daily-Nerd/daimon erreicht einen Gesundheitsindex von 59 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Engineering Quality (85/100) ab, am schwächsten bei Security (23/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

59
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

59
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

DailyNerdOrgOrganisation
2 Follower12 öffentliche Reposseit Nov. 2022

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
PyPIdaimon-briefing0.22.03.86530vor 0 Tagenai-agentsbriefingcheckpointclaude-codecontextllmmemoryprovenancesession

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

74Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
2.8/36Commit-Rhythmus — 4/52 Wochen mit Commits
18/18Commit-Volumen — 222 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Verwendete Eingangsdaten
commits_last_year222
human_commit_share0,92
days_since_last_push0
active_weeks_last_year4

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 30 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 0 Tagen
27/27Release-Rhythmus — ein Release etwa alle 2,2 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count30
latest_release_tagv0.22.0
releases_from_tagsnein
days_since_latest_release0
mean_days_between_releases2,2
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

48Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
15.5/60Stars — 10 Stars
0/25Forks — 2 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks2
stars10
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (Apache-2.0)
18/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingja
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templateja
Wie die Bewertung erfolgt
47.8/80Downloads pro Monat — 3.865 Downloads/Monat über pypi
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packagesdaimon-briefing
dependents
ecosystemspypi
total_downloads
monthly_downloads3.865
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

56Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 100 % der Commits
1.4/13.5Breite der Beitragenden — 1 Beitragende
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Verwendete Eingangsdaten
bus_factor1
contributors_sampled1
top_contributor_share1
Wie die Bewertung erfolgt
43.4/46.8Issue-Lösungsquote — 93 % der Issues geschlossen
38.1/38.3PR-Annahme — 237/238 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/28 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs237
open_issues15
closed_issues192
issue_closed_ratio0,928
closed_unmerged_prs1
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
3.4/25Reichweite des Inhabers — 2 Follower von Daily-Nerd
15.5/25Kontohistorie — 12 öffentliche Repos, Kontoalter ca. 3 Jahre
Verwendete Eingangsdaten
followers2
owner_typeOrganization
is_verified
owner_loginDaily-Nerd
public_repos12
account_age_days1.350

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf pypi
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 0 Tagen
20/20Versionshistorie — 30 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesdaimon-briefing
ecosystemspypi
any_deprecatednein
min_days_since_publish0

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

85Exzellent · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 5 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration
9.6/9.6Pre-Commit-Hooks
0/6.4.editorconfig
18/20OpenSSF Scorecard: CI-Tests — 29 out of 30 merged PRs checked by a CI test -- score normalized to 9
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_configja
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
10/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepage
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

23Kritisch · 16 % des Gesamtindex

Sicherheitslage

23Kritisch
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — keine Daten
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.5Lizenz — 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 — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
3.8/7.5Vulnerabilities — 5 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate2,3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): branch_protection, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

62Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — docs/hosts/gemini.md, website/docs/hosts/gemini.md, website/i18n/es/docusaurus-plugin-content-docs/current/hosts/gemini.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 92 von 92 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
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
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — website/tsconfig.json
10/10Reproduzierbare Umgebung — lockfile
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespackage-lock.json, uv.lock
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_configja
typecheck_configswebsite/tsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Wie die Bewertung erfolgt
27/45Typprüfbarer Code — Python mit Typprüfungs-Konfiguration (website/tsconfig.json)
52/55Handhabbare Dateigrößen — 9/164 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languagePython
largest_source_bytes278.574
source_files_sampled164
oversized_source_files9
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
20/20MCP-Server
0/40Lauffähige Beispiele
Verwendete Eingangsdaten
example_dirs
has_mcp_signalja
api_schema_files

Eckdaten

10GitHub-Sterne
1Mitwirkende
222Commits, letzte 12 Monate
0Tage seit letztem Push
30Releases
1Bus-Faktor
15offene Issues
npm, PyPIPaket-Ökosysteme

Warnungen zur Datenerhebung

  • 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

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 2 ⇿
0Sterne
2Forks
8Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

111222212026-072026-072026-07
Major 0Minor 7Patch 1
OpenSSF Scorecard 2.3 / 10
2.3Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-30 18:17 UTC

10Binary-Artifactsno binaries found in the repo
k. A.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
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
5Vulnerabilities5 existing vulnerabilities detected
Direkte Abhängigkeiten 9
RegistryPaketVersionsvorgabeManifest
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
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

JSON-Rohbericht maschinenlesbar
{
  "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"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenPyPI.