{"adoption": {"forks": 163, "observed_at": "2026-08-28T04:06:23.700160+00:00", "stars": 2186}, "canonical_url": "https://ross.abutalabs.com/products/mutant", "card": {"archived": false, "artifact_type": "library", "description": "Mutation testing for Ruby. AI writes your code. AI writes your tests. But who tests the tests?", "domain": ["testing", "developer-tools"], "enriched": true, "function": ["testing", "code-review", "developer-tools"], "health_score": 98, "homepage": null, "language": "Ruby", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["mbj/mutant"], "name": "mbj/mutant", "platform": ["ruby", "cli", "cross-platform"], "pushed_at": "2026-08-24T03:51:55+00:00", "repo": "mbj/mutant", "stars": 2186, "tags": ["mutation-testing", "rspec", "minitest", "test-quality", "code-quality", "static-analysis", "dynamic-analysis", "ruby"], "topics": ["mutation-testing", "ruby", "coverage", "rspec", "minitest", "code-review", "code-quality-analyzer", "mutant", "static-analysis", "dynamic-analysis"], "urls": [], "use_cases": ["measure the effectiveness of my ruby test suite", "find tests that pass but don't actually verify behavior", "check test coverage beyond line coverage with mutation testing", "verify ai-generated tests are meaningful", "identify weak or shallow tests in a ruby codebase", "run mutation testing with rspec or minitest"], "what_it_is": "Mutant is a mutation testing tool for Ruby that systematically mutates your code and verifies your test suite catches each change. It integrates with RSpec and Minitest and reports surviving mutations as gaps in test coverage or opportunities for code simplification.", "when_to_avoid": ["your project is not written in Ruby", "your test suite is too slow, since mutation testing reruns tests many times", "you only need simple line or branch coverage metrics"], "when_to_choose": ["you write Ruby and want rigorous verification that tests actually assert behavior, not just execute code", "you want to review AI-generated code and tests for real coverage", "you need per-mutation actionable feedback: add a test or accept a simplification"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/mutant", "repo": "mbj/mutant", "role": "main", "score": 93}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:23.700160+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:47:54.910295+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0a5b8fba8b26e42863aeeda0b583c19504908954e3b3d13fefb0c526359a54", "fetched_at": "2026-08-28T04:06:23.700160+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mbj/mutant"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:23.700160+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:47:54.910295+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0a5b8fba8b26e42863aeeda0b583c19504908954e3b3d13fefb0c526359a54", "fetched_at": "2026-08-28T04:06:23.700160+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mbj/mutant"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:47:54.910295+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0a5b8fba8b26e42863aeeda0b583c19504908954e3b3d13fefb0c526359a54", "fetched_at": "2026-08-28T04:06:23.700160+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mbj/mutant"}], "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:06:23.700160+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:23.700160+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:23.700160+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:47:54.910295+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0a5b8fba8b26e42863aeeda0b583c19504908954e3b3d13fefb0c526359a54", "fetched_at": "2026-08-28T04:06:23.700160+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mbj/mutant"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:23.700160+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:23.700160+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:47:54.910295+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0a5b8fba8b26e42863aeeda0b583c19504908954e3b3d13fefb0c526359a54", "fetched_at": "2026-08-28T04:06:23.700160+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mbj/mutant"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:23.700160+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:23.700160+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:23.700160+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:47:54.910295+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0a5b8fba8b26e42863aeeda0b583c19504908954e3b3d13fefb0c526359a54", "fetched_at": "2026-08-28T04:06:23.700160+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mbj/mutant"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:23.700160+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:23.700160+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:47:54.910295+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0a5b8fba8b26e42863aeeda0b583c19504908954e3b3d13fefb0c526359a54", "fetched_at": "2026-08-28T04:06:23.700160+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mbj/mutant"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:47:54.910295+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0a5b8fba8b26e42863aeeda0b583c19504908954e3b3d13fefb0c526359a54", "fetched_at": "2026-08-28T04:06:23.700160+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mbj/mutant"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:47:54.910295+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0a5b8fba8b26e42863aeeda0b583c19504908954e3b3d13fefb0c526359a54", "fetched_at": "2026-08-28T04:06:23.700160+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mbj/mutant"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:47:54.910295+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0a5b8fba8b26e42863aeeda0b583c19504908954e3b3d13fefb0c526359a54", "fetched_at": "2026-08-28T04:06:23.700160+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mbj/mutant"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 80}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5154, "days_push": 9, "days_rel": 135, "gap_med": 13.0, "n_releases_24m": 5}, "score": 93, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}