{"adoption": {"forks": 503, "observed_at": "2026-08-28T04:10:04.801938+00:00", "stars": 7754}, "canonical_url": "https://ross.abutalabs.com/products/scientist", "card": {"archived": false, "artifact_type": "library", "description": ":microscope: A Ruby library for carefully refactoring critical paths.", "domain": ["developer-tools"], "enriched": true, "function": ["testing", "benchmarking", "middleware"], "health_score": 62, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["github/scientist"], "name": "github/scientist", "platform": ["ruby", "jvm"], "pushed_at": "2025-11-24T02:03:19+00:00", "repo": "github/scientist", "stars": 7754, "tags": ["refactoring", "experimentation", "a-b-testing", "behavior-comparison", "rubygem", "ruby"], "topics": ["refactoring", "ruby", "scientist", "rubygem"], "urls": [], "use_cases": ["refactor a critical code path and verify the new implementation behaves identically under real traffic", "compare old and new permission-check logic in a live web app", "measure performance differences between two implementations in production", "safely roll out a rewritten algorithm while always returning the current behavior", "detect exceptions raised by new code without affecting users"], "what_it_is": "Scientist is a Ruby library for carefully refactoring critical code paths by running old and new implementations side by side in production. It always returns the control (old) behavior's result while measuring, comparing, and publishing the candidate's behavior and timings.", "when_to_avoid": ["you need feature flags or A/B testing for user-facing experiments rather than internal behavior comparison", "your code path is cheap to test with unit tests alone and doesn't run in production", "you're not working in Ruby"], "when_to_choose": ["you're refactoring high-risk code and want to validate the rewrite against real production data", "you need behavioral parity checks between an old and new implementation", "you want timing and exception data for candidate code paths before switching over"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/scientist", "repo": "github/scientist", "role": "main", "score": 47}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:04.801938+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:35:08.757817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc482eaa193cf934f8bd07a274c6c03d5abc9fcf8fd18f066a157c04dc6374a7", "fetched_at": "2026-08-28T04:10:04.801938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/github/scientist"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:04.801938+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:35:08.757817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc482eaa193cf934f8bd07a274c6c03d5abc9fcf8fd18f066a157c04dc6374a7", "fetched_at": "2026-08-28T04:10:04.801938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/github/scientist"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:35:08.757817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc482eaa193cf934f8bd07a274c6c03d5abc9fcf8fd18f066a157c04dc6374a7", "fetched_at": "2026-08-28T04:10:04.801938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/github/scientist"}], "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:10:04.801938+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:04.801938+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:04.801938+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:35:08.757817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc482eaa193cf934f8bd07a274c6c03d5abc9fcf8fd18f066a157c04dc6374a7", "fetched_at": "2026-08-28T04:10:04.801938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/github/scientist"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:04.801938+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:04.801938+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:35:08.757817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc482eaa193cf934f8bd07a274c6c03d5abc9fcf8fd18f066a157c04dc6374a7", "fetched_at": "2026-08-28T04:10:04.801938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/github/scientist"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:04.801938+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:04.801938+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:04.801938+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:35:08.757817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc482eaa193cf934f8bd07a274c6c03d5abc9fcf8fd18f066a157c04dc6374a7", "fetched_at": "2026-08-28T04:10:04.801938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/github/scientist"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:04.801938+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:04.801938+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:35:08.757817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc482eaa193cf934f8bd07a274c6c03d5abc9fcf8fd18f066a157c04dc6374a7", "fetched_at": "2026-08-28T04:10:04.801938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/github/scientist"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:35:08.757817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc482eaa193cf934f8bd07a274c6c03d5abc9fcf8fd18f066a157c04dc6374a7", "fetched_at": "2026-08-28T04:10:04.801938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/github/scientist"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:35:08.757817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc482eaa193cf934f8bd07a274c6c03d5abc9fcf8fd18f066a157c04dc6374a7", "fetched_at": "2026-08-28T04:10:04.801938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/github/scientist"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:35:08.757817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc482eaa193cf934f8bd07a274c6c03d5abc9fcf8fd18f066a157c04dc6374a7", "fetched_at": "2026-08-28T04:10:04.801938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/github/scientist"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 53, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4592, "days_push": 283, "days_rel": 625, "gap_med": null, "n_releases_24m": 1}, "score": 47, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}