Public record
Software health reportschema 0.23.0 · metrics 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 stars⑂ 11 forkssince Jun 2025View on GitHub ↗

ukkit/memcord holds a health index of 57 out of 100, placing it in the Moderate band. It scores highest on Vitality (84/100) and lowest on Security (24/100). It was last updated 7 days ago. A single contributor accounts for most of its recent work.

57
overall / 100
Moderate

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

57
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

Neeraj TikkuPersonal account
3 followers25 public repossince Dec 2012

This repository is owned by a personal account. A single-owner project carries more continuity risk than an organization-backed one.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
npmmemcord1.0.0-13453125 days agorecordmemcord
PyPImemcord4.3.0-67 days ago

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

84Good · 22% of overall
How it's scored
36/36Push recency — last push 7 days ago
13.8/36Commit cadence — 20/52 weeks with commits
17.5/18Commit volume — 87 commits in the last year
6/10OpenSSF Scorecard: Maintained — 8 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 6
Inputs used
commits_last_year87
human_commit_share1
days_since_last_push7
active_weeks_last_year20

Release discipline

100Excellent
How it's scored
27/27Ships releases — 17 releases published
36/36Release recency — latest release 7 days ago
27/27Release cadence — a release every ~14 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count17
latest_release_tagv4.3.0
releases_from_tagsno
days_since_latest_release7
mean_days_between_releases14
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

39At risk · 18% of overall
How it's scored
29.9/60Stars — 71 stars
8.3/25Forks — 11 forks
0/15Watchers — 0 watchers
Inputs used
forks11
stars71
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonbelow_threshold
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
How it's scored
20.6/80Monthly downloads — 34 downloads/month across npm, pypi
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagesmemcord, memcord
dependents
ecosystemsnpm, pypi
total_downloads
monthly_downloads34
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

57Moderate · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
4.3/22.5Commit distribution — top contributor authored 81% of commits
2.7/13.5Contributor breadth — 2 contributors
10/10OpenSSF Scorecard: Contributors — project has 3 contributing companies or organizations -- score normalized to 10
Inputs used
bus_factor1
contributors_sampled2
top_contributor_share0.809
How it's scored
46.8/46.8Issue resolution — 100% of issues closed
22.3/38.3PR acceptance — 7/12 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/28 approved changesets -- score normalized to 0
Inputs used
merged_prs7
open_issues0
closed_issues4
issue_closed_ratio1
closed_unmerged_prs5
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
4.3/25Owner reach — 3 followers of ukkit
22.3/25Track record — 25 public repos, account ~13 yr old
Inputs used
followers3
owner_typeUser
is_verified
owner_loginukkit
public_repos25
account_age_days4,976
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.
How it's scored
25/25Published & resolvable — 2 package(s) on npm, pypi
35/35Publish recency — latest publish 7 days ago
20/20Version history — 6 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesmemcord, memcord
ecosystemsnpm, pypi
any_deprecatedno
min_days_since_publish7

Engineering Quality

Are baseline engineering and documentation practices in place?

70Good · 20% of overall
How it's scored
0/24CI workflows
24/24Tests present
16/16Linter config
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
Inputs used
has_cino
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configyes

Documentation

100Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://github.com/ukkit/memcord/releases
10/10Repository description
10/10Topics — 19 topics
10/10Wiki
Inputs used
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_wikiyes
homepagehttps://github.com/ukkit/memcord/releases
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

24Critical · 16% of overall
How it's scored
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 — no data
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — 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 — no data
0/5Pinned-Dependencies — no data
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 — no data
0/7.5Token-Permissions — no data
0/7.5Vulnerabilities — 82 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate2.4
Excluded from scoring (no data or not applicable): dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Remaining weights renormalized.

AI Readiness

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.

52Moderate · 0% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 86 of 98 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.878
agent_instruction_files
agent_instruction_max_bytes
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config
0/11Static type checking
10/10Reproducible environment — lockfile
10/10Demonstrated agent practice — 32 of the last 98 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — no data
Inputs used
has_nixno
has_testsyes
lockfilesuv.lock
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configs
agent_commit_share0.327
toolchain_manifests
dependency_bot_commit_share0
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.
How it's scored
0/45Type-checkable code — Python without a type-check config
52.4/55Manageable file sizes — 4/84 source files over 60KB
Inputs used
primary_languagePython
largest_source_bytes128,337
source_files_sampled84
oversized_source_files4
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
20/20MCP server
40/40Runnable examples — examples
Inputs used
example_dirsexamples
has_mcp_signalyes
api_schema_files

Key facts

71GitHub stars
2contributors
87commits, last 12 months
7days since last push
17releases
1bus factor
0open issues
npm, PyPIpackage ecosystems

Data collection warnings

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

More detail

Star and fork history 71 ★ / 11 ⇿
71Stars
11Forks
17Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

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

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).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
n/aDangerous-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
n/aPackagingpackaging workflow not detected
n/aPinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
n/aToken-PermissionsNo tokens found
0Vulnerabilities82 existing vulnerabilities detected
Direct dependencies 12
RegistryPackageVersion constraintManifest
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
All dependencies not collected

The resolved dependency set could not be collected for this report: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Raw JSON report machine-readable
{
  "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"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.23.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsnpm, PyPI.