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

jessymariau / booboo

Booboo — the unified operational brain. Wiring + knowledge + memory + agents + crons fused into one rooted, queryable 3D graph. REST + MCP + million-node 60fps viewer.

TypeScript · JavaScript · CSSMIT★ 1 星标⑂ 0 复刻始于 2026年7月在 GitHub 上查看 ↗

jessymariau/booboo 的健康指数为 100 分中的 44 分,处于「存在风险」区间。 其得分最高的类别是Engineering Quality(81/100),最低的是Sustainability & Governance(32/100)。 最近一次更新在 5 天前。 近期的大部分工作由 1 位贡献者完成。

44
总分 / 100
存在风险

软件健康指数

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

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

评分画像

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

所有权

Jessy Mariau个人账户
0 关注者5 个公开仓库始于 2026年3月

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

软件包生态系统

注册表软件包版本月下载量版本数最近发布标签
npm@booboo-brain/cli指向其他仓库——不计分0.5.11,24176 天前booboocliknowledge-graphmcp
npm@booboo-brain/spec指向其他仓库——不计分0.3.11,65176 天前
npm@booboo-brain/build指向其他仓库——不计分0.2.0563321 天前
npm@booboo-brain/panel指向其他仓库——不计分0.5.62,284146 天前
npm@booboo-brain/serve指向其他仓库——不计分0.4.184356 天前
npm@booboo-brain/vault指向其他仓库——不计分0.1.129728 天前
npm@booboo-brain/viewer指向其他仓库——不计分0.1.249636 天前
npmcreate-booboo指向其他仓库——不计分0.5.01,15176 天前boobooscaffoldcreateknowledge-graphmcp

按类别列示的指标

活力

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

35存在风险 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 5 天前
3.5/36提交节奏 — 52 周中有 5 周有提交
18/18提交量 — 最近一年 158 次提交
0/10OpenSSF Scorecard:Maintained — project was created within the last 90 days. Please review its contents carefully
所用输入
commits_last_year158
human_commit_share1
days_since_last_push5
active_weeks_last_year5
评分方式
0/27有发布版本 — 未发布任何发布版本
0/36发布时效 — 没有发布版本
0/27发布节奏 — 没有发布版本
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count0
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

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

33存在风险 · 占总体的 18%
评分方式
0/60星标 — 1 个星标
0/25复刻 — 0 个复刻
0/15关注者 — 0 位关注者
所用输入
forks0
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

70良好
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
18/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

可持续性与治理

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

32存在风险 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
0/22.5提交分布 — 头号贡献者编写了 100% 的提交
1.4/13.5贡献者广度 — 1 位贡献者
0/10OpenSSF Scorecard:Contributors — project has 0 contributing companies or organizations -- score normalized to 0
所用输入
bus_factor1
contributors_sampled1
top_contributor_share1
评分方式
0/46.8议题解决 — 没有议题或无数据
38.2/38.3PR 接受 — 已裁定的 PR 中 5/5 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/16 approved changesets -- score normalized to 0
所用输入
merged_prs5
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
已排除计分(无数据或不适用):议题解决。 其余权重已重新归一化。
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
0/25所有者影响力 — jessymariau 有 0 位关注者
6.4/25既往记录 — 5 个公开仓库,账户约 0 年
所用输入
followers0
owner_typeUser
is_verified
owner_loginjessymariau
public_repos5
account_age_days134
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。

工程质量

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

81良好 · 占总体的 20%

工程实践

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

文档

100优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://booboo-black.vercel.app
10/10仓库描述
10/10主题标签 — 8 个主题标签
10/10Wiki
所用输入
topicsai-agents, developer-tools, graph-visualization, knowledge-graph, mcp, memory, typescript, webgl
has_wiki
homepagehttps://booboo-black.vercel.app
has_readme
has_docs_dir
has_description

安全

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

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

安全态势

30存在风险
评分方式
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 — 1 out of 1 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/16 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
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
2/5Security-Policy — security policy file detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 10 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3
已排除计分(无数据或不适用):signed_releases。 其余权重已重新归一化。
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
13.2/25间接依赖不含已知公告 — 1 个受影响:@hono/node-server 1.19.15 (moderate 5.9)
40/40没有长期未处理的公告 — 没有公告公开超过 90 天
所用输入
sourceosv
advisories1
affected_packages1
assessed_packages176
unassessed_packages0
affected_by_severitymoderate 1
direct_affected_packages0
比对的是 npm:@booboo-brain/cli@0.5.1 的运行时依赖闭包——安装已发布的软件包时真正被拉取进来的内容——共 176 个软件包。 未对可达性进行分析。

AI 就绪度

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

57中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 98 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.98
agent_instruction_files
agent_instruction_max_bytes
评分方式
0/18一条命令的引导启动
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — packages/build/tsconfig.json, packages/cli/tsconfig.json, packages/create-booboo/tsconfig.json, packages/panel/tsconfig.json, packages/serve/tsconfig.json, packages/spec/tsconfig.json, packages/vault/tsconfig.json, packages/viewer/tsconfig.json
10/10可复现环境 — Dockerfile, lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 63 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilespnpm-lock.yaml
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configspackages/build/tsconfig.json, packages/cli/tsconfig.json, packages/create-booboo/tsconfig.json, packages/panel/tsconfig.json, packages/serve/tsconfig.json, packages/spec/tsconfig.json, packages/vault/tsconfig.json, packages/viewer/tsconfig.json
agent_commit_share0.63
toolchain_manifests
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — TypeScript(静态类型)
51.7/55可控的文件大小 — 采样的 50 个源文件中有 3 个超过 60KB
所用输入
primary_languageTypeScript
largest_source_bytes87,788
source_files_sampled50
oversized_source_files3
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
20/20MCP 服务器
40/40可运行示例 — examples
所用输入
example_dirsexamples
has_mcp_signal
api_schema_files

关键数据

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

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • npm package '@booboo-brain/cli' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring
  • npm package '@booboo-brain/spec' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring
  • npm package '@booboo-brain/build' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring
  • npm package '@booboo-brain/panel' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring
  • npm package '@booboo-brain/serve' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring
  • npm package '@booboo-brain/vault' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring
  • npm package '@booboo-brain/viewer' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring
  • npm package 'create-booboo' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

更多细节

OpenSSF Scorecard 3.0 / 10
3.0综合

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests1 out of 1 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/16 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
4Security-Policysecurity policy file detected
不适用Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities10 existing vulnerabilities detected
直接依赖 20
注册表软件包版本约束清单文件
npm@booboo-brain/specworkspace:*packages/build/package.json
npmpg^8.13.0packages/build/package.json
npmyaml^2.6.0packages/build/package.json
npm@booboo-brain/buildworkspace:*packages/cli/package.json
npm@booboo-brain/serveworkspace:*packages/cli/package.json
npm@booboo-brain/specworkspace:*packages/cli/package.json
npm@booboo-brain/viewerworkspace:*packages/cli/package.json
npm@booboo-brain/panelworkspace:*packages/cli/package.json
npm@booboo-brain/vaultworkspace:*packages/cli/package.json
npm@booboo-brain/specworkspace:*packages/panel/package.json
npm@booboo-brain/specworkspace:*packages/serve/package.json
npm@modelcontextprotocol/sdk^1.12.0packages/serve/package.json
npmzod^3.23.0packages/serve/package.json
npm@booboo-brain/specworkspace:*packages/vault/package.json
npm@booboo-brain/specworkspace:*packages/viewer/package.json
npmthree^0.184.0packages/viewer/package.json
npm@react-three/fiber^9.0.0packages/viewer/package.json
npm@react-three/drei^10.0.0packages/viewer/package.json
npm@react-three/postprocessing^3.0.4packages/viewer/package.json
npmpostprocessing^6.39.1packages/viewer/package.json
全部依赖 未采集

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

依赖安全公告 1

安装 npm:@booboo-brain/cli@0.5.1 会引入 176 个包(直接与传递):其中 1 个存在已知公告,0 个为直接依赖。

软件包版本关系严重程度公告数修复版本
@hono/node-server1.19.15间接12.0.5

公告表示依赖图中记录的版本落入某条公告的受影响范围。可达性未经分析,且依赖图包含开发与测试的版本固定——某项发现可能只涉及工具链而非交付的软件。

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "ai-agents",
        "developer-tools",
        "graph-visualization",
        "knowledge-graph",
        "mcp",
        "memory",
        "typescript",
        "webgl"
      ],
      "is_fork": false,
      "size_kb": 2661,
      "has_wiki": true,
      "homepage": "https://booboo-black.vercel.app",
      "languages": {
        "CSS": 81956,
        "HTML": 12963,
        "Shell": 6502,
        "Dockerfile": 731,
        "JavaScript": 111073,
        "TypeScript": 370577
      },
      "pushed_at": "2026-07-20T19:20:44Z",
      "created_at": "2026-07-02T07:52:59Z",
      "owner_type": "User",
      "updated_at": "2026-07-25T16:55:15Z",
      "description": "Booboo — the unified operational brain. Wiring + knowledge + memory + agents + crons fused into one rooted, queryable 3D graph. REST + MCP + million-node 60fps viewer.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "JavaScript",
        "CSS"
      ]
    },
    "owner": {
      "blog": "https://fractionalhq.uk",
      "name": "Jessy Mariau",
      "type": "User",
      "login": "jessymariau",
      "company": null,
      "location": "London, UK",
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/268124037?v=4",
      "created_at": "2026-03-14T07:52:41Z",
      "is_verified": null,
      "public_repos": 5,
      "account_age_days": 134
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [],
      "recent_commits": [
        {
          "oid": "c38b4c793c585ba94203406cc35d9bcc76d7c50e",
          "body": "PR #6 is the first pull request this repo has ever run CI on, and the\nguard died on it: `fatal: origin/main...HEAD: no merge base`, exit\n128. actions/checkout clones shallow, the step then fetched --depth=1,\nand two one-commit histories have no common ancestor for base...HEAD\nto resolve against.\n\nSo\n[…]\nh-depth: 0 on the checkout, and no --depth on the fetch.\n\nIt had been \"tested against six real cases\". They were invented\ncases, run by hand, and they tested the logic. Only a real PR tests\nthe guard.",
          "is_bot": false,
          "headline": "fix: the changeset guard failed closed on every PR (no merge base)",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T19:20:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7a94bba671ebb982730519603e3017b16d1ceb23",
          "body": "The blocker was one account-level flag,\ncan_approve_pull_request_reviews, which overrides even a workflow's\nown declared pull-requests: write — release.yml grants itself that\nand still could not open a PR.\n\nLeft default_workflow_permissions at \"read\" on purpose: the release\njob declares the write sc\n[…]\none is\nthe dependent bump updateInternalDependencies exists to force — the\nstructural fix for C35, now demonstrated rather than asserted.\n\nThe gate is now what G4 claimed it already was: one approval.",
          "is_bot": false,
          "headline": "ci: the release pipeline is armed — Version PR #6 exists",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T19:12:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b109810c55d070db718d084d9eff7a776b0799f7",
          "body": "… tick\n\nCI caught what I did not: boardHeight golden=4776 got=4662 on ubuntu,\na 2.4% difference because the runner wraps a card's text one line\ndifferently. This file's own header calls text width \"a rasteriser's\nopinion, not a fact\" — board height is that opinion one step removed,\nso I had applied \n[…]\ne on a repo where no changeset had ever\nbeen merged, so that step had never run — a tick with no observed\nartefact, which is exactly what GAPS forbids. Corrected, with the\nsetting that fixes it named.",
          "is_bot": false,
          "headline": "fix: tolerance on boardHeight, and A7's release row was another false…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T16:53:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aed20ba9921acf2524381c3dc0e37e994e1a3890",
          "body": ".gitignore carries *.png, so design/golden/pemberton-overview.png had\nnever left one machine. GAPS claimed 'one, of five'; the true number\nwas zero. Found by committing the C10 work and reading what git\nactually took, not by reading the row.\n\nA second argument for the JSON gate, arrived at by accident: a golden\nthat cannot be committed cannot be a baseline.",
          "is_bot": false,
          "headline": "docs: correct A7 — 'one golden frame committed' was never committed",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T16:48:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04a90c5244dd1c949dc18288d432fedeb18259f5",
          "body": "Built on check-vendored-index.mjs's shape: probe, compare, fail\nloudly, prove it by breaking it.\n\nA \"frame\" here is measurements, and refusing the obvious pixel diff\nwas the actual decision. An image diff does not survive this project:\nCI is ubuntu and dev is Windows so every text pixel differs on\nr\n[…]\nferent measurement.\n\nAlso extracts scripts/lib/cdp.mjs and moves shot.mjs onto it, rather\nthan leaving two copies of the driver in a repo whose most repeated\ndefect is two implementations of one fact.",
          "is_bot": false,
          "headline": "ci: golden frames — measurements, not pixels (C10)",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T16:48:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "db7fce73c94b440befc0c8c6db5b47f8d3dde6b8",
          "body": "Reading computed style beats reading pixels for colour, size and\noverflow (GAPS C23, C32), and the script could run a probe but threw\nthe answer away.",
          "is_bot": false,
          "headline": "tools: --eval prints its result — a probe, not just a screenshot",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T15:17:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6701e3b334aae4dd941267981145efca9a60ef94",
          "body": "The funnel had never been looked at below desktop. What the first\ncaptures showed:\n\n  * the landing hero was EMPTY. GAPS called the fallback \"a CSS\n    starfield\"; it is two radials at .14/.10 alpha with no stars in\n    it. So a phone visitor read \"It's turning behind these words,\n    live\" over not\n[…]\no revolution to cut a seamless loop on.\n\nDesktop verified unregressed at 1440x900 and 1600x1000. C9 goes amber,\nnot green: the board's toolbar still overflows at 390, and none of\nthis is a real phone.",
          "is_bot": false,
          "headline": "feat: make all three surfaces work on a phone (C9), and the hero honest",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T15:13:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "15f0f6a08e5fa36b39675815c6ba4542032f8c55",
          "body": "booboo.fractionalhq.uk and fractionalhq.uk/booboo had no og:image and\nunfurled blank. fractionalhq.uk did NOT — the backlog was wrong about\nthat one; it carried a valid card that was simply two weeks stale and\nshowed the pre-craft-pass page, ticker and all.\n\nEach page's card is now a live capture of\n[…]\nps the top.\n\nAdds scripts/shot.mjs — zero-dependency CDP capture, so this is\nre-runnable instead of an ad-hoc command line. Same shape C10 needs.\n\nGAPS C8 closed with the live curl of all three pages.",
          "is_bot": false,
          "headline": "feat: OG cards on all three pages — the real hero, not a logo plate (C8)",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T14:45:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7e64c232a44d29cbde542b82e2a0c107ba72fc94",
          "body": "The old one was stale in a way that would have actively misled: it still\ndescribed PR #5 as open and do-not-merge, and named the light-colour fix as\ntask 0. Both are long done.\n\nThe new one leads with a swept state (not a remembered one), then a section on\nwhy a screenshot from a hidden Chrome tab i\n[…]\nreading before catching it. Then\nthe backlog in priority order, the gates, and the three constraints that keep\nthe landing page's run log safe.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: NEXT_SESSION — rewritten handoff for the next pickup",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T14:16:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b80ce7ed04f790fe51898ed16512aa8d3ca81943",
          "body": "Both were stale entries rather than real work, and a backlog that lies about\nwhat is open is worse than a longer one.\n\nC2 (\"panel counters read 0\") sat at half-fixed. It is genuinely closed now: C33\nresolved the memory->observation alias in the index and guarded it in CI, and\nC35 published serve 0.4\n[…]\ncanonical\nsource, and warns against rotating on its say-so. That file is gitignored, so\nthe correction lives there and the evidence lives here.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: close C2 and D3 — two rows the backlog was carrying falsely",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T14:09:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4178eb7450f93471f65fa546f867a573eb8c9fa7",
          "body": "The skip-guard stays deliberately: when the token expires (~October) releases\ndegrade to a warning rather than reddening main, and the message says exactly\nwhat to do.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: release pipeline is armed — NPM_TOKEN secret set",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T12:33:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0f28080d22a9639029825b8894c6b9d57380656e",
          "body": "G4's capability was proven; its discipline never existed. Nothing forced a bump\non merge, so main and npm drifted: the OS ran a two-week-old panel (C30) and\n`npx booboo` shipped panel 0.5.2 from before the entire craft pass (C35),\nbecause a workspace dependency is frozen at publish time.\n\n- @changes\n[…]\n a warning when NPM_TOKEN is absent rather than failing —\na permanently-red main trains everyone to ignore CI. Jesse adds the secret to\narm it.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: changesets + release workflow — close G4's remainder (GAPS A7, C35)",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T10:32:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f1c291f3fa71bb4cf2624f4c4b50ae43d1d302ca",
          "body": "… (C35)\n\n@booboo-brain/cli@0.5.0 pinned panel 0.5.2 — from before the entire craft pass —\nplus serve 0.4.0, spec 0.3.0, viewer 0.1.1, vault 0.1.0. A workspace dependency\nis frozen to whatever was latest when the package was published, so every OSS\nuser running `npx booboo panel` got a board with no \n[…]\n and a bundle\ncontaining the solo-pack grid. Checking the repo, the demo, or our own OS would\neach have passed while the product stayed broken.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): republish so npx booboo stops shipping a two-week-old panel…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T10:28:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ba78b3d112250bd93b480e50ec27e77c0f5c3f78",
          "body": "…S C34)\n\nJesse, on the OS board: \"it's a single line, all agents are in a single line,\nit just doesn't make sense at all.\"\n\nA LANE is a shelf for a department AND ITS PEOPLE — head left, staff flowing\nright — and it earns a full-width row by having them. A childless rank-III unit\nfills none of it. T\n[…]\n9 lanes, no pack,\n62 cards, 61 rails — the exact count A5 recorded when the cascade shipped.\n\n0.5.5 -> 0.5.6 staged; publish stays Jesse-gated.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(panel): childless units pack instead of each claiming a lane (GAP…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T09:56:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "557b32faff204b235d344a042735c738b1ce8c03",
          "body": "There was a THIRD copy. web/api/_index.mjs is a hand-vendored BoobooIndex —\ndeliberately so (the demo's serverless functions must not drag in express +\nfs/journal, nor wait on an npm publish), and its header says \"if graph.ts\nchanges, re-copy them here\".\n\nThat rule had nothing enforcing it, and it i\n[…]\ne\n\"list type=memory: vendored=1 packaged=2\" and exit 1; restored, it passes.\n\nWhen a comment says two files must agree, make CI say it instead.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(web): sync the vendored index + guard the drift in CI (GAPS C33)",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T09:01:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "69b02d1c97e0a5d9662c99cfb722839010e86120",
          "body": "The Pemberton demo: three faces on one URL — SEE, GOVERN, ASK",
          "is_bot": false,
          "headline": "Merge pull request #5 from jessedu29260-netizen/feat/public-demo-site",
          "author_name": "jessedu29260-netizen",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T08:57:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b611ae06633c68a9fafc19abd6473418c20c696",
          "body": "CI caught a real bug in the previous commit, not a bad test. I had written the\nalias as a rename (memory -> observation), which broke graph.test.ts:31 —\ncorrectly, because JournalWriter writes every remembered note with\n`type: \"memory\"` literally (journal.ts:114). A rename would have made the whole\n\n[…]\n\n\n16/16 serve tests pass. Re-verified over the CLI: type=memory -> total 2100,\nclusters?type=memory -> house 70, executive 30, engineering 252.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(serve): make the memory alias a widening, not a rename (GAPS C33)",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T08:56:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fdfd4e7814891264782c8e641fd5fba910dadf06",
          "body": "…C33)\n\n`booboo panel` reported \"0 memories\" over a snapshot holding 2,100 of them,\nand every dossier read \"0 memories in reach\".\n\nThe panel asks /nodes?type=memory; the Pemberton's ledger entries are\ntype=observation. The alias existed — in web/api/panelapi.mjs, the DEMO SITE's\nserverless adapter, a\n[…]\n re-read: window hidden, rAF throttled, every\nuseCountUp frozen at 0 (C17's landmine).\n\nserve 0.4.0 -> 0.4.1 staged; publish stays Jesse-gated.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(serve): resolve the memory->observation alias in the index (GAPS …",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-20T08:53:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dc09da75020f713153afaf0d7576bf029ac9b907",
          "body": "…PS C32)\n\nThe Dionisos OS board rendered split-brain: data-theme=light on the document,\nwarm-white body, cards at #0d121a. Not a theme-plumbing bug — a custom-property\ncollision. dionisos-graph's globals.css declares 11 of the panel's token names\non .os-root, which is an ANCESTOR of the panel, and c\n[…]\nhtml>\nstayed light throughout. tsc clean, panel build clean, web/dist rebuild clean.\n\nVersion staged 0.5.4 -> 0.5.5; publish stays Jesse-gated.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(panel): scope tokens to the panel's own root, add a theme pin (GA…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T23:09:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6ad837d0092ef74d79f40d27af36f98f12a136b0",
          "body": "…fix, for a fresh pickup",
          "is_bot": false,
          "headline": "docs: NEXT_SESSION.md — consolidated pending work + the light-colour …",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T22:21:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73a0582d863d9ae0478aed96ceaf6110ac26b36d",
          "body": "Both gates cleared with Jesse's authorisation:\n- Published spec 0.3.1 · panel 0.5.4 · viewer 0.1.2 · create-booboo 0.5.0\n  (workspace:* resolved to spec@0.3.1 in panel/viewer, verified on npm).\n- Merged booboo-panel-cadence, npm update'd the OS to panel 0.5.4, deployed\n  dionisos-graph.vercel.app.\n\n\n[…]\nirmed there too — lane lit,\n  two drops pending, undo-one left the other (2 -> 1).\n\nG4's mechanism proven end-to-end: main -> publish -> npm -> OS -> deploy ->\nrender. GAPS C30/C31 shipped, D5 closed.",
          "is_bot": false,
          "headline": "docs: G4 shipped — the OS renders the proper booboo, verified live",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T20:32:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ae68e1815299edd8281e4b954a16d736ebc7b998",
          "body": "Dozens of commits landed on these four with no version bump, so npm still\nserves pre-craft-pass code. Bumped so the gated publish is one command:\n\n  @booboo-brain/spec         0.3.0 → 0.3.1   (additive: relTime, deprecation)\n  @booboo-brain/viewer       0.1.1 → 0.1.2   (relTime import, light-shaft s\n[…]\n update @booboo-brain/panel` + a redeploy - no\ndependency edit. spec/panel/viewer must publish TOGETHER: panel and viewer now\nimport relTime from spec.\n\nStaged only. `npm publish` remains Jesse-gated.",
          "is_bot": false,
          "headline": "release: stage version bumps for the packages changed this session",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T20:15:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6cb63abe0fe43cd1c7d09547d6cd6fa4513b14f9",
          "body": "Investigating \"Dionisos OS should display the proper booboo\" corrected a\nfactual error in GOALS: the OS does NOT render a lookalike. It mounts the real\n@booboo-brain/panel (OrganigramPage.tsx, never a fork) and adapts the live\nDionisos brain to the panel's routes. The architecture is already the rig\n[…]\niewer+create-booboo together, then npm update + redeploy the OS),\ngated on npm-publish and Dionisos production deploy.\n\nGAPS C30 (the drift) + C31 (the OS cadence fix, on branch booboo-panel-cadence).",
          "is_bot": false,
          "headline": "docs: G4 status — the OS mounts the real panel; the gap is version drift",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T20:14:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "892de325666dcc6e6c407732c4d39671bb00632b",
          "body": "Two findings, both from checking what already exists before building.\n\n1. CADENCE ALREADY EXISTED - and was documented into uselessness.\n\n`cadence` (expected hours between reports) was in the spec and `lightFor`\nalready honoured it for ANY agent, no automation gate. But the spec comment\nread \"automa\n[…]\n.\n\nVerified live: rendered tally {Healthy: 7, Needs a look: 2} across the nine\ndepartment cards, and the board's dossier now reads \"2mo ago\"/\"3mo ago\"\nwhere it read \"67d ago\"/\"96d ago\". GAPS C28, C29.",
          "is_bot": false,
          "headline": "G3 depth: declare the reporting rhythm, and stop saying it twice",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T19:06:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "63330905e126710abcc7d255dd8cca59ffd483a4",
          "body": "G3's core gap: every install got the same three agents - core -> writer,\nresearcher - whether you're a hotel, a law firm or one person with a side\nproject. Nothing was ever asked and nothing was ever inferred.\n\nThe architectural call is that the intake is a DOCUMENT THE AGENT EXECUTES,\nnot a CLI wiz\n[…]\nngs are flat by\nconstruction, so \"the divisions ARE the folder names\" would have produced a\nroot with fifteen children and called it an organigram. The grouping lives in\nthe prose. Step 1 now says so.",
          "is_bot": false,
          "headline": "create-booboo: the scaffold stops pretending it knows your system",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T18:30:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c0c6930a8669886d7be012d9a8fa43e5d5423244",
          "body": "…re visible\n\nFour defects found by looking at a crop of the card the previous commit had\njust fixed.\n\n- The role sat inside the header flex row, so the action buttons claimed\n  width first and The Executive's four seats wrapped into a 7-line ribbon\n  down one side. It now breaks out to full panel wi\n[…]\nd --dot.\n\nThe last two are the C23 lesson again - a rule that resolves to nothing\nlooks exactly like one that works - so this was verified in BOTH themes on\nthe deploy, not just the default. GAPS C27.",
          "is_bot": false,
          "headline": "panel: dossier - free the role, kill the side-stripes, make the textu…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T18:15:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e9a142ef607aeadb4d5f2f906abbe7a1ab0e4d87",
          "body": "Spotted on the Executive's own dossier: \"0 memories in reach\" on the root\nof a three-year-old hotel, while Engineering alone held 252. Same class as\nC22 - the most important card in the house reading zero.\n\nThe 100 observations were being generated and parented to the right bucket,\nbut stamped `clus\n[…]\n is checked in both directions.\n\nVerified on the deploy: house 70, executive 30, guest-registry 0 (still\nsealed), engineering 252. The Executive's dossier reads 100 memories in\nreach, was 0. GAPS C26.",
          "is_bot": false,
          "headline": "pemberton: the house and the executive held no memory at all",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T18:10:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bc772f2a2bff2d687f433c9229a9c4b455ae5804",
          "body": "Jesse: \"if i move a link, i cannot unlink it, it seems stuck to where i\nlinked it.\" Re-parenting was never broken; the affordance was.\n\n- Only .ag cards accepted a drop, so releasing over the empty space in a\n  lane did nothing at all. The whole lane is now a drop target and lights\n  up on hover, wh\n[…]\n dropped on Front\nOffice's empty lane space (parent engineering -> front-office), CCTV moved\nto F&B, then undid ONLY HVAC - it went back to engineering, CCTV stayed\nput, pending went 2 -> 1. GAPS C25.",
          "is_bot": false,
          "headline": "panel: make the board workable - lane-wide drop targets + per-item undo",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T18:04:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "940d8bdb3f2d75ff795324672437e7d968a8a7b2",
          "body": "Two faults my own pass had already named and I had only reported.\n\nThe page was Restrained throughout: warm white plus one brass accent. That\nis the PRODUCT colour strategy, and the brand register says a landing which\ndoes that ignores the register. It now alternates and commits. Act I dark on\nthe l\n[…]\ndth\non any page tall enough to scroll. Percentages resolve against the gutter,\nwhich is already scrollbar-aware, so widening by the padding is exact.\nVerified scrollWidth <= clientWidth after the fix.",
          "is_bot": false,
          "headline": "feat(web): commit the palette, add the imagery, break the gutter",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T17:52:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bb108b8ffc939ac62a60bca5f3a6f3c3d93484cd",
          "body": "I had loaded the skill, applied two shared laws and called it done. Running\nit properly, against the brand register reference, found two banned modules\non the landing.\n\nIdentical card grids: .board-notes was three same-sized cards, heading plus\ntext, repeated. Now a run of claims with no chrome, a b\n[…]\n card is technically a side-stripe hit, but Jesse explicitly chose\nthat variant and the stripe is semantic (health state) rather than a\ndecorative accent. His call to make, not mine to quietly revert.",
          "is_bot": false,
          "headline": "fix(web): clear two absolute bans the impeccable pass caught",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T17:44:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "481b8d46970c7d2174c02bfd41222be0707c4799",
          "body": "Every verification in this project ran headless with a clean user-data-dir.\nThat proves the build works. It cannot prove the product works, because a\nfresh profile has no localStorage, no cache, no session — so the entire class\nof stale-persisted-state defects was invisible by construction. The them\n[…]\nfix that way rather than by assertion: his profile still\nholds the legacy booboo-theme \"dark\", booboo-theme-v2 is null so he never\nchose it, and the embedded board reports data-theme light regardless.",
          "is_bot": false,
          "headline": "docs(gaps): D5 — headless with a fresh profile is not the user's browser",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T17:39:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9d5803debbf23c6d1e9c9e296273309fe6ce9a59",
          "body": "…pened\n\nJesse's board rendered dark while every screenshot I sent was light, and the\nlanding page's centrepiece rendered dark inside a white page. Same cause, and\nit is a bug I named two turns ago and did not fix.\n\nThe theme effect wrote localStorage on MOUNT, not only on toggle. So every\nvisit whil\n[…]\n: this repo has no PRODUCT.md or DESIGN.md, so the\nimpeccable context gate does not pass. design/CRAFT.md and design/GOALS.md\nalready carry that role; the shared design laws were applied without them.",
          "is_bot": false,
          "headline": "fix(panel,web): the default stopped persisting itself, and edges shar…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T17:30:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d4608a3598b2bdc80959dc205a08ce83e948b24",
          "body": "The page used to hand you cosmos, then more cosmos, then the board as a card\nwith a link — it led with the hook and buried the thing that actually sells.\nNow it is three acts: a dark cinematic hero whose only job is to stop the\nscroll, then the page turns LIGHT for a live embedded staff board, then \n[…]\n does not shrink the viewport: Chrome lays out at 500 and crops the\nimage, which looks exactly like a text-overflow bug. Both cost me a wrong\ndiagnosis; device emulation is the only honest phone test.",
          "is_bot": false,
          "headline": "feat(web): rebuild the landing around hook, convince, prove",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T17:22:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5a254e7e0471165b9cd14430a5b4036ebe5ecf21",
          "body": "Inline python inside a bash -c had its backticks interpreted as command\nsubstitution, so the cross-link rendered as an empty pair of parens. Written\nfrom a file this time instead of fighting two levels of quoting.",
          "is_bot": false,
          "headline": "docs(gaps): restore the GOALS.md filename the shell ate",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T16:58:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9c7d124e56fa4c697e028b64dec1f999bd275f2",
          "body": "Jesse set the spine: a landing that stops people, a workable organigram that\nis the rule of law, install-and-an-orchestrator-builds-your-structure, and a\nforkable UI where a merge on main reaches every host. I added two: trust\n(nothing is \"done\" without evidence) and a path from impressive to paid.\n\n[…]\n board, and mobile-as-video\nbecomes legitimate rather than a fallback.\n\nGOALS aims, GAPS reports, and when they disagree GAPS wins — cross-linked\nboth ways so neither can quietly drift from the other.",
          "is_bot": false,
          "headline": "docs(design): GOALS.md — the six goals, and how far each actually is",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T16:57:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4cb712cdcbd99ed4189181bc12c944b8250932bc",
          "body": "design/tokens.json gained the wine + brass family, but the two files\ngen-tokens.mjs produces from it — packages/viewer/src/tokens.ts and\nweb/tokens.css — were never committed alongside it.\n\nFunctionally the deploy was fine: build-web.mjs runs gen-tokens before\nassembling, so the artifact I shipped w\n[…]\n compiled against it.\n\nThe demo has been deployed from a local web/dist this whole time. That is\nthe gap worth naming: \"it works on the deployed URL\" is not the same claim\nas \"the repo produces this\".",
          "is_bot": false,
          "headline": "chore(tokens): commit the generated outputs the PR was missing",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T16:36:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "33d174b9a38af635ea13da85db93aca5e9afb83b",
          "body": "Every staff role now carries one honest sentence saying what it actually\ndoes at the Pemberton. The Night Porter \"walks every corridor at 02:00 and\nagain at 05:00\"; the Night Engineer is \"the only pair of hands in the\nbuilding between midnight and six\"; Payables \"matches invoice to order to\nreceipt \n[…]\nver varies across a\ncolumn is texture pretending to be data. It stays on nodes with children,\nwhere it genuinely differs and genuinely matters.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(pemberton): 52 duty lines — the leaf card finally has a \"what\"",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T16:25:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9fb76f9d0fb89b0eecb9d33098788d03db5f4c01",
          "body": "Jesse's correction, and it reframes the component: the organigram is not a\npicture of the org, it IS the org file booboo_boot reads. Rules inherit down\nit, bucket reach derives from it, every agent's boot slice is generated out\nof it. Drag a plate to a new parent and you have not rearranged a diagra\n[…]\nhe lane's head column at its old 232px, so department cards overflowed and\ntheir role line and timestamp were clipped. Column widened to match.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(panel): the card becomes a SOURCE card, not a display card",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T16:17:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4ed22e069329c5a4055b7491d6aa86fa7f9fa93d",
          "body": "Both found by going back and actually checking, after I reported the light\nboard as done having only looked at one tab, at one size, with animations off.\n\nThe Executive filed 36 monthly closes and the board said zero. House-level\nagents carry cluster: null, and reports resolved their filer by cluste\n[…]\ncolours, no\nuncaught exceptions anywhere, the landing and viewer are unaffected by the\ntokens.json additions, and the theme toggle round-trips.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(panel): report attribution, and the dark theme the light pivot broke",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T16:01:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5340c233b4ff4d6539fe7046a41944b9ca32e58c",
          "body": "…cutive\n\n\"Design for everyone\" — a white background, very light bubbles, a refined\ndisplay. Light is now what a stranger lands on; dark survives behind the\ntoggle. A whole hotel uses this board, not a room of developers, and nobody\nshould open their own org chart into a terminal.\n\nThe ground is a wa\n[…]\nbecause its 36 closes are house-level (cluster: null) and the panel fetches\nreports by cluster. Same hollow-dossier class as C12 — GAPS.md C22.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(panel,pemberton): light by default, a real health light, The Exe…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T13:27:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "92a29fa922045d8b310613a50be49306b37a0d32",
          "body": "The structure the reference organigrams actually carry, now built rather\nthan described. Rank runs left to right, one column each:\n\n  I  THE STANDARD  ·  II GENERAL  ·  III DEPARTMENTS  ·  IV STAFF & MACHINES\n\nRank I is the House Standard, rendered from the root agent's own declared\nrules — honest t\n[…]\nchart; at nine\n  departments it buried the Standard and the GM below the fold. Top-aligned,\n  which is also the ministry chart's reading order.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(panel): the cascade — four rank columns, measured brass elbows",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T13:05:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eca94f1d91f644bc7f24373d72c521481b42545a",
          "body": "…inbow\n\nDirection set by Jesse from two reference organigrams — a master-key\nhierarchy (passe général → passe partiel → cylinder, which is literally how\na hotel is keyed and exactly how authority cascades here) and a ministry\nchart where rank is NAMED rather than inferred — combined with the approve\n[…]\nce and my own approved mockup show, which means the rank\nheaders currently label columns that do not exist. That is the next move,\nnot a claim.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(panel): the staff board becomes a key rack — brass plates, no ra…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T12:47:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3f3476616db4df99d819b8b86962fd2575887297",
          "body": "…o history\n\nThree defects Jesse found by clicking one node, all real:\n\n1. The dossier read the wrong field names. It was ported from the Dionisos\n   OS and looked for status_pill / p0_count / phase / last_move / next_plan.\n   The Pemberton emits desc / health / note / lastBoot / role. Zero overlap,\n\n[…]\n inverts\nour own luminance ladder. persistKey bumped v3→v4 so returning visitors get\nthe new defaults rather than a stale copy of the old ones.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(viewer,pemberton): the dossier had no dictionary, and the house n…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T12:13:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d7e8b08f5140ec93d7bc1acbe920a19ca7531c06",
          "body": "CRAFT §2's protected-in-writing signature finally exists: a spotlight cone\nfalls from every structural parent onto its child (GM to heads, heads to\nSOPs and staff), narrow at the source and widening as it lands, fresnel-lit\nat the silhouette, gradient alpha, grain drifting downward, igniting\ntop-dow\n[…]\nefault + all three non-default presets) and the landing page's embedded\nhero, confirming no white-out and each preset's distinct configuration.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(viewer): light-shaft spines — the signature element, built",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T11:20:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3122880da6c56b770702c1c9a9d23ed22a0ee1cc",
          "body": "…isible\n\nCRAFT §5, closed. Every connector in the org chart now renders as a real\nbrass rail (gradient + glow) instead of a plain grey line, with an explicit\nelbow from each department head into its staff — the connector HANDOFF.md\nfound hidden inside lanes.\n\nStaff cards stop repeating themselves (\"\n[…]\nthe live deployment, three via a CDP-driven\nclick/hover + screenshot (not just a static render) — see design/GAPS.md A5\nfor the evidence trail.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(panel): the staff-board craft pass — brass rails, the law made v…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T10:55:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0e9171373483a227b2b59c55924584c6512a8501",
          "body": "Jesse's verdict: readable now, but \"it doesn't get its place out of the\nmould\" — competent dark-SaaS-with-brass, no point of view. This hands the\ncraft pass to a fresh session with the state, the specific open work, the\nlandmines that each cost real time (background-tab animation freeze, the\ngenerat\n[…]\nrass plaques,\nengraved plates, the key-rack behind reception. The current design's failure\nis not execution, it's that it has no point of view.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(design): HANDOFF.md — the bridge to the craft pass",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T10:31:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "03659039f620a8663a92476e6471a9264b0d8f02",
          "body": "…real marks\n\nA five-star hotel is a mesh of third-party systems, and a brain that can't\nsee them is only half the operation. The Pemberton gains 15 service\nautomations hung off the departments that depend on them: SAP Hospitality,\nBooking.com and WhatsApp Business at Front Office; Stripe, Xero and n\n[…]\nes, which shunted the staff row into a one-card\ncolumn. Explicit grid-areas now — head, its service stack beneath it, people\nfilling the right.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(pemberton,panel): the services the house actually runs on, with …",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T10:03:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "91def02b240b1f95b93af5a5f09c5cfaa2be4297",
          "body": "Two defects, both created by making the board a downward document.\n\nSEALED BELOW THE FOLD. .chart-fit was overflow:hidden unless the user\nmanually zoomed — safe only while auto-fit guaranteed the whole org fit one\nscreen. With width-fit the board grows past the viewport, so every lane\nbelow the firs\n[…]\nmation clock doesn't advance when the tab isn't focused. Finish or\ncancel animations before trusting a computed style read in an unfocused tab.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(panel): the staff board scrolls, and stops at the last lane",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T09:53:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5c883e723647ed4c531aed1b012ee8c8f74ead5a",
          "body": "The board fanned nine departments sideways and auto-fit crushed it to 17%,\nwhich is not a chart, it's a diagram of one. Three fixes:\n\nLANES. Departments now stack downward, each a self-contained row: the head's\ncard on a brass rail at the left, its people flowing right and wrapping\ninside the lane. \n[…]\nd card\ntilts toward the viewer under the same key light the brass landmarks use in\nthe cosmos — motion suppressed under prefers-reduced-motion.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(panel): the staff board reads — departments as lanes, downward",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T09:38:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4f35981c4492a110c2b81193f223b976e431e68e",
          "body": "The hero brain is deliberately pointer-events:none — a painting, not a tool\n— which left a visitor reading the page with no way to touch the thing. New\nsection 02 \"The house, live\" embeds the real viewer, interactive: drag,\nclick any node for its dossier, press / to search, and the five flag beacons\n[…]\npping a\ncontrol panel into someone's reading flow. Verified at embed dimensions —\norientation card, flags and dossier all present, drawer gone.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web,viewer): a playable graph on the page, not just behind it",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T09:30:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cd0a8b2fa5ac9bfbfaba4728aab130918dafaea2",
          "body": "The ASK section described a live endpoint the reader could not call. Four\nchips now fire real JSON-RPC at /mcp — the same endpoint a claude.ai\nconnector talks to — and render what comes back: major failures this week,\nthe absence ranking, incidents by department, and Housekeeping's boot slice\nwith i\n[…]\nthe brand domain. Verified in-browser on\nbooboo.fractionalhq.uk: all four return correct live answers.\n\nCloses A7 and Tier 2 of design/GAPS.md.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): ask the house from the page — the proof stops being prose",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T09:17:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5afc0e14cb6975818231d69e8a221f3b08a15ebb",
          "body": "The viewer used to drop a first-time visitor into a 3D scene with a\nfourteen-slider drawer, a layer-count HUD and \"drag to rotate\" — none of\nwhich says what the thing IS. The card now names the house and its bands\ntop-to-bottom (marking the top band and the floor), then hands over the\nactual problem\n[…]\nen so the two never\ncompete. Verified live.\n\nCloses A3 in design/GAPS.md; A4 moves to partial — view presets and the\nd-pad walk are still open.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(viewer): orientation — a stranger now knows what they're looking at",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T09:13:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c63f9278078c172305336c80f85208498f217bc8",
          "body": "Two Tier-2 gaps closed. The site had been showing the product and never\nexplaining it.\n\nSection 02 \"Three faces, one brain\" promotes SEE / GOVERN / ASK to\nfirst-class cards with their own pitch and CTA. The staff board stops being\na 10px topbar link beside GitHub and npm, and a visitor finally learn\n[…]\nal unedited boot slice\nshowing rules in inheritance order, because that slice IS the product.\n\nSections renumbered to 01-06. Verified rendered.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): the label — three faces named, and the model finally taught",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T09:10:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2bbaf3af0df5ce496d47ac98aecbcc40eadb9a0b",
          "body": "…d to be\n\nscripts/gen-tokens.mjs generates the three consumers from design/tokens.json:\npackages/viewer/src/tokens.ts (scene constants, verb + flag palettes),\nweb/tokens.css and packages/panel/app/tokens.css (CSS custom properties).\nIt runs inside build-web.mjs, so a stale build cannot ship a drifte\n[…]\n.\n\nCloses Tier 1 of design/GAPS.md: flags, verb colours, tokens — three things\nspecified in CRAFT.md, assumed done, never built. Verified live.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(design): tokens become the single source they were always claime…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T09:06:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "56129f03d11f79ee220f6dc4e2d31ff0d0ff297b",
          "body": "…ce ladder\n\nTwo Tier-1 gaps from design/GAPS.md, both specified in CRAFT.md and both\nnever built:\n\nFLAGS (luminance rank 1). The dataset carried 4 flags and 10 health values\nand the viewer drew none of them — so the half of the two-second test that\nasks \"where is the problem\" had no implementation a\n[…]\n\nVerified live on booboo.fractionalhq.uk: five beacons with the red critical\nleading, and reports_to/owns/escalates_to/audits visibly distinct.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(viewer): flags and verb colours — the missing top of the luminan…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T08:59:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "005d40aff1362896b1ac00f8aa2e63b22c21551f",
          "body": "…opened with\n\nThe first cut audited the visitor journey and not the spec — which is how a\nwhole slice went missing unnoticed. Checked in code, not memory: flags are\nnot rendered anywhere (4 flags + 10 health values in the data, nothing on\nscreen), tokens.json is consumed by nobody, 0 of 397 edges ca\n[…]\nography. The top three ranks of my own luminance ladder are missing —\nincluding the half of the two-second test that asks where the problem is.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(design): GAPS.md gains the spec-vs-shipped audit it should have …",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T08:54:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e7dff3527020cfe8de1224ffda715c3a940a5f36",
          "body": "…sted\n\nThe specs say what we intend; nothing said what is actually true. So\nfollow-ups scattered across 22 commit messages, a PR body and memory, and\nthe visitor journey grew holes nobody was tracking. This is the only doc\nallowed to claim \"done\", and only with the evidence that proved it.\n\nAudit of\n[…]\n-link, mobile, OG image, golden CI, the\nmillion-node claim I have asserted but never rendered), and the process\nrules that stop this recurring.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(design): GAPS.md — the done-vs-intended map that should have exi…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T08:48:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e9da104362e634ca98cd1450ec934dc4bd97ea08",
          "body": "Caught in the pre-merge UI review: band rim labels rendered over the open\ndossier, overlapping the cluster/parent cards. Cause — drei's <Html>\ndefaults to zIndexRange [16777271, 0], so no sane z-index on the chrome\ncould ever win. Capped both Html usages (band rims, node labels) to\n[9, 0] and gave the chrome its token z-layers: hud 10, dossier 20,\npalette 30. Verified live at the same URL that showed the defect.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(viewer): 3D labels no longer bleed through the dossier",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T08:39:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cbd4d6468eef2065d0830dd5a693aac2f496051a",
          "body": "Testing the live connector exposed the gap: the read tools answer \"which\nnode\" well and \"how many, grouped by what\" not at all, so the flagship\nquestion (\"who has the most absences over five years\") was only answerable\nby inference from search ranking — the answer was in the data but the\nbrain could\n[…]\nRegistered in the package and mirrored in the\nvendored hosted set so local CLI and hosted endpoint stay identical; live\ntools/list now shows 8.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(serve,web): booboo_count — the brain can finally answer \"how many\"",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-19T08:34:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9576279dca0111e438889f1c59b87cedef1f7ed1",
          "body": "The root rank now always fans horizontally: the GM's children are the\ndepartments and they read as columns, one per sector, in id order — the\nsame enumeration the cosmos viewer sorts its sectors by (the one-ordering\nlaw: sectors in SEE = columns in GOVERN, always). Deeper generations keep\nthe old ru\n[…]\n large staff\npools still stack inside their column. Verified live at /chart/: nine\ndepartment columns under the GM instead of a vertical strip.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(panel): the staff board ranks — departments as columns on one rail",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T22:31:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8a645c60144c10de50f044f47e0152bc5be6cc21",
          "body": "…lights up\n\nPanel rethemed from verdigris-slate to the design/tokens.json system —\nmidnight glass, parchment ink, brass accents, Fraunces brand header,\nDM Sans/JetBrains Mono stacks (webfonts load on the hosted demo, the local\nCLI degrades to system stacks). The one-product law: /chart/, /viewer/ an\n[…]\n to the dataset's\ntype=observation, so buckets/memory counters read the real ledger (2,061\nmemories) instead of zero. Verified live at /chart/.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(panel,web): the staff board wears the house tokens + the ledger …",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T22:25:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ea0d62552116934c746d0744be1166ca4c139666",
          "body": "The panel app mounts statically at /chart/ against the same brain: its\nsame-origin /api/* calls are funnelled through one read-only function\n(panelapi) that vendors the CLI panel server's routes over the already-\ndeployed BoobooIndex + orgBootSlice (meta/clusters/list added to the\nvendored index). A\n[…]\n/reports counters read 0 — the panel queries\ntype=memory/report while the dataset emits type=observation; needs a\ntype translation in panelapi.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): the GOVERN face — the Pemberton staff board live at /chart/",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T22:15:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dc25c3dd47b209d4e1c8b4485fc8508cdec00b88",
          "body": "Hero: \"A grand hotel, run by AI. This is its brain.\" — the copy now\ndescribes the thing actually floating behind it. Readout re-semanticised\n(nodes / departments / agent roles / licence). New ASK section with the\ntwo baked questions answered from the real ledger and the live connector\nURL for claude\n[…]\narget preserved); the close CTA\nwalks into the Pemberton. Display size tightened so the H1 holds its\nlines. OG copy updated to the house story.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): the site tells the Pemberton story — copy and scene converge",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T22:04:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "70ef4eec285386e1dc4d1c5b19987bdb0f2e16ed",
          "body": "Relations stop being a flat edge list: a semantic adjacency (structural\nspines excluded) grouped BY VERB, count-sorted — Housekeeping reads as\n\"reports_to 7 · escalates_to 2 · reads 2 · declares 1 · inherits 1 ·\nsupplies 1 · owns 1\", each group capped at 10 with expand, every row a\njump. The Atlas d\n[…]\nloses palette, then dossier. Verified\nlive in-browser: verb groups render on agent:housekeeping, \"night\" finds\nthe four Night roles. Tests 3/3.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(viewer): dossier relations grouped by verb + the concierge palette",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T21:57:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "132e9f76244f7f40d337ac9c3908d02c5b230974",
          "body": "…oint\n\n/api/mcp (alias /mcp) serves the Pemberton brain over Streamable HTTP from\nthe same Vercel Hobby project as the site — zero new infra, zero spend.\nSDK-direct with WebStandardStreamableHTTPServerTransport in stateless mode\n(per-request server, JSON responses, no lingering SSE): the mcp-handler\n[…]\nact, _data/_index hidden,\n/mcp rewrite honoured. Remaining external check: the claude.ai\nadd-connector flow end-to-end (needs a human account).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): the hosted ASK face — a free, authless, read-only MCP endp…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T21:51:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "071d159de1cedd086da2b9f2201b89a3b5c7beaf",
          "body": "…golden frame\n\nThe hero and default viewer load switch from the synthetic benchmark to the\nPemberton Grand snapshot (2,414 nodes — comprehension is the front door;\nscale stays behind the CTA). build-web ships the snapshot with the site.\nFloor engravings now carry only the short rank word (GOLD, SILV\n[…]\nng — nine department columns,\nbrass heads on the silver ring, the House Standard at apex. The even-ring\nlayout branch is now visually verified.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web,viewer): the Pemberton Grand becomes the front door + first …",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T21:35:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "91fc815e6703ba639a34858e797e1946a27a9c49",
          "body": "Deterministic seeded generator implementing examples/pemberton/DESIGN.md:\n2,414 nodes / 397 links / 4 bands / exactly 9 department clusters. 62\ndurable roles in the org (rosters are snapshot-only — roles are durable,\nagents are disposable), 12 buckets incl. the sealed guest-registry (wall\nat emit, z\n[…]\n org validate 0/0,\nreal MCP handshake with boot slice, journal replay of 5 seeds.\nDeviations from DESIGN.md documented in the generator header.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(pemberton): the demo brain — dataset, org, journal seed, generator",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T21:32:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "88a3f4b75383870680ebd59570c58ab9cb7c881c",
          "body": "Structural nodes (root + tier-1) leave the point cloud and render as\nfaceted brass studs: one InstancedMesh (icosahedron, flat-shaded standard\nmaterial, per-instance colour lerped toward gold), a soft contact-shadow\ndisc on their band's floor, instance-picked so the important nodes get\nprecise click\n[…]\nn the floors and the field (1.0-1.8s), and\nfollow torch focus. layout.ts now exposes nodeTier for the split.\nTests 3/3, verified at 50k on GPU.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(viewer): brass landmarks — tier<=1 nodes become objects, not dots",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T21:22:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0dc3418d36df4551bd92ed940212170098b64a05",
          "body": "… the field wakes\n\nBands iris into place bottom-up (rise + settle ease, 0.18s stagger), spine\nedges ignite in a top-down wave from 0.9s (authority flowing down the\nstack), the field wakes top-down from 1.8s, everything settled by ~3.5s.\nDriven by one shared clock uniform written once per frame; the \n[…]\nt to the final frame. Verified: mid-intro\nframe shows the wave in flight, settled frame matches the approved look\npixel-for-purpose. Tests 3/3.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(viewer): entrance choreography — discs rise, the law flows down,…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T19:45:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "10bb5a77819a440f4e26584a04509777c5960b0e",
          "body": "…est recedes\n\nSelect a node and the scene becomes a museum spotlight: the node and every\nedge touching it light to full; its direct neighbours lift to 0.95; the\nremaining field drops to 0.12 (nodes) / 0.06 (links) in both colour and\nalpha, and dimmed points shrink ~20% so the recession reads as dept\n[…]\nssier flow gains the\nvisual half. Verified at 50k with ?node=agent:5: one lit column through the\nstack, dossier open, field receded. Tests 3/3.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(viewer): torch focus — selection lights its neighbourhood, the r…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T19:39:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "034a4d2fbb35dfd66b89a615e882e90006e0ff32",
          "body": "…t platforms\n\nEach band disc becomes a substrate object: procedural glass radial gradient,\nhairline rules at quarter radii, 60 whisper-level minute ticks inside the\nrim, the band name ENGRAVED along an arc on the floor (CanvasTexture,\nclock-face style, with an engrave shadow), a thinner rim ring, an\n[…]\nuned to substrate level: disc 0.055, rules 0.3, ticks 0.4, engraving 0.48.\nVerified at 50k on GPU: floors whisper, the field leads, names read.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(viewer): the observatory floor — engraved band discs replace fla…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T19:33:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bc7a99b1e13b5c32cc9f61f9c4ed1e41fdb75e1a",
          "body": "design/tokens.json: the CRAFT rule-zero source — palette in hex+OKLCH, band\nand verb colour maps, the assigned luminance ladder, type scale, easing set,\nz-layers. Consumers wire up progressively (site vars, viewer constants,\npanel theme).\n\nSprite shader: soft luminous core (exp falloff) + thin rim r\n[…]\n.62\nso only assigned emissives catch it when enabled. Verified at 50k on GPU:\ncolonies crisp, root calmer, field recedes with depth. Tests 3/3.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(design,viewer): tokens single-source + sprite/luminance pass",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T19:28:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0d01341d0c74bd0d055a89d9bd741f925296e5df",
          "body": "…p becomes structure\n\nThe old scheme hashed cluster identity into an angle and mapped tier to\nradius, so every cluster occupied every ring: interleave was guaranteed by\nconstruction. Ported the axis law from the production Atlas cosmos:\n\n  Z      = layer (categorical band)\n  angle  = cluster identit\n[…]\nlinks on GPU: ~200 discrete colonies, each with its\nown spine cone to the root — the light-shaft look emerged from the layout\nalone. Tests 3/3.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(viewer): decouple the layout axes — clusters become columns, sou…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T19:22:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "14d7758cc6d285fe41889fb9eb6c5d55f64e4c67",
          "body": "…surface\n\nThe distance between a dev graph and a converting surface is not effects,\nit is assignment: every brightness, easing, size and colour given a job.\nCodifies: the luminance hierarchy (flags > badges > pulses > ... > bg,\nselective bloom only), tokens as the single source (OKLCH, one easing se\n[…]\nl proof,\nscrollytelling site with mobile-as-cinema, hosted ASK scoping, golden-frame\nCI, and the build slices. Rule zero: nothing ships random.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(design): CRAFT.md — the visual & technical design law for every …",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T19:11:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b0cb3b6656d3c933eabebc036f3cb28e93b0e865",
          "body": "… ASK (MCP), answers baked into the dataset\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(pemberton): three-faces ruling — SEE (cosmos) + GOVERN (panel) +…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T19:01:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f63cac67006fd5a84b4f38d8c8d66d5d8c405ef5",
          "body": "…sible\n\nThe demo dataset stops being a visualization exercise. The Pemberton Grand\nruns on agents: every role has a personalised agent that boots from the\ngraph (identity, authority chain, rules in boot order, bucket reach), works\nscoped, and closes back into it. The graph is simultaneously the stru\n[…]\non,\nhow is it structured, where is the problem. Scale is a property, not the\npitch. Org schema + journal format marked verify-before-authoring.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(pemberton): design spec for the demo brain — an agent OS made vi…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T18:53:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "76fe9f86c73d7d558c57916493075b3cc377579c",
          "body": "Two defects, both only visible once the graph and the page were composed\ntogether rather than reviewed separately.\n\n1. The vignette was symmetric and doubled up, which crushed the scene to a\n   ghost — the whole point of running the real engine behind the copy was\n   lost. Replaced with a directiona\n[…]\nnot a\n   background. Dropped orbit for the ?chrome=0 path and kept drift, a slow\n   in-plane roll that stays face-on while still feeling alive.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(web,viewer): make the hero read as structure instead of soup",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T16:45:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9101cbd6b1bb4691caff6916bf07c4964bd7b91c",
          "body": "The repo had no homepage and no hosted demo, so every directory listing,\nevery npm page and the GitHub README all led to a README. For a product\nwhose whole pitch is visual, that is the funnel's biggest hole: you had to\ninstall a package to find out whether you wanted to install a package.\n\nAdds web\n[…]\nects a factual claim: the renderer is a\nsingle point cloud with a custom shader, not an instanced field.\n\nLive: https://booboo-black.vercel.app\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): a public demo you can look at without installing anything",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T10:17:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c84c0411772bec01d1a26f65404c12635a6e1407",
          "body": "R3F measures its container on mount. Inside an iframe that measurement can\nland before R3F is listening, so the canvas stayed at its 300x150 intrinsic\ndefault while the wrappers were correctly sized — a postage-stamp scene in\nthe corner of a full-size frame.\n\nVerified it is a pure startup race: a re\n[…]\nhe bare scene with labels off — for\nembedding the brain as a live background. Both paths get the fix, so the\npanel's iframe embed benefits too.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(viewer): size the canvas correctly when embedded in an iframe",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-18T10:17:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2423ad13a00f6cf60b4cc1952de7cdba0568a8b8",
          "body": "…te-booboo 0.4.1 + hygiene\n\n- create-booboo: add engines node>=18 (only package missing it)\n- panel: PANEL_VERSION now derived from package.json (was hardcoded 0.4.0,\n  two minors stale — a drift that can't recur)\n- LAUNCH_CHECKLIST: check off MCP client setup (README carries the block\n  since 4b327\n[…]\n>install->build->serve->mcp(remember/journal)->view->panel->vault,\n  zero failures)\n\nVersions bumped locally only — npm publish is Jesse's call.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release-prep): patch bumps for panel 0.5.3 / vault 0.1.1 / crea…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-16T20:08:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c8fb319f6f64ebb2aaaef0212b7402645af22837",
          "body": "…were blank\n\nEvery other published package had one (P2.3); panel and vault were added\nafter that pass and shipped without. Written against the shipping code:\npanel's five tabs + <Panel api> library use, vault's CLI + emitVault API.\nLands on npm with the next publish.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(panel,vault): add the missing package READMEs — their npm pages …",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-16T20:08:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7172149a6c22de3f13986e73539d7fa7b7a5c00a",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump server.json to 0.5.0 (registry listing synced to npm latest)",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-16T02:09:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c647ceb3b726325982030346b964670e3e725c71",
          "body": "…l projects\n\nPressure-testing the config against the live Supabase surfaced the fix: the\nedges in dionisos_edges reference canonicals by their `id` column, but the\ncortex source keyed nodes by `key` — so all 960 edges dropped as dangling.\nSwitch the cortex source to `id: id` (no primary/contract fil\n[…]\nm/content/\ncron tail still dangle — no node source yet). Remaining ~7.9k orphans are the\nengram/argus tiers, which connect by cluster not edges — a data question, not\nconfig; documented in the header.",
          "is_bot": false,
          "headline": "example(dionisos): wire the Cortex graph — canonicals keyed by id, al…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-13T15:56:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1a1cacb717f67703a749b6f39b4c8b3fe02bff4e",
          "body": "…emory system)\n\nBooboo could render memory but not WRITE it: remember/report were roadmap,\nso a \"memory system\" that only displayed a graph. This ships the live half.\n\n- @booboo-brain/serve 0.4.0: an append-only JSONL journal (brain.journal.jsonl)\n  beside the snapshot but OUTSIDE it — `booboo build\n[…]\nes references entities at finer grain than the\nconfig ingests as nodes, so 960 edges currently drop as dangling. examples/\ndionisos.config.yaml documents the measured finding + the target links shape.",
          "is_bot": false,
          "headline": "feat: live memory write-back — booboo_remember / booboo_report (the m…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-13T15:41:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "64afccf0dc88ee89fad60e4c3867daba1e6313e8",
          "body": "PANEL_SPEC.md described an unbuilt Home/Memory/Prompts/Sessions/MCP\npanel that doesn't match what shipped (the Organigram: org/buckets/\nreports/rules/graph). Banner it as superseded roadmap, point to the\nreal thing.\n\nCONFIG.md had no worked example of the type:report / type:memory node\nconvention th\n[…]\n()/\nreport() are roadmap-only (populate via rebuild, not a live MCP call).\n\nFound auditing repo-readiness for an external Claude session (Silvy)\nto self-serve a fleet install from the repo link alone.",
          "is_bot": false,
          "headline": "docs: fix panel-spec drift + document reports/memory wiring",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-13T15:04:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4b3277ba65977e54ab7e8eb97e9848029795df8b",
          "body": "The inline comment on the create-booboo command was being parsed as\nliteral CLI args by mcp.so's config extractor. Also add a ## Tools\nheading so mcp.so's auto-extractor picks up the 7 MCP tools instead of\nshowing \"No tools detected\".",
          "is_bot": false,
          "headline": "docs: fix mcp.so listing parse (Quickstart comment) + add Tools section",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-12T17:24:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6ecf25781fec87ea68572dd64d18d74d79579a6c",
          "body": "…(1b/1c/2a/2b/2c/3)",
          "is_bot": false,
          "headline": "Merge audit-hardening-2026-07-04: Booboo Tier-3 audit follow-through …",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-12T08:45:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "913c224879352fa996afe8c90883c5462260c6c9",
          "body": "…T package table\n\nAudit item 3 (2026-07-04 deep audit) — docs cleanup:\n\n- README.md status line + CONTRIBUTING.md said \"seven packages\" —\n  @booboo-brain/vault (published, npm confirms 0.1.0) was missing from\n  both. Now lists all eight (spec, build, serve, viewer, panel, vault,\n  cli, create-booboo\n[…]\npo to be stale.\n- No stray nested .git under Projects\\ — Fractional HQ isn't even a git\n  repo (confirmed via the session's own environment banner + `ls`), so\n  there's nothing to remove there either.",
          "is_bot": false,
          "headline": "docs: reconcile package count to eight (vault was missing) + BLUEPRIN…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-12T08:39:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "44a8f6edc639d7450f894b7df2a19c5f9ab1ab67",
          "body": "Audit item 2c (2026-07-04 deep audit): the Dockerfile already pins the\nCLI version and already has a .dockerignore (both done in an earlier\npass) — the only real gap was drift: commit 352c4c0 bumped server.json\nto 0.4.0 but missed the Dockerfile, so it was still installing the\nstale 0.3.0.\n\nVerified\n[…]\nbuild` succeeds, and the built image answers\na real MCP `initialize` handshake correctly (serverInfo.version 1.0.0,\nthe MCP protocol version — the npm package pin is separate and now\ncorrectly 0.4.0).",
          "is_bot": false,
          "headline": "chore(docker): bump pinned CLI version 0.3.0 → 0.4.0",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-12T08:37:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "db02e93b4cd7f1f93fb2ba9ef7e8f0a1ee7b7256",
          "body": "Audit item 2b (2026-07-04 deep audit): the smoke test only proved the\nbuild pipeline works (scaffold → build → assert brain.json has nodes).\nIt never started the four things users actually run — a passing CI run\ngave no signal that `booboo serve`/`view`/`panel`/`mcp` still boot.\n\nAdded, after the ex\n[…]\npt (not inlined in the YAML) so\n  it's runnable locally too.\n\nAll four verified locally end-to-end before writing the CI step (boot\neach, curl/handshake, confirm a real response) — not just eyeballed.",
          "is_bot": false,
          "headline": "ci: boot serve/view/panel/mcp and hit a real endpoint, not just build",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-12T08:36:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c222d582a59ff72c5ef8b696af58f91287d7e6cf",
          "body": "Audit item 2a (2026-07-04 deep audit): the viewer already has a real\nerror boundary (RenderBoundary in BoobooView.tsx, wired around the\nrender tree) and validate()-at-load-boundary (app/main.tsx load()) —\nboth verified present and working, contrary to the audit's \"no\nvalidate()/error boundary\" frami\n[…]\no the\nviewer package (previously had none) with a dedicated vitest.config.ts\n— vite.config.ts sets root: \"playground\" for the dev server, which\nmakes vitest look for tests there too unless overridden.",
          "is_bot": false,
          "headline": "fix(viewer): cap per-label character length",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-12T08:33:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0dd0803b6b41c51c656107a0673a59a011c26f80",
          "body": "…S behind explicit opt-in\n\nAudit item 1c (2026-07-04 deep audit): postgres.ts unconditionally set\nssl.rejectUnauthorized: false for every non-local connection, silently\nskipping certificate verification (still encrypted, but no protection\nagainst a MITM presenting any cert). Fixed:\n\n- Non-local conn\n[…]\n.\n\nNo existing test harness mocks pg.Client (would need a live Postgres or\ntestcontainers) — not adding one here; the change is a 2-line config\nvalue with no branching logic to unit-test in isolation.",
          "is_bot": false,
          "headline": "fix(build): verify Postgres server certs by default, gate insecure TL…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-12T08:30:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "65931960566518cd9910df080f000a483efcd584",
          "body": "…oobooIndex\n\nAudit item 1b (2026-07-04 deep audit): REST auth, hop-caps, and\nduplicate-ID validation were already substantially implemented in the\na80033c hardening pass (BOOBOO_TOKEN bearer auth, server-side hop caps\nin graph.ts neighbors()/path()). Closes the two residual gaps:\n\n- rest.ts: bearer-\n[…]\nosing that direct-construction\n  gap for real \"reject duplicate IDs on ingest.\"\n\nAdded test coverage for both: rest.test.ts (no REST auth test existed\nbefore) and a duplicate-id case in graph.test.ts.",
          "is_bot": false,
          "headline": "fix(serve): timing-safe auth compare + reject duplicate node ids in B…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-12T08:29:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "366d596db946cee507bb6dfa08e02393fc7ebe5e",
          "body": "…(#4)\n\nserver.json now points at @booboo-brain/cli@0.4.0, matching the entry\npublished to the Official MCP Registry (io.github.jessedu29260-netizen/booboo).\n\ndocs/SUBMISSIONS.md updated to live coverage — Glama, mcp.so, PulseMCP and\nthe Official Registry are listed; Smithery ruled out (remote-only gateway).\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump server.json to 0.4.0 + refresh MCP directory submissions …",
          "author_name": "jessedu29260-netizen",
          "author_login": "jessymariau",
          "committed_at": "2026-07-11T19:17:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "352c4c0a44046dbf2354161dfe04bfab9cf884dd",
          "body": "server.json now points at @booboo-brain/cli@0.4.0, matching the entry\npublished to the Official MCP Registry (io.github.jessedu29260-netizen/booboo).\n\ndocs/SUBMISSIONS.md updated to live coverage — Glama, mcp.so, PulseMCP and\nthe Official Registry are listed; Smithery ruled out (remote-only gateway).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump server.json to 0.4.0 + refresh MCP directory submissions",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-11T19:14:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "22686095b1365057a2a3af705ee50d1948c89a43",
          "body": "- @booboo-brain/vault 0.1.0 (NEW): emit the brain as a wiki-linked markdown\n  vault (Obsidian-compatible) — node pages w/ frontmatter+links, layer/cluster\n  MOCs, agent dossiers from the org. booboo vault CLI verb. Plain files:\n  readable by humans, portable to any agent, nightly insurance.\n- build \n[…]\n+ vault script, wikilinks on,\n  sample [[refs]] in the seed data.\n- cli 0.4.0: vault verb + quality line in build output. Docs: README + CONFIG.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "the vault + authored links + the agent contract",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-05T08:11:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "20e469db408e42e8d74ce4981825709104290d27",
          "body": "…absolute, never overlaps host chrome) with ✕ close + slide-up; compact bar/tabs; zoomer clears the sheet\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "panel 0.5.2: mobile pass — dossier becomes a contained bottom sheet (…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-04T22:04:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "052df945c6ad6d0deeca9967e541653534898e5b",
          "body": "…copy for the guided pass\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: submissions audit (Glama not indexed = the gate) + paste-ready …",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-04T19:50:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3de6a36f6ae182bf6bb8060dad8ff8c1e32c13c5",
          "body": "…other agent/department by drag-drop\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "panel 0.5.1: tray machines are draggable — reallocate a machine to an…",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-04T18:53:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ea8e5fa9ad774366f10c373351382ad499cb13a9",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Merge panel 0.5.0 (zoom/pan + host-controlled embed height)",
          "author_name": "Jesse",
          "author_login": "jessymariau",
          "committed_at": "2026-07-04T18:35:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 0,
      "commits_last_year": 158,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 5,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 85,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@booboo-brain/cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "booboo",
            "cli",
            "knowledge-graph",
            "mcp"
          ],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/@booboo-brain/cli",
          "is_deprecated": false,
          "latest_version": "0.5.1",
          "repository_url": "https://github.com/jessedu29260-netizen/booboo",
          "versions_count": 7,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1241,
          "first_published_at": "2026-07-02T09:15:39.147000Z",
          "latest_published_at": "2026-07-20T10:26:41.317000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        },
        {
          "name": "@booboo-brain/spec",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/@booboo-brain/spec",
          "is_deprecated": false,
          "latest_version": "0.3.1",
          "repository_url": "https://github.com/jessedu29260-netizen/booboo",
          "versions_count": 7,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1651,
          "first_published_at": "2026-07-02T09:15:18.038000Z",
          "latest_published_at": "2026-07-19T20:21:36.176000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        },
        {
          "name": "@booboo-brain/build",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/@booboo-brain/build",
          "is_deprecated": false,
          "latest_version": "0.2.0",
          "repository_url": "https://github.com/jessedu29260-netizen/booboo",
          "versions_count": 3,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 563,
          "first_published_at": "2026-07-02T09:15:23.428000Z",
          "latest_published_at": "2026-07-05T08:11:11.705000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 21
        },
        {
          "name": "@booboo-brain/panel",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/@booboo-brain/panel",
          "is_deprecated": false,
          "latest_version": "0.5.6",
          "repository_url": "https://github.com/jessedu29260-netizen/booboo",
          "versions_count": 14,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2284,
          "first_published_at": "2026-07-03T02:38:28.640000Z",
          "latest_published_at": "2026-07-20T10:15:02.330000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        },
        {
          "name": "@booboo-brain/serve",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/@booboo-brain/serve",
          "is_deprecated": false,
          "latest_version": "0.4.1",
          "repository_url": "https://github.com/jessedu29260-netizen/booboo",
          "versions_count": 5,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 843,
          "first_published_at": "2026-07-02T09:15:27.737000Z",
          "latest_published_at": "2026-07-20T10:26:23.073000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        },
        {
          "name": "@booboo-brain/vault",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/@booboo-brain/vault",
          "is_deprecated": false,
          "latest_version": "0.1.1",
          "repository_url": "https://github.com/jessedu29260-netizen/booboo",
          "versions_count": 2,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 297,
          "first_published_at": "2026-07-05T08:11:20.819000Z",
          "latest_published_at": "2026-07-17T17:45:58.326000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "@booboo-brain/viewer",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/@booboo-brain/viewer",
          "is_deprecated": false,
          "latest_version": "0.1.2",
          "repository_url": "https://github.com/jessedu29260-netizen/booboo",
          "versions_count": 3,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 496,
          "first_published_at": "2026-07-02T09:15:33.826000Z",
          "latest_published_at": "2026-07-19T20:21:45.025000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        },
        {
          "name": "create-booboo",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "booboo",
            "scaffold",
            "create",
            "knowledge-graph",
            "mcp"
          ],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/create-booboo",
          "is_deprecated": false,
          "latest_version": "0.5.0",
          "repository_url": "https://github.com/jessedu29260-netizen/booboo",
          "versions_count": 7,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1151,
          "first_published_at": "2026-07-02T09:05:18.999000Z",
          "latest_published_at": "2026-07-19T20:21:31.901000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 1
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "packages/build/tsconfig.json",
        "packages/cli/tsconfig.json",
        "packages/create-booboo/tsconfig.json",
        "packages/panel/tsconfig.json",
        "packages/serve/tsconfig.json",
        "packages/spec/tsconfig.json",
        "packages/vault/tsconfig.json",
        "packages/viewer/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 87788,
      "source_files_sampled": 50,
      "oversized_source_files": 3,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "@hono/node-server",
            "direct": false,
            "version": "1.19.15",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-frvp-7c67-39w9"
            ],
            "fixed_version": "2.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 4
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "moderate": 1
        },
        "advisory_count": 1,
        "affected_count": 1,
        "assessed_count": 176,
        "malicious_count": 0,
        "assessed_package": "npm:@booboo-brain/cli@0.5.1",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@booboo-brain/spec",
          "manifest": "packages/build/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "pg",
          "manifest": "packages/build/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.13.0"
        },
        {
          "name": "yaml",
          "manifest": "packages/build/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.6.0"
        },
        {
          "name": "@booboo-brain/build",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@booboo-brain/serve",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@booboo-brain/spec",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@booboo-brain/viewer",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@booboo-brain/panel",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@booboo-brain/vault",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@booboo-brain/spec",
          "manifest": "packages/panel/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@booboo-brain/spec",
          "manifest": "packages/serve/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "packages/serve/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.12.0"
        },
        {
          "name": "zod",
          "manifest": "packages/serve/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.23.0"
        },
        {
          "name": "@booboo-brain/spec",
          "manifest": "packages/vault/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@booboo-brain/spec",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "three",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.184.0"
        },
        {
          "name": "@react-three/fiber",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.0.0"
        },
        {
          "name": "@react-three/drei",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.0.0"
        },
        {
          "name": "@react-three/postprocessing",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.4"
        },
        {
          "name": "postprocessing",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.39.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": 1,
        "merged_prs": 5,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "jessymariau",
          "commits": 158,
          "avatar_url": "https://avatars.githubusercontent.com/u/268124037?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": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml"
      ],
      "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": "1 out of 1 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/16 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "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": 4,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "10 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "c38b4c793c585ba94203406cc35d9bcc76d7c50e",
        "ran_at": "2026-07-26T14:16:16Z",
        "aggregate_score": 3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T19:21:39Z",
      "oldest_open_prs": [
        {
          "number": 6,
          "created_at": "2026-07-20T19:10:57Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-20T08:57:46Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/jessymariau/booboo",
    "host": "github.com",
    "name": "booboo",
    "owner": "jessymariau"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 44,
      "inputs": {
        "security": 42,
        "vitality": 35,
        "community": 33,
        "governance": 32,
        "engineering": 81
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "at_risk",
        "name": "Vitality",
        "value": 35,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 58,
            "inputs": {
              "commits_last_year": 158,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 5
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "5/52 weeks with commits",
                "points": 3.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "158 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 158
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 33,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 1,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 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": 32,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "merged_prs": 5,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "5/5 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 5,
                      "decided": 5
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/16 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "critical",
            "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": 20,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "jessymariau",
              "public_repos": 5,
              "account_age_days": 134
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of jessymariau",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "jessymariau"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "5 public repos, account ~0 yr old",
                "points": 6.4,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 5
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 81,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "1 out of 1 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": 100,
            "inputs": {
              "topics": [
                "ai-agents",
                "developer-tools",
                "graph-visualization",
                "knowledge-graph",
                "mcp",
                "memory",
                "typescript",
                "webgl"
              ],
              "has_wiki": true,
              "homepage": "https://booboo-black.vercel.app",
              "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": "https://booboo-black.vercel.app",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "8 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 42,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 30,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3
            },
            "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": "1 out of 1 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/16 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "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 detected",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "10 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Matched the npm:@booboo-brain/cli@0.5.1 runtime dependency closure — what installing the published package pulls in — 176 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:@booboo-brain/cli@0.5.1",
                  "assessed": 176
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "source": "osv",
              "advisories": 1,
              "affected_packages": 1,
              "assessed_packages": 176,
              "unassessed_packages": 0,
              "affected_by_severity": "moderate 1",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "1 affected: @hono/node-server 1.19.15 (moderate 5.9)",
                "points": 13.2,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "@hono/node-server 1.19.15 (moderate 5.9)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 176,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 57,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.98,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "98 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 98,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 53,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "packages/build/tsconfig.json",
                "packages/cli/tsconfig.json",
                "packages/create-booboo/tsconfig.json",
                "packages/panel/tsconfig.json",
                "packages/serve/tsconfig.json",
                "packages/spec/tsconfig.json",
                "packages/vault/tsconfig.json",
                "packages/viewer/tsconfig.json"
              ],
              "agent_commit_share": 0.63,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "packages/build/tsconfig.json, packages/cli/tsconfig.json, packages/create-booboo/tsconfig.json, packages/panel/tsconfig.json, packages/serve/tsconfig.json, packages/spec/tsconfig.json, packages/vault/tsconfig.json, packages/viewer/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/build/tsconfig.json, packages/cli/tsconfig.json, packages/create-booboo/tsconfig.json, packages/panel/tsconfig.json, packages/serve/tsconfig.json, packages/spec/tsconfig.json, packages/vault/tsconfig.json, packages/viewer/tsconfig.json"
                    }
                  }
                ],
                "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": "63 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 63,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 97,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 87788,
              "source_files_sampled": 50,
              "oversized_source_files": 3
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "3/50 source files over 60KB",
                "points": 51.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 50,
                      "oversized": 3
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "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": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "npm package '@booboo-brain/cli' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring",
    "npm package '@booboo-brain/spec' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring",
    "npm package '@booboo-brain/build' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring",
    "npm package '@booboo-brain/panel' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring",
    "npm package '@booboo-brain/serve' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring",
    "npm package '@booboo-brain/vault' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring",
    "npm package '@booboo-brain/viewer' points at a different repository (https://github.com/jessedu29260-netizen/booboo); excluded from ecosystem scoring",
    "npm package 'create-booboo' points at a different repository (https://github.com/jessedu29260-netizen/booboo); 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-26T14:16:26.223714Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/jessymariau/booboo.svg",
  "full_name": "jessymariau/booboo",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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