{"adoption": {"forks": 107, "observed_at": "2026-08-28T04:03:46.438069+00:00", "stars": 1149}, "canonical_url": "https://ross.abutalabs.com/products/grub-btrfs", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Include btrfs snapshots at boot options. (Grub menu)", "domain": ["operating-systems", "self-hosted"], "enriched": true, "function": ["configuration-management", "developer-tools"], "health_score": 95, "homepage": null, "language": "Shell", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["Antynea/grub-btrfs"], "name": "Antynea/grub-btrfs", "platform": ["cli"], "pushed_at": "2026-08-24T12:56:35+00:00", "repo": "Antynea/grub-btrfs", "stars": 1149, "tags": ["grub", "btrfs", "snapshots", "snapper", "timeshift", "bootloader", "shell", "boot", "linux"], "topics": ["grub-btrfs", "grub", "grub2", "snapshot", "btrfs", "snapper", "boot", "grub-menu", "timeshift"], "urls": [], "use_cases": ["boot into a btrfs snapshot from the grub menu", "recover a broken system by rolling back to a snapshot at boot", "list snapper snapshots in grub", "boot timeshift snapshots", "regenerate grub.cfg with snapshot entries automatically", "boot read-only btrfs snapshots with initramfs support"], "what_it_is": "grub-btrfs is a shell-based tool that extends the GRUB bootloader with a sub-menu of btrfs snapshots, letting users boot directly into snapshots. It automatically detects snapshots created manually or by Snapper, Timeshift, and Yabsnap and generates corresponding GRUB menu entries.", "when_to_avoid": ["your root filesystem is not btrfs", "you need graphical snapshot management rather than boot-menu integration", "you cannot place /var or /var/log on a separate subvolume and require read-only snapshots"], "when_to_choose": ["you use btrfs as your root filesystem and want bootable snapshots", "you use Snapper, Timeshift, or Yabsnap for snapshot management", "you run Arch, Gentoo, or Kali Linux and want easy package installation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/grub-btrfs", "repo": "Antynea/grub-btrfs", "role": "main", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.438069+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:33:42.664270+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be1fb79c60e9f8a595dd0929b995408424fd2919cdab802ae267c3b588f66243", "fetched_at": "2026-08-28T04:03:46.438069+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Antynea/grub-btrfs"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.438069+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:33:42.664270+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be1fb79c60e9f8a595dd0929b995408424fd2919cdab802ae267c3b588f66243", "fetched_at": "2026-08-28T04:03:46.438069+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Antynea/grub-btrfs"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:33:42.664270+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be1fb79c60e9f8a595dd0929b995408424fd2919cdab802ae267c3b588f66243", "fetched_at": "2026-08-28T04:03:46.438069+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Antynea/grub-btrfs"}], "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:46.438069+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.438069+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.438069+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:33:42.664270+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be1fb79c60e9f8a595dd0929b995408424fd2919cdab802ae267c3b588f66243", "fetched_at": "2026-08-28T04:03:46.438069+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Antynea/grub-btrfs"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.438069+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.438069+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:33:42.664270+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be1fb79c60e9f8a595dd0929b995408424fd2919cdab802ae267c3b588f66243", "fetched_at": "2026-08-28T04:03:46.438069+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Antynea/grub-btrfs"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.438069+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.438069+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.438069+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:33:42.664270+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be1fb79c60e9f8a595dd0929b995408424fd2919cdab802ae267c3b588f66243", "fetched_at": "2026-08-28T04:03:46.438069+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Antynea/grub-btrfs"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.438069+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.438069+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:33:42.664270+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be1fb79c60e9f8a595dd0929b995408424fd2919cdab802ae267c3b588f66243", "fetched_at": "2026-08-28T04:03:46.438069+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Antynea/grub-btrfs"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:33:42.664270+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be1fb79c60e9f8a595dd0929b995408424fd2919cdab802ae267c3b588f66243", "fetched_at": "2026-08-28T04:03:46.438069+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Antynea/grub-btrfs"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:33:42.664270+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be1fb79c60e9f8a595dd0929b995408424fd2919cdab802ae267c3b588f66243", "fetched_at": "2026-08-28T04:03:46.438069+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Antynea/grub-btrfs"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:33:42.664270+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be1fb79c60e9f8a595dd0929b995408424fd2919cdab802ae267c3b588f66243", "fetched_at": "2026-08-28T04:03:46.438069+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Antynea/grub-btrfs"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 16}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4585, "days_push": 9, "days_rel": 350, "gap_med": null, "n_releases_24m": 1}, "score": 70, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}