{"adoption": {"forks": 96, "observed_at": "2026-08-28T04:06:50.721181+00:00", "stars": 2424}, "canonical_url": "https://ross.abutalabs.com/products/discard", "card": {"archived": false, "artifact_type": "library", "description": "🃏🗑 Soft deletes for ActiveRecord done right", "domain": ["web-development", "databases", "backend"], "enriched": true, "function": ["orm", "database", "developer-tools"], "health_score": 73, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["jhawthorn/discard"], "name": "jhawthorn/discard", "platform": ["ruby", "jvm"], "pushed_at": "2026-06-22T20:32:26+00:00", "repo": "jhawthorn/discard", "stars": 2424, "tags": ["soft-deletes", "activerecord", "rails", "ruby-gem"], "topics": [], "urls": [], "use_cases": ["soft delete records in a Rails app", "restore deleted records with undiscard", "replace acts_as_paranoid with a simpler soft-delete mixin", "keep deleted posts out of default queries but still queryable", "implement trash/undo functionality in ActiveRecord models"], "what_it_is": "Discard is a simple Ruby ActiveRecord mixin that adds soft-delete conventions by flagging records with a discarded_at timestamp instead of destroying them. It provides kept/discarded scopes and discard/undiscard methods as a lightweight alternative to gems like paranoia.", "when_to_avoid": ["you need hard deletes with true row removal", "you're not using Rails/ActiveRecord", "you need versioned audit trails or full history tracking rather than a single discarded_at flag"], "when_to_choose": ["you use ActiveRecord and want simple, minimal soft deletes", "you want discarded records to remain queryable without cascading deletes to associations", "you find paranoia too invasive or awkward for restoring records"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/discard", "repo": "jhawthorn/discard", "role": "main", "score": 72}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.721181+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:31:51.126866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9d41c8bcb48d0063bd724fbdafd838d42ef70a98c53d2b97877409e6b872cde", "fetched_at": "2026-08-28T04:06:50.721181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhawthorn/discard"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.721181+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:31:51.126866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9d41c8bcb48d0063bd724fbdafd838d42ef70a98c53d2b97877409e6b872cde", "fetched_at": "2026-08-28T04:06:50.721181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhawthorn/discard"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:31:51.126866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9d41c8bcb48d0063bd724fbdafd838d42ef70a98c53d2b97877409e6b872cde", "fetched_at": "2026-08-28T04:06:50.721181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhawthorn/discard"}], "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:50.721181+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.721181+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.721181+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:31:51.126866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9d41c8bcb48d0063bd724fbdafd838d42ef70a98c53d2b97877409e6b872cde", "fetched_at": "2026-08-28T04:06:50.721181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhawthorn/discard"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.721181+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.721181+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:31:51.126866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9d41c8bcb48d0063bd724fbdafd838d42ef70a98c53d2b97877409e6b872cde", "fetched_at": "2026-08-28T04:06:50.721181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhawthorn/discard"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.721181+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.721181+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.721181+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:31:51.126866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9d41c8bcb48d0063bd724fbdafd838d42ef70a98c53d2b97877409e6b872cde", "fetched_at": "2026-08-28T04:06:50.721181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhawthorn/discard"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.721181+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.721181+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:31:51.126866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9d41c8bcb48d0063bd724fbdafd838d42ef70a98c53d2b97877409e6b872cde", "fetched_at": "2026-08-28T04:06:50.721181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhawthorn/discard"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:31:51.126866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9d41c8bcb48d0063bd724fbdafd838d42ef70a98c53d2b97877409e6b872cde", "fetched_at": "2026-08-28T04:06:50.721181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhawthorn/discard"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:31:51.126866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9d41c8bcb48d0063bd724fbdafd838d42ef70a98c53d2b97877409e6b872cde", "fetched_at": "2026-08-28T04:06:50.721181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhawthorn/discard"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:31:51.126866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9d41c8bcb48d0063bd724fbdafd838d42ef70a98c53d2b97877409e6b872cde", "fetched_at": "2026-08-28T04:06:50.721181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhawthorn/discard"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 88, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3424, "days_push": 72, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 72, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}