Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [
"ai-agent-memory",
"ai-agents",
"bun",
"claude-code",
"embeddings",
"hybrid-search",
"llama-cpp",
"local-first",
"mcp-server",
"mcp-tools",
"model-context-protocol",
"on-device-ai",
"rag",
"retrieval-augmented-generation",
"sqlite",
"typescript",
"vector-search",
"memory",
"plugin",
"hermes"
],
"is_fork": false,
"size_kb": 11405,
"has_wiki": true,
"homepage": null,
"languages": {
"HTML": 53,
"Shell": 2560,
"Python": 44953,
"Dockerfile": 865,
"TypeScript": 2726515
},
"pushed_at": "2026-07-19T15:51:47Z",
"created_at": "2026-02-06T14:34:04Z",
"owner_type": "User",
"updated_at": "2026-07-21T20:36:45Z",
"description": "On-device memory layer for AI agents. Claude Code, Hermes and OpenClaw. Hooks + MCP server + hybrid RAG search.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript"
]
},
"owner": {
"blog": null,
"name": "Yoloshi Nomotomoro?",
"type": "User",
"login": "yoloshii",
"company": null,
"location": null,
"followers": 0,
"avatar_url": "https://avatars.githubusercontent.com/u/26873046?v=4",
"created_at": "2017-04-03T13:02:46Z",
"is_verified": null,
"public_repos": 34,
"account_age_days": 3400
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.28.0",
"kind": "minor",
"published_at": "2026-07-19T15:51:27Z"
},
{
"tag": "v0.27.0",
"kind": "minor",
"published_at": "2026-07-18T08:02:00Z"
},
{
"tag": "v0.26.0",
"kind": "minor",
"published_at": "2026-07-18T05:40:51Z"
},
{
"tag": "v0.25.0",
"kind": "minor",
"published_at": "2026-07-18T04:35:11Z"
},
{
"tag": "v0.24.0",
"kind": "minor",
"published_at": "2026-07-10T15:17:50Z"
},
{
"tag": "v0.23.0",
"kind": "minor",
"published_at": "2026-07-10T11:28:43Z"
},
{
"tag": "v0.22.0",
"kind": "minor",
"published_at": "2026-07-10T09:46:19Z"
},
{
"tag": "v0.21.0",
"kind": "minor",
"published_at": "2026-07-10T06:56:36Z"
},
{
"tag": "v0.20.2",
"kind": "patch",
"published_at": "2026-07-07T08:03:13Z"
},
{
"tag": "v0.20.1",
"kind": "patch",
"published_at": "2026-07-07T07:40:46Z"
},
{
"tag": "v0.20.0",
"kind": "minor",
"published_at": "2026-07-05T14:37:16Z"
},
{
"tag": "v0.19.0",
"kind": "minor",
"published_at": "2026-07-04T19:32:58Z"
},
{
"tag": "v0.18.0",
"kind": "minor",
"published_at": "2026-07-04T16:08:50Z"
},
{
"tag": "v0.17.0",
"kind": "minor",
"published_at": "2026-07-01T18:47:41Z"
},
{
"tag": "v0.16.0",
"kind": "minor",
"published_at": "2026-07-01T15:37:47Z"
},
{
"tag": "v0.14.0",
"kind": "minor",
"published_at": "2026-06-25T19:55:04Z"
},
{
"tag": "v0.13.0",
"kind": "minor",
"published_at": "2026-06-25T14:31:24Z"
},
{
"tag": "v0.12.0",
"kind": "minor",
"published_at": "2026-06-25T09:09:36Z"
},
{
"tag": "v0.11.3",
"kind": "patch",
"published_at": "2026-06-24T17:13:16Z"
},
{
"tag": "v0.11.2",
"kind": "patch",
"published_at": "2026-06-23T20:00:05Z"
},
{
"tag": "v0.11.1",
"kind": "patch",
"published_at": "2026-06-23T19:45:39Z"
},
{
"tag": "v0.11.0",
"kind": "minor",
"published_at": "2026-06-22T17:13:23Z"
},
{
"tag": "v0.10.7",
"kind": "patch",
"published_at": "2026-05-20T19:22:28Z"
},
{
"tag": "v0.10.6",
"kind": "patch",
"published_at": "2026-05-20T14:47:36Z"
},
{
"tag": "v0.10.5",
"kind": "patch",
"published_at": "2026-05-15T09:37:36Z"
},
{
"tag": "v0.10.4",
"kind": "patch",
"published_at": "2026-05-08T10:15:25Z"
},
{
"tag": "v0.10.3",
"kind": "patch",
"published_at": "2026-05-04T10:40:26Z"
},
{
"tag": "v0.10.2",
"kind": "patch",
"published_at": "2026-04-28T12:38:49Z"
},
{
"tag": "v0.10.1",
"kind": "patch",
"published_at": "2026-04-19T03:52:58Z"
},
{
"tag": "v0.10.0",
"kind": "minor",
"published_at": "2026-04-13T13:42:06Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2026-04-13T04:02:25Z"
},
{
"tag": "v0.8.5",
"kind": "patch",
"published_at": "2026-04-13T00:08:15Z"
},
{
"tag": "v0.8.4",
"kind": "patch",
"published_at": "2026-04-11T14:26:26Z"
},
{
"tag": "v0.8.3",
"kind": "patch",
"published_at": "2026-04-10T03:57:01Z"
},
{
"tag": "v0.8.2",
"kind": "patch",
"published_at": "2026-04-10T01:11:51Z"
},
{
"tag": "v0.8.1",
"kind": "patch",
"published_at": "2026-04-09T22:50:15Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2026-04-09T22:09:06Z"
},
{
"tag": "v0.7.2",
"kind": "patch",
"published_at": "2026-04-09T21:11:44Z"
},
{
"tag": "v0.7.1",
"kind": "patch",
"published_at": "2026-04-09T19:56:40Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-04-08T10:58:11Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2026-04-08T07:51:21Z"
},
{
"tag": "v0.5.1",
"kind": "patch",
"published_at": "2026-04-08T05:59:49Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-04-08T04:03:51Z"
},
{
"tag": "v0.4.2",
"kind": "patch",
"published_at": "2026-04-04T19:12:43Z"
},
{
"tag": "v0.4.1",
"kind": "patch",
"published_at": "2026-04-04T18:49:34Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-04-04T18:42:47Z"
},
{
"tag": "v0.3.4",
"kind": "patch",
"published_at": "2026-04-02T14:30:16Z"
},
{
"tag": "v0.3.3",
"kind": "patch",
"published_at": "2026-04-02T13:59:14Z"
},
{
"tag": "v0.3.2",
"kind": "patch",
"published_at": "2026-04-02T13:20:03Z"
},
{
"tag": "v0.3.1",
"kind": "patch",
"published_at": "2026-04-02T12:43:16Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-03-31T09:41:07Z"
},
{
"tag": "v0.2.9",
"kind": "patch",
"published_at": "2026-03-31T08:44:14Z"
},
{
"tag": "v0.2.8",
"kind": "patch",
"published_at": "2026-03-30T14:24:06Z"
},
{
"tag": "v0.2.7",
"kind": "patch",
"published_at": "2026-03-28T15:50:49Z"
},
{
"tag": "v0.2.6",
"kind": "patch",
"published_at": "2026-03-25T11:59:27Z"
},
{
"tag": "v0.2.5",
"kind": "patch",
"published_at": "2026-03-25T10:47:58Z"
},
{
"tag": "v0.2.4",
"kind": "patch",
"published_at": "2026-03-24T14:33:04Z"
},
{
"tag": "v0.2.3",
"kind": "patch",
"published_at": "2026-03-24T05:20:24Z"
},
{
"tag": "v0.2.2",
"kind": "patch",
"published_at": "2026-03-23T20:18:37Z"
},
{
"tag": "v0.2.1",
"kind": "patch",
"published_at": "2026-03-23T19:34:01Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2026-03-23T18:42:11Z"
},
{
"tag": "v0.1.8",
"kind": "patch",
"published_at": "2026-03-20T12:52:59Z"
},
{
"tag": "v0.1.7",
"kind": "patch",
"published_at": "2026-03-17T08:08:41Z"
},
{
"tag": "v0.1.6",
"kind": "patch",
"published_at": "2026-03-17T06:25:46Z"
},
{
"tag": "v0.1.5",
"kind": "patch",
"published_at": "2026-03-17T00:11:40Z"
},
{
"tag": "v0.1.4",
"kind": "patch",
"published_at": "2026-03-16T23:48:32Z"
},
{
"tag": "v0.1.3",
"kind": "patch",
"published_at": "2026-03-16T22:43:28Z"
},
{
"tag": "v0.1.2",
"kind": "patch",
"published_at": "2026-03-16T06:46:37Z"
},
{
"tag": "v0.1.1",
"kind": "patch",
"published_at": "2026-03-16T01:24:05Z"
}
],
"recent_commits": [
{
"oid": "41fd12153e23491921673cfe11aab017b8151078",
"body": "…owed\n\nPhase 1 hardened what reached the mutation boundary. This repairs the boundary\nitself: two contract defects meant no classification could ever be applied.\n\nThe lookup was handed a virtual `clawmem://collection/path` URI where it matched\nthe bare `documents.path` column, so no candidate resolv\n[…]\non.\n\nSuite 1,775/0. Cross-model adversarial review (codex / GPT-5.6) across seven\nturns to zero findings; every regression claim mutation-verified by reverting\nthe fix and confirming which tests fail.",
"is_bot": false,
"headline": "v0.28.0 — repair the contradiction write path, ship invalidation shad…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-19T15:51:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ee715fb475a0691b91a5c705ad04d25ef15c90f5",
"body": "Two Stop-hook write paths (A-MEM causal inference, contradiction detection)\nreported success while persisting nothing: counters incremented per candidate\nagainst INSERT OR IGNORE, so a total write failure was indistinguishable from a\nhealthy run. This makes the reporting truthful and hardens validat\n[…]\nrites .last-message and .turn-result\nsiblings the exact-name rule did not match.\n\nSuite 1751/0 (guard file 22 -> 45). Cross-model adversarial review to verbatim\n\"zero remaining findings\", nine rounds.",
"is_bot": false,
"headline": "v0.28.0 — hook write-path contracts: extraction guards, honest counters",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-19T13:49:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "905c2e962cf4ec1246f35a8e9eb13f6477a43752",
"body": "…changed\n\nPre-registered ship-or-kill experiment (cross-model adversarial design pass,\n5 turns / 20 findings to CLEAR) adapting Sibyl-Memory's FTS5 proximity buckets\nto the `search` raw route, measured one-shot against the frozen s49.2 keyword\nbundle. Verdict on the frozen rule: KILL — three gates f\n[…]\nnow (applies to s49.3-bypass too)\n- tests/unit/proximity.test.ts — 25-test matrix keeps the record healthy\n- .gitignore — .codex-review/ (internal review artifacts) now actually ignored\n\nSuite 1706/0.",
"is_bot": false,
"headline": "§51.6 proximity-bucket re-rank experiment: KILL — search raw route un…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-18T10:15:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "93bd05ba1f4d53afedb22a9e6e12159d5e810f97",
"body": "…ere written\n\nConfirmed recency-contamination fix: documents gain a nullable authored_at\naxis captured from transcript timestamps at mine time (strict per-format\nadapters, exchange-level stamping), inherited by synthesized facts,\nhonored from frontmatter vault-wide, and backfillable metadata-only\n(m\n[…]\nw tests). Design-first: adversarial DESIGN pass\ncleared in 6 turns (29 findings), implementation in 3 (7 findings),\nentity fix in 1 — cross-model (codex / GPT-5.6) to verbatim zero\nremaining findings.",
"is_bot": false,
"headline": "v0.27.0 — authorship time (authored_at): memories rank by when they w…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-18T08:02:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6c51d525e9d0e3e11d9f1552054af205838ae4b6",
"body": "…ry-query gate fix",
"is_bot": false,
"headline": "v0.26.0 — offline eval harness (evidence-overlap replay) + short memo…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-18T05:40:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bc6589c1eb4e83854f052295b2df79331f67d745",
"body": "… half-life (§36.11) + entity-neighbor hub-bias fix (BL-001)",
"is_bot": false,
"headline": "v0.25.0: extraction retry-with-error-feedback (§13.1) + decision 180d…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-18T04:35:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "580f3cbb8ae6dff3e0f8faa7abba371efd928079",
"body": "…bypass A/B toolkit\n\nS49.2 judged keyword eval (pre-registered; 6-turn design gate + 4-turn\namendment gate, cleared to verbatim zero-findings): raw-BM25-primary beat\nthe shipping composite decisively — combined MRR 0.848 vs 0.415, hit@1\n33 vs 6, held-out 0.875/16-at-#1 vs 0.335/0 (composite missed i\n[…]\nding,\n introduction, README, AGENTS, SKILL, RELEASE_NOTES\n\nSuite: 1,542 pass / 0 fail. Independent cross-model adversarial review:\ndesign T25-T30 + amendment T31-T34 + impl T35-T36, cleared verbatim.",
"is_bot": false,
"headline": "v0.24.0: raw-BM25-primary ranking for search (judged keyword eval) + …",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-10T15:17:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e9205ac295132980115900f5f0fb9220651b9403",
"body": "…a constant)\n\nFTS5 bm25() is negative-is-better (≤ 0 on every match; 0/4,962 positive rows\nmeasured on a production vault), so searchFTS's exposed score\n1/(1+Math.max(0,bm25)) was EXACTLY 1.0 for every result: composite ranking on\nthe FTS surfaces (search, REST keyword, CLI, memory_retrieve keyword \n[…]\nual golden and regression-sensitive deep-escalation\nblend arithmetic. Follow-on: BACKLOG 49.2 (judged keyword eval + bypass\nfiring report) and 49.3 (query-pipeline A/B before bypass-threshold tuning).",
"is_bot": false,
"headline": "v0.23.0 — monotonic BM25 exposed score (the FTS relevance signal was …",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-10T11:28:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "96efe3580341c4db45fa796d27ebe8d4115d6dad",
"body": "Rank vsearch and memory_retrieve semantic/discovery by RAW vector cosine on\nnon-recency queries (scoreBasis \"vector-cosine\"); document metadata — including\npin — breaks exactly-equal raw-score ties only (pinned, then legacy composite,\nthen path). Measured basis: raw cosine ranked 16/19 judged target\n[…]\n 0.870; held-out\nhit@1 17/20 hit@5 19/20 MRR 0.879 vs floors 12/17/0.75. Cross-model DESIGN\ngate (5 turns, 14 findings) + implementation review (2 turns, 5 findings) to\nzero findings; bun test 1507/0.",
"is_bot": false,
"headline": "v0.22.0 — raw-similarity-primary ranking for the direct vector routes",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-10T09:46:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e79ef17b24c172a9e31c5866be4ce89c3593b926",
"body": "…nt tooling)\n\nRead-only evaluator that mirrors the MCP direct vsearch pipeline\n(searchVecDetailed with the production _clawmem exclusion → enrichResults →\ncomposite → minScore) and re-scores the same per-query candidate pool under\ntoggled configs (weights mix, length norm, quality, co-activation, fr\n[…]\nrs can never come from a stale copy. Reports hit@1/hit@5/MRR/\nmean-rank/below-minScore per config plus a no-target control row for\nfalse-positive pressure. eval-queries*.json stays local (gitignored).",
"is_bot": false,
"headline": "scripts: composite-multiplier ablation harness (Source 48.1 measureme…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-10T07:29:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7bcfc5a09c6b6b479f8a1b1ffbb76f3d4e1f8181",
"body": "…metry canary, embed survivability\n\nExclude the system-internal _clawmem collection from the six MCP retrieval\nroutes by default (includeInternal opt-in; store-layer predicate, escalating\nvector MATCH depth, traversal pruning; explicit degraded markers on cap-limited\nunder-fills). Add an embedding-g\n[…]\n Opt-in\nretrieval.mcp_direct_tuned_weights knob (default off); 'latest' routes to\nrecency intent. Cross-model DESIGN gate (7 turns) + implementation review\n(4 turns) to zero findings; bun test 1492/0.",
"is_bot": false,
"headline": "v0.21.0 — vsearch trust hardening: internal-collection exclusion, geo…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-10T06:56:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "82c81c43dcbc3a2d5baa82353ad8089111448bbc",
"body": "…, full-backlog + lease behavior documented)",
"is_bot": false,
"headline": "docs: v0.20.1/v0.20.2 release notes + beads-surface sync (bd link fix…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-07T08:34:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "90b57476ab0bc95688eae71f476035a64bf2edc6",
"body": "…) + BD_DISABLE_METRICS/BD_DISABLE_EVENT_FLUSH forced",
"is_bot": false,
"headline": "v0.20.2 — beads runBd hardening: execFileSync (no shell interpolation…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-07T08:03:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c69714836d851363f19748c57455c0687419070",
"body": "…d list 50-cap (--limit 0), surface claim leases (lease_expires_at/heartbeat_at)",
"is_bot": false,
"headline": "v0.20.1 — beads v1.1.0 upstream sync: drop dead quality_score, lift b…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-07T07:40:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6783146b3c12fe96aba2a193d6347fd59e22870b",
"body": "Move the blocking sqlite-vec MATCH off the context-surfacing hook's event loop into a per-vault unix-socket daemon hosted by the watcher, so the hook's real timeout fires and a cold scan falls back to FTS instead of blocking the turn. Opt-in (needs 'clawmem watch'); strict graceful degradation; single-flight + deadline-on-receipt. Split searchVec into searchVecMatch + hydrateVecResults. codex DESIGN gate + code review to zero findings; bun test 1447/0.",
"is_bot": false,
"headline": "v0.20.0 — vector-query daemon: hard cap on the cold synchronous MATCH",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-05T14:37:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "78b6e9d58061b94757f5bb4a260505bc20cb1706",
"body": null,
"is_bot": false,
"headline": "v0.19.0 — priority-based transcript formatting for session extraction",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-04T19:32:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9ef9b97ec6ebfd9c42353569fedb807996c46688",
"body": "…g, remote LLM/rerank auth\n\nW1 (contract change): searchVec now compares the endpoint-returned embedding model\nagainst the vault's stored model(s) after the query embed and throws\nVecReadModelMismatchError on a same-dimension model swap — exactly one stored model\nmust equal the active one. The check\n[…]\nlandmine; RELEASE_NOTES v0.18.0. bun test -> 1394 pass / 0 fail. Reviewed\nacross all three workstreams by an independent cross-model adversarial pass (codex /\nGPT-5.5-high) to zero remaining findings.",
"is_bot": false,
"headline": "v0.18.0 — read-path embedding-model guard, extraction parrot-hardenin…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-04T16:08:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "862dbd0590649f431e4748d32e1a1eaf7a0772ad",
"body": "Follow-up to v0.16.0's context-surfacing hook-timeout fix, closing the residual\nwrite-contention and embed-cancellation gaps on the same hook path.\n\n- Best-effort hook writes fail fast under contention: the dedup UPSERT is now\n fail-open, and the context-surfacing hook process caps its own busy_tim\n[…]\n synchronous scan needs process isolation (deferred).\n\nBug-first tests, each guard-verified (fails on pre-fix source). Cross-model\nreview (GPT-5.5 high) to zero findings. bun test: 1390 pass / 0 fail.",
"is_bot": false,
"headline": "harden context-surfacing hook budget + cancellable embeds (v0.17.0)",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-01T18:47:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "dce5eced84713453543590177a230806f7bc68cb",
"body": "…correct)\n\nBoth failed on a test-methodology defect, not a source bug — the source is\nunchanged and proven correct in each case (bug-first discipline).\n\n- topic-boost fail-open (§11.4): isolate the focus-topic variable with two\n identically-seeded stores + hermetic skill-vault isolation. The prior \n[…]\n\n meant \"any hour\", but isInQuietWindow is end-exclusive, so it failed during\n the 23:00 local hour. Omit the window (always-open) and add a hermetic unit\n guard pinning the end-exclusive boundary.",
"is_bot": false,
"headline": "test: fix two pre-existing red tests (methodology bug, source proven …",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-01T18:47:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1d42d7f22377fd576ecdbca3eaa41a99dbfc8f41",
"body": "… times out\n\nThe context-surfacing hook could intermittently exceed its UserPromptSubmit\nbudget (\"hook timed out — output discarded\"), especially on the first prompt\nafter a fresh boot and across concurrent sessions. The root cause was not\ninference or host memory: the vector leg ran a synchronous s\n[…]\n rounds to zero findings). New tests in\ntests/unit/hook-timeout-fix.test.ts. Docs/troubleshooting corrected — the prior\n\"give the host more RAM\" guidance was disproven (a 24GB reboot still timed out).",
"is_bot": false,
"headline": "v0.16.0 — Fix: context-surfacing UserPromptSubmit hook intermittently…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-07-01T15:37:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8fa0ef0d7ee99032ba11609ea659e542ca7829f5",
"body": "…sue #20)\n\nmacOS's built-in SQLite (Bun's default) is compiled without extension\nloading, so sqliteVec.load() failed at bootstrap/doctor with \"does not\nsupport dynamic extension loading\". The prior handling probed only the\nApple-Silicon Homebrew path and swallowed the failure silently, so a fresh\nma\n[…]\nrap and doctor).\n- New bug-first test (tests/unit/store.macos-sqlite.test.ts, 5 cases);\n bun test -> 1183 pass / 0 fail.\n- Troubleshooting entry under \"Bun runtime\"; bump 0.15.0 -> 0.15.1.\n\nRefs #20.",
"is_bot": false,
"headline": "v0.15.1 — Fix: macOS bootstrap fails to load sqlite-vec extension (Is…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-30T14:51:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f62830e2292b4bc63347c6a352e6a9c5fc7f8550",
"body": "…attern durability fix\n\nAlign the agent-instruction surface to the AGENTS.md convention and fix a\nlatent scoring bug surfaced during review.\n\n- AGENTS.md -> lean root SSOT (72.6KB -> 17.7KB, under Codex's 32KiB cap)\n- CLAUDE.md -> @AGENTS.md import (ends the byte-identical 72KB twin)\n- SKILL.md -> o\n[…]\ntern\ndurability test); all relative links resolve; AGENTS.md < 32KiB; CLAUDE.md no longer\na byte-twin. Reviewed by codex GPT-5.5-high across the refactor and the source fix to\nzero remaining findings.",
"is_bot": false,
"headline": "v0.15.0 — Agent-instruction refactor (AGENTS.md as lean SSOT) + antip…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-30T12:56:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ebbe8f247fe3d0064228de65bbd2af0dc8e98aba",
"body": "…t + memory-pressured host)\n\nThe 8s context-surfacing UserPromptSubmit hook can time out intermittently even on a healthy\nllama-server setup when the vault index is large and the host is memory-constrained: page-cache\neviction between turns causes a recurring cold-start (fresh Bun process + large in\n[…]\nxt-surfacing hook timeout\" section so an agent can\n self-tune the settings.json value per host. No CLI knob added; 8s default unchanged.\n- SKILL.md: condensed mirror in the symptom block.\n\nDocs only.",
"is_bot": false,
"headline": "docs: cold-start cause for context-surfacing hook timeout (large vaul…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-30T09:21:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cccc66f1dad5581c01e507efd63466f2fb5d08c9",
"body": "…leshooting + release notes\n\nPublic-exposure hygiene: generalize the sciros:sciros example install-user in\ndocs/troubleshooting.md to appuser:appuser, and remove the internal codex review\nsession UUIDs (019e...) from older RELEASE_NOTES entries (kept the review-turn\nnarrative). No code, behavior, or version change. The SECURITY.md / issue-template\ncontact email is intentional and unchanged.",
"is_bot": false,
"headline": "docs: scrub internal codename (sciros) + codex session IDs from troub…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-25T20:11:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec6d5a0eab619e73792cc56af05952f9d093dbde",
"body": "…r (doctor + scheduled check + runtime emit)\n\nThe broken zerank-2 GGUF returned HTTP 200 + valid JSON + finite positive ~1e-11 scores\n— passing every liveness check — yet contributed nothing at weight 0.9 and silently\ncollapsed the final ranking to RRF. blendRerank's usability check was `score > 0`,\n[…]\nsc clean; full suite green (1 pre-existing unrelated failure). Reviewed\nacross design + implementation by an independent cross-model adversarial pass\n(codex / GPT-5.5-high) to zero remaining findings.",
"is_bot": false,
"headline": "v0.14.0 — Reranker health guard: detect a silently-degenerate reranke…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-25T19:55:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ad9c2e4186514a022be9e6749c31d472d8dcb3ad",
"body": "The query tool now scores with QUERY_WEIGHTS {search:0.70, recency:0.15, confidence:0.15} (was 0.50/0.25/0.25), via an additive {weights,now,forceWeights} seam on applyCompositeScoring. Recency intent still wins RECENCY_WEIGHTS by construction; scoped to the query tool only.\n\nHeld-out judged-relevan\n[…]\nows newest-correct demotionRate 0 at 0.70 vs 2/19 at 0.80. Reviewed across design/results/hardening/impl by an independent cross-model adversarial pass (codex/GPT-5.5-high) to zero remaining findings.",
"is_bot": false,
"headline": "v0.13.0 — Query composite re-weight: search 0.70 for the query tool",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-25T14:31:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5c7892bfde5a8fecc1373e62d7dd2997fbe6966e",
"body": "…gnal (fixes immovable RRF #1)\n\nThe query tool's position-aware blend `w·(1/rrfRank) + (1-w)·rerank` (w 0.75/0.60/0.40) made\nRRF #1 mathematically immovable by the reranker (0.75·1 exceeds any rank-2 ceiling), so the\nnow-faithful zerank-2 reranker's largest win was discarded. Replace with `blendRera\n[…]\ndex/GPT-5.5-high) to zero\nfindings. Also folds the pending systemd-services.md doc fix and updates the pipeline docs\n(CLAUDE/AGENTS/README/SKILL, docs/internals, upgrading.md) to describe blendRerank.",
"is_bot": false,
"headline": "v0.12.0 — Query reranking: blend the cross-encoder as the dominant si…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-25T09:09:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "01b21f2620bdc82b1c61b9a5fadf2135a13a3015",
"body": "…-cls sidecar\n\nThe \"SOTA upgrade\" reranker (zerank-2-Q4_K_M.gguf under `llama-server\n--reranking`) was silently broken. zerank-2 is a Qwen3ForCausalLM that scores\na (query, document) pair on the logit of a single relevance token (\"Yes\",\nid 9454). llama.cpp's convert_hf_to_gguf.py only synthesizes a \n[…]\nNo\nsrc/ change, no schema migration, no config/env-var change, no public API\nchange. zerank-2 weights are CC-BY-NC-4.0 and are never bundled; the recipe\ndownloads them for your own non-commercial use.",
"is_bot": false,
"headline": "v0.11.3 — Reranker: deprecate broken zerank-2 GGUF; ship zerank-2 seq…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-24T17:13:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bf0e6f07c82284b3489608c37b017c4feb552af7",
"body": "…wmem command (npm 11)\n\nnpm 11 publish rejected the ./bin/clawmem form and dropped the bin entry from the tarball (older npm silently corrected it; live v0.11.0 ships bin/clawmem), so a global install would expose no clawmem command. bin → \"bin/clawmem\"; verified via npm publish --dry-run. No source change from v0.11.1 — v0.11.1 was git-tagged but never published to npm (publish failed on an expired token), so v0.11.2 carries the full v0.11.1 query-expansion fix and supersedes v0.11.0 on npm.",
"is_bot": false,
"headline": "v0.11.2 — Packaging: `bin` path so `npm install -g` registers the cla…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-23T20:00:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "663e183d7c1757cecc65f6af2bec33dd3e88207a",
"body": "Fix two compounding query-expansion bugs that degraded query/intent_search recall:\n\n(1) The expansion prompt was out-of-distribution for the qmd-query-expansion-1.7B finetune (verbose prose, no format constraint) → bare question-stem lex terms, template echoes, </think> leakage. Now sends the terse \n[…]\nRRF doc correction).\n\nVerified: tsc clean on touched files, full unit suite green (187 pass), live end-to-end against the expansion server; codex impl-review session 019ef534 cleared to zero findings.",
"is_bot": false,
"headline": "v0.11.1 — Query expansion: typed lex/vec/hyde routing + terse qmd prompt",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-23T19:45:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9486a41a9649be6f36e52ccd1228957b87b31ec8",
"body": "…vector writes\n\nensureVecTable throws (never drops) on a dimension/schema mismatch; embed detects dimension AND same-dimension model drift non-destructively and rebuilds only via --force (which probes the endpoint first); each run is bound to one (dimension, model) and validates every embedding befo\n[…]\nors_vec consistency (set-diff) and mixed-model detection; embed exits nonzero on abort. Validated by a 9-turn GPT-5.5-high adversarial codex review (findings 6->4->3->2->0). See RELEASE_NOTES v0.11.0.",
"is_bot": false,
"headline": "v0.11.0 — embedding dimension-migration safety + lease-fenced atomic …",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-22T17:13:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2746d959eff8234af343609e963afb2e37d076dc",
"body": "Follow-up to #19. Adds two llm-remote-config cases: a full\n/v4/chat/completions URL passes through unchanged, and a trailing\nslash is stripped before the passthrough check.",
"is_bot": false,
"headline": "test: cover full chat/completions URL passthrough",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-20T11:57:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb370866875afa647a718d49b5f17c06f41b4184",
"body": "Some LLM API endpoints use non-standard URL paths (e.g. /v4/chat/completions\ninstead of /v4/v1/chat/completions). buildRemoteChatCompletionsUrl always\nappended /v1/chat/completions, causing 404 errors.\n\nThis patch checks if the URL already ends with /chat/completions and returns\nit as-is.\n\nCo-authored-by: Oliver Sanctus Georgius <oliver@olivers-mac-mini.tail3eabaf.ts.net>",
"is_bot": false,
"headline": "fix: allow full chat/completions URL without /v1 appending (#19)",
"author_name": "Oliverbot26",
"author_login": "Oliverbot26",
"committed_at": "2026-06-20T11:55:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3224f86e3c4996ea62cb893c61ba3d00497cf292",
"body": "Prevents bun from recursing into vendored clones and running their suites\n(which lack our devDeps). ClawMem's own tests are unaffected: 1307 pass / 0 fail.",
"is_bot": false,
"headline": "test: scope `bun test` to the tests/ directory via bunfig",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-06-18T11:28:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8016a442b1b27af64f4a5912016dd2110aba8b89",
"body": "…-derived state)\n\nImplement MemoryProvider.on_session_switch in src/hermes/__init__.py. Hermes\nv2026.5.16 wired this hook to fire on /new, /resume, /branch, and compression;\nClawMem previously left it the ABC no-op, so the cached _session_id and the\nsession-keyed _transcript_path ({session_id}.jsonl\n[…]\nPT-5.5 adversarial review (codex session\n019e46bc-0848-7540-a1ce-913000112da1): design review caught a reset-gated prefetch\nleak + an ABA generation-reset race; corrected design cleared zero findings.",
"is_bot": false,
"headline": "v0.10.7 — Hermes plugin: implement on_session_switch (refresh session…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-05-20T19:22:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7658f3cd292604d7d12c553ff69599e1fcc8c83a",
"body": "…f stripping them\n\nbuildFTS5Query stripped _ - . / ' from query terms, concatenating word-parts into\ntokens the porter-unicode61 index never holds, so BM25 returned 0 rows for any\ncompound/path/snake_case/dotted query (before_compaction, src/store.ts, q4_k_m).\nReplace sanitizeFTS5Term with tokenizeF\n[…]\nn regression tests.\nFull suite 1298 pass / 0 fail. No reindex, no schema migration, no API change.\nCodex review session 019e4595 (4 turns; T2 caught the entity regression,\nT4 zero remaining findings).",
"is_bot": false,
"headline": "v0.10.6 — FTS keyword-search tokenization: split separators instead o…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-05-20T14:47:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2f7c45dd5ee80efd397dba9c157bf256de1c03bf",
"body": "* fix: harden pilot memory retrieval and fallback behavior\n\n* test: assert remote embed HTTP errors skip local fallback\n\n---------\n\nCo-authored-by: Nyx <nyx@local>",
"is_bot": false,
"headline": "fix: harden pilot memory retrieval and fallback behavior (#10)",
"author_name": "Nova - Rey",
"author_login": "nova-rey",
"committed_at": "2026-05-15T12:15:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8aa1068bcd75fb604bb134fcc36551488a8343d1",
"body": "src/store.ts:initializeDatabase() set PRAGMA busy_timeout = 15000 AFTER\nPRAGMA journal_mode = WAL. busy_timeout is a connection-level setting that\nonly governs *subsequent* statements (default busy callback is NULL →\nSQLITE_BUSY returns immediately), so concurrent Stop-hook subprocesses raced\nfor th\n[…]\nbefore_reset fan-outs). Both applied. Turn 2\nverbatim verdict: \"Zero remaining findings on the Issue #13 fix. Ship as\nis. Ready to tag v0.10.5.\"\n\nReporter: @jcgau (first-time contributor).\nCloses #13.",
"is_bot": false,
"headline": "v0.10.5 — Issue #13: SQLite PRAGMA ordering race fix",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-05-15T09:37:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b0241190e8018575e9d2dc7d32bfd17c44218839",
"body": "…#11)\n\nFixes yoloshii/ClawMem#11 (@elquercarlos):\n\n1. clawmem setup openclaw ignored OPENCLAW_STATE_DIR and OpenClaw's --profile\n flag (hardcoded ~/.openclaw/extensions/clawmem). Custom profile installs\n landed in the wrong directory.\n2. clawmem setup openclaw --help ran setup instead of printin\n[…]\nce/cli.md: setup openclaw flag block expanded, env-var\n table added.\n- CLAUDE.md / AGENTS.md: v0.10.4 bullet under OpenClaw Integration\n section.\n- README.md: quickstart + integration block updated.",
"is_bot": false,
"headline": "v0.10.4 — Profile-aware setup openclaw + --help short-circuit (issue …",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-05-08T10:15:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "529109ea2b27dec61030f93c7a463cd0dadbcd74",
"body": "The clawmem-openclaw-plugin package declares \"type\": \"module\", but\nsrc/openclaw/shell.ts uses CommonJS __dirname to resolve the local\nbin/clawmem path. When OpenClaw loads the plugin via the plain\nNode.js ESM loader, __dirname is not defined and the import throws:\n\n ReferenceError: __dirname is not\n[…]\nmport.meta.url using the canonical\nfileURLToPath shim. Behavior under Bun is unchanged; behavior under\nNode now matches what shell.ts intended.\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(openclaw): shim __dirname for Node.js ESM plugin loader (#12)",
"author_name": "Inire",
"author_login": "inire",
"committed_at": "2026-05-08T08:46:17Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "05e49e1037a4218032b182ff233e2fda5e3b3abe",
"body": "…c maintenance\n\nBundles cymkd's PR #7 four-commit parser hardening (already merged via rebase\nabove this commit) with the batched-pending doc updates that were sitting in\nthe working tree across the v0.10.2 → v0.10.3 window.\n\nParser hardening (cymkd / Veljko Simakovic):\n- Prose-balanced literal no l\n[…]\nCLAUDE.md ≡ AGENTS.md byte-identical preserved\n\nNo schema migration. No vault format change. Pure git pull / bun add upgrade.\n\nRefs PR #7 (cymkd, A-MEM parser hardening for noisy llama-server output).",
"is_bot": false,
"headline": "chore(release): v0.10.3 — A-MEM parser hardening (PR #7) + batched do…",
"author_name": "Yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-05-04T10:40:26Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6afa24bca866665e5fd92c91de5e1e53d82abecf",
"body": "Small local models can echo prompt instructions and schema examples before the actual JSON answer. The parser now de-prefers prose-side balanced literals when a later fenced or line-start payload is present, and link generation returns to partial-valid insertion without requiring all neighbors.\n\nCon\n[…]\nnit/conversation-synthesis.test.ts tests/integration/conversation-synthesis-two-pass.integration.test.ts\n\nNot-tested: Full bun test remains blocked by unrelated cmdwatch heavy-lane integration failure",
"is_bot": false,
"headline": "fix(amem): prefer real JSON payloads",
"author_name": "Veljko Simakovic",
"author_login": "cymkd",
"committed_at": "2026-05-04T10:31:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5cab8fee7e36b7aefba674d3d67817cc641394d3",
"body": "The JSON salvage path now distinguishes fenced examples from real payloads,\nparses valid JSON followed by prose, and rejects malformed link batches\ninstead of partially accepting them. The follow-up also reverts the prompt\nwording drift so this stays a parser/validation fix.\n\nConstraint: Must preser\n[…]\nM precedence tests in sync with any future prompt/example formatting changes\nTested: bun test tests/unit/amem.test.ts\nNot-tested: End-to-end generateMemoryLinks DB write path with a live store fixture",
"is_bot": false,
"headline": "Preserve real A-MEM payloads when model outputs include examples",
"author_name": "Veljko Simakovic",
"author_login": "cymkd",
"committed_at": "2026-05-04T10:31:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0439ea577f350f6e98a7396938c67b6fbc8f3a88",
"body": "Real-corpus enrich runs reached the final documents without note failures,\nbut link generation still intermittently returned a top-level object with\na `result` array instead of an array at the top level. The parser now\nunwraps that shape and the memory-note salvage path remains intact.\n\nConstraint: \n[…]\nss), enrich smoke with local 8088/8089/8090 after wrapper fix showed note_invalid=0 and link_invalid=0 in sampled window\nNot-tested: Completed full corpus enrich after wrapper fix from start to finish",
"is_bot": false,
"headline": "Handle object-wrapped link generation results too",
"author_name": "Veljko Simakovic",
"author_login": "cymkd",
"committed_at": "2026-05-04T10:31:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "78f5bb593d2b56f25ca2b63357d29f9f0d511b4a",
"body": "A-MEM note construction and link generation were fragile under the\nremote 8089 llama-server path: valid JSON wrapped in stray fence junk,\npartial JSON objects, and `lex/vec/hyde` fallback text all caused\nunparseable-note failures during enrich runs.\n\nThis patch tightens JSON extraction, adds lightwe\n[…]\nass), repeated enrich smoke on real corpus with local 8088/8089/8090 sampled through docId 160 with zero invalid JSON\nNot-tested: Completed end-to-end enrich pass across entire real corpus after patch",
"is_bot": false,
"headline": "Harden A-MEM parsing for noisy llama-server outputs",
"author_name": "Veljko Simakovic",
"author_login": "cymkd",
"committed_at": "2026-05-04T10:31:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a74b7ed58c214d2db07251647d61785cf4b1adcd",
"body": "…ntenance\n\nSmall patch release. No retrieval pipeline, composite scoring, vault format,\nhook set, agent tool surface, or OpenClaw plugin registration shape changes\nfrom v0.10.1. Vaults are byte-identical at rest. Pure git pull upgrade.\n\nConfigurable remote LLM endpoints (PR #8 by @DrJsPBs):\n Three \n[…]\nview rounds (gpt-5.4 high reasoning each side); contributor folded\n in fork-review extras within the same PR scope. Cross-validated in\n their downstream DrJLabs/ClawMem fork before opening upstream.",
"is_bot": false,
"headline": "chore(release): v0.10.2 — Configurable remote LLM endpoints + doc mai…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-28T12:38:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fed517ae23e08708461ed8c195761f7957e3316a",
"body": "Add configurable remote LLM model selection, reasoning effort passthrough, and /no_think controls while preserving existing qwen3 defaults.\n\nThread the settings through OpenClaw and Hermes, document the endpoint contracts, normalize /v1 chat-completions URLs, and cover the request-body behavior with focused tests.",
"is_bot": false,
"headline": "feat(llm): support remote model overrides",
"author_name": "DrJsPBs",
"author_login": "DrJsPBs",
"committed_at": "2026-04-28T12:32:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a793b2ce52962e8e7d0b4d5c61c2d8eb4ebee48",
"body": "…2026.4.18 / Hermes v2026.4.16+ doc maintenance\n\nSmall patch release. No retrieval pipeline, composite scoring, vault format,\nhook set, agent tool surface, or OpenClaw plugin registration shape changes\nfrom v0.10.0. Vaults are byte-identical at rest.\n\nHermes plugin (src/hermes/__init__.py) — agent_c\n[…]\n\n\nTests: 1204 pass / 0 fail / 2339 expect() calls across 66 files. No new\ntests in v0.10.1 — agent_context guard is observable only against a live\nHermes runtime, rest of the release is documentation.",
"is_bot": false,
"headline": "chore(release): v0.10.1 — Hermes agent_context isolation + OpenClaw v…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-19T03:52:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ca85f85ee85b3f0b501885a0256316b4af0542c4",
"body": "Adds an External credit subsection to v0.8.4 release notes, matching the\nv0.10.0 convention used for @withx. The PR was closed as superseded but\nthe gateway-restart-before-slot-assignment insight is preserved verbatim\nin v0.8.4. Will land with the next version bump.",
"is_bot": false,
"headline": "docs: retroactively credit @saschabuehrle for v0.8.4 PR #6",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-17T01:35:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "85f2a8a760822e04a9f3d28422602309f6f62e2b",
"body": "…0.0)\n\n§14.3 pure-memory migration\n---------------------------\nClawMem's OpenClaw plugin no longer registers as `kind: context-engine`\nwrapping a ClawMemContextEngine class. It is now a `kind: memory` plugin\nthat wires every lifecycle event through OpenClaw's plugin-hook bus:\n\n- before_prompt_build \n[…]\n026.4.11 install that did not share any state with the\nClawMem development environment. The external reproduction is what\nconfirmed this was a clean packaging gap, not a machine-specific\nconfig drift.",
"is_bot": false,
"headline": "feat: OpenClaw pure-memory migration + v2026.4.11 packaging fix (v0.1…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-13T13:42:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0a9ae8c57aeebf8e079bec23086554f65c12f92b",
"body": "\"Context engine\" has crystallized in the ecosystem as in-session\ntranscript management (Hermes ContextEngine ABC, Volt/LCM DAG).\nClawMem is a cross-session memory layer; the old framing was both\ncategorically wrong and inconsistent with the README's own description\nof the Hermes integration as a Mem\n[…]\nne slot registration as historical, with a forward\n reference to dual-kind (memory + context-engine) migration\n- package.json description: sync the reframe and add Hermes to the\n listed integrations",
"is_bot": false,
"headline": "docs: reframe ClawMem as a memory layer (not a context engine)",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-13T06:17:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cd594f9da88204edbd74bb1d15270ddeb6ebe096",
"body": "…v0.9.0)\n\nTwo context-surfacing upgrades. §11.1 adds a `<vault-facts>` SPO-triple\ninjection block inside `<vault-context>` so the model receives structured\n\"what is currently true about the entities in this prompt\" alongside the\nexisting `<facts>` (surfaced documents) and `<relationships>` (memory-g\n[…]\ntegration.test.ts:\n 3 tests (zero-match fail-open byte-equality × 2 variants, matching\n topic observably changes output vs no-topic baseline).\n\nPublic test suite: 1025 → 1105 pass, zero regressions.",
"is_bot": false,
"headline": "feat: <vault-facts> KG injection + session-scoped focus topic boost (…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-13T04:02:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f1272e2bde5c3a52767a4e06343dad23b2a23870",
"body": "Fixes a nine-bug cluster in the decision-extractor → observer →\nentity-resolution → triple-storage pipeline that left `entity_triples`\nstuck at zero rows on production vaults regardless of activity, causing\n`kg_query` to return empty for every entity and silently hollowing out\nWHY / ENTITY graph tra\n[…]\no schema migration, no hook reinstall. Optional\ncleanup of dead pre-v0.8.5 rows documented in docs/troubleshooting.md\nand docs/guides/upgrading.md. See RELEASE_NOTES.md for the full\nper-fix changelog.",
"is_bot": false,
"headline": "fix: SPO triple extraction bug cluster — KG populates now (v0.8.5)",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-13T00:08:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "535baa9ae04d730e95a394ccbd172d37f58c5b1b",
"body": "Replace all ./bin/clawmem references with clawmem across docs\n(quickstart, setup-hooks, setup-mcp, cli reference, CLAUDE.md,\nSKILL.md, README.md). Users install via npm, not source checkout.\n\nSync AGENTS.md with CLAUDE.md (was missing Active Memory coexistence\nnotes and v2026.4.10 recommendation from the earlier doc update).",
"is_bot": false,
"headline": "docs: normalize CLI paths and sync AGENTS.md",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-11T14:51:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06712b6cc7547e78bf21ac29be020f3dde158df5",
"body": "clawmem setup openclaw now auto-creates the symlink at\n~/.openclaw/extensions/clawmem instead of only printing manual steps.\nHandles stale symlinks, existing directories, and file conflicts.\n--remove actually uninstalls. Fixes #5.\n\nPlugin manifest renamed from plugin.json to openclaw.plugin.json so\n\n[…]\nfor the contextEngine slot\nnormalization bug (openclaw/openclaw#64192), troubleshooting entry,\nand Active Memory coexistence documentation.\n\nCodex review: session 019d72d5, turns 25-27, ~4.32M tokens.",
"is_bot": false,
"headline": "fix: auto-install OpenClaw plugin + manifest rename (v0.8.4)",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-11T14:26:26Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8a862c9270de72fa8482ffab3d131305cd255407",
"body": "…ig fix\n\nClawMem and OpenClaw's new Active Memory plugin (v2026.4.10) are fully\ncompatible — different plugin kinds, different injection targets, different\nmemory backends. Added coexistence section to the OpenClaw plugin guide\nand notes to README, CLAUDE.md, and SKILL.md.\n\nAlso documents the contextEngine slot normalization fix (#64192) that\nwas silently dropping plugins.slots.contextEngine during config processing.",
"is_bot": false,
"headline": "docs: document Active Memory coexistence and OpenClaw v2026.4.10 conf…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-11T07:19:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf3b68f820f1c41555edf3c143db2868018f3619",
"body": "…ure (v0.8.3)\n\nv0.8.3 bundles two small quality fixes with a major documentation\nrestructure. Patch release — no schema changes, no migration required,\nno new env vars, no dependency changes.\n\n**Content-type-aware entity cap (§1.5)**\n\nA-MEM entity extraction used a flat `.slice(0, 10)` cap that sile\n[…]\n regressions, zero failures.\n\nNo breaking changes. No new env vars. No schema migration. Existing\ncallers that don't pass `contentType` get the default cap of 10,\nmatching pre-v0.8.3 behavior exactly.",
"is_bot": false,
"headline": "feat: content-type-aware entity cap + self-loop guard + docs restruct…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-10T03:57:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c5c20fc1d297e439c49677866b27757cfa893d4c",
"body": "…her cleanup note\n\nThree follow-up doc edits to the v0.8.2 release. No code changes.\n\n1. New \"Background maintenance workers (v0.8.2)\" section in\n docs/guides/systemd-services.md — the canonical operational reference\n for enabling, tuning, and monitoring the v0.8.2 dual-host workers via\n the e\n[…]\nked to the new systemd-services.md section so the upgrade\n path stays focused on \"did the workers start?\" while the operational\n detail (tuning, monitoring, rollback) lives in one canonical place.",
"is_bot": false,
"headline": "docs: operator guide for v0.8.2 background workers + skill-vault watc…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-10T01:11:51Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a6c346c8525b1229c7dcd77c887434f17815b7d3",
"body": "…se (v0.8.2)\n\nPure code release — no schema changes, no new dependencies, no new env vars.\nOperational behavior change only: the long-lived `clawmem watch` process now\nhosts the consolidation and heavy maintenance lane workers in addition to\n`cmdMcp`, and the light lane gained the same DB-backed `wo\n[…]\n5: 9 lease unit + 5 fast subprocess + 1 slow subprocess).\n\nCodex session: 019d72d5-adc8-7003-ba6a-9ef91786b1a0 (3 review turns,\n~3.59M cumulative tokens), closed with verbatim \"No remaining findings.\"",
"is_bot": false,
"headline": "feat: dual-host worker architecture with cross-process light-lane lea…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-10T01:01:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "102bda177399cb73d9a8b53f62bf2fc297ff8917",
"body": "Covers the v0.7.0 → v0.8.1 upgrade path in one place, closing the gap\nbetween the generic README \"Upgrading\" section and the historical\nMIGRATION_GUIDE.md (which documents the original beads/MAGMA/A-MEM\nintegration and predates v0.7.0).\n\nThe new guide documents:\n- Quick path: git pull + restart long\n[…]\nion to the new guide. No other README content touched.\n\nMIGRATION_GUIDE.md left alone: the content is version-specific to the\noriginal graph integration and does not apply to the v0.7.x → v0.8.x\njump.",
"is_bot": false,
"headline": "docs: add docs/guides/upgrading.md — version-specific upgrade guide",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-09T23:39:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a85e86d69145aef6ed44f92b392d4284ee2630f9",
"body": "Extends the `context-surfacing` hook to build its retrieval query from\nthe current prompt plus up to two recent same-session prior prompts, so\na short follow-up turn (\"do the same for X\", \"explain that rationale\")\ncan still inherit the vocabulary of earlier turns. The raw prompt is\npersisted in a ne\n[…]\nor-query lookback (v0.8.1)\" section covering schema\n migration, privacy split, current-first truncation, SQL-level\n self-match guard, and the per-retrieval-stage table of which\n query is used where",
"is_bot": false,
"headline": "feat: multi-turn prior-query lookback in context-surfacing (v0.8.1)",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-09T22:50:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1a8c84490c1c4f593ad6fbad430c21f46e955811",
"body": "Adds a second consolidation worker — the \"heavy maintenance lane\" — that\nruns on a longer interval than the existing 5-minute light lane, only\nduring configured quiet windows, with DB-backed exclusivity via\nworker leases and stale-first batching. Off by default behind\n`CLAWMEM_HEAVY_LANE=true`. The \n[…]\nst\n ordering across decisions, two consecutive ticks with clean lease\n teardown, null-LLM completion with null_call_count > 0)\n\nPublic repo test count: 936 pass / 0 fail (baseline 880/0, delta +56).",
"is_bot": false,
"headline": "feat: quiet-window heavy maintenance lane with worker leases (v0.8.0)",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-09T22:09:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2fb1b04d9e5740a7c13318b24ca3d74489f11583",
"body": "Adds an opt-in `clawmem mine <dir> --synthesize` post-import LLM fact\nextraction pass that walks the freshly indexed conversation documents\nand turns them into first-class searchable structured memory — decisions,\npreferences, milestones, problems, and cross-fact relations — alongside\nthe raw exchan\n[…]\ncs/reference/cli.md: new CLI usage examples and a\n `--synthesize` subsection under Conversation Import with\n a pointer to architecture.md.\n\n## Test count\n\n817/0 (v0.7.1) → 880/0 (v0.7.2). +63 tests.",
"is_bot": false,
"headline": "feat: post-import conversation synthesis pipeline (v0.7.2)",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-09T21:11:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "62e26ae435efde8cea7eb3a227990f1135f7efee",
"body": "Rewrites the assemble()-vs-before_prompt_build paragraph to document the\narchitectural reason for the split: assemble().systemPromptAddition and\nbefore_prompt_build's prependContext prepend to different prompt positions\n(system vs user) with different model semantics, and systemPromptAddition\ncan be clobbered by other plugins returning systemPrompt from hooks. The\nhybrid approach is correct by design, not a migration that never happened.",
"is_bot": false,
"headline": "docs: clarify why openclaw retrieval stays in before_prompt_build hook",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-09T20:01:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e1279a77675e0e314a28f9538bccf51035ca394c",
"body": "…nti-contamination synthesis, context framing (v0.7.1)\n\nFive independent safety gates around consolidation and context-surfacing, extracted from\nThoth's dream_cycle patterns and adapted to ClawMem's Phase 2/3 consolidation worker and\nUserPromptSubmit hook. Every extraction prevents a specific class \n[…]\ntion\nas the canonical deep dive.\n\nNew env vars: CLAWMEM_MERGE_SCORE_NORMAL, CLAWMEM_MERGE_SCORE_STRICT,\nCLAWMEM_MERGE_GUARD_DRY_RUN, CLAWMEM_CONTRADICTION_POLICY,\nCLAWMEM_CONTRADICTION_MIN_CONFIDENCE.",
"is_bot": false,
"headline": "feat: safety release — name-aware merge safety, contradiction gate, a…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-09T19:56:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "22a316516b705e93552d857ab3f53d8145a1d676",
"body": "…(v0.7.0)\n\nExtracts recall tracking patterns from OpenClaw's dreaming memory consolidation\nsystem. Tracks which documents are surfaced by retrieval, which queries surfaced\nthem, and whether the assistant cited them — per-turn, not per-session.\n\nSchema: recall_events (append-only event log), recall_s\n[…]\nsnooze candidates (high noise ratio), scoped to\n active docs with collection/path in output\n\nNew files: src/recall-buffer.ts, src/recall-attribution.ts\nTests: 36 recall tracking tests, 659 total pass",
"is_bot": false,
"headline": "feat: recall tracking with per-turn attribution, cross-vault support …",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-08T10:58:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2d6c76421bc57deebd5d4a08097532ebdbac88bc",
"body": "…, LLM remote fallback (v0.6.0)\n\nDeductive observation synthesis: consolidation worker Phase 3 combines related recent\nobservations (decision/preference/milestone/problem, last 7 days) into first-class\ncontent_type='deductive' documents with source_doc_ids provenance and supporting edges\nin memory_r\n[…]\nnot. Concurrent race guard via\npre-fetch cooldown re-check.\n\nHoncho deep analysis informed deductive synthesis and surprisal patterns. GPT 5.4 Codex\nreviewed (4 turns, 5.2M tokens). 623 tests passing.",
"is_bot": false,
"headline": "feat: deductive observations, surprisal scoring, embed-state tracking…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-08T07:51:21Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c7de631220c6aa0a76d3a43b2c817e43e32942f1",
"body": "\"silently falls back\" → describes cooldown mechanism, transport vs HTTP\nerror distinction, and that fallback is no longer silent.",
"is_bot": false,
"headline": "docs: update README fallback description for cooldown-based behavior",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-08T05:59:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca52896ea96acc21864c8d664342fa5d53ca3350",
"body": "…bootstrap synthesis (v0.5.1)\n\nSession-bootstrap synthesis: getCurrentFocus() replaces getRecentDecisions() — surfaces\ndecisions, preferences, and active problems ranked by pinned + recency + access count.\n\nTemporal SPO knowledge graph: entity_triples table with valid_from/valid_to. Decision-extract\n[…]\ndo not. CLAWMEM_NO_LOCAL_MODELS=true prevents fallback. Concurrent race guard via pre-fetch\ncooldown re-check.\n\n31 MCP tools (was 28). 608 tests passing. GPT 5.4 Codex reviewed (5 turns, 3.5M tokens).",
"is_bot": false,
"headline": "feat: SPO knowledge graph, agent diary, LLM remote fallback, session-…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-08T05:58:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "133d6ef26069643087a3ae0f5d03f9d68bcc2f97",
"body": null,
"is_bot": false,
"headline": "docs: add clawmem mine anti-pattern to SKILL.md",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-08T04:07:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e66981b2fdef30a4ccf471add2e1fe9727d82cf2",
"body": null,
"is_bot": false,
"headline": "docs: add clawmem mine to anti-patterns (not for autonomous use)",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-08T04:07:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a51c2722d92deeb778e19c1d153f2d29e77286d",
"body": "New features:\n- `clawmem mine <dir>` imports conversation exports from Claude Code,\n ChatGPT, Claude.ai, Slack, and plain text into the indexing pipeline\n- New `conversation` content type (45d half-life, 0.55 baseline)\n- Three new first-class observation types: `preference` (decay-exempt,\n Infinit\n[…]\n chat formats\n\nGPT 5.4 reviewed (3 turns): 6 issues found and fixed (consecutive\nassistant loss, unawaited writes, permissive plain-text, Slack\nmulti-party, preference decay exemption, YAML escaping).",
"is_bot": false,
"headline": "feat: conversation import + broadened observation taxonomy (v0.5.0)",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-08T04:03:51Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "99aceed60464fcab23fa01f17c25d1a2bb981924",
"body": null,
"is_bot": false,
"headline": "docs: add frontmatter coercion fix to SKILL.md troubleshooting",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-04T19:30:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e37e7eb90e1b25d1088ed0e66893e50dd14df0a3",
"body": "…ing crash\n\ngray-matter auto-coerces YAML values (title: 2023-09-27 → Date object,\ntitle: true → boolean). Bun's SQLite driver rejects these as bind params,\ncrashing `clawmem update` on Obsidian vaults with bare dates/booleans.\n\nFix: runtime str() helper in parseDocument() checks all frontmatter fields.\nDefense-in-depth safeTitle guards in insertDocument/updateDocument/reactivateDocument.\n\nCloses #3",
"is_bot": false,
"headline": "fix: sanitize gray-matter frontmatter coercion to prevent SQLite bind…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-04T19:12:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "11af463a133ac3ea9490337c9d72ab7aa6128c0b",
"body": null,
"is_bot": false,
"headline": "chore: bump version to 0.4.1",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-04T18:49:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad95eca3db855e9415bc698544edf4c2fdcc5bb6",
"body": "- README: add Hermes to title, intro, quick start, Integration section\n with install/configure/verify, Hermes-specific bootstrap, Multi-Framework\n Operation section (replaces Dual-Mode)\n- docs/guides/hermes-plugin.md: full guide matching openclaw-plugin.md\n (architecture, config, server modes, coexistence, lifecycle mapping)\n- SKILL.md: Hermes integration section + integration note\n- CLAUDE.md/AGENTS.md: integration note",
"is_bot": false,
"headline": "docs: comprehensive Hermes Agent integration documentation",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-04T18:49:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "24f981c35174a296ee7ceea4089e407fe6feb64d",
"body": null,
"is_bot": false,
"headline": "chore: bump version to 0.4.0",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-04T18:42:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfa375c15fe3ca47bd40e2915103ecb8052d1c15",
"body": "Python plugin implementing Hermes's MemoryProvider ABC for ClawMem\nintegration. Symlink into hermes-agent/plugins/memory/clawmem/.\n\n- Shell-out hooks: session-bootstrap, context-surfacing, extraction\n- REST API tools: retrieve, get, session_log, timeline, similar\n- Plugin-managed transcript JSONL fo\n[…]\nLAWMEM_SERVE_MODE\n\nReviewed by GPT 5.4 High reasoning (5 turns, 1.95M tokens).\nTested against Hermes MemoryManager: discovery, registration,\nbootstrap, transcript sync, extraction hooks, tool routing.",
"is_bot": false,
"headline": "feat: add Hermes Agent MemoryProvider plugin",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-04T18:42:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "59ecd50811e8232b800a1099aafd59a9e7e642f9",
"body": null,
"is_bot": false,
"headline": "chore: bump version to 0.3.4",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-02T14:30:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dfd207a351c1a262cc2d5ca8776d1c3978a6093a",
"body": null,
"is_bot": false,
"headline": "docs: restore inline comments for reflect/consolidate in CLAUDE.md",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-02T14:10:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdbcb3d3a6886c04fe9acce8b6356b96f779883e",
"body": null,
"is_bot": false,
"headline": "docs: restore inline comments for reflect/consolidate in SKILL.md",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-02T14:09:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "93161fbb1ab3f962823c935dde4888c265786273",
"body": null,
"is_bot": false,
"headline": "docs: add clawmem list to README, CLAUDE.md, SKILL.md CLI references",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-02T14:09:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c7d741ccb13c4edf888df8b5ef6cb14672acc1d",
"body": null,
"is_bot": false,
"headline": "chore: bump version to 0.3.3",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-02T13:59:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3788316c774257f29e27987e8894077a81800424",
"body": "GPT 5.4 review nits: untitled docs showed untruncated paths,\n--limit alias was undiscoverable in help text.",
"is_bot": false,
"headline": "fix: truncate path fallback in list output, document --limit alias",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-02T13:58:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab5094c666b5b07bb675a634e004062545b401a8",
"body": "Shows recent documents from the vault with metadata (docid, date,\ntype, collection, title). Supports --json for machine output,\n-n/--limit for count, -c/--collection to filter.\n\nCloses #1",
"is_bot": false,
"headline": "feat: add `clawmem list` CLI command to browse recent documents",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-02T13:43:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6be7279a68587307bbf7f43f8f8694846817ad5a",
"body": null,
"is_bot": false,
"headline": "chore: bump version to 0.3.2",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-02T13:20:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db01cc9c3a94ea850f0aa01a310caa7ffc7c3455",
"body": "…meout fix\n\nReverts condensed entries back to original detailed format.\nAppends shell timeout wrapper cause as new bullet under existing entry.",
"is_bot": false,
"headline": "docs: restore original troubleshooting detail, append v0.3.1 shell ti…",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-02T13:18:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c96efbf83d81ec086c2570e0c04303cb1ec3d52",
"body": "- UserPromptSubmit error: add shell timeout as primary cause (v0.3.1)\n- Fix example code: use native timeout property, not shell wrapper\n- Update Stop hook default timeout: 10s → 30s (v0.3.1)\n- Keep all existing entries (SQLite contention, WAL bloat, busy_timeout)",
"is_bot": false,
"headline": "docs: consolidate hook error troubleshooting, fix stale timeout refs",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-02T13:16:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "85d2af1b42d71e697e725d707dc49c33b776c979",
"body": "Shell `timeout` kills processes with exit 124 (no stderr), causing\n\"Stop hook error: Failed with non-blocking status code\" in Claude Code.\n\n- setup hooks: generate native `timeout` property instead of shell wrapper\n- Stop hooks: increase timeout from 10s to 30s for LLM inference\n- Docs: update setup-hooks.md examples, add troubleshooting entry\n- All hooks: remove shell `timeout` from command strings",
"is_bot": false,
"headline": "fix: use native hook timeout instead of shell timeout wrapper",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-04-02T12:43:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6dac8843fa63cfee27ab6e192dd79d6a0c7d34e",
"body": "Clarify that bootstrap context is cached from engine.bootstrap() and\nconsumed on first turn, not re-executed in the hook.",
"is_bot": false,
"headline": "docs: fix before_prompt_build description in openclaw plugin guide",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-03-31T09:46:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d66506f13cbd93450915a570a17450e83472ad2a",
"body": "OpenClaw v2026.3.28+ no longer triggers legacy compaction fallback for\nengines with ownsCompaction=false. compact() now delegates to runtime\nvia delegateCompactionToRuntime() from openclaw/plugin-sdk/core.\n\n- compact(): precompact-extract then delegate to runtime (P0 fix)\n- bootstrap(): cache contex\n[…]\nsage\n- Add clearSession() for per-session cleanup\n- Remove unused bootstrappedSessions/isBootstrapped()\n- Update tests, docs, bump to v0.3.0\n\nReviewed by GPT 5.4 High reasoning (3 turns, 797K tokens).",
"is_bot": false,
"headline": "fix(openclaw): delegate compaction to runtime, fix bootstrap duplication",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-03-31T09:41:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "af62042b449baeed81f146bd9219c58ad45919a1",
"body": "Custom Stop hooks that exit 0 with no stdout cause Claude Code to report\n\"Failed with non-blocking status code: No stderr output\". Document the\nroot cause and fix pattern in troubleshooting.md and setup-hooks.md.",
"is_bot": false,
"headline": "v0.2.9: document Stop hook JSON output requirement",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-03-31T08:44:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b61e5217f4489412b370f9032e5c494a6a3dd040",
"body": "readTranscript() now uses backward chunked reader for files >10MB instead\nof loading entire file. Reads 2MB chunks backwards until enough lines\nfound. Raw Buffer accumulation with single UTF-8 decode prevents\nmulti-byte char corruption at chunk boundaries.\n\n- Backward chunked reader: up to 5×2MB chunks with early exit on target line count\n- Single fd open with try/finally (no leak)\n- validateTranscriptPath() limit raised from 50MB to 1GB\n- Doc comment updated to match",
"is_bot": false,
"headline": "v0.2.8: fix Stop hooks on large transcripts",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-03-30T14:24:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83172d46b3aa2a1efc6c616ad2d5dca7469b0d3c",
"body": null,
"is_bot": false,
"headline": "v0.2.7",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-03-28T15:50:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c946b9cf9cb8bcef0ec4801c0d3e3119651a4281",
"body": "The title-token overlap query used HAVING without GROUP BY, causing\n\"HAVING clause on a non-aggregate query\" when BM25 returned no results\nand the cascade fell through to step 3. Fix: wrap in subquery and\nfilter with WHERE on the computed match_count column.",
"is_bot": false,
"headline": "Fix HAVING clause error in lifecycle search title-token fallback",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-03-28T15:49:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a1a8ad018554350c119fd135af77d8da52acb164",
"body": "memory_pin, memory_snooze, memory_forget now use a 4-stage search\ncascade instead of BM25-only: exact path match → BM25 → title-token\noverlap → vector similarity. Prevents \"No matching memory found\" when\nthe document exists but BM25 fails on multi-term queries.\n\n- findMemoryCandidates(): async casca\n[…]\n selectLifecycleTarget(): confidence gate — ambiguous matches return\n candidates for memory_forget (destructive), top hit for pin/snooze\n- Update docs/reference/mcp-tools.md with search behavior note",
"is_bot": false,
"headline": "v0.2.6: resilient lifecycle tool search with cascade fallback",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-03-25T11:59:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "239e9cecd2d61ca837f649b04f1bed2909fc7b52",
"body": "Hook's SQLite busy_timeout was 500ms while watcher/MCP use 5000ms.\nDuring A-MEM enrichment or heavy indexing, watcher write locks exceed\n500ms, causing the hook's DB open to fail with SQLITE_BUSY — surfaced\nas \"UserPromptSubmit hook error\" in Claude Code.\n\n- Raise hook busy_timeout from 500ms to 5000ms (matches MCP server)\n- Hook still completes within its 8s outer timeout\n- Append fix context to troubleshooting docs (preserving existing entries)",
"is_bot": false,
"headline": "v0.2.5: fix hook SQLITE_BUSY from tight busy_timeout",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-03-25T10:47:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a05fad4ede6e74a87e43c15209d17a77bc496096",
"body": "Watcher used fs.watch(recursive: true) which registered inotify watches on\nevery subdirectory including excluded dirs (gits/, node_modules/, .git/).\nBroad collection paths like ~/Projects caused 200K+ FDs, hanging WSL.\n\n- Walk directory trees at startup, skip excluded subtrees (shared EXCLUDED_DIRS)\n[…]\n(non-recursive)\n- Safety cap: 500 dirs per collection path with warning log\n- Export EXCLUDED_DIRS from indexer.ts for watcher to share\n- Document in troubleshooting.md, CLAUDE.md, AGENTS.md, SKILL.md",
"is_bot": false,
"headline": "v0.2.4: fix watcher inotify FD exhaustion on large directory trees",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-03-24T14:33:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d13f1db3b5011f2b1b76182d83c28f19cda103cf",
"body": "Entity resolution pipeline rewritten with quality filters, type-agnostic\ncanonical resolution, and IDF-based entity edge scoring.\n\n- isLowQualityEntity() filter: rejects title-as-entity (Levenshtein >0.85),\n names >60 chars, template placeholders, trailing colons, invalid locations\n- Type-agnostic \n[…]\ntity.ts and intent.ts function signatures\n- Fix all test TS compilation errors (MockLLM compat, HookInput, type updates)\n- New docs/internals/entity-resolution.md with bucket system and model guidance",
"is_bot": false,
"headline": "v0.2.3: entity extraction quality overhaul",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-03-24T05:20:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "31ee1d05a071dc50a60ac0a341b7375a46c7df1b",
"body": "Issue tracking is local-only work — doesn't belong in committed agent instructions.",
"is_bot": false,
"headline": "Remove operational issue tracking section from agent docs",
"author_name": "yoloshii",
"author_login": "yoloshii",
"committed_at": "2026-03-23T20:59:20Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 69,
"commits_last_year": 286,
"latest_release_at": "2026-07-19T15:51:27Z",
"latest_release_tag": "v0.28.0",
"releases_from_tags": true,
"days_since_last_push": 5,
"active_weeks_last_year": 18,
"days_since_latest_release": 5,
"mean_days_between_releases": 1.4
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 100,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "clawmem",
"exists": true,
"license": "MIT",
"keywords": [
"mcp-server",
"model-context-protocol",
"claude-code",
"ai-agent-memory",
"retrieval-augmented-generation",
"rag",
"vector-search",
"sqlite",
"bun",
"llama-cpp",
"local-first",
"context-engine",
"openclaw",
"mcp-tools",
"hybrid-search"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/clawmem",
"is_deprecated": false,
"latest_version": "0.28.0",
"repository_url": "https://github.com/yoloshii/ClawMem",
"versions_count": 68,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 3556,
"first_published_at": "2026-03-15T11:39:45.209000Z",
"latest_published_at": "2026-07-19T16:20:44.724000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
}
]
},
"popularity": {
"forks": 32,
"stars": 194,
"watchers": 3,
"fork_history": {
"days": [
{
"date": "2026-03-15",
"count": 1
},
{
"date": "2026-03-17",
"count": 1
},
{
"date": "2026-03-18",
"count": 1
},
{
"date": "2026-03-22",
"count": 1
},
{
"date": "2026-03-28",
"count": 1
},
{
"date": "2026-03-30",
"count": 1
},
{
"date": "2026-03-31",
"count": 1
},
{
"date": "2026-04-02",
"count": 2
},
{
"date": "2026-04-03",
"count": 1
},
{
"date": "2026-04-08",
"count": 1
},
{
"date": "2026-04-11",
"count": 2
},
{
"date": "2026-04-12",
"count": 1
},
{
"date": "2026-04-13",
"count": 1
},
{
"date": "2026-04-14",
"count": 1
},
{
"date": "2026-04-16",
"count": 1
},
{
"date": "2026-04-18",
"count": 1
},
{
"date": "2026-04-21",
"count": 1
},
{
"date": "2026-04-28",
"count": 1
},
{
"date": "2026-04-29",
"count": 2
},
{
"date": "2026-05-07",
"count": 1
},
{
"date": "2026-05-13",
"count": 1
},
{
"date": "2026-06-11",
"count": 1
},
{
"date": "2026-06-18",
"count": 2
},
{
"date": "2026-06-21",
"count": 1
},
{
"date": "2026-07-02",
"count": 2
},
{
"date": "2026-07-09",
"count": 2
}
],
"complete": true,
"collected": 32,
"total_forks": 32
},
"star_history": null,
"open_issues_and_prs": 3
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": true,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 243047,
"source_files_sampled": 180,
"oversized_source_files": 3,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 22784
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [
{
"name": "@hono/node-server",
"direct": false,
"version": "1.19.15",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.9,
"advisory_ids": [
"GHSA-frvp-7c67-39w9"
],
"fixed_version": "2.0.5",
"advisory_count": 1,
"oldest_advisory_days": 3
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"moderate": 1
},
"advisory_count": 1,
"affected_count": 1,
"assessed_count": 234,
"malicious_count": 0,
"assessed_package": "npm:clawmem@0.28.0",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "@modelcontextprotocol/sdk",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.25.1"
},
{
"name": "gray-matter",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^4.0.3"
},
{
"name": "node-llama-cpp",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^3.14.5"
},
{
"name": "sqlite-vec",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^0.1.7-alpha.2"
},
{
"name": "yaml",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^2.8.2"
},
{
"name": "zod",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^4.2.1"
}
],
"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": 2,
"merged_prs": 5,
"open_issues": 1,
"closed_ratio": 0.857,
"closed_issues": 6,
"closed_unmerged_prs": 4
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "yoloshii",
"commits": 278,
"avatar_url": "https://avatars.githubusercontent.com/u/26873046?v=4"
},
{
"type": "User",
"login": "cymkd",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/737041?v=4"
},
{
"type": "User",
"login": "DrJsPBs",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/190931748?v=4"
},
{
"type": "User",
"login": "inire",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/12611289?v=4"
},
{
"type": "User",
"login": "nova-rey",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/227210143?v=4"
},
{
"type": "User",
"login": "Oliverbot26",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/287125334?v=4"
}
],
"contributors_sampled": 6,
"top_contributor_share": 0.972
},
"quality_signals": {
"has_ci": false,
"has_tests": true,
"ci_workflows": [],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"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": null,
"reason": "no pull request found",
"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/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 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": 10,
"reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"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": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 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": "91 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "41fd12153e23491921673cfe11aab017b8151078",
"ran_at": "2026-07-25T14:44:24Z",
"aggregate_score": 3.1,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-19T15:52:32Z",
"oldest_open_prs": [
{
"number": 17,
"created_at": "2026-06-18T03:10:41Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 18,
"created_at": "2026-06-18T03:11:38Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-06-20T11:55:55Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 5,
"created_at": "2026-04-11T06:21:40Z",
"last_comment_at": "2026-04-23T08:45:47Z",
"last_comment_author": "konradre"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/yoloshii/ClawMem",
"host": "github.com",
"name": "ClawMem",
"owner": "yoloshii"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 59,
"inputs": {
"security": 42,
"vitality": 81,
"community": 67,
"governance": 51,
"engineering": 52
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 81,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 76,
"inputs": {
"commits_last_year": 286,
"human_commit_share": 1,
"days_since_last_push": 5,
"active_weeks_last_year": 18
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "18/52 weeks with commits",
"points": 12.5,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 18
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "286 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 286
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"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": 88,
"inputs": {
"releases_count": 69,
"latest_release_tag": "v0.28.0",
"releases_from_tags": true,
"days_since_latest_release": 5,
"mean_days_between_releases": 1.4
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "69 version tags (no GitHub releases)",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "version_tags_no_releases",
"params": {
"count": 69
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~1.4 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 1.4
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 67,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "moderate",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 51,
"inputs": {
"forks": 32,
"stars": 194,
"watchers": 3,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "194 stars",
"points": 37.1,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 194
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "32 forks",
"points": 12.4,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 32
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "3 watchers",
"points": 1.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 3
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 59,
"inputs": {
"packages": [
"clawmem"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 3556
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "3,556 downloads/month across npm",
"points": 47.3,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 3556,
"ecosystems": "npm"
}
}
],
"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": 51,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 18,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 6,
"top_contributor_share": 0.972
},
"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 97% of commits",
"points": 0.6,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 97
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "6 contributors",
"points": 8.1,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 6
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 61,
"inputs": {
"merged_prs": 5,
"open_issues": 1,
"closed_issues": 6,
"issue_closed_ratio": 0.857,
"closed_unmerged_prs": 4
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "86% of issues closed",
"points": 40.1,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 86
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "5/9 decided PRs merged",
"points": 21.2,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 5,
"decided": 9
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 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": 42,
"inputs": {
"followers": 0,
"owner_type": "User",
"is_verified": null,
"owner_login": "yoloshii",
"public_repos": 34,
"account_age_days": 3400
},
"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": "0 followers of yoloshii",
"points": 0,
"status": "missed",
"details": [
{
"code": "owner_followers",
"params": {
"count": 0,
"login": "yoloshii"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "34 public repos, account ~9 yr old",
"points": 23.2,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 34
}
},
{
"code": "account_age_years",
"params": {
"years": 9
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"clawmem"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 5
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 5 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 5
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "68 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 68
}
}
],
"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": "moderate",
"name": "Engineering Quality",
"value": 52,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "at_risk",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 30,
"inputs": {
"has_ci": false,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"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": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"topics": [
"ai-agent-memory",
"ai-agents",
"bun",
"claude-code",
"embeddings",
"hybrid-search",
"llama-cpp",
"local-first",
"mcp-server",
"mcp-tools",
"model-context-protocol",
"on-device-ai",
"rag",
"retrieval-augmented-generation",
"sqlite",
"typescript",
"vector-search",
"memory",
"plugin",
"hermes"
],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "20 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 20
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 42,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests",
"dangerous_workflow",
"packaging",
"signed_releases",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 31,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 13,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 5,
"scorecard_aggregate": 3.1
},
"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": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "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": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"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": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "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": "91 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Matched the npm:clawmem@0.28.0 runtime dependency closure — what installing the published package pulls in — 234 packages. Reachability is not analyzed.",
"notes": [
{
"code": "advisories_scope_published",
"params": {
"package": "npm:clawmem@0.28.0",
"assessed": 234
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 88,
"inputs": {
"source": "osv",
"advisories": 1,
"affected_packages": 1,
"assessed_packages": 234,
"unassessed_packages": 0,
"affected_by_severity": "moderate 1",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "1 affected: @hono/node-server 1.19.15 (moderate 5.9)",
"points": 13.2,
"status": "partial",
"details": [
{
"code": "advisories_affected",
"params": {
"count": 1,
"packages": "@hono/node-server 1.19.15 (moderate 5.9)"
}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory has been public longer than 90 days",
"points": 40,
"status": "met",
"details": [
{
"code": "advisories_none_stale",
"params": {
"days": 90
}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 234,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
}
],
"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": 61,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.95,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 22784
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md, CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md, CLAUDE.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "95 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 95,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 45,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": true,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [
"tsconfig.json"
],
"agent_commit_share": 0.01,
"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": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "1 of the last 100 commits agent-authored or agent-credited",
"points": 2,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 1,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 99,
"inputs": {
"primary_language": "TypeScript",
"largest_source_bytes": 243047,
"source_files_sampled": 180,
"oversized_source_files": 3
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "TypeScript (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "TypeScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "3/180 source files over 60KB",
"points": 54.1,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 180,
"oversized": 3
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "critical",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"example_dirs": [],
"has_mcp_signal": true,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 20,
"status": "met",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-25T14:44:30.870244Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/y/yoloshii/ClawMem.svg",
"full_name": "yoloshii/ClawMem",
"license_state": "standard",
"license_spdx": "MIT"
}