公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-31 14:59 UTC

joeldevz / neurox

Persistent memory for AI coding agents — your agent stops forgetting between sessions. One Go binary, one SQLite file.

Go自定义许可证★ 5 星标⑂ 0 复刻始于 2026年3月在 GitHub 上查看 ↗

joeldevz/neurox 的健康指数为 100 分中的 54 分,处于「中等」区间。 其得分最高的类别是Engineering Quality(84/100),最低的是Community & Adoption(26/100)。 最近一次更新在今天。 近期的大部分工作由 1 位贡献者完成。

54
总分 / 100
中等

软件健康指数

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

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

评分画像

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

所有权

3 关注者6 个公开仓库始于 2018年2月@Clasing

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

软件包生态系统

注册表软件包版本月下载量版本数最近发布标签
Gogithub.com/joeldevz/neuroxv0.5.6-2641 天前
npmneurox指向其他仓库——不计分0.0.1101134 天前aimemorymcpcoding-agentbraincortexllmembeddingsftsknowledge-graphclaudecursorcopilotneuroscience

按类别列示的指标

活力

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

77良好 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
5.5/36提交节奏 — 52 周中有 8 周有提交
17.7/18提交量 — 最近一年 92 次提交
10/10OpenSSF Scorecard:Maintained — 26 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year92
human_commit_share1
days_since_last_push0
active_weeks_last_year8

发布纪律

90优秀
评分方式
27/27有发布版本 — 已发布 22 个发布版本
36/36发布时效 — 最近一次发布版本于 41 天前
27/27发布节奏 — 约每 9.2 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count22
latest_release_tagv0.5.6
releases_from_tags
days_since_latest_release41
mean_days_between_releases9.2

社区与采用

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

26危急 · 占总体的 18%
评分方式
9.8/60星标 — 5 个星标
0/25复刻 — 0 个复刻
0/15关注者 — 0 位关注者
所用输入
forks0
stars5
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

44存在风险
评分方式
22.5/22.5README
16.9/22.5许可证 — 存在许可证文件,但不是可识别的许可证
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

可持续性与治理

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

45存在风险 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
0/22.5提交分布 — 头号贡献者编写了 100% 的提交
1.4/13.5贡献者广度 — 1 位贡献者
6/10OpenSSF Scorecard:Contributors — project has 2 contributing companies or organizations -- score normalized to 6
所用输入
bus_factor1
contributors_sampled1
top_contributor_share1
评分方式
0/46.8议题解决 — 0% 的议题已关闭
38.2/38.3PR 接受 — 已裁定的 PR 中 3/3 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/22 approved changesets -- score normalized to 0
所用输入
merged_prs3
open_issues7
closed_issues0
issue_closed_ratio0
closed_unmerged_prs0
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
4.3/25所有者影响力 — joeldevz 有 3 位关注者
18.2/25既往记录 — 6 个公开仓库,账户约 8 年
所用输入
followers3
owner_typeUser
is_verified
owner_loginjoeldevz
public_repos6
account_age_days3,096
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — go 上有 1 个软件包
35/35发布时效 — 最近一次发布于 41 天前
20/20版本历史 — 26 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesgithub.com/joeldevz/neurox
ecosystemsgo
any_deprecated
min_days_since_publish41

工程质量

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

84良好 · 占总体的 20%

工程实践

84良好
评分方式
24/24CI 工作流 — 2 个工作流
24/24存在测试
16/16Linter 配置 — .golangci.yml
0/9.6Pre-commit 钩子
0/6.4.editorconfig
20/20OpenSSF Scorecard:CI-Tests — 3 out of 3 merged PRs checked by a CI test -- score normalized to 10
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

85优秀
评分方式
30/30README
25/25文档目录
0/15文档 / 主页站点
10/10仓库描述
10/10主题标签 — 9 个主题标签
10/10Wiki
所用输入
topicsai-agents, claude-code, coding-agents, llm, mcp, memory, opencode, persistent-memory, sqlite
has_wiki
homepage
has_readme
has_docs_dir
has_description

安全

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

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

安全态势

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

AI 就绪度

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

73良好 · 占总体的 0%
评分方式
45/45代理指令 — CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 95 次人类提交中有 94 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.989
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes9,027
评分方式
18/18一条命令的引导启动 — vendor/github.com/buger/jsonparser/Makefile, vendor/github.com/spf13/cast/Makefile, vendor/github.com/wk8/go-ordered-map/v2/Makefile
22/22自动化测试
11/11Lint / 格式化配置 — .golangci.yml
11/11静态类型检查 — Go(静态类型)
10/10可复现环境 — Dockerfile, lockfile
2.1/10已体现的代理实践 — 最近 95 次提交中有 1 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilesgo.sum, package-lock.json
has_dockerfile
typed_language
bootstrap_filesvendor/github.com/buger/jsonparser/Makefile, vendor/github.com/spf13/cast/Makefile, vendor/github.com/wk8/go-ordered-map/v2/Makefile
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0.011
toolchain_manifestsgo.mod
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — Go(静态类型)
54.3/55可控的文件大小 — 采样的 168 个源文件中有 2 个超过 60KB
所用输入
primary_languageGo
largest_source_bytes152,158
source_files_sampled168
oversized_source_files2
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
20/20MCP 服务器
0/40可运行示例
所用输入
example_dirs
has_mcp_signal
api_schema_files

关键数据

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

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • npm package 'neurox' points at a different repository (https://github.com/joeldev/neurox); excluded from ecosystem scoring
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

更多细节

OpenSSF Scorecard 3.4 / 10
3.4综合

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests3 out of 3 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/22 approved changesets -- score normalized to 0
6Contributorsproject has 2 contributing companies or organizations -- score normalized to 6
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
10Maintained26 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
3Vulnerabilities7 existing vulnerabilities detected
直接依赖 6
注册表软件包版本约束清单文件
Gogithub.com/charmbracelet/bubbleteav1.2.4go.mod
Gogithub.com/charmbracelet/lipglossv1.0.0go.mod
Gogithub.com/mark3labs/mcp-gov0.45.0go.mod
Gogithub.com/mattn/go-sqlite3v1.14.24go.mod
Gogithub.com/oklog/ulid/v2v2.1.1go.mod
Gogopkg.in/yaml.v3v3.0.1go.mod
全部依赖 未采集

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "ai-agents",
        "claude-code",
        "coding-agents",
        "llm",
        "mcp",
        "memory",
        "opencode",
        "persistent-memory",
        "sqlite"
      ],
      "is_fork": false,
      "size_kb": 19134,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Go": 1652864,
        "HTML": 65837,
        "Shell": 9529,
        "Python": 44441,
        "JavaScript": 105212,
        "PowerShell": 3747
      },
      "pushed_at": "2026-07-31T08:24:06Z",
      "created_at": "2026-03-19T14:21:24Z",
      "owner_type": "User",
      "updated_at": "2026-07-31T08:26:34Z",
      "description": "Persistent memory for AI coding agents — your agent stops forgetting between sessions. One Go binary, one SQLite file.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": "joeldev.es",
      "name": "Christopher Joel Zambrano Marcillo",
      "type": "User",
      "login": "joeldevz",
      "company": "@Clasing",
      "location": null,
      "followers": 3,
      "avatar_url": "https://avatars.githubusercontent.com/u/36200065?v=4",
      "created_at": "2018-02-06T15:30:34Z",
      "is_verified": null,
      "public_repos": 6,
      "account_age_days": 3096
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.5.6",
          "kind": "patch",
          "published_at": "2026-06-19T15:07:37Z"
        },
        {
          "tag": "v0.5.5",
          "kind": "patch",
          "published_at": "2026-06-09T14:27:55Z"
        },
        {
          "tag": "v0.5.4",
          "kind": "patch",
          "published_at": "2026-03-30T16:37:23Z"
        },
        {
          "tag": "v0.5.3",
          "kind": "patch",
          "published_at": "2026-03-30T09:03:26Z"
        },
        {
          "tag": "v0.5.2",
          "kind": "patch",
          "published_at": "2026-03-29T16:15:53Z"
        },
        {
          "tag": "v0.5.1",
          "kind": "patch",
          "published_at": "2026-03-29T11:35:46Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-03-29T11:32:31Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-03-28T23:27:38Z"
        },
        {
          "tag": "v0.1.19",
          "kind": "patch",
          "published_at": "2026-03-28T22:41:02Z"
        },
        {
          "tag": "v0.1.18",
          "kind": "patch",
          "published_at": "2026-03-28T21:37:15Z"
        },
        {
          "tag": "v0.1.16",
          "kind": "patch",
          "published_at": "2026-03-28T12:38:29Z"
        },
        {
          "tag": "v0.1.15",
          "kind": "patch",
          "published_at": "2026-03-28T10:54:16Z"
        },
        {
          "tag": "v0.1.14",
          "kind": "patch",
          "published_at": "2026-03-28T10:36:35Z"
        },
        {
          "tag": "v0.1.13",
          "kind": "patch",
          "published_at": "2026-03-27T14:38:49Z"
        },
        {
          "tag": "v0.1.12",
          "kind": "patch",
          "published_at": "2026-03-26T09:08:57Z"
        },
        {
          "tag": "v0.1.11",
          "kind": "patch",
          "published_at": "2026-03-26T08:37:46Z"
        },
        {
          "tag": "v0.1.10",
          "kind": "patch",
          "published_at": "2026-03-25T13:02:04Z"
        },
        {
          "tag": "v0.1.9",
          "kind": "patch",
          "published_at": "2026-03-25T11:47:37Z"
        },
        {
          "tag": "v0.1.8",
          "kind": "patch",
          "published_at": "2026-03-25T11:44:34Z"
        },
        {
          "tag": "v0.1.7",
          "kind": "patch",
          "published_at": "2026-03-25T10:50:09Z"
        },
        {
          "tag": "v0.1.6",
          "kind": "patch",
          "published_at": "2026-03-25T10:44:16Z"
        },
        {
          "tag": "v0.1.5",
          "kind": "patch",
          "published_at": "2026-03-24T22:11:25Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "5251dead3bb3e8235161237682e03e5f64d31583",
          "body": null,
          "is_bot": false,
          "headline": "docs(plan): add entities feature spec (issue #10)",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-07-31T08:24:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4406f3d852a15e586f6615aca622460c38cf6861",
          "body": null,
          "is_bot": false,
          "headline": "chore(plan): record recall fixes plan and archive portfolio plan",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-07-31T08:22:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6cf091391ba93963888ddb2bf6157e7335063c86",
          "body": "Nine code-verified fixes to the recall engine:\n- fix BM25 weights shifted by UNINDEXED id column (title>content>tags)\n- fix expired/cross-namespace leak in semantic and fact candidate paths\n- decouple access bumps from Search via async coalesced queue\n- remove last_accessed from recency scoring (fee\n[…]\n> 0.2)\n- cross-signal boost by rank membership instead of normalized score\n- standardize fts5 build tag across CI, release and docs\n\nIncludes 17 new tests and CLI engine close-out for access flushing.",
          "is_bot": false,
          "headline": "feat(recall): fix search correctness and ranking (tier 0+1)",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-07-31T08:22:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "04d61551a0bf538eb254e436e5e711854bbec3c7",
          "body": "chore: remove unused code, dead files, and ~750MB of disk artifacts",
          "is_bot": false,
          "headline": "Merge pull request #8 from joeldevz/chore/cleanup-unused",
          "author_name": "Christopher Joel Zambrano Marcillo",
          "author_login": "joeldevz",
          "committed_at": "2026-06-19T15:54:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96039f38305bf70b494e28974651858effa4b817",
          "body": null,
          "is_bot": false,
          "headline": "chore: add skynex project config for agent sessions",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-19T15:46:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91d396456ee81825994568291d430dc2cbb64f56",
          "body": "… config",
          "is_bot": false,
          "headline": "docs: sync CHANGELOG to v0.5.6 and use portable neurox path in gemini…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-19T15:44:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77ac7649c979fab4297bd8f1d4db73b532247769",
          "body": null,
          "is_bot": false,
          "headline": "refactor: remove unused retry helpers and post-save hook builder",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-19T15:44:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68c9c7772dea7a06168aff1fcdf716e92d0b2304",
          "body": "…used helpers)",
          "is_bot": false,
          "headline": "refactor: remove dead code (async write gate, benchmark generator, un…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-19T15:33:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7dd761b17eafb37441f43fd4e1f02be89216f7b",
          "body": null,
          "is_bot": false,
          "headline": "chore: ignore binaries, node_modules, benchmark data and caches",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-19T15:29:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fbc09970c7968b00cf026de390dd2d5b7b32bfea",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to v0.5.6",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-19T15:07:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e85a11fc6f38db28d9240e427c234b13b4630213",
          "body": "…eated_at in recall API\n\n- Temporal reasoning: 0/13 → 9-10/13 (69-77%), overall 60% → 64-70%\n- Durable ingest gate, embedding wait, per-question error isolation\n- opencode CLI provider for judge (calibrated 98% vs API judge)\n- detectTemporalIntent v2, date regex fix, formatter date priority\n- expose created_at in search API + MCP response (additive)\n- calibrate-judge.js harness, bench-raw agent, --answer-provider flag",
          "is_bot": false,
          "headline": "merge(bench/longmemeval-hardening): memorybench hardening + expose cr…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-19T15:05:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "918860b1c7a425da04ba0944f3446cc2b9fa543d",
          "body": "…al fixes\n\n- llm-opencode.js: opencode CLI provider for judge and answer-gen\n- .opencode/agent/bench-raw.md: raw agent (empty body, temp 0, tools denied)\n- scripts/calibrate-judge.js: judge calibration harness (opencode vs API, 98% agreement)\n- runner.js: durable ingest gate (polls status.total), wa\n[…]\necall, 7.1% false-fire on full 500q)\n- index.js: --answer-provider flag, --judge-provider opencode, fail-fast API key\n- opencode.json: local config to suppress global instruction loading (bench scope)",
          "is_bot": false,
          "headline": "feat(memorybench): add opencode provider, durable ingest gate, tempor…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-12T17:27:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e7da4b4492099374daaade659875bff54e7125a5",
          "body": "- Add getStatus() to provider (GET /api/v1/status, null on error, never throws)\n- Rewrite waitForEmbeddings with 3-tier strategy:\n  - Primary: poll embeddings_pending count to 0 (monotonic, reliable)\n  - Stall detection: if pending stalls 30s -> legacy fallback\n  - Scaled timeout: max(timeout, numOb\n[…]\n& pending=0 (semantic disabled) -> warn + continue\n- Legacy semantic_score fallback preserved when status endpoint unavailable\n\nFixes full-run timeouts caused by 60s detection window after bulk ingest",
          "is_bot": false,
          "headline": "fix(memorybench): poll embeddings_pending for reliable embedding wait",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-11T05:20:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3d6ae3b8b6108420346582d4122f73366135071a",
          "body": "- Root cause analysis: real session dates never reached the model\n- 6 implemented changes (2 bugfixes + 4 temporal features)\n- Validation evidence: PASS (real 2022/2023 dates reach LLM context)\n- Remaining blocker: waitForEmbeddings reliability\n- Competitive math: beat Zep needs +2 temporal, near Supermemory needs ~11/13\n- Execution roadmap + retrieval-miss vs reasoning-miss analysis",
          "is_bot": false,
          "headline": "docs(memorybench): add consolidated temporal solution document",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-11T04:57:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "543c3c6ace8b91202de330a5a3ccb20ebf036de8",
          "body": "Root cause fixed: real session dates (2023) never reached the model.\n- BUGFIX: date tag regex now accepts slash format (2023/05/20) not just hyphen\n- BUGFIX: LLM formatter prefers real session date tag over created_at (ingest date)\n- Thread question_date into answer prompt as reference 'now'\n- Add d\n[…]\nd timeline, compute durations, cite dates\n- All behind --no-temporal-branch flag (bugfixes always on, features toggleable)\n\nPlan: benchmarks/memorybench/TEMPORAL_REASONING_PLAN.md (v2, evidence-based)",
          "is_bot": false,
          "headline": "feat(memorybench): temporal reasoning v2 - real session dates",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-10T14:58:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "da5bafc2361b209245935cb19b5b7f006198ac5e",
          "body": "- Add --ingest-delay-ms <ms> flag (default 50ms) to throttle ingest POSTs\n  and prevent server save queue saturation at scale\n- Pass q.haystack_dates from runner to provider.ingest()\n- Tag each ingested session with date-YYYY-MM-DD when date available\n- LLM context formatter reads created_at field +\n[…]\ntag fallback\n- Shows Date field in llm format output for recency reasoning\n\nResult: clean ingestion of 2386 obs, all 50 embeddings detected,\n        multi-session improved 8/13->9/13 with date context",
          "is_bot": false,
          "headline": "feat(memorybench): add ingest throttling + haystack dates",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-10T14:24:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2974fa911110fe7a397b1922b6d0658eee92e1ef",
          "body": "- Add CreatedAt string (RFC3339) to recall.Result struct\n- Wire created_at through API HTTP response (omitempty)\n- Wire created_at through MCP recall response item\n- No schema change required; field already in candidate struct\n\nfeat(memorybench): pass haystack_dates at ingest + show date in llm cont\n[…]\nLM context formatter reads created_at field, falls back to date tag\n- Shows Date field in llm format output for knowledge-update recency reasoning\n- raw format unchanged, graceful when dates undefined",
          "is_bot": false,
          "headline": "feat(recall): expose created_at in search API + MCP response",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-10T12:32:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c855b55a2603b5d50b6676f7e791c4801bcb020c",
          "body": "- Add --context-format raw|llm flag (default: raw, backward compat)\n- LLM format provides rank/title/kind/observation_type/confidence/tags/staleness\n- No raw score or layer exposed; uses only real API response fields\n- Set answer generation temperature to 0 for deterministic comparison\n- Record cont\n[…]\ns\n\nResult: non-temporal target categories improved 67.7% -> 77.4%\n        overall 56% -> 60% vs RAW baseline (claude-strat50)\n        knowledge-update 62.5% -> 87.5%, single-session-pref 66.7% -> 100%",
          "is_bot": false,
          "headline": "feat(memorybench): add --context-format llm/raw experiment",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-10T12:24:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "75694ae5c21186c732d2fea6cafbea8a777de503",
          "body": null,
          "is_bot": false,
          "headline": "feat(benchmarks): add memory benchmark portfolio",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-10T09:18:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f361c6129de34ab89a955f0a89a2cece545b4870",
          "body": "Covers the improvements landed since v0.5.4:\n- feat(recall): union merge + RRF scoring (PR #6)\n- fix(recall): normalize RRF to [0,1], cap semantic-only, min sim 0.4\n- fix(recall): stopword FTS filtering — stop common words polluting dual-channel tier (PR #7)\n- fix(cli): correct recall flag parsing — flags now work before and after the query",
          "is_bot": false,
          "headline": "chore: bump version to v0.5.5",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-09T14:27:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "898ea643c1ead4a611b071cafef4b735631cc708",
          "body": "…r query\n\nPR #7's interspersed-flag change scanned for the first non-dash arg as the\nquery, but a flag's value (the \"3\" in --limit 3) is also non-dash, so:\n  recall --limit 3 \"Docker\"  → query=\"3\", --limit got \"Docker\" → parse error\n  recall --ns X --limit 3 \"q\" → query=\"X\", namespace=\"--limit\" → 0 \n[…]\n consumed by --limit\nand never mistaken for the query.\n\n6 table tests in main_test.go cover valued flags before/after the positional,\nbool flags, multi-word queries, and empty input. Full suite green.",
          "is_bot": false,
          "headline": "fix(cli): correct recall flag parsing — stop mistaking flag values fo…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-09T14:17:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d62177d2170c32fe72b18f47c2d7c9eb9d6a91ad",
          "body": "fix(recall): stopword FTS filtering + CLI flag parsing",
          "is_bot": false,
          "headline": "Merge PR #7: stopword FTS filtering + CLI flag parsing",
          "author_name": "Christopher Joel Zambrano Marcillo",
          "author_login": "joeldevz",
          "committed_at": "2026-06-09T13:59:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3be250f81fbbe3b63151d34280cffc828a6fad8f",
          "body": "Two ranking bugs surfaced during live testing:\n\n1. FTS stopword pollution: buildFTSMatchQuery kept short tokens as exact\n   matches, so a stopword like \"de\" (es) or \"the\" (en) matched irrelevant\n   docs and promoted them into the dual-channel tier (FTS+semantic), where\n   the 2x RRF + 1.2x cross-sig\n[…]\nved, knowledge-update\n  regression stays fixed (recall_all@10 ~1.0).\n- Live recall: queries with a lexical hint now rank the correct doc #1; the\n  stopword no longer manufactures spurious FTS matches.",
          "is_bot": false,
          "headline": "fix(recall): stopword filtering in FTS + CLI interspersed flag parsing",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-09T13:39:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1a4a0b26f38d1a7c63dc0cbdf99c6bd8856a3a09",
          "body": "feat(recall): union merge + RRF scoring replacing max() intersection",
          "is_bot": false,
          "headline": "Merge PR #6: recall union merge + RRF normalized scoring",
          "author_name": "Christopher Joel Zambrano Marcillo",
          "author_login": "joeldevz",
          "committed_at": "2026-06-09T12:12:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea2a64980f215a0efa2c04299f9f4406f961a37e",
          "body": "The initial RRF change shipped a scaling bug: rrfScore returned raw values\n(~0.016) while recency/importance are [0,1]-scaled, so the relevance term\nwas ~100x too small and recency silently dominated ranking. This both\nneutralized the hybrid fusion and caused a recall_all regression on\nknowledge-upd\n[…]\n NDCG +53%\n- avg NDCG@10 +45% over FTS-only; recall@10 stable\nThe semantic signal's value is in ranking quality (NDCG), not binary recall@10.\n\n48 recall tests pass, full suite green, zero regressions.",
          "is_bot": false,
          "headline": "fix(recall): normalize RRF to [0,1], cap semantic-only, raise sim floor",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-09T08:29:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d73acab063665933e07b6a3c2e8fbc6f9828c9e5",
          "body": "Fix limit-saturation bug in the hybrid recall merge and replace the\nmax(fts, semantic) relevance fusion with Reciprocal Rank Fusion (RRF).\n\nRoot cause: the merge was FTS-anchored with conditional semantic-only\nfill — when FTS filled the limit, strong semantic-only matches were\nsilently dropped (the \n[…]\n)\n- plan/recall-merge-fix: DDD spec-driven plan (9 docs)\n\nTests: 72 recall+config tests pass, zero regressions. New tests cover\nunion limit-saturation, RRF scoring, rank derivation, config validation.",
          "is_bot": false,
          "headline": "feat(recall): union merge + RRF scoring replacing max() intersection",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-06-04T05:55:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "22e314db337487031e77451e9673496529d73c8d",
          "body": "…face contracts",
          "is_bot": false,
          "headline": "docs: add plan/ with product vision, technical architecture and inter…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-04-03T12:48:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7733c1d59f923423b0006f77890964714118b8e",
          "body": "session_end was calling Ollama synchronously to extract observations from\nthe session summary, blocking the MCP response for 30-120s and causing\nclient timeouts (error -32001). Move extraction to a background goroutine\nso the caller gets an immediate response. Add sync.WaitGroup for\ndeterministic test assertions.",
          "is_bot": false,
          "headline": "fix(session): run LLM extraction in background to prevent MCP timeout",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-30T16:36:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67d1150676f725185419bf84b33e3d77acb1ae09",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): bump version to v0.5.3",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-30T09:02:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "388870c23fb1ef8e62508ce875fc5f38adfdb797",
          "body": "The archive contained neurox_windows_amd64.exe but install.ps1\nexpected neurox.exe, causing the installer to fail with 'neurox.exe\nnot found in archive'.\n\n- Build outputs dist/neurox.exe directly (OS/arch is already in the zip name)\n- install.ps1 gets a .exe glob fallback for resilience against future drift",
          "is_bot": false,
          "headline": "fix(installer): use neurox.exe as binary name inside windows zip",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-30T09:02:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05375dec9bd19dc6e664c7df62e5377b45c5af53",
          "body": "Add a 'provider' string parameter to embed.AutoDetect and llm.AutoDetect.\nWhen set to 'none'/'disabled', skips connection attempts immediately.\nWhen set to 'ollama' or 'remote', uses only that backend without fallback.\nDefault empty string preserves existing auto-detect behavior.\n\nAlso guard llm.IsAvailable against nil providers and log a warning in\nthe contradiction detector when LLM is unavailable.",
          "is_bot": false,
          "headline": "feat(embed,llm): add explicit provider selection to AutoDetect",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T16:14:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad67dedc7c26c663e2b3cdc072c45bf34ccddeef",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): bump version to v0.5.2",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T16:09:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d447c0967278c0418bb0683d4e01711f2b69c43",
          "body": "Expand the behavioral protocol injected into CLAUDE.md, AGENTS.md, and\nGEMINI.md from 44 to 160 lines. The new version is structured around\n7 behavior-first sections: mindset quote, mandatory session loop, three\nreflexes (preference/decision/bugfix+pattern), when to search memory,\ndeep retrieval ste\n[…]\n\nadd update_available field guidance to status and health_check entries.\n\nA single protocol.md now drives proactive memory behavior across\nClaude Code, OpenCode, and Gemini/Antigravity simultaneously.",
          "is_bot": false,
          "headline": "docs(installer): enrich protocol and skill for all agent systems",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T15:42:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "43d43b781335cbe5682b9428b59704001bfcc94a",
          "body": "…available\n\nAdd a 24h-cached update check that surfaces upgrade notices on two surfaces:\n- MCP tools: status() and health_check() include update_available field (omitempty)\n- HTTP server: neurox serve logs one notice to stderr at startup\n\nNew internal/updatecheck package wraps installer.CheckLatest \n[…]\nig/neurox/update-check.json) to avoid hitting the GitHub\nAPI more than once per 24h. Cache writes are atomic (tmp file + rename).\n\nMCP stdio is never touched — the notice travels only as a JSON field.",
          "is_bot": false,
          "headline": "feat(updatecheck): notify agents and operators when a new version is …",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T12:54:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "63211e1f502d4cc0515f5b6b62bd9a376dd7f9a1",
          "body": "…arity test\n\nSaveQueue worker goroutine wrote hookCalled via PostSaveHook closure while\nthe test goroutine read it without synchronization, triggering the race\ndetector. Use sync/atomic.Bool for safe concurrent access.",
          "is_bot": false,
          "headline": "fix(integration): replace bool with atomic.Bool to fix data race in p…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T11:47:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d9b223540e2897affd8b95eab599d5ad523f5fad",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): bump version to v0.5.1",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T11:34:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "068afd25da107613629e63b96ba00e649d1eef4a",
          "body": null,
          "is_bot": false,
          "headline": "fix(build): change version from const to var for ldflags injection",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T11:31:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d2932cfcb51d3332a3ef305fbccf89b532aac1b4",
          "body": "- Create joeldevz/homebrew-neurox tap with formula for v0.5.0\n- Add brew install as primary install method in README and README.es\n- Add Platform Support table (macOS/Linux/Windows × architectures)\n- Add update-homebrew job to release workflow (auto-updates formula\n  with sha256 checksums on each tagged release)",
          "is_bot": false,
          "headline": "feat(dist): add Homebrew tap and platform support table",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T11:18:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ecee1e8d5c096c7a7c042203e996ef2beeab7cf8",
          "body": "- Bump version constant in main.go\n- Fix stale pure-Go claims in internal-docs/blog-benchmark.md",
          "is_bot": false,
          "headline": "chore(release): bump version to v0.5.0",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T11:10:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "36e48dd797ee5f5291ef65e8f78e92714fed3870",
          "body": "- Update README, README.es, CLAUDE.md, quickstart, and agent setup\n  docs to reflect mattn/go-sqlite3 driver (CGO + sqlite_fts5)\n- Add CHANGELOG.md documenting changes since v0.2.0\n- Fix flaky TestBrowseSortParameter with deterministic timestamps\n- Update CI workflow with CGO_ENABLED=1 and -tags sqlite_fts5\n- Restructure release workflow for native CGO compilation per OS",
          "is_bot": false,
          "headline": "chore: prepare for v1 — update docs, CI, and fix flaky test",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T10:58:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26a570868e5ff31181959c97f925f98c4baf9410",
          "body": "Benchmarked three SQLite drivers for FTS5 recall latency:\n- ncruces (wasm):  ~890ms/1K obs, ~30s/50K obs\n- modernc (pure Go): ~378ms/1K obs, ~17s/50K obs\n- mattn (CGO):     ~1ms/1K obs,   ~23ms/50K obs\n\nmattn is ~850x faster than ncruces for FTS5 MATCH+bm25.\nRequires CGO_ENABLED=1 and -tags sqlite_fts5 for build/test.",
          "is_bot": false,
          "headline": "perf(db): switch back to mattn/go-sqlite3 for native FTS5 performance",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T10:50:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4df6fe181c2b38435c1575ecb5158258fb57f7f",
          "body": "… HTTP\n\nExtract shared savepipeline package so all three surfaces produce\nobservations with identical quality, provenance, and post-save hooks.\n\n- Add internal/savepipeline for canonical save flow (provenance,\n  retention, session attachment, LLM gate, facts, embeddings)\n- Add CLI session-start and \n[…]\nn\n- Add PostSaveHook on SessionManager for session-derived observations\n- Add 14 parity contract integration tests (all passing)\n- Update README, README.es, docs/reference with accurate surface tables",
          "is_bot": false,
          "headline": "feat(parity): unify save/recall/session pipeline across CLI, MCP, and…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-29T00:07:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3c412b3edc870ac77d484e1975a610ff645cd69e",
          "body": null,
          "is_bot": false,
          "headline": "update md",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T23:25:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ababf7dcfaf0c481a2c78b2b1d0ca7974b1a4f98",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): bump version to v0.2.0",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T23:23:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "48dfbdc3946ae4e05e5c0a1c90df464ca8657390",
          "body": "Convert 5 hot-path functions from per-row UPDATEs to batch WHERE id IN (...)\nwith chunking (500 IDs per chunk), eliminating thousands of unnecessary FTS5\ntrigger fires per consolidation epoch.\n\nFunctions converted:\n- promoteBufferToWorking: collect IDs then single batch UPDATE\n- promoteWorkingToCore\n[…]\nout(8min) safety net\nto TestBenchmarkSuite_Small.\n\nResult: TestBenchmarkSuite_Small goes from 10min timeout (panic) to 18.8s.\nEpoch promoting 8K observations: from timeout to 464ms (>30x improvement).",
          "is_bot": false,
          "headline": "perf(consolidate): batch UPDATEs to fix 10min integration test timeout",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T23:23:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "22cbc79b28edb479ad8b742e14d4e667d1102e78",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): bump version to v0.1.19",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T22:39:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a24164eee699643ace8035be5ba02d0b39f88fd",
          "body": "Address common misconceptions surfaced by LLM comparison reviews:\n- BSL license: clarify what it allows, list Sentry/CockroachDB/HashiCorp\n  as precedent, note Apache 2.0 conversion date\n- Advanced-only framing: show 2-command install, 6 agents, zero-dep base\n- Benchmark evidence: link LongMemEval 98.1% Recall, Brain Benchmark\n- Web dashboard: describe the 4-tab interactive dashboard (Brain,\n  Explorer, Graph, Health) that was undocumented in the README\n- Add FAQ nav link to header",
          "is_bot": false,
          "headline": "docs(readme): add FAQ section and make web dashboard visible",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T22:39:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a373dc47487352ac6470d83d1e6620083ef6c59",
          "body": "… CGO)\n\nReplace CGO-dependent mattn/go-sqlite3 with ncruces/go-sqlite3 v0.33.1\n(pure Go, wasm2go). Eliminates the #1 adoption barrier — users no longer\nneed gcc/clang to build from source.\n\n- Rewrite backup.go from SQLiteConn.Backup() to VACUUM INTO\n- Go version bump 1.23 → 1.26 (ncruces requirement)\n- CI: remove gcc install, CGO_ENABLED, -tags fts5\n- Release: collapse 3 jobs/3 runners → 1 job with 5-target matrix\n- Update 11 doc files to remove CGO/fts5 references",
          "is_bot": false,
          "headline": "feat(db): migrate from mattn/go-sqlite3 to ncruces/go-sqlite3 (remove…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T22:39:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eeaee8ab00f14a04c630128dc609df5d94740635",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): bump version to v0.1.18",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T21:35:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a717920964ff7384d3b1720b5b265b82201df389",
          "body": "Raise broad namespace recall with conservative backfill, semantic and fact integration, and benchmark wiring so cross-session memory queries return useful results instead of sparse matches.",
          "is_bot": false,
          "headline": "feat(recall): improve cross-session memory retrieval",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T21:33:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b78f0073b863c18ebc55552b6b993e29eb1e1e10",
          "body": "Add one-command agent configuration: neurox setup claude-code,\nopencode, cursor, vscode, antigravity, claude-desktop. Merges into\nexisting config files without overwriting. Idempotent on re-run.\n\nImprove install.sh and install.ps1 post-install output to show\nthe exact PATH export command and neurox setup <agent> next steps.\n\nUpdate Quick Start in both READMEs to show 2-command flow:\ncurl install → neurox setup <agent>.",
          "is_bot": false,
          "headline": "feat(installer): add neurox setup <agent> for zero-friction onboarding",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T20:16:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b454a4e0cd99ced075fc6d87a3d208d50726fd41",
          "body": "Wire neurox update to existing RunUpdate function.\nFix release binary extraction to match platform-suffixed names.\nAdd neurox backup command using SQLite backup API (CLI + MCP + HTTP).\nAdd session_end warning when LLM is unavailable.\nAdd JSON full-export/import with round-trip integrity.\nOptimize se\n[…]\nfor consistency.\nDocument --host flag and NEUROX_HTTP_HOST in READMEs.\nUpdate CLI help text with --format md|json and backup command.\nClean stale developer artifacts (paths, quickstart, package.json).",
          "is_bot": false,
          "headline": "feat: launch readiness — hardening, BSL license, CI, and cleanup",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T20:01:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a701a4678cac050964afb77abaf1cf1c120aa2c8",
          "body": "- Add health_check and curate to MCP Tools tables (12→14)\n- Add curate, reembed, export, import, benchmark to CLI reference (11→17)\n- Add health-check, decay-timeline, stats/activity REST endpoints\n- Add 11 missing packages to architecture tree (15→26)\n- Add curator and consolidation config sections\n[…]\n 3 categories\n- Add 3 new concepts to docs/concepts.md (curation, benchmark, activation signals)\n- Sync all changes to README.es.md in natural Spanish\n- Bump version to 0.1.17 in main.go and server.go",
          "is_bot": false,
          "headline": "docs: sync README, concepts, and version to v0.1.17",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T13:13:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "48408779b0637d4a4a740f8790300d92c11729df",
          "body": "Complete visual overhaul of the dashboard (Brain, Explorer, Graph, Health tabs)\nwith a Fey financial app inspired aesthetic: hero metrics, 2-column layout,\nglass-morphism, activity timeline chart, and refined KPI row.\n\n- Add GET /api/v1/stats/activity endpoint for daily tool call data\n- Add sort=rec\n[…]\nb: hero score card, action pills, wider bars, taller chart\n- Polish: fade transitions, staggered animations, focus-visible, spinners\n- Inter font from Google Fonts CDN, denser layout, 1200px max-width",
          "is_bot": false,
          "headline": "feat(dashboard): redesign with Fey-inspired dark premium UI",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T12:37:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "041a2f40649c23c854efe7b7a83db6805b9f657b",
          "body": "The SaveGateDecide LLM call (30-100s on Ollama qwen3.5:9b) was running\nsynchronously before the SaveQueue, defeating the async save. Now it runs\nas a PreSaveFilter inside the worker so the MCP response is truly instant.\n\nAlso bumps version to v0.1.15.",
          "is_bot": false,
          "headline": "perf(save): move LLM quality gate to background worker",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T10:52:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1cf30f9b6fce9e933b534cb23f39e21a7120af1",
          "body": "Decouple MCP save handler from SQLite writes by introducing a SaveQueue\nwith a buffered channel and background worker. Saves return immediately\nwith a pre-generated ULID while persistence happens asynchronously.\n\nAlso increases busy_timeout to 15s and adds passive WAL checkpoints\nafter consolidation to reduce write contention.",
          "is_bot": false,
          "headline": "feat(observation): async save queue to prevent MCP timeouts",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T10:35:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98134e1d79b5d9375b08b64bcdc9ecedf58ecd68",
          "body": null,
          "is_bot": false,
          "headline": "docs: rewrite SKILL.md as agent behavior protocol and update PLAN.md",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T10:18:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a35d58c7a494f497b770041c604c461294b6eda3",
          "body": "…nd add historical backfill",
          "is_bot": false,
          "headline": "refactor(consolidate): recalibrate promotion with composite scoring a…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T10:18:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92136dbf5a41bee95f5c87cc7e9a644f94f52dea",
          "body": "…ll bump strengthens consolidation",
          "is_bot": false,
          "headline": "refactor(decay): decay affects activation instead of importance, reca…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T10:17:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67e95e312e2cc810df5d44fd1576e73db8746fa7",
          "body": "…h migration and backfill",
          "is_bot": false,
          "headline": "feat(db): add activation_level and consolidation_strength columns wit…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T10:17:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51df75f17165311ae143d1a668a031479eb62f12",
          "body": "…tions to dashboard",
          "is_bot": false,
          "headline": "feat(graph): increase default node limit to 2000 and add 1000/2000 op…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-28T10:17:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a1d1a9fd49df36f99d9690fed3777833b1fadc1",
          "body": null,
          "is_bot": false,
          "headline": "feat(consolidate): reconsolidate reflections and add graph links",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-27T18:31:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "82d06189acb9d68cae8c5ea4e84bf2ede33734ae",
          "body": "…on checks\n\n- dedupReflections() pass in dedup(): compares layer=2 source='reflection'\n  observations within the same namespace, soft-deletes newer duplicates\n- Increase Ollama HTTP timeout 60s→180s to handle slow qwen3.5:9b calls\n- maxContradictionsPerRun=5 prevents 10min+ consolidation cycles when\n  many contradiction candidates are queued",
          "is_bot": false,
          "headline": "fix(consolidate): dedup reflections in Core layer and cap contradicti…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-27T15:38:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ba2e74dae1fdf6d711babbfad5f80871ca01430",
          "body": "…-migration\n\n- Add ForceReflect 2h cooldown to prevent duplicate reflection cycles\n- Raise contradiction threshold to 0.65 to eliminate false positives\n- Migration 007: rescue ~400 incorrectly expired observations\n- Consolidation pipeline: abandon zombie sessions older than 24h\n- Semantic reflection\n[…]\n- ConsolidationConfig: dedup_threshold, contradiction_min/max now\n  configurable via config.yaml without recompiling\n- Migration 008: db_settings KV table for system metadata\n- Bump version to v0.1.13",
          "is_bot": false,
          "headline": "feat(core): improve memory quality, configurable embeddings, and auto…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-27T14:37:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d588d73797649d12884800065a758e6fc681fc1b",
          "body": "…, self-update\n\n- Add release-windows job to CI (windows-latest, .zip packaging)\n- Create install.ps1 PowerShell installer for Windows\n- Update self-update to handle .zip extraction and Windows binary locking\n- Remove Windows guard from neurox update command\n- Add Windows install instructions to both READMEs",
          "is_bot": false,
          "headline": "feat(installer): add Windows support — CI build, PowerShell installer…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-26T09:07:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15d93d70843137dc2313e1d86202fe0b38ef4433",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to v0.1.11",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-26T08:36:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "36a3ef96db01ed3ec12b5dae5600777b6307d8b5",
          "body": "…ed_by to fresh\n\nWhen the curator decides to KEEP an observation, it now resets\nstaleness='fresh', valid_until=NULL, invalidated_by=NULL. This\nprevents the contradiction detector from permanently hiding\nvalid observations that were incorrectly marked as expired.",
          "is_bot": false,
          "headline": "fix(curate): KEEP action resets staleness, valid_until, and invalidat…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-26T08:16:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d00309e4321ba26cff27b228033c51def99d6b32",
          "body": null,
          "is_bot": false,
          "headline": "fix(curate): increase curator HTTP timeout to 5min for large namespaces",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-25T22:17:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2440be0ff3e3e9e3f3c426ea62df056d5d67934",
          "body": "Add a curation system that uses a large external LLM (Gemini 2.5 Flash)\nto review entire namespaces, delete noise, recalibrate importance weights,\nand generate quality reflections.\n\n- New internal/curate package: engine, prompt builder, priorities loader\n- CuratorConfig as second LLM provider indepe\n[…]\n/dataset)\n- Reflections now use curator provider when configured (quality upgrade)\n- Default Ollama model changed from qwen2.5:3b to qwen3:8b\n- 27 tests in curate package, all 23 project packages pass",
          "is_bot": false,
          "headline": "feat(curate): add deep memory curation with large model support",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-25T22:10:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1884c372ca3683bfc9ff8aea5625a948a5be64fd",
          "body": "- Add ClaudeDesktopConfig field to Environment with platform-aware path\n  detection (darwin/windows only — Claude Desktop not available on Linux)\n- Add ConfigureClaudeDesktop toggle to the Integrations step, hidden on\n  Linux where ClaudeDesktopConfig is empty (same pattern as install_hook)\n- Add upsertClaudeDesktopConfig() writing mcpServers without \"type\":\n  \"stdio\" as required by Claude Desktop (differs from Claude Code)\n- Wire the call in executeInstall() with non-fatal warning on error",
          "is_bot": false,
          "headline": "feat(installer): add Claude Desktop support to install wizard",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-25T15:07:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "090ff66425b461440ba9ebba3b21070246fa89c2",
          "body": "…ig dir\n\nos.UserConfigDir() returns ~/Library/Application Support on macOS\nwhich is wrong for CLI tools. Now uses XDG_CONFIG_HOME if set,\nfalling back to ~/.config on all platforms (Linux, macOS, Windows WSL).\n\nFixes installer and config loader both.",
          "is_bot": false,
          "headline": "fix(config): use ~/.config/neurox on all platforms instead of OS conf…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-25T13:00:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08a3076e477aef7aa81358b7d2fe2162ce53518e",
          "body": "…ADME\n\n- install.sh always installs to ~/.local/bin (or --install-dir)\n- Detects and overwrites stale neurox copies in other PATH locations\n- README: one install command, no Go install confusion",
          "is_bot": false,
          "headline": "fix(install): single install path, auto-remove stale copies, clean RE…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-25T12:09:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10b477edce42f299976a11c677c52a481e48a150",
          "body": "- README: two install options (curl|bash vs go install)\n- Note explaining ~/go/bin vs PATH conflict with fix command\n- install.sh: sync all existing neurox locations in PATH after install",
          "is_bot": false,
          "headline": "docs(install): add go install instructions and PATH conflict warning",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-25T12:01:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83346d15e776b0e70ed953adff416f9dcacbc8be",
          "body": "Claude Code:\n- File: ~/.claude.json (was ~/.claude/settings.json — wrong file)\n- Format: {type:stdio, command:neurox, args:[mcp]} (was absolute path, no type)\n\nOpenCode:\n- Format: {type:local, command:[neurox,mcp], enabled:true} (was absolute path in array)\n\nCursor / Antigravity:\n- Format: {command:neurox, args:[mcp]} (was absolute path)\n\nAll clients now use 'neurox' by name instead of absolute path,\nso the config works regardless of install location.",
          "is_bot": false,
          "headline": "fix(installer): correct MCP config paths and formats for all clients",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-25T11:45:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b1e8207ded2d78ccd32c25de487e996e03f231b",
          "body": "Use filepath.EvalSymlinks to get the real executable path,\navoiding issues when neurox is run via a symlink.\nFalls back to 'neurox' (PATH-based) if resolution fails.",
          "is_bot": false,
          "headline": "fix(installer): resolve symlinks for binary path in MCP configs",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-25T11:43:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "695e92b8e00126253ada49063e077713b43ff7f6",
          "body": "…ents\n\nneurox install now only does:\n1. Write config.yaml (LLM + embeddings providers)\n2. Write MCP configs for selected clients (Claude, Cursor, OpenCode, etc.)\n3. Install skill to ~/.claude/skills/neurox/\n4. Install git hook if requested\n\nNo binary copy, no PATH changes, no go build.\nThe binary is already installed when the user runs this command.",
          "is_bot": false,
          "headline": "fix(installer): remove binary copy — setup wizard only configures cli…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-25T10:48:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0278594421d8ed610b7f468d95edf13f0c46f21f",
          "body": "neurox install now copies the current executable to the install dir\ninstead of running go build. This makes it work correctly when installed\nvia install.sh or go install, without requiring the source repo.",
          "is_bot": false,
          "headline": "fix(installer): use running binary instead of building from source",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-25T10:42:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d45b427aaf28e2c9ef3554997651cdc936fcd4cd",
          "body": "…tHub Releases\n\n- Detects OS/arch automatically (linux/darwin, amd64/arm64)\n- Resolves latest version tag via GitHub API\n- Downloads neurox_<version>_<os>_<arch>.tar.gz from releases\n- Falls back to source build only if no prebuilt binary available\n- Installs with 'install -m 755' (atomic, handles busy binary)\n- Adds install dir to PATH in shell rc if not already present\n- curl | bash friendly",
          "is_bot": false,
          "headline": "feat(install): rewrite install.sh to download prebuilt binary from Gi…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-24T22:21:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f6f541347d5f6474b49a5f3fbd2a61775818ac3c",
          "body": "Drop GoReleaser for builds (--split is Pro-only). Use direct go build\ncommands on native runners instead:\n- ubuntu-latest: linux/amd64 + linux/arm64 (with aarch64 cross-compiler)\n- macos-latest: darwin/amd64 + darwin/arm64 (native CGO)\nBoth jobs upload tarballs to the same GitHub Release via softprops/action-gh-release",
          "is_bot": false,
          "headline": "ci(release): replace goreleaser split with native per-platform builds",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-24T22:10:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9dfa998adb9acde2a7405304e61131cafb257b24",
          "body": "- linux job: ubuntu-latest with gcc + gcc-aarch64-linux-gnu\n- darwin job: macos-latest (native CGO, no cross-compilation)\n- merge job: combines artifacts and publishes release\n- partial.by: target for split/merge strategy\n- goreleaser.yaml: add partial section, exclude ci: from changelog",
          "is_bot": false,
          "headline": "ci(release): split linux/darwin builds across native runners",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-24T22:08:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07329913ef026c6e2b4d7766471eded804a837fb",
          "body": "…ecations\n\n- Install gcc-aarch64-linux-gnu for linux/arm64 CGO support\n- Set CC env per target: x86_64-linux-gnu-gcc / aarch64-linux-gnu-gcc\n- archives.format → formats (array, fixes deprecation)\n- brews → homebrew_casks (fixes deprecation)\n- goreleaser-action version: latest → ~> v2 (stable pin)",
          "is_bot": false,
          "headline": "ci(release): fix CGO cross-compilation for arm64, fix goreleaser depr…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-24T22:05:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "009c3e4551335ad40d989a8bfeeb436cef859449",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to 0.1.2",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-24T22:01:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "284d233fac800b845895195f60b3fc39b8b58a60",
          "body": "…kflow",
          "is_bot": false,
          "headline": "ci(release): add GoReleaser Homebrew tap + GitHub Actions release wor…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-24T21:57:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3dd7bb279366f4769744c9d6a46fcc385f12b08b",
          "body": null,
          "is_bot": false,
          "headline": "chore(plan): mark steps 4 and 5 as done",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-24T21:32:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8176bcdccb33eb19af24ab6cec654e038efd924e",
          "body": "…glossary, blog draft\n\n- neurox benchmark --output-html report.html: self-contained HTML with SVG radar chart,\n  per-dimension breakdown, competitor comparison table (mem0/Zep/baseline)\n- internal/export/: ExportMarkdown writes Obsidian-compatible .md with YAML frontmatter\n  and WikiLinks; ImportMar\n[…]\n,\n  staleness, temporal intent, observation vs fact, brain power score)\n- docs/blog-benchmark.md: 1664-word blog post draft for HN/reddit launch\n- README: hero section rewritten for coding agent users",
          "is_bot": false,
          "headline": "feat(benchmark,export,content): HTML report, markdown export/import, …",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-24T21:32:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "36b0db9e6a7670df05eb293caae8506da850e2c0",
          "body": "…e, and layer funnel\n\n- New GET /api/v1/decay-timeline endpoint — avg importance per layer per day (30d)\n- Health tab: score card (0-100) with letter grade and color coding\n- Dimension breakdown: per-dimension progress bars with status icons and recommendations\n- Memory layer funnel: Buffer/Working/Core counts with percentage bars\n- Decay timeline: Chart.js line chart of avg importance evolution over 30 days\n- Chart.js 4 loaded via CDN; chart destroyed/recreated on tab revisit",
          "is_bot": false,
          "headline": "feat(dashboard): add Health tab with brain power score, decay timelin…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-24T21:03:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f813b0af38925d6f17bca4fe359353f90195d04",
          "body": "…d rename module path\n\n- Rename go.mod module from 'neurox' to 'github.com/joeldevz/neurox' — enables go install\n- Update all 57 Go files with corrected internal import paths\n- Add docs/ with quickstart guides for Claude Code, Claude Desktop, Cursor, VS Code, OpenCode\n- Add skills/neurox/SKILL.md — \n[…]\n.claude/skills/neurox/ when Claude Code integration is selected\n- Add package.json for npx skills add joeldevz/neurox ecosystem support\n- Update .gitignore to exclude longmemeval data and result files",
          "is_bot": false,
          "headline": "feat(distribution): add per-client docs, SKILL.md, skills install, an…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-24T20:56:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fdea21cef79b8a0fa2223def0a9573f1f7ca7678",
          "body": "…mulations\n\nThree-axis benchmark covering cognitive (45%), performance (20%), and\nagent simulation (35%) dimensions. Includes MCP harness for in-process\nJSON-RPC tool calls, CLI with --scale/--category/--dimensions flags,\nand JSON export. Large-scale baseline: 86.2/100 (Grade A).",
          "is_bot": false,
          "headline": "feat(benchmark): add 12-dimension brain benchmark suite with agent si…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-22T17:32:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da9a6593f00ac0d33f1bc6a439e1b7202cabe49e",
          "body": "…from core knowledge\n\nAdd 'retention' field (operational/durable) to observations so consolidation\nstops promoting step logs, plan tracking, and build notes into Core memory.\n\n- Schema migration 004 adds retention column; 005 backfills existing data\n- New classify package auto-classifies observation\n[…]\n for setup wizard\n- Simplified install.sh as lightweight bootstrap script\n- 2 new tests for proactive ordering, 4 for consolidation retention,\n  14 for classify, 3 for observation retention round-trip",
          "is_bot": false,
          "headline": "feat(retention): add retention policy to separate operational memory …",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-22T11:08:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "34e1a1c7b68377cedfdd13b45e7a2bbf8c9f8130",
          "body": "…etry and health_check\n\nWire embed.Queue into MCP/HTTP save+update handlers so all observations\nget vector embeddings. Add BackfillPending to consolidation pipeline for\nhistorical data. Create telemetry package tracking every MCP tool call\nwith parameter usage. Add health_check tool computing brain \n[…]\nw packages: internal/telemetry, internal/health\n- 13 MCP tools (health_check added), GET /api/v1/health-check endpoint\n- Embedding stats in status responses\n- All 21 packages pass, race detector clean",
          "is_bot": false,
          "headline": "feat(embed,telemetry,health): wire embedding pipeline, add tool telem…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-22T03:11:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a926fe3e08342883b0ba9cf7a413c88e7474576e",
          "body": null,
          "is_bot": false,
          "headline": "docs(readme): expand cli and api reference",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-20T17:38:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b04b5335923f84975dabbea856460b725bf0949e",
          "body": null,
          "is_bot": false,
          "headline": "docs(readme): align setup and hook docs",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-20T17:09:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "591319124b5815ac5fa01ccf58e598f45f0a8484",
          "body": "…nd browser opening.",
          "is_bot": false,
          "headline": "feat: introduce interactive graph visualization with HTML rendering a…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-20T16:53:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b257bed91d9b0851a5001b4fa375a825923371e5",
          "body": "…move numerous vendored dependencies.",
          "is_bot": false,
          "headline": "feat: Introduce temporal mention and observation capabilities, and re…",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-20T12:33:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1add567149746a22e26bd3f819792d1f3d33a96c",
          "body": "Brain-inspired memory engine for AI coding agents with three-layer\nmemory model (Buffer → Working → Core), hybrid search (FTS5 + semantic),\nEbbinghaus decay curves, and consolidation pipelines.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(neurox): initial commit",
          "author_name": "Joeldevz",
          "author_login": "joeldevz",
          "committed_at": "2026-03-19T23:34:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 22,
      "commits_last_year": 92,
      "latest_release_at": "2026-06-19T15:07:37Z",
      "latest_release_tag": "v0.5.6",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 8,
      "days_since_latest_release": 41,
      "mean_days_between_releases": 9.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/joeldevz/neurox",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/joeldevz/neurox",
          "is_deprecated": false,
          "latest_version": "v0.5.6",
          "repository_url": "https://github.com/joeldevz/neurox",
          "versions_count": 26,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-06-19T15:07:03Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 41
        },
        {
          "name": "neurox",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "ai",
            "memory",
            "mcp",
            "coding-agent",
            "brain",
            "cortex",
            "llm",
            "embeddings",
            "fts",
            "knowledge-graph",
            "claude",
            "cursor",
            "copilot",
            "neuroscience"
          ],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/neurox",
          "is_deprecated": false,
          "latest_version": "0.0.1",
          "repository_url": "https://github.com/joeldev/neurox",
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 10,
          "first_published_at": "2026-03-19T14:20:51.088000Z",
          "latest_published_at": "2026-03-19T14:20:51.728000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 134
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 5,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 7
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": true,
      "bootstrap_files": [
        "vendor/github.com/buger/jsonparser/Makefile",
        "vendor/github.com/spf13/cast/Makefile",
        "vendor/github.com/wk8/go-ordered-map/v2/Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "go.mod"
      ],
      "largest_source_bytes": 152158,
      "source_files_sampled": 168,
      "oversized_source_files": 2,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 9027
    },
    "dependencies": {
      "manifests": [
        "go.mod",
        "package.json"
      ],
      "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": [
        "go",
        "npm"
      ],
      "dependencies": [
        {
          "name": "github.com/charmbracelet/bubbletea",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.2.4"
        },
        {
          "name": "github.com/charmbracelet/lipgloss",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.0.0"
        },
        {
          "name": "github.com/mark3labs/mcp-go",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.45.0"
        },
        {
          "name": "github.com/mattn/go-sqlite3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.14.24"
        },
        {
          "name": "github.com/oklog/ulid/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.1.1"
        },
        {
          "name": "gopkg.in/yaml.v3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.0.1"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 3,
        "open_issues": 7,
        "closed_ratio": 0,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "joeldevz",
          "commits": 95,
          "avatar_url": "https://avatars.githubusercontent.com/u/36200065?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".golangci.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum",
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "3 out of 3 merged PRs checked by a CI test -- score normalized to 10",
            "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/22 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 6,
            "reason": "project has 2 contributing companies or organizations -- score normalized to 6",
            "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": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "26 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 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": 3,
            "reason": "7 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "5251dead3bb3e8235161237682e03e5f64d31583",
        "ran_at": "2026-07-31T14:59:09Z",
        "aggregate_score": 3.4,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-31T08:27:14Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-06-19T15:54:03Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 1,
          "created_at": "2026-03-30T22:29:56Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2,
          "created_at": "2026-03-30T22:30:19Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 3,
          "created_at": "2026-03-30T22:30:50Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 4,
          "created_at": "2026-03-30T22:31:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 5,
          "created_at": "2026-03-30T22:31:49Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 9,
          "created_at": "2026-07-01T08:44:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 10,
          "created_at": "2026-07-31T08:23:04Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/joeldevz/neurox",
    "host": "github.com",
    "name": "neurox",
    "owner": "joeldevz"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 54,
      "inputs": {
        "security": 33,
        "vitality": 77,
        "community": 26,
        "governance": 45,
        "engineering": 84
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 77,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "commits_last_year": 92,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 8
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "8/52 weeks with commits",
                "points": 5.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "92 commits in the last year",
                "points": 17.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 92
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "26 commit(s) and 2 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": 22,
              "latest_release_tag": "v0.5.6",
              "releases_from_tags": false,
              "days_since_latest_release": 41,
              "mean_days_between_releases": 9.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "22 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 22
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 41 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 41
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~9.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 9.2
                    }
                  }
                ],
                "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": "critical",
        "name": "Community & Adoption",
        "value": 26,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "forks": 0,
              "stars": 5,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "5 stars",
                "points": 9.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 45,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 16,
            "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 2 contributing companies or organizations -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "at_risk",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 38,
            "inputs": {
              "merged_prs": 3,
              "open_issues": 7,
              "closed_issues": 0,
              "issue_closed_ratio": 0,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "0% of issues closed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 0
                    }
                  }
                ],
                "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/22 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": 3,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "joeldevz",
              "public_repos": 6,
              "account_age_days": 3096
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "3 followers of joeldevz",
                "points": 4.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 3,
                      "login": "joeldevz"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "6 public repos, account ~8 yr old",
                "points": 18.2,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 6
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 8
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/joeldevz/neurox"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 41
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 41 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 41
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "26 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 26
                    }
                  }
                ],
                "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": 84,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".golangci.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "3 out of 3 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "topics": [
                "ai-agents",
                "claude-code",
                "coding-agents",
                "llm",
                "mcp",
                "memory",
                "opencode",
                "persistent-memory",
                "sqlite"
              ],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "9 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 33,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 33,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3.4
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "3 out of 3 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/22 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 1.5,
                "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.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "26 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "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": "7 existing vulnerabilities detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 73,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.989,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 9027
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "94 of 95 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 94,
                      "sampled": 95
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum",
                "package-lock.json"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [
                "vendor/github.com/buger/jsonparser/Makefile",
                "vendor/github.com/spf13/cast/Makefile",
                "vendor/github.com/wk8/go-ordered-map/v2/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.011,
              "toolchain_manifests": [
                "go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "vendor/github.com/buger/jsonparser/Makefile, vendor/github.com/spf13/cast/Makefile, vendor/github.com/wk8/go-ordered-map/v2/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "vendor/github.com/buger/jsonparser/Makefile, vendor/github.com/spf13/cast/Makefile, vendor/github.com/wk8/go-ordered-map/v2/Makefile"
                    }
                  }
                ],
                "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": ".golangci.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "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": "1 of the last 95 commits agent-authored or agent-credited",
                "points": 2.1,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "sampled": 95
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 152158,
              "source_files_sampled": 168,
              "oversized_source_files": 2
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "2/168 source files over 60KB",
                "points": 54.3,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 168,
                      "oversized": 2
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "npm package 'neurox' points at a different repository (https://github.com/joeldev/neurox); excluded from ecosystem scoring",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-31T14:59:19.372272Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/joeldevz/neurox.svg",
  "full_name": "joeldevz/neurox",
  "license_state": "custom",
  "license_spdx": null
}

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

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

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