{"adoption": {"forks": 69, "observed_at": "2026-08-28T04:05:53.765242+00:00", "stars": 1916}, "canonical_url": "https://ross.abutalabs.com/products/active_record_doctor", "card": {"archived": false, "artifact_type": "library", "description": "Identify database issues before they hit production.", "domain": ["databases", "developer-tools", "web-development"], "enriched": true, "function": ["database", "testing", "developer-tools"], "health_score": 75, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["gregnavis/active_record_doctor"], "name": "gregnavis/active_record_doctor", "platform": ["ruby", "cli"], "pushed_at": "2026-07-09T13:59:32+00:00", "repo": "gregnavis/active_record_doctor", "stars": 1916, "tags": ["rails", "activerecord", "database-health", "linting", "schema-validation"], "topics": ["database", "rails", "activerecord", "performance", "ruby"], "urls": [], "use_cases": ["find missing foreign key constraints in a rails app", "detect unindexed foreign keys before deploying", "check uniqueness validations are backed by unique indexes", "find extraneous indexes slowing down writes", "audit activerecord models against the database schema", "detect missing non-null constraints on columns"], "what_it_is": "A Ruby gem that detects database issues in Rails applications, such as extraneous indexes, missing foreign key constraints, and validations not backed by database constraints. It ships as a set of Rake tasks that analyze Active Record models and schemas before problems reach production.", "when_to_avoid": ["your project does not use Ruby on Rails or Active Record", "you need general-purpose database monitoring rather than schema/model consistency checks"], "when_to_choose": ["you maintain a Ruby on Rails application with Active Record", "you want automated database schema health checks in CI", "you need to catch index and constraint gaps before production"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/active_record_doctor", "repo": "gregnavis/active_record_doctor", "role": "main", "score": 73}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.847074+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9293e1d56ed03c87cdb551597c53e8f5325fca90410249782dcdef7b234b05d6", "fetched_at": "2026-08-28T04:05:53.765242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gregnavis/active_record_doctor"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.847074+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9293e1d56ed03c87cdb551597c53e8f5325fca90410249782dcdef7b234b05d6", "fetched_at": "2026-08-28T04:05:53.765242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gregnavis/active_record_doctor"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.847074+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9293e1d56ed03c87cdb551597c53e8f5325fca90410249782dcdef7b234b05d6", "fetched_at": "2026-08-28T04:05:53.765242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gregnavis/active_record_doctor"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.847074+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9293e1d56ed03c87cdb551597c53e8f5325fca90410249782dcdef7b234b05d6", "fetched_at": "2026-08-28T04:05:53.765242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gregnavis/active_record_doctor"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.847074+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9293e1d56ed03c87cdb551597c53e8f5325fca90410249782dcdef7b234b05d6", "fetched_at": "2026-08-28T04:05:53.765242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gregnavis/active_record_doctor"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.847074+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9293e1d56ed03c87cdb551597c53e8f5325fca90410249782dcdef7b234b05d6", "fetched_at": "2026-08-28T04:05:53.765242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gregnavis/active_record_doctor"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.765242+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.847074+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9293e1d56ed03c87cdb551597c53e8f5325fca90410249782dcdef7b234b05d6", "fetched_at": "2026-08-28T04:05:53.765242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gregnavis/active_record_doctor"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.847074+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9293e1d56ed03c87cdb551597c53e8f5325fca90410249782dcdef7b234b05d6", "fetched_at": "2026-08-28T04:05:53.765242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gregnavis/active_record_doctor"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.847074+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9293e1d56ed03c87cdb551597c53e8f5325fca90410249782dcdef7b234b05d6", "fetched_at": "2026-08-28T04:05:53.765242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gregnavis/active_record_doctor"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.847074+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9293e1d56ed03c87cdb551597c53e8f5325fca90410249782dcdef7b234b05d6", "fetched_at": "2026-08-28T04:05:53.765242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gregnavis/active_record_doctor"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 91, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3854, "days_push": 55, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 73, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}