Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-26 03:59 UTC

go-again / liteorm

LiteORM for modern Go

GoApache-2.0★ 5 estrellas⑂ 0 forksdesde jun 2026Ver en GitHub ↗

go-again/liteorm tiene un índice de salud de 58 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Engineering Quality (90/100) y la más baja, Community & Adoption (29/100). Se actualizó por última vez hace 21 días. Una sola persona concentra la mayor parte del trabajo reciente.

58
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

58
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

go-againOrganización
0 seguidores12 repositorios públicosdesde dic 2022

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Goliteorm.orgv0.14.0-9hace 21 días
Goliteorm.org/genv0.14.0-4hace 21 días

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

68Moderado · 22% del índice global
Cómo se puntúa
28.8/36Recencia de push — último push hace 21 días
8.3/36Cadencia de commits — 12/52 semanas con commits
17.9/18Volumen de commits — 98 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year98
human_commit_share1
days_since_last_push21
active_weeks_last_year12
Cómo se puntúa
16.2/27Publica versiones — 9 etiquetas de versión (sin releases de GitHub)
36/36Recencia de las versiones — última versión hace 21 días
27/27Cadencia de publicación — una versión cada ~4,7 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count9
latest_release_tagv0.14.0
releases_from_tags
days_since_latest_release21
mean_days_between_releases4,7
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

29Crítico · 18% del índice global
Cómo se puntúa
9.8/60Estrellas — 5 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars5
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (Apache-2.0)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

58Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
6/22.5Distribución de commits — el principal contribuyente firma el 74% de los commits
2.7/13.5Amplitud de contribuyentes — 2 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 4 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled2
top_contributor_share0,735
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
38.2/38.3Aceptación de PR — 2/2 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 2/28 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs2
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
0/25Alcance del propietario — 0 seguidores de go-again
15.3/25Trayectoria — 12 repos públicos, cuenta de ~3 años
Datos de entrada utilizados
followers0
owner_typeOrganization
is_verified
owner_logingo-again
public_repos12
account_age_days1305
Cómo se puntúa
25/25Publicado y resoluble — 2 paquete(s) en go
35/35Recencia de publicación — última publicación hace 21 días
20/20Historial de versiones — 9 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesliteorm.org, liteorm.org/gen
ecosystemsgo
any_deprecatedno
min_days_since_publish21

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

90Excelente · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 1 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — .golangci.yml
0/9.6Hooks de pre-commit
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 2 out of 2 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno

Documentación

100Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://liteorm.com
10/10Descripción del repositorio
10/10Topics — 6 topics
10/10Wiki
Datos de entrada utilizados
topicsgolang, mssql, mysql, orm, postgresql, sqlite
has_wiki
homepagehttps://liteorm.com
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

40En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 2 out of 2 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 2/28 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 4 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — sin datos
0.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
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 — sin datos
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
3.8/7.5Vulnerabilities — 5 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4
Excluidos de la puntuación (sin datos o no aplicable): packaging, signed_releases. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

76Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 89 de 98 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,908
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes11.422
Cómo se puntúa
18/18Arranque con un solo comando — justfile
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .golangci.yml
11/11Verificación estática de tipos — Go (tipado estático)
10/10Entorno reproducible — lockfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 98
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
1/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
Datos de entrada utilizados
has_nixno
has_tests
lockfilesgo.sum
has_dockerfileno
typed_language
bootstrap_filesjustfile
has_devcontainerno
has_linter_config
typecheck_configs
agent_commit_share0
toolchain_manifestscmd/sqlc-gen-liteorm/go.mod, conformance/go.mod, dialect/mssql/go.mod, dialect/mysql/go.mod, dialect/postgres/go.mod, dialect/sqlite/go.mod, dialect/sqlite/vault/go.mod, examples/blog/go.mod, examples/codegen/go.mod, examples/encryption/go.mod, examples/fixtures/go.mod, examples/gormport/go.mod, examples/largeobjects/go.mod, examples/logging/go.mod, examples/migrate/go.mod, examples/orm/go.mod, examples/queries/go.mod, examples/query/go.mod, examples/search/go.mod, examples/vault/go.mod, gen/go.mod, go.mod
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — Go (tipado estático)
55/55Tamaños de archivo manejables — 0/208 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageGo
largest_source_bytes53.515
source_files_sampled208
oversized_source_files0
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_files

Datos clave

5estrellas de GitHub
2contribuidores
98commits en los últimos 12 meses
21días desde el último push
9versiones publicadas
1factor bus
0issues abiertas
Goecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch go package 'liteorm.org/conformance' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

OpenSSF Scorecard 4.0 / 10
4.0agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-26 03:59 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests2 out of 2 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 2/28 approved changesets -- score normalized to 0
10Contributorsproject has 4 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
n/dPackagingpackaging workflow not detected
1Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 1
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
5Vulnerabilities5 existing vulnerabilities detected
Dependencias directas 7
RegistroPaqueteRestricción de versiónManifiesto
Goliteorm.orgv0.14.0conformance/go.mod
Goliteorm.org/dialect/mssqlv0.14.0conformance/go.mod
Goliteorm.org/dialect/mysqlv0.14.0conformance/go.mod
Goliteorm.org/dialect/postgresv0.14.0conformance/go.mod
Goliteorm.org/dialect/sqlitev0.14.0conformance/go.mod
Goliteorm.org/genv0.14.0conformance/go.mod
Goliteorm.orgv0.14.0gen/go.mod
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "golang",
        "mssql",
        "mysql",
        "orm",
        "postgresql",
        "sqlite"
      ],
      "is_fork": false,
      "size_kb": 911,
      "has_wiki": true,
      "homepage": "https://liteorm.com",
      "languages": {
        "Go": 886367,
        "Just": 17919,
        "Python": 1171
      },
      "pushed_at": "2026-07-04T05:17:47Z",
      "created_at": "2026-06-18T02:48:36Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-04T05:13:09Z",
      "description": "LiteORM for modern Go",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "Organization",
      "login": "go-again",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/121585095?v=4",
      "created_at": "2022-12-28T22:57:57Z",
      "is_verified": null,
      "public_repos": 12,
      "account_age_days": 1305
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-07-04T05:12:56Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-06-29T23:16:08Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-06-20T01:35:31Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-06-19T06:41:40Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-06-19T05:19:13Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-06-19T00:34:01Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-06-18T03:49:26Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-06-08T22:55:08Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-05-27T20:12:43Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "28d6a631dbc8f9b740fb5bd8cd7693e425e05c2a",
          "body": null,
          "is_bot": false,
          "headline": "release v0.14.0",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-07-04T05:12:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b64f95dc874bd71c795eeee25ea3e34486e76d0",
          "body": "Split the monolithic orm and query guides into task-focused pages — reading data,\nwriting data, joins & subqueries, streaming & aggregates, advanced SQL, raw SQL,\nCRUD with the Repo, declaring models, scopes, indexes & constraints, and composite\nkeys — and add topic guides for connecting, context & \n[…]\nnd a\nchangelog reference page, expand the encryption, studio (now its own\nliteorm.org/studio module), supported-Go, and migrations guides, and reorganize\nthe docs index and skill cross-links to match.",
          "is_bot": false,
          "headline": "docs: restructure guides into focused topic pages",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-07-04T05:05:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4ad3d0601ec1bce31b9fda14cdb1630e75a437db",
          "body": "…lity\n\nAdd a quicSQL guide (the quicsql:// DSN, WrapDB/WrapConn, mTLS/keyring auth, and\nwhich features run over the wire) and its skill; a changesets skill and an\nobservability skill (the metrics/tracing/audit Observer seam, distinct from slog\nlogging); and Prometheus- and OpenTelemetry-style recipes in the observability\nguide. Cross-link the remote path from the search, changeset, and large-object\nguides, and list the remote backend in the backends reference.",
          "is_bot": false,
          "headline": "docs: guides and skills for quicSQL remote, changesets, and observabi…",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-07-04T05:04:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f02c5f3b7052df035e52aac9814cd02a8d9b8a5",
          "body": "…ession\n\nWhen the session is remote (RawDB present), Capture pins one server connection so\nthe SESSION and the writes fn makes share it, and Apply/Invert/Concat run\nserver-side through the driver's changeset conn via WithRemoteConn. Remote Apply\nrejects conflict handlers and table filters, which would otherwise run client-side\nagainst a server connection; capture logs statements the same way as local.",
          "is_bot": false,
          "headline": "dialect/sqlite/changeset: drive the SESSION extension over a remote s…",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-07-04T05:00:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f24905e2f151b1a8dfc729500a0ae6c6ae61a10",
          "body": "A remote quicSQL handle has no local *gosqlite.DB, so the streaming handle API\n(Open/Read/Truncate returning native io.WriterAt/ReaderAt) stays local-only; over\nthe wire large objects move whole. When the session is remote (RawDB present),\nWriteFrom streams the reader up and stores it, ReadAll fetch\n[…]\nk, and Size/Drop run server-side via the driver's blob conn, provisioning the\nserver store with the field's chunk/compression/dedup options on first use and\nwriting the allocated id back into the row.",
          "is_bot": false,
          "headline": "dialect/sqlite/lob: transfer large objects whole over a remote session",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-07-04T05:00:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "43505bac655835190550df41f8e0caa09b794db9",
          "body": "…sion\n\nOver a remote quicSQL handle there is no local *gosqlite.DB to open the vec0/fts5\nsidecars against, so run the KNN, the FTS MATCH, and the hybrid RRF fusion as SQL\non the server (the server must have vec0 registered; fts5 is built in), gated on a\nremote-session check. Hit loading now fetches \n[…]\nead of one Repo.Get per key — over\nthe wire the per-key form was k network round trips. Add scan.PrimaryKeyValue (the\nread counterpart of SetPrimaryKey) to index the fetched rows back to their scores.",
          "is_bot": false,
          "headline": "dialect/sqlite/search: run vector/FTS/hybrid search over a remote ses…",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-07-04T04:59:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2e2df00e3cb1784a721feeb0f22ddf37b650025a",
          "body": "Adapt an already-open *sql.DB — typically a connection to a remote quicSQL server\nvia the database/sql \"quicsql\" driver — as a liteorm.DB on the SQLite dialect, so\nthe ORM and query builder run over the wire: statements, SAVEPOINT-nested\ntransactions, introspection, and migrations all execute server\n[…]\nthe underlying *sql.DB and WithRemoteConn reaches\na driver capability via sql.Conn.Raw, so the sqlite subpackages drive server-side\nops without importing the driver; sqladapter gains a matching RawDB.",
          "is_bot": false,
          "headline": "dialect/sqlite: quicSQL remote backend — WrapDB/WrapConn over a *sql.DB",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-07-04T04:59:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9ef52c43b29dc727d04acc2b4f91b494161024c6",
          "body": null,
          "is_bot": false,
          "headline": "release v0.13.0",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-29T23:16:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c9049fd1b840421ac09b144c5760df504746389d",
          "body": "…n helpers\n\nAdd a field-codec seam: liteorm.org/codec transforms a struct field on the way to\nand from its column without changing the Go type, by tag (codec:<name>, or the\ngorm serializer:<name> alias). Codecs run in the shared scan layer, so the\ntransform applies the same through both the query an\n[…]\nteorm.Transaction(ctx, db, fn) commits or rolls\nback (and rolls back on panic), and TransactionRetry retries the whole unit of\nwork on a normalized serialization/deadlock failure across every backend.",
          "is_bot": false,
          "headline": "orm,query: field codecs, query observers, lifecycle hooks, transactio…",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-29T22:46:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2dfd63872c7eeec2124d696ebf822a3b732071db",
          "body": "…features\n\nPin gosqlite.org, blobstore, and vfs/crypto to v0.12.0. The removed vfs/compress\n(and OpenCompressed/OpenCompressedConfig) give way to the new live vault\ncontainer, and a Wrap/PinConn seam lets a VFS-opened *gosqlite.DB drive a\nliteorm.DB and a raw *sql.Conn drive a blobstore ConnStore.\n\n\n[…]\n rest in a vault container, live and\nper-transaction durable. The examples/compressed demo, the compression guide, and\nits skill are replaced by examples/vault, docs/guides/vault.md, and skills/vault.",
          "is_bot": false,
          "headline": "dialect/sqlite: pin gosqlite v0.12.0 — vault module and large-object …",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-29T22:46:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "83d784f1dfd2534a07c8730caa801095ebb7e858",
          "body": "Add WithLOBChunkSize / WithLOBCompression AutoMigrate options so an operator can choose a LOB field's chunk size and compression per database (e.g. from a CLI flag) instead of only via the struct tag. Each overrides one knob, merging over the tag; a bad value (non-positive chunk, unknown compression level) or an override naming a non-LOB field fails AutoMigrate before any DDL. Document the per-object / per-launch semantics and the first-open freeze, and mark the SchemaOf-cached Schema read-only.",
          "is_bot": false,
          "headline": "orm: runtime LOB provisioning overrides",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-20T12:51:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c129fa8ce567346bcba9e9a80202cd43ba9926d4",
          "body": "Add a WithSQLArgs(true) case proving the pinned session logs arg values, not only the redacted-count case, and a case asserting Pin rejects a transaction handle.",
          "is_bot": false,
          "headline": "dialect/sqlite: cover pin logging inheritance (positive + tx rejection)",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-20T10:24:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dd83271b4e3ae64f789ed6e967479fade41a7cf",
          "body": "Clarify that an over-256-byte []byte is logged as a \"<N bytes>\" summary string (so a handler type-switching on AttrArgs must not assume blob args stay []byte), and that statements below the session layer — savepoint control and Postgres LISTEN/UNLISTEN/CopyFrom — are not logged (they carry no bind values).",
          "is_bot": false,
          "headline": "core: document the logged-args type change and unlogged statement paths",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-20T10:24:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d88ac689dbbafe8fb9529f9fec690513a11f244d",
          "body": null,
          "is_bot": false,
          "headline": "release v0.12.0",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-20T01:35:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1640d9e73f6f99dff40ee9fc06545e2e1a42f22c",
          "body": "… logging\n\nBump gosqlite.org and its blobstore/crypto modules to v0.10.0 (a clean upgrade —\nno API changes) and add the new gosqlite.org/vfs/compress module.\n\nCompressed databases: OpenCompressed / OpenCompressedConfig store a whole SQLite\ndatabase compressed on disk via vfs/compress. orm, query, an\n[…]\ningle-connection session now inherits the source DB's logger and\nWithSQLArgs setting (it previously fell back to slog.Default with arg values\nexposed), so SESSION/changeset statements log identically.",
          "is_bot": false,
          "headline": "dialect/sqlite: gosqlite v0.10.0 + compressed databases; pin inherits…",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T21:26:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c20caa95cba9dfc50eb76a5ed7a1957e086b9aa",
          "body": "A []byte or string bind argument over 256 bytes is now logged as a \"<N bytes>\"\nsummary or a rune-safe truncated preview, capped at the source so every slog\nhandler (JSON, text, the colored dev handler) stays bounded — a statement that\nbinds a multi-megabyte blob or text no longer dumps the whole pay\n[…]\nrgs slice is copied only when something is actually capped.\n\nAlso expose (*DB).LogArgs so a backend that binds a DB to a specific connection\ncan propagate the WithSQLArgs setting alongside the logger.",
          "is_bot": false,
          "headline": "core: bound oversized bind args in statement logs",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T21:26:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "85c5328887ec2d30732c353d074dc697d0ae68ac",
          "body": "…jects, DropTriggers\n\ngosqlite v0.9.0 moves blobstore and encryption into their own modules\n(gosqlite.org/blobstore, gosqlite.org/vfs/crypto).\n\nEncryption: OpenEncrypted now opens through the vfs/crypto VFS; add\nOpenEncryptedConfig for AES-XTS, a passphrase-derived key, a non-default\npage size, or c\n[…]\nnes the\nper-object chunk size and optional at-rest compression. Adds examples/largeobjects.\n\nDropTriggers: idempotent, quote-only DROP TRIGGER IF EXISTS helper.\n\nUpdates docs and skills for all three.",
          "is_bot": false,
          "headline": "dialect/sqlite: gosqlite v0.9.0 — encryption via vfs/crypto, large ob…",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T20:49:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2a48d62951a7e779e5b18755d7a297ce2edc566b",
          "body": "mods.sh and the Justfile module list now emit only ./… entries, so a local\n`use ../../sqlite` overlay (for building against a sibling gosqlite checkout)\nno longer leaks into the swept module set that drives test/race/vet/lint.\n\nAdd a work-check recipe — wired into `lint` and a matching CI lint step —\nthat fails on any `../`-prefixed use entry in the committed go.work, since\nCI's checkout has no such sibling.",
          "is_bot": false,
          "headline": "ci: gate only in-repo modules; reject out-of-repo go.work overlays",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T20:49:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7aa8390914e103acb60a67f866c354a0768fa02b",
          "body": null,
          "is_bot": false,
          "headline": "release v0.11.0",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T06:41:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "969a972ec86acd599e069ff2ab80bb807d542109",
          "body": "- Implements typed support for SQLite's implicit rowid column.\n  RowidCol() provides a typed, validated way to reference `rowid` in\n  clauses like Order or Pluck.\n- Introduces the Unvalidated() method on Column[V], allowing users to\n  type-safely query columns that are not part of the model schema (e.g.,\n  virtual table \"scope\" column from spellfix1).",
          "is_bot": false,
          "headline": "Refactor type safety and add support for unvalidated columns",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T06:35:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1738e77bcdcdec0235c79320acd34d7d380e4c6",
          "body": "The plan printed git commands with trailing \"# ...\" comments and a standalone\n\"# not re-tagged\" line. zsh (unlike bash) does not treat '#' as a comment in an\ninteractive shell, so pasting the block ran the comments as arguments. The\nRELEASE PLAN block now contains only bare commands between two rule lines; the\ncontext (what is staged, which tags, what is skipped) prints as narration above\nit, and the consumer caveats below.",
          "is_bot": false,
          "headline": "justfile: emit the release plan as bare, copy-pasteable commands",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T05:26:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fdf5388412fa1e1437001db07b993210d4cb354",
          "body": null,
          "is_bot": false,
          "headline": "release v0.10.0",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T05:19:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fdcebc67363830abc370864b3e24b614fc63800a",
          "body": "Two fixes to the release/build tooling:\n\n- The release recipe bumped gosqlite with `go mod edit`, which never touches\n  go.sum, so the new version's hash was missing. It now uses `go get`, which\n  updates go.mod and go.sum together. (Intra-repo liteorm.org* deps use a local\n  `replace`, so those hav\n[…]\nple main packages' binaries into the working tree\n  (`go build ./...` writes an executable per main package). It now builds into a\n  throwaway dir, so nothing is left behind for `git add` to sweep up.",
          "is_bot": false,
          "headline": "justfile: refresh go.sum on gosqlite bump; stop leaving build binaries",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T05:12:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7a03134c92d130e6bab08726267af49e7e3b8736",
          "body": "Typed predicates + SQLite spellfix1 handle to retire raw SQL fragments",
          "is_bot": false,
          "headline": "Merge pull request #2 from go-again/feat/zero-raw-sql",
          "author_name": "arthurpro",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T04:52:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f4e2835b8a1b3133ca76b7f0f4d6dfddc16c2ee6",
          "body": "The release recipe tagged every publishable module on every release (lockstep),\naccruing a fresh tag per module even when its code was unchanged. It now detects\nwhich modules' tracked files changed since their last tag and bumps + tags only\nthose — pinning each released module's internal requires to\n[…]\nrrent tag otherwise. Pass `all` as the third\nargument for a lockstep release (every module), for a breaking root change where\ndependents must be re-released regardless of whether their own code moved.",
          "is_bot": false,
          "headline": "justfile: release recipe tags only changed modules",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T04:43:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3ec9a981a89a5c2cd8337e1006180063bc5dcaea",
          "body": "Add a typed handle for gosqlite's spellfix1 fuzzy-match vocabulary — the third\nSQLite search extension alongside Vector and FullText. NewSpellfix/OpenSpellfix\ncreate or attach a vocabulary, Add populates it (one transaction, deduped),\nCorrect returns the nearest words by edit distance, and Size/Drop\n[…]\nting the package registers the spellfix1 module.\n\nAlso documents the SQLite MATCH predicate and the spellfix1 handle in the\nsqlite-search guide and skill, and exercises MATCH against a spellfix1 vtab.",
          "is_bot": false,
          "headline": "dialect/sqlite/search: spellfix1 fuzzy-correction handle",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T04:12:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b8495348295e27c8112dc6ee764449d29aa85df9",
          "body": "Add typed query-builder surface for cases that previously forced raw\nWhere/Set/Field fragments:\n\n- OnConflict(...).DoNothing(): ignore a conflicting row on upsert — ON CONFLICT\n  DO NOTHING on SQLite/Postgres, a no-op ON DUPLICATE KEY UPDATE on MySQL, and a\n  MERGE with no matched arm on SQL Server.\n[…]\nreal-SQLite behavior tests, and\normsuite conformance (DoNothing, HasPrefix escaping, Inc, PluckExpr, ExistsField).\nQuery guide, recipes, pitfalls, and orm/orm-models skills updated to the typed forms.",
          "is_bot": false,
          "headline": "query, sqlgen, dialect: typed predicates to retire raw SQL fragments",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T04:12:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2858367c2ebcdb3abcd72928997c8a9c03c91a33",
          "body": null,
          "is_bot": false,
          "headline": "bump up version",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T00:34:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a05f61cc0bde849d816a962250ad508b9fd0d84",
          "body": null,
          "is_bot": false,
          "headline": "update sqlite search docs",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-19T00:32:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f84ddaff81996170b9a5b12b12433da405707a5e",
          "body": "Declarative vector/full-text/hybrid search, at-rest encryption docs, plural table names",
          "is_bot": false,
          "headline": "Merge pull request #1 from go-again/feat/search-naming",
          "author_name": "arthurpro",
          "author_login": "arthurpro",
          "committed_at": "2026-06-18T17:41:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89c6226eb5cb32742b81427e1584465daa0eb02f",
          "body": null,
          "is_bot": false,
          "headline": "internal, orm, query: use slices.Concat/Clone and range-over-int",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-18T16:52:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d84e85f9bf84aba5c7a8fec58234726f767fb1d6",
          "body": "Add a dedicated encryption example (open with a key, ciphertext on disk,\nreopen, reject the wrong key), guide, and skill, and surface encryption\nin the README, docs index, and skills index — moving it out of the\nsearch docs where it had been mis-bundled.\n\nexamples/encryption is registered in go.work.",
          "is_bot": false,
          "headline": "docs, examples: at-rest encryption guide, example, and skill",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-18T16:35:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80fe8fef8408b6ad25dbf77daf307245c63b6e09",
          "body": "Declare search indexes on a model (a SearchIndexes() method or vec:/fts: tags); AutoMigrate provisions the FTS5/vec0 sidecars and keeps them current via SQL triggers (all writes) or ORM hooks (sidecar-only embeddings). Search through search.For[T](db).Vector/FullText/Hybrid, returning models in rank\n[…]\ns: the hook handle Op -> Event, removal of the unused Queryer interface, a single SearchKind enum (dialect.SearchKind), Load -> Fetch on the search read path, and inlining of one-line stdlib wrappers.",
          "is_bot": false,
          "headline": "core, orm, dialect/sqlite: declarative vector/full-text/hybrid search",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-18T15:04:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0248dea8d75f31aef14a767cec94ebab294616ce",
          "body": "sqlite.WhereRegex(column, pattern) returns a WHERE fragment that pairs a GLOB prefix with REGEXP for anchored patterns (index range scan + residual filter), falling back to a plain REGEXP for unanchored ones. Requires the gosqlite regexp extension to be registered.",
          "is_bot": false,
          "headline": "dialect/sqlite: WhereRegex for index-friendly regex filters",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-18T12:54:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d9130af70634dc149c9bcedf0557b4faf56e8e95",
          "body": "UsePluralTableNames + RegisterPlural: when enabled, the default (no-TableName) table name is pluralized snake_case (User -> users, Category -> categories), matching gorm. Off by default; an explicit TableName() always wins. A dependency-free inflector lives in internal/scan, and the toggle routes through scan.TableNameOf so the query and orm front-ends agree.",
          "is_bot": false,
          "headline": "orm: opt-in pluralized default table names",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-18T11:59:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d161d47eae093ca2a5b42e1dea92fc59098e1e27",
          "body": null,
          "is_bot": false,
          "headline": "add ci workflows with tests",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-18T04:51:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6810da6f73040dc18a3c2574b5ad4a83940c7b23",
          "body": "refactor module dependency management to make release preparation\nconsistent and safe.",
          "is_bot": false,
          "headline": "chore: automate version bumping for internal modules",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-18T03:49:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "279194fe8ba457a27449ac457cb9f707abf5ad2f",
          "body": "pre-0.8.0",
          "is_bot": false,
          "headline": "docs: overhaul technical guides and reference material",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-18T03:26:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "217fa2e0e1ac685e2f74c4e237734fa04f6c7fac",
          "body": null,
          "is_bot": false,
          "headline": "chore: Go workspace definition",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-16T20:29:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d7582bf8b7192971b1807119e8ad42499716beb0",
          "body": null,
          "is_bot": false,
          "headline": "docs: AGENTS.md and project README",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-15T18:13:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3dc56d0db0fbaecb6273f974f57a903c78d05e5c",
          "body": null,
          "is_bot": false,
          "headline": "chore: justfile task runner",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-12T17:40:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77e533ed999f69485a521cd021eb0fa34eda24c5",
          "body": null,
          "is_bot": false,
          "headline": "docs: agent skills",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-11T20:00:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0442ac2bae644be3ca8be616d05c8ce8df7f6ad",
          "body": null,
          "is_bot": false,
          "headline": "docs: operations and backend guides",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-10T21:53:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe2884077b44f304b1a19f689b713a3ac732fafb",
          "body": null,
          "is_bot": false,
          "headline": "docs: overview, getting started and front-end guides",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-09T18:23:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c802d6190d1133c8f8f2eaac9f14c0527c2838e9",
          "body": null,
          "is_bot": false,
          "headline": "examples: gorm porting, migrate runner and fixtures",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-06-08T22:55:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c644cd798bd4a135166f35413c0312c9e7e4f79",
          "body": null,
          "is_bot": false,
          "headline": "examples: codegen and annotated SQL",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-06-08T21:45:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "478131444794b53afadf74227e012ab5bead2c3f",
          "body": null,
          "is_bot": false,
          "headline": "examples: query and orm showcases",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-05T20:39:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1a66ad50b42c6af4b1ca22c334f440dc31abcf4",
          "body": null,
          "is_bot": false,
          "headline": "examples: logging and hybrid search",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-06-04T20:23:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6c7e45691d78ca0d989332e41331c021fa901b60",
          "body": null,
          "is_bot": false,
          "headline": "examples: end-to-end blog engine",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-03T19:49:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "42b830cb5cd521f63be821c1a6a64bd70c7cdbe7",
          "body": null,
          "is_bot": false,
          "headline": "test(conformance/ormsuite): associations, hooks, scopes and transactions",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-06-02T21:06:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "519853271d5813d8a645677d411997b0dec8d19b",
          "body": null,
          "is_bot": false,
          "headline": "test(conformance): orm, loadpath, logging and migrate scenarios",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-06-01T22:14:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56ae24aede8f1b670762e92ded19865b3817464a",
          "body": null,
          "is_bot": false,
          "headline": "test(conformance/ormsuite): models and core CRUD/query scenarios",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-29T20:25:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2aa117d56e74495cadf562d2dd507dbe84f0d3a",
          "body": null,
          "is_bot": false,
          "headline": "test(conformance): query and write scenarios",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-05-29T18:19:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d299bfd5f1c307bf698c2602ada93f7453374165",
          "body": null,
          "is_bot": false,
          "headline": "test(conformance): cross-dialect harness",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-05-28T21:41:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dcc99b27f41c9d6c650c9f7a0298d8c5c99b9b25",
          "body": null,
          "is_bot": false,
          "headline": "feat(orm): introspection and type normalization",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-27T20:12:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70d2e014b9f4129b522cb2bb701266e47384d4cf",
          "body": null,
          "is_bot": false,
          "headline": "feat(orm): additive AutoMigrate and FK constraints",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-26T21:23:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45522b6a57e89f3fa8a85bd9d2cc7e184e003b1c",
          "body": null,
          "is_bot": false,
          "headline": "feat(orm): typed lifecycle hooks",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-25T19:45:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bbec28b92497f6ba389e548a319deb25ca6b38a9",
          "body": null,
          "is_bot": false,
          "headline": "feat(orm): N+1-safe eager loading",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-22T17:20:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d713b3670d1d387e2424ada6c952a386c66812bb",
          "body": null,
          "is_bot": false,
          "headline": "feat(orm): associations and relation resolution",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-21T19:51:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "86cb487b9caa7856ce7cc39e273c2b1af168713b",
          "body": null,
          "is_bot": false,
          "headline": "feat(orm): CRUD Repo, reads and writes",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-20T20:56:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dfbcbe46ada5c6ac4a9a062fcc2f3ab31a102969",
          "body": null,
          "is_bot": false,
          "headline": "feat(sqlc-gen-liteorm): sqlc codegen plugin",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-05-20T20:50:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa794f13239651888b59fe67db1233c0915e3ace",
          "body": null,
          "is_bot": false,
          "headline": "feat(orm): schema from struct tags with FK inference",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-19T17:53:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e3e3dbf3d878b22bf2bb0517fa4b3a2ac75c59b",
          "body": null,
          "is_bot": false,
          "headline": "feat(gen): gorm-tag source porter",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-05-18T17:07:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4adee8757037dacf958a7886b19b2ad9f7f712e",
          "body": null,
          "is_bot": false,
          "headline": "test(query): builder benchmarks",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-15T18:02:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d164072de20539aeb1635d204b370e79bd4017e4",
          "body": null,
          "is_bot": false,
          "headline": "feat(gen): SQL to typed-Go from annotated queries",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-05-14T20:41:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "499512bd7d3ac2953666d44db25e82b9d87e32f2",
          "body": null,
          "is_bot": false,
          "headline": "feat(query): JSONB and array operators",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-13T20:56:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "72157415fd64581e4394c019bf6457686050d02b",
          "body": null,
          "is_bot": false,
          "headline": "feat(gen): typed columns and models from types and live DB",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-05-12T22:58:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ecfd38fef0262b8e5906d98b3023cf21fa24257",
          "body": null,
          "is_bot": false,
          "headline": "feat(query): multi-row UPDATE/DELETE with RETURNING",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-12T18:06:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67011e1a773e2b8c4f9354c23af5a5aa92704dc0",
          "body": null,
          "is_bot": false,
          "headline": "feat(migrate): reviewable migration emitter",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-05-11T22:15:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6c3d3fde47d966eb1e3f746d5535f4220360f9af",
          "body": null,
          "is_bot": false,
          "headline": "feat(query): window functions",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-08T21:02:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dedfcf618a143414165edc7a1d82c11584e6e5bc",
          "body": null,
          "is_bot": false,
          "headline": "feat(migrate): native runner with multi-format Load",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-05-07T21:32:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f588496e9d3962e15a726a43681d020b2ddfa39",
          "body": null,
          "is_bot": false,
          "headline": "feat(query): common table expressions",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-06T19:51:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee2614984bfe97179ff0b598410256f6fb26021a",
          "body": null,
          "is_bot": false,
          "headline": "feat(dialect/mssql): SQL Server backend with MERGE and OUTPUT",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-05-05T17:26:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c6d46c09ea0d3fd46287d004ab19fe22f44df3c",
          "body": null,
          "is_bot": false,
          "headline": "feat(query): joins, set operations and subqueries",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-04T19:29:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a906bd9be90766feaa000b5eb3ee16a331fcd2e1",
          "body": null,
          "is_bot": false,
          "headline": "feat(dialect/mysql): MySQL backend",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-05-01T19:11:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5951ed578deafbfae5df8523a87bb6e71083e5f4",
          "body": null,
          "is_bot": false,
          "headline": "feat(query): CRUD Repo with Upsert and bulk insert",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-05-01T18:53:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ddce09ae1fb4456d4ad3f9399ab21516763f7156",
          "body": null,
          "is_bot": false,
          "headline": "feat(dialect/postgres): LISTEN/NOTIFY and advanced operators",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-30T21:14:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68466a470c2ec0dd587220d79fc138d80310d090",
          "body": null,
          "is_bot": false,
          "headline": "feat(query): typed Col[V] predicates",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-04-29T21:00:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ceb1ddc47c180d0401256ba002e05e8f9cf7efef",
          "body": null,
          "is_bot": false,
          "headline": "feat(dialect/postgres): native pgx backend",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-28T20:09:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc47e2c5ae545b0fd7d2833544912ba75bb8ce0b",
          "body": null,
          "is_bot": false,
          "headline": "feat(query): typed Select builder and clauses",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-04-27T18:43:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06de740e39af3b5f9eada80221d29e9c7427fa99",
          "body": null,
          "is_bot": false,
          "headline": "feat(dialect/sqlite): session changesets",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-24T18:31:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dbe756ff17b6bc81294382ccdea64decfb3ca547",
          "body": null,
          "is_bot": false,
          "headline": "feat(dialect/sqlite): vector, FTS5 and hybrid search",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-23T22:50:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "919a4201a6cffc3d0ccb6ed825873416ff038960",
          "body": null,
          "is_bot": false,
          "headline": "feat(dialect/sqlite): CGo-free SQLite backend over gosqlite",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-23T22:15:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "155bf2c352ecbffe9c0d4be9c590e3d10b6d4f63",
          "body": null,
          "is_bot": false,
          "headline": "feat(internal/sqladapter): database/sql adapter to core contracts",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-22T22:54:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab23b0c0b03a424819b66d4d4e915270e9e98685",
          "body": null,
          "is_bot": false,
          "headline": "feat(internal/scan): generic Scan[T] with plan cache and iter.Seq2",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-21T21:29:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a8b534484916d3036cac50f733de73433f48d47",
          "body": null,
          "is_bot": false,
          "headline": "feat(internal/scan): struct-tag column resolver",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-20T20:48:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ac7cdd583a98a8eac6f6d4fcd88c2c15a1ee5b9",
          "body": null,
          "is_bot": false,
          "headline": "feat(internal/sqlgen): per-dialect renderers",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-17T20:04:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a21dac5568f6840559cd942d2245f9b17c729869",
          "body": null,
          "is_bot": false,
          "headline": "feat(internal/sqlgen): INSERT/UPDATE/DELETE and upsert/MERGE",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-16T19:15:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70e58385a8c1f2597b0b3b47a7297b49483e9ae1",
          "body": null,
          "is_bot": false,
          "headline": "feat(internal/sqlgen): SELECT clause assembly",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-15T21:53:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "162859fb68f91eec4871f57fec30407b74d8cd64",
          "body": null,
          "is_bot": false,
          "headline": "feat(dialect): Dialect interface, Feature bitset and Field",
          "author_name": "ditalini",
          "author_login": "ditalini",
          "committed_at": "2026-04-14T17:38:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4204253497ff49d8699b6ce0084ca9e636f1d035",
          "body": null,
          "is_bot": false,
          "headline": "feat(log): slog and colored statement handlers",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-04-14T17:06:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b13a51906507db5e4cbe816ce7805fe300076578",
          "body": null,
          "is_bot": false,
          "headline": "feat(core): statement logging seam",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-04-13T18:09:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c32cf10dfc1f4db6bebb6ddcba6a1d6756e59bdf",
          "body": null,
          "is_bot": false,
          "headline": "feat(core): DB, Session and savepoint-nested transactions",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-04-10T22:25:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61a7e5437865174889ea8e51e64a0e8b7a8f3a68",
          "body": null,
          "is_bot": false,
          "headline": "feat(core): normalized error sentinels and classifiers",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-04-09T21:28:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a5c765502f1f1fd15ddccb4404836a759a203b9",
          "body": null,
          "is_bot": false,
          "headline": "feat(core): demand-driven capability interfaces",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-04-08T20:17:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bcb8691cb86ed99af7051f7d3b2555c1e7ec322b",
          "body": null,
          "is_bot": false,
          "headline": "feat(core): Querier interface and neutral DB contracts",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-04-07T18:59:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f01dc5f545980b2c85862c2d50aaa614a8cbc2cd",
          "body": null,
          "is_bot": false,
          "headline": "chore: golangci-lint configuration",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-04-06T21:25:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd8218a4408f7537e0f6e0216590e4c2631a37d2",
          "body": null,
          "is_bot": false,
          "headline": "chore: bootstrap module, license and ignore rules",
          "author_name": "Arthur",
          "author_login": "arthurpro",
          "committed_at": "2026-04-06T19:50:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 9,
      "commits_last_year": 98,
      "latest_release_at": "2026-07-04T05:12:56Z",
      "latest_release_tag": "v0.14.0",
      "releases_from_tags": true,
      "days_since_last_push": 21,
      "active_weeks_last_year": 12,
      "days_since_latest_release": 21,
      "mean_days_between_releases": 4.7
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "liteorm.org",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": null,
          "registry_url": "https://pkg.go.dev/liteorm.org",
          "is_deprecated": false,
          "latest_version": "v0.14.0",
          "repository_url": null,
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-04T05:12:56Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 21
        },
        {
          "name": "liteorm.org/gen",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": null,
          "registry_url": "https://pkg.go.dev/liteorm.org/gen",
          "is_deprecated": false,
          "latest_version": "v0.14.0",
          "repository_url": null,
          "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-04T05:12:56Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 21
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 5,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "justfile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "cmd/sqlc-gen-liteorm/go.mod",
        "conformance/go.mod",
        "dialect/mssql/go.mod",
        "dialect/mysql/go.mod",
        "dialect/postgres/go.mod",
        "dialect/sqlite/go.mod",
        "dialect/sqlite/vault/go.mod",
        "examples/blog/go.mod",
        "examples/codegen/go.mod",
        "examples/encryption/go.mod",
        "examples/fixtures/go.mod",
        "examples/gormport/go.mod",
        "examples/largeobjects/go.mod",
        "examples/logging/go.mod",
        "examples/migrate/go.mod",
        "examples/orm/go.mod",
        "examples/queries/go.mod",
        "examples/query/go.mod",
        "examples/search/go.mod",
        "examples/vault/go.mod",
        "gen/go.mod",
        "go.mod"
      ],
      "largest_source_bytes": 53515,
      "source_files_sampled": 208,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 11422
    },
    "dependencies": {
      "manifests": [
        "conformance/go.mod",
        "gen/go.mod",
        "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": "liteorm.org",
          "manifest": "conformance/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.14.0"
        },
        {
          "name": "liteorm.org/dialect/mssql",
          "manifest": "conformance/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.14.0"
        },
        {
          "name": "liteorm.org/dialect/mysql",
          "manifest": "conformance/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.14.0"
        },
        {
          "name": "liteorm.org/dialect/postgres",
          "manifest": "conformance/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.14.0"
        },
        {
          "name": "liteorm.org/dialect/sqlite",
          "manifest": "conformance/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.14.0"
        },
        {
          "name": "liteorm.org/gen",
          "manifest": "conformance/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.14.0"
        },
        {
          "name": "liteorm.org",
          "manifest": "gen/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.14.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": 2,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "arthurpro",
          "commits": 72,
          "avatar_url": "https://avatars.githubusercontent.com/u/8511470?v=4"
        },
        {
          "type": "User",
          "login": "ditalini",
          "commits": 26,
          "avatar_url": "https://avatars.githubusercontent.com/u/209022222?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.735
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".golangci.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "2 out of 2 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 2/28 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 4 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 1,
            "reason": "dependency not pinned by hash detected -- score normalized to 1",
            "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": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 5,
            "reason": "5 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "28d6a631dbc8f9b740fb5bd8cd7693e425e05c2a",
        "ran_at": "2026-07-26T03:59:43Z",
        "aggregate_score": 4,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-04T05:17:27Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-06-19T04:52:40Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/go-again/liteorm",
    "host": "github.com",
    "name": "liteorm",
    "owner": "go-again"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 58,
      "inputs": {
        "security": 40,
        "vitality": 68,
        "community": 29,
        "governance": 58,
        "engineering": 90
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 68,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "commits_last_year": 98,
              "human_commit_share": 1,
              "days_since_last_push": 21,
              "active_weeks_last_year": 12
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 21 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 21
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "12/52 weeks with commits",
                "points": 8.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 12
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "98 commits in the last year",
                "points": 17.9,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 98
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "releases_count": 9,
              "latest_release_tag": "v0.14.0",
              "releases_from_tags": true,
              "days_since_latest_release": 21,
              "mean_days_between_releases": 4.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "9 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 21 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 21
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~4.7 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 4.7
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 29,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "forks": 0,
              "stars": 5,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "5 stars",
                "points": 9.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "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 (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "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": 58,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 28,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.735
            },
            "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 74% of commits",
                "points": 6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 74
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "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": 2,
              "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": "2/2 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 2,
                      "decided": 2
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 2/28 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 45,
            "inputs": {
              "followers": 0,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "go-again",
              "public_repos": 12,
              "account_age_days": 1305
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of go-again",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "go-again"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "12 public repos, account ~3 yr old",
                "points": 15.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 12
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 3
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "liteorm.org",
                "liteorm.org/gen"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 21
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 21 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 21
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "9 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "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": "excellent",
        "name": "Engineering Quality",
        "value": 90,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".golangci.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "2 out of 2 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "golang",
                "mssql",
                "mysql",
                "orm",
                "postgresql",
                "sqlite"
              ],
              "has_wiki": true,
              "homepage": "https://liteorm.com",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://liteorm.com",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "6 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "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": 40,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 40,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 4
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "2 out of 2 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 2/28 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 0.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "5 existing vulnerabilities detected",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 76,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.908,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 11422
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "89 of 98 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 89,
                      "sampled": 98
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                "justfile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "cmd/sqlc-gen-liteorm/go.mod",
                "conformance/go.mod",
                "dialect/mssql/go.mod",
                "dialect/mysql/go.mod",
                "dialect/postgres/go.mod",
                "dialect/sqlite/go.mod",
                "dialect/sqlite/vault/go.mod",
                "examples/blog/go.mod",
                "examples/codegen/go.mod",
                "examples/encryption/go.mod",
                "examples/fixtures/go.mod",
                "examples/gormport/go.mod",
                "examples/largeobjects/go.mod",
                "examples/logging/go.mod",
                "examples/migrate/go.mod",
                "examples/orm/go.mod",
                "examples/queries/go.mod",
                "examples/query/go.mod",
                "examples/search/go.mod",
                "examples/vault/go.mod",
                "gen/go.mod",
                "go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "justfile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "justfile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".golangci.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "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 98",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 98
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 1,
                "status": "partial",
                "details": [],
                "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": 53515,
              "source_files_sampled": 208,
              "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/208 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 208,
                      "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": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch go package 'liteorm.org/conformance' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T03:59:49.702341Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/go-again/liteorm.svg",
  "full_name": "go-again/liteorm",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasGo.