Öffentliches Register
Software-GesundheitsberichtSchema 0.23.0 · Metriken 1.13.0 · 2026-07-21 21:17 UTC

ukkit / memcord

🧠 Self-hosted, privacy-first MCP server for long-term AI memory — save, search & summarize Claude/ChatGPT chat history locally. No cloud, no database.

PythonMIT★ 71 Sterne⑂ 11 Forksseit Juni 2025Auf GitHub ansehen ↗

ukkit/memcord erreicht einen Gesundheitsindex von 57 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (84/100) ab, am schwächsten bei Security (24/100). Zuletzt vor 7 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

57
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.

57
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

Neeraj TikkuPersönliches Konto
3 Follower25 öffentliche Reposseit Dez. 2012

Dieses Repository gehört einem persönlichen Konto. Ein Projekt mit nur einem Eigentümer trägt ein höheres Kontinuitätsrisiko als ein organisationsgetragenes.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
npmmemcord1.0.0-1345vor 3125 Tagenrecordmemcord
PyPImemcord4.3.0-6vor 7 Tagen

Metriken nach Kategorie

Vitalität

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

84Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 7 Tagen
13.8/36Commit-Rhythmus — 20/52 Wochen mit Commits
17.5/18Commit-Volumen — 87 Commits im letzten Jahr
6/10OpenSSF Scorecard: Maintained — 8 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 6
Verwendete Eingangsdaten
commits_last_year87
human_commit_share1
days_since_last_push7
active_weeks_last_year20

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 17 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 7 Tagen
27/27Release-Rhythmus — ein Release etwa alle 14 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count17
latest_release_tagv4.3.0
releases_from_tagsnein
days_since_latest_release7
mean_days_between_releases14
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?

39Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
29.9/60Stars — 71 Stars
8.3/25Forks — 11 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks11
stars71
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonbelow_threshold
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
20.6/80Downloads pro Monat — 34 Downloads/Monat über npm, pypi
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packagesmemcord, memcord
dependents
ecosystemsnpm, pypi
total_downloads
monthly_downloads34
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?

57Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
4.3/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 81 % der Commits
2.7/13.5Breite der Beitragenden — 2 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 3 contributing companies or organizations -- score normalized to 10
Verwendete Eingangsdaten
bus_factor1
contributors_sampled2
top_contributor_share0,809
Wie die Bewertung erfolgt
46.8/46.8Issue-Lösungsquote — 100 % der Issues geschlossen
22.3/38.3PR-Annahme — 7/12 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/28 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs7
open_issues0
closed_issues4
issue_closed_ratio1
closed_unmerged_prs5
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
4.3/25Reichweite des Inhabers — 3 Follower von ukkit
22.3/25Kontohistorie — 25 öffentliche Repos, Kontoalter ca. 13 Jahre
Verwendete Eingangsdaten
followers3
owner_typeUser
is_verified
owner_loginukkit
public_repos25
account_age_days4.976
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 2 Paket(e) auf npm, pypi
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 7 Tagen
20/20Versionshistorie — 6 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesmemcord, memcord
ecosystemsnpm, pypi
any_deprecatednein
min_days_since_publish7

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

70Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
0/24CI-Workflows
24/24Tests vorhanden
16/16Linter-Konfiguration
9.6/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 2 merged PRs checked by a CI test -- score normalized to 0
Verwendete Eingangsdaten
has_cinein
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_configja

Dokumentation

100Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://github.com/ukkit/memcord/releases
10/10Repository-Beschreibung
10/10Topics — 19 Topics
10/10Wiki
Verwendete Eingangsdaten
topicsai-assistant, ai-memory, chat-history, claude-desktop, conversation-management, developer-tools, local-storage, mcp-server, memory-management, model-context-protocol, model-context-protocol-server, privacy-focused, python, memory-slots, privacy-first, antigravity, google-antigravity, claude-code, llm
has_wikija
homepagehttps://github.com/ukkit/memcord/releases
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

24Kritisch · 16 % des Gesamtindex

Sicherheitslage

24Kritisch
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 0 out of 2 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/28 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 3 contributing companies or organizations -- score normalized to 10
0/10Dangerous-Workflow — keine Daten
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
4.5/7.5Maintained — 8 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 6
0/5Packaging — keine Daten
0/5Pinned-Dependencies — keine Daten
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 — keine Daten
0/7.5Vulnerabilities — 82 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate2,4
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. 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.

52Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 86 von 98 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,878
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
10/10Reproduzierbare Umgebung — lockfile
10/10Belegte Agentenpraxis — 32 der letzten 98 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — keine Daten
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilesuv.lock
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_configja
typecheck_configs
agent_commit_share0,327
toolchain_manifests
dependency_bot_commit_share0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Pinned-Dependencies. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — Python ohne Typprüfungs-Konfiguration
52.4/55Handhabbare Dateigrößen — 4/84 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languagePython
largest_source_bytes128.337
source_files_sampled84
oversized_source_files4
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
20/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalja
api_schema_files

Eckdaten

71GitHub-Sterne
2Mitwirkende
87Commits, letzte 12 Monate
7Tage seit letztem Push
17Releases
1Bus-Faktor
0offene Issues
npm, PyPIPaket-Ökosysteme

Warnungen zur Datenerhebung

  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Weitere Details

Stern- und Fork-Verlauf 71 ★ / 11 ⇿
71Sterne
11Forks
17Releases

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.

01325385063757111182025-072026-012026-07
Major 2Minor 8Patch 7
OpenSSF Scorecard 2.4 / 10
2.4Gesamtwert

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-21 21:17 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
0CI-Tests0 out of 2 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/28 approved changesets -- score normalized to 0
10Contributorsproject has 3 contributing companies or organizations -- score normalized to 10
k. A.Dangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
6Maintained8 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 6
k. A.Packagingpackaging workflow not detected
k. A.Pinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
k. A.Token-PermissionsNo tokens found
0Vulnerabilities82 existing vulnerabilities detected
Direkte Abhängigkeiten 12
RegistryPaketVersionsvorgabeManifest
PyPImcp>=1.28.1,<2pyproject.toml
PyPInltk>=3.8pyproject.toml
PyPIaiofiles>=23.0pyproject.toml
PyPIpydantic>=2.0.0pyproject.toml
PyPIrequests>=2.31.0pyproject.toml
PyPIbeautifulsoup4>=4.12.0pyproject.toml
PyPIpdfplumber>=0.10.0pyproject.toml
PyPIpypdfium2>=5.0.0pyproject.toml
PyPIpandas>=2.0.0pyproject.toml
PyPItrafilatura>=1.8.0pyproject.toml
PyPIpython-magic>=0.4.27pyproject.toml
PyPIsumy>=0.11.0pyproject.toml
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": [
        "ai-assistant",
        "ai-memory",
        "chat-history",
        "claude-desktop",
        "conversation-management",
        "developer-tools",
        "local-storage",
        "mcp-server",
        "memory-management",
        "model-context-protocol",
        "model-context-protocol-server",
        "privacy-focused",
        "python",
        "memory-slots",
        "privacy-first",
        "antigravity",
        "google-antigravity",
        "claude-code",
        "llm"
      ],
      "is_fork": false,
      "size_kb": 3746,
      "has_wiki": true,
      "homepage": "https://github.com/ukkit/memcord/releases",
      "languages": {
        "Shell": 4800,
        "Python": 1528011,
        "PowerShell": 7988
      },
      "pushed_at": "2026-07-14T12:57:10Z",
      "created_at": "2025-06-27T04:59:50Z",
      "owner_type": "User",
      "updated_at": "2026-07-16T09:14:28Z",
      "description": "🧠 Self-hosted, privacy-first MCP server for long-term AI memory — save, search & summarize Claude/ChatGPT chat history locally. No cloud, no database.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Neeraj Tikku",
      "type": "User",
      "login": "ukkit",
      "company": null,
      "location": null,
      "followers": 3,
      "avatar_url": "https://avatars.githubusercontent.com/u/2971609?v=4",
      "created_at": "2012-12-05T13:37:08Z",
      "is_verified": null,
      "public_repos": 25,
      "account_age_days": 4976
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v4.3.0",
          "kind": "minor",
          "published_at": "2026-07-14T12:57:11Z"
        },
        {
          "tag": "v4.2.0",
          "kind": "minor",
          "published_at": "2026-06-22T04:54:33Z"
        },
        {
          "tag": "v4.1.1",
          "kind": "patch",
          "published_at": "2026-06-21T07:48:49Z"
        },
        {
          "tag": "v4.1.0",
          "kind": "minor",
          "published_at": "2026-06-21T06:05:31Z"
        },
        {
          "tag": "v4.0.2",
          "kind": "patch",
          "published_at": "2026-06-13T06:03:24Z"
        },
        {
          "tag": "v4.0.0",
          "kind": "major",
          "published_at": "2026-06-13T02:24:03Z"
        },
        {
          "tag": "v3.4.2",
          "kind": "patch",
          "published_at": "2026-06-10T12:48:22Z"
        },
        {
          "tag": "v3.4.1",
          "kind": "patch",
          "published_at": "2026-05-18T10:47:55Z"
        },
        {
          "tag": "v3.4.0",
          "kind": "minor",
          "published_at": "2026-04-21T06:47:42Z"
        },
        {
          "tag": "v3.3.0",
          "kind": "minor",
          "published_at": "2026-03-10T10:20:46Z"
        },
        {
          "tag": "v3.2.0",
          "kind": "minor",
          "published_at": "2026-03-02T10:47:48Z"
        },
        {
          "tag": "v3.1.0",
          "kind": "minor",
          "published_at": "2026-02-26T09:09:43Z"
        },
        {
          "tag": "v3.0.2",
          "kind": "patch",
          "published_at": "2026-02-24T05:31:59Z"
        },
        {
          "tag": "v3.0.1",
          "kind": "patch",
          "published_at": "2026-02-24T04:19:24Z"
        },
        {
          "tag": "v3.0.0",
          "kind": "major",
          "published_at": "2026-02-24T02:54:37Z"
        },
        {
          "tag": "v2.5.0",
          "kind": "minor",
          "published_at": "2026-02-16T06:21:43Z"
        },
        {
          "tag": "v2.4.2",
          "kind": "patch",
          "published_at": "2026-02-14T14:28:23Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "08dacd7be7f77293c150e1bb61cb21df75a61e56",
          "body": "Synced from ukkit/memcord_dev @ 520857f18ab0cb08fd80ca2836a70e2be5e2f190\n\nMode: Content-based sync\nFiles changed: 12\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v4.3.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-07-14T12:57:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55546f122b172718797ac209ebe3f261ea603533",
          "body": "Synced from ukkit/memcord_dev @ 020f098de65547c290264fef2c8e5e5019a85573\n\nMode: Content-based sync\nFiles changed: 23\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v4.2.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-06-22T04:54:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d12ee97c76267f95f032c9f354fbec0efd97234",
          "body": "Synced from ukkit/memcord_dev @ a6ba83071668d882ae06bf13f913c3b9c4c62021\n\nMode: Content-based sync\nFiles changed: 8\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v4.1.1",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-06-21T07:48:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1202b4aee61cafeddc75a23ef2b5503b852315a6",
          "body": "Synced from ukkit/memcord_dev @ a5ad968d1253e636111d0c6cbf1c44feda1487d6\n\nMode: Content-based sync\nFiles changed: 35\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v4.1.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-06-21T06:05:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b24443702609c5f78d6772b61eca3aa1d4714132",
          "body": "Synced from ukkit/memcord_dev @ 17e591ccb93b9ef7018fa0c0d7f96261373fa1cd\n\nMode: Content-based sync\nFiles changed: 7\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v4.0.2",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-06-13T06:03:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e67e1877abd2f5e198cbb58e9b6bbb9a620557cc",
          "body": "Synced from ukkit/memcord_dev @ 37f1d92aefd79cc8c1e9ce5fc1dd703d697ccb33\n\nMode: Content-based sync\nFiles changed: 11\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v4.0.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-06-13T02:24:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ebe9e581e7b0b1350b2f65a82b906eff64457366",
          "body": "Synced from ukkit/memcord_dev @ b1fd31bfe64984810c091615b9c76a120cf9513d\n\nMode: Content-based sync\nFiles changed: 8\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v3.4.2",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-06-10T12:48:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06e7eac23a2dad72c0af3dd048123ddecac502cc",
          "body": "Synced from ukkit/memcord_dev @ d93970ac4f5d07c45ec1e9d2e8d351c6ec7e78f0\n\nMode: Content-based sync\nFiles changed: 9\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v3.4.1",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-05-18T10:47:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03a97c79879991868447f17b877d97513956206e",
          "body": "Synced from ukkit/memcord_dev @ ffd95bf8baa784ba13d679132b8c43da300606f4\n\nMode: Content-based sync\nFiles changed: 15\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v3.4.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-04-21T06:47:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a4b208972001ac764e09f055cf04a244d14d8eb",
          "body": "Synced from ukkit/memcord_dev @ 9027622332fcbd6e0260ef9716932b0649dd757a\n\nMode: Content-based sync\nFiles changed: 12\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v3.3.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-03-10T10:20:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3af7d915d7bbeebf1ca7bca299e817826f569f9d",
          "body": "Synced from ukkit/memcord_dev @ 001652f7b245b1995816c261f69983ebd88ddeaa\n\nMode: Content-based sync\nFiles changed: 10\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v3.2.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-03-02T10:47:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47f852e2903174e8d039eeed8503e7aa9c078593",
          "body": "Synced from ukkit/memcord_dev @ 6f505eb93e01f3c141fd47af0db70aeaec487ef2\n\nMode: Content-based sync\nFiles changed: 26\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v3.1.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-02-26T09:09:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d7b6dbfddc48d1f9ead2e2de782d975591b2790e",
          "body": "Synced from ukkit/memcord_dev @ f3c71a00d5690aa7c273d95cf9130bd0529b0b14\n\nMode: Content-based sync\nFiles changed: 11\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v3.0.2",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-02-24T05:31:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb13cfe39f6dfd054089810e15ef8ecd679d665d",
          "body": "Synced from ukkit/memcord_dev @ 85a43a61f29fda4311c9b1290d45e8c5689ea839\n\nMode: Content-based sync\nFiles changed: 8\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v3.0.1",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-02-24T04:19:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77e48c923526951ed7466edaeecd7207d0cec0db",
          "body": "Synced from ukkit/memcord_dev @ df968418e0e2152c39dc03d326aa85bac6a22c63\n\nMode: Content-based sync\nFiles changed: 23\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v3.0.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-02-24T02:54:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b094613e40552fdd298459a2fcbf616fd68be8f9",
          "body": "Synced from ukkit/memcord_dev @ a68790f3880d7fac64b05279f0af7c570848e810\n\nMode: Content-based sync\nFiles changed: 13\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v2.5.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-02-16T06:21:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9f61064b5d01fb25e4a4ea7a014b5493373cfa1",
          "body": "🚀 v2.4.2 - Project Detection & Code Quality Fixes",
          "is_bot": false,
          "headline": "Merge pull request #15 from ukkit/release/v2.4.2",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-02-14T13:35:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d947b060709c5c14ecd24a3604ef342292b6a46",
          "body": "Synced from ukkit/memcord_dev @ aac631bc71c604c68151a8665efccb1a2b0cef53\n\nMode: Content-based sync\nFiles changed: 10\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v2.4.2",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-02-14T13:31:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "178d50ec34cebecd7ed4b1ed429f4ce6f5533aa2",
          "body": "🚀 Release v2.4.1",
          "is_bot": false,
          "headline": "Merge pull request #14 from ukkit/release/v2.4.1",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-02-13T12:30:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df3b6b6126626c8cbc2f3e385d9a6559e4db2c28",
          "body": "Synced from ukkit/memcord_dev @ a3bf7d356df01bdff2904a2e1841cc1c7ca031ae\n\nMode: Content-based sync\nFiles changed: 12\n\nCo-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "Release v2.4.1",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2026-02-13T12:26:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a66c3bae9899ea49f07b6fc0e9fc98ed6fb45e4",
          "body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump version to 2.4.1",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-02-09T13:52:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3f33ffc8c0645b308b53f021ed4a847b71e7cfdd",
          "body": "Previously memcord_use required an explicit slot_name argument. Now it\nfalls back to reading from the .memcord project binding file if no\nargument is provided, consistent with other read operations.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix memcord_use to read slot name from .memcord file when not provided",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-30T12:32:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c8bf521be497de2cfa520826c7ab56091f4d9066",
          "body": "Excluded files:\n- .github/workflows/\n- .releaseexclude\n- OPTIMIZE_PLAN.md\n- scripts/publish-to-main.sh\n- scripts/publish-to-main.ps1\n\nThese files are for internal development only.",
          "is_bot": false,
          "headline": "chore: exclude internal development files from public repo",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-29T14:26:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eed390c68a75e758cb3221ac2bf1a9c9293c572a",
          "body": "…xclusions\n\n- Add command-line arguments for target-remote, source-branch, target-branch\n- Expand exclusion list to match release-sync.yml workflow (60+ patterns)\n- Add PUBLISH.md documentation with usage examples and troubleshooting\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Enhance publish scripts with configurable options and comprehensive e…",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-29T13:49:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2f11499b13ff2af391dcb2cc733f91adc0e03137",
          "body": "Problem: MCP server running from memcord directory caused writes to fall\nback to wrong slot via .memcord file detection.\n\nChanges:\n- Add _resolve_slot_for_write() that only uses explicit arg or active slot\n- Update memcord_save and memcord_save_progress to use write-only resolution\n- Add memcord_clo\n[…]\n and ..\\ rejection\n- TestSlotNameReservedNames: __ZERO__, Windows reserved names\n- TestSlotSelectionDeselectionWithSpecialNames: full workflows\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix slot state issues: separate read/write resolution, add memcord_close",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-28T12:17:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4aa99e49e1ebc63516f1f52fe8b0f066723975a2",
          "body": "Switch CI trigger to workflow_dispatch (manual only), removing push,\npull_request, and daily schedule triggers.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Disable automatic CI runs to reduce costs",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-27T06:45:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "753f108801b9a900b2bbbdad85e9f781459e9f1d",
          "body": "- Use absolute paths instead of relative ./src (broken when run from project dir)\n- Add Windows PowerShell commands using claude mcp add-json with cmd /c wrapper\n- Consolidate from 3 methods to 2 (project-specific and user-wide)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix Claude Code manual config: use absolute paths, add Windows commands",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-27T06:40:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "11e99c4290ac9ff267a8039f930c1dfb5dea8308",
          "body": "…docs\n\n- Reduce README from 321 to ~186 lines by removing inline JSON config blocks\n- Add Prerequisites section with Python 3.10+ and uv install instructions\n- Replace per-IDE config blocks with a table linking to detailed docs\n- Move \"Update Existing Installation\" section to docs/installation.md\n- \n[…]\no docs/versions.md as changelog\n- Center badges and tagline, add CI workflow status badge\n- Remove <details> wrapper from Documentation section\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Restructure README: add prerequisites, condense IDE configs, link to …",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-27T06:21:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a42376d6deeb7420756698f5ad93de5396e5891d",
          "body": "The comment suppressed a false positive — these are string literals\nused for path validation, not actual temp directory usage.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Remove unnecessary nosec B108 comment from models.py",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-26T07:34:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b9ce9d3e907610b6d0f146f2b9e4770a66be260c",
          "body": "Instead of failing when a release tag doesn't exist, the workflow now\ncreates and pushes it on the current HEAD. Also bumps permissions to\ncontents: write to support tag creation.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Auto-create release tags in sync workflow",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-26T04:23:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5d73dafbf8d7f1fbdad2a3ad66a27eee6db63c88",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Apply ruff formatting fixes",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-26T03:59:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c9b70537776546f924c6a42c7465fd7edaa3148b",
          "body": "Multi-line strings in git commit message and PR body had continuation\nlines at column 0, breaking the YAML literal block scalar. Replaced\ncommit message with echo-to-file + git commit -F, and PR body with\narray .join('\\n'). Also removed stale release_to_prod duplicate file\n(no .yml extension, never recognized by GitHub Actions).\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix YAML block scalar indentation in release-sync workflow",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-26T03:48:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a323b37d028a35be2dd7bab4789a64c5f73e9d1b",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix heredoc YAML syntax error in release-sync workflow",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T16:44:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7680bef8210f28a15eb27095ef38ee63181c0c66",
          "body": "Use heredoc for multiline git commit message to avoid YAML block scalar\nindentation issues that caused GitHub Actions to reject the workflow file.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix YAML syntax error in release-sync workflow",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T16:39:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4285280f31988981c49e2c205374346155b489c1",
          "body": "- Add missing description parameter to MemorySlotFactory.create_basic()\n- Change generate_full_report mock from MagicMock to AsyncMock since the\n  method is awaited in MonitoringService.run_diagnostics()\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix test failures in models contracts and monitoring service tests",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T16:36:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c99d1860c9e771be958397aabfce1982739e4238",
          "body": "- Add usedforsecurity=False to MD5 hash calls in cache.py (B324)\n- Suppress false positive B108 for /tmp/ in blocklist (models.py)\n- Replace assert statements with explicit if/return checks (B101)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix bandit security warnings",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T16:29:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "74f814d79fee0d0989c3bf5b5b1e8a37a529c9da",
          "body": "- Break long lines in errors.py, status_monitoring.py, storage.py, storage_efficiency.py\n- Add hatch lint environment configuration to pyproject.toml\n- Fix type annotations across multiple modules for mypy compliance\n- Update test factories to use explicit keyword arguments\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix ruff line-too-long errors and improve type annotations",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T16:18:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a6231e7e3d2caed9b3a09d81980427badade3ae7",
          "body": "- Add explicit type annotations for untyped variables across 13 files\n- Fix decompress_json_content to accept both CompressionMetadata and CompressionInfo\n- Reduces mypy errors from 119 to 96\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix mypy var-annotated errors and CompressionInfo type mismatch",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T13:13:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f3b11d8c99950a6aa0c1b109a49b4eddb3ed3024",
          "body": "- Add mypy config to pyproject.toml with pydantic plugin\n- Add type stubs for aiofiles, psutil, requests, pandas\n- Fix implicit Optional types (use X | None instead of X = None)\n- Add type annotations to untyped variables\n- Fix tuple vs list type mismatch in query.py\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add mypy configuration and fix type annotation issues",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T12:24:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "359b8f66441d07d6ec28e3c1cd03645487a17109",
          "body": "- Add missing await to async generate_full_report() call in monitoring_service\n- Add missing Any import in search.py\n- Fix duplicate format_info variable definition in importer.py\n- Add type annotations to error_stats, timeouts, and validator instances\n- Add cast() calls to fix no-any-return errors in multiple modules\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix critical mypy type errors and no-any-return annotations",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T12:21:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5148d8f55950a13a0bff7d54875a27953d504645",
          "body": "- Add mypy>=1.0.0 and bandit>=1.7.0 to optional dev dependencies\n- Add mypy>=1.15.0 and bandit>=1.8.0 to dependency-groups\n- Apply ruff formatting to source files\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add mypy and bandit to dev dependencies, apply ruff formatting",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T09:12:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f9c4e898e9500b13b936d73900a651c6026941cf",
          "body": "- Remove unused imports (F401)\n- Sort and organize import blocks (I001)\n- Replace deprecated IOError with OSError (UP024)\n- Fix line length violations (E501) by breaking long lines\n- Rename unused loop variable to _ (B007)\n- Apply ruff format to 16 files\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix ruff linting errors and apply formatting",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T09:00:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2084c9614631d7a4782c81bf2f8fba8fadd92acf",
          "body": "This workflow automates the release synchronization process from a development repository to a production repository, allowing for customizable inputs such as release version, target branch, and sync method.",
          "is_bot": false,
          "headline": "Add release synchronization workflow to production",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T06:37:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e06d42504a189e6a414612e56a80c2baf227c3a4",
          "body": "- Add GitHub Actions workflow for syncing releases from dev to production\n- Add .releaseexclude for project-specific file exclusions\n- Add local publish scripts (PowerShell and Bash) for manual syncing\n- Update .gitignore with internal development files\n\nThe release-sync workflow supports:\n- Dry run mode for previewing changes\n- Pull request or direct push options\n- Force replace mode for full sync\n- Automatic exclusion of dev-only files\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add release sync workflow and publish scripts",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-25T06:32:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "541bb2344fd84393e20d7b21f982d8e47e375b48",
          "body": "The test was using \"select-test-slot\" as the slot name, which contains\nthe SQL keyword \"SELECT\" that is blocked by security validation. This\ncaused memcord_name to fail silently, leaving no active slot set.\n\nChanges:\n- Rename slot from \"select-test-slot\" to \"entry-test-slot\"\n- Add assertions to verify each operation succeeds before proceeding\n- Add descriptive error messages for better debugging\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix test_select_entry_uses_active_slot failing on fresh environments",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-24T15:54:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bee90ddddc8fada7f55e277a17ce96f3ac4ba33b",
          "body": "Add TOON (Text Object-Oriented Notation) encoding/decoding commands:\n- toon-decode.md\n- toon-encode.md\n- toon-validate.md\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add toon command files to version control",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-24T14:05:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2fb72f9758685abe73c21f4c36963289710133df",
          "body": "Update .gitignore to track .claude/commands/ directory while keeping\nother .claude subdirectories ignored. Add missing memcord command files:\n- memcord-init.md (renamed from memcord-bind)\n- memcord-clear.md\n- memcord-unbind.md\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add .claude/commands to version control",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-24T14:03:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f39fc2f00926b7ced388d39960cd7f3e73efdfc2",
          "body": "Rename the project binding tool from memcord_bind to memcord_init for\nclearer semantics - \"init\" better conveys the one-time setup nature of\nassociating a project directory with a memory slot.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Rename memcord_bind tool to memcord_init",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-24T13:54:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8d82ddb5d0c8ab27b9f20e19f6044048bea5cf3d",
          "body": "- Add SelectEntryService for selecting memory entries by timestamp/index\n- Export SelectionRequest and SelectEntryService from services module\n- Refactor server.py: simplify handler implementations\n- Update OPTIMIZE_PLAN.md with current optimization progress\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add SelectEntryService and refactor server.py handlers",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-24T06:46:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "599e035b20220c18207abe96c7ff65d71e362aa5",
          "body": "…dling tests\n\n- Fix OptimizedChatMemoryServer: Initialize schema_optimizer before super().__init__()\n  to prevent AttributeError when parent calls overridden _get_basic_tools()\n- Update test_handler_invalid_arguments: Check for error responses instead of exceptions\n  since @handle_errors decorator n\n[…]\ndled: Check for graceful handling, not exceptions\n- Fix CacheManager.shutdown(): Await cancelled tasks to prevent \"Task was destroyed\" warnings\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix test failures: OptimizedChatMemoryServer init order and error han…",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-24T06:44:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8b73d462f2941af2b530843111d282b53382dcb4",
          "body": "New test files for Phase 1-4 optimization changes:\n- test_handler_registry.py: HandlerRegistry, dispatch, tool generation\n- test_response_builder.py: ResponseBuilder, error decorators\n- test_merge_service.py: MergeService validation, preview, execute\n- test_import_service.py: ImportService file/URL/\n[…]\nhive/restore operations\n- test_monitoring_service.py: MonitoringService status, metrics, diagnostics\n\nTest suite: 429 → 616 tests (all passing)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add comprehensive tests for optimization modules (187 new tests)",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-24T02:10:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "650d2a56db5899c16306fae0704af8103504859f",
          "body": "Applied @handle_errors decorator to 6 handlers to standardize error handling:\n- _handle_searchmem, _handle_tagmem, _handle_listtags\n- _handle_groupmem, _handle_querymem, _handle_select_entry\n\nRemoved manual try/except blocks - decorator now handles MemcordError\nand generic exceptions consistently.\n\nserver.py: 2,329 lines (-355 from original)\nTests: 429/429 passing\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Server.py optimization: Phase 3 @handle_errors decorator complete",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-22T15:20:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "75aef2fe60206169b6c646fb499b775f0b8a1c5f",
          "body": "- Refactored 8 handlers to delegate to service modules\n- Added lazy-loaded service properties (merge, monitoring, compression, archive, import)\n- server.py reduced from 2,684 to 2,354 lines (-330 lines, 12.3%)\n- All 429 tests passing\n\nHandlers integrated:\n- _handle_mergemem → MergeService\n- _handle_\n[…]\nostics → MonitoringService\n- _handle_compressmem → CompressionService\n- _handle_archivemem → ArchiveService\n- _handle_importmem → ImportService\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Server.py optimization: Phase 2 handler integration complete",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-22T14:49:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "19f4b910e069d0de5d541ee87c9f179fef1f0fff",
          "body": "Phase 1 (Complete):\n- Created handler_registry.py with O(1) dispatch\n- Replaced 130+ line if/elif chains with dict-based dispatch\n- Added _build_handler_map() and _dispatch_handler() to server.py\n\nPhase 2 (Infrastructure):\n- Created services/ module with 5 service classes:\n  - merge_service.py (307 \n[…]\nProject binding tests (test_binding_states.py, test_project_binding.py)\n- OPTIMIZE_PLAN.md with implementation progress\n\nAll 429 tests passing.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Server.py optimization: Phase 1-3 infrastructure",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-22T05:39:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9ebf6435c4938f978749a568e6260142e0eebf46",
          "body": null,
          "is_bot": false,
          "headline": "added star-history",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-20T05:52:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b2f59a3a98b675f6c75d5fe9d1a17050987d89bf",
          "body": null,
          "is_bot": false,
          "headline": "fixed linter errors",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-19T08:59:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03d9aec346e6640e89f075c110fe85fecc1adafd",
          "body": null,
          "is_bot": false,
          "headline": "cleanup",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-19T07:48:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09804a6a5160dfd825c7daa9a78b289f2fe72687",
          "body": null,
          "is_bot": false,
          "headline": "cleanup",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-19T07:48:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a5f815c176367f75805b9f6d1be49406792b827",
          "body": "  - Windows PowerShell installer (install.ps1) for one-line installation\n  - Centralized config-templates/ folder with platform-specific configs\n  - Cross-platform config generator (scripts/generate-config.py)\n  - Windows cmd /c wrapper support for proper process spawning\n  - Updated MCP SDK version constraint to v1.22-2.0 for stability\n  - Logging configuration to prevent stdout corruption in STDIO mode",
          "is_bot": false,
          "headline": "Cross-Platform Support & MCP Compliance:",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-19T07:45:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bca30f0b4db9190088a4cb0fcd189aee3d8e50cb",
          "body": "  - Windows PowerShell installer (install.ps1) for one-line installation\n  - Centralized config-templates/ folder with platform-specific configs\n  - Cross-platform config generator (scripts/generate-config.py)\n  - Windows cmd /c wrapper support for proper process spawning\n  - Updated MCP SDK version constraint to v1.22-2.0 for stability\n  - Logging configuration to prevent stdout corruption in STDIO mode",
          "is_bot": false,
          "headline": "Cross-Platform Support & MCP Compliance:",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-19T07:43:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ccabcd5d7bf4d2b3d63ad7cffd4240721a688e5e",
          "body": null,
          "is_bot": false,
          "headline": "Added Google Antigravity IDE configuration template and documentation",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-16T11:23:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da8bb8bc35f5229be35c5efd16f9d428fefde017",
          "body": "  - ✅ Comprehensive VSCode configuration templates\n  - ✅ 16 reusable prompt templates for GitHub Copilot workflows\n  - ✅ Automated verification script for setup validation\n  - ✅ MCP registry metadata for marketplace discovery\n  - ✅ Full integration test suite (26 tests passing)\n  - ✅ Complete documentation for enterprise deployment, security, and workflows",
          "is_bot": false,
          "headline": "New in v2.3.5",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2026-01-12T07:05:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17a01b8f559a4ad94f15067df20d01303faca636",
          "body": "  - MCP SDK: 1.22.0 (released November 20, 2025)\n  - MCP Protocol: 2025-11-25 (released November 25, 2025)",
          "is_bot": false,
          "headline": "Updated MCP SDK & MCP Protocol to latest:",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2025-11-27T08:02:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50e070999650c3fb45cd42e306b9da2990ec10e7",
          "body": "Fix search functionality and CI/CD issues",
          "is_bot": false,
          "headline": "Merge pull request #13 from aaronlippold/search-fix-cicd-cleanup",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2025-11-10T12:20:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "86e5245716af26b56d1e6cef185955665a4e5851",
          "body": "**Coverage**: 22 end-to-end integration tests across 4 test classes\n\n**Test Classes**:\n1. TestBasicWorkflows (6 tests)\n   - Save and search workflow\n   - Acronym searches (CI/CD, API, UI, DB, AWS)\n   - Cross-session discovery\n   - Tag filtering\n   - List and read workflows\n\n2. TestConcurrentWorkflow\n[…]\nealistic usage)\n- Validate real-world workflows, not just individual commands\n\n**Results**: All 282 tests passing (250 existing + 10 staleness + 22 E2E)\n\nAuthored by: Aaron Lippold <lippold@gmail.com>",
          "is_bot": false,
          "headline": "test: Add comprehensive E2E workflow tests for all memcord commands",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-11-09T22:19:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4bc0b09196bb6f514cb156a7275459b12cfeeaf9",
          "body": "**Bug #1: Acronym Tokenization (CRITICAL)**\n- Problem: Search tokenizer filtered words with len <= 2\n- Impact: CI, CD, UI, UX, DB, API, AWS and other acronyms were unsearchable\n- Fix: Changed tokenizer from 'len > 2' to 'len > 1' (src/memcord/search.py:178)\n- Result: All 2-letter acronyms now search\n[…]\n broken for:\n- Cross-session workflows\n- Multi-instance collaboration\n- External modifications\n- Common acronym searches (CI/CD, API, UI, DB, AWS, etc.)\n\nAuthored by: Aaron Lippold <lippold@gmail.com>",
          "is_bot": false,
          "headline": "fix: Resolve critical search functionality bugs",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-11-09T22:06:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "af23f9eb52a47606b94ee3fbe5f3a273614c8d0c",
          "body": "- Remove @functools.lru_cache from instance method to prevent memory leak (B019)\n- Convert _get_mime_type to static method (no state dependency)\n- Pin pypdfium2>=5.0.0 to avoid yanked 4.30.1 version with text extraction regression\n- Update uv.lock with pypdfium2 5.0.0\n\nAll 250 tests passing, ruff checks clean.\n\nAuthored by: Aaron Lippold <lippold@gmail.com>",
          "is_bot": false,
          "headline": "fix: Resolve CI/CD linting issues and dependency warnings",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-11-09T14:05:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b79602fba6a73bc4e8011afd7a3990263bd49dc1",
          "body": "  - Cache tool definitions to avoid redundant list_tools() calls\n  - Lazy load TextSummarizer, QueryProcessor, Importer, Merger\n  - Extract 8 error message constants (eliminate 30+ duplicates)\n  - Add LRU cache to _get_mime_type() method\n  - All 250 tests pass, zero breaking changes",
          "is_bot": false,
          "headline": " perf: Add caching, lazy imports, and error constants for 15% speedup",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2025-11-07T11:33:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60bfa85e3ec07823c83a9c51095c2e4d5c9d04d6",
          "body": "…-error\n\nComprehensive Testing & Critical Bug Fixes",
          "is_bot": false,
          "headline": "Merge pull request #11 from aaronlippold/fix-storage-health-coroutine…",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2025-10-06T03:31:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9bd0ad91358259f4bc8588ed38d9841e2f8b20f9",
          "body": "- Merge upstream v2.3.2 async/await fixes\n- Keep modern type hints (list[T] vs List[T])\n- Maintain clean formatting and DRY patterns\n- Fix duplicate await call in generate_system_report\n- Update version to v2.3.2\n\nAuthored by: Aaron Lippold<lippold@gmail.com>",
          "is_bot": false,
          "headline": "merge: Integrate upstream v2.3.2 with modern Python conventions",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-10-02T15:30:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bef49f3a3fc41d09ec6e438a4c42228430e0f2ca",
          "body": "- Merge with upstream v2.3.1 dependencies\n- Apply linting to protect_data.py utility\n- Update uv.lock with latest dependency resolution\n- Maintain compatibility with upstream changes\n\nAuthored by: Aaron Lippold<lippold@gmail.com>",
          "is_bot": false,
          "headline": "chore: Update dependencies and data protection utilities",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-10-02T15:14:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ea9c0eb8fd3d4e159325c6e758dea46389b1a31",
          "body": "- Fix 74 linting errors (UP038, B904, F841, E501, etc.)\n- Apply modern Python type hints and syntax\n- Remove unused variables and redundant code\n- Fix exception handling and line length issues\n- Apply MCP SDK formatting standards\n\nAuthored by: Aaron Lippold<lippold@gmail.com>",
          "is_bot": false,
          "headline": "style: Achieve 100% ruff compliance across codebase",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-10-02T15:14:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b040e4df11c747c8d9b4b471738b8b5e67b45c9",
          "body": "- Test all 23 MCP tool handlers\n- Test server infrastructure and integration workflows\n- Test error handling and concurrent operations\n- Add optimized server and token usage monitoring tests\n- Include Windows file handling compatibility fixes\n\nAuthored by: Aaron Lippold<lippold@gmail.com>",
          "is_bot": false,
          "headline": "test: Add server MCP interface testing achieving 52% coverage",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-10-02T15:14:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ace26b0114381e67a56d1f04d8237f018dc02791",
          "body": "- Test all CRUD operations with real API behavior\n- Test PATCH operations (add_summary_entry appends)\n- Test tag management and metadata operations\n- Test concurrent operations and edge cases\n- Cover all 35+ public methods with real behavior validation\n\nAuthored by: Aaron Lippold<lippold@gmail.com>",
          "is_bot": false,
          "headline": "test: Add comprehensive storage.py testing achieving 73% coverage",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-10-02T15:14:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b798ca7244b80314b81f801954ef12f7da006db9",
          "body": "- Add LRU cache eviction tests\n- Add disk cache persistence tests\n- Add cache invalidation tests for external modifications\n- Add TTL expiration and size calculation tests\n- Include Windows datetime precision fixes\n\nAuthored by: Aaron Lippold<lippold@gmail.com>",
          "is_bot": false,
          "headline": "test: Add comprehensive cache.py testing achieving 75% coverage",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-10-02T15:14:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4213006de404f53387163ea83468f2c8bfd787de",
          "body": "- Add comprehensive models.py validation tests (93% coverage)\n- Add storage contract tests for CRUD operations\n- Add regression tests for storage path bug fix\n- Test security validation (XSS, SQL injection, path traversal)\n- Test business logic and state management\n\nAuthored by: Aaron Lippold<lippold@gmail.com>",
          "is_bot": false,
          "headline": "test: Add models and storage contract testing achieving 93% coverage",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-10-02T15:13:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "daa8c8418549cc7f2053b7172894486afc70bc27",
          "body": "- Add status monitoring tests with async health checks\n- Add metrics collector tests for performance tracking\n- Add operation logger tests for operation tracking\n- Add resource monitor tests for system monitoring\n- Use fixtures and factories for consistent test patterns\n\nAuthored by: Aaron Lippold<lippold@gmail.com>",
          "is_bot": false,
          "headline": "test: Add component testing suite with DRY patterns",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-10-02T15:13:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e3880396ded4793df83031fb6f33a7bcdff8da5",
          "body": "- Add GitHub Actions workflows following MCP Python SDK standards\n- Create test fixtures, factories, and helpers in conftest.py\n- Configure gitignore for test artifacts and internal docs\n- Enable cross-platform testing (Linux, macOS, Windows)\n\nAuthored by: Aaron Lippold<lippold@gmail.com>",
          "is_bot": false,
          "headline": "test: Add comprehensive testing infrastructure and CI/CD",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-10-02T15:13:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10b4c535fff52c10d997b2f8bc601748d433c63f",
          "body": "- Fix async/await coroutine error in status_monitoring.py\n- Fix data deletion during install with absolute path resolution\n- Add absolute path handling in storage.py and archival.py\n\nAuthored by: Aaron Lippold<lippold@gmail.com>",
          "is_bot": false,
          "headline": "fix: Critical bug fixes with comprehensive testing",
          "author_name": "Aaron Lippold",
          "author_login": "aaronlippold",
          "committed_at": "2025-10-02T15:13:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8daf3155647c64cbd3fb5c313beb782bb6d8dcb3",
          "body": "Release v2.3.2 - Fixed async/await issues in status monitoring",
          "is_bot": false,
          "headline": "Merge pull request #10 from ukkit/release/v2.3.2",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2025-10-02T06:25:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c35412dfb6b593093e5e30a06e67d300b4d0a8cb",
          "body": "    Synced from ukkit/memcord-dev @ 42079ecef85f2e875e7c0384814bf77b2fc28197\n\n    📊 Content-based sync - Files synchronized using checksums\n    📊 Summary: 5 files changed\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v2.3.2\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v2.3.2",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-10-02T06:23:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ea9656dad38e28957be3d997d7588c86da8573a",
          "body": "🚀 Release v2.3.1",
          "is_bot": false,
          "headline": "Merge pull request #7 from ukkit/release/v2.3.1",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2025-09-29T13:28:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7d348b8690b964e56c281daf9a5ec02acb99a1e",
          "body": "    Synced from ukkit/memcord-dev @ 493f72c9195eb10e2ceb6e267e94ae9918def2d8\n\n    📊 Content-based sync - Files synchronized using checksums\n    📊 Summary: 6 files changed\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v2.3.1\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v2.3.1",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-09-29T13:05:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "282dbe753bda940524bf1c02202e387827b6dfff",
          "body": "    Synced from ukkit/memcord-dev @ 71e9f3f9a54f3240b38afa4e2832d2930c219d90\n\n    ⚠️  FORCE REPLACE - All files replaced regardless of modification status\n    📊 Summary: 30 files changed\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v2.3.0\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v2.3.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-09-22T11:57:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0cc4b36d79c05cf3f1583b001b4dde8b9b0fe249",
          "body": "    Synced from ukkit/memcord-dev @ e79af2c21dafc91c0b01693b62cd5673defa41df\n\n    ⚠️  FORCE REPLACE - All files replaced regardless of modification status\n    📊 Summary: 14 files changed\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v2.2.0\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v2.2.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-07-29T11:36:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8926029da2cfa1ae082167fe8be4564b5828908f",
          "body": "🚀 Release v2.1.6 (Force Replace)",
          "is_bot": false,
          "headline": "Merge pull request #2 from ukkit/release/v2.1.6",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2025-07-24T07:01:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad7c7590f523723eebc1b0b477b6a4b4b62a01fe",
          "body": "    Synced from ukkit/memcord-dev @ 0956e87869afddeb98bc27350529cd305892ff69\n\n    ⚠️  FORCE REPLACE - All files replaced regardless of modification status\n    📊 Summary: 9 files changed\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v2.1.6\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v2.1.6",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-07-24T06:52:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ded30b6bce4150bb24efe8bdd2e0564eb69cdfc1",
          "body": "    Synced from ukkit/memcord-dev @ 0526f787b44aa0b7e01f35c5901f7adad8a4f2f1\n\n    📊 Standard sync - Modified files only\n    📊 Summary: 21 files changed\n\n    Changes:\n    A\t.claude/commands/memcord-import.md\nA\t.claude/commands/memcord-list.md\nA\t.claude/commands/memcord-name.md\nA\t.claude/commands/memc\n[…]\n\nM\tdocs/troubleshooting.md\nA\tinstall.sh\n    ... and 1 more files\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v2.0.0\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v2.0.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-07-21T13:05:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3e3d9d00f7eb93a8a12d9fdfdb7d1e266b563f5a",
          "body": "    Synced from ukkit/memcord-dev @ b4555db73fcde48bebc27d18b1cc3c4d46cabc07\n\n    Changes:\n    M\tREADME.md\nM\tsrc/memcord/server.py\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v1.3.2\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v1.3.2",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-07-03T09:05:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75ca86a654492d44bc690ed1e2c9b6a26fd57c40",
          "body": null,
          "is_bot": false,
          "headline": "Delete file",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2025-07-03T08:45:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f865f63dbddd7aa648b0f47de3b99d07d94e8de1",
          "body": "    Synced from ukkit/memcord-dev @ 680a486fba0de027a0c5c72c51caf239281a630a\n\n    Changes:\n    A\tTEST_MEMCORD_ZERO.md\nM\tsrc/memcord/server.py\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v1.3.1\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v1.3.1",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-07-03T08:43:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b7fc18211fb536a91e19281a723a18caef5d064",
          "body": null,
          "is_bot": false,
          "headline": "Delete file",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2025-07-03T06:50:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ed5c988d04c5b94c7044da026a08ba973fe0e78",
          "body": "    Synced from ukkit/memcord-dev @ 7438be5362c2f7effb5de8beffe2afbc1f8eb271\n\n    Changes:\n    A\tCLAUDE.md\nM\tREADME.md\nA\tassets/image/memcord_1024.png\nM\tdocs/features-guide.md\nA\tdocs/testing-guide.md\nM\tdocs/tools-reference.md\nM\tpyproject.toml\nM\tsrc/memcord/models.py\nM\tsrc/memcord/server.py\nM\tsrc/memcord/storage.py\nM\tsrc/memcord/summarizer.py\nM\tuv.lock\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v1.3.0\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v1.3.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-07-03T06:47:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec402b33b02c06ef3cb90000c86056d0a5019abe",
          "body": "    Synced from ukkit/memcord-dev @ c3fc6b69fdefe5327d3940c2c521a285843f6443\n\n    Changes:\n    M\tREADME.md\nM\tclaude_desktop_config.json\nM\tdocs/data-format.md\nA\tdocs/features-guide.md\nM\tdocs/tools-reference.md\nM\tdocs/troubleshooting.md\nM\tpyproject.toml\nA\tsrc/memcord/archival.py\nA\tsrc/memcord/compress\n[…]\nmcord/models.py\nM\tsrc/memcord/server.py\nM\tsrc/memcord/storage.py\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v1.2.0\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v1.2.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-06-29T07:02:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "78e104a2eceb0a6a3a0884f77c832a16afc9923a",
          "body": null,
          "is_bot": false,
          "headline": "Delete .releaseexclude",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2025-06-27T08:23:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1cad6726f39e08f4a330d78700d9c798974f7f36",
          "body": "    Synced from ukkit/memcord-dev @ 5e77e92859889d478a9866e9478626c1c97bb21f\n\n    Changes:\n    M\tREADME.md\nM\tclaude_desktop_config.json\nM\tdocs/data-format.md\nM\tdocs/troubleshooting.md\nM\tpyproject.toml\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v1.0.2\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v1.0.2",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-06-27T07:05:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c05c2235452414e4ed45be32331ad899c9486e74",
          "body": "    Synced from ukkit/memcord-dev @ a8aef5ec896ee1d1376b041fe7b437b34ce29c81\n\n    Changes:\n    A\t.releaseexclude\nA\tREADME.md\nA\tclaude_desktop_config.json\nA\tdocs/data-format.md\nA\tdocs/examples.md\nA\tdocs/import-and-merge.md\nA\tdocs/installation.md\nA\tdocs/search-and-query.md\nA\tdocs/tools-reference.md\nA\t\n[…]\nd/server.py\nA\tsrc/memcord/storage.py\nA\tsrc/memcord/summarizer.py\n\n    Release notes: https://github.com/ukkit/memcord-dev/releases/tag/v1.0.0\n\n    Co-authored-by: Release Bot <release-bot@memcord.dev>",
          "is_bot": false,
          "headline": "🚀 Release v1.0.0",
          "author_name": "Release Bot",
          "author_login": null,
          "committed_at": "2025-06-27T06:19:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "63cf68c9d195151c614ebcb7ffebcca9003c2b80",
          "body": null,
          "is_bot": false,
          "headline": "Initial commit",
          "author_name": "Neeraj Tikku",
          "author_login": "ukkit",
          "committed_at": "2025-06-27T04:59:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 17,
      "commits_last_year": 87,
      "latest_release_at": "2026-07-14T12:57:11Z",
      "latest_release_tag": "v4.3.0",
      "releases_from_tags": false,
      "days_since_last_push": 7,
      "active_weeks_last_year": 20,
      "days_since_latest_release": 7,
      "mean_days_between_releases": 14
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "memcord",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "record",
            "memcord"
          ],
          "ecosystem": "npm",
          "matches_repo": null,
          "registry_url": "https://www.npmjs.com/package/memcord",
          "is_deprecated": false,
          "latest_version": "1.0.0-1",
          "repository_url": null,
          "versions_count": 5,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 34,
          "first_published_at": "2017-10-08T08:37:46.224000Z",
          "latest_published_at": "2017-12-30T08:56:23.352000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 3125
        },
        {
          "name": "memcord",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/memcord/",
          "is_deprecated": false,
          "latest_version": "4.3.0",
          "repository_url": "https://github.com/ukkit/memcord",
          "versions_count": 6,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-06-13T02:47:00.947998Z",
          "latest_published_at": "2026-07-14T12:57:26.289804Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 7
        }
      ]
    },
    "popularity": {
      "forks": 11,
      "stars": 71,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2025-07-17",
            "count": 1
          },
          {
            "date": "2025-07-29",
            "count": 1
          },
          {
            "date": "2025-07-30",
            "count": 1
          },
          {
            "date": "2025-09-28",
            "count": 1
          },
          {
            "date": "2026-01-12",
            "count": 1
          },
          {
            "date": "2026-01-30",
            "count": 1
          },
          {
            "date": "2026-03-29",
            "count": 1
          },
          {
            "date": "2026-05-01",
            "count": 1
          },
          {
            "date": "2026-05-02",
            "count": 2
          },
          {
            "date": "2026-05-03",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 11,
        "total_forks": 11
      },
      "star_history": {
        "days": [
          {
            "date": "2025-07-22",
            "count": 2
          },
          {
            "date": "2025-07-27",
            "count": 1
          },
          {
            "date": "2025-07-29",
            "count": 1
          },
          {
            "date": "2025-08-09",
            "count": 1
          },
          {
            "date": "2025-08-16",
            "count": 1
          },
          {
            "date": "2025-08-18",
            "count": 1
          },
          {
            "date": "2025-08-28",
            "count": 1
          },
          {
            "date": "2025-09-03",
            "count": 1
          },
          {
            "date": "2025-09-07",
            "count": 1
          },
          {
            "date": "2025-09-24",
            "count": 1
          },
          {
            "date": "2025-10-09",
            "count": 1
          },
          {
            "date": "2025-10-18",
            "count": 1
          },
          {
            "date": "2025-11-01",
            "count": 1
          },
          {
            "date": "2025-11-09",
            "count": 2
          },
          {
            "date": "2025-11-24",
            "count": 1
          },
          {
            "date": "2025-12-09",
            "count": 1
          },
          {
            "date": "2025-12-22",
            "count": 1
          },
          {
            "date": "2026-01-03",
            "count": 1
          },
          {
            "date": "2026-01-05",
            "count": 1
          },
          {
            "date": "2026-01-13",
            "count": 3
          },
          {
            "date": "2026-01-15",
            "count": 1
          },
          {
            "date": "2026-01-16",
            "count": 1
          },
          {
            "date": "2026-01-18",
            "count": 1
          },
          {
            "date": "2026-01-19",
            "count": 2
          },
          {
            "date": "2026-01-24",
            "count": 1
          },
          {
            "date": "2026-01-25",
            "count": 1
          },
          {
            "date": "2026-01-29",
            "count": 2
          },
          {
            "date": "2026-01-31",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 1
          },
          {
            "date": "2026-02-17",
            "count": 1
          },
          {
            "date": "2026-02-24",
            "count": 1
          },
          {
            "date": "2026-03-06",
            "count": 1
          },
          {
            "date": "2026-03-08",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 1
          },
          {
            "date": "2026-03-21",
            "count": 1
          },
          {
            "date": "2026-04-21",
            "count": 1
          },
          {
            "date": "2026-05-01",
            "count": 4
          },
          {
            "date": "2026-05-02",
            "count": 18
          },
          {
            "date": "2026-05-04",
            "count": 1
          },
          {
            "date": "2026-05-06",
            "count": 1
          },
          {
            "date": "2026-07-03",
            "count": 1
          },
          {
            "date": "2026-07-05",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 1
          },
          {
            "date": "2026-07-09",
            "count": 1
          },
          {
            "date": "2026-07-16",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 71,
        "total_stars": 71
      },
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 128337,
      "source_files_sampled": 84,
      "oversized_source_files": 4,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "package.json",
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "mcp",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.28.1,<2"
        },
        {
          "name": "nltk",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.8"
        },
        {
          "name": "aiofiles",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=23.0"
        },
        {
          "name": "pydantic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "requests",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.31.0"
        },
        {
          "name": "beautifulsoup4",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.12.0"
        },
        {
          "name": "pdfplumber",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.10.0"
        },
        {
          "name": "pypdfium2",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=5.0.0"
        },
        {
          "name": "pandas",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "trafilatura",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.8.0"
        },
        {
          "name": "python-magic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.4.27"
        },
        {
          "name": "sumy",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.11.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": 0,
        "merged_prs": 7,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 4,
        "closed_unmerged_prs": 5
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "ukkit",
          "commits": 55,
          "avatar_url": "https://avatars.githubusercontent.com/u/2971609?v=4"
        },
        {
          "type": "User",
          "login": "aaronlippold",
          "commits": 13,
          "avatar_url": "https://avatars.githubusercontent.com/u/1486440?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.809
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [
        "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": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 2 merged PRs checked by a CI test -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 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": 10,
            "reason": "project has 3 contributing companies or organizations -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "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": 6,
            "reason": "8 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "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": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "82 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "08dacd7be7f77293c150e1bb61cb21df75a61e56",
        "ran_at": "2026-07-21T21:17:22Z",
        "aggregate_score": 2.4,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/ukkit/memcord",
    "host": "github.com",
    "name": "memcord",
    "owner": "ukkit"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 57,
      "inputs": {
        "security": 24,
        "vitality": 84,
        "community": 39,
        "governance": 57,
        "engineering": 70
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 84,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "commits_last_year": 87,
              "human_commit_share": 1,
              "days_since_last_push": 7,
              "active_weeks_last_year": 20
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 7 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "20/52 weeks with commits",
                "points": 13.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 20
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "87 commits in the last year",
                "points": 17.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 87
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "8 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "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": 17,
              "latest_release_tag": "v4.3.0",
              "releases_from_tags": false,
              "days_since_latest_release": 7,
              "mean_days_between_releases": 14
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "17 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 17
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 7 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~14 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 14
                    }
                  }
                ],
                "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": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 7,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 7 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "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": 39,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 38,
            "inputs": {
              "forks": 11,
              "stars": 71,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "below_threshold"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "71 stars",
                "points": 29.9,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 71
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "11 forks",
                "points": 8.3,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "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": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "critical",
            "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": 26,
            "inputs": {
              "packages": [
                "memcord",
                "memcord"
              ],
              "dependents": null,
              "ecosystems": "npm, pypi",
              "total_downloads": null,
              "monthly_downloads": 34
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "34 downloads/month across npm, pypi",
                "points": 20.6,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 34,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 57,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 26,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.809
            },
            "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 81% of commits",
                "points": 4.3,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 81
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "merged_prs": 7,
              "open_issues": 0,
              "closed_issues": 4,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 5
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "7/12 decided PRs merged",
                "points": 22.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 7,
                      "decided": 12
                    }
                  }
                ],
                "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": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 46,
            "inputs": {
              "followers": 3,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "ukkit",
              "public_repos": 25,
              "account_age_days": 4976
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "3 followers of ukkit",
                "points": 4.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 3,
                      "login": "ukkit"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "25 public repos, account ~13 yr old",
                "points": 22.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 25
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "memcord",
                "memcord"
              ],
              "ecosystems": "npm, pypi",
              "any_deprecated": false,
              "min_days_since_publish": 7
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on npm, pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 7 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "6 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "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": "good",
        "name": "Engineering Quality",
        "value": 70,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "0 out of 2 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "ai-assistant",
                "ai-memory",
                "chat-history",
                "claude-desktop",
                "conversation-management",
                "developer-tools",
                "local-storage",
                "mcp-server",
                "memory-management",
                "model-context-protocol",
                "model-context-protocol-server",
                "privacy-focused",
                "python",
                "memory-slots",
                "privacy-first",
                "antigravity",
                "google-antigravity",
                "claude-code",
                "llm"
              ],
              "has_wiki": true,
              "homepage": "https://github.com/ukkit/memcord/releases",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://github.com/ukkit/memcord/releases",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "19 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 19
                    }
                  }
                ],
                "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": 24,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 24,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 13,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 5,
              "scorecard_aggregate": 2.4
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 2 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/28 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "8 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 6",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "82 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 4
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 52,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.878,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "86 of 98 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 86,
                      "sampled": 98
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 59,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "uv.lock"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.327,
              "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "32 of the last 98 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 32,
                      "sampled": 98
                    }
                  }
                ],
                "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": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 52,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 128337,
              "source_files_sampled": 84,
              "oversized_source_files": 4
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "4/84 source files over 60KB",
                "points": 52.4,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 84,
                      "oversized": 4
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "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": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-21T21:17:29.206967Z",
  "schema_version": "0.23.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/u/ukkit/memcord.svg",
  "full_name": "ukkit/memcord",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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.23.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm, PyPI.