Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 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 estrellas⑂ 3 forksdesde mar 2026Ver en GitHub ↗

LeandroPG19/cuba-memorys tiene un índice de salud de 61 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Engineering Quality (81/100) y la más baja, Security (37/100). Se actualizó por última vez hace 5 días. Una sola persona concentra la mayor parte del trabajo reciente.

61
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

61
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

Leandro Pérez G.Cuenta personal
12 seguidores21 repositorios públicosdesde nov 2023

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

79Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 5 días
6.9/36Cadencia de commits — 10/52 semanas con commits
18/18Volumen de commits — 169 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year169
human_commit_share1
days_since_last_push5
active_weeks_last_year10
Cómo se puntúa
27/27Publica versiones — 14 versiones publicadas
36/36Recencia de las versiones — última versión hace 5 días
27/27Cadencia de publicación — una versión cada ~4,8 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count14
latest_release_tagv0.15.0
releases_from_tagsno
days_since_latest_release5
mean_days_between_releases4,8

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

49En riesgo · 18% del índice global
Cómo se puntúa
22.7/60Estrellas — 26 estrellas
2.5/25Forks — 3 forks
1.7/15Observadores — 3 observadores
Datos de entrada utilizados
forks3
stars26
watchers3
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (AGPL-3.0)
18/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
44.6/80Descargas mensuales — 2229 descargas/mes en npm, pypi
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagescuba-memorys, cuba-memorys
dependents
ecosystemsnpm, pypi
total_downloads
monthly_downloads2229
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

52Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
38.2/38.3Aceptación de PR — 3/3 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs3
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
8/25Alcance del propietario — 12 seguidores de LeandroPG19
15.1/25Trayectoria — 21 repos públicos, cuenta de ~2 años
Datos de entrada utilizados
followers12
owner_typeUser
is_verified
owner_loginLeandroPG19
public_repos21
account_age_days972
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 2 paquete(s) en npm, pypi
35/35Recencia de publicación — última publicación hace 5 días
20/20Historial de versiones — 15 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagescuba-memorys, cuba-memorys
ecosystemsnpm, pypi
any_deprecatedno
min_days_since_publish5

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

81Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 3 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter
9.6/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_config
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

65Moderado
Cómo se puntúa
30/30README
0/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://registry.modelcontextprotocol.io
10/10Descripción del repositorio
10/10Topics — 20 topics
0/10Wiki
Datos de entrada utilizados
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_wikino
homepagehttps://registry.modelcontextprotocol.io
has_readme
has_docs_dirno
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

37En riesgo · 16% del índice global
Cómo se puntúa
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 — sin datos
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.5Licencia — 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
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3,7
Excluidos de la puntuación (sin datos o no aplicable): ci_tests. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

64Moderado · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 100 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
12.6/18Arranque con un solo comando — rust/Cargo.toml (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
11/11Configuración de lint / formato
11/11Verificación estática de tipos — Rust (tipado estático)
10/10Entorno reproducible — Dockerfile, lockfile
10/10Práctica demostrada con agentes — 98 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilesCargo.lock
has_dockerfile
typed_language
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configs
agent_commit_share0,98
toolchain_manifestsrust/Cargo.toml
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — Rust (tipado estático)
55/55Tamaños de archivo manejables — 0/130 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageRust
largest_source_bytes47.932
source_files_sampled130
oversized_source_files0
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_files

Datos clave

26estrellas de GitHub
1contribuidores
169commits en los últimos 12 meses
5días desde el último push
14versiones publicadas
1factor bus
0issues abiertas
crates.io, npm, PyPIecosistemas de paquetes

Advertencias de recopilación de datos

  • 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

Más detalle

Historial de estrellas y forks 0 ★ / 3 ⇿
0Estrellas
3Forks

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

12233312026-032026-032026-03
OpenSSF Scorecard 3.7 / 10
3.7agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).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
n/dCI-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
Dependencias directas 34
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasnpm, PyPI.