{"adoption": {"forks": 135, "observed_at": "2026-08-28T04:03:37.994308+00:00", "stars": 1113}, "canonical_url": "https://ross.abutalabs.com/products/machinist", "card": {"archived": false, "artifact_type": "library", "description": "Fixtures aren't fun. Machinist is.", "domain": ["testing", "developer-tools", "web-development"], "enriched": true, "function": ["testing", "mocking", "data-generation"], "health_score": 20, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["notahat/machinist"], "name": "notahat/machinist", "platform": ["ruby", "cli"], "pushed_at": "2023-06-23T10:00:40+00:00", "repo": "notahat/machinist", "stars": 1113, "tags": ["fixtures", "test-data", "blueprints", "activerecord", "ruby-on-rails"], "topics": [], "urls": [], "use_cases": ["generate test fixtures for Rails models", "create objects for unit tests without boilerplate attributes", "replace YAML fixtures with Ruby blueprints", "build associated records automatically in tests", "generate unique attribute values for test data"], "what_it_is": "Machinist is a Ruby library for generating test data through 'blueprints' that replace traditional fixtures in Rails tests. It automatically fills in unimportant attributes and builds associated objects, letting developers specify only the fields they care about.", "when_to_avoid": ["starting a new project - the project is not under active development", "you want a maintained alternative like FactoryBot", "your app doesn't use ActiveRecord or Rails"], "when_to_choose": ["you're maintaining a legacy Rails app already using Machinist", "you prefer blueprint-style test data over factory gems", "you want automatic generation of unimportant attributes and associations in tests"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/machinist", "repo": "notahat/machinist", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.994308+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:42:37.371150+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90571bcadac16bac82637cf64dd65ace4af41f32556587c82c6bee501e139833", "fetched_at": "2026-08-28T04:03:37.994308+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notahat/machinist"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.994308+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:42:37.371150+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90571bcadac16bac82637cf64dd65ace4af41f32556587c82c6bee501e139833", "fetched_at": "2026-08-28T04:03:37.994308+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notahat/machinist"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:42:37.371150+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90571bcadac16bac82637cf64dd65ace4af41f32556587c82c6bee501e139833", "fetched_at": "2026-08-28T04:03:37.994308+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notahat/machinist"}], "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:03:37.994308+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.994308+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.994308+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:42:37.371150+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90571bcadac16bac82637cf64dd65ace4af41f32556587c82c6bee501e139833", "fetched_at": "2026-08-28T04:03:37.994308+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notahat/machinist"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.994308+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.994308+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:42:37.371150+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90571bcadac16bac82637cf64dd65ace4af41f32556587c82c6bee501e139833", "fetched_at": "2026-08-28T04:03:37.994308+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notahat/machinist"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.994308+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.994308+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.994308+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:42:37.371150+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90571bcadac16bac82637cf64dd65ace4af41f32556587c82c6bee501e139833", "fetched_at": "2026-08-28T04:03:37.994308+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notahat/machinist"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.994308+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.994308+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:42:37.371150+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90571bcadac16bac82637cf64dd65ace4af41f32556587c82c6bee501e139833", "fetched_at": "2026-08-28T04:03:37.994308+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notahat/machinist"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:42:37.371150+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90571bcadac16bac82637cf64dd65ace4af41f32556587c82c6bee501e139833", "fetched_at": "2026-08-28T04:03:37.994308+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notahat/machinist"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:42:37.371150+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90571bcadac16bac82637cf64dd65ace4af41f32556587c82c6bee501e139833", "fetched_at": "2026-08-28T04:03:37.994308+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notahat/machinist"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:42:37.371150+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90571bcadac16bac82637cf64dd65ace4af41f32556587c82c6bee501e139833", "fetched_at": "2026-08-28T04:03:37.994308+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notahat/machinist"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 6540, "days_push": 1167, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}