Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-27 14:24 UTC

yongjohnlee80 / golib

Common utility library for Golang

GoMIT★ 0 Sterne⑂ 0 Forksseit Apr. 2026Auf GitHub ansehen ↗

yongjohnlee80/golib erreicht einen Gesundheitsindex von 48 von 100 und liegt damit im Bereich Gefährdet. Am stärksten schneidet es bei Vitality (75/100) ab, am schwächsten bei Community & Adoption (24/100). Zuletzt vor 7 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

48
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.

48
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

Yong Sung John LeePersönliches Konto
43 Follower26 öffentliche Reposseit Apr. 2018Monstercat Inc.

Dieses Repository gehört einem persönlichen Konto. Ein Projekt mit nur einem Eigentümer trägt ein höheres Kontinuitätsrisiko als ein organisationsgetragenes.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
Gogithub.com/yongjohnlee80/golibv0.2.2-4vor 7 Tagen

Metriken nach Kategorie

Vitalität

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

75Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 7 Tagen
4.2/36Commit-Rhythmus — 6/52 Wochen mit Commits
15.3/18Commit-Volumen — 49 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year49
human_commit_share1
days_since_last_push7
active_weeks_last_year6
Wie die Bewertung erfolgt
16.2/27Liefert Releases aus — 4 Versions-Tags (keine GitHub-Releases)
36/36Release-Aktualität — letztes Release vor 7 Tagen
27/27Release-Rhythmus — ein Release etwa alle 5,1 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count4
latest_release_tagv0.2.2
releases_from_tagsja
days_since_latest_release7
mean_days_between_releases5,1
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

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

24Kritisch · 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
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein

Nachhaltigkeit & Governance

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

54Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 100 % der Commits
1.4/13.5Breite der Beitragenden — 1 Beitragende
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Verwendete Eingangsdaten
bus_factor1
contributors_sampled1
top_contributor_share1
Wie die Bewertung erfolgt
0/46.8Issue-Lösungsquote — keine Issues oder keine Daten
38.2/38.3PR-Annahme — 12/12 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/23 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs12
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
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
11.8/25Reichweite des Inhabers — 43 Follower von yongjohnlee80
22.4/25Kontohistorie — 26 öffentliche Repos, Kontoalter ca. 8 Jahre
Verwendete Eingangsdaten
followers43
owner_typeUser
is_verified
owner_loginyongjohnlee80
public_repos26
account_age_days3.026
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

92Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf go
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 7 Tagen
12/20Versionshistorie — 4 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesgithub.com/yongjohnlee80/golib
ecosystemsgo
any_deprecatednein
min_days_since_publish7

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

44Gefährdet · 20 % des Gesamtindex
Wie die Bewertung erfolgt
0/24CI-Workflows
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 5 merged PRs checked by a CI test -- score normalized to 0
Verwendete Eingangsdaten
has_cinein
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
10/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepage
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

33Gefährdet · 16 % des Gesamtindex

Sicherheitslage

33Gefährdet
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 0 out of 5 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/23 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
0/10Dangerous-Workflow — keine Daten
0/7.5Dependency-Update-Tool — no update tool detected
5/5Fuzzing — project is fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — keine Daten
0/5Pinned-Dependencies — keine Daten
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 — keine Daten
0/7.5Token-Permissions — keine Daten
0/7.5Vulnerabilities — 24 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate3,3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Die verbleibenden Gewichte wurden renormalisiert.

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.

58Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 43 von 49 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,878
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — dao/bigquery/go.mod, go.mod (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — Go (statisch typisiert)
10/10Reproduzierbare Umgebung — lockfile
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 49
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — keine Daten
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilesgo.sum
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0
toolchain_manifestsdao/bigquery/go.mod, go.mod
dependency_bot_commit_share0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Pinned-Dependencies. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Go (statisch typisiert)
55/55Handhabbare Dateigrößen — 0/253 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageGo
largest_source_bytes58.159
source_files_sampled253
oversized_source_files0
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalnein
api_schema_files

Eckdaten

0GitHub-Sterne
1Mitwirkende
49Commits, letzte 12 Monate
7Tage seit letztem Push
4Releases
1Bus-Faktor
0offene Issues
GoPaket-Ökosysteme

Warnungen zur Datenerhebung

  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Weitere Details

OpenSSF Scorecard 3.3 / 10
3.3Gesamtwert

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-27 14:24 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
0CI-Tests0 out of 5 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/23 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
k. A.Dangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
10Fuzzingproject is fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
k. A.Packagingpackaging workflow not detected
k. A.Pinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
k. A.Token-PermissionsNo tokens found
0Vulnerabilities24 existing vulnerabilities detected
Direkte Abhängigkeiten 5
RegistryPaketVersionsvorgabeManifest
Gogithub.com/coder/websocketv1.8.15go.mod
Gogithub.com/jackc/pgx/v5v5.10.0go.mod
Gogolang.org/x/sysv0.46.0go.mod
Gogolang.org/x/termv0.44.0go.mod
Gomodernc.org/sqlitev1.52.0go.mod
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

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 1163,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Go": 1315900
      },
      "pushed_at": "2026-07-19T21:09:47Z",
      "created_at": "2026-04-06T03:41:52Z",
      "owner_type": "User",
      "updated_at": "2026-07-19T21:09:47Z",
      "description": "Common utility library for Golang",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": "yongsunglee.com",
      "name": "Yong Sung John Lee",
      "type": "User",
      "login": "yongjohnlee80",
      "company": "Monstercat Inc.",
      "location": "Vancouver BC",
      "followers": 43,
      "avatar_url": "https://avatars.githubusercontent.com/u/38369998?v=4",
      "created_at": "2018-04-14T04:31:31Z",
      "is_verified": null,
      "public_repos": 26,
      "account_age_days": 3026
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.2.2",
          "kind": "patch",
          "published_at": "2026-07-19T21:09:22Z"
        },
        {
          "tag": "v0.2.1",
          "kind": "patch",
          "published_at": "2026-07-10T05:47:18Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-07-09T02:15:30Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-07-04T13:25:00Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "3269fd011880935813e877ca10da2b9dbb3ad270",
          "body": "Seven chapters written from building real applications on the package\n(db-tui, ddex-server): getting started, the root-controller pattern,\nthe widget set, event routing and focus, async tasks and the writer\ncontract, floats/modals, and a symptom-first pitfalls catalog. Each\nchapter leads with the failure mode, then the pattern.",
          "is_bot": false,
          "headline": "tui: tutorial series",
          "author_name": "John Lee",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-19T21:09:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "004470df16777e2b62ea925f07b978b44747c7ce",
          "body": "…oss-node focus\n\n- widget.Table: column definitions (fixed widths + one flex) with a\n  header row over a List core.\n- Tabs: ←/→ cycle when focused; WithAutoFocus takes focus on mount;\n  WithoutBar turns Tabs into a pure content switcher.\n- List: WithEmptyText placeholder for empty sources.\n- BufferView: PlainText() extraction and 'y' copies the buffer to the\n  system clipboard.\n- Context.FocusComponent: programmatic focus of another mounted\n  component (RequestFocus is self-only).",
          "is_bot": false,
          "headline": "tui: Table widget; tabs arrow-nav/auto-focus/barless; buffer copy; cr…",
          "author_name": "John Lee",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-19T20:40:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85f622872eb4504aa5c89bf7ac2a22bff3d70989",
          "body": "Flush wrote each frame with a single output.Write and dropped short\nwrites — on a non-blocking tty (makePollable flips O_NONBLOCK on a\nshared stdin/stdout description) the kernel short-writes with EAGAIN\nand the frame tail is lost, leaving apps that render once with only\nthe top of the screen painte\n[…]\nrdWriter capability: WriteClipboard emits OSC 52\n(terminal-side copy — works over SSH and in editor terminals),\noversized payloads keep their tail. TestBackend records clipboard\nwrites for assertions.",
          "is_bot": false,
          "headline": "tui/term: write frames fully on non-blocking ttys; OSC 52 clipboard",
          "author_name": "John Lee",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-19T20:40:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "384f5abd9111cf302a644dc40439c11a93b5810d",
          "body": "… pollability (ADR-0002 §2.9 rev 2)\n\nFound by db-tui e2e (db-tui docs/golib-findings.md #1); reviewed by\nlector (change_requested round on fd ownership + flag restoration,\nthen approved_with_notes).",
          "is_bot": false,
          "headline": "Merge fix/term-reader-unblock: Stop hang on real terminals — input fd…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-10T05:47:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a5330f4926fa0d79c30fc1ea15e0bbdac0185f6",
          "body": "…ollability note (lector approved_with_notes)",
          "is_bot": false,
          "headline": "tui/term: F_DUPFD_CLOEXEC for the fallback dup; ADR-0002 §2.9 rev-2 p…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-10T05:47:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "72980ac6ba1a7ab5c1108114299c363f3665b5dc",
          "body": "… review)\n\nReview findings on ecacd5d, both must-fix:\n1. os.NewFile on the caller's own fd created a second owning *os.File\n   that could close/finalize a descriptor the backend never owned —\n   now dup(2) first, wrap only the dup, cleanup closes only the dup.\n   Regression: caller's fd proven usabl\n[…]\ninstead of restoring the prior flag\n   word — now F_GETFL is captured before mutation and restored\n   exactly. Regression: an intentionally-nonblocking caller fd keeps\n   O_NONBLOCK across Start/Stop.",
          "is_bot": false,
          "headline": "tui/term: dup the fallback fd and restore exact F_GETFL flags (lector…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-10T05:43:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ecacd5dd9287972367f7836a3dada2f36e12bfa0",
          "body": "…pollable\n\nA tty inherited on stdin arrives in blocking mode, where\nSetReadDeadline is a silent no-op (os.ErrNoDeadline): Stop's §2.9\nunblock never landed, the pump stayed parked in read(2), and teardown\nhung on wg.Wait — every interactive app hung at exit on a real\nterminal. The lifecycle tests mis\n[…]\nRegression test opens a real pty with the slave as a raw blocking fd\n(the shell-inherited-stdin shape) and gates Stop on a 5s watchdog.\n\nFound by db-tui Phase 2 e2e (db-tui docs/golib-findings.md #1).",
          "is_bot": false,
          "headline": "tui/term: unblock the blocked tty reader at Stop — make the input fd …",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-10T03:53:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "944b626389f4f6711c1282009fc87f3aa85649ec",
          "body": "Standard TUI component framework — core seam (Backend/Surface/Cell/\nTestBackend), ANSI terminal driver, style/token/theme system, UAX\n#11/#29 grapheme tables, App runtime (event queue, pub/sub bus, async\ntasks, timers, component tree, focus, routing, layout), and a v1\nwidget set + demo. Design: 7 ac\n[…]\n38c0). All ADR-0001 §5 gates green: race tests, vet, gofmt,\nLinux+Windows builds, 602/602 UAX #29 conformance, 0-alloc style/\nresolve steady state. go.mod delta: x/term + x/sys (confined to\ntui/term).",
          "is_bot": false,
          "headline": "Merge branch 'tui': golib TUI framework (golib-tui ADRs 0001-0007)",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-09T02:15:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2ac38c078724849ce6f8aa9f5b631f891f11dd56",
          "body": "… impl-review)\n\nMust-fix from the pre-merge implementation review: widget layout,\ncursor, scroll, wrap, and hit-test paths measured text via the\npolicy-blind package tui.StringWidth (WidthPolicyDefault) while Render\npainted through Surface.StringWidth. An app opting into\nWithWidthPolicy(WidthPolicyA\n[…]\nerred).\n\nGates green: go test -race ./tui/..., vet, gofmt, windows\ncross-compile, 602/602 grapheme conformance, new AmbiguousWide test.\nDefault width policy unchanged (existing tests pass unmodified).",
          "is_bot": false,
          "headline": "tui: honor App width policy in widget layout/cursor/hit paths (lector…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-09T02:10:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "29fbc12bbfeaffc3adcbc406eb05c64f27bbd961",
          "body": "Base/Box foundations; TextInput, TextArea, Select[T] (overlay+trap),\nList[T] over the ListSource seam, BufferView w/ concurrent Writer()\nhandle + bounded SGR interpreter, Tabs, Split, Float (modal trap+scrim),\nStatusBar, ProgressBar (subscribes only while animating), Text; Bus\nevent inventory; Overl\n[…]\natus bar) with the\ndeterministic TestBackend CI script asserting idle-zero-flush and\none-flush-per-change. Known follow-up: Context.AbsRect() for anchored\ndropdowns (Select opens palette-style in v1).",
          "is_bot": false,
          "headline": "tui/widget + demo: standard widget set v1 (ADR-0007), ADR-0001 §5 gates",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-08T05:01:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8e917f3b1d3b49131f888fb1e255933aa15b2c6e",
          "body": "…ng, layout (ADR-0004/0005)\n\nScaffold-mirrored Run(ctx) w/ restore-on-panic; App-owned intake (resize\nlatest-wins, motion coalescing, drop-oldest); unbounded lane B w/\nhigh-water logging + opt-in WithEventQueueLimit; always-enqueue Update;\ndemand-armed timer heap (idle = nothing scheduled); typed Bu\n[…]\nmount/unmount cascade w/ comparability panic; mount-order focus\ntraversal + trapping scopes; target-then-bubble routing w/ hit-testing;\nFlex/Dock/Stack w/ deterministic largest-remainder distribution.",
          "is_bot": false,
          "headline": "tui: App runtime, event queue, Bus, tasks, timers, tree, focus, routi…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-08T04:10:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "db8b1820ab2a6f56fa89e1f17973c15e4410bd6a",
          "body": "…-0002)\n\nDEC 13-state parser (split-safe, fuzzed), legacy+kitty key decode, SGR\nmouse, byte-exact bracketed paste, DA1-fenced one-write capability probe\n(250ms), R1-R4 flush emitter w/ latched cursor and SGR/CUP dedup,\nreverse-order restore incl. panic paths. Promotes x/term + x/sys to\ndirect deps, confined to this leaf. Linux/darwin/windows builds green.",
          "is_bot": false,
          "headline": "tui/term: ANSI driver — parser, decoder, probe, flush, lifecycle (ADR…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-08T04:02:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "980a6c43ffa40f94d926b4c92490df3d17a64f0c",
          "body": null,
          "is_bot": false,
          "headline": "tui: functional key-code constants (kitty PUA + C0 legacy)",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-08T03:25:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52a06089fa69a88d2e7e782b310d0b91769c7b88",
          "body": "… (ADR-0002/0003)\n\nBackend interface w/ Err() + Capabilities (ColorProfile, DarkBackground,\ntri-state Mouse); event set per ADR-0005; grapheme-cell double buffer\nwith W1-W3 wide-cell invariants and 0-alloc diff; clipped Surface with\nWidthPolicy and rev-1 Fill rule; bounded style resolver (0-alloc hits,\ntruecolor->256->16->mono); TestBackend with inject/snapshot/violations.\nCells carry resolved CellAttrs (ADR-0006 §2.6 reading of ADR-0003 §2.1).",
          "is_bot": false,
          "headline": "tui: core seam, events, cells, buffer, Surface, resolver, TestBackend…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-08T03:24:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e59cf6a9eef2ef1e1fcf1dcf3d7e38dbb2acff8",
          "body": "Typed fields + uint64 set-bitfield (lipgloss v0.11 model), comparable\nvalue semantics, 20-token theme with §2.5 derivation defaults,\nANSI-16-first, flatten-at-set-time ColorSpec, COW extras with one-clone\nApply batching. Setter chain 0 allocs; race-clean; stdlib-only.",
          "is_bot": false,
          "headline": "tui/style: Style, Color, Token/Theme, borders, Ext (ADR-0006)",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-08T03:05:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20ba64543f72e2f8f6c4074434759a8788cba670",
          "body": "…003 §2.7)\n\nGenerated from UCD 15.0.0 (matches Go 1.25 unicode.Version; ADR's 16.0.0\nsketch was an erratum). Clusters/ClusterWidth/StringWidth per the fixed\ninternal contract; GraphemeBreakTest 602/602; StringWidth alloc-free.\nGB9c (15.1 InCB) documented as deferred with the refresh procedure.",
          "is_bot": false,
          "headline": "tui/internal/grapheme: UAX #11/#29 tables, segmentation, width (ADR-0…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-08T03:02:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ee0765d5b4b37748e995927ec559f06fd66db67",
          "body": "…proved) from KB",
          "is_bot": false,
          "headline": "docs(tui): mirror accepted golib-tui ADRs 0001-0007 (rev 1, lector-ap…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-08T02:49:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a2cc3cac981f292e2458dd7f098b46ad23e8386",
          "body": "Now that the root module is tagged v0.1.0, the nested bigquery module can\nrequire the real version instead of require v0.0.0 + replace => ../.., which\nbroke external 'go get' of the submodule. Builds and unit-tests green against\nthe published tag (go 1.25.3 local toolchain).",
          "is_bot": false,
          "headline": "dao/bigquery: depend on golib v0.1.0, drop local replace",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T14:14:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6eb96ea41a204b2da404534d9481cc984aade48",
          "body": "Every package gets an intro + basic/advanced usage + how-to-extend, the\nmain README links them all, and several stale/incorrect docs are corrected.\n\nNew:\n- server/README.md — the transport-agnostic core (router, chain, lifecycle,\n  Scaffold, Registry) with the two-transport-family extension story an\n[…]\ntgres is\n  not 'the only golib package with a DB dependency'.\n- dao README + USAGE: removed the non-existent .Insert2() from examples.\n\nDocs-only + comment-only doc.go edits; go build and gofmt clean.",
          "is_bot": false,
          "headline": "docs: comprehensive README pass across all packages",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T13:25:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c71651e7d48243d353b4d14f4cb5512e74e06f3e",
          "body": "New golib/partial package — the wire half of the partial-update story.\nParse-once Patch[T]: source-order json.Decoder into per-field raw slots\nkeyed by canonical effective JSON names from a per-T cached plan (pointer\nembeds + $clear-named fields panic loudly); three-state Absent/Present/\nCleared und\n[…]\nthe only dao import); Patch composition for nesting.\nstdlib-only except the adapter. ADR flipped to Accepted (rev 3, lector r2\napproved). Acceptance criteria 1-8 in partial_test.go; module race-clean.",
          "is_bot": false,
          "headline": "partial: generic partial-payload package Patch[T] (golib-partial-0001)",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T11:45:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7d0b997ea4f91a7e11fa45cabec7aee39d3d08db",
          "body": "must-fix #1: bind via source-order json.Decoder token loop (last canonical\nslot wins) instead of map[string]json.RawMessage, restoring encoding/json\nlast-matching-key parity across case-fold collisions; deterministic, pinned\nin acceptance criterion 4.\nmust-fix #2: one clear namespace — ClearKey rese\n[…]\nt level; planFor[T] panics on a model field canonically\nnamed $clear; $clear entries canonicalize through the plan with unknowns\ndropped at bind, so Fields/State/Rules/Empty hold only canonical names.",
          "is_bot": false,
          "headline": "docs/partial: ADR-0001 revision 2 — apply lector r1 review amendments",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T11:45:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2205be78f7446a007c8880162bee4ae527d21665",
          "body": "…oposed)\n\nThe wire half of the partial-update story (golib-partial-0001, plan §3.2):\nparse-once Patch[T] with per-field raw slots keyed by canonical effective\nJSON names from a per-T cached plan (pointer embeds panic loudly);\nthree-state semantics with a declared ClearMode (ClearOnNull default,\nExpl\n[…]\nntics hardened (last-mutation-wins-over-clear, loud unknown fields);\nRules() projection + ApplyRules adapter onto dao ADR-0010's SetRules —\nzero per-entity code. json/v2 deferred (GOEXPERIMENT-gated).",
          "is_bot": false,
          "headline": "docs/partial: ADR-0001 — generic partial-payload package Patch[T] (pr…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T11:45:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f1e0f72a54d82559839e443e2301105005615b0a",
          "body": "…ransport (golib 11)\n\nImplements the two accepted server ADRs per their file plans.\n\nADR-0006 — transport scaffold & session registry (core, zero-dep):\n- server/registry.go: Session/Drainer + Registry with the atomic\n  Reserve/Reservation pre-establishment gate. Drain prefers Drainer.Drain\n  over Cl\n[…]\nundary/\npre-handshake-503-gate/read-limit/keepalive/dep-isolation). go vet clean and\ngo test -race green module-wide; core packages remain dependency-free (go\nlist -deps confirms 0 websocket imports).",
          "is_bot": false,
          "headline": "server: implement ADR-0006 scaffold+registry and ADR-0007 WebSocket t…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T11:41:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c273f0dfb3d8c744252550d42697b0d03fcfe3b9",
          "body": "The r1 blocker (pre-handshake drain gate) is closed by the\nReserve/Reservation API; r2 review approved with no further amendments.\nBoth ADRs flip Proposed -> Accepted; §7 review histories record r2.",
          "is_bot": false,
          "headline": "docs/server: ADR-0006/0007 accepted — lector r2 approved",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T11:41:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2208615f408aff39f437af757afa28bc26088ebe",
          "body": "…tor r1 must-fix)\n\nThe 0007 promise 'upgrade attempts during drain are refused with 503' had\nno API to keep it: Handler only saw the post-accept registry, and after\nAccept sends 101 there is no HTTP response left. Revision 2 adds the\natomic Reserve/Reservation API to ADR-0006's Registry (Reserve fai\n[…]\n handshake — 503 on\nrefusal, Complete/Cancel afterward — closing the accept-then-instant-\nclose window. Acceptance criteria updated to test the user-observable\nboundary; review-history sections added.",
          "is_bot": false,
          "headline": "docs/server: ADR-0006/0007 revision 2 — pre-handshake drain gate (lec…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T11:41:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "464bc23d05ee7e3712294784f3a5d196fbc67a85",
          "body": "… WebSocket transport (proposed)\n\nADR-0006: the reusable accept-loop Scaffold (bind-or-injected listener,\nper-conn goroutine+ctx, structured accept errors w/ backoff, panic\nisolation) + the drain-aware Session/Registry consumed by scaffold AND\nhttpserver.Shutdown (hijacked connections finally drain \n[…]\neAllowOrigins, 1MiB read limit, ping/pong keepalive). One\nleaf-only dependency: github.com/coder/websocket; core stays zero-dep.\n\nAuthored for golib 09; implementation follows review as separate work.",
          "is_bot": false,
          "headline": "docs/server: ADR-0006 transport scaffold & session registry; ADR-0007…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T11:41:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ac81f32270a705887f6a2121ba936c738ce4dcc6",
          "body": "Typed Rule vocabulary (Write/Skip/Clear) staged via the new DAO.SetRules\nintent method; Field gains Clearable/ClearValue (NOT-NULL sentinels,\nvalidated at dao.New); rules resolve at SetRules time and apply as the\nlast stagedSet() layer — order-independent, last rule per field wins.\nNon-clearable cle\n[…]\nn unknown/ReadOnly keys (wire-facing); Set/SetMap stay loud.\nFluent Clear() honors a declared ClearValue. ADR flipped to Accepted\n(rev 3, lector r2 approved). Acceptance criteria 1-8 in rules_test.go.",
          "is_bot": false,
          "headline": "dao: partial-update rules & per-column clearability (ADR-0010)",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T10:55:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bddae133cd725efefbb6f2f5bfbacca3e422bb83",
          "body": "must-fix #1: strict-clear violations carried on the field's resolvedRule\n(err carrier) instead of the sticky DAO first-error path; replaced by any\nlater rule for the same field; surfaced via stagedSet() (orderedSet, error)\nonly as the field's final rule. Preserves last-rule-wins / order-independent\nresolution under StrictClears. Criterion 4 gains the replacement cases;\nreview-history section added.",
          "is_bot": false,
          "headline": "docs/dao: ADR-0010 revision 2 — apply lector r1 review amendments",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T10:55:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d22a6ad22d05754cadc12f2e75bf056149a64004",
          "body": "…proposed)\n\nTyped Rule vocabulary (Write/Skip/Clear) applied via a new DAO.SetRules\nintent method; clearability declared per column on Field (Clearable /\nClearValue for NOT-NULL sentinels); LM's wire-safe downgrade-to-skip\ndefault with an opt-in StrictClears schema option; order-independent\nresolution as one step in stagedSet(); pins the rules-projection\ncontract golib-partial-0001 consumes (zero per-entity code).",
          "is_bot": false,
          "headline": "docs/dao: ADR-0010 — partial-update rules & per-column clearability (…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T10:55:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be53d47de241e0ac9fe5fc537f9cb5915172380e",
          "body": "…am (golib 10)\n\nImplements the accepted ADR-0009 (rev 3) per its file plan:\n\n- dao/hooks.go (new): Op discriminator (incl. the OpBatch/OpBatchCopy\n  split), QueryInfo, Outcome, the type-erased Stager surface with per-op\n  semantics (Where fails loudly with ErrHookWhereUnsupported on\n  insert/upsert \n[…]\nnts, and execution-only Iterate.\n\nThe full pre-ADR test suite passes unmodified; module-wide go vet and\ngo test -race are green. Closes the last conventions-divergence row\n(dao per-call ctx) on merge.",
          "is_bot": false,
          "headline": "dao: implement ADR-0009 — query-time options & the hook/middleware se…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T10:21:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6a40e04692a96807a967b54ca780073c97e5cac0",
          "body": "approved_with_amendments r2 (agents/lector/reviews/\n2026-07-04-golib-dao-adr-0009-rereview.md): tightened §2.6 COPY wording\n(no non-error veto signal — a hook error fails the flush per the §2.4\nabort rule; rewriteable bulk statements mean chunked INSERT), corrected\nthe file-plan criteria count to 1-9, recorded r2 in §7, flipped status\nProposed -> Accepted.",
          "is_bot": false,
          "headline": "docs/dao: ADR-0009 revision 3 — lector r2 nits; status Accepted",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T10:21:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "348274c55b3a5feca4953c8b33f392ec02daf903",
          "body": "change_requested r1 (agents/lector/reviews/2026-07-04-golib-dao-adr-0009-review.md):\n- must-fix: per-op Stager semantics — Where covers the where-capable ops\n  only; on INSERT/UPSERT it fails loudly with ErrHookWhereUnsupported\n  instead of pretending to scope; the tenant example branches on Op and\n\n[…]\nes: duplicate hook names panic at dao.New; SkipHooks skips all\n  bearers; identifier trust wording strengthened.\nAcceptance criteria expanded to 9 incl. the new failure modes. §7 review\nhistory added.",
          "is_bot": false,
          "headline": "docs/dao: ADR-0009 revision 2 — apply lector r1 review amendments",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T10:21:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "661776e23f3896c831a1a1eb4d1fa76f9c3a9eeb",
          "body": "…sed)\n\nSpecifies the query-time extensibility seam the 2026-07-04 audit named the\npackage's largest gap vs LM's DAL: a single three-phase Hook pipeline\n(BeforeBuild intent mutation via a type-erased Stager / BeforeExec SQL+args\nobserve-or-rewrite / AfterExec outcome + error transform) with an Op\ndis\n[…]\n-hooks fast path. Re-establishes docs/dao/ as the in-repo home of the\ndossier (ADR-0001..0008 predate the repo's docs tree).\n\nAuthored for golib 06; implementation follows review as a separate change.",
          "is_bot": false,
          "headline": "docs/dao: ADR-0009 — query-time options & hook/middleware seam (propo…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T09:38:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "994540614411510bca045b7166c739cf86a8fe02",
          "body": "…o, Entry/Fields/slog, stdlib-shaped collections (golib 05)\n\nAligns the utility packages with shared/conventions/golib.md (audit\n2026-07-04, phase 1) — this empties the divergences table except the dao\nper-call-ctx row, which belongs to the ADR-0009 seam design.\n\nthreadsafe:\n- Value[T].Lock()/Unlock\n[…]\n the ErrResponseTooLarge\n  sentinel (errors.Is-able).\n\nDocs: threadsafe README added; collections/ingestor/logger/root READMEs\nupdated for the new surfaces. All packages pass go vet and go test -race.",
          "is_bot": false,
          "headline": "conventions-alignment sweep: options idiom, ctx-first ingestor, Do/RD…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T01:38:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "36d3e81f47d3e169857e726de97b7bd5d45cb5c3",
          "body": "…t scan arity, go 1.25.3 deps (golib 04)\n\nResolves the three must-fixes from lector's 2026-06-23 implementation\nreview (status change_requested):\n\n1. Numeric scan corruption: assign() used reflect Convert for any numeric\n   pair, silently wrapping negative→unsigned, overflowing narrow ints,\n   and t\n[…]\nmpanion should-fix (require golib v0.0.0 + replace => ../..\nbreaks external 'go get' of the nested module) needs version tags on the\nroot module to resolve — surfaced separately as a release decision.",
          "is_bot": false,
          "headline": "dao/bigquery: resolve review must-fixes — checked numeric scan, stric…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T01:11:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "929a3b0b6b480f31ac75a1471874fdaaf63e84de",
          "body": "…008)\n\nA dao.DataConn for BigQuery in a separate nested module so the heavy GCP SDK is\npulled only by callers that use it; the golib/dao core stays dependency-light.\n\n- BigQueryDialect: backtick QuoteIdent, ? positional placeholders, and the\n  no-transaction / no-upsert / no-RETURNING / no-LastInser\n[…]\nowIterator -> []bigquery.Value -> positional\n  Scan (INT64/FLOAT64/DATE/DATETIME/NUMERIC conversions), per LM's ValueLoader\n- creds-free unit tests + build-tagged, env-gated integration tests + README",
          "is_bot": false,
          "headline": "dao/bigquery: BigQuery driver over the no-transaction contract (ADR-0…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T01:11:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a63ae9b029ae780d3da583acae51eb10dc10d3aa",
          "body": "Generalize the one DataConn/Dialect contract to OLAP / append-only stores\n(BigQuery first) without a parallel DAO hierarchy.\n\n- add dao.ErrUnsupported sentinel\n- add Dialect capability predicates SupportsTransactions / SupportsUpsert /\n  SupportsLastInsertID, defaulted on GenericDialect (postgres/sq\n[…]\nTURNING nor LastInsertID runs the DML and returns the\n    zero id with a nil error (documented no-generated-id insert)\n- capabilities_test.go covers all of the above incl. untouched-no-tx-conn-commits",
          "is_bot": false,
          "headline": "dao: read-mostly / no-transaction driver contract (ADR-0008)",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T01:11:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ed8e1f798a9890a077475392bf63aadedabc4e02",
          "body": "StringOp rendered `col ILIKE ?`, but ILIKE is Postgres-only — it fails on\nSQLite and MySQL. Render `LOWER(col) LIKE LOWER(?)` instead, which is\ncase-insensitive on Postgres, SQLite, and MySQL alike. Updated the search-op\ntests and the USAGE note accordingly.\n\nFound while building a SQLite-backed consumer of the dao package.",
          "is_bot": false,
          "headline": "dao: make StringOp case-insensitive match portable across dialects",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T01:11:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7793c6e84e574c54f842a4dca7dfe7e0a9b76fae",
          "body": "…acters in StringOp (golib 03)\n\nTwoPhase().Commit() previously ran a support check and then the ordinary\nordered commit — 2PC was advertised but non-functional, and no dialect\nreported TwoPhaseSupported() (ADR-0005 acceptance criterion 6 unmet).\n\nEngine:\n- Dialect gains the ADR's two-phase trio: Pre\n[…]\neLike helper with an explicit ESCAPE\nclause — searching \"50%\" matches literally instead of wildcarding.\nLike() keeps raw-pattern semantics by design; its doc now says to use\nEscapeLike for user input.",
          "is_bot": false,
          "headline": "dao: implement two-phase commit (ADR-0005 §2.3); escape LIKE metachar…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T00:59:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "96e68a04cae34fd2958500333c6f11d80c094c2f",
          "body": "…r (golib 02)\n\nstatusRecorder embedded the http.ResponseWriter interface, which promotes\nonly Header/Write/WriteHeader — type assertions for http.Hijacker,\nhttp.Flusher, http.Pusher, and io.ReaderFrom failed on the wrapper, so any\nWebSocket upgrade behind RequestLogger errored ('response does not\nim\n[…]\na clear message\n  (matching the bad-route startup policy): the router is build-then-read\n  and a late registration was a silent data race against dispatch.\n\nAll packages pass go vet and go test -race.",
          "is_bot": false,
          "headline": "server/http: forward optional writer interfaces through statusRecorde…",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T00:32:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "44a2a39ecca299ddd02a6894f5dbff0b5ca04fd1",
          "body": "request:\n- Params.Timeout is now a true time.Duration (was multiplied by\n  time.Second, so idiomatic values overflowed into ~infinite deadlines;\n  Get/Post hardcoded ~27.7h). Zero means DefaultTimeout (10s), negative\n  means no timeout. Request no longer mutates params.Timeout.\n- New ctx-first Do(ct\n[…]\n/JSON writers now\n  have full test coverage (content, batching, filename format, error\n  aggregation via BatchErrors, concurrent Commit/Flush under -race).\n\nAll packages pass go vet and go test -race.",
          "is_bot": false,
          "headline": "request, ingestor: P0 correctness fixes (audit 2026-07-04, golib 01)",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-07-04T00:26:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8d8782758b9c1f1f4a3643ecb19266b665e8e9bf",
          "body": "Extends the single-process scaffold into a concurrent, multi-session suite that\nexercises golib/dao + dao/postgres against a real Postgres, driven through the new\ngolib/server/http component and the golib request client.\n\n- testdata/migrations/0001_integration_schema.sql: sql-migrate Up/Down for\n  g\n[…]\n distinct RETURNING ids, and an on-demand join.\n\nBuild-tagged `integration`; skips without TEST_PGURL. Verified green (13/13) under\ngo test -tags integration -race ./dao/postgres/ against Postgres 16.",
          "is_bot": false,
          "headline": "dao/postgres: two-process integration tests over the HTTP server",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-06-19T13:14:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f4bc90fe0a693dd22f6fdba55bfe78830c5da466",
          "body": "golib/server is a generic, dependency-free routing/middleware/lifecycle core;\ngolib/server/http (package httpserver) is the net/http transport layered on top,\ngiving chi-style ergonomics over that core. It complements the request client.\n\nCore (golib/server, stdlib-only):\n- Router[H]: generic tree r\n[…]\nts.\n\nFully doc-commented with runnable godoc examples. Tests pass under -race; the core\ncarries no third-party deps, and the transport's only runtime deps are logger and\nserver (request is test-only).",
          "is_bot": false,
          "headline": "Add server: transport-agnostic HTTP server subsystem",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-06-19T13:14:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "45e626beaaf1161393930bfd3da630a2738ef842",
          "body": "New packages:\n\n- logger: small, zero-dependency, toggleable, level-based logging hook. The\n  Logger interface is shape-identical to monstercat/golib/logger; Adapt bridges\n  any external logger without a dependency.\n\n- dao: generic DAL core (zero external dependencies). One declaration per entity\n  d\n[…]\ne normal go test suite.\n\nDocs: dao/README.md (reference) + dao/USAGE.md (cookbook) + per-driver READMEs.\nThe design ADRs for this package are maintained in the team knowledge base rather\nthan in-repo.",
          "is_bot": false,
          "headline": "Add dao: generic driver-agnostic data-access layer, plus logger",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-06-19T05:57:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "570f2f1b741b4009f385a196da15fbc1b6e72f61",
          "body": null,
          "is_bot": false,
          "headline": "README updated",
          "author_name": "John Lee",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-04-06T10:31:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09c668ec1c0b3f9906ebbbe724c7db663046bfc6",
          "body": null,
          "is_bot": false,
          "headline": "request pkg added",
          "author_name": "John Lee",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-04-06T10:25:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0e313a0524c2eee02ba9290c7f0298c699b9934",
          "body": null,
          "is_bot": false,
          "headline": "collections and license added",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-04-06T04:43:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4bcd5c32831e8576ed4c56c453df23b978214a43",
          "body": null,
          "is_bot": false,
          "headline": "initial commit",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-04-06T04:09:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "784befc2ba78f679448ce57767dc91a6147ab1f9",
          "body": null,
          "is_bot": false,
          "headline": "first commit",
          "author_name": "johno",
          "author_login": "yongjohnlee80",
          "committed_at": "2026-04-06T03:43:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 4,
      "commits_last_year": 49,
      "latest_release_at": "2026-07-19T21:09:22Z",
      "latest_release_tag": "v0.2.2",
      "releases_from_tags": true,
      "days_since_last_push": 7,
      "active_weeks_last_year": 6,
      "days_since_latest_release": 7,
      "mean_days_between_releases": 5.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/yongjohnlee80/golib",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/yongjohnlee80/golib",
          "is_deprecated": false,
          "latest_version": "v0.2.2",
          "repository_url": "https://github.com/yongjohnlee80/golib",
          "versions_count": 4,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-19T21:09:22Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 7
        }
      ]
    },
    "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,
        "collected_at": null
      },
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "dao/bigquery/go.mod",
        "go.mod"
      ],
      "largest_source_bytes": 58159,
      "source_files_sampled": 253,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "go.mod"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go"
      ],
      "dependencies": [
        {
          "name": "github.com/coder/websocket",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.8.15"
        },
        {
          "name": "github.com/jackc/pgx/v5",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v5.10.0"
        },
        {
          "name": "golang.org/x/sys",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.46.0"
        },
        {
          "name": "golang.org/x/term",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.44.0"
        },
        {
          "name": "modernc.org/sqlite",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.52.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 12,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "yongjohnlee80",
          "commits": 49,
          "avatar_url": "https://avatars.githubusercontent.com/u/38369998?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 5 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/23 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": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 10,
            "reason": "project is fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "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": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "24 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "3269fd011880935813e877ca10da2b9dbb3ad270",
        "ran_at": "2026-07-27T14:24:18Z",
        "aggregate_score": 3.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-19T21:09:44Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-04T13:25:00Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/yongjohnlee80/golib",
    "host": "github.com",
    "name": "golib",
    "owner": "yongjohnlee80"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 48,
      "inputs": {
        "security": 33,
        "vitality": 75,
        "community": 24,
        "governance": 54,
        "engineering": 44
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 75,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "commits_last_year": 49,
              "human_commit_share": 1,
              "days_since_last_push": 7,
              "active_weeks_last_year": 6
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 7 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "6/52 weeks with commits",
                "points": 4.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "49 commits in the last year",
                "points": 15.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 49
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "releases_count": 4,
              "latest_release_tag": "v0.2.2",
              "releases_from_tags": true,
              "days_since_latest_release": 7,
              "mean_days_between_releases": 5.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "4 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 7 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~5.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 5.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 24,
        "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": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 54,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 13,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "merged_prs": 12,
              "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": "12/12 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 12,
                      "decided": 12
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/23 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 55,
            "inputs": {
              "followers": 43,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "yongjohnlee80",
              "public_repos": 26,
              "account_age_days": 3026
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "43 followers of yongjohnlee80",
                "points": 11.8,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 43,
                      "login": "yongjohnlee80"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "26 public repos, account ~8 yr old",
                "points": 22.4,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 26
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 8
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "packages": [
                "github.com/yongjohnlee80/golib"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 7
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 7 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "4 published versions",
                "points": 12,
                "status": "partial",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "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": "at_risk",
        "name": "Engineering Quality",
        "value": 44,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "critical",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 24,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "0 out of 5 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": 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": 33,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 33,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 13,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 5,
              "scorecard_aggregate": 3.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 5 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/23 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 workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is fuzzed",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "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": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "24 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 58,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.878,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "43 of 49 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 43,
                      "sampled": 49
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 62,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "dao/bigquery/go.mod",
                "go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "dao/bigquery/go.mod, go.mod (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "dao/bigquery/go.mod, go.mod"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 49",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 49
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 58159,
              "source_files_sampled": 253,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/253 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 253,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T14:24:28.324760Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/y/yongjohnlee80/golib.svg",
  "full_name": "yongjohnlee80/golib",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenGo.