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"
}