原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [
"claude-code",
"fts5",
"hooks",
"mcp",
"memory",
"persistence",
"sqlite",
"agent-memory",
"ai-coding-assistant",
"ai-memory",
"anthropic",
"claude",
"claude-code-plugin",
"hybrid-search",
"llm-memory",
"long-term-memory",
"mcp-server",
"model-context-protocol",
"rag",
"semantic-search"
],
"is_fork": false,
"size_kb": 6527,
"has_wiki": false,
"homepage": null,
"languages": {
"Shell": 27892,
"JavaScript": 4967644
},
"pushed_at": "2026-07-24T08:43:32Z",
"created_at": "2026-02-08T07:10:37Z",
"owner_type": "User",
"updated_at": "2026-07-24T18:29:04Z",
"description": "Persistent long-term memory for Claude Code via MCP — captures coding decisions, bugfixes, and context across sessions. Hybrid FTS5 + TF-IDF search with episode batching. Single SQLite DB, no external services. Alternative to claude-mem with 600x lower cost.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "JavaScript",
"significant_languages": [
"JavaScript"
]
},
"owner": {
"blog": null,
"name": null,
"type": "User",
"login": "sdsrss",
"company": null,
"location": null,
"followers": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/230400260?v=4",
"created_at": "2025-09-04T15:33:31Z",
"is_verified": null,
"public_repos": 12,
"account_age_days": 333
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v3.59.1",
"kind": "patch",
"published_at": "2026-07-24T08:45:40Z"
},
{
"tag": "v3.59.0",
"kind": "minor",
"published_at": "2026-07-24T08:10:37Z"
},
{
"tag": "v3.58.2",
"kind": "patch",
"published_at": "2026-07-24T07:18:28Z"
},
{
"tag": "v3.58.1",
"kind": "patch",
"published_at": "2026-07-24T06:43:34Z"
},
{
"tag": "v3.58.0",
"kind": "minor",
"published_at": "2026-07-24T06:30:46Z"
},
{
"tag": "v3.57.0",
"kind": "minor",
"published_at": "2026-07-24T05:29:41Z"
},
{
"tag": "v3.56.1",
"kind": "patch",
"published_at": "2026-07-20T04:38:38Z"
},
{
"tag": "v3.56.0",
"kind": "minor",
"published_at": "2026-07-20T04:21:57Z"
},
{
"tag": "v3.55.0",
"kind": "minor",
"published_at": "2026-07-18T22:45:19Z"
},
{
"tag": "v3.54.0",
"kind": "minor",
"published_at": "2026-07-18T22:26:53Z"
},
{
"tag": "v3.53.0",
"kind": "minor",
"published_at": "2026-07-18T21:32:24Z"
},
{
"tag": "v3.52.0",
"kind": "minor",
"published_at": "2026-07-18T21:17:58Z"
},
{
"tag": "v3.51.0",
"kind": "minor",
"published_at": "2026-07-18T20:51:35Z"
},
{
"tag": "v3.50.0",
"kind": "minor",
"published_at": "2026-07-18T20:01:34Z"
},
{
"tag": "v3.49.0",
"kind": "minor",
"published_at": "2026-07-17T21:24:16Z"
},
{
"tag": "v3.48.0",
"kind": "minor",
"published_at": "2026-07-17T01:16:05Z"
},
{
"tag": "v3.47.0",
"kind": "minor",
"published_at": "2026-07-14T20:06:30Z"
},
{
"tag": "v3.46.0",
"kind": "minor",
"published_at": "2026-07-13T22:00:47Z"
},
{
"tag": "v3.45.0",
"kind": "minor",
"published_at": "2026-07-13T21:28:59Z"
},
{
"tag": "v3.44.0",
"kind": "minor",
"published_at": "2026-07-13T20:43:22Z"
},
{
"tag": "v3.43.0",
"kind": "minor",
"published_at": "2026-07-13T19:42:45Z"
},
{
"tag": "v3.42.0",
"kind": "minor",
"published_at": "2026-07-06T18:26:27Z"
},
{
"tag": "v3.41.0",
"kind": "minor",
"published_at": "2026-07-06T17:19:14Z"
},
{
"tag": "v3.40.0",
"kind": "minor",
"published_at": "2026-07-06T16:07:53Z"
},
{
"tag": "v3.39.2",
"kind": "patch",
"published_at": "2026-07-05T20:36:35Z"
},
{
"tag": "v3.39.1",
"kind": "patch",
"published_at": "2026-07-05T19:46:10Z"
},
{
"tag": "v3.39.0",
"kind": "minor",
"published_at": "2026-07-05T19:13:35Z"
},
{
"tag": "v3.38.4",
"kind": "patch",
"published_at": "2026-07-05T17:41:00Z"
},
{
"tag": "v3.38.3",
"kind": "patch",
"published_at": "2026-07-05T15:45:32Z"
},
{
"tag": "v3.38.2",
"kind": "patch",
"published_at": "2026-07-05T07:36:46Z"
},
{
"tag": "v3.38.1",
"kind": "patch",
"published_at": "2026-07-05T06:14:47Z"
},
{
"tag": "v3.38.0",
"kind": "minor",
"published_at": "2026-07-04T10:09:52Z"
},
{
"tag": "v3.37.0",
"kind": "minor",
"published_at": "2026-07-04T09:27:57Z"
},
{
"tag": "v3.36.0",
"kind": "minor",
"published_at": "2026-07-04T07:47:05Z"
},
{
"tag": "v3.35.2",
"kind": "patch",
"published_at": "2026-07-03T20:27:04Z"
},
{
"tag": "v3.35.1",
"kind": "patch",
"published_at": "2026-07-03T19:16:59Z"
},
{
"tag": "v3.35.0",
"kind": "minor",
"published_at": "2026-07-03T17:56:57Z"
},
{
"tag": "v3.34.0",
"kind": "minor",
"published_at": "2026-07-03T15:07:59Z"
},
{
"tag": "v3.33.1",
"kind": "patch",
"published_at": "2026-07-02T18:13:21Z"
},
{
"tag": "v3.33.0",
"kind": "minor",
"published_at": "2026-07-02T17:21:45Z"
},
{
"tag": "v3.32.0",
"kind": "minor",
"published_at": "2026-06-29T19:07:07Z"
},
{
"tag": "v3.31.0",
"kind": "minor",
"published_at": "2026-06-29T18:53:36Z"
},
{
"tag": "v3.30.0",
"kind": "minor",
"published_at": "2026-06-29T18:40:07Z"
},
{
"tag": "v3.29.0",
"kind": "minor",
"published_at": "2026-06-29T18:24:06Z"
},
{
"tag": "v3.28.3",
"kind": "patch",
"published_at": "2026-06-29T17:58:24Z"
},
{
"tag": "v3.28.2",
"kind": "patch",
"published_at": "2026-06-29T17:34:49Z"
},
{
"tag": "v3.28.1",
"kind": "patch",
"published_at": "2026-06-29T17:15:30Z"
},
{
"tag": "v3.28.0",
"kind": "minor",
"published_at": "2026-06-29T16:18:51Z"
},
{
"tag": "v3.27.0",
"kind": "minor",
"published_at": "2026-06-29T15:35:47Z"
},
{
"tag": "v3.26.0",
"kind": "minor",
"published_at": "2026-06-29T15:08:22Z"
},
{
"tag": "v3.25.0",
"kind": "minor",
"published_at": "2026-06-29T14:40:18Z"
},
{
"tag": "v3.24.0",
"kind": "minor",
"published_at": "2026-06-29T13:46:26Z"
},
{
"tag": "v3.23.0",
"kind": "minor",
"published_at": "2026-06-28T21:55:16Z"
},
{
"tag": "v3.22.0",
"kind": "minor",
"published_at": "2026-06-28T20:26:10Z"
},
{
"tag": "v3.21.0",
"kind": "minor",
"published_at": "2026-06-28T19:00:49Z"
},
{
"tag": "v3.20.0",
"kind": "minor",
"published_at": "2026-06-28T18:23:16Z"
},
{
"tag": "v3.19.0",
"kind": "minor",
"published_at": "2026-06-28T18:14:26Z"
},
{
"tag": "v3.18.0",
"kind": "minor",
"published_at": "2026-06-26T23:36:13Z"
},
{
"tag": "v3.17.0",
"kind": "minor",
"published_at": "2026-06-26T21:10:14Z"
},
{
"tag": "v3.16.3",
"kind": "patch",
"published_at": "2026-06-26T19:05:16Z"
},
{
"tag": "v3.16.2",
"kind": "patch",
"published_at": "2026-06-25T16:43:03Z"
},
{
"tag": "v3.16.1",
"kind": "patch",
"published_at": "2026-06-25T16:24:41Z"
},
{
"tag": "v3.16.0",
"kind": "minor",
"published_at": "2026-06-25T15:59:50Z"
},
{
"tag": "v3.15.0",
"kind": "minor",
"published_at": "2026-06-25T14:37:31Z"
},
{
"tag": "v3.14.0",
"kind": "minor",
"published_at": "2026-06-24T20:40:42Z"
},
{
"tag": "v3.13.0",
"kind": "minor",
"published_at": "2026-06-24T18:50:14Z"
},
{
"tag": "v3.12.1",
"kind": "patch",
"published_at": "2026-06-23T19:56:44Z"
},
{
"tag": "v3.12.0",
"kind": "minor",
"published_at": "2026-06-23T18:47:01Z"
},
{
"tag": "v3.11.0",
"kind": "minor",
"published_at": "2026-06-22T18:11:25Z"
},
{
"tag": "v3.10.0",
"kind": "minor",
"published_at": "2026-06-22T16:10:00Z"
},
{
"tag": "v3.9.1",
"kind": "patch",
"published_at": "2026-06-22T13:01:31Z"
},
{
"tag": "v3.9.0",
"kind": "minor",
"published_at": "2026-06-22T12:34:38Z"
},
{
"tag": "v3.8.0",
"kind": "minor",
"published_at": "2026-06-22T09:21:35Z"
},
{
"tag": "v3.7.1",
"kind": "patch",
"published_at": "2026-06-22T08:12:33Z"
},
{
"tag": "v3.7.0",
"kind": "minor",
"published_at": "2026-06-21T22:02:55Z"
},
{
"tag": "v3.6.0",
"kind": "minor",
"published_at": "2026-06-21T16:52:55Z"
},
{
"tag": "v3.5.0",
"kind": "minor",
"published_at": "2026-06-21T16:13:00Z"
},
{
"tag": "v3.4.0",
"kind": "minor",
"published_at": "2026-06-21T14:27:02Z"
},
{
"tag": "v3.3.1",
"kind": "patch",
"published_at": "2026-06-21T13:02:37Z"
},
{
"tag": "v3.3.0",
"kind": "minor",
"published_at": "2026-06-21T07:50:53Z"
},
{
"tag": "v3.2.0",
"kind": "minor",
"published_at": "2026-06-20T23:06:36Z"
},
{
"tag": "v3.1.2",
"kind": "patch",
"published_at": "2026-06-20T19:16:12Z"
},
{
"tag": "v3.1.1",
"kind": "patch",
"published_at": "2026-06-19T19:38:36Z"
},
{
"tag": "v3.1.0",
"kind": "minor",
"published_at": "2026-06-19T18:09:13Z"
},
{
"tag": "v3.0.1",
"kind": "patch",
"published_at": "2026-06-19T16:32:52Z"
},
{
"tag": "v3.0.0",
"kind": "major",
"published_at": "2026-06-19T16:02:39Z"
},
{
"tag": "v2.99.0",
"kind": "minor",
"published_at": "2026-06-12T22:05:08Z"
},
{
"tag": "v2.98.0",
"kind": "minor",
"published_at": "2026-06-12T20:01:34Z"
},
{
"tag": "v2.97.0",
"kind": "minor",
"published_at": "2026-06-09T18:17:54Z"
},
{
"tag": "v2.96.0",
"kind": "minor",
"published_at": "2026-06-09T16:13:08Z"
},
{
"tag": "v2.95.1",
"kind": "patch",
"published_at": "2026-06-09T15:44:00Z"
},
{
"tag": "v2.95.0",
"kind": "minor",
"published_at": "2026-06-09T15:31:05Z"
},
{
"tag": "v2.94.0",
"kind": "minor",
"published_at": "2026-06-08T18:02:59Z"
},
{
"tag": "v2.93.0",
"kind": "minor",
"published_at": "2026-06-08T17:43:12Z"
},
{
"tag": "v2.92.0",
"kind": "minor",
"published_at": "2026-06-04T18:28:08Z"
},
{
"tag": "v2.91.0",
"kind": "minor",
"published_at": "2026-06-04T17:13:47Z"
},
{
"tag": "v2.90.1",
"kind": "patch",
"published_at": "2026-06-03T19:06:14Z"
},
{
"tag": "v2.90.0",
"kind": "minor",
"published_at": "2026-06-03T18:27:52Z"
},
{
"tag": "v2.89.0",
"kind": "minor",
"published_at": "2026-06-02T23:53:48Z"
},
{
"tag": "v2.88.0",
"kind": "minor",
"published_at": "2026-06-02T22:41:48Z"
}
],
"recent_commits": [
{
"oid": "cf81df8d1b0ca9e24ccd4ad57449ddedf2bdd4af",
"body": "…-type selection\n\nTwo audit fixes: notLowSignalTitleClause gains a lesson escape so\nlesson-bearing observations with LOW_SIGNAL-prefixed titles ('npm ...')\nare retrievable again (write/read gate symmetry); memdir-audit selects\nkebab-case memory files via frontmatter metadata.type, legacy prefixes\nke\n[…]\nly\nbuilder. Tests 4029 -> 4040, eslint clean, denoise-ab NEUTRAL with\nprobes 27/27, fresh-context pre-ship review: SHIP (no P1/P2, P3s -> D#13).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.59.1 — read-side lesson escape + memdir-audit frontmatter…",
"author_name": "sds",
"author_login": "sdsrss",
"committed_at": "2026-07-24T08:43:22Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f36c278e8124c895b00c52942df2eebfdabbdff1",
"body": "… now work\n\nEvery CLI command with a required positional now accepts the matching MCP\nfield name as a flag alias: save --text/--content, search --query,\nrecall --file, get/delete --ids, update --id, defer add --title,\ndefer drop --id. Root cause: LLM callers map the MCP tool schemas onto\nnamed flags\n[…]\n 4029 (+16), eslint clean, npm audit --omit=dev clean.\nPre-landing review (fresh-context subagent): no P1/P2, 3 P3 notes deferred.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.59.0 — MCP-field flag aliases: flags-only CLI invocations…",
"author_name": "sds",
"author_login": "sdsrss",
"committed_at": "2026-07-24T08:08:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1c17e3b0cfb0a7f9322f37baf82afca8fa41ed2d",
"body": "…v/CI-only)\n\nRuntime artifact identical to v3.58.1. Ships the smoke-npm12 CI job +\nsmoke-tarball heal/shrinkwrap assertions (commit 3a315ae) as a tagged\nrelease so the marketplace/auto-update line stays in step with main.\nFirst CI run confirmed: block occurred -> heal reported \"rebuilt\" ->\nre-probe passed.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.58.2 — CI regression net for the npm >= 12 heal chain (de…",
"author_name": "sds",
"author_login": "sdsrss",
"committed_at": "2026-07-24T07:16:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3a315aec12eb1a4c791ce6915408069efdaa7cf5",
"body": "…shipped heal must fix it\n\nThe whole v3.58.x self-heal chain targets npm >= 12's default script block,\nbut CI ran smoke-tarball only on npm 10 where compilation just works — a\nregression in the heal chain was invisible until a user-side -32000.\n\n- smoke-tarball.mjs: when the post-install binding pro\n[…]\nrified locally: normal run PASS unchanged; blocked simulation PASS via\n\"heal OK — ensureBetterSqlite3Working reported rebuilt\"; 4013/4013 tests.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test: CI smoke leg for pristine npm >= 12 — script block must occur, …",
"author_name": "sds",
"author_login": "sdsrss",
"committed_at": "2026-07-24T07:07:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8198e6442496f8ec802a13695ddabde199738146",
"body": "… setup.sh\n\nTwo follow-ups to v3.58.0:\n\n- files[] now lists npm-shrinkwrap.json: both release jobs ran `npm shrinkwrap`\n (CI logs confirm the rename) yet the published 3.58.0 tarball shipped without\n it — with a files[] whitelist, npm 10's packlist drops the shrinkwrap unless\n EXPLICITLY listed (\n[…]\nck-held)\n re-verified after the refactor.\n\nknown-red baseline: main CI red is v3.58.0's shellcheck SC1123 on setup.sh — this commit is the fix.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.58.1 — pack the npm-shrinkwrap + fix shellcheck SC1123 on…",
"author_name": "sds",
"author_login": "sdsrss",
"committed_at": "2026-07-24T06:41:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a6d0e6007f7aa2cdb124f93002a44a5368477845",
"body": "…pdate-path binding gate, shared WAL recovery, locked rebuilds, unadopt residue sweep, shrinkwrapped registry installs\n\nSeven fixes from the install/update/self-heal/uninstall audit:\n- setup.sh probes the better-sqlite3 binding (ABI-keyed marker, locked 20s-bounded\n rebuild, bare-probe fallback) in\n[…]\ned rows restored\nfrom the pre-maintain snapshot, 3 pollution rows removed).\n\n4013 tests (233 files, +7), eslint clean, smoke-tarball PASS local.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.58.0 — lifecycle audit batch: npm-12 hooks false-green, u…",
"author_name": "sds",
"author_login": "sdsrss",
"committed_at": "2026-07-24T06:27:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3b00b3c7dfb601642992325a6a957580156d23e9",
"body": "Five advisories published 07-20..07-24 against transitive deps in the MCP SDK's\nHTTP transport (unreachable — this plugin uses stdio). Pin patched versions via\noverrides, keeping @modelcontextprotocol/sdk at 1.29.0 (npm audit fix --force\nwould downgrade it to 1.24.3):\n hono >=4.12.31, @hono/node-se\n[…]\nheld to 3.x (ajv ^3.0.1, reachable via schema validation). npm audit\n--omit=dev: 0 vulnerabilities. 4006 tests pass, eslint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: bump security overrides to clear npm audit gate (v3.57.0)",
"author_name": "sds",
"author_login": "sdsrss",
"committed_at": "2026-07-24T05:23:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "564e63bc146dc6849bdb5432c41efb02800b5ba5",
"body": "…ess, runtime hardening, data-layer atomicity\n\nLands the five-face audit (algo/security/data/prod/arch). No breaking changes.\n\n- algo: PRF emits FTS-matchable surface forms not porter stems (default-path recall\n fix — observations_fts is unicode61/unstemmed); TF-IDF vocab rare-term quota;\n cross-s\n[…]\ned-core (lib/recent-core.mjs); utils<->project-utils cycle broken.\n\n4006 tests (233 files), eslint clean, knip at 30-export floor.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.57.0 — multi-face audit batch: retrieval/scoring correctn…",
"author_name": "sds",
"author_login": "sdsrss",
"committed_at": "2026-07-24T05:09:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "adc0e400a74f0bc5b348a385fd69f520c7cddbbc",
"body": "…es (npm 10 array / npm 12 object)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.56.1 — smoke-tarball.mjs: parse both npm pack --json shap…",
"author_name": "sds",
"author_login": "sdsrss",
"committed_at": "2026-07-20T04:36:19Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9c8f4b63fc4251c1d17943d345982a2c5d3fd1fa",
"body": "…default install-script block (fixes MCP -32000)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.56.0 — npm 12 self-heal: better-sqlite3 rebuild bypasses …",
"author_name": "sds",
"author_login": "sdsrss",
"committed_at": "2026-07-20T04:19:34Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "63778162f783a0db112d915439021d8ac6cc430e",
"body": "…+ events end-to-end probes\n\nG15: ~50 CJK<->EN synonym pairs (mined from 90d real prompts + memory/search/\nrelease domain vocab) bridge Chinese queries to English Haiku-summary bodies\n(live: '钳制' 0->31 hits). Same terms join CJK_COMPOUNDS so both tokenization\nsides agree. New cjk_xlang fixture face \n[…]\nts. Closes 07-17 MED-2 second half.\nG14 waits for pretool_recall metering data (threshold calibration).\n\n3913 tests (+3), eslint clean, knip 46.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.55.0 — audit Phase B (partial): bilingual synonym bridge …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-18T22:42:46Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "984b1ec655d8907459a3258d48c380dea81fab6a",
"body": "…+ reminder counting fix + LongMemEval baseline refresh\n\nG13: enrich_save/pretool_recall/error_recall metric events + stats Recall\nmetering line (the three unmetered surfaces from the 2026-07-18 audit).\nG18: persist-reminder counts Skill lesson/memory/bug + memdir writes.\nG19: shared stdin-cap const\n[…]\n3.4/95.2/96.0 (engine-side real gain,\nharness/dataset unchanged; rerank row flagged as older-baseline).\n\n3910 tests (+4), eslint clean, knip 46.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.54.0 — three-face audit Phase A: recall/enrich telemetry …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-18T22:24:15Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fc8523256eea1b6afc7200bd3e3d50cd2c189fed",
"body": "…decay undercount + superseded keeper credit\n\nD#60: applyCitationDecay idempotency key getSessionId (project-scoped, shared\nby concurrent sessions) -> CC session UUID from Stop stdin; second session's\ndecay pass no longer silently skips (e2e locks the shared-session-file repro).\nD#61: cited/injected\n[…]\nacked up): 12 test-residue deferred rows deleted, obs\n10084 re-homed super-skill--docs -> projects--super-skill.\n\n3906 tests (+5), eslint clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.53.0 — citation-metering fixes (G10): concurrent-session …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-18T21:29:50Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "053c4515b6b89ad112d57d775b6982d28a480e20",
"body": "…ersisted-decision reminder\n\nG1+G2: manual saves (CLI+MCP) queue a detached Haiku worker distilling\nlesson_learned (obligated types) + search_aliases (every save), backfilled\nfill-only-empty under BEGIN IMMEDIATE; optimized_at untouched so daily\noptimize stays the backstop. Kill switch CLAUDE_MEM_SK\n[…]\n= ≤3/3459 rows (0.09%) ->\nG12②③ normalization not justified.\n\n3901 tests (+26), eslint clean. New shipped libs registered in files+SOURCE_FILES.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.52.0 — roadmap Phase 1: save-time enrichment worker + unp…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-18T21:15:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3ad88c162194d6125aed2d4e41e314554d03ed27",
"body": "…ing + denoise blind-face probes + stats Data-dir\n\nG8: PostToolUse error-recall gate isError -> isHardError (loose gate fired\n\"Related memories found for this error\" on exit-0 commands, self-recursive;\n30d baseline 220 unique / 10.9% cite-recall). Episode isError semantics kept.\nG11: defer list rows\n[…]\ns prints \"Data dir:\" on both surfaces (D#92 wrong-path residue).\n\n3875 tests (+19), eslint clean. Roadmap: docs/记忆功能优化路线图-2026-07-18.md (local).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.51.0 — roadmap Phase 0: error-recall hard gate + defer ag…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-18T20:48:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e74e4ac1a0cbcd3f5f843043c0bff95b4c441592",
"body": "…t + prompt injection + search (post-/clear D#92 gap)\n\ndeferred_work.detail was write-only: every surface (defer list / mem_defer_list\n/ dashboard) rendered title-only, no reader existed, search could not reach the\nrow. Three read paths open (write side needed no change):\n\n- get D#N (CLI+MCP): full \n[…]\nint clean. Verified against the\noriginating failure on the real DB: get D#92, the original prompt, and the\noriginal searches all reach the item.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.50.0 — D# read surface: deferred detail reachable from ge…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-18T19:58:53Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1c3b4d35a363bcb8d953d06260a479c8f1c796f6",
"body": "…budget-1 boundary note on the adaptive alias split\n\nFresh-eyes review of 242a32e (0 Critical / 0 Important): knip count had\ndrifted (OBS_TYPE_ENUM gained importers in the same release that recorded\nthe baseline) and the adaptive-split comment overclaimed 'main keeps its\nfull budget' at the budget=1 boundary (pre-existing v3.43 semantics,\nmanual --max <=4 only). Comment/doc only, no behavior change, no bump.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: post-release review minors for v3.49.0 — knip baseline 47→46 + …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-17T21:36:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "242a32e8e303067b563aa654d5593352723b9ca7",
"body": "…e ranking bands + save-time lesson nudge + alias-cadence fix + twin dedup\n\nFull audit of v3.48.0 (6 read-only agents): 0 HIGH, all seven v3.48.0 fixes\nheld. This release implements the complete recommendation roadmap:\n\n- MED-1+L3 (ranking): normalizeCrossSourceScores single-match clamp is now\n ban\n[…]\nevents-injection path-A note, export-columns exclusions,\n knip baseline.\n\n3819 tests (+21), eslint clean, knip 46, denoise NEUTRAL delta 0.000.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.49.0 — full audit 2026-07-17 roadmap (P1-P4): cross-sourc…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-17T21:21:34Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a397b4b9aa36c95120360cf8cb8c328d77f7844c",
"body": "…defang (v3.48.0 review Minor #1/#3)\n\nPost-ship review hardening (no runtime behavior change, no version bump):\n- Two lock tests in citation-tracker-userprompt: a relevance=\"events\" block of\n `- E#<id>` lines yields no extracted obs ids, and a mixed transcript where\n observation #42 and event E#42\n[…]\ntableEvent documenting why row.type (frozen event_type\n enum) is intentionally not defanged, so a future unvalidated event writer is\n flagged.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test: lock E# event-id isolation invariant + document event_type non-…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-17T01:30:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "51440dfa7047ddd0af6a371c4a78426f69694d88",
"body": "…from passive injection (HIGH) + injection-defang/concurrency/latency/ranking/delete-twin\n\nHIGH-1: promoted memories (events table) were invisible to the 3 passive\ninjection surfaces since v3.44. New lib/events-injection.mjs feeds the\nUserPromptSubmit <memory-context> block (FTS-matched events) and \n[…]\n new runtime modules added to SOURCE_FILES + package.json files.\n3796 tests pass, eslint + shellcheck clean, denoise NEUTRAL (R@10 0.900/0.341).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.48.0 — full audit 2026-07-16 (7 fixes): events reachable …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-17T01:13:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e3aa8f49e261aa0e66dafeb612795e0299f70739",
"body": "…ndary matching + per-edge citation decay + lesson scope labels\n\nTightens the PreToolUse file-triggered recall surface and adds a feedback loop so\nnoisy (observation, file) edges can go quiet without burying the lesson elsewhere.\n\n- P0: path-boundary file match (fixes utils.mjs pulling bash-utils.mj\n[…]\nte, plural\nself-heal sentinel. Schema auto-migrates 42→44 (additive; verified zero-loss on a\nproduction-DB copy). 3776 tests pass, eslint clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.47.0 — PreToolUse recall precision (D#78 P0–P3): path-bou…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-14T20:03:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "09c406c6491a3b4a76ed022937c8fae925e31b20",
"body": "…e model stops probing the save format\n\nThe save CLI's hard constraints (--lesson ≤500, required positional <text>) lived only in the Zod\nschema + help output, invisible before the call — the model discovered the format by erroring. Same\npattern across every write command (defer add ≤200, update ≤50\n[…]\ncumented as a legacy MEMORY.md-sentinel cleanup sweep that does not adopt.\n\nFull suite 213 files / 3730 tests green, eslint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.46.0 — surface hidden CLI write-command constraints so th…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-13T21:58:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f679069d8226308c48694c606fd73368a6a53524",
"body": "…4.0 feature (auto-deep drop, E# fetch/collision, obs_type→events)\n\nCode-review follow-ups to v3.44.0 \"events searchable via mem_search\" (D#74/75/76). TDD, +10 tests, 213 files / 3730 green, lint clean, verified end-to-end via CLI against a real file DB.\n\n- D#74: cross-source legs (sessions/prompts/\n[…]\nonors obs_type as event_type filter.\n- Changed: mem_search description + memGet/memTimeline schemas mention events / E#N (LLM-visible metadata).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.45.0 — events consumable: close 3 review gaps on the v3.4…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-13T21:26:28Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2a24fff041d5842c65bf429b557670c4a34030bd",
"body": "…/decision history) + events_fts self-heal (schema v42) + P3 hardening batch\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.44.0 — events searchable via mem_search (canonical bugfix…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-13T20:40:56Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "db7bbb2fd5da435ea91a9e8d25b511ae70144bd0",
"body": "…(RCE) + MCP export fidelity (data loss) + resolution/enrich/telemetry hardening\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.43.0 — full audit 2026-07-13 (8 fixes): launcher signing …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-13T19:40:27Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ce6c1ae54f3d864b81775fdf9fa24e55b1f8901b",
"body": "…oS + Basic-auth leak), export/restore body fidelity, update/registry preserve-on-empty, retrieval fallback filter\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.42.0 — E2E audit round 4 (14 fixes): scrub hardening (ReD…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-06T18:23:52Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ecc4729f8086518508010363e18f9d925aeac7b9",
"body": "…, LLM-ops integrity, handoff scoping, vector-arm parity\n\nThird E2E audit round: 5 discovery agents over the vector, episode/handoff/session-lifecycle, LLM-ops, tier/context-injection, and install/update subsystems that rounds 1-2 hadn't covered. 14 bugs fixed TDD. 2 HIGH: isMemHook silently deleted\n[…]\npe. Full suite 203 files / 3654 tests green, eslint + shellcheck clean, denoise-A/B NEUTRAL (default lexical retrieval unchanged).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.41.0 — E2E audit round 3 (14 fixes): hook/settings safety…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-06T17:16:48Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7c443516888fd98af39492605b81730535983e9a",
"body": "…eline, registry, release-signing, maintenance\n\nTwo-round end-to-end audit (6 parallel discovery agents + user-simulation testing) that found\nand fixed 14 real bugs across retrieval, secret handling, the resource registry, the\nrelease-signing chain, and the maintenance pipelines. Each fix TDD'd; 195\n[…]\npe, github default_branch, cross-hook dedup, maintain scan forecast,\nper-project normalize gate, …). Full details in CHANGELOG.md.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.40.0 — E2E audit (14 fixes): retrieval, secret-scrub, tim…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-06T16:05:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f792ca7f216a0d7766344a53819878a2029706fb",
"body": "…save guard, multi-line save recognizer)\n\nThree fixes from a code review of the v3.39.0->v3.39.1 changeset. The review found\nno Critical issues and no data-corruption risk; these are the correctness/UX gaps\nit surfaced.\n\n- Vector text now includes lesson_learned + backfilled aliases (lib/save-observ\n[…]\nv3.39.1 FK-safe marking (superseded_by_id is left NULL, a self-FK to events(id)).\n\nTDD, full suite green (191 files / 3609 tests), eslint clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.39.2 — code-review follow-up (vector-arm parity, /lesson …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T20:34:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "900a03dcdbc33e034bad747bf0c3cab75024defe",
"body": "… FK-safe marking)\n\nTwo fixes to `activity promote`, both caught running the v3.39.0 backfill on a real DB:\n\n- Low-signal exclusion: `body + importance>=2` was too loose (~17% Modified/Worked-on/\n tool-log rows = the activity-log noise the events split contains). Now applies the\n canonical notLowS\n[…]\ned_at_epoch only, wrap insert+mark per event in one\n transaction (no orphan on failure), skip bad events. Test now runs PRAGMA foreign_keys=ON.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.39.1 — activity promote hardening (low-signal exclusion +…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T19:43:48Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4d6c610595efe233158a9219d285df631b1305d4",
"body": "…backfill, explicit supersession, searchable /bug /lesson)\n\nFrom a storage + retrieval + eval audit (2026-07-06). Lexical retrieval is\nalready strong (LongMemEval recall_any@5=95.2%), so the leverage is in what gets\nstored and whether it's reachable — not ranking. All TDD'd; 190 files / 3605 tests.\n\n[…]\nability: /bug /lesson write searchable observations (was the\n events table mem_search never read); `activity promote` backfills insight events.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.39.0 — storage/retrieval precision (eval-coverage, alias …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T19:10:58Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "39a5753fb1899417d8d088fe01a41293855657e4",
"body": "…urface drift guards\n\nAudit of the tool-guidance blocks found the always-injected MCP instructions field\n(INSTRUCTIONS_BASE in search-scoring.mjs) omitted the mem_defer/mem_defer_list/mem_defer_drop\ntrio that tools/list exposes and the adopt CLAUDE.md block + detail doc already reference\n(steering-s\n[…]\nthe instructions string is runtime-visible (next MCP server start); the rest is\ndocs/tests/comments. 187 files / 3580 tests green; eslint clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.38.4 — MCP instructions advertise defer trio + steering-s…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T17:38:24Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7a6cebe4508280ee60c8e61a780fa565860521de",
"body": "… runtime unchanged)\n\nAdds benchmark/adoption-*.mjs (offline idiom-free adoption instrument) + 2 behavior-preserving shipped refactors (user-prompt-search.js searchByFts replay opts + isDirectInvocation guard; hook-memory.mjs rankImperativeCandidates extraction). Validated: action-channel hand-label\n[…]\n.698 [0.557, 0.747], P(AUC<=0.5)=0. Runtime unchanged vs 3.38.2 (verified against hook-launcher argv-rewrite + cache-buster path).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.38.3 — idiom-independent adoption benchmark (dev tooling;…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T15:38:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a9af62b3119e925c8a1d3037edf3c9425f58c14e",
"body": "Whole-branch review M-2: this branch added the adoption benchmark suite\n(3452 -> 3577), so the Quick Reference count is corrected here.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: sync CLAUDE.md test count to 187 files / 3577 tests",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T13:48:52Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d36759ab464b5951c50a4b09c7655642062922b4",
"body": "…ssion + I-2/I-3/I-4 disclosures\n\nI-1 (shipped, must-fix): the Task-1 import guard evaluated false on the\nhook-launcher self-heal retry (imports with a ?t= cache-buster while argv[1] is\nquery-less), silently skipping main() -> no memory search on that fire. Fixed via\nan exported isDirectInvocation()\n[…]\nranker-selection-confounded for top-1 surfaces -> a GO\nmust rest on the floorCheck contrast + hand-label AUC, not effect+CI alone.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(bench+ups): address whole-branch review — I-1 shipped-guard regre…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T13:45:50Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1cba5fa561380d5a695097034d604b875ccebc76",
"body": "Extends computeAdoption with collectEvents to emit per-event records from its own\nloop (RUN-WIDE IDF reused — actionDelta === the reported bucket effect, test-pinned).\nfloorCheck partitions events by cite-recall+ (assistant-authored #NN in PROSE, not\nthe raw file — the tautology fix: live citeSilent\n[…]\nputes rank-sum AUC of delta vs label. Completes the offline\nidiom-independent adoption instrument (GO/NO-GO adoption gate). 14/14.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(bench): cite-recall floor check + hand-label emit/score harness",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T13:13:45Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9e6ec2dc8883d41d4ee29150068e9239194148a1",
"body": "placebo-random swaps each candidate's text for a deterministically-picked DB\nlesson (seeded lcg) -> collapses the per-event delta to chance -> the PRIMARY\neffect's ci95 brackets 0 (the key null). placebo-cutoff relabels the RDD points\nat the median running-var -> falsifies only the SECONDARY rdd_jum\n[…]\nts data). lcg\nexported from the estimator. Default (no-placebo) path unchanged by construction.\n5/5 overlap + 6/6 estimator tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(bench): placebo-random + placebo-cutoff null controls",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T12:41:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "40fea24cf8578b37b121223367468eb9e6900710",
"body": "…+ CI\n\nbenchmark/adoption-overlap.mjs wires replay->rankers->cosine->estimator: per\ninjection event, dual-channel (action/prose) cosine of the output window vs the\nshown vs near-miss candidates, control-subtracted, aggregated per surface:channel\nbucket with a session-cluster-bootstrap CI over a run-\n[…]\nsd centered on the bucket mean (honest mde), RDD\npoints one-per-candidate, read-only DB, guarded main(). 3/3 e2e, full suite 3562.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(bench): adoption-overlap main -- per-bucket dual-channel effect …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T12:07:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "82865c0078cb58edaf9023c8b03955f6b614f086",
"body": "benchmark/adoption-rankers.mjs re-runs the committed ranker seams under the\nevent's virtual clock/snapshot and splits candidates into shown vs near-miss:\nups-fts via searchByFts (|relevance| floor + MAX_RESULTS cap, extracted into a\npure splitShownNearMiss), imperative/subagent via rankImperativeCan\n[…]\nddle/exceeds-cap/below-floor fixtures, cutoffs read the same CLAUDE_MEM_UPS_*\nenv vars as production, unknown surface throws. 6/6.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(bench): per-surface candidate replay (shown vs near-miss)",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T11:37:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0cafb73854e9614952323e0945916384fa2e0801",
"body": "New self-contained statistical core (benchmark/adoption-estimator.mjs):\nlocalLinearRdd (jump = intercept difference at the cutoff; mean-diff fallback\nwhen a side has <2 distinct x), clusterBootstrap (session-clustered resampling\nvia a seeded LCG — deterministic, no Math.random), and mde. Review-hard\n[…]\nfault alpha/power); the RDD mean-diff fallback has\na discriminating regression test (proven to fail if the guard is removed). 6/6.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(bench): RDD local-linear jump + session-cluster bootstrap + MDE",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T11:04:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f606c3af2a53a46da18865b9665b938b273f49af",
"body": "…output window\n\nExtracts per-surface injection events (ups-fts/imperative/subagent) with the\nranker query, injected #NN ids, and an output window (prose vs actions) spanning\nthe injection to the next GENUINE user message. Review-hardened before commit:\ntool_result relay entries are not boundaries (i\n[…]\noutput), and\nparallel Agent/Task dispatch yields one event per subagent. 5/5 tests incl. 4\nrealistic-transcript regression guards.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(bench): transcript replay -> injection events with dual-channel …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T10:20:45Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f450d2fe8e9a33a5cde34f3ce1047b817ebfea67",
"body": "…ption signal\n\nNew self-contained module (benchmark/adoption-cosine.mjs): IDF = log(1+N/(1+df))\nover a corpus, IDF-weighted cosine over the union vocab, and a dual-channel bag\nbuilder (action vs prose). Reuses only tfidf.mjs tokenize; zero new deps.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(bench): exact pairwise TF-IDF cosine + dual-channel bags for ado…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T09:43:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8e7c9b757009b38d18f23bbe6681c08e54116a75",
"body": "…electImperativeLesson wraps [0]\n\nExposes the full importance*overlap-scored candidate list (with an optional\nepochTo snapshot bound) so the adoption-overlap benchmark can recover the\nnear-miss candidates below the injected winner. selectImperativeLesson is now a\nthin [0] wrapper — behavior-preserving (all 6 filters, overlap basis, score, and\nargmax tie-break unchanged; full suite 3539/3539).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(imperative): extract rankImperativeCandidates scored list; s…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T09:32:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2efb5a9ab00eb37253927fb09de0d3b6727d1f3a",
"body": "… auto-run\n\nEnables faithful offline replay of the UserPromptSubmit ranker for the\nadoption-overlap benchmark: virtual clock (nowT) + created_at snapshot (epochTo)\n+ import guard so the module imports without firing main(). Behavior-preserving —\nexisting user-prompt-search suite 113/113 green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(ups): add nowT/epochTo replay options to searchByFts + guard…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T09:12:56Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5874a807ea1b01d8dace684bad740aaf67ab16f2",
"body": "…t injection (D#57)\n\ncitation-stats --sidechain was structurally blind to the dispatch-time subagent\ninjection surface (pre-agent-inject.js / CLAUDE_MEM_SUBAGENT_INJECT), which\nprompt-injects a lesson into each spawned subagent via updatedInput. The instrument\nonly scanned hook attachments (never pr\n[…]\ne in\n mem-cli.mjs (the surface exists and injects).\n\nReal dogfood: sidechain 0/0 → 2/11 (18.2%). Suite 3531 → 3534, ESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.38.2 — sidechain cite-recall sees prompt-embedded subagen…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T07:34:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "18180a12092b8ca73cff1ba95e1c9462eefaed2c",
"body": "…ction (D#51)\n\ncite-recall.mjs attributed PostToolUse:Bash injections by the loose [mem] text\nmarker + a broad /#\\d+\\b/ scan, not by the hook command the way production\nlib/citation-tracker.mjs does. Two artifacts, both deflating the channel's true\nrecall by padding its injected denominator with nev\n[…]\nst-tool-use.sh. Suite 3529 -> 3531.\n\nbenchmark/ is not shipped (not in package.json files) — dev instrument only,\nno version bump.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(benchmark): cite-recall :error-recall bucket + row-anchored extra…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T06:54:58Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "43b0ee0818719e79464e2ff67c3e5986e449a1e4",
"body": "…x in citation-stats)\n\ncitation-stats' \"Cite rate by project\" reported cited_count/decay_seen_count over\nsurviving, in-window obs — doubly biased (GC drops uncited obs from the denominator;\nwindow excludes older obs), so a project could read 91% while its true lifetime\ninject->cite rate was ~6%. Now\n[…]\ncing-function that makes the model ACT on a lesson, not rank it better).\n\nSuite 3528 -> 3529 (+1 regression anchor), ESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.38.1 — honest per-project cite rate (survivorship-bias fi…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-05T06:12:12Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8da2613b7175c40ffc4f1a77d2ca61682c697d32",
"body": "…de path)\n\nSplit the citation-decay promote-idempotency key into a new\nobservations.last_cited_session_id column (schema v41) so a #NN citation\nlanding in a LATER turn of the same session upgrades a previously-uncited\nobs instead of being frozen at the first Stop's verdict. The uncited/streak\nbranch\n[…]\ne old inj<=0 gate.\n\nSuite 3519 -> 3528 (+9), ESLint clean. v40->v41 migration verified zero-loss\non a 2097-row production DB copy.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.38.0 — cross-turn late-citation fix (citation-decay upgra…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-04T10:07:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6e31fe4c3598b546719e4283490ff18a081dda14",
"body": "…rsarial-review-caught regressions)\n\nRound 5 of the real-user E2E audit: six parallel read-only auditors over the previously\nun-audited surface (CLI/MCP, schema, LLM ingestion, citation, text pipeline, mutation), then\ntwo independent adversarial reviewers over the whole diff before landing — which c\n[…]\nplugin.json + marketplace.json + CLAUDE.md\n→ 3.37.0. DB schema user_version 39 → 40. Suite 3482 → 3519 green, eslint + knip clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.37.0 — round-5 E2E audit (security + data-integrity, adve…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-04T09:25:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "33ac0f0dfb8592e8c5e125269ceef7e4802be1b7",
"body": "… closures, injection/registry hardening)\n\nRound 4 (install / vectors / benchmark / semantic-inject audit) plus the security &\ndata-integrity fixes surfaced across all four rounds, and the v3.36.0 version bump.\nFull detail in CHANGELOG.md.\n\nSecurity / self-heal:\n- install.mjs repair(): resolve the l\n[…]\n.json + .claude-plugin/plugin.json +\n.claude-plugin/marketplace.json + CLAUDE.md → 3.36.0.\n\nSuite 3482 green, eslint + knip clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.36.0 — four-round E2E audit (self-heal signing, invariant…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-04T07:44:31Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "000a785c8184a63def8c4cb054b9e422ad6f1f0d",
"body": "…ction/registry/context fixes\n\nThree rounds of real-user E2E auditing (parallel readers + runtime exercise).\nTwo invariants each gained a NEW enforcement-site fix (the audit's main line:\n\"some site has the guard\" never means \"all sites do\"):\n\n\"lessons never auto-GC\" (lesson-bearing rows excluded fro\n[…]\nment\n(5 -> 3); add benchmark/ups-ab.mjs to knip entry.\n\nNo version bump / release (commit-only). Suite green, eslint + knip clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: E2E audit rounds 1-3 — close parallel-path invariant gaps + inje…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-03T23:54:12Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2b6625843d203c032eb4d006fae77c98ee5cf170",
"body": "…e observations — v3.35.2\n\nTwo Claude Code sessions running in the SAME project directory shared one\nproject-keyed episode buffer (ep-${project}.json) and were summarized as one\nmerged episode. Now each buffered entry carries its CC session id and\nflushEpisode splits by session via a new pure planEp\n[…]\ntical; all four invariants verified). Tests: planEpisodeFlush\nunit matrix (7) + e2e tag/split/significance/receipt/same-file (5); suite -> 3469.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(episode): flush interleaved concurrent-session buffers as separat…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-03T20:23:50Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "64913cdcd8c46d2901e88b053d9cf251123d53a6",
"body": "Route every CLAUDE_MEM_DIR consumer through lib/resolve-data-dir.mjs, a\nzero-dep pure resolver, replacing ~11 inline `env || join(HOME, ...)`\nfallbacks. The old pattern (a) accepted the literal strings \"undefined\"/\n\"null\" — produced when a caller interpolates a nullish JS value into a\nshell env stri\n[…]\n branch had;\nthe common unset case is unchanged (~/.claude-mem-lite).\n\nGate: eslint clean; vitest 176 files / 3458 passed (+6 resolve-data-dir).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(data-dir): centralize + validate CLAUDE_MEM_DIR resolution — v3.35.1",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-03T19:12:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2012955fddff3582f8e669b6650244b5ad1fe0b1",
"body": "…tion fixes — v3.35.0\n\nHook & injection-layer audit (3 read-only auditors + adversarial review of every fix):\n- fix(citation-decay): IMPORTANCE_FLOOR 0->1 + recoverBuriedLessons maintain op —\n decayed lessons were buried below the >=1 injection-visibility floor (one-way,\n unrecoverable); recoverBu\n[…]\nxiting + EPIPE guard.\n- feat(metrics): bound the opt-in metrics JSONL log (gcOldMetricShards, 90d retention).\n\nSuite 3436 -> 3452, ESLint clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(hooks): buried-lesson recovery + defang coverage + capture/injec…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-03T17:54:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "bffa88ef82b907aba4fefd3cf4243477c16b50fe",
"body": "…adow — v3.34.0\n\nfix(project-utils): resolveProject never tried an exact match, so a bare short project name (e.g. p) was shadowed by the %name% substring fallback and resolved to the biggest unrelated projects--* project, making it unreachable via --project across recent/search/timeline/stats/expor\n[…]\n-only and non-fatal, stdout/exit unchanged, zero false positives across all commands. +5 tests.\n\nSuite 3429 -> 3436, ESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cli): unknown-flag typo guard + fix resolveProject exact-name sh…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-03T15:05:32Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1a39ab86a425d661108d1d012fc15e5fd6598230",
"body": "…ff the author's machine\n\nThe v3.33.1 Release CI went red: the spawn tests seeded --project projects--mem (hardcoded) but the script infers its project from CLAUDE_PROJECT_DIR = the checkout path. Only matched on the author's machine; CI's checkout path inferred a different name -> selectImperativeL\n[…]\nwn test THIS commit fixes; reproduced the CI condition locally (ambient CLAUDE_PROJECT_DIR=/home/runner/work/... -> 11/11 green) before pushing.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(test): pin project in pre-agent-inject spawn tests so they pass o…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-02T18:07:41Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d88a9487a5fc64d4b52bc175ce2e0d28da1547cb",
"body": "…el tests — v3.33.1\n\nCode-review follow-up on v3.33.0. scripts/pre-agent-inject.js ended with process.exit(0), which on a pipe drops a pending async write and truncates the emitted JSON once the payload (it echoes the whole subagent prompt back via updatedInput) exceeds the ~64KB pipe buffer -> unpa\n[…]\n64KB round-trip guarding the flush). Also refreshes the stale CLAUDE.md test count. Feature stays default off. Suite 3424 -> 3429, ESLint clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(hooks): flush stdout before exit in pre-agent-inject + script-lev…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-02T17:59:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fa196ec38b8360219e85872c21a9acb9f58bb3d2",
"body": "…v3.33.0\n\nSubagents are memory-blind (plugin hooks don't fire inside them), so a spawned worker starts with zero project context even when the main session is memory-rich. A new PreToolUse:Agent|Task hook picks one relevant lesson (selectImperativeLesson: project-scoped, identifier-overlap, top-1) a\n[…]\nct.js; wired in hooks/hooks.json + install.mjs (parity) + source-files/package.json registration. 6 new tests; suite 3418 -> 3424, ESLint clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(hooks): subagent dispatch-time memory injection (default off) — …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-02T17:19:14Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "786c4342390fd65f62dead3dafdf8452ff34f5c7",
"body": "Non-isolated efficacy cells spawn 'claude -p' under the real ~/.claude, whose SessionStart auto-adopt wrote a sentinel into a throwaway worktree memdir that outlived the deleted worktree (~40 eff-wt residue dirs found in a 2026-07-03 audit). Set MEM_NO_AUTO_ADOPT=1 in the child env (gate at hook.mjs) so efficacy runs leave no ~/.claude/projects/*/memory residue.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(benchmark): efficacy harness opts child sessions out of auto-adopt",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-07-02T17:17:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "aa60c6b5dd6097e7f5026d81096e2a65324de8bf",
"body": "The CLI's `recent --type` had no MCP counterpart, so an agent asking for \"recent\nbugfixes\" had to over-fetch and filter client-side.\n\n- tool-schemas.mjs: memRecentSchema gains optional obs_type (OBS_TYPE_ENUM — an\n unknown value is rejected by the schema before the handler, so no manual\n validatio\n[…]\nhe bugfix row, discovery rows excluded).\n\nrelease: v3.32.0 — synced 5 version files + CHANGELOG. Suite 3416 -> 3418,\nESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(mcp): obs_type filter on mem_recent (closes CLI<->MCP parity gap)",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T19:01:15Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "73f466a99fc97e0059e7e252444bf4f2af757638",
"body": "Mirrors v3.30.0's mem_search date_since on the recent surface, so the agent can\nask for \"everything since X\" (pair with a high limit).\n\n- tool-schemas.mjs: memRecentSchema gains optional date_since (opt-in; no default\n behavior change — #8462)\n- server.mjs: extracted the inline mem_recent handler i\n[…]\nlid-duration\nexercised through the seam.\n\nrelease: v3.31.0 — synced 5 version files + CHANGELOG. Suite 3412 -> 3416,\nESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(mcp): date_since on mem_recent (completes agent --since parity)",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T18:48:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6d076d2e47243c20fcbdbb3775e1f9b13537be3d",
"body": "Brings v3.29.0's CLI --since to the MCP surface the agent actually calls.\nmem_search gains an optional date_since arg (7d|24h|90m|2w|30s) — the relative\ncomplement to date_from/date_to, so the agent can ask for \"recent\" memories\nwithout computing an absolute date.\n\n- tool-schemas.mjs: memSearchSchem\n[…]\n CLI id parity,\ninvalid 7days rejected).\n\nrelease: v3.30.0 — synced 5 version files + CHANGELOG. Suite 3410 -> 3412,\nESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(mcp): date_since on mem_search (agent parity with CLI --since)",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T18:34:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "67d89b0309c1509c199d7c6f18db944db48ca451",
"body": "Adds `--since <duration>` (7d|24h|90m|2w|30s, case-insensitive, single unit) as\nthe relative complement to the absolute --from/--to. Users think in \"last week\",\nnot ISO dates: `search \"login bug\" --since 7d`, `recent 1000 --since 24h`.\n\nPurely additive — no existing behavior changes, retrieval ranki\n[…]\nrecedence +\ninvalid, recent --since e2e). release: v3.29.0 — synced 5 version files +\nCHANGELOG. Suite 3403 -> 3410, ESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cli): --since relative time window for search and recent",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T18:18:31Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0319e082a8607c60a69654dff88a8fa5ee132ff9",
"body": "Three positive hardenings, each behavior-neutral / additive with a RED->GREEN test:\n\n1. tier(fix): TIER_CASE_SQL's default-window fallthrough now guards on\n (type IS NULL OR type NOT IN (6 known types)), mirroring computeTier's\n `ACTIVE_WINDOWS[type] ?? DEFAULT`. Behavior-neutral today (all type\n[…]\nrse-file test.\n\nrelease: v3.28.3 — synced package/lock/plugin/marketplace/CLAUDE.md + CHANGELOG.\nSuite 3400 -> 3403, ESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "harden: tier JS<->SQL drift guard, tool-call tag defang, import size cap",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T17:52:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "40a73ba1094b816693d01d44e7b4bede24694765",
"body": "…yed memory\n\nneutralizeContextDelimiters now strips the brackets on <system-reminder> and\n<task-notification> in addition to the three memory-block wrappers\n(claude-mem-context / memory-context / session-handoff).\n\nMemory replays arbitrary captured text (file contents, tool output, web pages),\nso a \n[…]\n on injection.\n\nrelease: v3.28.2 — synced package/lock/plugin/marketplace/CLAUDE.md + CHANGELOG.\nSuite 3399 -> 3400, ESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "change(security): defang forged harness-authority delimiters in repla…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T17:28:48Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "797382faef13015ac4c43577386f001acb4bd7f9",
"body": "lib/rrf.mjs::rrfAccumulate summed 1/(k+rank+1) per-occurrence, so an id repeated\nwithin a SINGLE ranked list inflated to a fake cross-ranker-consensus score —\nviolating the documented \"across every ranked list it appears in\" contract.\nLatent today (both callers — tfidf.rrfMerge inputs and deep-searc\n[…]\nRED->GREEN test\nadded.\n\nrelease: v3.28.1 — synced package/lock/plugin/marketplace/CLAUDE.md + CHANGELOG.\nSuite 3399, ESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(rrf): count an intra-list duplicate id once at its best rank",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T17:09:31Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "aaaa4581e70c348494145128a3c75bdaa7a50aff",
"body": "The scrubSecrets assignment-keyword regex only fires on a KEY=value value of\n>=6 chars (shorter values are left alone to avoid prose false-positives). Several\nsave/enrich/prompt paths truncated raw text FIRST and scrubbed the result, so a\nreal secret straddling the cut was sliced to a 1-5 char head \n[…]\nGREEN regression test (manual save, LLM episode/events, re-enrich,\nend-to-end user-prompt hook). Suite 3394 -> 3397, ESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(security): scrub secrets at full length before truncation",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T17:09:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5ee650d825c17d71a83c69670115c1153c079b8e",
"body": "…ly on the re-rank path)\n\nPublishes the post-review follow-up already on main (506bc22): coreRunSearchPipeline now\nbuilds the obs-filtered list inside the doReRank branch, so the no-rerank path (deepReranked\n/ MCP isDeep+!ftsQuery) skips a wasted O(n) filter the markSuperseded deletion (v3.27.0)\nlef\n[…]\nst and the\nresult re-sort is unchanged. Also refreshed the internal knip baseline note 51->53 (no rot).\n\nSuite 3394, ESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.28.0 — search-pipeline micro-cleanup (obsResults built on…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T16:16:24Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "506bc22583763d2587f5d696959d80b926c97def",
"body": "…sted filter (review minor #1)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(search): build obsResults only when doReRank fires — skip wa…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T16:11:11Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "bdd7ee3ed91e10d4e118739ef40a6f24fc2714c4",
"body": "… rot)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(claudemd): refresh knip baseline 51→53 (2026-06-29 re-verify, no…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T15:48:28Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e8eed57fd274529902fec05ea6f9bcafdfd37a04",
"body": "…verlay on superseded_at)\n\nDelete the in-memory [SUPERSEDED] display tag from search/recent. It was a display-only\nfile-overlap + importance<= heuristic with no content check, layered on the real\nsuperseded_at mechanism (set by maintain/compress, which already excludes those rows from\nsearch) — so i\n[…]\neutral\n(53; the +2 vs the stale 2026-06-05 baseline of 51 is pre-existing drift, verified\nknip-neutral for this change via stash).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.27.0 — remove markSuperseded display heuristic (unsound o…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T15:33:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e8028161dd5473ad2cba867e6d1f5c3990430588",
"body": "…T-POSITIVE via corrected ups-ab #8858)\n\nFlip CLAUDE_MEM_UPS_IDENTIFIER_BYPASS from opt-in to default-on (set =0 to disable).\n\nchange(ups): default-on identifier floor-bypass. Re-ran benchmark/ups-ab.mjs with\n #8858-corrected hard-negatives (true off-topic FP isolated from on-topic eagerness\n via \n[…]\nDE_MEM_TASK_IMPERATIVE stays default-OFF (its flip is gated on a live cite-recall\ncanary, not this A/B). Suite 3405, ESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.26.0 — identifier floor-bypass ON by default (measured NE…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T15:05:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d14bd437db00ee78e10f75796abf97070d922320",
"body": "… CLI/hook fixes + markSuperseded review-correction)\n\nCode review of v3.24.0; every finding re-verified against the code before acting.\n\nfix(ups): stop-list prose phrases (up-to-date / macOS / state-of-the-art …) that\n TECH_IDENTIFIER_RE structurally matched — they widened the default-ON\n hasExpli\n[…]\ns; every\n production obs row carries date, so the new sort is behavior-neutral hardening.\n\nSuite 3403 -> 3405 (+2), ESLint clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.25.0 — code-review follow-up (UPS prose-match precision +…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T14:37:58Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3154e0bd738ba4669cf404d5591162e1cb08c20b",
"body": "…sk-imperative Phase-2 (default-off)\n\nAudit fixes (user-facing): markSuperseded false [SUPERSEDED] tag, parseGitHubUrl uppercase\nrejection, compress/optimize silent no-op on the sibling execute flag, pre-tool-recall\ninferProject PWD-fallback parity. Opt-in (default OFF): CLAUDE_MEM_UPS_IDENTIFIER_BY\n[…]\n and the task-imperative Phase-2 emitter\n(CLAUDE_MEM_TASK_IMPERATIVE) + cite-recall/denoise-ab instrumentation. Suite 3367 → 3403.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.24.0 — 6-round E2E audit fixes + UPS-path A/B harness; ta…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T13:43:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3e99e7e0f2f37830343b1f0e3b6b8dba911b8c34",
"body": "…ss; docs(benchmark): denoise-ab scope\n\ndenoise-ab only drives searchObservationsHybrid (the CLI/MCP search path); it never executes\nuser-prompt-search.js, so the UPS injection levers (TOP_REL_FLOOR / OR_TOP_BM25_FLOOR /\ncite_factor / signal-gate) read NEUTRAL there regardless of effect (verified: e\n[…]\non the real corpus (+3 recall recoveries\n/ +4 on-topic-but-eager injections over 12 positives / 8 hard-negatives), so kept opt-in.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(ups): identifier floor-bypass (default-off) + UPS-path A/B harne…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T13:30:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2b215a8da8a70efe0fce13014a8964c0a3c3f418",
"body": "…ave path has\n\ninferProject is duplicated across utils.mjs (save path), the bash post-tool-use.sh fast-path,\nand pre-tool-recall.js (PreToolUse recall). pre-tool-recall resolved the dir from\nCLAUDE_PROJECT_DIR || process.cwd() WITHOUT the process.env.PWD fallback the other two have (and\nlacked the 1\n[…]\nlution order + sanitize + cap; add a\nSYNC comment. Latent in production (Claude Code sets CLAUDE_PROJECT_DIR, so all paths agree).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(hook): pre-tool-recall inferProject lacked the PWD fallback the s…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T13:29:49Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5332ae8d359b3b8387761812682c385ca36a60da",
"body": "… execute flag\n\nThe three mutating maintenance commands used three \"execute\" conventions: compress --execute,\noptimize --run, maintain positional `execute`. Borrowing a sibling's flag fell through to a\nsilent preview at exit 0, so a user who typed `optimize --execute` believed a mutation ran when\nit\n[…]\na pointer to their real flag when\nonly the sibling's flag is passed — parity with maintain, which already errored on a stray flag.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(cli): compress/optimize silently no-op'd on the sibling command's…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T13:29:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8f0bd6d03f8f03e745cca94d8904d3b452d60ec8",
"body": "Scheme + host were matched case-sensitively, so a pasted \"HTTPS://GitHub.com/owner/repo\"\n(RFC 3986-valid, opens in the browser) failed import with \"Invalid GitHub URL\". Normalize only\nthe scheme://github.com origin to lowercase before matching; the path (owner/repo/branch) stays\ncase-sensitive and t\n[…]\n unchanged, so the SSRF host-spoof guards\n(github.com.evil.com / github.com@evil.com) still reject — including uppercase variants.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(registry): parseGitHubUrl rejected valid uppercase GitHub URLs",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T13:28:50Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7ce61b3f22120dae961014f32bbdee746d1af332",
"body": "…t silently no-op'd in production\n\nThe recency sort keyed on r.date, but the production search pipeline (coreRunSearchPipeline →\nsearch-engine.mjs) supplies created_at / created_at_epoch and no `date`, so the localeCompare\nwas a no-op and a current, top-importance obs got a false [SUPERSEDED] tag. S\n[…]\ny-only (no recall/ranking impact). Unit\ntests passed because their fixtures supplied `date` — a test/production field-shape drift.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(search): markSuperseded read a missing `date` field — recency sor…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T13:28:17Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "edebaa0326c46d5d1ffc602d5566ccfa20e00faa",
"body": "…r the co-located task-imperative line\n\nThe CLAUDE_MEM_TASK_IMPERATIVE line shares a UserPromptSubmit attachment with <memory-context>, so per-attachment routing folded its #NN into :memory-context. Split per-line into a distinct :imperative bucket + OR-gate the imperative-only case (#1501). Makes the dogfood canary (imperative cite-recall vs path-A/B baseline) measurable.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(benchmark): cite-recall :imperative bucket — per-line routing fo…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T09:51:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "87499fd65c6d9d5b230fd4993215e943ca187994",
"body": "…_IMPERATIVE\n\nDogfooding sets the flag in .claude/settings.local.json, which Claude Code propagates into the test subprocess env; runUserPrompt spread ...process.env so the 'flag OFF' case inherited it. Clear it in the base env (like CLAUDE_MEM_HOOK_RUNNING) so the flag is opt-in per-test.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(hook): isolate task-imperative test from ambient CLAUDE_MEM_TASK…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T09:38:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "85bac7e5b9568a4f398988ea774a3accee96d488",
"body": "…) — arm T was degenerate (== C) without it\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(efficacy): add aacab0c requirement (spelled-out superseded_at fix…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T09:17:36Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3ed194c5771389d944f79797757c348ffa2fca41",
"body": "… CLAUDE_MEM_TASK_IMPERATIVE (default off)\n\nShips lib/task-imperative.mjs in SOURCE_FILES + package.json files (new runtime import from hook.mjs).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(hook): wire task-imperative emitter into UserPromptSubmit behind…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T09:05:04Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "40bf4461cea35ce1bc2c84d8c8b54d4715c741f5",
"body": "… gate (Phase 2)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(hook): selectImperativeLesson — top-1 high-value relevant lesson…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T08:54:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5e4ce3130a4fae06700d8f222be74579de59a672",
"body": "…task-prompt 6-8/8 vs hook 0/8)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(efficacy): record arm-U task-imperative measure — NET-POSITIVE (…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-29T00:43:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "84d851fb8c9ad7d9b4cd5a20f7ef923fe279b9d6",
"body": "…ed taskSuffixForArm\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(efficacy): add arm U (task-position memory-imperative) via unifi…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-28T23:48:11Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f2ef14e01be16de25e0d7078797ce26eec00fe75",
"body": "…+ Phase-2 emitter)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(efficacy): pure task-imperative framing helper (shared by arm U …",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-28T23:44:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d531da7bbd8364478383a7c12db6c331b627d015",
"body": "…njection\n\nThe [mem]-only marker counted only path A (user-prompt-search.js \"[mem] FYI\")\nunder \"UserPromptSubmit\" and left path B (hook.mjs <memory-context>, which\ncarries no [mem] marker) invisible. Recognise <memory-context> and bucket it as\nUserPromptSubmit:memory-context so the two sibling UPS i\n[…]\n Lowest-cited injectors are PostToolUse:Bash (13.8%) and path A,\nNOT path B. Dev tooling — not in SOURCE_FILES, no release impact.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(benchmark): cite-recall now measures path B (<memory-context>) i…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-28T23:03:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "855b2226e549d145924a0004156a9695bfbbc6bb",
"body": "Denoising levers shift precision (hard-negative suite) and recall\n(vocab-mismatch paraphrase suite) in OPPOSITE directions; evaluating one\nsuite alone hides the other side — that split let an OR-BM25 floor\nship-then-revert (2026-06-29). denoise-ab.mjs runs BOTH suites on the\nproduction-hybrid path a\n[…]\nare with a REJECT / TRADEOFF / NET-POSITIVE / NEUTRAL verdict.\n\nDev tooling only — not in SOURCE_FILES, no runtime/release impact.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(benchmark): add denoise-ab precision↔recall tradeoff harness",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-28T22:57:53Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "bb849fe96ffe365e759e22f94e855d4e54ea3701",
"body": "…e, change-aware bugfix nudge, lesson preservation, importance de-inflation\n\n3-pillar audit (injection/storage/retrieval, 3 parallel agents). Suite 3353→3367 (+14), ESLint clean.\n\n- fix(honesty): noise gauge sees imp=0 (importance<=1 + injection=0), CLI+MCP — live 0.0%→honest ~10-12%\n- fix(noise): b\n[…]\nicable commits 1→2\n\nLive maintenance pass: recovered 310 unreachable compression orphans + 64 buried lessons (snapshots retained).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.23.0 — injection/noise + storage audit: honest noise gaug…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-28T21:52:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c0a191bef0d73899d9530de5aa5e4561fdadf0f3",
"body": "… GC + CLI/hook robustness\n\nTwo-round real-user E2E bug-hunt (4 finder agents + per-bug reproduction). 15\nconfirmed bugs fixed across the CLI, MCP, and passive-hook paths. Suite 3339 →\n3353, ESLint clean, knip baseline unchanged. Recurring theme: §9 parallel-path\nmiss — the CLI/MCP maintenance paths\n[…]\nobject stdin; injected-context blocks defanged against delimiter tags.\n- session_handoffs: expired rows now GC'd in auto-maintain.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.22.0 — E2E user-sim audit: maintain data-loss fix + imp=0…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-28T20:23:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a1e111481efc917e53ffd405ceefef9e96b3bc26",
"body": "…an-safe purge)\n\n- feat(MED-2): VACUUM INTO snapshot before irreversible maintenance (auto-maintain\n / CLI maintain / MCP mem_maintain), guarded on actual deletions, retain newest 3\n- feat(MED-5): post-install health gate — boot the switched code (cli help +\n node --check) before discarding the ba\n[…]\n-backup.mjs (registered in source-files.mjs + package.json files).\nSuite 3330 -> 3339 (+9), ESLint clean, knip baseline unchanged.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.21.0 — maintenance-layer durability (MED-2 + MED-5 + orph…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-28T18:58:37Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "103e8011aaea2e045f2abf9708234d1e6ee90c19",
"body": "Completes HIGH-1: embed the Ed25519 public key in hook-update.mjs so auto-update\nfails closed — a release missing/with-invalid signature assets is refused instead\nof installed opportunistically. Safe now: v3.19.0 was the first signed release and\nits published signature verified end-to-end against th\n[…]\nunaffected.\n\nAdds an embedded-key parse/reject regression lock; updates the default-regime test\nfrom opportunistic to fail-closed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.20.0 — auto-update verifies release signatures (fail-closed)",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-28T18:20:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0df770aa8800b87d8292b8201fc180ee93109431",
"body": "… signing activated\n\n4-agent production audit: engine held A- (no regression); fixed 3 HIGH in the\nperiphery + activated release signing.\n\n- fix(security): scrub events table at saveEvent choke-point (LLM + CLI writers)\n- fix(data): cluster-merge snapshots keeper original before in-place overwrite\n-\n[…]\nregistry busy_timeout 5000, golden decay axis, shadow-log 90d GC\n\nSuite 3317 -> 3329 (+12), ESLint clean, knip baseline unchanged.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.19.0 — security hardening from production audit + release…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-28T18:12:10Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "902930eb6731d4f63a3858f5ed20ab5f8bfbce7f",
"body": "…ault off) + scoring-path golden lock\n\nfeat (opt-in, default OFF): CLAUDE_MEM_SALIENCE=bridge — PreToolUse rewrites a\nrecalled lesson into a check bound to the edit hunk via Haiku, fail-open to ack,\nLLM stack dynamic-imported only under the flag (fast-path unchanged).\n\nmeasured: B=0/8 vs T=8/8 (bac2\n[…]\ndrift-lock for the two scoring paths (ratio-isolation, mutation-\nverified). infra: efficacy harness arm B + ITT/fired-only deltas.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: v3.18.0 — opt-in comprehension-bridge FF (measured null, def…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-26T23:33:40Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "abde878b2ac9a0ec054d5be1eead4d85ec88401e",
"body": "…n test\n\nAdds CLAUDE_MEM_SALIENCE=bridge (default OFF): PreToolUse rewrites a recalled\nlesson into a check bound to the edit hunk via Haiku, fail-open to ACK. Plus a\ngolden drift-lock for the two scoring paths, and efficacy harness arm B with\nITT/fired-only deltas.\n\nMEASURED OUTCOME (efficacy-README\n[…]\n step, not content specificity. Default unchanged;\nbridge stays opt-in. Next lever for D#44 is instruction/task-channel injection.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "merge: comprehension-bridge forcing-function (opt-in) + scoring golde…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-26T23:27:42Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d68a970867d9465defd8b12797a1d2bf0831e75a",
"body": "Arm B (CLAUDE_MEM_SALIENCE=bridge) measured on bac2e85, k=8, sonnet-4-6,\nreusing cached A/C/F/T. Result: B=0/8 (Δ_ITT(B−C)=0pp) vs T=8/8.\n\nClean channel×specificity 2x2: the bridge's emitted check is ~content-identical\nto arm T's spelled-in requirement, so B-vs-T isolates delivery channel\n(PreToolUs\n[…]\nicity.\nExecutes #8771's 'add a forcing-function, re-run STEP 3' and refines its\nverdict. Do NOT flip default; bridge stays opt-in.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(efficacy): record comprehension-bridge n=1 channel-isolation result",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-26T23:18:12Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b2f1a34d944072e5ce5cc5feb17f30fa483beea0",
"body": "Final-review finding (Important): the Phase-3 aggregation silently dropped\narm-B cells where the pre-session bridgeFired proxy was false, while leaving\narms A/C unfiltered. A non-fired bridge fails open to ACK (~arm A, scores ~0),\nso dropping those cells biased Δ(B−A)/Δ(B−C) optimistic — it could ma\n[…]\nd OPTIMISTIC Δ_fired(B−C)/Δ_fired(B−A) per-protocol\nsubset. bridgeFired + ⚠NOBRIDGE kept as diagnostics. Supersedes plan line 446.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: report ITT + fired-only arm-B deltas (remove biased silent-drop)",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-26T22:44:27Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "badeb06c473e0453386cf71a99271b4c4f61de3e",
"body": "Task 4. New pure module lib/efficacy-bridge-select.mjs:\n- lessonBindsToRegion(lesson, region): lesson identifier ∈ region (commit\n selection — keep only commits the bridge can bind to, §4.2).\n- bridgeFired(out) / BRIDGE_MARKER: detect the '→ this edit must:' marker\n pre-tool-recall emits (per-run \n[…]\n cells dropped → vacuous. Now feeds the fix-region diff as the Edit\nhunk so the probe exercises the real bridge gate + Haiku path.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: efficacy arm-B selection + firing verification (Task 4)",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-26T22:28:45Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "440efdfe6737b95890c791d9a84efdd8db6cf9cc",
"body": "…easure\n\nTask 3. Adds 'B' to INJECTED_ARMS and salience='bridge' to armConfig, so the\nsevere-test harness can run the bridge arm under CLAUDE_MEM_SALIENCE=bridge.\nController fix: restored the 6 pre-existing arm-semantics tests the worker\noverwrote (A/AL/F/C/T + exact-set), added B coverage, updated the exact-set\nassertion to {A,AL,B,F}.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: efficacy arm B (bridge salience) for the comprehension-bridge m…",
"author_name": "sds.rs",
"author_login": "sdsrss",
"committed_at": "2026-06-26T22:14:51Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 100,
"commits_last_year": 829,
"latest_release_at": "2026-07-24T08:45:40Z",
"latest_release_tag": "v3.59.1",
"releases_from_tags": false,
"days_since_last_push": 10,
"active_weeks_last_year": 24,
"days_since_latest_release": 10,
"mean_days_between_releases": 0.6
},
"artifacts": {
"collected": true,
"structure": [],
"declarations": [
{
"name": "claude-mem-lite",
"path": "package.json",
"tokens": [
"npm.bin"
],
"ecosystem": "npm"
}
]
},
"community": {
"has_readme": true,
"has_license": true,
"readme_badges": {
"hosts": [],
"total": 0,
"header": 0,
"collected": true,
"has_inspect_badge": false
},
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "claude-mem-lite",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "npm",
"categories": [],
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/claude-mem-lite",
"declared_type": null,
"is_deprecated": false,
"latest_version": "3.59.1",
"repository_url": "https://github.com/sdsrss/claude-mem-lite",
"versions_count": 252,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 8084,
"first_published_at": "2026-02-13T18:17:41.945000Z",
"latest_published_at": "2026-07-24T08:45:33.263000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 10
}
]
},
"popularity": {
"forks": 3,
"stars": 49,
"watchers": 0,
"fork_history": {
"days": [
{
"date": "2026-03-11",
"count": 1
},
{
"date": "2026-05-15",
"count": 1
},
{
"date": "2026-06-22",
"count": 1
}
],
"complete": true,
"collected": 3,
"total_forks": 3
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": true,
"has_dockerfile": false,
"has_mcp_signal": true,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 164531,
"source_files_sampled": 396,
"oversized_source_files": 16,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 9548
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 130,
"malicious_count": 0,
"assessed_package": "npm:claude-mem-lite@3.59.1",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "@modelcontextprotocol/sdk",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.26.0"
},
{
"name": "better-sqlite3",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^12.6.2"
},
{
"name": "zod",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^4.3.6"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 9,
"open_issues": 0,
"closed_ratio": 1,
"closed_issues": 5,
"closed_unmerged_prs": 1
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "sdsrss",
"commits": 829,
"avatar_url": "https://avatars.githubusercontent.com/u/230400260?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"publish.yml"
],
"has_docs_dir": true,
"linter_configs": [
"eslint.config.mjs"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"package-lock.json"
],
"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": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 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": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 5,
"reason": "dependency not pinned by hash detected -- score normalized to 5",
"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": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 8,
"reason": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 5,
"reason": "5 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "cf81df8d1b0ca9e24ccd4ad57449ddedf2bdd4af",
"ran_at": "2026-08-03T16:11:56Z",
"aggregate_score": 4.4,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"recent_prs": {
"merged_7d": 0,
"decided_7d": 0,
"merged_30d": 0,
"authors_30d": 0,
"decided_30d": 0,
"sample_size": 10,
"window_days": 30,
"sample_exhausted": false,
"authors_probed_30d": 0,
"newcomer_merged_30d": 0,
"bot_prs_excluded_30d": 0,
"newcomer_authors_30d": 0,
"newcomer_decided_30d": 0
},
"ci_last_run_at": "2026-07-24T08:45:45Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-03-28T10:14:40Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/sdsrss/claude-mem-lite",
"host": "github.com",
"name": "claude-mem-lite",
"owner": "sdsrss"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": "The weighted overall 63 is calibrated to 71 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 63,
"calibrated": 71,
"calibration": "2026-08-02"
}
}
],
"value": 71,
"inputs": {
"security": 55,
"vitality": 83,
"community": 46,
"governance": 50,
"calibration": "2026-08-02",
"engineering": 78,
"ai_readiness": 64,
"weighted_overall_raw": 63
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 83,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 73,
"inputs": {
"commits_last_year": 829,
"human_commit_share": 1,
"days_since_last_push": 10,
"active_weeks_last_year": 24
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 10 days ago",
"points": 28.8,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 10
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "24/52 weeks with commits",
"points": 16.6,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 24
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "829 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 829
}
}
],
"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": "exceptional",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 98,
"inputs": {
"releases_count": 100,
"latest_release_tag": "v3.59.1",
"releases_from_tags": false,
"days_since_latest_release": 10,
"mean_days_between_releases": 0.6
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "100 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 100
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 10 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 10
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~0.6 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 0.6
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"points": 8,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "exceptional",
"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": "weak",
"name": "Community & Adoption",
"value": 46,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "at_risk",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 30,
"inputs": {
"forks": 3,
"stars": 49,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "49 stars",
"points": 27.3,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 49
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "3 forks",
"points": 2.5,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 3
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": 0,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"readme_badge_services": [],
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "good",
"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": 65,
"inputs": {
"packages": [
"claude-mem-lite"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 8084
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "8,084 downloads/month across npm",
"points": 52.1,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 8084,
"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": 50,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 10,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 79,
"inputs": {
"merged_prs": 9,
"open_issues": 0,
"closed_issues": 5,
"prs_merged_7d": 0,
"prs_decided_7d": 0,
"prs_merged_30d": 0,
"prs_decided_30d": 0,
"issue_closed_ratio": 1,
"closed_unmerged_prs": 1,
"first_time_authors_30d": 0,
"first_time_prs_merged_30d": 0,
"first_time_prs_decided_30d": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 42,
"status": "met",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "9/10 decided PRs merged",
"points": 27,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 9,
"decided": 10
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"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": 30,
"inputs": {
"followers": 3,
"owner_type": "User",
"is_verified": null,
"owner_login": "sdsrss",
"public_repos": 12,
"account_age_days": 333
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "3 followers of sdsrss",
"points": 4.3,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 3,
"login": "sdsrss"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "12 public repos, account ~0 yr old",
"points": 9.9,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 12
}
},
{
"code": "account_age_years",
"params": {
"years": 0
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "exceptional",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"claude-mem-lite"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 10
},
"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 10 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 10
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "252 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 252
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 78,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"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": 80,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "2 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 2
}
}
],
"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": "eslint.config.mjs",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.mjs"
}
}
],
"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": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [
"claude-code",
"fts5",
"hooks",
"mcp",
"memory",
"persistence",
"sqlite",
"agent-memory",
"ai-coding-assistant",
"ai-memory",
"anthropic",
"claude",
"claude-code-plugin",
"hybrid-search",
"llm-memory",
"long-term-memory",
"mcp-server",
"model-context-protocol",
"rag",
"semantic-search"
],
"has_wiki": false,
"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": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 55,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "weak",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 44,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 4.4
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "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 dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "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 detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 5",
"points": 2.5,
"status": "partial",
"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 not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"points": 6,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "5 existing vulnerabilities detected",
"points": 3.8,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "exceptional",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:claude-mem-lite@3.59.1 runtime dependency closure — what installing the published package pulls in — 130 packages. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_published",
"params": {
"package": "npm:claude-mem-lite@3.59.1",
"assessed": 130
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 130,
"unassessed_packages": 0,
"affected_by_severity": "none",
"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": "no indirect dependency carries a known advisory",
"points": 25,
"status": "met",
"details": [
{
"code": "no_indirect_advisories",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "exceptional",
"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": 130,
"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": 64,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "exceptional",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"has_llms_txt": true,
"legible_history_share": 1,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 9548
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "CLAUDE.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": "llms.txt present",
"points": 15,
"status": "met",
"details": [
{
"code": "llms_txt_present",
"params": {}
}
],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 100,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 58,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 1,
"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": "eslint.config.mjs",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.mjs"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "100 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 100,
"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 5",
"points": 5,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 53,
"inputs": {
"primary_language": "JavaScript",
"largest_source_bytes": 164531,
"source_files_sampled": 396,
"oversized_source_files": 16
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "JavaScript without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "JavaScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "16/396 source files over 60KB",
"points": 52.8,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 396,
"oversized": 16
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"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? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"top": [
"library",
"application"
],
"labels": [
"cli",
"mcp-server",
"library"
],
"scores": {
"cli": 10,
"library": 6,
"mcp-server": 9
},
"primary": "cli",
"evidence": [
{
"tier": "declared",
"label": "cli",
"source": "npm.bin",
"weight": 10
},
{
"tier": "distribution",
"label": "library",
"source": "registry:npm",
"weight": 6
},
{
"tier": "dependencies",
"label": "mcp-server",
"source": "dep:@modelcontextprotocol/sdk",
"weight": 4
},
{
"tier": "structure",
"label": "mcp-server",
"source": "mcp_signal",
"weight": 3
},
{
"tier": "tags",
"label": "mcp-server",
"source": "tag:mcp-server",
"weight": 2
}
],
"artifacts": [
{
"path": "package.json",
"labels": [
"cli"
],
"ecosystem": "npm"
}
],
"confidence": "high",
"host_extension": false,
"runs_as_process": true,
"consumed_by_code": true
},
"metrics_version": "2.5.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-08-03T16:12:04.323505Z",
"schema_version": "0.30.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/sdsrss/claude-mem-lite.svg",
"full_name": "sdsrss/claude-mem-lite",
"license_state": "standard",
"license_spdx": "MIT"
}