Lifeline resilience scorecard
ObaidAbdullah16/lifeline · 2026-11-08 14:01 UTC
Overall
6.3/10
fragile · coverage 66%
Domain & TLS
n/a
Access & bus factor
1.2
CI hygiene
10.0
Backup independence
5.0
Cost runway
10.0
| Status | Check | Result | How to fix |
|---|---|---|---|
| SKIP | LL-DOM-001Domain registration does not expire soon | no domain (pass --domain, set `domain:` in lifeline.yml, or a repo homepage) | |
| SKIP | LL-DOM-002TLS certificate is valid and not about to expire | no domain (pass --domain, set `domain:` in lifeline.yml, or a repo homepage) | |
| SKIP | LL-DOM-003CAA record limits which CAs may issue certificates | no domain (pass --domain, set `domain:` in lifeline.yml, or a repo homepage) | |
| SKIP | LL-DOM-004DNSSEC is enabled and validates | no domain (pass --domain, set `domain:` in lifeline.yml, or a repo homepage) | |
| SKIP | LL-DOM-005SPF and DMARC protect the domain from email spoofing | no domain (pass --domain, set `domain:` in lifeline.yml, or a repo homepage) | |
| SKIP | LL-DOM-006Outgoing email is signed with DKIM | no domain (pass --domain, set `domain:` in lifeline.yml, or a repo homepage) | |
| SKIP | LL-DOM-007SPF stays within the 10-DNS-lookup limit | no domain (pass --domain, set `domain:` in lifeline.yml, or a repo homepage) | |
| FAIL | LL-ACC-001More than one person can administer the project | owned by the personal account "ObaidAbdullah16": one person holds every key | Move the repository to a GitHub organisation with 2-5 owners. Store recovery codes for the registrar, DNS and cloud accounts somewhere a second maintainer can reach. |
| SKIP | LL-ACC-002Organisation requires two-factor authentication | personal account: 2FA enforcement is an organisation setting (turn on 2FA for your own account) | |
| FAIL | LL-ACC-003Default branch is protected | main has no branch protection: anyone with write access can force-push or delete it | Add a ruleset for the default branch: require pull requests, block force pushes and deletions. |
| FAIL | LL-ACC-004Work is not concentrated in one maintainer (bus factor) | bus factor 1: 1 author(s) made 80% of the last 2 commits (180 days)
| Document how to release and deploy, give a second maintainer access, and pair on at least one release. |
| PASS | LL-ACC-005A security contact is published | security_contact set in lifeline.yml: GitHub private vulnerability reporting (Security tab > Report a vulnerability) | |
| PASS | LL-CI-001Actions are pinned to commit SHAs | 15 of 15 action references pinned (100%) | |
| PASS | LL-CI-002Workflow token permissions are restricted | all 3 workflow(s) declare token permissions | |
| PASS | LL-CI-003No privileged workflow runs untrusted pull-request code | no pull_request_target, workflow_run or issue_comment job checks out pull-request code | |
| PASS | LL-CI-004Cloud access uses short-lived OIDC credentials | no stored cloud keys found; workflows request short-lived OIDC tokens (id-token: write) | |
| PASS | LL-CI-005Dependencies and actions are updated automatically | Dependabot updates: github-actions, gomod, docker, pip | |
| PASS | LL-BAK-001Backups are declared for stateful data | 1 backup(s) declared
| |
| FAIL | LL-BAK-002Restores have been tested recently | a backup was never restored or not for over 180 days
| Restore each backup into a sandbox at least every 90 days, check the data, record the date in lifeline.yml (restore-drill-kit automates this). |
| WARN | LL-BAK-003Backups are isolated from production credentials | some backups may be deletable with production credentials
| Keep backups in a separate account/project or with object lock, so whoever (or whatever AI agent) can delete production cannot delete the backups. |
| PASS | LL-COST-001Infrastructure money lasts at least six months | no recurring infrastructure spend declared | |
| SKIP | LL-COST-002Billing alerts are configured | ignored in lifeline.yml |
Generated by Lifeline action. Skipped checks need a token, a domain or a lifeline.yml.