公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-23 00:58 UTC

LeandroPG19 / cuba-memorys

Persistent memory MCP server for AI agents — Rust, 19 tools, knowledge graph, Hebbian learning, episodic memory, contradiction detection, prospective triggers, Bayesian calibration, zero-config Docker setup.

RustAGPL-3.0★ 26 星标⑂ 3 复刻始于 2026年3月在 GitHub 上查看 ↗

LeandroPG19/cuba-memorys 的健康指数为 100 分中的 61 分,处于「中等」区间。 其得分最高的类别是Engineering Quality(81/100),最低的是Security(37/100)。 最近一次更新在 5 天前。 近期的大部分工作由 1 位贡献者完成。

61
总分 / 100
中等

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

61
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

Leandro Pérez G.个人账户
12 关注者21 个公开仓库始于 2023年11月

该仓库由个人账户拥有。相较于组织支持的项目,单一所有者项目的延续性风险更高。

软件包生态系统

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

79良好 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 5 天前
6.9/36提交节奏 — 52 周中有 10 周有提交
18/18提交量 — 最近一年 169 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year169
human_commit_share1
days_since_last_push5
active_weeks_last_year10

发布纪律

90优秀
评分方式
27/27有发布版本 — 已发布 14 个发布版本
36/36发布时效 — 最近一次发布版本于 5 天前
27/27发布节奏 — 约每 4.8 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count14
latest_release_tagv0.15.0
releases_from_tags
days_since_latest_release5
mean_days_between_releases4.8

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

49存在风险 · 占总体的 18%
评分方式
22.7/60星标 — 26 个星标
2.5/25复刻 — 3 个复刻
1.7/15关注者 — 3 位关注者
所用输入
forks3
stars26
watchers3
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

70良好
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(AGPL-3.0)
18/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template
评分方式
44.6/80月度下载量 — npm, pypi 合计每月 2,229 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packagescuba-memorys, cuba-memorys
dependents
ecosystemsnpm, pypi
total_downloads
monthly_downloads2,229
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

52中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
0/22.5提交分布 — 头号贡献者编写了 100% 的提交
1.4/13.5贡献者广度 — 1 位贡献者
3/10OpenSSF Scorecard:Contributors — project has 1 contributing companies or organizations -- score normalized to 3
所用输入
bus_factor1
contributors_sampled1
top_contributor_share1
评分方式
0/46.8议题解决 — 没有议题或无数据
38.2/38.3PR 接受 — 已裁定的 PR 中 3/3 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/30 approved changesets -- score normalized to 0
所用输入
merged_prs3
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
已排除计分(无数据或不适用):议题解决。 其余权重已重新归一化。
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
8/25所有者影响力 — LeandroPG19 有 12 位关注者
15.1/25既往记录 — 21 个公开仓库,账户约 2 年
所用输入
followers12
owner_typeUser
is_verified
owner_loginLeandroPG19
public_repos21
account_age_days972
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — npm, pypi 上有 2 个软件包
35/35发布时效 — 最近一次发布于 5 天前
20/20版本历史 — 15 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagescuba-memorys, cuba-memorys
ecosystemsnpm, pypi
any_deprecated
min_days_since_publish5

工程质量

基础的工程与文档实践是否到位?

81良好 · 占总体的 20%

工程实践

92优秀
评分方式
24/24CI 工作流 — 3 个工作流
24/24存在测试
16/16Linter 配置
9.6/9.6Pre-commit 钩子
0/6.4.editorconfig
0/20OpenSSF Scorecard:CI-Tests — 无数据
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config
已排除计分(无数据或不适用):OpenSSF Scorecard:CI-Tests。 其余权重已重新归一化。

文档

65中等
评分方式
30/30README
0/25文档目录
15/15文档 / 主页站点 — https://registry.modelcontextprotocol.io
10/10仓库描述
10/10主题标签 — 20 个主题标签
0/10Wiki
所用输入
topicsai-memory, ai-tools, anti-hallucination, graph-database, graphrag, hebbian-learning, knowledge-graph, mcp, mcp-server, model-context-protocol, pagerank, postgresql, rag, semantic-search, vector-search, exponential-decay, rust, npm-package, pypi-package, episodic-memory
has_wiki
homepagehttps://registry.modelcontextprotocol.io
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

37存在风险 · 占总体的 16%

安全态势

37存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 无数据
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 13 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3.7
已排除计分(无数据或不适用):ci_tests。 其余权重已重新归一化。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

64中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 100 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
评分方式
12.6/18一条命令的引导启动 — rust/Cargo.toml(工具链约定,无任务运行器)
22/22自动化测试
11/11Lint / 格式化配置
11/11静态类型检查 — Rust(静态类型)
10/10可复现环境 — Dockerfile, lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 98 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilesCargo.lock
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0.98
toolchain_manifestsrust/Cargo.toml
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — Rust(静态类型)
55/55可控的文件大小 — 采样的 130 个源文件中有 0 个超过 60KB
所用输入
primary_languageRust
largest_source_bytes47,932
source_files_sampled130
oversized_source_files0

机器可读接口

40存在风险
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
0/20MCP 服务器
40/40可运行示例 — examples
所用输入
example_dirsexamples
has_mcp_signal
api_schema_files

关键数据

26GitHub 星标
1贡献者
169最近 12 个月提交数
5距最近推送天数
14发布版本数
1巴士系数(bus factor)
0开放议题
crates.io, npm, PyPI软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch crates package 'cuba-memorys' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository
  • deps.dev does not index npm:cuba-memorys@0.15.0; advisories assessed against the repository dependency graph instead

更多细节

Star 与 Fork 历史 0 ★ / 3 ⇿
0Star
3Fork

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

12233312026-032026-032026-03
OpenSSF Scorecard 3.7 / 10
3.7综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-23 00:58 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
不适用CI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities13 existing vulnerabilities detected
直接依赖 34
注册表软件包版本约束清单文件
crates.iohalf2rust/Cargo.toml
crates.iofutures0.3rust/Cargo.toml
crates.iotokio1rust/Cargo.toml
crates.iotokio-util0.7rust/Cargo.toml
crates.iosqlx0.8rust/Cargo.toml
crates.iopgvector0.4rust/Cargo.toml
crates.ioserde1rust/Cargo.toml
crates.ioserde_json1rust/Cargo.toml
crates.ioort=2.0.0-rc.12rust/Cargo.toml
crates.iotokenizers0.21rust/Cargo.toml
crates.iotracing0.1rust/Cargo.toml
crates.iotracing-subscriber0.3rust/Cargo.toml
crates.ioanyhow1rust/Cargo.toml
crates.ioasync-trait0.1rust/Cargo.toml
crates.iotiktoken-rs0.7rust/Cargo.toml
crates.ionalgebra0.33rust/Cargo.toml
crates.iosha20.10rust/Cargo.toml
crates.iohex0.4rust/Cargo.toml
crates.iouuid1rust/Cargo.toml
crates.iochrono0.4rust/Cargo.toml
crates.iolru0.12rust/Cargo.toml
crates.iozstd0.13rust/Cargo.toml
crates.ioreqwest0.12rust/Cargo.toml
crates.ioflate21rust/Cargo.toml
crates.iotar0.4rust/Cargo.toml
crates.iozip2rust/Cargo.toml
crates.iourl2rust/Cargo.toml
crates.iohtml2text0.12rust/Cargo.toml
crates.iometrics0.24rust/Cargo.toml
crates.iometrics-exporter-prometheus0.16rust/Cargo.toml
crates.iomimalloc0.1rust/Cargo.toml
crates.iotree-sitter0.26.11rust/Cargo.toml
crates.iotree-sitter-rust0.24.2rust/Cargo.toml
crates.iotree-sitter-python0.25.0rust/Cargo.toml
全部依赖 未采集

本报告未能采集到解析后的依赖集合:GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "ai-memory",
        "ai-tools",
        "anti-hallucination",
        "graph-database",
        "graphrag",
        "hebbian-learning",
        "knowledge-graph",
        "mcp",
        "mcp-server",
        "model-context-protocol",
        "pagerank",
        "postgresql",
        "rag",
        "semantic-search",
        "vector-search",
        "exponential-decay",
        "rust",
        "npm-package",
        "pypi-package",
        "episodic-memory"
      ],
      "is_fork": false,
      "size_kb": 4578,
      "has_wiki": false,
      "homepage": "https://registry.modelcontextprotocol.io",
      "languages": {
        "Rust": 910884,
        "Shell": 16630,
        "Python": 48915,
        "PLpgSQL": 15765,
        "Dockerfile": 3455,
        "JavaScript": 8341
      },
      "pushed_at": "2026-07-17T17:53:44Z",
      "created_at": "2026-03-08T06:23:50Z",
      "owner_type": "User",
      "updated_at": "2026-07-17T17:53:27Z",
      "description": "Persistent memory MCP server for AI agents — Rust, 19 tools, knowledge graph, Hebbian learning, episodic memory, contradiction detection, prospective triggers, Bayesian calibration, zero-config Docker setup.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "AGPL-3.0",
      "default_branch": "main",
      "license_spdx_raw": "AGPL-3.0",
      "primary_language": "Rust",
      "significant_languages": [
        "Rust"
      ]
    },
    "owner": {
      "blog": "leandropatodo@gmail.com",
      "name": "Leandro Pérez G.",
      "type": "User",
      "login": "LeandroPG19",
      "company": null,
      "location": "Mexico-Guanajuato",
      "followers": 12,
      "avatar_url": "https://avatars.githubusercontent.com/u/151863062?v=4",
      "created_at": "2023-11-23T16:17:27Z",
      "is_verified": null,
      "public_repos": 21,
      "account_age_days": 972
    },
    "license": {
      "state": "standard",
      "spdx_id": "AGPL-3.0",
      "raw_spdx": "AGPL-3.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.15.0",
          "kind": "minor",
          "published_at": "2026-07-17T17:43:32Z"
        },
        {
          "tag": "v0.14.1",
          "kind": "patch",
          "published_at": "2026-07-15T16:24:16Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-07-15T14:15:26Z"
        },
        {
          "tag": "v0.13.1",
          "kind": "patch",
          "published_at": "2026-07-14T05:36:19Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-07-14T04:50:35Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-07-14T01:10:31Z"
        },
        {
          "tag": "v0.11.2",
          "kind": "patch",
          "published_at": "2026-07-13T18:16:56Z"
        },
        {
          "tag": "v0.11.1",
          "kind": "patch",
          "published_at": "2026-07-13T16:21:51Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-07-13T14:54:22Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-06-04T11:08:15Z"
        },
        {
          "tag": "v0.9.3",
          "kind": "patch",
          "published_at": "2026-05-05T01:07:50Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-04-13T19:37:48Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-04-04T23:55:59Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-03-28T08:23:12Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "d5a69ead36de3d81c70164134e140844ed436c6a",
          "body": "…s 100-char cap\n\nThe updated description (117 chars) failed publish with a 422:\n\"expected length <= 100\". Shortened to 89 chars.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix(release): shorten server.json description under the MCP Registry'…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-17T17:53:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "43051a316cdfeee5564721a0367a5fd038c80afb",
          "body": "…itter codegraph\n\nCargo 0.15.0 · npm 0.15.0 · PyPI 1.17.0\n\nSummary of everything in this release (see CHANGELOG.md for the full\nwrite-up): the server no longer dies when PostgreSQL is unreachable at\nstartup (the actual reason Glama's quality check never went green),\ngit hooks that keep the memory gr\n[…]\nEL 9), and 22 bugs found and fixed\nin a self-audit of all of the above.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "chore(release): 0.15.0 — git-native sync, relation provenance, tree-s…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-17T17:16:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "991423b3114ac3a5e19ce97fdd903d1df0d48d25",
          "body": "The prebuilt binary required glibc >= 2.39 (compiled on ubuntu-latest's\nrunner), which doesn't exist on Debian 12, Ubuntu 22.04, or RHEL 9 —\nstill common server distros. Anyone on one of those got a cryptic\nlibc.so.6 error from `npx cuba-memorys` / `pip install cuba-memorys`\nand most likely just gav\n[…]\ny\nlinked per ldd, --version and the MCP initialize handshake both work.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix(release): build the Linux x64 binary against musl, not glibc",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-17T17:03:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5c2c42392163395da535b8f26460824e0ecf6640",
          "body": "…1 fixed directly)\n\n- codegraph build always resolved project_id=None (globally unscoped):\n  crate::session::project_id() is only ever set by the MCP handlers\n  (cuba_proyecto/cuba_jornada), never by this standalone CLI process\n  or the git hook that invokes it. Added --project NAME, falling back\n  \n[…]\n new, never-cleaned-up observation for every\nunchanged symbol below it.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix(codegraph): close 6 gaps found in self-audit (5 from a workflow, …",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-17T16:34:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4435d7167ce32078491193e8119cdfbef220c5d1",
          "body": "A relation first written by predict(persist=true) as\nprovenance='predicted' stayed labeled 'predicted' forever even after a\nhuman explicitly asserted it via create — the ON CONFLICT DO UPDATE\nclause only touched strength/last_traversed. Found in self-audit,\nadversarially verified.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix(graph): create() didn't reset provenance on an existing relation",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-17T16:34:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "dde98ed03278e001493ce8db26da53f3b841dfcd",
          "body": "- RelationRow had no provenance field, so migration 0035's\n  extracted/predicted/inferred tag was silently dropped on every\n  export and import — a relation persisted as 'predicted' round-tripped\n  through sync as unlabeled/defaulted, losing the distinction entirely.\n- export() never removed per-ite\n[…]\nas\n  hardcoded to DO NOTHING, so overwrite behaved identically to skip.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix(sync): close 3 gaps in cuba_sync export/import found in self-audit",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-17T16:34:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "08c6ac3e4fc3ef7fc8346a7091b966f48ec13d18",
          "body": "…in self-audit\n\n- install() never checked the exit status of the two `git config`\n  calls that register the merge driver — a failing one (e.g.\n  read-only .git/) was silently swallowed and install() still printed\n  \"merge driver: configured\".\n- merge_driver()'s path dispatch only recognized entity f\n[…]\nses per finding,\n2+ agreeing before treating it as real) before fixing.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix(sync): close 7 gaps in hook install/uninstall/merge-driver found …",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-17T16:34:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "90fc53f6ff89988f8360fb068b82e225387101a9",
          "body": "- linkedin_setup.py's local callback server (localhost:8765) served\n  exactly one request via handle_request() called once. A stray\n  malformed/non-HTTP connection (a probe, a health check, another dev\n  tool) never reaches do_GET, so it consumes the one-shot listener\n  before LinkedIn's real redire\n[…]\nitted\n  REDDIT_REFRESH_TOKEN, the variable that actually gates posting.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix(secure): close 2 gaps in the OAuth scripts found in self-audit",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-17T16:33:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fa3f718b23ddd802e0d9ec9095a8e140bcbd321f",
          "body": "…artup path\n\nFollow-up to the fix that lets the server start when PostgreSQL is\nunreachable, found by an adversarially-verified self-review (each\nfinding checked by 3 independent lenses before being treated as real).\n\n- create_lazy_pool could still fail on a syntactically invalid\n  DATABASE_URL (not\n[…]\nease hook that resets it on every release, not just on\n  first connect.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix(startup): close 3 gaps a self-audit found in the Postgres-down st…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-17T16:33:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "772c466f9664ba7c862bd7886938f4bfe13b7682",
          "body": "…ures\n\n- hook uninstall: was missing entirely — install had no way back short of\n  hand-editing .git/hooks/*, .git/config, and .gitattributes. Removes\n  exactly what install added; leaves a pre-existing hook's own content\n  before the marker untouched (tested).\n- hook install --with-codegraph: the g\n[…]\ne parameter (validated against\n  VALID_RELATION_TYPES, same as create).\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix: close 3 completeness gaps found in a self-review of the new feat…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-16T17:39:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a1dfabd4ac083a306a5a232410d3b8bcbccfc5ae",
          "body": "Forgot to run this before the last three commits — cargo fmt --check\nwas failing CI on formatting alone, everything else was green.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "style: cargo fmt",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-16T16:36:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "85ef92128460bd7aa620fdfaa39b4ae149317a3e",
          "body": "The biggest structural gap versus Graphify-style tools: they extract a\nreal dependency graph from source (calls/imports/inherits) via\ntree-sitter, deterministic and LLM-free. cuba-memorys had no code\nunderstanding at all — only what an agent chose to write down by hand.\n\n`cuba-memorys codegraph buil\n[…]\n40\nresolved call edges, 393 import statements, 0 files failed to parse.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "feat(codegraph): tree-sitter code parsing folded into the existing graph",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-16T16:27:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c7ce7f070c5277f5caa58d17a3fc3413e1cbd2da",
          "body": "Closes another gap with Graphify, whose edges carry an EXTRACTED/INFERRED\nconfidence tag so callers can tell a graph fact from a graph guess.\ncuba_puente already drew that line internally (create persists an\nassertion, predict only ever returned Adamic-Adar suggestions) but the\nschema made every row\n[…]\n, which is what predict has always\ndone by default and continues to do.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "feat(graph): provenance tag on relations — extracted vs predicted",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-16T16:01:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1cc619116074d40515e8dd1833af6c12ae95b266",
          "body": "Closes the gap with tools like Graphify that keep a code graph in sync\nautomatically on every commit instead of relying on the agent to\nremember to export.\n\n`cuba-memorys sync <export|import|diff|status>` exposes the existing\ncuba_sync engine as a CLI command, so it can be driven from git hooks\nwith\n[…]\nive\nproduction corpus into a scratch repo before this guard was added.)\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "feat(sync): git hooks + structural merge driver for the knowledge graph",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-16T15:51:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2e8503a9ea7da38fdfb290dc8782246f05533b08",
          "body": "The check job sets working-directory: rust for every step by default,\nso `node npm/install.test.js` was resolving to rust/npm/install.test.js\n— a path that has never existed, since the npm wrapper lives at the\nrepo root. This has failed CI on every push since at least the 0.14.1\nrelease; the actual Rust checks (fmt, clippy, test, audit) were always\ngreen.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix(ci): run the npm smoke test from the repo root, not rust/",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-16T15:02:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "23b35eb0ba4bc4dc8fe784b26ae83c4f406c831d",
          "body": "…sh token\n\nReddit's password grant meant REDDIT_PASSWORD sat in repo secrets in\nplaintext and broke under 2FA. reddit_setup.py now does the OAuth\nauthorization_code dance (duration=permanent, scope=submit only) and\nwrites the resulting refresh token straight to `gh secret set` — never\nprinted, never\n[…]\night to `gh secret set` instead of being\nprinted for manual copy-paste.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix(secure): stop storing the raw Reddit password, use a scoped refre…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-16T14:59:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1d8965bc2658cf48f59b92aea0b4c68c70e06ee5",
          "body": "…he protocol\n\nrun_mcp() propagated create_pool's error with `?`, so an unreachable\ndatabase made the process exit(1) before it could answer initialize or\ntools/list. Glama's quality check boots the container without a real\nDATABASE_URL to catalog the tools, so this is why it stayed stuck on\n\"not tes\n[…]\ntays alive; cargo test (236 tests) stays green against a real\ndatabase.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMC7oU1y3rb3DxCDSBnK74",
          "is_bot": false,
          "headline": "fix(mcp): start without PostgreSQL instead of dying before speaking t…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-16T14:59:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a5dc2d44de531567a96d311586e80b88ea828151",
          "body": "…migrations\n\nCargo/npm/server 0.14.1 · PyPI 1.16.1. Corrective release over 0.14.0, which\nshipped a migration checksum drift that broke startup against any pre-0.14\ndatabase. Bundles:\n- fix(gpu): models runtime --gpu installs CUDA providers; doctor reports real GPU state (c13dd85)\n- fix(migrations):\n[…]\ncomments — migrations are immutable once applied (a245f62)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Jab7HsRHVDiZnqzrvsSrFn",
          "is_bot": false,
          "headline": "chore(release): 0.14.1 — GPU providers, honest GPU doctor, immutable …",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T16:14:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a245f62ebae2c72d033c62df054236630bc3c62d",
          "body": "… once applied\n\nCommit e96df5d stripped comments from 33 already-published migration files as\npart of the no-inline-comments sweep. That changed each file's SHA-384 checksum,\nand sqlx validates the checksum of every applied migration at startup: any\ndatabase created before 0.14 (i.e. every real inst\n[…]\nr-byte (33/33), and migration 0034\napplies cleanly on top.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Jab7HsRHVDiZnqzrvsSrFn",
          "is_bot": false,
          "headline": "fix(migrations): restore original comments — migrations are immutable…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T15:52:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c13dd856e1352264ad7733184a6685ad5bbd25d4",
          "body": "…s real GPU state\n\ndownload_runtime bailed early whenever any libonnxruntime already existed, so\n`--gpu` on a machine that already had the CPU runtime was a silent no-op. And\nextract_library only pulled the main shared object, never\nlibonnxruntime_providers_cuda.so / _providers_shared.so, so even a \n[…]\n, doctor loads all\nthree models on CUDA, peak 3.8 GB VRAM.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Jab7HsRHVDiZnqzrvsSrFn",
          "is_bot": false,
          "headline": "fix(gpu): models runtime --gpu installs CUDA providers; doctor report…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T15:17:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2de896680c678e85beabf59ad102aeebb3eba487",
          "body": "…mit anterior\n\nEl commit del fix anterior falló el git add (incluía scripts/create-app-role.sql, ya\nmovido), así que secure_cli.rs se quedó con el include_str viejo apuntando a un archivo\nque ya no existe — rompiendo TODOS los builds, no solo aarch64. Este commit sí lleva el\npath local a secure_role.sql.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "fix(secure): commitear el path de include_str que quedó fuera del com…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T05:04:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "66481ab231e75c91a35facc6392e38052c7d8ab4",
          "body": "…e aarch64\n\n`include_str!(\"../../scripts/create-app-role.sql\")` apuntaba desde rust/src a la raíz\ndel repo. Los builds nativos (Linux x64, Windows, macOS) tienen todo el árbol montado y\ncompilaban; el cross-build de aarch64 corre en un contenedor que monta sólo rust/, así\nque scripts/ no existía ahí\n[…]\nte\nmismo run, así que ese riesgo quedó descartado de paso.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "fix(secure): el include_str salía del crate y rompía el cross-build d…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T04:58:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fabd5c184f3ce69ab726f1f5766c93d3c8593e0e",
          "body": "…er +92%, cross-platform\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "merge: v0.14.0 — modos (local/red/completo), GPU, procedencia, rerank…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T03:57:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "173b494486a6cd2216758e55e6c851ff5de7e6fe",
          "body": "…r fin rinde\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "release: v0.14.0 — modos de funcionamiento, GPU, y el reranker que po…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T03:57:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e96df5d4e53e16154bddcbde7de9475266f4dd63",
          "body": "…ripts\n\nCompleta el estándar sin-comentarios en el resto del proyecto: los tests (Rust), las\nmigraciones SQL, los wrappers de npm, Cargo.toml y los scripts .py/.sh. src/ ya estaba\nlimpio; esto cierra tests (221), SQL (333), scripts (140) y Cargo.toml (52).\n\nVerificado sin romper nada: build y tests \n[…]\nero a una BD nueva (34 migraciones, 27 tablas, sin dirty).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "style: quitar comentarios de tests, migraciones, npm, Cargo.toml y sc…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T03:46:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9063f6dc8fd1253e128d5e4adc7a4d6e7631f0aa",
          "body": "…-lotes de 16\n\nEl batching metía los 50 candidatos en una sola pasada [50, seq], y con un cross-encoder\nXLM-RoBERTa-large en CPU eso genera activaciones de varios GB: el runtime nativo no daba\nun error, segfaultaba (exit 139). El eval con reranker crasheaba en vez de correr.\n\nscore_pairs ahora proce\n[…]\n por defecto degrada a RRF; el +92% se materializa en GPU.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "fix(rerank): segfault del reranker con batch grande — procesar en sub…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T03:08:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "35382b7a68c8fe6a797b3c3f8a19e2fbd7925b07",
          "body": "…rys secure)\n\nLa app corría como superuser, que en Postgres ignora RLS y puede alterar el audit_log:\nel aislamiento por proyecto y la trazabilidad append-only quedaban decorativos. El rol\nno-superuser cuba_app, las policies y el mecanismo CUBA_SKIP_MIGRATIONS ya existían, pero\ncrear el rol era un pa\n[…]\ntodo en modo red, donde varias\nmáquinas comparten la base.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "feat(secure): rol cuba_app sin superuser para RLS efectivo (cuba-memo…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T01:22:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "35b8aa0640a14162d56ce4dd80ffe08f5fdaa0ad",
          "body": "README con la sección de modos (local/red/completo), el nuevo `cuba-memorys models`\n(reemplaza los .sh), la aceleración GPU, y \"dos máquinas una memoria\" (Supabase/Neon +\nCUBA_NODE_NAME). Tabla de env vars con CUBA_MODE, CUBA_NODE_NAME, CUBA_RERANKER_PATH.\nReferencias a los download_*.sh borrados co\n[…]\na 15\n(añadido models). Entrada de CHANGELOG para la tanda.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "docs: modos de funcionamiento, subcomando models, GPU y procedencia",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T01:10:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a38ee07083e98836c5cec848d24ac13d97fffbfd",
          "body": "… completo\n\nEl reranker mide +92% de calidad pero en CPU tarda decenas de segundos por búsqueda.\nEn GPU es instantáneo, y ahí el modo completo deja de tener un coste de latencia.\n\ncrate::gpu::configure() registra los execution providers compilados en orden —CUDA,\nluego DirectML— y ort cae al siguien\n[…]\nte. La aceleración\nreal se verifica en la máquina con GPU.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "feat(gpu): auto-detección de GPU (CUDA → DirectML → CPU) para el modo…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T01:06:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "31e39354cdcee0f5223583aef60896efaea8be4e",
          "body": "Nuevo estándar: código limpio y auto-explicativo, el porqué en los mensajes de commit.\nEste barrido quita las ~3100 líneas de comentario restantes en src/ (los módulos que no\nse tocaron esta sesión). build, clippy --all-targets y los tests unitarios siguen en\nverde — sólo se quitaron comentarios, ninguna línea de código.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "style: quitar todos los comentarios inline del código",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T00:39:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "57d4240e84283a844d8a78aefcdb0b163ccb3daa",
          "body": "…mentarios\n\n## CUBA_MODE: tres presets de funcionamiento\n\nUn preset que configura conexión y capacidades a la vez, en vez de alinear a mano la\nbase de datos, los modelos y la red saliente:\n\n  local (default) — Postgres en Docker local, modelos locales, sin red saliente.\n                    Privado, \n[…]\n y los wrappers de npm. El build y clippy siguen en verde.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "feat: modo de funcionamiento (local | red | completo) + código sin co…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-15T00:07:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "897c1a44f28a82d9af597e8dc1d93946ae5983fe",
          "body": "…s +92%\n\nA field install on Windows (v0.13.1, from a screenshot) exposed a chain of failures\nthat all shared one shape: something the shell scripts or npm did on Linux quietly did\nnothing on Windows, and the server ran degraded without saying so. This fixes the chain\nand, in the process, finally tur\n[…]\naking a request), and the three shell scripts are deleted.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "feat: cross-platform onboarding, provenance, and a reranker that earn…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-14T23:08:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ca96dc1f22bf572b16ee49d49a5d3bf0d1e664df",
          "body": "Found by installing it, not by trusting the green checkmark.\n\n## cuba_docs shipped to nobody\n\nIt was gated behind a Cargo feature that is off by default — and the published binaries\nARE the default build. The tool existed for an entire release and could not be invoked\nby a single person who installe\n[…]\nstart doubting the message instead of their configuration.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "release: v0.13.1 — two things v0.13.0 shipped that nobody could use",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-14T05:27:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "33b23863f0b725f6407f4c3fef79d48c8f52b86b",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "merge: v0.13.0 — local NLI entailment + cuba_docs",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-14T04:37:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d7d0d1625e934567c3b5601f85485a2209bc4865",
          "body": "…lready knew\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "release: v0.13.0 — verify stopped needing an LLM to tell it what it a…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-14T04:37:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "483366feeb12e6245b4dfe1c949903678a4e504b",
          "body": "demo.sh claimed 13 CLI commands (there are 14) and 210 tests (there are 234). Small\nnumbers, but they are the ones a stranger checks first, and a README that cannot count\nits own commands is not evidence of a project that measures things.\n\nAlso notes the tool count moves to 29 with --features docs.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "docs: the demo was advertising a CLI and a suite that no longer exist",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-14T04:30:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7e9d1dd7d95963767ed9a422df9c01a4c773f95d",
          "body": "A memory server can tell you what you decided. It cannot tell you what signature\n`tokio::spawn_blocking` shipped with last month — and a model confidently writing an\nAPI that was renamed two versions ago is a failure memory cannot prevent, because the\nmemory of the API is the thing that is wrong.\n\n`\n[…]\n one that gates the merge is `cloud_metadata_is_rejected`.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "feat(docs): cuba_docs, and the SSRF guard cuba-search never actually had",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-14T04:28:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "96a5797cd044f5fe9774b858daec578b40ad6534",
          "body": "…ement killed\n\n`cuba_faro mode=verify` handed every claim to an LLM: ~20 s through the `claude`\nCLI, and with no CLI and no MCP sampling, no verdict at all. Entailment is a\nclassification problem, so it is now classified — mDeBERTa-v3-base-xnli on the ONNX\nruntime this crate already links. ~50 ms, o\n[…]\n and from the MCP was hitting two\ndifferent vector spaces.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014niDVZavMbtqvqwp5Vpy72",
          "is_bot": false,
          "headline": "feat(verify): decide entailment locally — and three ideas that measur…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-14T03:59:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8c9165c376ef8ecb188cc23fae98800292233791",
          "body": null,
          "is_bot": false,
          "headline": "chore: ignore the eval generator's checkpoint file",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-14T01:02:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5038a426e743af4eae649909ee27c4f40b9cee4e",
          "body": "… that lied\n\nCargo 0.12.0 · npm 0.12.0 · PyPI 1.14.0\n\nThe README opened with \"every number in this README measured rather than assumed.\"\nEvery number in it came from a benchmark with ten queries that graded relevance by\nsubstring match and normalized nDCG against what it had retrieved rather than wh\n[…]\nD warnings · 223 tests · audit · integration — all exit 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "release: v0.12.0 — the README was publishing numbers from a benchmark…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-14T00:51:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c7e7e7a1844a64ec36c2e9f66319ebd395c015f",
          "body": "…to measure\n\nTwo published findings are withdrawn, and the reranker turns out to have never run.\n\n## The benchmark was broken three ways, not one\n\nIt had TEN queries — a 95% interval of roughly ±0.12 and a minimum detectable effect\nnear 0.25 nDCG. That much was already known. What was not known:\n\n**\n[…]\nh zram.\n\nfmt · clippy -D warnings · 206 tests — all clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix(eval): the benchmark could not measure what this project claimed …",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T23:57:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3bc1444c278b102d3dbc53e42928d514344848c8",
          "body": "CC BY-NC 4.0 was the wrong license for this. Creative Commons themselves\nrecommend against using their licenses for software: they do not distinguish\nsource from binary and carry no patent grant. Worse, the NonCommercial clause\nmade cuba-memorys unusable by the people it is written for — a memory se\n[…]\nmpany.\n\nDependencies stay permissively licensed (see rust/deny.toml): our own code can\nbe relicensed later, someone else's cannot.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Relicense under AGPL-3.0",
          "author_name": "Leandro Pérez G.",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T20:08:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3a50e6aeb3d67eaa3cbc1f1d41ac17e69f3316f3",
          "body": "Cargo 0.11.2 · npm 0.11.2 · PyPI 1.13.2\n\nI went to update the README and the demo. The demo pointed at verify, and verify\ntold me — with 0.61 confidence — that cuba-memorys is written in Java.\n\n`cuba_faro mode=verify` scored claims by cosine similarity to the retrieved\nevidence. Similarity measures \n[…]\nrnings · 210 tests · audit · build · integration — exit 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "release: v0.11.2 — the anti-hallucination feature was hallucinating",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T18:00:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "322cf60dd40fa64143dd63ea19651c7a41272e5b",
          "body": "…ditionally\n\nMy own test failed CI while passing locally. The reason is the guard it was testing\naround: cronica writes NEITHER vector NOR label when no ONNX model is loaded — a\nhash-fallback vector wearing a real model's name would corrupt search far worse\nthan a missing vector would. CI has no 570\n[…]\nill fails when the constant is put back at the write site.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "test: the model-tag invariant is conditional, and I asserted it uncon…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T16:05:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1c4efc210d03eda838699237b89063153df04ddd",
          "body": "Cargo 0.11.1 · npm 0.11.1 · PyPI 1.13.1\n\nBoth are in the same family v0.11.0 set out to eliminate — something breaks and\nnothing says so — which is the point worth keeping: that class of bug is not a list\nyou finish, it is a habit you build.\n\nThe model tag: every write site reached for a `pub const \n[…]\nrnings · 200 tests · audit · build · integration — exit 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "release: v0.11.1 — two bugs found by using v0.11.0, not by testing it",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T15:49:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f67f92f2234c274938b111b90232aa1871dd6ed8",
          "body": "One observation was missing a vector. The only cure `reembed` offered was to\nrecompute all 1,461 — overwriting 1,460 good vectors to fill one empty. That is not\na maintenance command, it is a threat, and the permission classifier stopped me from\nrunning it on the live brain for exactly that reason.\n\n[…]\nies. Both forms parse now, and an unknown one is an error.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix(reembed): its smallest unit of work was \"everything\"",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T15:45:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8ce70c1d9cdc94f4cf5cee85e690f558d3d9b679",
          "body": "`embeddings::onnx` exposed a `pub const CURRENT_MODEL = \"multilingual-e5-small\"`\nright next to a `current_model()` that reads CUBA_EMBED_MODEL. Someone wrote that\nfunction precisely to fix this, and documented it — \"Overridable with\nCUBA_EMBED_MODEL so a bge-m3 corpus is tagged correctly\". Then four\n[…]\nrnings · 200 tests · audit · build · integration — exit 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix(embeddings): every new memory was stamped with the wrong model name",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T15:38:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "954c81f97a31ed1056e731c8a833b33af64f4607",
          "body": "…have advertised the old release\n\nOne release, one number, four files each holding their own copy of it:\n\n  Cargo.toml     names the release binaries\n  package.json   builds npm's postinstall download URL\n  pyproject.toml the PyPI version (its own series: 1.{minor+2}.{patch})\n  server.json    what t\n[…]\nrnings · 200 tests · audit · build · integration — exit 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix(release): server.json still said 0.10.0 — the MCP Registry would …",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T14:38:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ad09fceeee59bfce2ec9ffd27c9dc54a0f5707dc",
          "body": "Three bugs, one root: argument parsing ended in a catch-all that fell through to\nthe MCP server. Anything the binary did not recognise booted the server.\n\n`cuba-memorys --version` therefore connected to PostgreSQL and applied migrations.\nThat is the one command a person runs precisely BECAUSE they d\n[…]\nrnings · 200 tests · audit · build · integration — exit 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix(cli): --version ran migrations; npm could launch a different version",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T14:26:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4fd75779e204958129a35b3ddedcd979fc3c57f8",
          "body": "The E2E job caught what the unit tests could not: making `compact` the default\nshipped a response an agent can read but cannot act on.\n\ncompact carried entity, content, type, importance and score — and no id. Deleting\na memory needs the observation_id (cuba_cronica delete). Reinforcing or correcting\n[…]\ns · unit tests · audit · build · integration — all exit 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix(faro): compact left out the id, making every result a dead end",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T13:55:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "990d2f677b98ce912a34fef9a59a6c80a9ceac14",
          "body": "… error hid why\n\nThree defects, one chain, found by actually using the thing.\n\n1. THE MIGRATION SCRIPT HAD A HARDCODED TABLE LIST. It named brain_observations\n   and brain_episodes. Migration 0033 then added brain_procedures with its own\n   vector column, the script did not know, and that table stay\n[…]\n\nfmt, clippy -D warnings, test, audit, build — all exit 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix: a hand-written table list broke the embedding migration, and the…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T13:40:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "390ef5c771d860032262609f0295de784c5ce043",
          "body": "…g 384-d\n\nWarp Terminal keeps its own `~/.warp/.mcp.json` and spawns cuba-memorys from it\nexactly like Claude does. It was not on the audit's list, so it kept launching\n384-d servers against a 1024-d column — vector branch dead, results silently\nlexical — while `setup check` reported \"all configs co\n[…]\nturned a Solid Edge\nVPN decision and a CSS animation note.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix(setup): audit Warp's MCP config too — it was the one still servin…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T13:29:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0fd63bf3b695b3f61bf2c9b84ca3b1eeee26afa4",
          "body": "cargo audit failed CI — a step my local pre-flight was not running, which is why\nthis reached GitHub instead of being caught here.\n\n  quinn-proto      0.11.14 → 0.11.16   RUSTSEC-2026-0185, severity 7.5 (HIGH)\n                                       remote memory exhaustion from unbounded\n           \n[…]\n                exit 0\n  cargo build --release      exit 0\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "security: patch two RUSTSEC advisories in transitive dependencies",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T05:16:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "39404425a9ade22c3fa82fb4de96e1f902ed8906",
          "body": "Two smoke tests were protecting nothing, and one of them failed the release.\n\n`test_all_tools_defined` asserted an exact count — `assert_eq!(tools.len(), 25)`.\nThat is the wrong invariant twice over: it says nothing about WHICH tools exist,\nand it breaks on the one change that is always safe — addin\n[…]\ny -D warnings, and the full suite all pass on exit code 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "test: assert the invariants these tests claimed to assert",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T05:04:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c6e61fd95ae7e4284b8173af391e6983f9dc0f7",
          "body": "Version bump across the three channels: Cargo 0.11.0 · npm 0.11.0 · PyPI 1.13.0\n(PyPI keeps its independent offset). The tag must be v0.11.0 — npm/postinstall.js\nfetches the binary from releases/download/v${package.json.version}/.\n\nCHANGELOG documents what landed, and equally what did NOT: the cross\n[…]\nish a version. Waiting for CI to go green on GitHub first.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "release: v0.11.0 — zero technical debt, ready to publish",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T04:56:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "19eda8537c56663ca12e7ba20df3d5dcdf035ed3",
          "body": "… layers of fix\n\nCaught it live. The MCP was serving visibly worse results than the CLI running\nthe same code: same query, vector_score=0.0 from the server and 0.00766 from the\ncommand line. The reason was a 384-d model talking to a 1024-d column after the\nbge-m3 migration — pgvector rejects every c\n[…]\nstic across runs, degraded=false.\n183 tests, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix: a dimension mismatch made hybrid search silently lexical — three…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T04:44:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b521137fd1305ade9c3341057a1be94a54daa75f",
          "body": "… v0.11\n\ndocs/ and sandbox/ were never install material. sandbox/ carries /home/leandro\npaths and references to a live brain; docs/ are work plans, not documentation a\nuser needs to run the project; and sandbox/.prod-baseline should never have been\ncommitted. Removed from git with --cached — they st\n[…]\nipts, and the package manifests.\n\n181 tests, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "chore: remove internal working files from the repo; refresh README to…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T04:19:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "23cd6a3f225a0fc67b6b0c0d236bbf984fecbda9",
          "body": "…lls export\n\nThe taxonomy the field converged on has four stores: episodic (what happened),\nsemantic (what is true), PROCEDURAL (how something is done), and working. cuba\nhad three. Its eight observation types can all record that something IS the case;\nnone of them records how to DO something — how \n[…]\nration 0033 applied to brain: 1443 observations\nuntouched.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "feat(receta): procedural memory — the fourth memory (ACT-R), with Ski…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T03:16:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7d274c35a76ab43fe4b47e83e66aafaf9985a887",
          "body": "…dacted\n\nThe redaction tests used the project's REAL Postgres password as their fixture,\nin a PUBLIC repository. A test that asserts secrets never leak has no business\nshipping one.\n\nSwapped for a fake, and parameterized sandbox/env.sh.\n\nNote for the record: `memorys2026` was already public in this \n[…]\n, rotate it — and it does not\nbelong in source either way.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "security: fake credentials in the tests that prove credentials are re…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T02:41:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "15b928460c8e8d9ef00128ff9fea6fdccb8c08d5",
          "body": "Linux appends \" (deleted)\" to /proc/<pid>/exe when the running image is replaced,\nso the file NAME becomes \"cuba-memorys (deleted)\". The check matched the raw name\nagainst \"cuba-memorys\" and skipped anything else — filtering out precisely the\nprocesses it exists to find.\n\nCaught it on the live machi\n[…]\nbefore comparing. Now: 6 stale processes, correctly named.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix(doctor): the staleness check could not see a stale process",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T02:30:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aa9f9e4ecda1eaca5beab42049ceca867ffca4d6",
          "body": "Trae dos bloques de trabajo, todo verificado en un sandbox aislado contra una\ncopia de brain, sin que la base viva se tocara en ningún momento.\n\nPLAN A — las 16 mejoras de la investigación de Engram (6-jul), que se habían\nquedado en 1 de 14 ramas cuando aquella sesión se cortó:\n  doctor, CLI search/\n[…]\ndo, y con el resultado escrito.\n\n185 tests, clippy limpio.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "merge: sandbox/all-improvements — Plan A (DX) + Tier 1 (medido)",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T02:16:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0a6b8a336e48a73bd2c10f929aa8523dbd8111cb",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "style: tests after code (clippy)",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T02:16:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a2b4d418c8eca3cb1cf6351850574b958c6e1821",
          "body": "The CLAUDE.md driving this setup says: \"MANDATORY session start → cuba_jornada\nthen cuba_faro\". And the same file lists forgetting to do it as anti-pattern AP2,\nContext Amnesia — which is the author admitting, in writing, that the instruction\nis not reliable enough to trust. Asking a model to rememb\n[…]\nontext and teaches nothing.\n\n175 tests pass, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "feat(recall): a hook cannot forget — deterministic session context (AP2)",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T02:11:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "34e7aee865563170f2d193113788ac530c1ea9d6",
          "body": "…it does not earn its place\n\nThe reranker has never run. It was in \"identity fallback\" with no model on disk,\nso the feature existed on paper only. Downloaded bge-reranker-v2-m3, ran it, and\nfound two things.\n\nTHE INTEGRATION COULD NOT HAVE WORKED. faro added `cross_encoder_score * 0.0001`\nto the fu\n[…]\n a 1.1 GB model on a hunch.\n\n172 tests pass, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix(rerank): wire the cross-encoder correctly — then cut it, because …",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T01:53:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3e51927abfc5b8a348b6ef7f032a6fdda545a75f",
          "body": "…ot earn its place\n\n151 of 259 entities had no relation at all: invisible to PageRank, to community\ndetection, and to multi-hop retrieval. Yet 128 of them appear in a working\nsession beside another entity. The evidence was in the corpus; nothing turned it\ninto an edge.\n\n`cuba-memorys link` proposes \n[…]\nected rather than repeated.\n\n172 tests pass, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "feat(graph): NPMI auto-linking — and the associative retrieval does n…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T01:30:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ed68ec853139a5b4359b298216985c6dc0e78710",
          "body": "…o functions lost\n\nAll 25 tool schemas ride in the agent's context on every session: 25,060\ncharacters of JSON, most of it describing maintenance surfaces (REM cycles, the\naudit log, GDPR erasure, Bayesian calibration) an agent never reaches for\nmid-task. It pays that whether it searches memory once\n[…]\nnumber is the measured one.\n\n167 tests pass, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "feat(tools): progressive disclosure — 67% smaller tool catalogue, zer…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T01:06:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1f265594d1ad04313b6bfce792c238e1a9755acd",
          "body": "…al calibration\n\nSwitching abstention on for the first time revealed it rejected 100% of\nANSWERABLE queries. Four separate defects, each measured, each fixed.\n\n1. THE EVAL PANICKED on an empty result list. precision_at_k did\n   `k.min(len).max(1)` — added to dodge a division by zero — so with zero\n \n[…]\nabstentions, nDCG unchanged.\n164 tests pass, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix(ood): abstention works for the first time — Ledoit-Wolf + conform…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T00:53:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "53cc2b854584b537462008731c4b1eed4f3410ad",
          "body": "… not just quality\n\nThree defects, each invisible without the number that was missing.\n\n1. The token budget counted the wrong thing. It summed each row's FULL content,\n   and compact_result afterwards truncated that same content. So the caller's\n   5000-token budget was spent counting text that was \n[…]\nrefuses to answer anything.\n\n159 tests pass, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "perf(faro,eval): 40% fewer tokens at identical quality; measure cost,…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-13T00:11:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fadc73d5b0c3531225a282b471c45074708759af",
          "body": "…red retrieval\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "docs: final state of the sandbox implementation — 16/16 Plan A, measu…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-12T23:23:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a3e9d25e7518a0805b109a53b04a2e8e3308b887",
          "body": "… (A11)\n\nUntil now \"scope\" was a search filter: every query appends project_id, and the\ntenant_isolation policy trusts app.current_project — a session variable the\napplication sets itself. That stops two projects bleeding into each other by\naccident. It is not authorization: nothing said WHO may rea\n[…]\nql).\ndoctor reports it as `runtime_role`.\n\n159 tests pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "feat(rbac): principals × grants, the minimum real authorization model…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-12T23:21:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "54ae09dfa4831b3d09f6b40e787dcd309f95dd87",
          "body": "The Obsidian export makes the graph browsable; nothing showed the system's own\nstate — which invariants hold, how much of the corpus is reachable, what is\nsilently degraded. This renders the same checks `doctor` runs, plus the shape of\nthe corpus, into one HTML file.\n\nNo web server and no new depend\n[…]\nt, exactly the two we emit.\n\n159 tests pass, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "feat(dashboard): self-contained read-only HTML view of the brain (A6)",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-12T23:14:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3047404339e1e87474136360575a4b64e209e577",
          "body": "…unstable hash\n\npayload_hash claimed sha256 in its docstring and called DefaultHasher in its\nbody — and that is not cosmetic. std's hasher is explicitly NOT stable across\nRust releases (\"should not be relied upon over releases\"), yet this hash is\npersisted in brain_sync_state and compared ACROSS MAC\n[…]\nchars, import reads it back.\n158 tests pass, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "feat(sync): content-addressed chunks + Transport seam (A9, A10); fix …",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-12T23:08:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "66aa6d64f4d8f7d07b63e50164a44eb26c44f220",
          "body": "…sign docs (A8, A12, A16)\n\nThe judge sends observation text to an external model — the `claude` CLI, the\nclient's sampling endpoint, or the API. Observations are written by agents about\nreal work, and real work contains connection strings and tokens. The project's\nown security rules forbid logging o\n[…]\ndoes nothing.\n  - why the heavy stack, and why NOT SQLite.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "fix(judge): stop shipping credentials to a third-party LLM (A15) + de…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-12T22:53:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eec5584156b8ebcd901f727d3302f288a58b1a1b",
          "body": "…(A7, A14/B3, A3)\n\nsetup — declarative client registration, born from a real bug: ~/.mcp.json had\nONNX_MODEL_PATH, ~/.claude.json did not, so every MCP process spawned from the\nsecond config ran with no embedding model and the vector branch returned an\nempty vec, silently. `setup check` audits every\n[…]\nder a parallel\ntest runner.\n\n143 tests pass, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "feat(setup,profiles,doctor): client wiring, tool profiles, staleness …",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-12T22:43:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4c4f340a62de5aacc63630afd8ec4b6fa86a6885",
          "body": "…A5, A2)\n\nThe brain was invisible: the only way to ask it anything was to ask an LLM to\nask it for you. That is a strange property for a system whose job is to\nremember your work.\n\n  cuba-memorys search \"...\"     hybrid retrieval, same engine as cuba_faro\n  cuba-memorys save <e> \"...\"   same dedup/e\n[…]\ny list with 151 singletons.\n\n137 tests pass, clippy clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "feat(cli): human surface — search/save/delete + Obsidian export (A4, …",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-12T22:31:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5840e20c9f4e3520fb0dff6ebf1355085ef4fa0f",
          "body": "src/cuba_memorys/ was confirmed orphaned: no [project.scripts] entry\nin pyproject.toml, maturin builds bindings=\"bin\" from rust/Cargo.toml\nonly, and no pyo3/PyModule linkage exists anywhere in rust/src or\nrust/Cargo.toml. It was last touched by the Rust rewrite commit and\nhas been dead weight since.\n[…]\n a broader git grep\nconfirming all remaining cuba_memorys references are the Rust crate's\nown module path (rust/src, rust/tests, rust/examples, RUST_LOG docs),\nunrelated to the removed Python package.",
          "is_bot": false,
          "headline": "chore: remove dead Python legacy code from pre-Rust-rewrite",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-12T22:17:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e76d4a06e46c675225716c5fe73981c49f10b697",
          "body": "Every one of the four critical v0.10 bugs was silent: the server kept\nanswering, just wrong. `cuba-memorys doctor` asserts the invariants those\nbugs violated and exits non-zero when the system is lying:\n\n  - cuba_or_tsquery present (its absence = zero recall, silently)\n  - ONNX model actually loaded\n[…]\nanary: written in the sandbox, absent\nfrom the live brain.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B7NSDXYAiPYahRcGiU9cqg",
          "is_bot": false,
          "headline": "feat(doctor): read-only health check + isolated sandbox (A1)",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-12T22:17:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "27ad5bdbb07cdc630e80a1bb67ffbb6309bc115e",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014AckURooVGZsexXPrji9xw",
          "is_bot": false,
          "headline": "docs: mark 0.7, 1.2, bge-m3 (1.4/5) and 2.1b done, with measured results",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T21:50:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "03355b737ea6c503aead445a142ce708e62cd359",
          "body": "…nomy)\n\nLongMemEval's corpus is conversational (haystack sessions) and can't be ingested\nverbatim into cuba's entity/observation KG, so instead adopt its 5-ability\ntaxonomy in the runnable harness: EvaluationSample gains `ability`\n(question_type) and `abstain`; run_faro_eval reports a per-ability nD\n[…]\n2, abstention=100%,\nknowledge-update=1.00, temporal=0.979.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014AckURooVGZsexXPrji9xw",
          "is_bot": false,
          "headline": "feat(2.1b): per-ability eval breakdown + abstention (LongMemEval taxo…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T21:47:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1714dbfb8507bb2f227519a31a8b6030bc57f354",
          "body": "Decouple the ONNX pipeline from e5-small so a stronger multilingual model can\nbe swapped in by config (no recompile): CUBA_EMBEDDING_DIM (runtime dim),\nCUBA_QUERY_PREFIX/CUBA_PASSAGE_PREFIX (e5 prefixes vs none), CUBA_POOLING\n(mean vs cls), CUBA_EMBED_MODEL (corpus tag). token_type_ids is now passed\n[…]\n),\n+19.5 pts; knowledge-update +36.9. brain never touched.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014AckURooVGZsexXPrji9xw",
          "is_bot": false,
          "headline": "feat(5): model-agnostic embeddings + bge-m3 1024-d migration",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T21:47:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6c52e25641f25ad8902f4c53576d12289ba3cbe0",
          "body": "…yle)\n\nCloses gap #2: cuba resolved conflicts by a cosine threshold. Now the LLM\njudge classifies each candidate vs its most similar existing fact and that\nverdict maps to an explicit operation (cognitive/memory_op.rs): supersedes/\ncontradicts -> Update (supersede old + keep new), complementary/unre\n[…]\nmporal). 6 unit tests for the judgment->operation mapping.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014AckURooVGZsexXPrji9xw",
          "is_bot": false,
          "headline": "feat(1.2): explicit ADD/UPDATE/DELETE/NOOP memory operations (mem0-st…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T21:26:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1eb944809f238aba0904c73b195a61fd27a295c3",
          "body": "…forced\n\nThe MCP ran as superuser `cuba`, which has implicit BYPASSRLS and is an\nimplicit MEMBER of every role, making migration 0017 RLS policies and the\n0016 audit-log tamper guard inert. Fix: run the app as a NOSUPERUSER\nNOBYPASSRLS role `cuba_app` (scripts/create-app-role.sql, idempotent,\ndata-p\n[…]\na_app with CUBA_SKIP_MIGRATIONS=1 and eval runs unchanged.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014AckURooVGZsexXPrji9xw",
          "is_bot": false,
          "headline": "fix(0.7): non-superuser runtime — RLS + audit append-only actually en…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T21:15:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "380e944e1c8d76604ad1e6591c0414de876c62af",
          "body": "… sync)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "merge: feat/dimension-aware-sync — Phase 5 readiness (dimension-aware…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T17:51:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "40c659f3375d3e4c382f5cde8338fb115c84203e",
          "body": "Fixes a latent bug and prepares the switch to bge-m3 (1024-d) without touching\ndata. cuba_sync export already wrote each vector at its true length, but import\nhardcoded rec_size = 16 + 384*4, so importing a blob from any non-384 model\n(bge-m3) would misparse and silently skip every vector. Now the m\n[…]\nt, clippy --all-targets -D warnings, 125 unit tests green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "feat(sync): dimension-aware embedding blob; Phase 5 (bge-m3) readiness",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T17:51:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8917f9c44b5aff5a11df3f0b01a7d8317044fa2d",
          "body": "…date\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "merge: feat/knowledge-update-supersede — Phase 4, opt-in knowledge up…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T17:45:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c3eee23d1f123c2dfe646561c0a7a531fb7c7a56",
          "body": "Adds the \"knowledge update\" ability (LongMemEval dimension; Zep/Graphiti's\nsignature move) on top of cuba's bitemporal supersede. Opt-in\n`supersede_conflicts` on cuba_ingesta auto_extract: for each extracted fact,\nfind the most similar existing observation of the same entity in the\nrelated-but-not-d\n[…]\nt, clippy --all-targets -D warnings, 125 unit tests green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "feat(auto_extract): knowledge-update via supersede (Phase 4)",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T17:45:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f3f9f9683572d67dbeee7839794d538f1980af5e",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "docs: mark auto_extract (Phase 3) done in the plan",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T17:18:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8f6ffe8ed9e923a2261f1644c89f3c1f5f57f005",
          "body": "…ampling\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "merge: feat/auto-extract-sampling — Phase 3, LLM extraction via MCP S…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T17:17:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2cb1f592dfb233b21c1e14f0d30b1e1d6619c627",
          "body": "…hase 3)\n\nCloses cuba's biggest gap vs mem0/Zep: it had no automatic extraction, so the\nagent had to remember to call the write tools explicitly (the AP2 Context\nAmnesia failure). New `cuba_ingesta action=auto_extract`:\n\n- Asks the *calling client's* LLM — via MCP Sampling, so $0 and no API key,\n  r\n[…]\nippy --all-targets -D warnings, 125 unit tests (+4) green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "feat(ingesta): auto_extract — LLM fact extraction via MCP Sampling (P…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T17:17:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f619309a0219fbf2b554fbbe8efb849f663bc43a",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "docs: mark associative retrieval (Phase 2) done in the plan",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T17:03:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5bd7c8c95840f4ac3ce0fca91204cc88a343e024",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "merge: feat/associative-retrieval — Phase 2, opt-in multi-hop expansion",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T17:02:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bd21ffc6db1b6b7ca442275568d17a7f25b2de9b",
          "body": "HippoRAG-style associative retrieval, wired into cuba_faro and measured with the\nPhase 1 eval harness. Seeds spreading activation (graph::activation, already in\nthe tree but never used by search) from the entities matching the query, then\npulls in the top-importance observations on graph-connected e\n[…]\nt, clippy --all-targets -D warnings, 121 unit tests green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "feat(faro): associative multi-hop expansion (Phase 2)",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T17:02:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "817c241a4239c2a3218b0d242e117798c339e9cb",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "docs: mark eval harness (Phase 1) done in the plan",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T16:46:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a20ccb4e427d85d89ba104592ccd3717f8e586bc",
          "body": "…eval\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "merge: feat/eval-harness-entrypoint — Phase 1, runnable non-mutating …",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T16:45:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3b30b8e06c3cffed3c8bf7f04940f9f0de669914",
          "body": "The eval harness (rust/src/eval/) had zero callers: nDCG/MRR/P@k/R@k existed but\nnothing invoked them, so no mechanism in the cognitive/graph stack had a way to\nprove it improved retrieval. This is Phase 1 of docs/PLAN-MEJORAS-v0.11.md —\nmeasure before optimizing.\n\n- New CLI subcommand: `cuba-memory\n[…]\nt, clippy --all-targets -D warnings, 121 unit tests green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "feat(eval): make the retrieval benchmark runnable (Phase 1)",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T16:45:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b78783213f2838d9d096a2a642b05435c716f47b",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "docs: mark Tier-0 fixes 0.6/0.8/0.9/0.10 as done in the plan",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T16:28:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "181874294f9cfd7466f8fe48b18b9ce75ef0a654",
          "body": "…oral checks, indexes\n\nSecond audit round. Additive migrations only; brain verified unchanged\n(obs=1420, ent=258, facts=550, err=35). Gate green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "merge: fix/decay-community-schema — decay anchor, Louvain fix, bitemp…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T16:24:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "29d8ab94630eb59ddc3bbf9085bd639e66c851f0",
          "body": "Second round of audit findings. All migrations are additive; no stored datum\nis modified or removed (verified: brain unchanged at obs=1420, ent=258,\nfacts=550, err=35 before and after).\n\n1. Compounding decay (migration 0028 + protocol.rs + zafra.rs)\n\n   The REM daemon runs every 4h and applied\n     \n[…]\nigrations applied to brain with counts verified unchanged.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "fix: compounding decay, Louvain modularity, bitemporal checks, indexes",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T16:24:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "008e8e8ad98bc0f7d2249e78e221ec8165546e55",
          "body": "…ession, task drain\n\nFour silent-failure bugs, each verified against the live corpus before and\nafter. Full gate green: fmt, clippy --all-targets -D warnings, 121 unit tests,\n3 DB integration tests, e2e_all_tools.py, mcp_live_session 25/25 tools.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "merge: fix/critical-bugs-v0.10 — recall, OOD threshold, per-process s…",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T15:37:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c90a66e0a90f56c4869167f7bd4fa45b1874d84d",
          "body": "All four degrade the server without ever telling the agent, which is why\nthey survived four releases and a passing test suite.\n\n1. Zero recall on multi-term queries (migration 0026)\n\n   Every full-text branch used `plainto_tsquery('simple', $1)`, which joins\n   lexemes with AND. A document had to co\n[…]\n test that\nprobes actual samples rather than the centroid.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9vbnhcYtrQJhK7UoK2qFx",
          "is_bot": false,
          "headline": "fix: four silent-failure bugs in retrieval, OOD, sessions and shutdown",
          "author_name": "LeandroPG19",
          "author_login": "LeandroPG19",
          "committed_at": "2026-07-10T15:36:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 14,
      "commits_last_year": 169,
      "latest_release_at": "2026-07-17T17:43:32Z",
      "latest_release_tag": "v0.15.0",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 10,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 4.8
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 85,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "cuba-memorys",
          "exists": true,
          "license": "AGPL-3.0-only",
          "keywords": [
            "mcp",
            "memory",
            "knowledge-graph",
            "ai-agent",
            "model-context-protocol",
            "hebbian",
            "anti-hallucination",
            "pagerank",
            "postgresql",
            "rust"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/cuba-memorys",
          "is_deprecated": false,
          "latest_version": "0.15.0",
          "repository_url": "https://github.com/LeandroPG19/cuba-memorys",
          "versions_count": 14,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2229,
          "first_published_at": "2026-03-28T11:32:00.623000Z",
          "latest_published_at": "2026-07-17T17:43:46.962000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "cuba-memorys",
          "exists": true,
          "license": "AGPL-3.0-only",
          "keywords": [
            "mcp",
            "memory",
            "knowledge-graph",
            "hebbian",
            "ai-agent",
            "anti-hallucination",
            "pagerank",
            "model-context-protocol",
            "Development Status :: 4 - Beta",
            "Intended Audience :: Developers",
            "License :: OSI Approved :: GNU Affero General Public License v3",
            "Operating System :: MacOS",
            "Operating System :: Microsoft :: Windows",
            "Operating System :: POSIX :: Linux",
            "Programming Language :: Rust",
            "Topic :: Scientific/Engineering :: Artificial Intelligence"
          ],
          "ecosystem": "pypi",
          "matches_repo": null,
          "registry_url": "https://pypi.org/project/cuba-memorys/",
          "is_deprecated": false,
          "latest_version": "1.17.0",
          "repository_url": null,
          "versions_count": 15,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-03-28T11:16:10.196390Z",
          "latest_published_at": "2026-07-17T17:51:37.361328Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 3,
      "stars": 26,
      "watchers": 3,
      "fork_history": {
        "days": [
          {
            "date": "2026-03-09",
            "count": 1
          },
          {
            "date": "2026-03-16",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 3,
        "total_forks": 3
      },
      "star_history": null,
      "open_issues_and_prs": 12
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "rust/Cargo.toml"
      ],
      "largest_source_bytes": 47932,
      "source_files_sampled": 130,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "package.json",
        "pyproject.toml",
        "rust/Cargo.toml"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "crates",
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "half",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "futures",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "tokio",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "tokio-util",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.7"
        },
        {
          "name": "sqlx",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8"
        },
        {
          "name": "pgvector",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "serde",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_json",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "ort",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "=2.0.0-rc.12"
        },
        {
          "name": "tokenizers",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.21"
        },
        {
          "name": "tracing",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "tracing-subscriber",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "anyhow",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "async-trait",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "tiktoken-rs",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.7"
        },
        {
          "name": "nalgebra",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.33"
        },
        {
          "name": "sha2",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.10"
        },
        {
          "name": "hex",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "uuid",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "chrono",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "lru",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.12"
        },
        {
          "name": "zstd",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.13"
        },
        {
          "name": "reqwest",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.12"
        },
        {
          "name": "flate2",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "tar",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "zip",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "url",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "html2text",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.12"
        },
        {
          "name": "metrics",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.24"
        },
        {
          "name": "metrics-exporter-prometheus",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.16"
        },
        {
          "name": "mimalloc",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "tree-sitter",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.26.11"
        },
        {
          "name": "tree-sitter-rust",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.24.2"
        },
        {
          "name": "tree-sitter-python",
          "manifest": "rust/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.25.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 12,
        "merged_prs": 3,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "LeandroPG19",
          "commits": 152,
          "avatar_url": "https://avatars.githubusercontent.com/u/151863062?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "announce.yml",
        "ci.yml",
        "publish.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 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": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "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": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "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": 0,
            "reason": "13 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "d5a69ead36de3d81c70164134e140844ed436c6a",
        "ran_at": "2026-07-23T00:58:03Z",
        "aggregate_score": 3.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-17T18:09:26Z",
      "oldest_open_prs": [
        {
          "number": 1,
          "created_at": "2026-03-13T19:16:22Z",
          "last_comment_at": "2026-03-13T19:16:23Z",
          "last_comment_author": "google-labs-jules"
        },
        {
          "number": 2,
          "created_at": "2026-03-13T19:19:29Z",
          "last_comment_at": "2026-03-13T19:19:30Z",
          "last_comment_author": "google-labs-jules"
        },
        {
          "number": 3,
          "created_at": "2026-03-13T19:20:08Z",
          "last_comment_at": "2026-03-13T19:20:09Z",
          "last_comment_author": "google-labs-jules"
        },
        {
          "number": 4,
          "created_at": "2026-03-18T18:12:36Z",
          "last_comment_at": "2026-03-18T18:12:37Z",
          "last_comment_author": "google-labs-jules"
        },
        {
          "number": 5,
          "created_at": "2026-03-18T18:12:47Z",
          "last_comment_at": "2026-03-18T18:12:48Z",
          "last_comment_author": "google-labs-jules"
        },
        {
          "number": 6,
          "created_at": "2026-03-18T18:20:07Z",
          "last_comment_at": "2026-03-18T18:20:08Z",
          "last_comment_author": "google-labs-jules"
        },
        {
          "number": 7,
          "created_at": "2026-03-18T18:21:12Z",
          "last_comment_at": "2026-03-18T18:21:14Z",
          "last_comment_author": "google-labs-jules"
        },
        {
          "number": 8,
          "created_at": "2026-03-23T19:01:35Z",
          "last_comment_at": "2026-03-23T19:01:37Z",
          "last_comment_author": "google-labs-jules"
        },
        {
          "number": 9,
          "created_at": "2026-03-23T19:02:21Z",
          "last_comment_at": "2026-03-23T19:02:22Z",
          "last_comment_author": "google-labs-jules"
        },
        {
          "number": 10,
          "created_at": "2026-03-23T19:02:36Z",
          "last_comment_at": "2026-03-23T19:02:37Z",
          "last_comment_author": "google-labs-jules"
        },
        {
          "number": 11,
          "created_at": "2026-03-23T19:02:39Z",
          "last_comment_at": "2026-03-23T19:02:40Z",
          "last_comment_author": "google-labs-jules"
        },
        {
          "number": 12,
          "created_at": "2026-03-23T19:02:42Z",
          "last_comment_at": "2026-03-23T19:02:43Z",
          "last_comment_author": "google-labs-jules"
        }
      ],
      "last_merged_pr_at": "2026-06-04T11:02:19Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/LeandroPG19/cuba-memorys",
    "host": "github.com",
    "name": "cuba-memorys",
    "owner": "LeandroPG19"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 61,
      "inputs": {
        "security": 37,
        "vitality": 79,
        "community": 49,
        "governance": 52,
        "engineering": 81
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 79,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "commits_last_year": 169,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 10
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "10/52 weeks with commits",
                "points": 6.9,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 10
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "169 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 169
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 14,
              "latest_release_tag": "v0.15.0",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 4.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "14 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~4.8 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 4.8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 49,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 27,
            "inputs": {
              "forks": 3,
              "stars": 26,
              "watchers": 3,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "26 stars",
                "points": 22.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 26
                    }
                  }
                ],
                "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": "3 watchers",
                "points": 1.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (AGPL-3.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "AGPL-3.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 56,
            "inputs": {
              "packages": [
                "cuba-memorys",
                "cuba-memorys"
              ],
              "dependents": null,
              "ecosystems": "npm, pypi",
              "total_downloads": null,
              "monthly_downloads": 2229
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,229 downloads/month across npm, pypi",
                "points": 44.6,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2229,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 52,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 13,
            "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 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "merged_prs": 3,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "3/3 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 3,
                      "decided": 3
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 41,
            "inputs": {
              "followers": 12,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "LeandroPG19",
              "public_repos": 21,
              "account_age_days": 972
            },
            "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": "12 followers of LeandroPG19",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 12,
                      "login": "LeandroPG19"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "21 public repos, account ~2 yr old",
                "points": 15.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 21
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 2
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "cuba-memorys",
                "cuba-memorys"
              ],
              "ecosystems": "npm, pypi",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on npm, pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "15 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "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": 81,
        "weight": 0.2,
        "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": 92,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 16,
                "status": "met",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 9.6,
                "status": "met",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [
                "ai-memory",
                "ai-tools",
                "anti-hallucination",
                "graph-database",
                "graphrag",
                "hebbian-learning",
                "knowledge-graph",
                "mcp",
                "mcp-server",
                "model-context-protocol",
                "pagerank",
                "postgresql",
                "rag",
                "semantic-search",
                "vector-search",
                "exponential-decay",
                "rust",
                "npm-package",
                "pypi-package",
                "episodic-memory"
              ],
              "has_wiki": false,
              "homepage": "https://registry.modelcontextprotocol.io",
              "has_readme": true,
              "has_docs_dir": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://registry.modelcontextprotocol.io",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "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": "at_risk",
        "name": "Security",
        "value": 37,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "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": 37,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3.7
            },
            "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 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "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 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "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": "13 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 64,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "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": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.98,
              "toolchain_manifests": [
                "rust/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "rust/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "rust/Cargo.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 11,
                "status": "met",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Rust (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "98 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 98,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Rust",
              "largest_source_bytes": 47932,
              "source_files_sampled": 130,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Rust (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/130 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 130,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch crates package 'cuba-memorys' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
    "deps.dev does not index npm:cuba-memorys@0.15.0; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T00:58:07.885913Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/l/LeandroPG19/cuba-memorys.svg",
  "full_name": "LeandroPG19/cuba-memorys",
  "license_state": "standard",
  "license_spdx": "AGPL-3.0"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计npm, PyPI.