公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-27 21:42 UTC

rohanthewiz / bytdb

A beta DB based on rohanthewiz/btypeDB - based on tidwall/btype

Go未检测到许可证★ 9 星标⑂ 0 复刻始于 2026年7月在 GitHub 上查看 ↗

rohanthewiz/bytdb 的健康指数为 100 分中的 42 分,处于「存在风险」区间。 其得分最高的类别是Vitality(69/100),最低的是Community & Adoption(20/100)。 最近一次更新在 5 天前。 近期的大部分工作由 1 位贡献者完成。

42
总分 / 100
存在风险

软件健康指数

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

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

评分画像

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

所有权

Rohan Allison个人账户
19 关注者136 个公开仓库始于 2011年10月

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

软件包生态系统

注册表软件包版本月下载量版本数最近发布
Gogithub.com/rohanthewiz/bytdbv0.6.4-55 天前
Gogithub.com/rohanthewiz/bytdb/pgwirev0.6.4-55 天前

按类别列示的指标

活力

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

69中等 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 5 天前
2.8/36提交节奏 — 52 周中有 4 周有提交
18/18提交量 — 最近一年 113 次提交
0/10OpenSSF Scorecard:Maintained — project was created within the last 90 days. Please review its contents carefully
所用输入
commits_last_year113
human_commit_share1
days_since_last_push5
active_weeks_last_year4

发布纪律

88优秀
评分方式
16.2/27有发布版本 — 5 个版本标签(无 GitHub 发布版本)
36/36发布时效 — 最近一次发布版本于 5 天前
27/27发布节奏 — 约每 0.7 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count5
latest_release_tagv0.6.4
releases_from_tags
days_since_latest_release5
mean_days_between_releases0.7
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

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

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

社区健康

25危急
评分方式
22.5/22.5README
0/22.5许可证 — 未检测到许可证文件
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

可持续性与治理

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

37存在风险 · 占总体的 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议题解决 — 没有议题或无数据
0/38.3PR 接受 — 没有已裁定的拉取请求或无数据
0/15OpenSSF Scorecard:Code-Review — Found 0/30 approved changesets -- score normalized to 0
所用输入
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
已排除计分(无数据或不适用):议题解决, PR 接受。 其余权重已重新归一化。
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
9.4/25所有者影响力 — rohanthewiz 有 19 位关注者
25/25既往记录 — 136 个公开仓库,账户约 14 年
所用输入
followers19
owner_typeUser
is_verified
owner_loginrohanthewiz
public_repos136
account_age_days5,399
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — go 上有 2 个软件包
35/35发布时效 — 最近一次发布于 5 天前
20/20版本历史 — 5 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesgithub.com/rohanthewiz/bytdb, github.com/rohanthewiz/bytdb/pgwire
ecosystemsgo
any_deprecated
min_days_since_publish5

工程质量

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

52中等 · 占总体的 20%

工程实践

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

文档

85优秀
评分方式
30/30README
25/25文档目录
0/15文档 / 主页站点
10/10仓库描述
10/10主题标签 — 4 个主题标签
10/10Wiki
所用输入
topicsdatabase, memory-db, postgres, redis
has_wiki
homepage
has_readme
has_docs_dir
has_description

安全

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

25危急 · 占总体的 16%

安全态势

25危急
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 无数据
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
0/10Dangerous-Workflow — 无数据
0/7.5Dependency-Update-Tool — no update tool detected
5/5Fuzzing — project is fuzzed
0/2.5许可证 — license file not detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — 无数据
0/5Pinned-Dependencies — 无数据
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — 无数据
4.5/7.5Vulnerabilities — 4 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate2.5
已排除计分(无数据或不适用):ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions。 其余权重已重新归一化。

AI 就绪度

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

63中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
31.5/40可读的提交历史 — 100 次人类提交中有 59 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.59
agent_instruction_files
agent_instruction_max_bytes
评分方式
12.6/18一条命令的引导启动 — bench/go.mod, go.mod, pgwire/go.mod(工具链约定,无任务运行器)
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — Go(静态类型)
10/10可复现环境 — lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 100 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — 无数据
所用输入
has_nix
has_tests
lockfilesgo.sum
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share1
toolchain_manifestsbench/go.mod, go.mod, pgwire/go.mod
dependency_bot_commit_share0
已排除计分(无数据或不适用):OpenSSF Scorecard:Pinned-Dependencies。 其余权重已重新归一化。
评分方式
45/45可类型检查的代码 — Go(静态类型)
54.7/55可控的文件大小 — 采样的 165 个源文件中有 1 个超过 60KB
所用输入
primary_languageGo
largest_source_bytes99,211
source_files_sampled165
oversized_source_files1

关键数据

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

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

更多细节

OpenSSF Scorecard 2.5 / 10
2.5综合

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
不适用CI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
不适用Dangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
10Fuzzingproject is fuzzed
0Licenselicense file not detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
不适用Packagingpackaging workflow not detected
不适用Pinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
不适用Token-PermissionsNo tokens found
6Vulnerabilities4 existing vulnerabilities detected
直接依赖 13
注册表软件包版本约束清单文件
Gogithub.com/jackc/pgx/v5v5.10.0bench/go.mod
Gogithub.com/marcboeker/go-duckdb/v2v2.3.5bench/go.mod
Gogithub.com/redis/go-redis/v9v9.11.0bench/go.mod
Gogithub.com/rohanthewiz/btypedbv0.4.0bench/go.mod
Gogithub.com/rohanthewiz/bytdbv0.0.0bench/go.mod
Gogithub.com/rohanthewiz/bytdb/pgwirev0.0.0bench/go.mod
Gogithub.com/rohanthewiz/btypedbv0.6.2go.mod
Gogithub.com/rohanthewiz/serrv1.4.0go.mod
Gogithub.com/jackc/pgx/v5v5.10.0pgwire/go.mod
Gogithub.com/rohanthewiz/btypedbv0.6.2pgwire/go.mod
Gogithub.com/rohanthewiz/bytdbv0.6.4pgwire/go.mod
Gogithub.com/rohanthewiz/serrv1.4.0pgwire/go.mod
Gogolang.org/x/textv0.29.0pgwire/go.mod
全部依赖 未采集

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "database",
        "memory-db",
        "postgres",
        "redis"
      ],
      "is_fork": false,
      "size_kb": 1078,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Go": 1484893,
        "Shell": 674
      },
      "pushed_at": "2026-07-22T19:40:37Z",
      "created_at": "2026-07-03T15:10:33Z",
      "owner_type": "User",
      "updated_at": "2026-07-23T18:31:53Z",
      "description": "A beta DB based on rohanthewiz/btypeDB - based on tidwall/btype",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Rohan Allison",
      "type": "User",
      "login": "rohanthewiz",
      "company": null,
      "location": "Texas",
      "followers": 19,
      "avatar_url": "https://avatars.githubusercontent.com/u/1130495?v=4",
      "created_at": "2011-10-15T20:09:41Z",
      "is_verified": null,
      "public_repos": 136,
      "account_age_days": 5399
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.6.4",
          "kind": "patch",
          "published_at": "2026-07-22T19:40:34Z"
        },
        {
          "tag": "v0.6.3",
          "kind": "patch",
          "published_at": "2026-07-22T15:30:16Z"
        },
        {
          "tag": "v0.6.2",
          "kind": "patch",
          "published_at": "2026-07-20T00:05:25Z"
        },
        {
          "tag": "v0.6.1",
          "kind": "patch",
          "published_at": "2026-07-19T22:39:45Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-07-19T22:21:50Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "f5253cde16820ce86243a6fde66c6c0bcc20725a",
          "body": "Add an \"Encryption at rest\" section to the README and the bytdb skill\ncovering WithEncryptionKey (value-only AES-256-GCM, v2 header, ciphertext\nthat flows to replicas/backups, wrong/missing-key errors, bytdbd key\nflags). Bump pgwire/go.mod's bytdb pin v0.6.3 -> v0.6.4 for the paired tag.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Release v0.6.4: document WAL encryption; bump pgwire bytdb pin",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-22T19:40:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9c3a3d76dabd83c7c10033f3dbfbd2d96220b11e",
          "body": "Repin root and pgwire go.mod to btypedb v0.6.2, which adds value-only\nAES-256-GCM WAL encryption (WithEncryptionKey, v2 header). Verified both\nmodules build against the published tag with GOWORK=off.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump btypedb pin to v0.6.2 (WAL encryption at rest)",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-22T19:34:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "813622c7298bd1a2f35878e35a3304e8c9219f60",
          "body": "Re-export btypedb.WithEncryptionKey as bytdb.WithEncryptionKey (mirrors\nWithSyncNever); Engine.Open already forwards options. bytdbd gains\n-encryption-key-file / -encryption-key-env (raw 32 bytes, 64 hex chars, or\nbase64 of 32; never on argv, so it can't leak via ps or shell history).\n\nBecause repli\n[…]\nPairs with btypedb WAL encryption (value-only AES-256-GCM, v2 header).\nNot yet released -- pending a btypedb version bump + repin.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "WAL encryption at rest: re-export + bytdbd flags + tests",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-22T18:05:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "59eacf03c13e6f87b42c7e453d46ca36ba5ac99b",
          "body": "…o v0.6.3\n\nbtypedb v0.6.1 carries the DB.Update recover that releases the writer lock\non a panic in the transaction closure, fixing the one-shot\nInsert/Update/Delete/DDL write paths at the source. Root and pgwire both\npin it. pgwire's bytdb pin moves to v0.6.3 for this release (resolved\nlocally via the replace directive).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump btypedb pin to v0.6.1 (Update panic-recover); pgwire bytdb pin t…",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-22T15:30:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "dda7872fc2ec60c877e6017f6d8f395d28a2dc43",
          "body": "…restore manifest)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Session doc: production-comb follow-ups (Update recover, pgwire DoS, …",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-22T13:39:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a50e50eaeccbf930659cb20cb62ec8a91219c1fc",
          "body": "…ward\n\nRestore previously chose the newest generation whose chunk chain started\nat offset zero. A generation freshly rolled by a compaction has exactly\nthat shape after its very first partial ship, so restore could pick an\n8 MB fragment of the new epoch over a complete older generation —\nsilently ro\n[…]\nneration skipped for an older complete one; all-short ->\nErrIncompleteReplica. Existing ship/restore/prune/prefix tests unchanged.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "replicate: generation-complete manifest — no silent restore roll-back…",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-22T13:37:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9a70873842d6d1dcef23b5b44de7c0955d9cf280",
          "body": "… caps\n\nCloses the DoS follow-ups surfaced in the production comb. Six changes,\neach with a regression test (dos_test.go unit-level, dos_wire_test.go end\nto end over a socket):\n\n- Write deadline (Server.WriteTimeout, default 60s, negative disables).\n  A client that opens a writable transaction block\n[…]\nr.IdleTimeout, default off so\n  connection pools are unaffected): terminates a session idle between\n  statements with FATAL 57P05.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "pgwire: DoS hardening — write deadline, bounded body reads, conn/stmt…",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-22T13:27:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "16d2f48108d7e51b46050a8f06b2570b51b6e4c8",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Session doc: production comb — fixes, fuzzing, doc sync",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-22T12:52:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "65f99e8ca3ec84de5b6e5a08738aaeacf2002a1e",
          "body": "- sql/parser: bound selectStmt recursion — nested FROM subqueries no\n  longer overflow the stack (uncatchable fatal, killed the server)\n- sql/agg: SUM(expr) no longer drops runtime-float rows (e.g.\n  SUM(CASE WHEN c THEN 1 ELSE 1.5 END) returned 1, not 7.0)\n- ddl: DropColumn now shifts foreign-key c\n[…]\nhSyncNever, Txn.Sequence, ctx-exec wrappers, viewOID.\nDocs: README + skill gain OWNER TO, BETWEEN, $n in LIMIT/OFFSET, and the\nS3 timeout note.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Production comb: 6 correctness/DoS fixes + fuzz + gap tests",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-22T12:52:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "33509b87360e39b5e93c172fe52bf2fe49727bb0",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Session doc: BETWEEN + LIMIT/OFFSET params, v0.6.2 release",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-20T00:07:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "526aee8a5cd67e3b4cf0947b5e3a47d07fd5245c",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "pgwire: bump bytdb pin to v0.6.2 (BETWEEN, LIMIT/OFFSET params)",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-20T00:06:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "91778f1af257f63dfbcaebac34cbf9be0c9844c4",
          "body": "- [NOT] BETWEEN [SYMMETRIC] parses as an exprCmp postfix, desugared to\n  the comparisons it is defined as — works in WHERE, CHECK constraints\n  (the pg_dump shape), and anywhere else expressions do.\n- LIMIT/OFFSET accept $n counts: parsed into LimitParam/OffsetParam,\n  resolved to the int64 twins at\n[…]\nejected), counted by numParams, described as int so\n  wire drivers encode int8.\n- pgwire maps the negative-count errors to SQLSTATE 2201W/2201X.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "sql: BETWEEN in scalar grammar; $n placeholders in LIMIT/OFFSET",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-20T00:05:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f7decca8394c53ebae070784519de143b5d5552f",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Skill: document ALTER TABLE OWNER TO no-op",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T22:48:53Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7744cb76d917466615d5e881f1fe167c5f7d5935",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Session doc: ALTER TABLE OWNER TO no-op, v0.6.1 release",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T22:46:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e047b68703cbcb3f0d7ca6c80ebb4b1f8b114187",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "pgwire: bump bytdb pin to v0.6.1 (OWNER TO no-op)",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T22:40:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0b9969dd29d359e4c9fd8c4ce7f828eb10f3cad6",
          "body": "bytdb has no roles, but pg_dump output and migration tools (goose)\nemit OWNER TO lines routinely. Accept the statement and execute it as\na no-op — deliberately exempt from the DDL-in-transaction-block guard\nso goose's per-migration transactions pass through.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "sql: parse and ignore ALTER TABLE ... OWNER TO",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T22:39:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e04e22ce24eedc9f59fefac5a37b02344674cd85",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Session doc: S3 replication, v0.6.0 release",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T22:29:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4a104a0bb1108a38b9411cc43c936029a4b81982",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "pgwire: pin bytdb v0.6.0 for the versioned nested-module tag",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T22:26:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "18a430bb67699b39fa58c09d20d9737e131554b8",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Skill: document backup streaming and S3 replication",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T22:21:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a815462989ecf44f00d9c49ceb48a2d122154a8e",
          "body": "Litestream-style asynchronous replication to any S3-compatible object\nstore. The replicate package ships the append-only storage log as\nimmutable byte-range chunks (gen/<id>/<start>-<end>.wlog), rolling a\nnew generation on compaction or process restart and pruning old ones;\nRestore concatenates the \n[…]\nate/s3) and a streaming\nEngine.BackupTo(io.Writer) for direct-to-bucket snapshots. Rides the\nnew btypedb v0.6.0 LogState/ReadLogRange epoch API.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "S3 replication: replicate package, Engine.BackupTo, btypedb v0.6.0",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T22:20:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "35253986a226d2c4d0d5e1ac44c2c623d32cb56c",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ON DELETE CASCADE foreign keys; README refresh; bytdb usage skill",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T21:13:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "74f66d9eaba971664e7701a46a55f81e98765035",
          "body": "Accessors are ExArith ops at the additive level; predicates are five\nnew PredOps evaluated in checkPred (residual-only, like LIKE). Shared\nspellings || and - pick jsonb semantics via static operand typing\n(staticJSONB), leaving text concat and arithmetic untouched.\nContainment is fully recursive wit\n[…]\ny; deletes\nerror on wrong container kinds in Postgres's words. Semantics core in\nsql/jsonb_ops.go; verified end to end over both wire protocols.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "jsonb operator family: -> ->> #> #>> @> <@ ? ?| ?& || -",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T17:10:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "47dfdf9810dc4ec4291fcc5dd0f2448ca35a784d",
          "body": "- DEFAULT clock functions: now() and the CURRENT_TIMESTAMP-family\n  spellings normalize to a \"now()\" marker, CURRENT_DATE to its own;\n  markers store as unquoted text in Column.Default (collision-proof:\n  string constants always render quoted) and evaluate once per INSERT\n  statement in columnDefaul\n[…]\n sql/jsonb_test.go, pgwire/jsonb_test.go,\n  TestDefaultNow; verified end to end with a live pgx client\n  including a server-restart reopen check\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "DEFAULT now()/current_date and jsonb core type",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T16:46:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "150764540dba2f06dc74e87d245dc19e9b16c592",
          "body": "- LIKE/NOT LIKE/ILIKE/NOT ILIKE as PredOps sharing the regex ops'\n  execution path; patterns compile to anchored regexes through the\n  existing cache; ESCAPE accepts the default backslash only\n- text[] (TTextArray) riding on canonical Postgres array-literal\n  strings: ParseTextArray/FormatTextArray/\n[…]\n to the\n  column type\n- Tests: sql/like_array_test.go, textarray_test.go,\n  pgwire/textarray_test.go; verified end to end with a live pgx client\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "LIKE/ILIKE operators, text[] type, array_to_string",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T16:21:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5d14914c6e06d4182e042a61fabce27734bb9ecf",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Session doc: migration gap assessment verified against source",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-19T12:39:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "861153926ff94f8b958b0058e5308c33f784858b",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: audit-remediation-complete",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T06:24:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "38562182ad62b13d6eaa9e400e7aea0f68500db9",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Audit doc: record remediation status",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T06:21:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0e80c2660a3ac8b5c9d342e5e4bde50a9a87b74a",
          "body": "RENAME TO / RENAME [COLUMN] c TO d: descriptor-only changes — rows\nare keyed by table ID and tagged by column ID, so nothing rewrites.\nGuards keep text-anchored dependents honest: a table or column\nreferenced by another table's foreign key stays put (self-references\nrename along, in RefTable and Ref\n[…]\ne (active / idle / idle in\ntransaction [(aborted)]), and its current or last statement under a\nsmall mutex; the view reports them sorted by PID.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ALTER TABLE RENAME and pg_stat_activity",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T06:21:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "284bc4762a8084301d0eecfcccc92ecd55915517",
          "body": "When a join step's equality conjuncts cannot become index lookups —\nno index or primary key starts with any equijoin column, or the inner\nside is a virtual table (CTE, derived table, view, catalog table) —\nthe nested loop's full-scan-per-outer-row degrades to O(n·m). Such\nsteps now build a hash tabl\n[…]\nl back to the\nnested loop. EXPLAIN renders Hash Join / Hash Left Join with the Hash\nCond; a 3000x3000 unindexed join test guards the complexity.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Hash join for unindexed equijoins",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T06:15:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bc7f71906ba6fab2d3d8dae4298fab995cfeef86",
          "body": "All one mechanism: a subquery materializes once into a per-statement\nvirtual table (the same scopeTable.rows machinery that serves the\nsystem catalog), layered over the catalog in name lookup.\n\n- Derived tables — FROM (SELECT ...) alias — lower at parse to\n  synthetic CTEs with un-spellable names ('\n[…]\necution wraps CTE/view statements in one snapshot.\n- IN (SELECT ...) / NOT IN (SELECT ...) now parse, lowered to the\n  existing = ANY machinery.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Derived tables, WITH (CTEs), views, and IN (SELECT ...)",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T06:08:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "83a6fc80d4b01e19ab16035aa3fd25c2aaa0843f",
          "body": "FKDesc lives on the child table's descriptor; the engine validates\nshape at AddForeignKey (referenced columns must be the parent's PK or\na unique index, types must match; existing rows optionally validated\nin the publishing transaction) and guards the schema side — no\ndropping a referenced table, an\n[…]\nPARTIAL are rejected at parse. Wire:\nSQLSTATE 23503 with Postgres's wording; FKs appear in pg_constraint\n(contype 'f') and pg_get_constraintdef.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Foreign keys (NO ACTION/RESTRICT, MATCH SIMPLE)",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T05:54:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ea8da92fe91bfbdeb62d4144d6d7408c7a2a1159",
          "body": "Timestamps store as int64 microseconds since the Unix epoch (UTC\ninstants), dates as int64 days, UUIDs as 16 bytes — representations\nthe tuple encoding already orders correctly, so keys and indexes sort\nchronologically/bytewise with no format change. The shared text codecs\n(ParseTimestamp/FormatTime\n[…]\nby\n  the declared column type since instants share int64 with counts.\n- Catalog: pg_type rows, information_schema/pg_attribute type\n  reporting.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "TIMESTAMP/DATE/UUID types",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T05:41:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ebd00788160a74e3f463cd4d15c4053937acf5cd",
          "body": "…, sync flag, query log\n\n- TRUNCATE [TABLE] t[, ...] [RESTART|CONTINUE IDENTITY]: one range\n  delete per table key space (rows + all indexes), atomic across the\n  list, DML semantics (runs and rolls back inside blocks). Engine gains\n  Txn.Truncate.\n- VARCHAR(n) / CHARACTER VARYING(n): the limit is n\n[…]\nequest\n  exempt) and Server.QueryLog(query, duration, err) hook.\n- bytdbd: -sync always|never (bytdb.WithSyncNever), -max-conns,\n  -log-queries.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Operability batch: TRUNCATE, VARCHAR(n), UNIQUE sugar, SHOW, conn cap…",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T05:28:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "952e49e96466d9e88b1847cbf7f8ccb1ffeb6029",
          "body": "Advertise the PLUS mechanism on TLS connections when the binding data\nis derivable (single static certificate, RFC 5929 hash defined for its\nsignature algorithm), verify the certificate hash inside the client\nproof, and fail the exchange on a \"y\" gs2 flag once PLUS was offered\n— the RFC 5802 downgrade tripwire. channel_binding=require clients now\nconnect.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "pgwire: SCRAM-SHA-256-PLUS channel binding (tls-server-end-point)",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T05:11:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f309deb28f0eef312e654162a472cee4005198cd",
          "body": "Three new optional Server fields, defaults preserving trust mode:\nTLSConfig upgrades the stream on SSLRequest (with a pipelined-bytes\nsmuggling guard), RequireTLS refuses plaintext startups (FATAL 28000),\nand Auth requires SCRAM-SHA-256 (RFC 5802/7677). The server stores\nonly Postgres-format verifie\n[…]\nS,\ngood/bad/unknown logins, live re-keying, SCRAM over TLS (the y,, gs2\npath), verifier round trips, and cancellation through the secured\nstack.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "pgwire: SCRAM-SHA-256 authentication and TLS",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T04:30:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a4a51a0bc94d96b8d7b9a16010ecc99596389fc1",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump btypedb to tagged v0.5.0",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T04:30:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "418e1fab70aa49709be3ca00f0a7950f88c77bef",
          "body": "Standalone (non-workspace) builds now resolve Engine.Backup and the\nnew recovery behavior; go.work still points development at ../btypedb.\nTag btypedb v0.5.0 later and this becomes a clean version bump.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump btypedb to the header/corruption/backup commit",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T03:19:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2ffe4aa8b1f3fc9eb7c4c5f50314b9680bc2c59c",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: production-hardening-backup-cancel",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T03:17:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "97ebb362150896bbbb722cc87c9ffed39433ebc0",
          "body": "…meout\n\nThe first three items of the audit's remediation order (the header +\ncorruption-detection half lives in btypedb):\n\n- Engine.Backup(destPath): consistent point-in-time copy, atomic at\n  the destination, without blocking readers or writers; restore is\n  Open on the copy.\n- Context plumbing thr\n[…]\nconnection lives on.\n\ngo.work now includes ../btypedb; bytdb's go.mod still pins the last\ntagged btypedb, so tag and bump after pushing btypedb.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Production hardening: online backup, query cancellation, statement_ti…",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T03:05:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "019dbe890d192454e24e74a4e1e842638e0b53bd",
          "body": "Four-dimension audit (durability/recovery, concurrency/transactions,\npgwire security/operability, SQL layer/testing) with the hard blockers,\nper-domain gaps, and a remediation order.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add production-readiness audit to ai_docs",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-12T03:05:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bb4345d51f044017013d301308a3d81235b4383a",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: m29-insert-expr-select-distinct",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-11T23:17:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "71a4ec7fd4a32ce360af04c5cc48fbf653a4fe5b",
          "body": "INSERT VALUES entries parse through the full expression grammar and\nevaluate per row against an empty scope — nextval('s'), arithmetic,\ncasts, scalar subqueries — with literals keeping their fast path and\n$n placeholders binding/describing inside expressions. SELECT DISTINCT\ndedups projected rows be\n[…]\nMIT (output columns and\npositions only, PG's rule) across plain, aggregate, windowed, UNION,\nand subquery shapes; EXPLAIN gains the Unique node.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 29: expression values in INSERT, SELECT DISTINCT",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-11T23:17:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "95285c6769a5b7c9daf0defa8fa8935543a0d3d6",
          "body": "…f, order-aware ties\n\nFive features closing the outstanding list:\n- Window functions compose with GROUP BY: windows evaluate after\n  grouping/HAVING over groups materialized as synthetic rows\n  (aggQuery row mode + exOrd positional reads), so RANK() OVER\n  (ORDER BY SUM(x) DESC) and SUM(SUM(x)) OVER\n[…]\ner serves ORDER BY, eliding the\n  sort; selectivity still outranks order.\n\nVerified end to end over the wire (pgx, simple + extended protocols).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 28: window+GROUP BY, DISTINCT windows, sequences, pg_attrde…",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-11T07:55:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7e8e44b6a5a6358a95e00e0dfb0f5fa81e0e2cb6",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: m27-frame-exclude",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-11T07:05:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ee22a455fe8855b56cad5b15f9a15da7eae9385a",
          "body": "After the bounds pick a row's frame, exclusion clips the current row,\nits whole ORDER BY peer group, or the peers minus the row itself out\nof it — only ever removing rows the bounds selected, so TIES never\nre-admits a current row from outside the frame. A frame becomes up to\nthree disjoint segments:\n[…]\nROUP still\naggregates once per peer group. GROUP/TIES stay legal without ORDER\nBY (the partition is one peer group); EXPLAIN renders the clause.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add frame EXCLUDE: CURRENT ROW/GROUP/TIES on every window frame mode",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-11T07:05:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ca116d2ff8c0f9f90eb2839c6eb5d91861df5b1b",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: m26-range-offset-frames",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-10T23:46:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "17d0e911978d80a7486fc4b059fd3c4b9a1339a8",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add RANGE offset window frames: distances measured on the sort key",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-10T23:46:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a6caff42ec27ab10b62cada4824c76518311b6e0",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: m25-window-frames",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-10T23:00:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "77b8433b45db8cb29556e9409ae3bc2114c46bae",
          "body": "Frames reduce each row to a half-open position range over the sorted\npartition: ROWS by position arithmetic, RANGE/GROUPS through peer\ngroups. Honored by aggregate windows and FIRST/LAST/NTH_VALUE (empty\nframes yield NULL, COUNT 0); ignored by ranking and LAG/LEAD, as in\nPostgres. UNBOUNDED-PRECEDIN\n[…]\nse), bind\nvia $n, and describe as int on the wire. RANGE offset bounds and frame\nEXCLUDE (beyond NO OTHERS) are rejected with Postgres' wording.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add explicit window frames: ROWS/RANGE/GROUPS with BETWEEN bounds",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-10T23:00:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7cbaa52908a4eeb36a37c26d21f58d3a57bef337",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: m24-value-window-functions",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-10T21:59:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ece7d36f1709f25a2519c4b92183d8397f43a17d",
          "body": "…alue\n\nPostgres-faithful semantics over the existing partition/sort machinery:\nlag/lead address the whole partition (per-row offset, negative flips\ndirection, default fallback at the edges); last_value and nth_value\nhonor the PG default frame (ends at the current row's last peer).\nDescribe now infers window offset/default placeholder types so wire\ndrivers can bind lag(v, $1) with integer args.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add value window functions: lag, lead, first_value, last_value, nth_v…",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-10T21:58:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a72053f7b0d642ebf792401210d69a15bad2d4ac",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: readme-sync-outstanding-audit",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-10T20:55:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "96e8e941b3c04abb90a0838d55f7670f75a0feb8",
          "body": "The README's status and roadmap stopped at milestone 21, missing the\nfive feature commits since: identity columns (SERIAL sugar, durable\ncounters, explicit-insert bump), RETURNING, ON CONFLICT upsert,\nconstant column DEFAULTs, and lastval()/currval(). The mkdocs site\nalready covered them; this bring\n[…]\n.\nStandalone CREATE SEQUENCE joins the Later bullet.\n\nbench/main.go was the one file failing gofmt -l, pre-existing on\nboth machines; formatted.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Update README for milestones 22-23; gofmt bench",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-10T01:01:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f1dbfc0367f24ae2d712ad5e0376168404d8a3d0",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: upsert-defaults-lastval",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-09T18:48:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1d2457233332947cedee3a5985b46d73781a71f4",
          "body": "The post-insert readbacks some drivers send instead of RETURNING.\nIdentity draws record under the column's implied sequence name\n(table_col_seq, matching information_schema's column_default); an\nexplicit id insert is not a draw and moves nothing. State lives on a\nper-Session seqSession (a bare DB ac\n[…]\ndrawn name reports\nthe same, whether or not the implied sequence exists — sequences here\nare implied by identity columns, not cataloged objects.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add lastval() and currval() session functions",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-09T18:44:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "97f7ece2cee8f66a926d5da4cb75cf568b09f848",
          "body": "DEFAULT <literal> on CREATE TABLE / ADD COLUMN columns, stored as SQL\nliteral text in the descriptor (the checks precedent: the engine\nstores and reports, the SQL layer applies). A column-list INSERT\nfills omitted columns with their defaults, DEFAULT works as a VALUES\nentry, and INSERT ... DEFAULT V\n[…]\naves them untouched,\nand the two are only equivalent when there are none.\n\ninformation_schema.columns reports the stored text in column_default.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add constant DEFAULT column values",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-09T18:35:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a0fd8db38193da5fcd2cd352b5eeb293f872d50a",
          "body": "Postgres upsert semantics with no new engine machinery: conflicts are\nfound by probing the primary key (Get) or a unique index (a point-\nbounded index scan) with the proposed row's key values, and DO UPDATE\nrides the same UpdateReturning path as UPDATE.\n\nThe conflict target infers set-wise against t\n[…]\n's SET parsing is factored into a shared setClause; placeholder\nbinding, literal coercion, and Describe inference all extend through\nthe clause.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add INSERT ... ON CONFLICT (DO NOTHING | DO UPDATE)",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-09T18:21:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "92463dbaab5954d501dcd97e4ecd6db5a85b7ade",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: reconcile-parallel-returning",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-09T17:57:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c20d6ebcc7fe6764786c13c71e828a52b83d0081",
          "body": "RETURNING was implemented independently on two machines with\nnear-identical designs (engine hands back the row as stored;\nprojectSelect reused over a synthetic single-table SELECT; Describe\nannounces the shape). Resolution takes origin's implementation —\nfiner-grained tests, plus its coverage-expans\n[…]\n parse rejection case\n- both sessions' docs kept as the historical record\n\nThe local implementation is preserved on backup/local-returning-impl.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Merge origin/main: reconcile parallel RETURNING implementations",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-09T17:53:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "da5c2f2a658ff31ff69297b953edcd2311d3adfd",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: returning-clause",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-09T17:25:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cae0b78b24e244fe4910668f79f891a76d487cad",
          "body": "The engine now hands back the row as stored: insertRow and updateRow\nreturn the final values (identity columns filled, coercions applied),\nexposed as Txn.InsertReturning and Txn.UpdateReturning — the only way\nRETURNING can report a drawn SERIAL value without a second read.\nDELETE reports each row as\n[…]\ntes (pgx QueryRow over\nINSERT ... RETURNING, multi-row streaming, command tags) plus a live\npsql session matching Postgres output byte for byte.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add RETURNING to INSERT, UPDATE, and DELETE",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-09T17:21:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b7a0658e11bd01744cfbee247ca830942831a678",
          "body": "Close reachable coverage gaps with test-only additions:\n- engine: seq ops (SetSeq/PeekSeq/DeleteSeq), Txn.Delete, reverse\n  index scans, scan-bound validation, coerce matrix (83.2% -> 92.9%)\n- sql: window rewriting, prepared-param binding, CAST/format_type,\n  Stmt.Command, EXPLAIN nodes, aggregate r\n[…]\n%)\n- tuple: normalize widths, NaN/overflow rejects (91.1% -> 97.3%)\n- pgwire: SQLSTATE mapping, decodeParam text/binary, rbuf\n  (87.2% -> 91.3%)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Expand test coverage across engine, sql, tuple, and pgwire",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-09T12:24:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "55fb95c25111f7923383a07465ef6cc5aad66f81",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: returning-clause",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-08T20:13:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9cacb7cc3f20737769b8f03379c7092b74d1866f",
          "body": "Stage 3 of the sequences work: the clause ORMs need to read back\nserver-generated ids. A RETURNING list is a select list — resolved\nwith SELECT's projection machinery against the target table's scope\nand evaluated per affected row: INSERT returns rows as stored\n(identity filled, values coerced) via \n[…]\nkeeps counting the write\n(INSERT 0 n) — so pgwire needed no code changes. Aggregates and\nwindow functions are rejected at parse, as in Postgres.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add INSERT/UPDATE/DELETE ... RETURNING",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-08T20:13:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "149a3642a027bee670eb6231b665e5d911a064a6",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: sequences-and-identity-columns",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-08T19:40:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "df30386698a0a4546a3b84b73a17ddd3d6fe1e05",
          "body": "Stage 1: durable named uint64 counters in the system keyspace\n(NextSeq/SetSeq/PeekSeq/DeleteSeq on Engine and Txn), sharing one\nnextFromCounter primitive with the table-ID allocator, which now also\nchecks exhaustion.\n\nStage 2: Column.Identity — NULL draws the next value from the column's\nown counter\n[…]\nliases and GENERATED BY DEFAULT AS IDENTITY (ALWAYS rejected);\ninformation_schema.columns reports a serial-style default for\nintrospecting ORMs.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add named sequences and identity (SERIAL) columns",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-08T19:40:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "42c33f51b2a877fb5538d02d22041d79e952ea13",
          "body": "…is its snapshot/reset\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Expand compaction docs: the WAL is the database file, and compaction …",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-08T17:20:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "642c76416e8ee80186b7d48b08844e3327dcc9f8",
          "body": "Docs (mkdocs.yml + docs/, Material theme, mermaid diagrams): architecture\n(keyspace, tuple encoding, WAL/recovery, COW transactions, compaction,\npgwire), features with test-verified examples, considerations/gotchas,\ntesting strategy with measured coverage, and benchmarks.\n\nbench/: standalone module \n[…]\nSyncEverySecond, and over pgwire) against Postgres 16 on tmpfs, in-memory\nDuckDB, and Redis 7; results.json holds the numbers cited in the docs.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add MkDocs site docs and cross-database benchmark harness",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-08T16:10:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e3104cd85ece74c8fa5ba528d4e1216b485c065d",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: mkdocs-site-docs-and-benchmarks",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-08T16:08:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "aa34e00e801874befe3ea2d4d7ad9e2586a534da",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: catalog-in-kv-keyspace",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-08T06:37:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f63a4ada6566779f06e7ca64549079fc8d3b3798",
          "body": "Descriptors were already persisted at descKey(name); this makes kv the\nauthoritative read source. Every transaction resolves descriptors\nlazily from its own snapshot (per-Txn memo over a blob-validated parse\ncache), so the schema a transaction sees is exactly the schema of the\ndata it sees, by const\n[…]\n guards; new\ncatalog_kv_test.go pins concurrent-ALTER no-lost-update, racing\nCreateTable, snapshot-schema isolation, and the closed T1.3 window.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Move the catalog into the kv keyspace",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-08T06:37:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1ceb50dff381360d65ede4d046bd62d108170db5",
          "body": "SUM over an integer argument now raises \"bigint out of range\" instead\nof silently wrapping at int64, using the same bound test as scalar\narithmetic; AVG keeps reading the float accumulator, and window SUM\nshares the check through accum.add.\n\nUPDATE SET accepts full expressions (SET age = age + 1, CA\n[…]\nt.go (extended-protocol end-to-end via pgx),\nDescribe inference cases, and an index-self-mutation rerun with a\nreal self-referential expression.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Checked SUM overflow and expressions in UPDATE SET",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-08T06:21:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "faf0384df6fd7c591c437cca03b3ad2d84a7334d",
          "body": "…c-gap tests\n\nFuzz targets: tuple round-trip/order, SQL parser, pgwire message dispatch\n(below the recover fence). Property tests: reverse-scan equivalence over\nthree key spaces, planner equivalence over random queries. Crash tests:\nkill without Close, garbage tail, per-byte crash-point sweep with i\n[…]\n checkPred: a text column compared to a typed non-string value now\n  errors like Postgres instead of silently parsing the stored text\n  per row.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Tier 3 test coverage: fuzz, property, crash, concurrency, and semanti…",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-08T01:12:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a7e8016fab58087364bd1802e2984af5ecfdd29c",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: tier2-robustness",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-08T00:25:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "468fd9eb4f021b52b8938fde3a510f235a1fe0b5",
          "body": "Tier 1 (confirmed defects, each with regression tests):\n- Parser depth limit (maxParseDepth=1000): deep nesting returns a\n  parse error instead of a fatal stack overflow killing the server\n- recover() fence per pgwire connection: a panicking statement costs\n  one connection (ErrorResponse XX000), no\n[…]\ntor format versioning\n  with all bad descriptors reported at Open; commit-visibility docs\n\nBoth modules green under go test -race; go vet clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Reliability hardening: Tier 1 fixes and Tier 2 robustness",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-08T00:24:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6a596ecc94cab45f9342b24535257a5f624ffa7c",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: tier1-reliability-fixes",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-07T23:42:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5c383d504d52f9d4de14e5a1b395ec2da9293946",
          "body": "Full audit of durability, panic/error paths, concurrency, and test\ncoverage: 5 confirmed defects (Tier 1), 8 robustness gaps (Tier 2), and\na fuzz/property/crash/concurrency test plan (Tier 3), with a suggested\nexecution order.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add reliability-hardening plan",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-07T13:02:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c91d9913fa25889d50b4f66667d4f821b0aae944",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: bytdb-milestone-21-bounded-reverse-scans",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-07T12:42:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8381f7c4a4fbba9768d20a5916f344cba786035c",
          "body": "Any pushed-down scan region can now be read backward, not just an\nunbounded one. A forward plan's region is already key-delimited on both\nedges (from below, the early-stops above), so reversing converts the\nstops into the backward walk's entry bound via plan.revEnd():\nequality-prefix values plus the\n[…]\n placement mismatch).\n\nVerified with go test -race in both modules and end-to-end over the\nwire with psql 16 driving bytdbd (plans and results).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 21: bounded reverse scans",
          "author_name": "Rohan Allison",
          "author_login": null,
          "committed_at": "2026-07-07T12:41:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ddf2a1915d9044b5984cc32e907dc2d3266b040a",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: bytdb-milestone-20-order-by-index-order",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T23:10:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2d1f6fa6b1a6d261a3f62e9a03c65c1ddd6542ef",
          "body": "A single-table SELECT whose ORDER BY matches a scan's key order now\nskips the sort and, under a LIMIT, stops the scan early. A fully\nreversed match runs the scan backward.\n\n- Engine: kvView.Descend; scanRowsRev/scanIndexRowsRev over btypedb's\n  Descend; Engine+Txn ScanRangeRev/ScanIndexRev (index re\n[…]\nort. Tests: sql/order_test.go, reverse_test.go. Verified with\npsql 17 over bytdbd. go vet clean, -race green (bytdb, sql, pgwire).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 20: ORDER BY exploiting index order",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T23:10:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9ec782eec20640586e92aff02d794bce7d1d96bb",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Update session doc: milestones 18-19 (ANY/ALL + window functions)",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T22:37:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "02e34d08831e7a8b1c5a219843f2d42f766c7d22",
          "body": "… OVER)\n\nA third SELECT execution shape that emits every input row: materialize\npost-filter rows, partition by the order-preserving tuple encoding (the\nsame equivalence GROUP BY uses), sort each partition by the window\nORDER BY, and assign per-row values. Ranking functions compute by\nordinal (ROW_NU\n[…]\nORDER BY key building between the plain and window paths.\n\nVerified with go test -race across all modules and end-to-end via psql.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 19: window functions (ROW_NUMBER/RANK/DENSE_RANK, aggregate…",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T22:35:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "34ec03fd19cd877898e44f5df529f846843893d3",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: bytdb-milestone-18-any-all-arrays",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T22:23:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "06319ee58e89de69d61c933618b7475d61cd1412",
          "body": "Right-hand side may be an ARRAY[...] constructor (new ExArray node), a\nsingle-column subquery, or a Postgres '{...}' array-literal string;\narray-typed casts (::int[]) are peeled off and elements coerce to the\nleft operand's type. Postgres three-valued logic: an empty array is\nANY->false, ALL->true e\n[…]\n ARRAY[...] also\nevaluates as a value rendering as {...}.\n\nVerified with go test -race across all modules and end-to-end via psql.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 18: op ANY(...) / op ALL(...) over arrays and subqueries",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T22:19:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "017584c4c25599254dcf01d49ee62ac8fd9bf28e",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: bytdb-milestone-17-distinct-agg-alter-constraint",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T18:29:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e9c84a405d69a7e6ec652fe5e88874fc934e6b12",
          "body": "DISTINCT aggregates: COUNT(DISTINCT x) and friends consume each\ndistinct non-NULL argument value once per group, deduplicated by the\norder-preserving tuple encoding (the same equivalence GROUP BY uses).\nA distinct call stays in expression form, so the aggregate-rewrite\nmachinery, HAVING, ORDER BY, a\n[…]\nreferenced column; the primary key stays\nstructural. ADD PRIMARY KEY/UNIQUE/FOREIGN KEY are rejected with\npointers to what bytdb offers instead.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 17: DISTINCT aggregates, ALTER TABLE ADD/DROP CONSTRAINT",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T18:19:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a73b5c3cdca14ed034032872868c30df8dee5b2b",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: bytdb-milestone-16-desc-check-explain",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T17:34:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "25e5a0b91f33a5cfab7a63450edda05dbc93a6bf",
          "body": "- tuple: AppendDesc encodes elements byte-inverted (CRDB-style), so\n  byte order reverses semantic order; DecodeOne decodes either\n  direction, letting mixed-direction composite keys self-delimit.\n- engine: IndexDesc.Desc per-column directions via CreateIndexCols;\n  entries, bounds, and entry decodi\n[…]\nLL, DESC indexes, and\ncheck constraints; violation messages match Postgres verbatim. All\nsuites green under -race in both modules.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 16: DESC index columns, NOT NULL/CHECK constraints, EXPLAIN",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T16:55:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cbf714b75654307d94f523c22cfa1a44590bac28",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: bytdb-milestone-15-aggregate-expressions",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T06:17:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c8728c44773847c4824c21ec5ae8df8fdd88fc6c",
          "body": "GROUP BY keys are now expressions — columns, ordinals, age / 10,\nupper(city), CASE — and every select item, HAVING condition, and\nORDER BY key is rewritten against them: a subtree matching a key\nbecomes a reference to the group's key value, an aggregate call\nbecomes a (deduplicated) accumulator refe\n[…]\nguments, and preserves GroupBy nilness (a\nbound copy previously turned every parameterized query into an\naggregate). Verified against psql 17.5.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 15: aggregate expressions",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T06:16:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dcbda52690fd1b2a436677bc49e1676dfc91e5ec",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: bytdb-milestone-14-group-ordinals-and-savepoints",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T05:42:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "88796f484be5479e3f52993d2fbdac429b12eeab",
          "body": "GROUP BY keys may be integer ordinals naming select-list positions\n(GROUP BY 1), which must resolve to plain columns; non-integer\nconstants and out-of-range or aggregate-naming positions error as in\nPostgres.\n\nSavepoints ride btypedb v0.4.0's O(1) COW marks through all three\nlayers: engine Txn.Savep\n[…]\nhe SAVEPOINT/\nRELEASE/ROLLBACK tags and TxStatus 'E' -> 'T' recovery. pgx nested\ntransactions work unchanged on top. Verified against psql 17.5.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 14: GROUP BY ordinals and savepoints",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T05:41:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "216d9b61abeffd3dcfa1d511c1ddfa7189022fc6",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: bytdb-milestone-13-transaction-blocks",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-06T02:57:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f05f070429053aec0df4c225818e838bfc8cc76f",
          "body": "Engine: Begin(writable)/Txn.Commit/Txn.Rollback over btypedb's manual\ntransactions; a writable transaction holds the single-writer lock for\nits lifetime, so blocks serialize with all other writes.\n\nsql: TxnControl statement (BEGIN/START TRANSACTION with modes —\nisolation levels accepted as serializa\n[…]\nmantics,\npgx/database/sql over the wire incl. TxStatus bytes, notices, and\ndisconnect releasing the writer lock) and verified against psql 17.5.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 13: transaction blocks — BEGIN/COMMIT/ROLLBACK on the wire",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-05T12:42:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0c33d4d8da0324858b7ddc5433771123e44cba58",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: bytdb-milestone-12-expression-language",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-04T16:29:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0da76f0fd892fc84d5ceeed7896cd257fd4e52e2",
          "body": "One expression grammar now feeds select items and conditions: CASE\n(both forms), [NOT] IN, regex matches (~ !~ ~* !~*), OPERATOR()/\nCOLLATE, :: casts (int/oid families, text, bool, float, reg*),\narithmetic and || concat, E'...' strings, functions with arguments,\noutput aliases (ORDER BY resolves the\n[…]\n. \\dt, \\d,\n\\d <table>, \\d <index>, \\di, \\dn, \\du, \\dt+, \\d+ and \\l all render\nagainst a live psql 17.5 session.\n\nBoth modules green under -race.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 12: expression language — psql \\dt, \\d, \\d <name> render",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-04T16:27:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a3158e0c5433fd74a565225fbdf0b50c841ce2cb",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: bytdb-milestone-11-system-catalog",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-04T15:07:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9062cd9d732db451246c4e6572c49b4ef8cd3b07",
          "body": "…for ORM introspection\n\nVirtual system tables (pg_namespace, pg_class, pg_attribute, pg_type,\npg_index, information_schema.tables/columns) synthesize from the\nengine catalog and enter queries as materialized FROM-scope rows, so\nWHERE, joins, and aggregates work through the ordinary executor; all\nrea\n[…]\ne wire: GORM HasTable\n(parameterized, CURRENT_SCHEMA() in a predicate), pg_attribute/\npg_type column introspection, select pg_catalog.version().\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Milestone 11: system catalog — virtual pg_catalog/information_schema …",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-04T15:07:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2312eea72ce15dd70f579b9c1a3eb858bc003625",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add session doc: bytdb-milestone-10-postgres-wire-protocol",
          "author_name": "Rohan Allison",
          "author_login": "rohanallison",
          "committed_at": "2026-07-04T14:44:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 5,
      "commits_last_year": 113,
      "latest_release_at": "2026-07-22T19:40:34Z",
      "latest_release_tag": "v0.6.4",
      "releases_from_tags": true,
      "days_since_last_push": 5,
      "active_weeks_last_year": 4,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 0.7
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 28,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/rohanthewiz/bytdb",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/rohanthewiz/bytdb",
          "is_deprecated": false,
          "latest_version": "v0.6.4",
          "repository_url": "https://github.com/rohanthewiz/bytdb",
          "versions_count": 5,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-22T19:40:34Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "github.com/rohanthewiz/bytdb/pgwire",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/rohanthewiz/bytdb/pgwire",
          "is_deprecated": false,
          "latest_version": "v0.6.4",
          "repository_url": "https://github.com/rohanthewiz/bytdb",
          "versions_count": 5,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-22T19:40:34Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 9,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "bench/go.mod",
        "go.mod",
        "pgwire/go.mod"
      ],
      "largest_source_bytes": 99211,
      "source_files_sampled": 165,
      "oversized_source_files": 1,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "bench/go.mod",
        "go.mod",
        "pgwire/go.mod"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go"
      ],
      "dependencies": [
        {
          "name": "github.com/jackc/pgx/v5",
          "manifest": "bench/go.mod",
          "ecosystem": "go",
          "version_constraint": "v5.10.0"
        },
        {
          "name": "github.com/marcboeker/go-duckdb/v2",
          "manifest": "bench/go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.3.5"
        },
        {
          "name": "github.com/redis/go-redis/v9",
          "manifest": "bench/go.mod",
          "ecosystem": "go",
          "version_constraint": "v9.11.0"
        },
        {
          "name": "github.com/rohanthewiz/btypedb",
          "manifest": "bench/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.4.0"
        },
        {
          "name": "github.com/rohanthewiz/bytdb",
          "manifest": "bench/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0"
        },
        {
          "name": "github.com/rohanthewiz/bytdb/pgwire",
          "manifest": "bench/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0"
        },
        {
          "name": "github.com/rohanthewiz/btypedb",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.6.2"
        },
        {
          "name": "github.com/rohanthewiz/serr",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.4.0"
        },
        {
          "name": "github.com/jackc/pgx/v5",
          "manifest": "pgwire/go.mod",
          "ecosystem": "go",
          "version_constraint": "v5.10.0"
        },
        {
          "name": "github.com/rohanthewiz/btypedb",
          "manifest": "pgwire/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.6.2"
        },
        {
          "name": "github.com/rohanthewiz/bytdb",
          "manifest": "pgwire/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.6.4"
        },
        {
          "name": "github.com/rohanthewiz/serr",
          "manifest": "pgwire/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.4.0"
        },
        {
          "name": "golang.org/x/text",
          "manifest": "pgwire/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.29.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "rohanallison",
          "commits": 47,
          "avatar_url": "https://avatars.githubusercontent.com/u/127339601?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "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": 10,
            "reason": "project is fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 0,
            "reason": "license file not 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": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 6,
            "reason": "4 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "f5253cde16820ce86243a6fde66c6c0bcc20725a",
        "ran_at": "2026-07-27T21:42:50Z",
        "aggregate_score": 2.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": null,
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/rohanthewiz/bytdb",
    "host": "github.com",
    "name": "bytdb",
    "owner": "rohanthewiz"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 42,
      "inputs": {
        "security": 25,
        "vitality": 69,
        "community": 20,
        "governance": 37,
        "engineering": 52
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 69,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "commits_last_year": 113,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 4
            },
            "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": "4/52 weeks with commits",
                "points": 2.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "113 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 113
                    }
                  }
                ],
                "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": "excellent",
            "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": 88,
            "inputs": {
              "releases_count": 5,
              "latest_release_tag": "v0.6.4",
              "releases_from_tags": true,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 0.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "5 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0.7 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0.7
                    }
                  }
                ],
                "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": "critical",
        "name": "Community & Adoption",
        "value": 20,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 15,
            "inputs": {
              "forks": 0,
              "stars": 9,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "9 stars",
                "points": 14.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "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": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 37,
        "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": "critical",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution",
                    "pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "merged_prs": 0,
              "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": "no decided pull requests or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_decided_prs_or_data",
                    "params": {}
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "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": 56,
            "inputs": {
              "followers": 19,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "rohanthewiz",
              "public_repos": 136,
              "account_age_days": 5399
            },
            "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": "19 followers of rohanthewiz",
                "points": 9.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 19,
                      "login": "rohanthewiz"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "136 public repos, account ~14 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 136
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 14
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/rohanthewiz/bytdb",
                "github.com/rohanthewiz/bytdb/pgwire"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "5 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 52,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 30,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "topics": [
                "database",
                "memory-db",
                "postgres",
                "redis"
              ],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "4 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "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": "critical",
        "name": "Security",
        "value": 25,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 25,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 12,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 6,
              "scorecard_aggregate": 2.5
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 fuzzed",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file not detected",
                "points": 0,
                "status": "missed",
                "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 not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "4 existing vulnerabilities detected",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 1
            },
            "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": 63,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.59,
              "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": "59 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 31.5,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 59,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 73,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 1,
              "toolchain_manifests": [
                "bench/go.mod",
                "go.mod",
                "pgwire/go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "bench/go.mod, go.mod, pgwire/go.mod (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "bench/go.mod, go.mod, pgwire/go.mod"
                    }
                  }
                ],
                "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": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "100 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 99211,
              "source_files_sampled": 165,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/165 source files over 60KB",
                "points": 54.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 165,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "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",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T21:42:54.864535Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/rohanthewiz/bytdb.svg",
  "full_name": "rohanthewiz/bytdb",
  "license_state": "absent",
  "license_spdx": null
}

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

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

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