Öffentliches Register
Software-GesundheitsberichtSchema 0.26.0 · Metriken 1.13.0 · 2026-07-22 11:29 UTC

keystone-db / keystonedb

Single-file, embedded, DynamoDB-style database written in Rust

RustKeine Lizenz erkannt★ 0 Sterne⑂ 0 Forksseit Okt. 2025Auf GitHub ansehen ↗

keystone-db/keystonedb erreicht einen Gesundheitsindex von 42 von 100 und liegt damit im Bereich Gefährdet. Am stärksten schneidet es bei AI Readiness (79/100) ab, am schwächsten bei Community & Adoption (16/100). Zuletzt vor 206 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

42
gesamt / 100
Gefährdet

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

42
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

keystone-dbOrganisation
0 Follower2 öffentliche Reposseit Okt. 2025

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
crates.iokstone-api0.1.031vor 290 Tagendatabasedynamodbembeddedkey-valuenosqldatabase-implementations
crates.iokstone-core0.1.0291vor 290 Tagendatabasedynamodbembeddedkey-valuenosqldatabase-implementations
crates.iokstone-proto0.1.0151vor 290 Tagendatabasedynamodbembeddedkey-valuenosqldatabase-implementations

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

36Gefährdet · 22 % des Gesamtindex
Wie die Bewertung erfolgt
3.6/36Push-Aktualität — letzter Push vor 206 Tagen
1.4/36Commit-Rhythmus — 2/52 Wochen mit Commits
17.8/18Commit-Volumen — 96 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Verwendete Eingangsdaten
commits_last_year96
human_commit_share1
days_since_last_push206
active_weeks_last_year2
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 1 Releases veröffentlicht
16.2/36Release-Aktualität — letztes Release vor 290 Tagen
12.6/27Release-Rhythmus — Rhythmus unbekannt (nur ein Release)
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count1
latest_release_tagv0.1.0
releases_from_tagsnein
days_since_latest_release290
mean_days_between_releases

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

16Kritisch · 18 % des Gesamtindex
Wie die Bewertung erfolgt
0/60Stars — 0 Stars
0/25Forks — 0 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
0/22.5Lizenz — keine Lizenzdatei erkannt
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licensenein
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
22.4/80Downloads pro Monat — 47 Downloads/Monat über crates
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packageskstone-api, kstone-core, kstone-proto
dependents
ecosystemscrates
total_downloads1.272
monthly_downloads47
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

49Gefährdet · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
8.4/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 62 % der Commits
2.7/13.5Breite der Beitragenden — 2 Beitragende
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Verwendete Eingangsdaten
bus_factor1
contributors_sampled2
top_contributor_share0,625
Wie die Bewertung erfolgt
0/46.8Issue-Lösungsquote — keine Issues oder keine Daten
38.2/38.3PR-Annahme — 6/6 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/2 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs6
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Issue-Lösungsquote. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
0/25Reichweite des Inhabers — 0 Follower von keystone-db
5.1/25Kontohistorie — 2 öffentliche Repos, Kontoalter ca. 0 Jahre
Verwendete Eingangsdaten
followers0
owner_typeOrganization
is_verified
owner_loginkeystone-db
public_repos2
account_age_days291
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 3 Paket(e) auf crates
26/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 290 Tagen
4/20Versionshistorie — 1 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packageskstone-api, kstone-core, kstone-proto
ecosystemscrates
any_deprecatednein
min_days_since_publish290

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

65Mittel · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 2 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 2 merged PRs checked by a CI test -- score normalized to 0
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein

Dokumentation

90Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://keystonedb.dev
10/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepagehttps://keystonedb.dev
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

38Gefährdet · 16 % des Gesamtindex

Sicherheitslage

25Kritisch
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — keine Daten
0/2.5CI-Tests — 0 out of 2 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/2 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
5/5Fuzzing — project is fuzzed
0/2.5Lizenz — license file not detected
0/7.5Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
0/5Packaging — keine Daten
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 75 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate2,5
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): branch_protection, packaging. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
19/25Indirekte Abhängigkeiten ohne bekannte Advisories — 1 betroffen: bincode 1.3.3 (unknown)
37.2/40Keine offenen Advisories — 1 Paket(e) mit Advisory seit über 90 Tagen unbehandelt; ältestes vor 217 Tagen veröffentlicht
Verwendete Eingangsdaten
sourceosv
advisories1
affected_packages1
assessed_packages72
unassessed_packages0
affected_by_severityunknown 1
direct_affected_packages0
Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von crates:kstone-api@0.1.0 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 72 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

79Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 95 von 96 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,99
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes77.600
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — Cargo.toml, bindings/nodejs/Cargo.toml, bindings/python/Cargo.toml (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — website/tsconfig.json
10/10Reproduzierbare Umgebung — Dockerfile, lockfile
10/10Belegte Agentenpraxis — 48 der letzten 96 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilesCargo.lock, package-lock.json
has_dockerfileja
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configswebsite/tsconfig.json
agent_commit_share0,5
toolchain_manifestsCargo.toml, bindings/nodejs/Cargo.toml, bindings/python/Cargo.toml, c-ffi/Cargo.toml, examples/blog-engine/Cargo.toml, examples/cache-server/Cargo.toml, examples/s3-backup/Cargo.toml, examples/todo-api/Cargo.toml, examples/url-shortener/Cargo.toml, fuzz/Cargo.toml, kstone-api/Cargo.toml, kstone-cli/Cargo.toml, kstone-client/Cargo.toml, kstone-core/Cargo.toml, kstone-proto/Cargo.toml, kstone-server/Cargo.toml, kstone-sync/Cargo.toml, kstone-tests/Cargo.toml
dependency_bot_commit_share0
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Rust (statisch typisiert)
53.3/55Handhabbare Dateigrößen — 4/130 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageRust
largest_source_bytes74.718
source_files_sampled130
oversized_source_files4
Wie die Bewertung erfolgt
40/40API-Schema (OpenAPI/GraphQL/proto) — kstone-proto/proto/keystone.proto
0/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalnein
api_schema_fileskstone-proto/proto/keystone.proto

Eckdaten

0GitHub-Sterne
2Mitwirkende
96Commits, letzte 12 Monate
206Tage seit letztem Push
1Releases
1Bus-Faktor
0offene Issues
crates.io, npmPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Could not fetch crates package 'kstone-ffi' from its registry
  • Could not fetch npm package 'keystonedb-website' from its registry
  • Could not fetch crates package 'kstone-cli' from its registry
  • Could not fetch crates package 'kstone-sync' from its registry
  • Could not fetch crates package 'kstone-tests' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Weitere Details

OpenSSF Scorecard 2.5 / 10
2.5Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-22 11:29 UTC

10Binary-Artifactsno binaries found in the repo
k. A.Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
0CI-Tests0 out of 2 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/2 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
10Fuzzingproject is fuzzed
0Licenselicense file not detected
0Maintained0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
k. A.Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities75 existing vulnerabilities detected
Direkte Abhängigkeiten 118
RegistryPaketVersionsvorgabeManifest
crates.iokstone-apic-ffi/Cargo.toml
crates.ioserde_jsonc-ffi/Cargo.toml
crates.iobase64c-ffi/Cargo.toml
crates.ioparking_lotc-ffi/Cargo.toml
crates.iokstone-core0.1.0kstone-api/Cargo.toml
crates.ioanyhowkstone-api/Cargo.toml
crates.iothiserrorkstone-api/Cargo.toml
crates.iobyteskstone-api/Cargo.toml
crates.ioserdekstone-api/Cargo.toml
crates.ioserde_jsonkstone-api/Cargo.toml
crates.iokstone-api0.1.0kstone-cli/Cargo.toml
crates.iokstone-core0.1.0kstone-cli/Cargo.toml
crates.iokstone-sync0.1.0kstone-cli/Cargo.toml
crates.ioanyhowkstone-cli/Cargo.toml
crates.ioclapkstone-cli/Cargo.toml
crates.iocomfy-tablekstone-cli/Cargo.toml
crates.iotracingkstone-cli/Cargo.toml
crates.iotracing-subscriberkstone-cli/Cargo.toml
crates.ioserde_jsonkstone-cli/Cargo.toml
crates.ioserdekstone-cli/Cargo.toml
crates.iorustyline14.0kstone-cli/Cargo.toml
crates.iocolored2.0kstone-cli/Cargo.toml
crates.iodirs5.0kstone-cli/Cargo.toml
crates.iotokiokstone-cli/Cargo.toml
crates.ioaxum0.7kstone-cli/Cargo.toml
crates.iotower0.4kstone-cli/Cargo.toml
crates.iotower-http0.5kstone-cli/Cargo.toml
crates.iorust-embed8.0kstone-cli/Cargo.toml
crates.iouuid1.6kstone-cli/Cargo.toml
crates.iochrono0.4kstone-cli/Cargo.toml
crates.iobase640.22kstone-cli/Cargo.toml
crates.iofutures0.3kstone-cli/Cargo.toml
crates.iokstone-proto0.1.0kstone-client/Cargo.toml
crates.iokstone-core0.1.0kstone-client/Cargo.toml
crates.iotonickstone-client/Cargo.toml
crates.ioprostkstone-client/Cargo.toml
crates.iotokiokstone-client/Cargo.toml
crates.ioanyhowkstone-client/Cargo.toml
crates.iothiserrorkstone-client/Cargo.toml
crates.iobyteskstone-client/Cargo.toml
crates.ioanyhowkstone-core/Cargo.toml
crates.iothiserrorkstone-core/Cargo.toml
crates.iobyteskstone-core/Cargo.toml
crates.ioparking_lotkstone-core/Cargo.toml
crates.iocrossbeamkstone-core/Cargo.toml
crates.iotracingkstone-core/Cargo.toml
crates.ioserdekstone-core/Cargo.toml
crates.ioserde_jsonkstone-core/Cargo.toml
crates.iobincodekstone-core/Cargo.toml
crates.iocrc32fastkstone-core/Cargo.toml
crates.iocrc32ckstone-core/Cargo.toml
crates.ioaes-gcmkstone-core/Cargo.toml
crates.iogetrandomkstone-core/Cargo.toml
crates.iomemmap20.9kstone-core/Cargo.toml
crates.iosqlparserkstone-core/Cargo.toml
crates.iobase64kstone-core/Cargo.toml
crates.iozstdkstone-core/Cargo.toml
crates.ioregexkstone-core/Cargo.toml
crates.ioprost0.13kstone-proto/Cargo.toml
crates.iotonic0.12kstone-proto/Cargo.toml
crates.iobyteskstone-proto/Cargo.toml
crates.ioserdekstone-proto/Cargo.toml
crates.ioserde_jsonkstone-proto/Cargo.toml
crates.iokstone-api0.1.0kstone-server/Cargo.toml
crates.iokstone-core0.1.0kstone-server/Cargo.toml
crates.iokstone-proto0.1.0kstone-server/Cargo.toml
crates.iotonickstone-server/Cargo.toml
crates.ioprostkstone-server/Cargo.toml
crates.iotokiokstone-server/Cargo.toml
crates.ioanyhowkstone-server/Cargo.toml
crates.iothiserrorkstone-server/Cargo.toml
crates.iotracingkstone-server/Cargo.toml
crates.iotracing-subscriberkstone-server/Cargo.toml
crates.ioclapkstone-server/Cargo.toml
crates.ioserdekstone-server/Cargo.toml
crates.ioserde_jsonkstone-server/Cargo.toml
crates.iobyteskstone-server/Cargo.toml
crates.iofutures0.3kstone-server/Cargo.toml
crates.ioprometheuskstone-server/Cargo.toml
crates.iolazy_statickstone-server/Cargo.toml
crates.ioonce_cellkstone-server/Cargo.toml
crates.ioaxumkstone-server/Cargo.toml
crates.iouuid1.0kstone-server/Cargo.toml
crates.iogovernorkstone-server/Cargo.toml
crates.iosubtle2.6kstone-server/Cargo.toml
crates.iokstone-core0.1.0kstone-sync/Cargo.toml
crates.iokstone-api0.1.0kstone-sync/Cargo.toml
crates.ioanyhowkstone-sync/Cargo.toml
crates.iobyteskstone-sync/Cargo.toml
crates.ioserdekstone-sync/Cargo.toml
crates.ioserde_jsonkstone-sync/Cargo.toml
crates.iotracingkstone-sync/Cargo.toml
crates.ioparking_lotkstone-sync/Cargo.toml
crates.iouuid1.18kstone-sync/Cargo.toml
crates.iochrono0.4kstone-sync/Cargo.toml
crates.iotokiokstone-sync/Cargo.toml
crates.ioasync-trait0.1kstone-sync/Cargo.toml
crates.ioaws-config1.5kstone-sync/Cargo.toml
crates.ioaws-sdk-dynamodb1.60kstone-sync/Cargo.toml
crates.ioaws-sdk-s31.60kstone-sync/Cargo.toml
crates.ioreqwest0.11kstone-sync/Cargo.toml
crates.iozstd0.13kstone-sync/Cargo.toml
crates.iosha20.10kstone-sync/Cargo.toml
crates.iohmac0.12kstone-sync/Cargo.toml
crates.iokstone-apikstone-tests/Cargo.toml
crates.iokstone-corekstone-tests/Cargo.toml
crates.iokstone-synckstone-tests/Cargo.toml
crates.iotempfilekstone-tests/Cargo.toml
crates.ioanyhowkstone-tests/Cargo.toml
crates.iotokiokstone-tests/Cargo.toml
npm@astrojs/react^3.6.2website/package.json
npm@astrojs/tailwind^5.1.0website/package.json
npmastro^4.15.0website/package.json
npmreact^18.3.1website/package.json
npmreact-dom^18.3.1website/package.json
npmtailwindcss^3.4.10website/package.json
npmlucide-react^0.436.0website/package.json
npmshiki^1.16.2website/package.json
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Abhängigkeits-Advisories 1

Die Installation von crates:kstone-api@0.1.0 zieht 72 Pakete nach sich, direkt und transitiv: 1 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
bincode1.3.3indirektunbekannt1

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 1274,
      "has_wiki": true,
      "homepage": "https://keystonedb.dev",
      "languages": {
        "C": 19186,
        "CSS": 2475,
        "Ruby": 3935,
        "Rust": 1339468,
        "Astro": 110166,
        "Shell": 24914,
        "Python": 9194,
        "Dockerfile": 1731,
        "JavaScript": 10023,
        "TypeScript": 1315
      },
      "pushed_at": "2025-12-27T22:00:17Z",
      "created_at": "2025-10-04T02:45:43Z",
      "owner_type": "Organization",
      "updated_at": "2025-12-27T22:00:23Z",
      "description": "Single-file, embedded, DynamoDB-style database written in Rust",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "develop",
      "license_spdx_raw": null,
      "primary_language": "Rust",
      "significant_languages": [
        "Rust"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "Organization",
      "login": "keystone-db",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/235991624?v=4",
      "created_at": "2025-10-04T02:44:31Z",
      "is_verified": null,
      "public_repos": 2,
      "account_age_days": 291
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2025-10-04T16:29:18Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "d4495bba87d08e3132c2dafa90dee12c403df005",
          "body": "…ck-1nnSi",
          "is_bot": false,
          "headline": "Merge pull request #8 from keystone-db/claude/code-review-release-che…",
          "author_name": "Parker (Gabel) Lackey",
          "author_login": "parkerdgabel",
          "committed_at": "2025-12-27T22:00:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9233de7783cae3af97b6f0b0d9d979bcfa9a8b74",
          "body": "Add #[non_exhaustive] attribute to:\n- AttributeType (validation.rs)\n- ValueConstraint (validation.rs)\n- TransactWriteOperation (lsm.rs)\n\nThis allows adding new variants without breaking semver.",
          "is_bot": false,
          "headline": "api: Add #[non_exhaustive] to remaining public enums",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T21:27:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "19dec849d082f7a13981a8ffbbd2548ea6dc3e99",
          "body": "Fixed Regular Expression Denial of Service (ReDoS) vulnerability in\nschema validation pattern matching. Previously, user-supplied regex\npatterns were compiled and executed without any limits, which could\nlead to catastrophic backtracking and DoS attacks.\n\nChanges:\n- Added input length limit (10,000 \n[…]\nrotection\n\nAlso fixed compilation errors in extent.rs and layout.rs where Result\ntypes were not being unwrapped in tests.\n\nAffected file: kstone-core/src/validation.rs\nTest coverage: 3 new tests added",
          "is_bot": false,
          "headline": "security: Fix ReDoS vulnerability in regex patterns",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T20:44:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a58be594b9d818ea3a1b232748edf075c91a025c",
          "body": null,
          "is_bot": false,
          "headline": "fix: Handle metrics initialization failures gracefully",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T20:42:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57395bec465ececb600827f0a12adc43b4c78a62",
          "body": null,
          "is_bot": false,
          "headline": "fix: Remove panic-inducing unwrap calls from C-FFI",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T20:40:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41853e7c7098dfe1cf407eec2c9128d50a6da133",
          "body": null,
          "is_bot": false,
          "headline": "api: Add #[non_exhaustive] to public enums for stability",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T20:40:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "749fc4d107f912879343267877ec76234e48c162",
          "body": "Fixed critical security vulnerability in FilesystemProtocol::new() that\nallowed path traversal attacks by accepting arbitrary paths without\nvalidation.\n\nChanges:\n- Added path component validation to reject paths containing '..'\n- Changed FilesystemProtocol::new() to return Result for error handling\n\n[…]\n with 4 cases\n- All existing tests updated and passing (31/31 unit tests)\n- Validates rejection of '../' prefix and mid-path '../' components\n- Confirms acceptance of valid absolute and relative paths",
          "is_bot": false,
          "headline": "security: Add path traversal validation to filesystem sync",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T20:17:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2e22c68975f59b5b51f5e01aeb7140fab13eb625",
          "body": "- Line 180: Replace double unwrap on file path operations with proper error handling\n- Line 275: Replace unwrap on S3 key split with error propagation\n- Line 316: Replace unwrap on snapshot prefix parsing with error handling\n- Line 473: Replace unwrap on S3 key split in get_remote_files with error handling\n\nAll unwrap calls in non-test code now return descriptive errors using anyhow::anyhow!",
          "is_bot": false,
          "headline": "fix: Replace unwrap calls with proper error handling in S3 protocol",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T20:16:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "414b394500a69bec62cc40d941561e24132691c6",
          "body": null,
          "is_bot": false,
          "headline": "security: Add expression depth limit to prevent DoS",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T20:16:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "045c4739d5792f8d3f88c7ba21680bd32957af05",
          "body": null,
          "is_bot": false,
          "headline": "fix: Add bounds check to PartiQL JSON parser",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T20:15:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "653d50baf9c7b59cadef15f8ab6f76ca01611399",
          "body": null,
          "is_bot": false,
          "headline": "fix: Add size limits to C-FFI to prevent unbounded allocation",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T20:02:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "317327f1469a6444c679dd6025b77fb9769e0a8b",
          "body": null,
          "is_bot": false,
          "headline": "security: Use constant-time comparison for API key validation",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T19:59:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25ad799c59605efee61e6d1dd6e921784e8735e4",
          "body": "Implement DynamoDB-compatible batch size limits (max 100 items) across\nall batch and transaction operations to prevent memory exhaustion attacks.\n\nChanges:\n- Add MAX_BATCH_SIZE constant (100 items) matching DynamoDB limits\n- Server layer (kstone-server):\n  - Validate batch_get requests (max 100 keys\n[…]\ntests:\n  - test_batch_get_exceeds_limit\n  - test_batch_write_exceeds_limit\n  - test_transact_get_exceeds_limit\n  - test_transact_write_exceeds_limit\n\nAll tests pass. No breaking changes to public API.",
          "is_bot": false,
          "headline": "feat: Add batch size limits to prevent DoS attacks",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T19:40:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0448df2e9d224b35210aa822716694103341b213",
          "body": "…client\n\nReplace all .expect() calls that could panic on malformed server responses\nwith proper error handling using the ? operator and appropriate ClientError\nvariants.\n\nChanges:\n- query.rs: Convert proto_item_to_ks errors to ClientError\n- update.rs: Handle missing item response with InternalError\n\n[…]\nems\n\nAll execute methods now use generic type parameters to support both\nplain Channel and InterceptedService<Channel, AuthInterceptor> types.\n\nAll tests pass. No panics on malformed server responses.",
          "is_bot": false,
          "headline": "fix: Replace .expect() calls with proper error propagation in kstone-…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T19:39:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e701f0e35cea53033e6b4d615de2da0bdbe8054f",
          "body": "Remove eprintln! debug statements from production code in kstone-sync\nand replace with proper structured tracing:\n\n- sync_engine.rs: Convert discovered changes logging to tracing::debug!\n  with structured fields (total_changes, pk, diff_type)\n- protocol/filesystem.rs: Convert database record logging\n[…]\node changes\n- Structured logging enables better filtering and analysis\n- No performance impact when tracing is disabled\n- Follows Rust logging best practices\n\nAll tests passing. No functional changes.",
          "is_bot": false,
          "headline": "refactor: Replace debug print statements with tracing in sync engine",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T19:35:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6174c9a312ed6077856723386e9a6315b3decc08",
          "body": "- Fixed test_vector_clock_resolution: Set up clocks so local definitively\n  \"happens after\" remote (local has remote=4 while remote has remote=3)\n- Fixed test_retry_backoff: Reduced initial_backoff_ms from 100 to 50\n  so that after first failure (backoff = 50 * 2^1 = 100ms), the 150ms\n  sleep is sufficient",
          "is_bot": false,
          "headline": "fix: Correct sync test assertions for vector clock and retry backoff",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T19:18:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51b494bfbb21fad27320284e053fbce88c8e4c67",
          "body": "Add 25 unit tests covering all major shell functionality:\n\n- Autocomplete tests (5 tests):\n  * Meta-command completion (.help, .exit, .format, etc.)\n  * PartiQL keyword completion (SELECT, FROM, WHERE, etc.)\n  * Full completer integration with rustyline context\n  * Multiple match handling (INSERT, I\n[…]\nts use in-memory database to avoid disk I/O.\nTests focus on unit testing internal logic without testing\nrustyline functionality directly.\n\nTest results: 31/31 passing (25 new + 6 existing table tests)",
          "is_bot": false,
          "headline": "test: Add comprehensive unit tests for interactive shell (kstone-cli)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T18:51:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4403c21cc53b0eabb707690e66d79ceb3f329786",
          "body": "Add thorough testing and documentation for the TLS/mTLS functionality\nthat was implemented in the gRPC server.\n\nChanges:\n\n1. TLS Configuration Tests (kstone-server/tests/tls_config_test.rs):\n   - 10 comprehensive unit tests validating TLS configuration logic\n   - Tests for missing certificates, inva\n[…]\nty + 10 TLS)\n- TLS configuration properly validates certificate requirements\n- Server maintains backward compatibility (works without TLS)\n\nNote: Core TLS implementation was included in commit 499b512",
          "is_bot": false,
          "headline": "test: Add comprehensive TLS/mTLS tests and setup documentation",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T18:48:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "499b5120c71076e1db0f0e7900863a75d8f01107",
          "body": "This commit fixes critical startup panic issues that could crash the\nserver during initialization, improving reliability and user experience.\n\nChanges:\n\n1. Signal Handler Registration (kstone-server/src/bin/kstone-server.rs):\n   - Replaced expect() calls with proper error handling in shutdown_signal\n[…]\nility - no API changes\n\nTesting:\n- All existing tests pass (47 tests in kstone-server)\n- Server builds successfully with new error handling\n- Signal handlers tested on both Unix and non-Unix platforms",
          "is_bot": false,
          "headline": "fix: Eliminate startup panics in server initialization",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T18:46:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "565baa973f83541ad18aa19ca4a63d82c49a9199",
          "body": "Fixed several API discrepancies in the README:\n\n1. Removed non-existent `put_if_not_exists()` method\n   - Replaced with correct `put_conditional()` API\n\n2. Fixed incorrect `update()` method signature\n   - Changed from `db.update(pk, expression, condition)`\n   - To correct builder pattern: `Update::n\n[…]\n`ExpressionContext` from kstone_core\n\n4. Fixed Rust client example imports\n   - Added missing `HashMap` and `Value` imports\n\nAll examples now compile correctly and match the actual API implementation.",
          "is_bot": false,
          "headline": "docs: Fix outdated API examples in README.md",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T18:45:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "146b1398d287bfcf9db37c31b8639a494a9440cb",
          "body": "…ation\n\nAdded 25 unit tests to kstone-server/src/service.rs covering:\n\n**Basic CRUD Operations (6 tests):**\n- test_put_and_get_basic - Verify basic put/get roundtrip\n- test_put_and_get_with_sort_key - Test composite key operations\n- test_get_not_found - Verify proper handling of missing items\n- test\n[…]\nem construction\n- Uses tempfile for temporary test databases\n- Unlimited RateLimiter (0, 0) for test environment\n- Tests are fast and independent\n\nAll tests pass successfully (47 total library tests).",
          "is_bot": false,
          "headline": "test: Add comprehensive unit tests for KeystoneService gRPC implement…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T18:45:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f8b915fa0711b732dd5d3fe411d9cfecd9e78975",
          "body": "- Add add_operation() method to TransactWriteRequest for direct operation addition\n- Update kstone-server transact_write to use add_operation() builder method\n- Add wildcard pattern for non-exhaustive ExecuteStatementResponse in server",
          "is_bot": false,
          "headline": "fix: Fix remaining build issues from API stability changes",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T18:26:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7084d82a76ce4f507520a0421d0c0a1fdc494ce",
          "body": "- Changed workspace tokio from features=[\"full\"] to specific features needed:\n  [\"rt-multi-thread\", \"macros\", \"sync\", \"time\", \"io-util\", \"fs\"]\n- Changed kstone-sync default features from [\"dynamodb\", \"s3-sync\", \"compression\"]\n  to [\"compression\"] - AWS dependencies now opt-in via features\n- Updated \n[…]\nes compile times and binary size by avoiding unnecessary\nfeature compilation. AWS SDK dependencies (aws-config, aws-sdk-dynamodb, aws-sdk-s3)\nare now only compiled when explicitly needed via features.",
          "is_bot": false,
          "headline": "chore: Reduce dependency bloat with targeted features",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T18:18:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "026a370d5053108b00c4cd85ff280d40917eb709",
          "body": "API stability improvements:\n- Add #[non_exhaustive] to ExecuteStatementResponse and ClientError enums\n  to allow adding variants without breaking changes\n- Add #[derive(Debug, Clone)] to Query, Scan, Update, and ExecuteStatementRequest\n  builder types for better ergonomics\n- Make request builder fie\n[…]\nmit includes the core API changes. Follow-up commits will fix\ncompilation errors in kstone-server and kstone-cli that need to be updated\nto use the new builder pattern and handle non-exhaustive enums.",
          "is_bot": false,
          "headline": "fix: Improve API stability with non_exhaustive and private fields",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T18:17:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35bf1e13e2860b26634d3a28138d777b24103b48",
          "body": null,
          "is_bot": false,
          "headline": "fix: Replace unwraps with proper error handling in C-FFI",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T18:14:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50032b12234f6f08f623bfcf92799ebd265e318d",
          "body": null,
          "is_bot": false,
          "headline": "docs: Fix outdated API examples and add error module documentation",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T18:07:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f62c6a5fc801846386ed3055cc53fe0d6d79ce5a",
          "body": "- Add wildcard patterns to Value enum matches in kstone-cli (main.rs, table.rs)\n  to handle #[non_exhaustive] attribute added to Value enum\n- Add wildcard pattern to Value match in kstone-client/convert.rs\n- Update KeystoneService::new() calls in tests to include rate_limiter parameter\n  (observability_test.rs, integration_test.rs)\n- These changes fix build failures caused by the API stability improvements\n  added in the previous commit",
          "is_bot": false,
          "headline": "fix: Fix cascading build issues from API stability changes",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T17:46:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b5a576900695f625a241f7ef6feb9afc49998ec1",
          "body": "Security fixes:\n- Fix AES-GCM nonce reuse vulnerability (block.rs): Generate random 12-byte\n  nonce per encryption using getrandom, prepend to ciphertext for extraction\n  during decryption. This prevents potential plaintext recovery attacks.\n\n- Fix JSON quote injection in PartiQL parser (parser.rs):\n[…]\n generation.\n\n- Add protoc-bin-vendored for build portability.\n\n- Add notebook.rs stub module for CLI build compatibility.\n\n- Fix test compilation errors in kstone-sync (HashMap import, Arc wrapping).",
          "is_bot": false,
          "headline": "fix: Address critical security and quality issues for release readiness",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T16:51:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b63b547eba92127d39749993e67b078262300103",
          "body": "- Fix unused `last_error` warning in retry.rs by restructuring the code\n  to avoid intermediate Option value that was never read\n- Fix unused `schema` field warning in memory_lsm.rs with #[allow(dead_code)]\n  annotation (reserved for future feature parity)\n- Update README.md with proper MIT/Apache-2\n[…]\n the codebase for public release by:\n1. Eliminating compiler warnings\n2. Improving documentation clarity\n3. Providing accurate database statistics\n4. Setting clear expectations for current limitations",
          "is_bot": false,
          "headline": "fix: Address release readiness issues",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T16:06:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b7e0ee5fe0fef7b766873c9592cbc2357864af65",
          "body": "…-6vkOO",
          "is_bot": false,
          "headline": "Merge pull request #6 from keystone-db/claude/update-keystone-db-book…",
          "author_name": "Parker (Gabel) Lackey",
          "author_login": "parkerdgabel",
          "committed_at": "2025-12-27T04:35:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5536659a6edebf9bbba6c39d3b32432580b5c3d8",
          "body": "Major updates to bring the book up to date with completed features:\n\n- Update Chapter 41 (Roadmap): Mark Phase 8 Cloud Sync as COMPLETE,\n  mark Language Bindings as COMPLETE, update future roadmap to\n  phases 9-13\n\n- Add Chapter 42 (Cloud Synchronization): Comprehensive documentation\n  for kstone-sy\n[…]\n (napi-rs), and C-FFI bindings with API references,\n  usage examples, and compatibility matrix\n\n- Update book README and SUMMARY with new chapters, corrected\n  statistics (43 chapters, ~140,000 words)",
          "is_bot": false,
          "headline": "docs: Update KeystoneDB book with Cloud Sync and Language Bindings",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T04:34:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "194b9d7d3b0b4729b4cf8baa65c2ad50abc45a28",
          "body": "…cwzT",
          "is_bot": false,
          "headline": "Merge pull request #5 from keystone-db/claude/prepare-release-cycle-T…",
          "author_name": "Parker (Gabel) Lackey",
          "author_login": "parkerdgabel",
          "committed_at": "2025-12-27T03:16:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85326b7e04395368f4e768ca47a00b97bbb00d34",
          "body": "- Add CHANGELOG.md following Keep a Changelog format\n- Update release workflow to publish Python (PyPI) and Node.js (npm) bindings\n- Create binding release script (scripts/release-bindings.sh)\n- Add CI workflow with tests for Rust, Python, and Node.js bindings\n- Update release.sh to sync version num\n[…]\nt crates publication to crates.io\n- Python wheel builds and PyPI publication\n- Node.js native module builds and npm publication\n- Docker image builds for CLI and server\n- Post-release verification job",
          "is_bot": false,
          "headline": "feat: Add comprehensive release cycle for core project and bindings",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T03:12:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "63bb863e294bf3506222957467ee15de285810bd",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #4 from keystone-db/claude/brainstorm-features-sEKyn",
          "author_name": "Parker (Gabel) Lackey",
          "author_login": "parkerdgabel",
          "committed_at": "2025-12-27T02:56:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8faa1c3b6b3abca15c0e82362d1e389f88696efc",
          "body": "Implements complete language bindings to make KeystoneDB accessible from\nmultiple programming languages:\n\nC-FFI (c-ffi/):\n- Expand from 4 stub functions to complete API coverage (~1700 lines)\n- Add opaque handles for Database, Item, Query, Scan, BatchGet, BatchWrite\n- Implement all CRUD operations w\n[…]\npport\n- TypeScript definitions (.d.ts)\n- Mocha test suite\n\nDocumentation:\n- README for bindings overview\n- Detailed README for each binding with examples\n- API compatibility table across all languages",
          "is_bot": false,
          "headline": "feat: Add comprehensive language bindings for Python and Node.js",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T02:33:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "99c9161cf860f41faede55a618c08d6cdc3d2000",
          "body": "…ents-rCbcr",
          "is_bot": false,
          "headline": "Merge pull request #3 from keystone-db/claude/website-review-improvem…",
          "author_name": "Parker (Gabel) Lackey",
          "author_login": "parkerdgabel",
          "committed_at": "2025-12-27T01:49:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a38c04c120a21df9cd1943970641a18bdf1ae7b",
          "body": "- Fix GitHub URLs (keystonedb -> keystone-db)\n- Fix hero code examples to match actual API\n- Replace \"Zero dependencies\" with \"Single file storage\"\n- Update quick install command to cargo add kstone-api\n- Add Cloud Sync to homepage features\n- Update comparison table with Cloud Sync row\n- Create missing pages: /changelog, /license, /privacy\n- Update roadmap to reflect Phase 0-8 complete\n- Add all 41 chapters + 5 appendices to docs page\n- Enhance SEO meta tags (canonical, keywords, robots)",
          "is_bot": false,
          "headline": "fix: Comprehensive website improvements",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T01:48:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92963644ee51c15638d5817a603f6cb93ee42178",
          "body": "…n-MRCrG",
          "is_bot": false,
          "headline": "Merge pull request #2 from keystone-db/claude/add-claude-documentatio…",
          "author_name": "Parker (Gabel) Lackey",
          "author_login": "parkerdgabel",
          "committed_at": "2025-12-27T01:20:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f93254ce8113b83221ec0e15b374334ea5f7f17",
          "body": "- Create docs/API.md with complete API reference\n  - All database operations (put, get, delete, update)\n  - Query and Scan APIs with all options\n  - Batch and transaction operations\n  - Index configuration (LSI/GSI)\n  - Streams (CDC) configuration\n  - Configuration options\n  - Error types and handli\n[…]\ndd cloud sync example\n  - Expand testing section with all test types\n  - Add code coverage and fuzz testing commands\n  - Add link to API reference and book\n  - Add language bindings documentation link",
          "is_bot": false,
          "headline": "docs: Create comprehensive documentation updates",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T01:08:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7dba8bf6debcc0db9145dbc72b482fb6c3fbc699",
          "body": "- Add snapshot testing with insta (15 tests)\n  - Error message snapshots\n  - Database stats snapshots\n  - Item structure snapshots\n  - Query/scan response snapshots\n  - Key encoding and value type snapshots\n  - Batch operation snapshots\n\n- Add code coverage configuration\n  - .tarpaulin.toml with mul\n[…]\narser, key_encoding,\n    value_serialization, partiql\n  - scripts/fuzz.sh for running fuzz tests\n  - Separate fuzz workspace to avoid nightly-only issues\n\n- Update CLAUDE.md with testing documentation",
          "is_bot": false,
          "headline": "test: Add comprehensive test infrastructure improvements",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T01:03:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cddbeae2bf4057462fad16c860b7c1d869bea5f6",
          "body": "- Add property-based tests using proptest (18 tests)\n  - Put/get roundtrip for strings and numbers\n  - Delete/overwrite invariants\n  - Persistence and recovery verification\n  - Sort key independence\n  - Bulk operations consistency\n  - Edge cases (binary keys, unicode, large values)\n\n- Add chaos/faul\n[…]\nility check\n  - Flush under concurrent load\n\n- Create c-ffi crate stub for workspace compatibility\n- Update CLAUDE.md with comprehensive test documentation\n- Add proptest and rand to test dependencies",
          "is_bot": false,
          "headline": "test: Add comprehensive test suite improvements",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T00:46:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2247ce9d09b6c926f64b85be25d5b23f10a1b40f",
          "body": "- Update project overview to reflect all phases (0-8) complete\n- Add workspace structure with 9 crates (added kstone-sync, c-ffi)\n- Document example applications (url-shortener, cache-server, todo-api, blog-engine)\n- Add advanced modules section (config, compaction, validation, retry, partiql)\n- Mar\n[…]\ncompression, schema validation, retry policies\n- Document server rate limiting functionality\n- Update testing section with new test suites and benchmarks\n- Add S3 and filesystem sync protocol examples",
          "is_bot": false,
          "headline": "docs: Comprehensive update to CLAUDE.md for current codebase state",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2025-12-27T00:18:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a49c2cfc6645681ae4c67b2363ec9dc8c45ad4d0",
          "body": "Comprehensive documentation update covering:\n\n1. Language Bindings:\n   - Added language bindings section to README.md (Go, Python, JS)\n   - Added BINDINGS.md (876 lines) - comprehensive guide for all bindings\n   - Updated examples/README.md with binding examples section\n   - Referenced go-embedded a\n[…]\n/README.md: +54 lines (language binding examples)\n- book/part-05/chapter-23.md: +123 lines (performance tuning updates)\n\nTotal: ~1,159 lines added covering bindings, optimizations, and best practices.",
          "is_bot": false,
          "headline": "docs: Update documentation with Go/Python bindings and optimizations",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-06T18:29:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a677c92fd71a470fbdcd37f831f817575d5feae5",
          "body": null,
          "is_bot": false,
          "headline": "added basics",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-06T17:01:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80093763599a89ffce4892d285a0bdb8ed6e7f7a",
          "body": "Implements two major data features to improve storage efficiency and data integrity:\n\n1. Zstd Compression:\n   - Add configurable compression for SST files (levels 1-22, default 3)\n   - Integrate compression into LSM flush and compaction operations\n   - Typical 2-5x storage reduction for compressible\n[…]\n()\n\nBoth features are opt-in and do not affect existing databases without configuration.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add Zstd compression and schema validation",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-06T02:09:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bd8ea2f3f42ea8e73467731910470a1bee49dea2",
          "body": "- Add protobuf generated files to .gitignore (*.pb.go, *_pb2.py, *_grpc.pb.go)\n- Add JavaScript artifacts to .gitignore (node_modules/, dist/, build/)\n- Add Python artifacts to .gitignore (__pycache__/, *.pyc, *.pyo, *.egg-info/)\n- Add comprehensive logging and coverage file patterns\n\nGenerated file\n[…]\ntrol.\nThis prevents the repository from being bloated with thousands of generated files.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: Add generated files to .gitignore",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-05T18:39:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e00ac1cea5e9450f55b040a1ae0f62f6103df541",
          "body": "- Store database path in LsmEngine outside of RwLock for easy access\n- Update LsmEngine constructors (create, open) to store path field\n- Fix path() method to return actual path instead of None\n- Expose scan_with_keys method through Database API\n- Update sync code to use proper scan_with_keys instea\n[…]\n functionality\n\nThis enables full S3 sync functionality with proper merkle tree diffing.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: Address S3 sync limitations - expose path and scan_with_keys",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-05T16:50:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "502c42515823acba26e1b3da9abd994c26681e7f",
          "body": "- Add S3Protocol implementation with snapshot and incremental modes\n- Support for AWS S3, MinIO, Backblaze B2 and other S3-compatible stores\n- Multipart upload for large files (>5MB)\n- ETag-based change detection\n- Helper methods upload_to_s3() and restore_from_s3() in SyncEngine\n- Example applicati\n[…]\nwith_keys method (needs API enhancement)\n- Fixed type annotations in filesystem protocol\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add S3-compatible sync support for KeystoneDB",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-05T16:21:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4b38d638d2e68e27139cf3a6ae97e30469ab009d",
          "body": "- Fixed diff detection to use MerkleTree.diff() properly\n- Added local database reference to FilesystemProtocol\n- Fixed key-based database operations in transfer_changes\n- Added filtering to exclude sync metadata from scan results\n- Added sync() method to SyncEngine for endpoint-specific sync\n- Adde\n[…]\nodified items for conflict resolution\n- Transfers data bidirectionally between databases\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix bidirectional sync data transfer",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-05T15:53:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3ad4efc16fc0c0a75ebabf1a404d16595959cbb2",
          "body": "- Implement vector clocks for causality tracking in distributed sync\n- Add Merkle tree for efficient difference detection between databases\n- Build change tracker using KeystoneDB streams for CDC\n- Create comprehensive conflict detection and resolution system\n- Add sync metadata storage tables in Ke\n[…]\n)\n- Enable both one-time and continuous sync modes\n- Prepare infrastructure for future DynamoDB integration\n\nThis provides the foundation for KeystoneDB's cloud sync capabilities as a premium feature.",
          "is_bot": false,
          "headline": "feat: Add cloud sync functionality with kstone-sync crate",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-05T14:20:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f17de1d23b38f59653a2684cb12e9a87bd1e6e90",
          "body": "Add protoc installation step to the crates.io publish job.\nWithout this, kstone-proto fails to build during cargo publish.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix crates.io publish: Install protobuf compiler",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-04T16:26:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6a78baaa1369257ef6259cea2e128d71b49d4d46",
          "body": "All checksums now populated from GitHub release artifacts:\n- macOS binaries (Intel and Apple Silicon)\n- Linux x86_64 binaries\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Update Homebrew formulas with v0.1.0 SHA256 checksums",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-04T16:25:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "41148aad62d865f391ac60504b24840730a94a23",
          "body": "Remove Cargo.lock from .gitignore and commit it.\nFor binary crates, Cargo.lock should be tracked to ensure\nreproducible builds. This fixes Docker build failure.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add Cargo.lock for reproducible builds",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-04T16:14:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "95b3144f5100281eb0150ad8be53e5935b648d4f",
          "body": "Comment out musl and aarch64 Linux builds that require cross.\nThe cross Docker containers don't have protoc available.\nWill re-enable once we solve protoc availability in cross containers.\n\nFor v0.1.0 release, shipping:\n- Linux x86_64 (GNU libc)\n- macOS x86_64 (Intel)\n- macOS aarch64 (Apple Silicon)\n- Windows x86_64\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Temporarily disable cross-compiled Linux builds",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-04T16:09:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "dfc799de6ad3404c4815c6e1b2946d55a9e76930",
          "body": "Add protobuf compiler installation step for all platforms before building.\nThis fixes the build failure where kstone-server (which depends on kstone-proto)\ncould not find protoc.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix release workflow: Install protobuf compiler",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-04T15:58:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8b8fe54d53431f9f368a3a0aec08029385ea03e6",
          "body": "- Fix test_database_in_memory_query_works: Update test to verify that query works on in-memory databases instead of expecting it to fail (query is implemented)\n- Fix test_compaction_statistics: Use same PK for all keys to ensure they route to the same stripe, guaranteeing compaction triggers\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix failing tests before v0.1.0 release",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-04T15:42:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cba47b6aab061d8213463d168adc66607e8d4962",
          "body": "- Added package metadata to all publishable crates\n- Added descriptions, repository, homepage, keywords, categories\n- Updated internal dependencies with version constraints\n- Created publish-crates.sh script for manual publishing\n- Added automated crates.io publishing to GitHub Actions workflow\n- Publishes in dependency order: core -> proto -> api -> client",
          "is_bot": false,
          "headline": "Add crates.io publishing support",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-04T14:58:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5acd4b1eb7c4666b500de4448a249b33fc03c66",
          "body": "- Changed all Docker image references from keystonedb/* to parkerdgabel/*\n- Updated GitHub Actions workflow\n- Updated README.md installation instructions\n- Updated docker-compose.yml\n- Updated RELEASE.md documentation",
          "is_bot": false,
          "headline": "Update Docker Hub namespace to parkerdgabel",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-04T14:50:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9482cf1cfe10f9f04684625990c6b6843b56b3a2",
          "body": "- Complete DynamoDB-compatible API (Query, Scan, Batch, Transactions)\n- LSM storage engine with 256-stripe architecture\n- Indexes (LSI, GSI), TTL, and Streams support\n- PartiQL query language\n- Interactive CLI with REPL\n- gRPC server for remote access\n- Docker containers (CLI and server)\n- Homebrew formulas for macOS/Linux\n- Cross-platform release automation via GitHub Actions\n- Comprehensive documentation (124K+ words)",
          "is_bot": false,
          "headline": "Initial commit: KeystoneDB v0.1.0 with release infrastructure",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-04T02:47:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ff49dee9995982f66182860513b6ccefc8d3945",
          "body": "Implemented background compaction for the embedded LSM storage engine\nto merge SST files, reclaim space, and maintain read performance.\n\n## Core Features\n\n**Compaction Strategy:**\n- CompactionConfig with enable/disable, SST threshold (default: 10), check interval\n- Automatic compaction triggered on \n[…]\naction (THIS COMMIT)\n\nKeystoneDB now has a production-ready embedded LSM storage engine!\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 1.7: LSM Compaction - Complete",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-03T03:46:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d3ff6db293efc8fe210531098cf523a60bd920b9",
          "body": "Implemented a fully-featured interactive shell for KeystoneDB with:\n\n## Core Features\n- REPL loop with rustyline for professional line editing\n- Command history persistence to ~/.keystone_history\n- Multi-line query support (queries ending with ';')\n- Tab autocomplete for meta-commands and PartiQL ke\n[…]\ny\n- Support for all KeystoneValue types including VecF32\n- All tests passing (343 total)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 7: Interactive CLI (REPL) - Complete",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-03T01:03:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9286711cea5672434130fc305bf0bb0e219e46d7",
          "body": "Implemented token bucket rate limiting using governor crate:\n\nFeatures:\n- Per-connection rate limiting (--max-rps-per-connection)\n- Global rate limiting (--max-rps-global)\n- Token bucket algorithm for smooth rate limiting\n- RATE_LIMITED_REQUESTS metric by limit type\n- Automatic backpressure via reso\n[…]\nment on rate limit events\n\nServer now has production-grade rate limiting infrastructure.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 7 Day 3 Task 3: Add Rate Limiting & Backpressure",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-03T00:42:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8df7a809910f0865ecbecd1121d3c96440a3730e",
          "body": "Implemented signal handling and graceful shutdown:\n\nFeatures:\n- SIGTERM and SIGINT signal handling\n- Ctrl+C graceful shutdown\n- serve_with_shutdown for clean connection draining\n- Configurable shutdown timeout (--shutdown-timeout)\n- Shutdown logging showing drain progress\n- Database automatically cl\n[…]\npport (Unix signals + Ctrl+C)\n\nServer now handles shutdown gracefully without data loss.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 7 Day 3 Task 2: Add Graceful Shutdown",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-03T00:38:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2e243c2f9f19a172607051f2124af8c8ce28087e",
          "body": "Implemented connection tracking and management infrastructure:\n\nFeatures:\n- ConnectionManager with configurable limits (--max-connections)\n- Connection timeout configuration (--connection-timeout)\n- RAII-based ConnectionGuard for automatic cleanup\n- ACTIVE_CONNECTIONS metric tracking\n- TCP keepalive\n[…]\nmanagement (3 tests passing)\n\nServer now has production-grade connection infrastructure.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 7 Day 3 Task 1: Add Connection Management & Limits",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-03T00:37:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "00ee11c19e07dfac821d9e048d18c52085e31f48",
          "body": "Created comprehensive test suite for observability features:\n- Test metrics accessibility and structure\n- Test health/ready endpoints\n- Test RPC operations with metrics collection\n- Test trace ID generation in spans\n- Test validation error handling\n\n7 tests added, all passing.\nTotal project tests: 313 (6 integration + 7 observability)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 7 Day 2 Task 6: Add Observability Integration Tests",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T23:15:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bd966fdd7b77dafde294cd7a66204d3a5397492b",
          "body": "Created comprehensive MONITORING.md covering:\n- Structured logging with RUST_LOG configuration\n- Prometheus metrics with example queries\n- Health check endpoints usage\n- Request tracing with trace IDs\n- Prometheus & Grafana setup guides\n- Kubernetes integration examples\n- Debugging workflows\n- Best practices\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 7 Day 2 Task 5: Add Monitoring Documentation",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T23:09:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "046d930edf7a22988fd9e8aa45ad219f880965b4",
          "body": "Implemented comprehensive observability infrastructure:\n\nTasks 2-4 Complete:\n- Prometheus metrics with RPC counters, histograms, and gauges\n- HTTP metrics endpoint on port 9090 at /metrics\n- Health check endpoints: /health and /ready\n- Request tracing with UUIDs for all RPC methods\n\nChanges:\n- Added\n[…]\nns for request correlation\n- HTTP server for metrics and health endpoints alongside gRPC\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 7 Day 2: Observability & Monitoring Implementation",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T23:08:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "23d7ce85350c450f33da8ff93083c3d28778264d",
          "body": "Implemented comprehensive tracing infrastructure:\n\nServer Binary (kstone-server/src/bin/kstone-server.rs):\n✅ Enhanced tracing subscriber with env filter\n✅ Support for RUST_LOG environment variable\n✅ Thread IDs, file, and line numbers in logs\n✅ Configurable log levels (info default)\n\nService Instrume\n[…]\no run --bin kstone-server -- -d /path/to/db\n```\n\nNext: Prometheus metrics implementation\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 7 Day 2 Task 1: Add Structured Logging",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T22:59:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "263caf9fb0f276114102edd4a1166d8e719c3d13",
          "body": "Integration Test Suite (25 tests, all passing):\n\nCore Operations:\n✅ Basic CRUD (put, get, delete)\n✅ Sort key operations\n✅ Query and Scan\n✅ Batch get and write\n\nPhase 6.5 Operations:\n✅ TransactGet - transactional reads\n✅ TransactWrite - atomic writes\n✅ Update - with expressions\n✅ ExecuteStatement - P\n[…]\nrking\n- 100% RPC method coverage\n- Concurrent client testing\n- Failure scenario coverage\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 7 Day 1 Complete: Comprehensive Integration Testing",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T21:49:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a9415cb53ca780164834906eacad2ab363cf06f2",
          "body": "Server Startup Fix:\n- Fixed integration test server startup using dynamic port allocation\n- Server now properly binds to available ports\n- Each test gets isolated server instance\n\nNew Integration Tests (17 total, all passing):\n✅ Basic operations (put, get, delete, sort keys)\n✅ Query and Scan operati\n[…]\nerations validated\n- Positive and negative test cases\n- Expression evaluation validation\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 7.1: Add comprehensive integration tests",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T21:48:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9da6edc29f4010738921c5611c47de4cec452e86",
          "body": "- Added RemoteTransactGetRequest and RemoteTransactWriteRequest builders\n- Added RemoteUpdate builder for update expressions\n- Added RemoteExecuteStatementResponse for PartiQL queries\n- Added client methods: transact_get, transact_write, update, execute_statement\n- Updated PutRequest and DeleteReque\n[…]\nto include expression_values field\n- Fixed all doctests\n- All 10 client doctests passing\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 6.5: Add client library support for new operations",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T21:34:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d6efc03f38e2725353fc04bed87b457c994b8f13",
          "body": "- Implemented TransactGet RPC method for transactional multi-item retrieval\n- Implemented TransactWrite RPC method with Put/Update/Delete/ConditionCheck operations\n- Implemented Update RPC method with update expressions\n- Implemented ExecuteStatement RPC method for PartiQL queries\n- Added expression\n[…]\n protobuf and KeystoneDB types\n- All 89 tests passing (75 kstone-api + 14 kstone-server)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 6.5: Complete server implementation with all RPC methods",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T21:30:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bf1e60373c87e8a8e586af3ff31548575b65e3b1",
          "body": "Updated CLAUDE.md with comprehensive client library documentation:\n\n**Documentation updates:**\n- Added kstone-client to workspace structure (now 7 crates)\n- Documented Phase 6.4 Client Library implementation\n- Added usage examples for all client operations:\n  - Connection management\n  - CRUD operati\n[…]\nd remote access modes,\nenabling distributed deployments and client-server architectures.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 6.4: Complete client library documentation",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T21:14:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "89d4449eebde0e154d6adcd790ee4b421e66cdf8",
          "body": "Added comprehensive integration tests for the client library:\n\n**Test coverage:**\n- test_put_get_delete: Basic CRUD operations\n- test_put_get_with_sort_key: Composite key operations\n- test_query: Query with sort key conditions\n- test_scan: Scan operations with limits\n- test_batch_get: Batch retrieva\n[…]\nssfully. Integration tests provide\nend-to-end validation of client-server communication.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 6.4: Add integration tests for client",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T21:13:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "659247fb06bb4bf25421b9fff386d4ba1f4e5285",
          "body": "Completed the client library with Scan and Batch operations:\n\n**Scan operations:**\n- RemoteScan builder with fluent API\n- Streaming support (handles server-side streaming)\n- Pagination support (limit, start_after)\n- Parallel scan support (segment, total_segments)\n- Index support\n\n**Batch operations:\n[…]\nemoteBatchWriteResponse\n\nAll operations follow the same builder pattern for consistency.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 6.4: Add Scan and Batch operations to client",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T21:12:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eaef6671248af6440293a945595d36ab1b60d346",
          "body": "Implemented the initial KeystoneDB gRPC client with core functionality:\n\n**kstone-client crate:**\n- Client connection management (Client::connect)\n- Basic CRUD operations:\n  - put/put_with_sk - Store items remotely\n  - get/get_with_sk - Retrieve items from server\n  - delete/delete_with_sk - Remove i\n[…]\nditions working\n- Scan, Batch operations still pending\n- Integration tests still pending\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 6.4: Add gRPC client library (part 1)",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T21:09:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ae9607367a8e1e9b7f92095e502823e63c681326",
          "body": "Implemented network layer and gRPC server for remote database access:\n\n**kstone-proto crate:**\n- Protocol Buffers (proto3) service definition\n- 11 RPC methods: Put, Get, Delete, Query, Scan, BatchGet, BatchWrite,\n  TransactGet, TransactWrite, Update, ExecuteStatement\n- Bidirectional type conversions\n[…]\nn kstone-server\n\nUpdated CLAUDE.md with Phase 6 documentation and server usage examples.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 6: Add gRPC server implementation",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T20:56:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2a0f64cfb4ee982bac9e9ad24194e9e4b3c40c6d",
          "body": "Comprehensive documentation reflecting KeystoneDB's current state:\n\n1. README.md (272 lines):\n   - Updated project status from Phase 0 to Phase 5 Complete\n   - Added all implemented features:\n     * Core operations (Put/Get/Delete/Query/Scan/Batch/Transactions)\n     * Advanced features (LSI/GSI, TTL\n[…]\nnes of documentation\n\nAll documentation reviewed and accurate to current codebase state.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: Complete Phase 5 Day 5 documentation suite",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T19:53:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "79b1d57cc9130ef358f3dbca1a8d999ec514472a",
          "body": "CLI Enhancements:\n\n1. --limit flag:\n   - Add optional -l/--limit flag to Query command\n   - Automatically appends LIMIT clause to SQL query\n   - Usage: kstone query db.keystone \"SELECT * FROM users\" --limit 10\n\n2. --output format option:\n   - Add -o/--output flag with 4 formats: table, json, jsonl, \n[…]\nd\"\n   - To \"use LIMIT/OFFSET for pagination\"\n\nAll CLI improvements compile successfully.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add --limit and --output flags to CLI query command",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T19:12:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "31297983f30d70081f23b3c3aa05573444e55e39",
          "body": "Implement two key PartiQL enhancements:\n\n1. SELECT projection filtering:\n   - Support for SELECT attr1, attr2 syntax to return only specified attributes\n   - apply_projection() helper filters items post-query\n   - Integrated into Query, Scan, and MultiGet operations\n   - Test: test_execute_statement\n[…]\n. Apply OFFSET\n4. Apply LIMIT\n5. Apply projection\n\nAll 265 tests passing (+2 new tests).\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add SELECT projection and Scan filtering to PartiQL",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T19:09:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "51e6a5f60798c9f9681e2757a5d66227ab2e1cba",
          "body": "Add SQL LIMIT and OFFSET clauses for result pagination in SELECT queries.\n\nChanges:\n- PartiQL AST: Add limit and offset fields to SelectStatement\n- Parser: Extract LIMIT and OFFSET from SQL statements\n- Translator: Apply LIMIT/OFFSET to Query/Scan/MultiGet operations\n  - Fetch limit+offset records w\n[…]\nOM users LIMIT 10\n- SELECT * FROM users OFFSET 5\n- SELECT * FROM users LIMIT 10 OFFSET 5\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Implement LIMIT/OFFSET support for PartiQL (Phase 5 Day 3)",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T19:01:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "58009dc04189f8905044f3b4f020aa245caa7ea7",
          "body": "Add automatic background compaction to merge SST files and reduce read\namplification. Compaction is triggered when a stripe reaches 10 SST files.\n\nChanges:\n- Add compaction.rs with CompactionManager\n  - Merge algorithm keeps latest version (highest SeqNo) of each key\n  - Filter out tombstones during\n[…]\n_latest_version\n\nAll 257 tests pass (174 core + 70 API + 6 CLI + 6 integration + 1 doc).\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Implement background compaction (Phase 5 Day 1-2)",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T18:50:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "31d7a221995709b2f9f960284719e94955926654",
          "body": "Add ExecuteStatement API (kstone-api/src/partiql.rs):\n- Translate PartiQL to KeystoneDB operations\n- Support SELECT (Query/Scan), INSERT, UPDATE, DELETE\n- Handle sort key conditions (equal, lt, lte, gt, gte, between)\n- Support index queries (LSI/GSI)\n- 9 comprehensive tests covering all statement ty\n[…]\nHERE pk = 'user#1'\"\n  kstone query mydb.keystone \"DELETE FROM users WHERE pk = 'user#1'\"\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 4.4/4.5: ExecuteStatement API and CLI Query Command",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T18:39:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a394080fe7bff3918e44ee9ab44b1533d1eee1c3",
          "body": "Implement full DML (INSERT, UPDATE, DELETE) parsing and translation:\n\nParser (parser.rs):\n- DELETE: parse DELETE FROM table WHERE conditions\n- INSERT: parse DynamoDB-style INSERT with JSON map syntax\n  - Custom pre-processor for VALUE {'pk': 'x', ...} syntax\n  - Converts single quotes to double quot\n[…]\nPDATE: 5)\n- 8 translator tests (DELETE: 1, INSERT: 1, UPDATE: 4)\n- All 165 tests passing\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 4.2/4.3: Complete PartiQL Parser and DML Translation",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T18:25:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a839701844f4845c65c6f181a7d2d261f43ec5a2",
          "body": "Add SQL-compatible query language support (PartiQL) with DynamoDB-style constraints.\n\n## Changes\n\n### Roadmap Update (CLAUDE.md)\n- Added detailed Phase 4 (PartiQL Compatibility) roadmap\n- Added Phase 5 (In-Memory Database) roadmap\n- Added Phase 6 (Interactive CLI) roadmap\n- Phase 7+ now covers Attac\n[…]\n\n\n## Status\nPhase 4.1 complete. Next: Phase 4.2 (Query Translation) and Phase 4.3 (DML).\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 4.1: PartiQL Parser Foundation",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T17:54:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6a5892ab977823a47de9acd463d610e4dbaee073",
          "body": "This commit implements Streams for change data capture, completing Phase 3.4 and all of Phase 3.\n\n## Changes\n\n### kstone-core/src/stream.rs (NEW FILE)\n- Created StreamRecord struct to capture item-level changes\n- StreamEventType enum: Insert, Modify, Remove\n- StreamViewType enum: KeysOnly, NewImage,\n[…]\nonotonic sequence number\n- read_stream(after_seq) filters to records after that sequence\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Implement Phase 3.4: Streams (Change Data Capture)",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T16:15:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "08d49a863eeb5aa05c2d832baf9f6a00c387b321",
          "body": "This commit implements TTL (Time To Live) with lazy deletion, completing Phase 3.3.\n\n## Changes\n\n### kstone-core/src/index.rs\n- Added ttl_attribute_name field to TableSchema\n- Added with_ttl(attribute_name) builder method\n- Implemented is_expired(item) method that checks:\n  - TTL enabled AND item ha\n[…]\nTTL attribute never expire\n- Supports both Number (seconds) and Timestamp (milliseconds)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Implement Phase 3.3: Time To Live (TTL)",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T16:01:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2992631c7213c3de89fc4d7e213d00218a54ecc0",
          "body": "This commit implements Global Secondary Indexes, completing Phase 3.2.\n\n## Changes\n\n### kstone-core/src/index.rs\n- Added GlobalSecondaryIndex builder methods:\n  - GlobalSecondaryIndex::new(name, partition_key_attribute)\n  - GlobalSecondaryIndex::with_sort_key(name, pk_attr, sk_attr)\n  - .keys_only()\n[…]\ne base table PK for uniqueness\n- Enables querying across different base table partitions\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Implement Phase 3.2: Global Secondary Indexes (GSI)",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T15:53:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e47a276fa7dd0b318e8ac1a23574f8e8b224c51a",
          "body": "Updates CLAUDE.md with comprehensive LSI documentation:\n\nDevelopment Status:\n- Added Phase 3.1 LSI completion summary\n- Listed all LSI features and implementation details\n- Updated test counts: 157 total (105 core + 46 API + 6 integration)\n\nUsage Examples:\n- Creating tables with LSI schemas\n- Projec\n[…]\nex key types\n- Query builder integration\n\nPhase 3.1 (Local Secondary Indexes) COMPLETE ✅\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Documentation: Phase 3.1 LSI completion",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T15:35:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1a6f5521900c1643fff97e6af05840a0e939ae99",
          "body": "Implements full Local Secondary Index (LSI) query functionality:\n\nQuery Builder (kstone-api/src/query.rs):\n- Added .index(name) method to query by LSI instead of base table\n- Fluent API: Query::new(pk).index(\"email-index\").sk_begins_with(prefix)\n\nIterator (kstone-core/src/iterator.rs):\n- Added index\n[…]\n tests passing (105 core + 46 API + 6 integration)\n\nPhase 3.1 (LSI) now FULLY COMPLETE ✅\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 3.1 Complete: LSI query support",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T15:34:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "442d405a791121e2b83104ce533f0049ceee2d23",
          "body": "Implements automatic Local Secondary Index materialization:\n\nLSM Engine:\n- Added schema field to LsmInner\n- create_with_schema() method to create DB with indexes\n- materialize_lsi_entries() creates index records during writes\n- Index records stored alongside base records in same stripe\n\nIndex Materi\n[…]\n.1:\n- Query support for LSI (query by index name)\n- Additional LSI tests\n- Documentation\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 3.1: LSI write path implementation",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T15:21:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aef2d4f251a71d839386e4389cb36d97d3f04444",
          "body": "Adds foundational types and storage for Local Secondary Indexes:\n\nIndex Module (kstone-core/src/index.rs):\n- LocalSecondaryIndex struct with name, sort_key_attribute, projection\n- IndexProjection enum (All, KeysOnly, Include)\n- GlobalSecondaryIndex struct (for Phase 3.2)\n- TableSchema to hold index \n[…]\n querying by index name\n- Database API: accept TableSchema on create\n- Integration tests\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 3.1 (Partial): Index infrastructure for LSI support",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T15:16:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0238bb9e3e704317afbc1f85e777d8409310eb33",
          "body": "Adds ACID transaction support with atomic reads and writes:\n\nCore Engine (kstone-core):\n- TransactWriteOperation enum (Put, Update, Delete, ConditionCheck)\n- transact_get(): atomic multi-item reads with read lock\n- transact_write(): two-phase commit (check conditions → execute writes)\n- TransactionC\n[…]\nACID guarantees and two-phase commit\n\nPhase 2 (Complete Dynamo API) now FULLY COMPLETE ✅\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 2.7: Implement DynamoDB-style Transactions",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T15:12:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "100e1a456fab82bd0add97cdb9aa89131b5df54a",
          "body": "## Phase 2.6: Batch Operations\n- BatchGetRequest/Response for retrieving multiple items\n- BatchWriteRequest/Response for putting/deleting multiple items\n- batch_get() in LSM: get multiple keys in one call\n- batch_write() in LSM: put/delete multiple items in one call\n- Builder API with fluent interfa\n[…]\nbatch builders + 3 batch DB operations)\n- 6 integration tests\n- Total: 137 tests passing\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add Phase 2.6 Batch Operations",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T14:37:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "608585563c62bd1e4cb55fddfb156e9f34990b12",
          "body": "## Phase 2.4: Update Operations\n- Update expression AST with SET, REMOVE, ADD, DELETE actions\n- UpdateValue enum supporting paths, placeholders, and arithmetic (path ± value)\n- Update expression parser (text → actions)\n- UpdateExecutor applies actions to items\n- LSM update() method: get → apply → pu\n[…]\n builder + 4 update DB + 4 conditional)\n- 6 integration tests\n- Total: 132 tests passing\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add Phase 2.4 Update Operations and Phase 2.5 Conditional Operations",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T14:32:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "44384d2cdb443c98b0e192161dba6991ee8be360",
          "body": "KeystoneDB is a single-file, embedded, DynamoDB-style database written in Rust.\n\nThis commit includes:\n\n## Phase 0: Walking Skeleton (COMPLETE)\n- Basic LSM engine with Put/Get/Delete operations\n- WAL with crash recovery\n- SST files for persistent storage\n- CLI with JSON support\n- 30 passing tests\n\n#\n[…]\nCoverage\n- 94 core tests\n- 16 API tests\n- 6 integration tests\n- Total: 116 tests passing\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Initial commit: KeystoneDB embedded DynamoDB-style database",
          "author_name": "Parker Gabel",
          "author_login": "parkerdgabel",
          "committed_at": "2025-10-02T14:20:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 1,
      "commits_last_year": 96,
      "latest_release_at": "2025-10-04T16:29:18Z",
      "latest_release_tag": "v0.1.0",
      "releases_from_tags": false,
      "days_since_last_push": 206,
      "active_weeks_last_year": 2,
      "days_since_latest_release": 290,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 37,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "kstone-api",
          "exists": true,
          "license": "MIT OR Apache-2.0",
          "keywords": [
            "database",
            "dynamodb",
            "embedded",
            "key-value",
            "nosql",
            "database",
            "database-implementations"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/kstone-api",
          "is_deprecated": false,
          "latest_version": "0.1.0",
          "repository_url": "https://github.com/keystone-db/keystonedb",
          "versions_count": 1,
          "total_downloads": 264,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 3,
          "first_published_at": "2025-10-04T16:15:18.067617Z",
          "latest_published_at": "2025-10-04T16:15:18.067617Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 290
        },
        {
          "name": "kstone-core",
          "exists": true,
          "license": "MIT OR Apache-2.0",
          "keywords": [
            "database",
            "dynamodb",
            "embedded",
            "key-value",
            "nosql",
            "database",
            "database-implementations"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/kstone-core",
          "is_deprecated": false,
          "latest_version": "0.1.0",
          "repository_url": "https://github.com/keystone-db/keystonedb",
          "versions_count": 1,
          "total_downloads": 576,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 29,
          "first_published_at": "2025-10-04T16:12:34.768462Z",
          "latest_published_at": "2025-10-04T16:12:34.768462Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 290
        },
        {
          "name": "kstone-proto",
          "exists": true,
          "license": "MIT OR Apache-2.0",
          "keywords": [
            "database",
            "dynamodb",
            "embedded",
            "key-value",
            "nosql",
            "database",
            "database-implementations"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/kstone-proto",
          "is_deprecated": false,
          "latest_version": "0.1.0",
          "repository_url": "https://github.com/keystone-db/keystonedb",
          "versions_count": 1,
          "total_downloads": 432,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 15,
          "first_published_at": "2025-10-04T16:32:47.329569Z",
          "latest_published_at": "2025-10-04T16:32:47.329569Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 290
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 0,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0
      },
      "open_issues_and_prs": 2
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [
        "kstone-proto/proto/keystone.proto"
      ],
      "has_devcontainer": false,
      "typecheck_configs": [
        "website/tsconfig.json"
      ],
      "toolchain_manifests": [
        "Cargo.toml",
        "bindings/nodejs/Cargo.toml",
        "bindings/python/Cargo.toml",
        "c-ffi/Cargo.toml",
        "examples/blog-engine/Cargo.toml",
        "examples/cache-server/Cargo.toml",
        "examples/s3-backup/Cargo.toml",
        "examples/todo-api/Cargo.toml",
        "examples/url-shortener/Cargo.toml",
        "fuzz/Cargo.toml",
        "kstone-api/Cargo.toml",
        "kstone-cli/Cargo.toml",
        "kstone-client/Cargo.toml",
        "kstone-core/Cargo.toml",
        "kstone-proto/Cargo.toml",
        "kstone-server/Cargo.toml",
        "kstone-sync/Cargo.toml",
        "kstone-tests/Cargo.toml"
      ],
      "largest_source_bytes": 74718,
      "source_files_sampled": 130,
      "oversized_source_files": 4,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 77600
    },
    "dependencies": {
      "manifests": [
        "Cargo.toml",
        "c-ffi/Cargo.toml",
        "fuzz/Cargo.toml",
        "kstone-api/Cargo.toml",
        "kstone-cli/Cargo.toml",
        "kstone-client/Cargo.toml",
        "kstone-core/Cargo.toml",
        "kstone-proto/Cargo.toml",
        "kstone-server/Cargo.toml",
        "kstone-sync/Cargo.toml",
        "kstone-tests/Cargo.toml",
        "website/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "bincode",
            "direct": false,
            "version": "1.3.3",
            "severity": "unknown",
            "ecosystem": "crates",
            "cvss_score": null,
            "advisory_ids": [
              "RUSTSEC-2025-0141"
            ],
            "fixed_version": null,
            "advisory_count": 1,
            "oldest_advisory_days": 217
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "unknown": 1
        },
        "advisory_count": 1,
        "affected_count": 1,
        "assessed_count": 72,
        "malicious_count": 0,
        "assessed_package": "crates:kstone-api@0.1.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "crates",
        "npm"
      ],
      "dependencies": [
        {
          "name": "kstone-api",
          "manifest": "c-ffi/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "c-ffi/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "base64",
          "manifest": "c-ffi/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "parking_lot",
          "manifest": "c-ffi/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "kstone-core",
          "manifest": "kstone-api/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "anyhow",
          "manifest": "kstone-api/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "thiserror",
          "manifest": "kstone-api/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "bytes",
          "manifest": "kstone-api/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "kstone-api/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "kstone-api/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "kstone-api",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "kstone-core",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "kstone-sync",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "anyhow",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "clap",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "comfy-table",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing-subscriber",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "rustyline",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "14.0"
        },
        {
          "name": "colored",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.0"
        },
        {
          "name": "dirs",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "5.0"
        },
        {
          "name": "tokio",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "axum",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.7"
        },
        {
          "name": "tower",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "tower-http",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.5"
        },
        {
          "name": "rust-embed",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "8.0"
        },
        {
          "name": "uuid",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.6"
        },
        {
          "name": "chrono",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "base64",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.22"
        },
        {
          "name": "futures",
          "manifest": "kstone-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "kstone-proto",
          "manifest": "kstone-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "kstone-core",
          "manifest": "kstone-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "tonic",
          "manifest": "kstone-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "prost",
          "manifest": "kstone-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tokio",
          "manifest": "kstone-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "anyhow",
          "manifest": "kstone-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "thiserror",
          "manifest": "kstone-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "bytes",
          "manifest": "kstone-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "anyhow",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "thiserror",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "bytes",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "parking_lot",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "crossbeam",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "bincode",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "crc32fast",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "crc32c",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "aes-gcm",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "getrandom",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "memmap2",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.9"
        },
        {
          "name": "sqlparser",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "base64",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "zstd",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "regex",
          "manifest": "kstone-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "prost",
          "manifest": "kstone-proto/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.13"
        },
        {
          "name": "tonic",
          "manifest": "kstone-proto/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.12"
        },
        {
          "name": "bytes",
          "manifest": "kstone-proto/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "kstone-proto/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "kstone-proto/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "kstone-api",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "kstone-core",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "kstone-proto",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "tonic",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "prost",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tokio",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "anyhow",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "thiserror",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing-subscriber",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "clap",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "bytes",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "futures",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "prometheus",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "lazy_static",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "once_cell",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "axum",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "uuid",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "governor",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "subtle",
          "manifest": "kstone-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.6"
        },
        {
          "name": "kstone-core",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "kstone-api",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "anyhow",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "bytes",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "parking_lot",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "uuid",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.18"
        },
        {
          "name": "chrono",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "tokio",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "async-trait",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "aws-config",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.5"
        },
        {
          "name": "aws-sdk-dynamodb",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.60"
        },
        {
          "name": "aws-sdk-s3",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.60"
        },
        {
          "name": "reqwest",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.11"
        },
        {
          "name": "zstd",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.13"
        },
        {
          "name": "sha2",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.10"
        },
        {
          "name": "hmac",
          "manifest": "kstone-sync/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.12"
        },
        {
          "name": "kstone-api",
          "manifest": "kstone-tests/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "kstone-core",
          "manifest": "kstone-tests/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "kstone-sync",
          "manifest": "kstone-tests/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tempfile",
          "manifest": "kstone-tests/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "anyhow",
          "manifest": "kstone-tests/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tokio",
          "manifest": "kstone-tests/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "@astrojs/react",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.6.2"
        },
        {
          "name": "@astrojs/tailwind",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.1.0"
        },
        {
          "name": "astro",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.15.0"
        },
        {
          "name": "react",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^18.3.1"
        },
        {
          "name": "react-dom",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^18.3.1"
        },
        {
          "name": "tailwindcss",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.4.10"
        },
        {
          "name": "lucide-react",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.436.0"
        },
        {
          "name": "shiki",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.16.2"
        }
      ],
      "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": 2,
        "merged_prs": 6,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "parkerdgabel",
          "commits": 60,
          "avatar_url": "https://avatars.githubusercontent.com/u/21162926?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 36,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.625
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock",
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 2 merged PRs checked by a CI test -- score normalized to 0",
            "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/2 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 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": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "75 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "d4495bba87d08e3132c2dafa90dee12c403df005",
        "ran_at": "2026-07-22T11:29:19Z",
        "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": [
        {
          "number": 1,
          "created_at": "2025-10-08T03:42:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 7,
          "created_at": "2025-12-27T06:00:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2025-12-27T22:00:17Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/keystone-db/keystonedb",
    "host": "github.com",
    "name": "keystonedb",
    "owner": "keystone-db"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 42,
      "inputs": {
        "security": 38,
        "vitality": 36,
        "community": 16,
        "governance": 49,
        "engineering": 65
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "at_risk",
        "name": "Vitality",
        "value": 36,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "critical",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 23,
            "inputs": {
              "commits_last_year": 96,
              "human_commit_share": 1,
              "days_since_last_push": 206,
              "active_weeks_last_year": 2
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 206 days ago",
                "points": 3.6,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 206
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "2/52 weeks with commits",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "96 commits in the last year",
                "points": 17.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 96
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "moderate",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "releases_count": 1,
              "latest_release_tag": "v0.1.0",
              "releases_from_tags": false,
              "days_since_latest_release": 290,
              "mean_days_between_releases": null
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "1 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 290 days ago",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 290
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "cadence unknown (single release)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence_unknown",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "dormant",
              "guards": [
                "recent_release"
              ],
              "signals": [
                "scorecard_unmaintained"
              ],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": 2,
              "unanswered_open_issues": 0,
              "days_since_last_merged_pr": 206,
              "days_since_last_human_commit": 206,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "no human commit for 206 days, with nothing left unanswered; held at dormant by a release within the year",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_quiet",
                    "params": {
                      "days": 206
                    }
                  },
                  {
                    "code": "abandonment_guarded",
                    "params": {
                      "guards": "a release within the year"
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 16,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 0,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "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
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "critical",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 28,
            "inputs": {
              "packages": [
                "kstone-api",
                "kstone-core",
                "kstone-proto"
              ],
              "dependents": null,
              "ecosystems": "crates",
              "total_downloads": 1272,
              "monthly_downloads": 47
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "47 downloads/month across crates",
                "points": 22.4,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 47,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 49,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 23,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.625
            },
            "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 62% of commits",
                "points": 8.4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 62
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "merged_prs": 6,
              "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": "6/6 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 6,
                      "decided": 6
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/2 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 35,
            "inputs": {
              "followers": 0,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "keystone-db",
              "public_repos": 2,
              "account_age_days": 291
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of keystone-db",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "keystone-db"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "2 public repos, account ~0 yr old",
                "points": 5.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 2
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "good",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "packages": [
                "kstone-api",
                "kstone-core",
                "kstone-proto"
              ],
              "ecosystems": "crates",
              "any_deprecated": false,
              "min_days_since_publish": 290
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "3 package(s) on crates",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 3,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 290 days ago",
                "points": 26,
                "status": "partial",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 290
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "1 published versions",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": 65,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "0 out of 2 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": "https://keystonedb.dev",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://keystonedb.dev",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 38,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 25,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 2 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/2 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is 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": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "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": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "75 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Matched the crates:kstone-api@0.1.0 runtime dependency closure — what installing the published package pulls in — 72 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "crates:kstone-api@0.1.0",
                  "assessed": 72
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 91,
            "inputs": {
              "source": "osv",
              "advisories": 1,
              "affected_packages": 1,
              "assessed_packages": 72,
              "unassessed_packages": 0,
              "affected_by_severity": "unknown 1",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "1 affected: bincode 1.3.3 (unknown)",
                "points": 19,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "bincode 1.3.3 (unknown)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "1 advisory-carrying package(s) unaddressed past 90 days; oldest published 217 days ago",
                "points": 37.2,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 1,
                      "oldest": 217
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 72,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 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": "good",
        "name": "AI Readiness",
        "value": 79,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.99,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 77600
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "95 of 96 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 95,
                      "sampled": 96
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock",
                "package-lock.json"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "website/tsconfig.json"
              ],
              "agent_commit_share": 0.5,
              "toolchain_manifests": [
                "Cargo.toml",
                "bindings/nodejs/Cargo.toml",
                "bindings/python/Cargo.toml",
                "c-ffi/Cargo.toml",
                "examples/blog-engine/Cargo.toml",
                "examples/cache-server/Cargo.toml",
                "examples/s3-backup/Cargo.toml",
                "examples/todo-api/Cargo.toml",
                "examples/url-shortener/Cargo.toml",
                "fuzz/Cargo.toml",
                "kstone-api/Cargo.toml",
                "kstone-cli/Cargo.toml",
                "kstone-client/Cargo.toml",
                "kstone-core/Cargo.toml",
                "kstone-proto/Cargo.toml",
                "kstone-server/Cargo.toml",
                "kstone-sync/Cargo.toml",
                "kstone-tests/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Cargo.toml, bindings/nodejs/Cargo.toml, bindings/python/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "Cargo.toml, bindings/nodejs/Cargo.toml, bindings/python/Cargo.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "website/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "website/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "48 of the last 96 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 48,
                      "sampled": 96
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 98,
            "inputs": {
              "primary_language": "Rust",
              "largest_source_bytes": 74718,
              "source_files_sampled": 130,
              "oversized_source_files": 4
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Rust (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "4/130 source files over 60KB",
                "points": 53.3,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 130,
                      "oversized": 4
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "good",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": [
                "kstone-proto/proto/keystone.proto"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "kstone-proto/proto/keystone.proto",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "kstone-proto/proto/keystone.proto"
                    }
                  }
                ],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Could not fetch crates package 'kstone-ffi' from its registry",
    "Could not fetch npm package 'keystonedb-website' from its registry",
    "Could not fetch crates package 'kstone-cli' from its registry",
    "Could not fetch crates package 'kstone-sync' from its registry",
    "Could not fetch crates package 'kstone-tests' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-22T11:29:34.284806Z",
  "schema_version": "0.26.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/k/keystone-db/keystonedb.svg",
  "full_name": "keystone-db/keystonedb",
  "license_state": "absent",
  "license_spdx": null
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.26.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikencrates.io.