Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-25 04:18 UTC

saaranshM / unsnooze

Auto-resume Claude Code, Codex CLI, Grok, Qwen Code, Kimi CLI, OpenCode & Antigravity when the 5-hour/weekly usage limit resets — tmux, Zellij, VS Code & desktop apps

JavaScriptMIT★ 60 Sterne⑂ 3 Forksseit Juli 2026Auf GitHub ansehen ↗

saaranshM/unsnooze erreicht einen Gesundheitsindex von 59 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (74/100) ab, am schwächsten bei AI Readiness (43/100). Zuletzt vor 4 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

59
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

59
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

Saaransh MenonPersönliches Konto
5 Follower28 öffentliche Reposseit Jan. 2019Mosambee

Dieses Repository gehört einem persönlichen Konto. Ein Projekt mit nur einem Eigentümer trägt ein höheres Kontinuitätsrisiko als ein organisationsgetragenes.

Paket-Ökosysteme

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

74Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 4 Tagen
2.1/36Commit-Rhythmus — 3/52 Wochen mit Commits
18/18Commit-Volumen — 153 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Verwendete Eingangsdaten
commits_last_year153
human_commit_share1
days_since_last_push4
active_weeks_last_year3

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 15 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 5 Tagen
27/27Release-Rhythmus — ein Release etwa alle 0,8 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count15
latest_release_tagv1.14.0
releases_from_tagsnein
days_since_latest_release5
mean_days_between_releases0,8
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

44Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
28.7/60Stars — 60 Stars
2.5/25Forks — 3 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks3
stars60
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
45/80Downloads pro Monat — 2.363 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packagesunsnooze
dependents
ecosystemsnpm
total_downloads
monthly_downloads2.363
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

57Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 100 % der Commits
1.4/13.5Breite der Beitragenden — 1 Beitragende
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Verwendete Eingangsdaten
bus_factor1
contributors_sampled1
top_contributor_share1
Wie die Bewertung erfolgt
46.8/46.8Issue-Lösungsquote — 100 % der Issues geschlossen
38.2/38.3PR-Annahme — 1/1 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs1
open_issues0
closed_issues1
issue_closed_ratio1
closed_unmerged_prs0
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
5.6/25Reichweite des Inhabers — 5 Follower von saaranshM
22.6/25Kontohistorie — 28 öffentliche Repos, Kontoalter ca. 7 Jahre
Verwendete Eingangsdaten
followers5
owner_typeUser
is_verified
owner_loginsaaranshM
public_repos28
account_age_days2.747
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 5 Tagen
20/20Versionshistorie — 15 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesunsnooze
ecosystemsnpm
any_deprecatednein
min_days_since_publish5

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

66Mittel · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 2 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — keine Daten
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: CI-Tests. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30README
0/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://unsnooze.combustortech.in
10/10Repository-Beschreibung
10/10Topics — 20 Topics
10/10Wiki
Verwendete Eingangsdaten
topicsagentic-coding, ai-agents, anthropic, auto-resume, claude-code, cli, codex, codex-cli, grok, openai, rate-limit, tmux, usage-limit, claude, antigravity, kimi, opencode, openrouter, qwen, zellij
has_wikija
homepagehttps://unsnooze.combustortech.in
has_readmeja
has_docs_dirnein
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

47Gefährdet · 16 % des Gesamtindex

Sicherheitslage

34Gefährdet
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — keine Daten
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
1.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
0/5SAST — no SAST tool detected
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 13 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate3,4
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): ci_tests, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
25/25Indirekte Abhängigkeiten ohne bekannte Advisories — keine indirekte Abhängigkeit trägt ein bekanntes Advisory
0/40Keine offenen Advisories — kein Advisory trägt ein Veröffentlichungsdatum
Verwendete Eingangsdaten
sourceosv
advisories0
affected_packages0
assessed_packages45
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Keine offenen Advisories. Die verbleibenden Gewichte wurden renormalisiert. Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von npm:unsnooze@1.14.0 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 45 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

43Gefährdet · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 97 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,97
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
10/10Reproduzierbare Umgebung — lockfile
6/10Belegte Agentenpraxis — 3 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
3/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespackage-lock.json
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0,03
toolchain_manifests
dependency_bot_commit_share0
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — JavaScript ohne Typprüfungs-Konfiguration
55/55Handhabbare Dateigrößen — 0/159 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageJavaScript
largest_source_bytes56.273
source_files_sampled159
oversized_source_files0

Eckdaten

60GitHub-Sterne
1Mitwirkende
153Commits, letzte 12 Monate
4Tage seit letztem Push
15Releases
1Bus-Faktor
0offene Issues
npmPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 3 ⇿
0Sterne
3Forks
7Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

222333322026-072026-072026-07
Major 0Minor 4Patch 3
OpenSSF Scorecard 3.4 / 10
3.4Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-25 04:18 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
k. A.CI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
3Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 3
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities13 existing vulnerabilities detected
Direkte Abhängigkeiten 9
RegistryPaketVersionsvorgabeManifest
npm@clack/prompts^1.7.0package.json
npmink^7.1.1package.json
npmpicocolors^1.1.1package.json
npmreact^19.2.7package.json
npmframer-motion^12.23.0website/package.json
npmmarked^18.0.6website/package.json
npmnext^16.2.0website/package.json
npmreact^19.2.0website/package.json
npmreact-dom^19.2.0website/package.json
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Abhängigkeits-Advisories 0

Die Installation von npm:unsnooze@1.14.0 zieht 45 Pakete nach sich, direkt und transitiv: 0 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

Keine bekannten Advisories betreffen die bewerteten Abhängigkeiten.

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "agentic-coding",
        "ai-agents",
        "anthropic",
        "auto-resume",
        "claude-code",
        "cli",
        "codex",
        "codex-cli",
        "grok",
        "openai",
        "rate-limit",
        "tmux",
        "usage-limit",
        "claude",
        "antigravity",
        "kimi",
        "opencode",
        "openrouter",
        "qwen",
        "zellij"
      ],
      "is_fork": false,
      "size_kb": 3452,
      "has_wiki": true,
      "homepage": "https://unsnooze.combustortech.in",
      "languages": {
        "CSS": 28792,
        "Shell": 33449,
        "JavaScript": 1242539
      },
      "pushed_at": "2026-07-20T17:24:10Z",
      "created_at": "2026-07-10T11:27:52Z",
      "owner_type": "User",
      "updated_at": "2026-07-24T18:31:34Z",
      "description": "Auto-resume Claude Code, Codex CLI, Grok, Qwen Code, Kimi CLI, OpenCode & Antigravity when the 5-hour/weekly usage limit resets — tmux, Zellij, VS Code & desktop apps",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "saaranshmenon.me",
      "name": "Saaransh Menon",
      "type": "User",
      "login": "saaranshM",
      "company": "Mosambee",
      "location": "Mumbai, Maharashta",
      "followers": 5,
      "avatar_url": "https://avatars.githubusercontent.com/u/46712446?v=4",
      "created_at": "2019-01-15T11:58:43Z",
      "is_verified": null,
      "public_repos": 28,
      "account_age_days": 2747
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.14.0",
          "kind": "minor",
          "published_at": "2026-07-19T07:15:32Z"
        },
        {
          "tag": "v1.12.2",
          "kind": "patch",
          "published_at": "2026-07-16T11:07:27Z"
        },
        {
          "tag": "v1.12.1",
          "kind": "patch",
          "published_at": "2026-07-16T11:07:27Z"
        },
        {
          "tag": "v1.10.0",
          "kind": "minor",
          "published_at": "2026-07-14T07:38:47Z"
        },
        {
          "tag": "v1.9.0",
          "kind": "minor",
          "published_at": "2026-07-13T08:18:57Z"
        },
        {
          "tag": "v1.8.1",
          "kind": "patch",
          "published_at": "2026-07-12T19:45:18Z"
        },
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2026-07-12T19:15:49Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2026-07-12T10:55:45Z"
        },
        {
          "tag": "v1.6.0",
          "kind": "minor",
          "published_at": "2026-07-11T20:36:56Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2026-07-11T19:52:47Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2026-07-11T19:52:45Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-07-11T19:43:46Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2026-07-10T17:48:56Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-07-10T11:28:29Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-07-10T11:28:28Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "c9428e49cc4450044fed37585d8a521eddabdc8d",
          "body": "The docked sun only re-measured its landing spot on scroll-progress\nchanges, so a mobile URL-bar collapse, overscroll bounce, or late layout\nshift moved the footer horizon out from under it. It now re-syncs on\nwindow/visualViewport scroll+resize and a body ResizeObserver, and lands\nfully at 99.5% sc\n[…]\nwhole pill\nis the trigger, idling as a live terminal line with a blinking caret. On\ntap the command dims and a tiny sun rises inside the pill with \"copied\" —\nthe site's night-to-dawn arc in miniature.",
          "is_bot": false,
          "headline": "fix(site): mobile sun-horizon alignment; install pill is the copy button",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-20T17:24:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1157e9ee4cb9fed72918806ac2f5ba17256a029c",
          "body": "…button\n\nThe hero badge was hardcoded v1.13 while npm latest is 1.12.2 — now the\nhome page reads the same npm-cross-checked changelog source at build time,\nso the badge always matches what actually shipped. Install-pill copy\nbutton swaps its text label for a clipboard/check icon that fits on\nmobile.",
          "is_bot": false,
          "headline": "fix(site): hero version badge from npm-verified changelog; icon copy …",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-20T17:05:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8def7e0a07d0b5bea1dc842ebe1f8f238aaaf23d",
          "body": null,
          "is_bot": false,
          "headline": "chore(site): IndexNow key file for search engine submission",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-19T07:30:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c989f5b4a6e574c4302f3666cd8ba513c07217b",
          "body": "…ows shipped history up to npm latest\n\n- package.json homepage + README site link + repo homepage → the new domain\n- website changelog: a dated section at or below npm's latest is shipped\n  history even when folded into a later publish (1.13.0 ships inside 1.14.0)",
          "is_bot": false,
          "headline": "chore: point homepage at unsnooze.combustortech.in; changelog page sh…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-19T07:14:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ae72c0b8a7b3f89fc531bea07caa038473fb1fb",
          "body": "- guards grid in #prompts was glued to the terminal (elsewhere it follows a\n  lede with bottom margin) — 18px top margin\n- the queued-prompt terminal now scrolls horizontally instead of wrapping\n  its aligned log lines on mobile\n- the center-rising sun dims to 35% while crossing the text column on wide\n  screens (mobile already dimmed), restoring to full as it docks in the\n  footer — command/FAQ rows stay readable during the sunrise leg",
          "is_bot": false,
          "headline": "fix(site): prompts-section spacing + sun readability over text",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-19T06:54:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6210dc0ac911178add648bcdae872462688e8ef",
          "body": "…p does not exist on win32)",
          "is_bot": false,
          "headline": "ci: cross-platform project fixture in prompt-cli tests (hardcoded /tm…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T23:05:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2bf87955d165257e1549ed1bf193fbee4921bed5",
          "body": "…skip unix-only 0700/fake-ssh asserts",
          "is_bot": false,
          "headline": "ci: fix win32 test failures — file:// ESM import in mouse exit test, …",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T23:00:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a340eb1db0828861cffef6f28fb356b6beb3416",
          "body": "…oard prompts tab, command row",
          "is_bot": false,
          "headline": "feat(site): queued prompts on the landing page — 03:00 section, dashb…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T22:37:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3bcbe91b55dc2ab011becafa7a3c905c836662b",
          "body": "…covery, statusline anchor, CLI/TUI traps\n\nFinal-review fix wave: CAS-guard every exit from 'launching' (retry/fail/\ndeliver) so a concurrent cancel can never be resurrected or spuriously\nnotified; stamp launchedAt and sweep crash-stranded launches back to\npending; feed the statusline-exact reset in\n[…]\nare trailing --host instead of silently clearing the local queue;\nsuppress dashboard global keys during the remove y/n confirm, not just\nthe add-form; and measure verify delay from the real send time.",
          "is_bot": false,
          "headline": "fix: prompt-queue hardening — launching-state CAS, stranded/orphan re…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T22:22:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b15a9b82b7d536c0adee5546e68fa731e346e9ca",
          "body": "…bsite)",
          "is_bot": false,
          "headline": "docs: dashboard tab lists include fleet and prompts (help, README, we…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T22:00:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5d4306f53ab392ea50fb42ee22d7d6704ffaf6b",
          "body": null,
          "is_bot": false,
          "headline": "docs: queued prompts — README, website docs, changelog 1.14.0",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T21:54:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4647252c8933ab1000090978e835cbb089069c12",
          "body": "submitFinal had zero automated coverage (local queueAdd branch, remote\nremoteQueueAdd branch, duplicate-error formatting, success onRefresh/\nonStatus/setForm wiring). Extract it into an exported submitFinal(state,\nvalue, deps) alongside the existing formReduce/initFormState pure\nhelpers, with queueA\n[…]\nAddFn/readHostsFn injected so tests\nnever spawn or hit the network. Extract removeEntry the same way for the\nlist view's y/n confirmation. PromptsTab now calls both with real deps;\nbehavior unchanged.",
          "is_bot": false,
          "headline": "test: cover Prompts-tab write path via extracted submit handler",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T21:42:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7c3470d60577327e8782ee567f89261818f3aa4f",
          "body": null,
          "is_bot": false,
          "headline": "feat: dashboard Prompts tab — queue list, add-form, TextInput",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T21:31:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83b02719af881c8ef542471e356b649464a1fd9a",
          "body": "…unts)",
          "is_bot": false,
          "headline": "feat: dashboard read surfaces for prompt queue (status hint, fleet co…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T21:11:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9d87f6550bec01792f3f981a8789b8791ebef3f",
          "body": "…ue gate",
          "is_bot": false,
          "headline": "feat: fleet prompt queue — remote verbs, controller client, remoteQue…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T21:02:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5cb787aa0cb6b7ca20a4d5a875af47d528f7dd52",
          "body": null,
          "is_bot": false,
          "headline": "feat: unsnooze prompt — queue CLI (add/list/remove/clear), status block",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T19:46:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c54989c1721a0bf970beb3ad0bcea9088ceafb6d",
          "body": "… stars, starfield on subpages\n\nShared deterministic <Stars /> component: every star gets its own phase and\nduration so the sky never pulses in sync; ~1 in 6 stars glints with a soft\nglow and scale-up. Docs, changelog, feedback and 404 get a dimmed static\nlayer of the same sky. Reduced-motion stills everything as before.",
          "is_bot": false,
          "headline": "feat(site): livelier star twinkle — per-star periods, glinting bright…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T19:40:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9362f9bf331ac7d62f01d536f00145024c83ea95",
          "body": "…ublished versions only\n\nThe changelog page now cross-checks CHANGELOG.md entries against the npm\nregistry at build time — merged-but-unpublished versions (currently 1.13.0)\nstay off the site until they actually ship, no hardcoded exclusions.",
          "is_bot": false,
          "headline": "feat(site): animated sleeping z's in the brand; changelog shows npm-p…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T19:35:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f7606c3ce38de0c33bbd66aa8919f78e4fb8427",
          "body": "updateEntry returns the post-state regardless of who performed the\ntransition, so a losing concurrent dispatchPromptEntry call read\nstatus: 'launching' back even though it applied a no-op patch, and\nproceeded to open a second window. Capture the CAS outcome directly\nin the mutator closure instead of inferring it from the returned\nstatus.",
          "is_bot": false,
          "headline": "fix: prompt dispatch CAS actually detects a lost pending→launching race",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T19:32:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1c52c59d1bb55447fd8eba62f2e8422b5f49749",
          "body": "… lifecycle, notify",
          "is_bot": false,
          "headline": "feat: prompt queue delivery — fresh-session dispatch at reset, daemon…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T19:24:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a88ef50e8ebc504e005ea9977c91006448565152",
          "body": "…links under 560px",
          "is_bot": false,
          "headline": "fix(site): mobile nav — nowrap brand, two-row layout with scrollable …",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T19:02:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14f2c4ac9a31bb26ed6d2076aedfbc1eef994241",
          "body": null,
          "is_bot": false,
          "headline": "refactor: adapter launchArgs + extract awaitReadyAndSend from reopen",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T18:56:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f82d3d4d3dda74ed128d341090193fec99478f2",
          "body": null,
          "is_bot": false,
          "headline": "chore: gitignore .vercel and .env* (vercel link artifacts)",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T18:56:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e50a583f003e4c2f748d9bc4ae6a5c4fd5d81bf9",
          "body": "… labeled compare header\n\n- --faint #5b6470 → #78828f (3.26:1 → ≥4.8:1 on night/panel backgrounds)\n- contract dl: Reveal renders the group div directly (dl > div > dt+dd)\n- comparison table corner header gets an sr-only 'Capability' label",
          "is_bot": false,
          "headline": "fix(site): a11y to 100 — AA contrast for faint text, valid dl groups,…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T18:52:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02d11af3b51dfd3d6c0e00150fc3bfa8ac9d8f32",
          "body": "…ueue.js)",
          "is_bot": false,
          "headline": "feat: prompt queue core — state promptQueue + CRUD/due-ness (prompt-q…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T18:47:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e25730c1f562372bb0cbe628ef476bc415edaf86",
          "body": "- App Router in website/: / + /docs/ + /changelog/ statically generated\n  (full HTML at build), /feedback/ force-dynamic SSR so fresh submissions\n  are server-rendered into every response\n- changelog reads ../CHANGELOG.md at build via fs (same in-sync guarantee)\n- SEO: per-route keyword-tuned metada\n[…]\npositioned celestial; Lighthouse perf 97 / SEO 100\n- retire GitHub Pages (workflow deleted); Vercel deploys from website/ root\n- env renamed to NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY",
          "is_bot": false,
          "headline": "feat: migrate website to Next.js 16 — SSR on Vercel, max SEO",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T18:31:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c3d80876b618d1fe7714518195167427ba95f7d",
          "body": "…❯ brand restored\n\n- /feedback/ route: bug/idea board backed by Supabase (thin PostgREST client,\n  honeypot, RLS: anon may insert visible+new and read non-hidden — no\n  update/delete); schema in website/supabase/schema.sql, deploy env via\n  repo Variables in pages.yml\n- docs: full multi-host fleet s\n[…]\nard mock: fleet tab, real tab order, doctor tab matches real TUI\n- logo experiment reverted — back to the amber ❯ brand everywhere\n- celestial: moon starts below the nav; docks into the footer horizon",
          "is_bot": false,
          "headline": "feat: website v2 — supabase feedback board, fleet docs, audit fixes; …",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T17:51:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1c3defa2c827bbd44451b9e907edffd56c52cb56",
          "body": "Each Fleet-tab host header now shows a dim auth tag (`key`, `pw:command`,\n`pw:keychain`, `pw:env`, `pw:prompt`) from the host descriptor, so you can\ntell at a glance what a host authenticates with — and, for a needs-auth\nhost, why. Absent descriptor → no badge (legacy-safe).",
          "is_bot": false,
          "headline": "feat: fleet dashboard — per-host auth badge (key / pw:<source>)",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T11:21:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0602962c38481373b30d1349b1c794a154d8aabb",
          "body": "…urface the secret)\n\nresolveCommand's AuthError embedded the failed command's stderr (capped/\nstripped but not redacted), so a secret-manager command that debug-prints\nthe password to its own stderr on failure could show a short value in the\nuser's `hosts test` output. Build the message from the exit code alone:\ndefaultShellRun now carries `.status` and no stderr; resolveCommand reports\nonly `command source failed (exit N)`. Removes the now-unused\nstripControlChars helper.",
          "is_bot": false,
          "headline": "fix: redact command-source stderr from resolveCommand errors (never s…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T11:14:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f76a8bf94e6993dc40634463cf31c29e734eda5",
          "body": "The unsnooze mark — a crescent moon cradling the terminal prompt, z's\ndrifting off — as assets/logo.svg, inlined in the site nav (LogoMark),\ncarried by every page favicon, and atop the README.\n\nWebsite: Vite + React, three static routes (landing / docs / changelog,\nthe changelog rendered straight from CHANGELOG.md), night-sky-to-dawn\nscroll treatment. Deployed to Pages by .github/workflows/pages.yml on\npushes touching website/ (build in CI; dist/ and node_modules stay\nuntracked).",
          "is_bot": false,
          "headline": "feat: logo + project website (GitHub Pages)",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T10:52:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1524b99d1adef25a99b03a298197f47ad60d88fc",
          "body": "…SKPASS actually runs; confirm-prompt guard, serial interactive prompts, tightened auth-fail match",
          "is_bot": false,
          "headline": "fix: fleet password auth — drop BatchMode for password hosts so SSH_A…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T08:30:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b73d28338e260847feb402242e34d37c7d8ef81",
          "body": null,
          "is_bot": false,
          "headline": "docs: changelog — attribute keychain recipes to the right OS",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T08:05:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c7edd0043ef764e9c46682ccefb6750d242376d",
          "body": null,
          "is_bot": false,
          "headline": "docs: fleet password auth — sources, per-OS recipes, security posture",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T08:00:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9dcc93e611bc1a96ed973f5e7c95912b941c303",
          "body": "fetchHost/remoteAction now surface a distinct state:'needs-auth' (HostResult)\n/needsAuth flag (ActionResult) instead of a plain unreachable/error, either\nwhen sshEnvForHost has no resolvable credential (short-circuits before\nspawning ssh at all) or when ssh exits 255 with an auth-failure stderr on a\n[…]\nare dest string) from\nthe dashboard's Fleet tab into remoteAction, so R/C resume/cancel from the\ndashboard actually uses a password host's configured auth instead of\nsilently falling back to key auth.",
          "is_bot": false,
          "headline": "feat: fleet needs-auth state + hosts test pre-flight",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T07:49:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "05633a8afbd20a5716336df365ba5e7dc39ec832",
          "body": "…r gated by ssh flavor",
          "is_bot": false,
          "headline": "feat: fleet ssh wiring — askpass env for password hosts, ControlMaste…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T07:33:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5dc1843eebf01e2ec14c8bf68eb6e63871b160f6",
          "body": "…lper provisioning",
          "is_bot": false,
          "headline": "feat: _askpass helper — no-echo prompt, secret-to-stdout contract, he…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T07:20:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a0d6558b1a3deadc2f4070c79dde9da6f2bb026",
          "body": "…cted\n\ncommand source shell-executes the user's own trusted cmd string\n(git-credential-helper style) instead of naive argv-splitting, so\nquoted args with spaces work correctly. Built-in keychain support is\nmacOS-only; Windows and Linux throw AuthError pointing at --source\ncommand, dropping the unverified Windows CredRead P/Invoke blob.",
          "is_bot": false,
          "headline": "feat: askpass source resolvers (env/command/keychain/prompt), OS-inje…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T07:06:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52d84b43c87c6493256ab9611f9e1785853d8ac1",
          "body": "…tion, add flags",
          "is_bot": false,
          "headline": "feat: fleet host descriptors — per-host auth/source, string→key migra…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T06:59:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15a1c7ba847844dbec0f8779ad4efc5cfba2d1a2",
          "body": "…ion was silently empty)",
          "is_bot": false,
          "headline": "fix: capture ssh -V banner from stderr via spawnSync (live ssh detect…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T06:43:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "895e1be3026c8d378198032545e64d7f901fe1f5",
          "body": "…scovery",
          "is_bot": false,
          "headline": "feat: fleet — parse ssh -V for version/flavor + cross-platform ssh di…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-18T06:37:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7b3fd064df3af2d04ebb940c251076cefcb6035",
          "body": "… on ingest (no paste-RCE / row spoofing)",
          "is_bot": false,
          "headline": "fix: fleet — validate muxSession in attach hints, strip newlines/tabs…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T13:41:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2254d035760aeea754f5a91eac4e0b23a0d9fcd",
          "body": null,
          "is_bot": false,
          "headline": "docs: fleet resume key is uppercase R (lowercase r refreshes)",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T13:29:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "925bdaca3ac1163f5360a9b1d3a16cb135f22b70",
          "body": "…tup)",
          "is_bot": false,
          "headline": "docs: fleet — multi-host sessions over your own ssh (trust story + se…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T13:25:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd89ac3777c4129353044045503cf4ca6fb19875",
          "body": "…tach hints",
          "is_bot": false,
          "headline": "feat: dashboard fleet tab — cross-host sessions with staleness and at…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T13:15:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ce0c7e5ac314171fd0dd1e110f9ca5c8ebde4b0f",
          "body": "…read",
          "is_bot": false,
          "headline": "fix: self-contained fetch timeout + re-sanitize stale fleet cache on …",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T13:07:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8dfb008d03349e1fd27ae1d5d184f44cc6e2d749",
          "body": "…d sanitized ingest",
          "is_bot": false,
          "headline": "feat: unsnooze fleet — parallel ssh fan-out with cache, staleness, an…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T12:58:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7259f0ad9e3ab73b60a53372b4eb23df792d9289",
          "body": null,
          "is_bot": false,
          "headline": "fix: _remote always emits one framed line even on write-path exceptions",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T12:49:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "caca207ed56d7ea6146e3001012a81bb6b1e23da",
          "body": "…/resume/cancel)",
          "is_bot": false,
          "headline": "feat: unsnooze _remote — forced-command-safe fleet entrypoint (status…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T12:40:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b8a253ec9e6c6d051889feafdba613234af74a9",
          "body": null,
          "is_bot": false,
          "headline": "feat: status --json + shared markResumeNow core for remote triggering",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T12:32:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0598f56b6ee7f2d6434649c3bddc076a55fccb7e",
          "body": "… handler exists",
          "is_bot": false,
          "headline": "fix: keep strict asserts in fleet tests; don't route fleet before its…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T12:28:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c2321df9eea4a8a0023b51439570a5cdd2a50fe",
          "body": null,
          "is_bot": false,
          "headline": "feat: unsnooze hosts — registry for fleet ssh destinations",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T12:22:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6136679b647dac2f41551e779c9a00f5dfc4bf46",
          "body": "… sanitized envelopes",
          "is_bot": false,
          "headline": "feat: fleet primitives — host validation, hardened ssh argv, framed +…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T12:10:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6954432c51ca1648f9282d411888df0478bddb77",
          "body": "… on re-enable",
          "is_bot": false,
          "headline": "fix: ignore horizontal wheel, deflake SIGTERM test, reset mouse carry…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T06:13:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ce8290339fa0661056f50119985d91a307949e5d",
          "body": null,
          "is_bot": false,
          "headline": "docs: dashboard mouse support (settings, help, changelog)",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T06:04:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5166a1c48fd135115fae90820ecb9f1c9b9a028",
          "body": null,
          "is_bot": false,
          "headline": "feat: wheel scrollback window in the logs tab",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T05:57:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1edba669d138e639c90e0e0b0bda98c6f2287556",
          "body": null,
          "is_bot": false,
          "headline": "feat: click a session row to select it (status/sessions tabs)",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T05:51:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1354b22a4d24175202d8f97b113af0ef9a7a0c3",
          "body": null,
          "is_bot": false,
          "headline": "feat: clickable tabs/footer, wheel routing, m toggle in dashboard",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T05:43:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "adb551557a16692da1ffe44c8d2eaabd4c29f254",
          "body": "… paths",
          "is_bot": false,
          "headline": "fix: SIGTSTP actually suspends after mouse-off; cover SIGTERM/SIGTSTP…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T05:35:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f337ac59f7f0e81c2a41d90026a03d17eb2fbbd0",
          "body": null,
          "is_bot": false,
          "headline": "feat: crash/signal-safe mouse-off cleanup around the dashboard",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T05:26:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6ef548f67a45fad35febc0b92f999692f795a2eb",
          "body": null,
          "is_bot": false,
          "headline": "fix: mouse dispatch — press path filters to onClick zones",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T05:22:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e011dc4de4fdda653afb1972824eadfa55cb35fd",
          "body": null,
          "is_bot": false,
          "headline": "feat: MouseProvider + Clickable zones over ink measureElement",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T05:16:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6aae59dbe54c5e53f68c50a04551620abdae0a89",
          "body": "… cap\n\n- Extra mouse buttons (b >= 128, xterm 8-11) now return button: null instead of\n  aliasing to left/middle/right via base = b & 3\n- Horizontal wheel events (base 2/3 for button codes 66/67) return wheel: null\n  instead of fabricated 'up' direction\n- Cap rest carry at 32 chars to prevent unbounded growth on malformed input",
          "is_bot": false,
          "headline": "fix: mouse protocol — extra buttons null, horizontal wheel null, rest…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T05:12:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "400d4c0b55550281edd0c6eb984a7b8c04e2add8",
          "body": null,
          "is_bot": false,
          "headline": "feat: SGR-1006 mouse protocol parser (chunk-safe) + hit-testing",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T05:07:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a55e33138c8d728c3178424b3c1732d0f20754e7",
          "body": null,
          "is_bot": false,
          "headline": "feat: mouse config key for the dashboard (default on, UNSNOOZE_MOUSE)",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T05:03:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "559ae456406b615858a3ab699f7c593f9554ce50",
          "body": null,
          "is_bot": false,
          "headline": "release: 1.13.0",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T04:42:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a708f5f27f3b2c4a8ee32cb67e85bde45ca03f5",
          "body": "…e-now\n\nA live pane scrape of \"resets 12:04am (UTC)\" seen at 9pm parsed to ~21h in\nthe past (undated + non-ambiguous times deliberately stay past to avoid the\nold blind +24h on stale text). The monitor's first-tick corroboration then\nrejected the stop entirely — any pane-scraped limit stop within ~5\n[…]\nto qualify — beyond any window. Stale text still\nstays past → due-now.\n\nFound by the detection suite's futureBanner(3) failing between 21:00 and\n24:00 UTC; regression tests pin both sides of the rule.",
          "is_bot": false,
          "headline": "fix: roll undated midnight-crossing banners to tomorrow instead of du…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T04:42:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "72334f8a4510779a5c8010db2ee99bc90fe16b45",
          "body": "unsnooze usage — burn-rate & time-to-limit forecast per agent × window:\n- signal ladder (exact statusline % → calibrated-from-observed-stops →\n  estimated) with provenance labels on every figure\n- weighted token burn (cache_read ×0.1, formulaV-versioned), active-minutes\n  denominator, account-wide i\n[…]\n; eighth-block gauges; 80×24 floor with\n  compact one-line mark\n- animated \"❯ + rising z z z\" brand mark shared by dashboard and plain\n  chrome, driven by ink useAnimation, static under screen readers",
          "is_bot": false,
          "headline": "feat: usage forecast, pre-wall warnings, and live dashboard (1.13)",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-17T04:42:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b06383e3040521051674576fb7319af9fd5a545d",
          "body": null,
          "is_bot": false,
          "headline": "release: 1.12.2",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-16T11:04:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f2c03e7f9ec111f001de0e554a7fed438522ac32",
          "body": null,
          "is_bot": false,
          "headline": "ci: skip unix-only launch-surface tests on win32 runners",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-16T10:53:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16bc41a59295021e3bbb65f21e320afd513d89d9",
          "body": null,
          "is_bot": false,
          "headline": "release: 1.12.1",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-16T10:49:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa03a4bb2c786ad7b8ace50bbb591c0c444545b8",
          "body": "…d on Linux runners)",
          "is_bot": false,
          "headline": "ci: pin platform in doctor applyFixes test (launchctl assertion faile…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-16T10:37:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76823dcbae474ac4e31ff95aa2a16ca0e3bfdc96",
          "body": "Daemon PATH fix (launchd revivals died with spawn tmux ENOENT — silent),\n`unsnooze preview` dry-run sharing its decision core with dispatch,\nntfy push notifications (additive, emoji-safe JSON publish, terse privacy\nmode), Trust & security README section + SECURITY.md, npm trusted-publishing\nrelease workflow with provenance, and a reproducible VHS demo tape.\nFailed records now survive the sweeper so give-ups stay explainable.",
          "is_bot": false,
          "headline": "release: 1.12.0",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-16T10:06:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dbbbc4c8fc4def46e48591b32b5546628a8daa26",
          "body": "unsnooze doctor [--fix] (csg migration sweep + install health check),\npane identity & ownership (stamp + lease liveness before any inject/close;\nmonitors exit with their lease), launch failures degrade to the unwatched\nagent instead of dying, zellij scrollback capture with pre-0.35 fallback,\nweekly-DST and garbage-clock reset-time fixes, CAS status sweeps,\npid-verified state-lock steal, reap skips active resumed panes, and\npristine .unsnooze-orig install backups.",
          "is_bot": false,
          "headline": "release: 1.11.0",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-16T07:30:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ce47cb572b9cae9b88bdc9f1b1a18bf17e1011a",
          "body": "Upgrade-window fail-safe (never brick claude during npm -g reinstall),\ndaemon crash-loop guards (ThrottleInterval / Restart=always + RestartSec,\nversion-skew self-restart), 5 MB log rotation (copy-truncate for the\nlaunchd-held daemon.log), resume-retry backoff with resume-now exemption,\natomic singleton lock with recycled-pid takeover, and a once-daily update\nnotice on the launch path.",
          "is_bot": false,
          "headline": "release: 1.10.1",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-16T06:46:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38e1b7526e857f9cfe8c71e545f67e384fe8752f",
          "body": "Session-name ownership (no more duplicate session: unsnooze), reset-time\naccuracy (banner-anchored times + probing), and upgrade-safe state migration.",
          "is_bot": false,
          "headline": "release: 1.10.0",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-14T07:38:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d7035b1fabd9776b2a96c612e3afac70f6137ff8",
          "body": "Existing installs must keep working after the ownership + reset-time\nchanges:\n\n- Heal legacy tmux paneOwner=sessionName so leases match again\n- Pull old blind 5h fallback waits into the probe window (absolute/relative\n  untouched)\n- Keep TMUX_SESSION_NAME as a MUX_SESSION_NAME alias\n- Treat \"try aga\n[…]\nin 0 minutes\" as relative zero, not a fallback miss\n  (restores GUI e2e S13 and real just-lifted banners)\n\nAdd compat-upgrade tests. Verified: 435 unit tests, full tmux e2e (S1–S16),\nzellij smoke e2e.",
          "is_bot": false,
          "headline": "fix: upgrade-safe migrations and zero-minute relative parse",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-14T07:35:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d97ec720ef3de79ff47c9ecd57e5dfde9a64f20d",
          "body": "…racy\n\nAfter stacking session-name ownership with reset-time accuracy, update tests\nfor reviveTarget sessionExists and fmtResetProvenance export, and record the\nreset-time work under Unreleased.",
          "is_bot": false,
          "headline": "fix: merge plan1/plan2 test expectations and document reset-time accu…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-14T07:22:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07a6acbe2614c8f42d8dd4eabcc339f2c0ab2408",
          "body": "Wrong wake times came from scraping undated pane text and sleeping for\nFALLBACK_RESET_MS (now+5h) when nothing parsed — and from rolling already-\npast absolute clock times forward 24h.\n\n- Thread bannerAt through resetAtMs; relative offsets and next-occurrence\n  math anchor to the banner's own time (\n[…]\nration (transcript or future absolute).\n- Later ticks may upgrade fallback/relative estimates to absolute.\n- Persist bannerAt; status shows provenance (absolute, from transcript /\n  guessed: probing).",
          "is_bot": false,
          "headline": "fix: anchor reset times to the banner, probe instead of guessing 5h",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-14T07:20:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5c1176ec122c2849a962e7e96823ed88c3937a64",
          "body": "…h revival\n\nInteractive launcher owns the base name `unsnooze` (and unsnooze-2… on\ncollision); the resumer may join a live session but only creates\n`unsnooze-resumed`. Live session discovery via sessionForPane replaces the\nfrozen MUX_SESSION_NAME constant; tmux newWindow returns paneOwner null;\nuninstall stops the resumer; failed wrap degrades to unwatched CLI; new\nsessions/reap commands and scheduled record sweep/stale abandonment.",
          "is_bot": false,
          "headline": "fix: session-name ownership so interactive launches never collide wit…",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-14T07:18:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57dbb89d98b91cbbf3285e8b2ab719d356e846c7",
          "body": "contextGuard: estimate a stopped session's context size before waking it;\ninform of or pause on expensive cold-cache resumes.",
          "is_bot": false,
          "headline": "release: 1.9.0",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-13T08:17:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "330ac9e6749a83733a006c8612dc21bebd8c9f47",
          "body": "Waking a session hours after a limit stop re-reads its entire context at\nfull uncached price (the prompt cache expires in minutes) — a 150k-token\nsession can eat a large slice of a fresh 5h window the moment it wakes,\nand unsnooze spent that quota silently.\n\nNow the context size is estimated from Cl\n[…]\neason>'). Claude-only v1 via the optional adapter hook\ncontextTokens(rec); Codex rollouts carry the same data for a follow-up.\n\nPrompted by r/ClaudeAI feedback on a resume consuming 30% of a 5h quota.",
          "is_bot": false,
          "headline": "Add contextGuard: see and gate the cost of big-context wakes",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-13T08:15:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2a463b5150548ffb7f08ec013b54dd7d9fa43368",
          "body": "Ship SEO package description/keywords to npm (1.8.0 already published with\nthe pre-refresh metadata).",
          "is_bot": false,
          "headline": "release: 1.8.1",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:45:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a5496d7b5c1fbc07b234457efaf9860b7776882",
          "body": "Expand package description/keywords and the README comparison table so\ndiscovery matches Qwen, Kimi, OpenCode, Antigravity, OpenRouter, and Zellij.\nGitHub description and topics updated to match.",
          "is_bot": false,
          "headline": "docs: refresh SEO for multi-agent support (1.7+)",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:43:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2778fb3d37609847f605372af4c3e4e6375fd051",
          "body": "Notification channels (OSC/BEL/native), dual tmux/Zellij multiplexer, and\nChatGPT desktop app codex resolution. CHANGELOG Unreleased → 1.8.0.",
          "is_bot": false,
          "headline": "release: 1.8.0",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:15:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a03f3eb740e3a380cb0a5cc106196205d6a37721",
          "body": null,
          "is_bot": false,
          "headline": "fix: correct notification channel docs accuracy",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:07:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1afd1bbef8eb68a3cc986e10487311c8c12f6832",
          "body": "README support matrix and config; CLI help; CHANGELOG entry.",
          "is_bot": false,
          "headline": "Document notification channels (OSC, BEL, native)",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:07:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d46b4cb395133a2a4fac82a1fadb77390a9ffdd7",
          "body": "Enable OSC/BEL channels for in-mux sessions; leave pane-less callers on native.",
          "is_bot": false,
          "headline": "Pass pane context into notify from monitor and resumer",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:07:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4ea13c72e186a0ccf47ad112ea742472dc9fc19",
          "body": "Dispatch auto/native/osc/bell with pane context; fall back to native\nwhen OSC/BEL undeliverable so notifications are never silently lost.",
          "is_bot": false,
          "headline": "Wire notify channel dispatch for OSC, BEL, and native",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:07:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6fc670a5cb203fab4c46bfa12204dd81d156d13",
          "body": null,
          "is_bot": false,
          "headline": "fix: force OSC respects caller denylist even when server is stale",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:07:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d43f968c15534d8f2486a11ca0d13a00fc8522b4",
          "body": null,
          "is_bot": false,
          "headline": "fix: address review feedback for Add notify-tty module for OSC and BEL",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:07:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7786cf399ad19f82a660d11450cd85e12c3f7c04",
          "body": "Terminal-branded notifications via client tty OSC and pane BEL, with\nsanitization and injectable fs/mux for tests.",
          "is_bot": false,
          "headline": "Add notify-tty module for OSC 9/777 and BEL channels",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:07:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2153f22009aede310b465e76290513bb5b3fb390",
          "body": null,
          "is_bot": false,
          "headline": "fix: address review feedback for Add tmux tty discovery methods",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:07:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1aaa915ea6ebc4a4db648109110dc8de813dba5e",
          "body": "Enable OSC-to-client-tty and BEL channels without caching pane/client paths.",
          "is_bot": false,
          "headline": "Add tmux clientTtys, paneTty, and globalEnv discovery",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:07:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70c9e3cc254f6325114d29cdac99515605bec9f9",
          "body": "Support auto|native|osc|bell via DEFAULTS, UNSNOOZE_NOTIFY_CHANNEL env, and ENUMS.",
          "is_bot": false,
          "headline": "Add notifyChannel config setting",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T19:07:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3acc2fd4dc44f6890c8fe2c2f3ee0b399f6cef8b",
          "body": "Since July 2026 the Codex app is the ChatGPT desktop app; its bundled\ncodex app-server writes the same ~/.codex/sessions rollouts, so the\nwatcher channel keeps working — verified against a real install with a\nlive probe session (codex-cli 0.144.0-alpha.4): same rollout path and\nnaming, token_count r\n[…]\nover the bundle). Pinned parser behavior for the new\nreason-string rate_limit_reached_type values (workspace credit/limit\nvariants bind the latest-resetting window) and the unified-app rollout\nshapes.",
          "is_bot": false,
          "headline": "codex: support the unified ChatGPT desktop app",
          "author_name": "saaranshM",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T16:02:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c4b845da1907263759c06a3faa55612e33961607",
          "body": "Add zellij backend (dual tmux + zellij multiplexer support)",
          "is_bot": false,
          "headline": "zellij backend: dual tmux + zellij multiplexer support (#1)",
          "author_name": "Saaransh Menon",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T15:36:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05fd7f7e57b7337069476c0e3fe00bff4c9c133c",
          "body": "tmux 3.7b prints a blank line and exits 0 when the -t target does not\nexist, so paneAlive returned true for any pane id. On this branch that\nmade dead-pane revival burn all five attempts in the capture-retry path\n(e2e S5 red on 3.7b); on pre-refactor main the same quirk only leaked\nzombie monitors b\n[…]\ns own pane id back.\n\nVerified on tmux 3.7b: all 16 e2e-simulate scenarios pass, plus live\nzellij 0.44.3 pipeline runs (lease-authorized injection and dead-pane\nrevival for all seven agents' adapters).",
          "is_bot": false,
          "headline": "fix(tmux): paneAlive must not trust display-message's exit code",
          "author_name": "Saaransh Menon",
          "author_login": "saaranshM",
          "committed_at": "2026-07-12T15:35:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fedb1689705feb239ce08679507d70422f7db40d",
          "body": "Address saaranshM's PR review:\n- reopenEnv: whitelist rec.env + UNSNOOZE control vars only — never\n  spread process.env into launch argv (zellij persists the command line\n  in pane metadata, so daemon env was readable via ps/list-panes).\n- verifyOne: persist verifyRetries on the record; after 3 retr\n[…]\n tmux e2e-simulate green. Live zellij smoke +\nresumer integration green.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01E9nxdQBeVr8RZTkyVEeuJw",
          "is_bot": false,
          "headline": "review: env whitelist, resuming escape hatch, defer owned panes",
          "author_name": "Wave Consulting",
          "author_login": null,
          "committed_at": "2026-07-12T12:18:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a7e53d885877eb40717742f15f4e51ce3fc6912d",
          "body": "Harness-only update (no src/ changes) so the 15-scenario tmux suite\npasses again after the tmux->zellij refactor:\n- _monitor invoked with the new <mux> <owner> <pane> <agent> <leaseId>\n  signature; S5/S8 exercise the structured reopen launchSpec.\n- seeded records use mux/paneOwner/muxSession/leaseId\n[…]\nemon scenarios pin the tmux backend against inherited env.\n\nVerified: two consecutive green full runs (E2E OK), npm test 233 pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(e2e): modernize tmux e2e-simulate.sh for the multiplexer refactor",
          "author_name": "Wave Consulting",
          "author_login": null,
          "committed_at": "2026-07-12T12:05:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "52a5932ade3a6444ad3ccbd76c902d69dd6a9f2a",
          "body": "zellij's list-panes pane_command includes arguments (e.g.\n'claude --resume <id>', 'node -e ...'), so basename(pane_command)\nreturned garbage and isForegroundCommand always failed — the live-pane\nresume path never authorized and every resume fell back to reopen.\nTake the first whitespace token, then \n[…]\n.\n\nCaught by a live resumer->zellij-pane integration test; the unit\nfixture had no args so it passed. Added the arg-bearing cases.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(zellij): paneCurrentCommand must strip args before basename",
          "author_name": "Wave Consulting",
          "author_login": null,
          "committed_at": "2026-07-12T12:05:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 15,
      "commits_last_year": 153,
      "latest_release_at": "2026-07-19T07:15:32Z",
      "latest_release_tag": "v1.14.0",
      "releases_from_tags": false,
      "days_since_last_push": 4,
      "active_weeks_last_year": 3,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 0.8
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 57,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "unsnooze",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "claude",
            "claude-code",
            "codex",
            "codex-cli",
            "openai",
            "anthropic",
            "grok",
            "xai",
            "qwen",
            "qwen-code",
            "kimi",
            "kimi-cli",
            "moonshot",
            "opencode",
            "antigravity",
            "antigravity-cli",
            "gemini",
            "google",
            "openrouter",
            "chatgpt",
            "usage-limit",
            "usage limit",
            "rate-limit",
            "rate limit",
            "5-hour limit",
            "weekly limit",
            "auto-resume",
            "auto-retry",
            "resume",
            "retry",
            "tmux",
            "zellij",
            "ai-agents",
            "agentic-coding",
            "cli",
            "developer-tools"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/unsnooze",
          "is_deprecated": false,
          "latest_version": "1.14.0",
          "repository_url": "https://github.com/saaranshM/unsnooze",
          "versions_count": 15,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2363,
          "first_published_at": "2026-07-10T08:21:30.829000Z",
          "latest_published_at": "2026-07-19T07:16:40.185000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 3,
      "stars": 60,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-07-12",
            "count": 2
          },
          {
            "date": "2026-07-19",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 3,
        "total_forks": 3
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 56273,
      "source_files_sampled": 159,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "package.json",
        "website/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 45,
        "malicious_count": 0,
        "assessed_package": "npm:unsnooze@1.14.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@clack/prompts",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.0"
        },
        {
          "name": "ink",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.1.1"
        },
        {
          "name": "picocolors",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.1"
        },
        {
          "name": "react",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.7"
        },
        {
          "name": "framer-motion",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.23.0"
        },
        {
          "name": "marked",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^18.0.6"
        },
        {
          "name": "next",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.2.0"
        },
        {
          "name": "react",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.0"
        },
        {
          "name": "react-dom",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 1,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 1,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "saaranshM",
          "commits": 147,
          "avatar_url": "https://avatars.githubusercontent.com/u/46712446?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "release.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 3,
            "reason": "dependency not pinned by hash detected -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "13 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "c9428e49cc4450044fed37585d8a521eddabdc8d",
        "ran_at": "2026-07-25T04:18:45Z",
        "aggregate_score": 3.4,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T17:25:44Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-12T15:36:24Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/saaranshM/unsnooze",
    "host": "github.com",
    "name": "unsnooze",
    "owner": "saaranshM"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 59,
      "inputs": {
        "security": 47,
        "vitality": 74,
        "community": 44,
        "governance": 57,
        "engineering": 66
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 74,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "commits_last_year": 153,
              "human_commit_share": 1,
              "days_since_last_push": 4,
              "active_weeks_last_year": 3
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "3/52 weeks with commits",
                "points": 2.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 3
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "153 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 153
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 15,
              "latest_release_tag": "v1.14.0",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 0.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "15 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0.8 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0.8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 44,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 31,
            "inputs": {
              "forks": 3,
              "stars": 60,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "60 stars",
                "points": 28.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 60
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "3 forks",
                "points": 2.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 56,
            "inputs": {
              "packages": [
                "unsnooze"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 2363
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,363 downloads/month across npm",
                "points": 45,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2363,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 57,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 13,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "merged_prs": 1,
              "open_issues": 0,
              "closed_issues": 1,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1/1 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1,
                      "decided": 1
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 48,
            "inputs": {
              "followers": 5,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "saaranshM",
              "public_repos": 28,
              "account_age_days": 2747
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "5 followers of saaranshM",
                "points": 5.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 5,
                      "login": "saaranshM"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "28 public repos, account ~7 yr old",
                "points": 22.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 28
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 7
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "unsnooze"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "15 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 66,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "agentic-coding",
                "ai-agents",
                "anthropic",
                "auto-resume",
                "claude-code",
                "cli",
                "codex",
                "codex-cli",
                "grok",
                "openai",
                "rate-limit",
                "tmux",
                "usage-limit",
                "claude",
                "antigravity",
                "kimi",
                "opencode",
                "openrouter",
                "qwen",
                "zellij"
              ],
              "has_wiki": true,
              "homepage": "https://unsnooze.combustortech.in",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://unsnooze.combustortech.in",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "20 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 47,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 34,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 3.4
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 3",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "13 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:unsnooze@1.14.0 runtime dependency closure — what installing the published package pulls in — 45 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:unsnooze@1.14.0",
                  "assessed": 45
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 45,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 45,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "at_risk",
        "name": "AI Readiness",
        "value": 43,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.97,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "97 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 97,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 41,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.03,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "3 of the last 100 commits agent-authored or agent-credited",
                "points": 6,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 3,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 56273,
              "source_files_sampled": 159,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/159 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 159,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T04:18:50.075976Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/saaranshM/unsnooze.svg",
  "full_name": "saaranshM/unsnooze",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm.