Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-27 10:29 UTC

gkoreli / backlog-mcp

Your backlog is your agent's memory

TypeScriptMIT★ 5 Sterne⑂ 2 Forksseit Dez. 2025Auf GitHub ansehen ↗

gkoreli/backlog-mcp erreicht einen Gesundheitsindex von 60 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (89/100) ab, am schwächsten bei Community & Adoption (36/100). Zuletzt vor 6 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

60
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.

60
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

Goga KoreliPersönliches Konto
0 Follower5 öffentliche Reposseit Nov. 2025

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?

89Exzellent · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 6 Tagen
18/36Commit-Rhythmus — 26/52 Wochen mit Commits
18/18Commit-Volumen — 920 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year920
human_commit_share1
days_since_last_push6
active_weeks_last_year26

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 92 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 6 Tagen
27/27Release-Rhythmus — ein Release etwa alle 0,4 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count92
latest_release_tagv0.70.0
releases_from_tagsnein
days_since_latest_release6
mean_days_between_releases0,4
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?

36Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
9.8/60Stars — 5 Stars
0/25Forks — 2 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks2
stars5
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
packagesbacklog-mcp
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?

49Gefährdet · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
7.9/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 65 % der Commits
4.1/13.5Breite der Beitragenden — 3 Beitragende
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Verwendete Eingangsdaten
bus_factor1
contributors_sampled3
top_contributor_share0,647
Wie die Bewertung erfolgt
0/46.8Issue-Lösungsquote — keine Issues oder keine Daten
35.3/38.3PR-Annahme — 109/118 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/29 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs109
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs9
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Issue-Lösungsquote. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
0/25Reichweite des Inhabers — 0 Follower von gkoreli
7.1/25Kontohistorie — 5 öffentliche Repos, Kontoalter ca. 0 Jahre
Verwendete Eingangsdaten
followers0
owner_typeUser
is_verified
owner_logingkoreli
public_repos5
account_age_days259
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 6 Tagen
20/20Versionshistorie — 91 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesbacklog-mcp
ecosystemsnpm
any_deprecatednein
min_days_since_publish6

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

77Gut · 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
20/20OpenSSF Scorecard: CI-Tests — 1 out of 1 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein

Dokumentation

90Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://gkoreli.com/one-hundred-pull-requests
10/10Repository-Beschreibung
10/10Topics — 7 Topics
0/10Wiki
Verwendete Eingangsdaten
topicsai, anthropic, claude, llm, mcp, model-context-protocol, task-management
has_wikinein
homepagehttps://gkoreli.com/one-hundred-pull-requests
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

43Gefährdet · 16 % des Gesamtindex

Sicherheitslage

37Gefä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
2.5/2.5CI-Tests — 1 out of 1 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/29 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
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 121 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3,7
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): signed_releases. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
18.5/35Direkte Abhängigkeiten ohne bekannte Advisories — 1 betroffen: @hono/node-server 1.19.15 (moderate 5.9)
10.4/25Indirekte Abhängigkeiten ohne bekannte Advisories — 1 betroffen: sharp 0.34.5 (high 7.3)
40/40Keine offenen Advisories — kein Advisory ist länger als 90 Tage öffentlich
Verwendete Eingangsdaten
sourceosv
advisories2
affected_packages2
assessed_packages248
unassessed_packages0
affected_by_severityhigh 1, moderate 1
direct_affected_packages1
Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von npm:backlog-mcp@0.70.0 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 248 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.

72Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — .agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 100 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share1
agent_instruction_files.agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md
agent_instruction_max_bytes33.296
Wie die Bewertung erfolgt
18/18Bootstrap mit einem Befehl — .mise.toml
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — packages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, tsconfig.json
10/10Reproduzierbare Umgebung — lockfile
10/10Belegte Agentenpraxis — 65 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespnpm-lock.yaml
has_dockerfilenein
typed_languageja
bootstrap_files.mise.toml
has_devcontainernein
has_linter_confignein
typecheck_configspackages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, tsconfig.json
agent_commit_share0,65
toolchain_manifests
dependency_bot_commit_share0
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — TypeScript (statisch typisiert)
55/55Handhabbare Dateigrößen — 0/423 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageTypeScript
largest_source_bytes56.219
source_files_sampled423
oversized_source_files0
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
20/20MCP-Server
0/40Lauffähige Beispiele
Verwendete Eingangsdaten
example_dirs
has_mcp_signalja
api_schema_files

Eckdaten

5GitHub-Sterne
3Mitwirkende
920Commits, letzte 12 Monate
6Tage seit letztem Push
92Releases
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 ★ / 2 ⇿
0Sterne
2Forks
42Releases

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.

111222212026-012026-032026-04
Major 0Minor 29Patch 13
OpenSSF Scorecard 3.7 / 10
3.7Gesamtwert

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-27 10:29 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests1 out of 1 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/29 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
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities121 existing vulnerabilities detected
Direkte Abhängigkeiten 30
RegistryPaketVersionsvorgabeManifest
npm@backlog-mcp/sharedworkspace:*packages/memory/package.json
npm@orama/orama^3.1.18packages/memory/package.json
npm@orama/stopwords^3.1.18packages/memory/package.json
npm@huggingface/transformers^3.8.1packages/memory/package.json
npm@hono/node-server^1.14.0packages/server/package.json
npm@huggingface/transformers^3.8.1packages/server/package.json
npm@modelcontextprotocol/sdk^1.25.1packages/server/package.json
npm@orama/orama^3.1.18packages/server/package.json
npm@orama/stopwords^3.1.18packages/server/package.json
npm@parcel/watcher2.5.6packages/server/package.json
npmajv^8.17.1packages/server/package.json
npmarctic^3.0.0packages/server/package.json
npmcommander^14.0.3packages/server/package.json
npmgray-matter^4.0.3packages/server/package.json
npmhono^4.7.0packages/server/package.json
npmmcp-remote^0.1.37packages/server/package.json
npmzod^4.3.5packages/server/package.json
npmzod^4.3.5packages/shared/package.json
npm@backlog-mcp/sharedworkspace:*packages/viewer/package.json
npm@nisli/core^0.54.0packages/viewer/package.json
npm@orama/highlight^0.1.9packages/viewer/package.json
npm@shikijs/engine-javascript^4.2.0packages/viewer/package.json
npm@shikijs/langs^4.2.0packages/viewer/package.json
npm@shikijs/themes^4.2.0packages/viewer/package.json
npmdiff^9.0.0packages/viewer/package.json
npmdompurify^3.3.1packages/viewer/package.json
npmmarked^17.0.1packages/viewer/package.json
npmmarked-shiki^1.2.1packages/viewer/package.json
npmmermaid^11.12.3packages/viewer/package.json
npmshiki^4.2.0packages/viewer/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 2

Die Installation von npm:backlog-mcp@0.70.0 zieht 248 Pakete nach sich, direkt und transitiv: 2 tragen bekannte Advisories, davon 1 direkte Abhängigkeiten.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
sharp0.34.5indirekthoch10.35.0
@hono/node-server1.19.15direktmittel12.0.5

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": [
        "ai",
        "anthropic",
        "claude",
        "llm",
        "mcp",
        "model-context-protocol",
        "task-management"
      ],
      "is_fork": false,
      "size_kb": 7050,
      "has_wiki": false,
      "homepage": "https://gkoreli.com/one-hundred-pull-requests",
      "languages": {
        "CSS": 124411,
        "HTML": 11100,
        "Shell": 243,
        "JavaScript": 116012,
        "TypeScript": 2578380
      },
      "pushed_at": "2026-07-20T19:05:18Z",
      "created_at": "2025-12-20T07:52:54Z",
      "owner_type": "User",
      "updated_at": "2026-07-20T19:05:42Z",
      "description": "Your backlog is your agent's memory",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "gkoreli.com",
      "name": "Goga Koreli",
      "type": "User",
      "login": "gkoreli",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/243085293?v=4",
      "created_at": "2025-11-10T08:36:47Z",
      "is_verified": null,
      "public_repos": 5,
      "account_age_days": 259
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.70.0",
          "kind": "minor",
          "published_at": "2026-07-20T19:05:19Z"
        },
        {
          "tag": "v0.69.0",
          "kind": "minor",
          "published_at": "2026-07-19T05:54:41Z"
        },
        {
          "tag": "v0.68.0",
          "kind": "minor",
          "published_at": "2026-07-18T16:01:47Z"
        },
        {
          "tag": "v0.67.0",
          "kind": "minor",
          "published_at": "2026-07-18T00:05:07Z"
        },
        {
          "tag": "v0.66.0",
          "kind": "minor",
          "published_at": "2026-07-17T23:40:44Z"
        },
        {
          "tag": "v0.65.0",
          "kind": "minor",
          "published_at": "2026-07-17T23:11:33Z"
        },
        {
          "tag": "v0.64.0",
          "kind": "minor",
          "published_at": "2026-07-17T21:05:58Z"
        },
        {
          "tag": "v0.63.0",
          "kind": "minor",
          "published_at": "2026-07-17T16:59:39Z"
        },
        {
          "tag": "v0.62.0",
          "kind": "minor",
          "published_at": "2026-07-17T04:45:26Z"
        },
        {
          "tag": "v0.61.0",
          "kind": "minor",
          "published_at": "2026-07-16T23:17:25Z"
        },
        {
          "tag": "v0.60.0",
          "kind": "minor",
          "published_at": "2026-07-16T21:08:11Z"
        },
        {
          "tag": "v0.59.0",
          "kind": "minor",
          "published_at": "2026-07-16T18:56:31Z"
        },
        {
          "tag": "v0.58.0",
          "kind": "minor",
          "published_at": "2026-06-19T22:24:18Z"
        },
        {
          "tag": "v0.57.0",
          "kind": "minor",
          "published_at": "2026-06-19T22:13:25Z"
        },
        {
          "tag": "v0.56.0",
          "kind": "minor",
          "published_at": "2026-06-19T21:10:33Z"
        },
        {
          "tag": "v0.55.1",
          "kind": "patch",
          "published_at": "2026-06-19T20:37:56Z"
        },
        {
          "tag": "v0.55.0",
          "kind": "minor",
          "published_at": "2026-06-19T20:33:25Z"
        },
        {
          "tag": "v0.54.1",
          "kind": "patch",
          "published_at": "2026-06-19T19:51:29Z"
        },
        {
          "tag": "v0.53.7",
          "kind": "patch",
          "published_at": "2026-06-18T23:45:34Z"
        },
        {
          "tag": "v0.53.6",
          "kind": "patch",
          "published_at": "2026-06-18T23:41:42Z"
        },
        {
          "tag": "v0.53.5",
          "kind": "patch",
          "published_at": "2026-06-18T23:37:31Z"
        },
        {
          "tag": "v0.53.3",
          "kind": "patch",
          "published_at": "2026-06-18T22:24:11Z"
        },
        {
          "tag": "v0.53.2",
          "kind": "patch",
          "published_at": "2026-06-18T19:42:43Z"
        },
        {
          "tag": "v0.53.1",
          "kind": "patch",
          "published_at": "2026-06-18T16:44:17Z"
        },
        {
          "tag": "v0.53.0",
          "kind": "minor",
          "published_at": "2026-06-17T22:49:29Z"
        },
        {
          "tag": "v0.52.0",
          "kind": "minor",
          "published_at": "2026-06-17T21:12:06Z"
        },
        {
          "tag": "v0.51.1",
          "kind": "patch",
          "published_at": "2026-06-17T04:16:58Z"
        },
        {
          "tag": "v0.51.0",
          "kind": "minor",
          "published_at": "2026-06-16T23:13:31Z"
        },
        {
          "tag": "v0.50.3",
          "kind": "patch",
          "published_at": "2026-06-03T23:42:08Z"
        },
        {
          "tag": "v0.50.2",
          "kind": "patch",
          "published_at": "2026-05-25T07:05:36Z"
        },
        {
          "tag": "v0.50.1",
          "kind": "patch",
          "published_at": "2026-05-25T06:52:15Z"
        },
        {
          "tag": "v0.50.0",
          "kind": "minor",
          "published_at": "2026-05-25T06:40:17Z"
        },
        {
          "tag": "v0.49.2",
          "kind": "patch",
          "published_at": "2026-04-29T21:40:55Z"
        },
        {
          "tag": "v0.49.0",
          "kind": "minor",
          "published_at": "2026-04-29T19:04:28Z"
        },
        {
          "tag": "v0.48.2",
          "kind": "patch",
          "published_at": "2026-04-23T21:21:39Z"
        },
        {
          "tag": "v0.48.1",
          "kind": "patch",
          "published_at": "2026-04-20T20:31:07Z"
        },
        {
          "tag": "v0.47.5",
          "kind": "patch",
          "published_at": "2026-04-14T23:03:46Z"
        },
        {
          "tag": "v0.47.4",
          "kind": "patch",
          "published_at": "2026-04-14T22:43:24Z"
        },
        {
          "tag": "v0.47.3",
          "kind": "patch",
          "published_at": "2026-04-14T21:47:01Z"
        },
        {
          "tag": "v0.47.2",
          "kind": "patch",
          "published_at": "2026-04-14T20:48:50Z"
        },
        {
          "tag": "v0.47.1",
          "kind": "patch",
          "published_at": "2026-03-26T01:31:52Z"
        },
        {
          "tag": "v0.47.0",
          "kind": "minor",
          "published_at": "2026-03-26T01:21:05Z"
        },
        {
          "tag": "v0.46.0",
          "kind": "minor",
          "published_at": "2026-02-24T21:29:34Z"
        },
        {
          "tag": "v0.45.0",
          "kind": "minor",
          "published_at": "2026-02-24T21:14:27Z"
        },
        {
          "tag": "v0.44.0",
          "kind": "minor",
          "published_at": "2026-02-24T20:50:02Z"
        },
        {
          "tag": "v0.43.0",
          "kind": "minor",
          "published_at": "2026-02-24T20:21:05Z"
        },
        {
          "tag": "v0.42.0",
          "kind": "minor",
          "published_at": "2026-02-24T01:56:06Z"
        },
        {
          "tag": "v0.41.0",
          "kind": "minor",
          "published_at": "2026-02-24T01:37:30Z"
        },
        {
          "tag": "v0.40.0",
          "kind": "minor",
          "published_at": "2026-02-21T23:52:30Z"
        },
        {
          "tag": "v0.39.1",
          "kind": "patch",
          "published_at": "2026-02-20T21:45:36Z"
        },
        {
          "tag": "v0.39.0",
          "kind": "minor",
          "published_at": "2026-02-16T22:38:12Z"
        },
        {
          "tag": "v0.37.0",
          "kind": "minor",
          "published_at": "2026-02-16T19:27:55Z"
        },
        {
          "tag": "v0.36.0",
          "kind": "minor",
          "published_at": "2026-02-12T05:15:33Z"
        },
        {
          "tag": "v0.35.0",
          "kind": "minor",
          "published_at": "2026-02-10T00:48:39Z"
        },
        {
          "tag": "v0.34.0",
          "kind": "minor",
          "published_at": "2026-02-09T21:01:19Z"
        },
        {
          "tag": "v0.33.0",
          "kind": "minor",
          "published_at": "2026-02-07T02:38:08Z"
        },
        {
          "tag": "v0.32.0",
          "kind": "minor",
          "published_at": "2026-02-06T18:14:30Z"
        },
        {
          "tag": "v0.31.0",
          "kind": "minor",
          "published_at": "2026-02-05T22:56:59Z"
        },
        {
          "tag": "v0.30.0",
          "kind": "minor",
          "published_at": "2026-02-05T07:00:53Z"
        },
        {
          "tag": "v0.29.1",
          "kind": "patch",
          "published_at": "2026-02-03T06:25:54Z"
        },
        {
          "tag": "v0.29.0",
          "kind": "minor",
          "published_at": "2026-02-03T01:15:19Z"
        },
        {
          "tag": "v0.28.0",
          "kind": "minor",
          "published_at": "2026-01-31T18:34:02Z"
        },
        {
          "tag": "v0.27.2",
          "kind": "patch",
          "published_at": "2026-01-29T01:25:15Z"
        },
        {
          "tag": "v0.27.1",
          "kind": "patch",
          "published_at": "2026-01-28T22:55:02Z"
        },
        {
          "tag": "v0.27.0",
          "kind": "minor",
          "published_at": "2026-01-28T01:44:28Z"
        },
        {
          "tag": "v0.26.1",
          "kind": "patch",
          "published_at": "2026-01-27T20:35:50Z"
        },
        {
          "tag": "v0.26.0",
          "kind": "minor",
          "published_at": "2026-01-27T18:05:55Z"
        },
        {
          "tag": "v0.25.1",
          "kind": "patch",
          "published_at": "2026-01-27T01:07:18Z"
        },
        {
          "tag": "v0.25.0",
          "kind": "minor",
          "published_at": "2026-01-26T23:00:42Z"
        },
        {
          "tag": "v0.24.0",
          "kind": "minor",
          "published_at": "2026-01-26T20:21:30Z"
        },
        {
          "tag": "v0.23.0",
          "kind": "minor",
          "published_at": "2026-01-26T19:59:57Z"
        },
        {
          "tag": "v0.21.2",
          "kind": "patch",
          "published_at": "2026-01-26T18:42:44Z"
        },
        {
          "tag": "v0.21.1",
          "kind": "patch",
          "published_at": "2026-01-26T18:30:54Z"
        },
        {
          "tag": "v0.21.0",
          "kind": "minor",
          "published_at": "2026-01-26T06:41:12Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2026-01-25T04:08:57Z"
        },
        {
          "tag": "v0.19.0",
          "kind": "minor",
          "published_at": "2026-01-24T19:40:42Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2026-01-24T03:16:55Z"
        },
        {
          "tag": "v0.17.0",
          "kind": "minor",
          "published_at": "2026-01-23T03:02:51Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2026-01-22T19:57:39Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-01-22T07:58:31Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-01-22T06:35:34Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-01-21T07:33:24Z"
        },
        {
          "tag": "v0.11.3",
          "kind": "patch",
          "published_at": "2026-01-21T00:48:16Z"
        },
        {
          "tag": "v0.11.2",
          "kind": "patch",
          "published_at": "2026-01-21T00:44:49Z"
        },
        {
          "tag": "v0.11.1",
          "kind": "patch",
          "published_at": "2026-01-21T00:40:58Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-01-21T00:40:28Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-01-20T04:57:01Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-01-20T01:58:47Z"
        },
        {
          "tag": "v0.8.1",
          "kind": "patch",
          "published_at": "2026-01-17T03:47:56Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-01-17T03:41:11Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-01-17T03:21:14Z"
        },
        {
          "tag": "v0.6.7",
          "kind": "patch",
          "published_at": "2026-01-17T02:03:21Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "135db9d44ad5012d780eafc9b04b867000c35071",
          "body": "Recent-homes switcher (self-declaration on use, server-presented home\nidentity) + docs-native read-model memoization that fixes the large-home\nviewer hang. See CHANGELOG.\n\nAlso track CLAUDE.md (re-exports AGENTS.md for Claude Code).",
          "is_bot": false,
          "headline": "chore: bump versions (server 0.70.0, viewer 0.62.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:03:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "869d582f6ef32bceff19512613af875c886d4264",
          "body": "The home selector lists global + every recent project from /api/homes\n(most-recent-first), with a two-line entry (label + display_path), a ✓ on the\nactive home, a hover forget (✕) wired to DELETE /api/homes/:root, and an\nempty-state hint. All display strings come from the server presenter; the\nclient no longer derives labels or collapses paths itself.\n\nSee docs/adr/0128.",
          "is_bot": false,
          "headline": "feat(viewer): recent-homes switcher — render server-presented homes",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:02:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "421ab3ea1fd7f3c1b9ea3fe90914cca83d3ef04a",
          "body": "A project home is remembered the first time an agent works against it (any\ncore op that resolves a project home — CLI in a repo, MCP bridge, or viewer\n?project_root), like `code .` adds a folder to VS Code recents. No directory\nscanning: the switcher reads a use-declared manifest.\n\n- RecentHomesStor\n[…]\n display_path,\n  so the client renders strings verbatim instead of doing path surgery. Home\n  provenance now projects root/documents_dir/label/display_path from the domain\n  model.\n\nSee docs/adr/0128.",
          "is_bot": false,
          "headline": "feat(homes): recent-homes registry — self-declaration on use",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:02:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2248e3f831097c9b3ad1a64d3cc8d0e8b0d14385",
          "body": "…s rescan\n\nDocsNativeFilesystemStorage re-read and re-parsed every markdown file from\ndisk on every read (get/list/counts/iterateEntities/getDocumentById), and\nResourceManager.list() did the same full discoverDocuments() scan. On a\n1,300+ doc home the /operations feed fanned that out per-id, saturat\n[…]\n Memoize ResourceManager.list() the same way, invalidated on the same seams.\n\nMarkdown stays authoritative — the cache is derived state that rebuilds from\ndisk on any invalidation.\n\nSee docs/adr/0127.",
          "is_bot": false,
          "headline": "perf(storage): memoize docs-native read model; kill per-request corpu…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:01:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d58ad769727be6581da25de15b02e319a3873443",
          "body": null,
          "is_bot": false,
          "headline": "docs: normalize engineering record spacing",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T16:17:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e58ef4f1b5f06e8a364ea4b47d737358a4dbe3a2",
          "body": null,
          "is_bot": false,
          "headline": "docs: link backlog-mcp transformation story",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T16:17:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3aa7557af25d80101030ce4a799e04a8fd44a979",
          "body": "…dings + cross-home) + ratify ADR 0126\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "chore: release 0.69.0 (recall done right: stemming/stop-words + embed…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T05:53:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e961bd78d7887fac97e889903aa850cd5b9ea08f",
          "body": "…-force Map scan) + sharpen the scale tripwire\n\nVerified against v3.1.18 source (trees/vector.ts): Orama's vector search is a\nplain Map + brute-force cosine for-loop, no ANN, toJSON dumps every raw vector\n(the ~512MB ceiling / in-memory-rebuild root). This equalizes the sqlite-vec\ncomparison (also b\n[…]\nd to a\ndistinct higher tripwire whose target is LanceDB, not sqlite-vec.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0126 — capture Orama's under-the-hood vector search (brute…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T05:45:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9c7d94a8f3556eacc6c8f244d4945ef9d3bde084",
          "body": "…a-done-right, sqlite-vec as designed fallback\n\nEvidence-based ruling on Goga's \"either Orama works properly or we explore\nalternatives.\" Two adversarially-verified research passes (competitor stacks;\nin-process alternatives) + the just-landed Orama fix. Findings: the \"they use\nDBs\" framing is large\n[…]\n as the pre-scoped fallback with four tripwires. Awaiting\nGoga's ruling.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0126 — retrieval substrate ruling (Proposed): stay on Oram…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:49:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "072f667b21c39cfe137bf295286818761f7f8829",
          "body": "…pose deps) + CHANGELOG\n\nCodifies the invariant behind the tokenizer + embeddings fixes (goga-approved,\n2026-07-18): the core must behave identically for every consumer regardless of\nprocess lifetime, and must compose a dependency's real pipeline rather than\nhand-roll a parallel one. Evidence: the c\n[…]\nd-aid into the real\ntokenizer-compose fix and adds the embeddings entry.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: NORTH-STAR Invariant 10 + ADR 0125 (consumer-agnostic core; com…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:45:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "242c62f66f08e09be05a429c229367d685e129b0",
          "body": "embeddingsReady is a per-process flag, only ever warmed by\nensureEmbeddings(). loadFromDisk()'s cached-embeddings fast path sets\nhasEmbeddingsInIndex from the persisted cache and returns without ever\ncalling ensureEmbeddings() (that call is skipped specifically because\nhasEmbeddingsInIndex is alread\n[…]\nthis embeddings backfill both require a\none-time reindex).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(search): cold write paths lazily init embeddings, not a stale flag",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:37:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c7adcfd1ef52248e96f22ce37d05518471f79105",
          "body": "compoundWordTokenizer was a bare object with a `.tokenize` method, so\nOrama's create() took the \"already-a-Tokenizer\" branch and used it\nverbatim — createTokenizer() (stemmer + stopWords + normalizeToken) was\nnever invoked. No stop-word removal and no English stemming have ever\nbeen active in this i\n[…]\nich incidentally\nshifted an internal chunk's output path).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(search): compose Orama's default tokenizer instead of replacing it",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:36:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d452b2a32827da6cd7563daea964a7d653152d61",
          "body": "…tative, source-verified at v3.1.18)\n\nCaptures why our custom compoundWordTokenizer silently dropped stop-words AND\nstemming: create.ts branch-3 uses any object with a .tokenize verbatim and\nnever calls createTokenizer(), so no stemmer/stopWords were ever active.\nSpecific deep-link citations (docs.o\n[…]\ndocs↔package inconsistencies. Two independent research passes converged.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(ref): REF-0016 — Orama v3 text-analysis pipeline & BM25 (authori…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:05:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9a719daf13d0f59911ae544bd26cfbeeaa5b0fc8",
          "body": "…ric-word overlap inflating grade-0 memories (R8)\n\nThe multi-term coordination re-ranker (applyCoordinationBonus) counted raw\nquery-term overlap with no stopword filtering, so a memory sharing only\nfunction words (\"what\", \"before\", \"a\", \"my\") with the query earned the same\ncoordination credit as one\n[…]\n745 → 0.8842, no regressions.\nRegression tests added to scoring.test.ts.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(recall): discount stopwords in the coordination bonus — stop gene…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T20:33:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "12c5f9902fa710310a8cf231fed48f102d579a77",
          "body": "…1 R8)\n\nExtends scripts/search-eval.mjs to score recall-queries-v2.jsonl-style\nfixtures where each query names its own production home (\"global\" or\n\"project\") instead of sharing one --project-root corpus. Per-home recall\nqueries now build one real CLI runtime per distinct home via\ncreateCliRuntime (\n[…]\nll@k 1.0000 across 4 human-judged (gate-eligible) queries.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(evaluation): per-home recall scoring in search-eval.mjs (ADR 012…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T20:23:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1706e1d106bc8665a87b55791e07d1c071727447",
          "body": "…sessor of record)\n\nCaptures the completed R8 judging (goga, assessor of record, human:goga\n2026-07-18): the graded sheet stays the human record; recall-queries-v2 +\nrecall-qrels-v2 are the machine gate the eval harness scores against, so any\nfuture ranker change is measured against Goga's ground tr\n[…]\ndgments are per-home; the data is correct and the\nharness must catch up.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(evaluation): R8 human qrels — Goga's graded recall judgments (as…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T18:14:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "39a85bbb26d53baa624454fdd5bf0d3bb5dba7d5",
          "body": "…ject (TASK-0006)\n\nrecall/search --home all came back \"No memories found\" from within a project\neven though each home queried alone had hits. Two compounding causes: the\nambient project discovered from cwd was excluded from the fan-out (no\n--project-root → selection undefined → global only), and the\n[…]\nand ran full\nvalidation (typecheck, memory/viewer/server suites, build).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(cli): cross-home recall no longer returns empty from inside a pro…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T18:07:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b72098e783e4fcb8682e548b3be4b3c3221bcb07",
          "body": "…oposed)\n\nSalvaged from builder:boundary-decay (charter D2, Goga GO 2026-07-18), which\ncommitted this design before running out of credits mid-build. Lands the\nthree-class taxonomy DECISION only — AUTHORITATIVE (docs/committed config),\nDERIVED (index/caches, delete-safe), EVIDENCE (journal/telemetry\n[…]\nentionally dropped and gets written\nwhen the enforcement actually ships.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0123 — authoritative/derived/evidence boundary (design, Pr…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:53:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7ba62f906aa857783c32b53779a5ec0f81d7bfa3",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): ADR 0122 Slice A under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:45:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "174f1dd3c29c0534374459fa683f6158c35d373b",
          "body": "…sertion)\n\nMode-independent class in the composition block: every active declarative\nsubstrate's definitionVersion is a positive integer with a complete frozen\nchain; a synthetic v2 fixture with complete history loads clean; the same\nfixture without history yields exactly the missing-version-history\ndiagnostic while the substrate still loads and validates writes.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(suite): schema-evolution structural class (ADR 0122 R5, first as…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:44:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ed6fd7f1a4c02a64f9cd97db916b132019f35228",
          "body": "…s (ADR 0122 Slice A)\n\nR1: the meta-schema accepts any positive-integer definitionVersion\n(previously z.literal(1)); the substrate-definition URN is unchanged.\nR2: a declaration at version N > 1 requires frozen history at\nsubstrates/history/<type>@<v>.json for every v in 1..N-1; each missing\nlink is\n[…]\ntions accept\nan optional permitted array, validated but entirely unused.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(substrates): unpin definitionVersion + freeze-on-bump diagnostic…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:44:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "66e74665120fa89b2041fd4cd960039b35f2af33",
          "body": "…ons)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: CHANGELOG unreleased entry + checkpoint memory (legal-next-acti…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:33:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "20c1a48eb1ab26f840dbb5955e051873ef8b28f6",
          "body": "wakeup(operation=X) now carries focus.next — every transition the\nsubstrate's DECLARED workflow allows from the focal doc's current state,\ntransition names in declaration order, ' · '-joined (compiled-process\n2026-07, the 5% slice). Derived entirely from the existing declaration:\nzero new declaratio\n[…]\nd\n  the 3,072-byte ceiling holds with the ledger unchanged (2,987 bytes)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(wakeup): legal-next-actions line on the focal briefing",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:32:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f21688f3d29c51720254055abd1a3c42586c5474",
          "body": "…CLI link setup), by goga",
          "is_bot": false,
          "headline": "memory: MEMO-0009 — Goga's first hand-written project memory (global …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:32:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee3bf1a955f5555f588e03469a958472b4a21f1f",
          "body": "…, non-goals, phases; evidence: stale 0.62.0, takeover incident, organ fragility)",
          "is_bot": false,
          "headline": "docs: PROMPT 0016 verbatim + ADR 0124 resilient-daemon charter (R1-R7…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:27:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "adb2d5f446caa9921aae418ff1dae5dc29df8fca",
          "body": "…reely, truth stays legible, destruction test is the license) + It-IS reframed from 'convenience over files' to 'engine over legible truth' + resilient-daemon ledger row",
          "is_bot": false,
          "headline": "docs: PROMPT 0015 verbatim + NORTH-STAR Invariant 9 (engine absorbs f…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:25:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49bdf86f6ad3b58788ef18005c0f48e57191ba4d",
          "body": "…eal recorded demand, live results attached",
          "is_bot": false,
          "headline": "docs(evaluation): R8 human judging sheet — four recall queries from r…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:20:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc8e8a9d3a35e512781742a9823749211063c63c",
          "body": "… prep)",
          "is_bot": false,
          "headline": "docs: TASK-0006 — cross-home fused recall regression (found during R8…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:19:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46ab8389b0cdeb89885d24ba26ab2a98539e0e7b",
          "body": "…agent-system compiler assessed against all three anchors; PARKED UNTIL PAIN with five unpark tripwires",
          "is_bot": false,
          "headline": "docs: PROMPT 0014 verbatim + compiled-process Part Two — declarative …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:11:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe71443a5ac5735e3ec93f50fdfa42fb779e12ca",
          "body": "…layers; compile gates never the run-loop; grants seam; E-PROC experiment)",
          "is_bot": false,
          "headline": "docs: PROMPT 0013 verbatim + compiled-process cross-validation (five …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:08:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b82b58b1d5849fd3bc243f6e6c3237962cc64774",
          "body": "…with cross-validation addendum + living PRESSURE-LEDGER",
          "is_bot": false,
          "headline": "docs: PROMPT 0012 verbatim (full document) + pressure-map assessment …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:06:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47130215264c70ac46fe8db122cf05cccb4d477d",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.68.0, viewer 0.60.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:00:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "daa63b6974fda6129d7aba52ecb2d831863ddcc4",
          "body": "… + uniform MCP 'as' + whitespace normalization + test hygiene (review 0001 HIGH-1/MEDIUM-1/LOW)\n\nImplemented by codex gpt-5.6-sol @ high in sandboxed worktree; committed by granite (sandbox could not write the linked worktree index). Evidence: .codex/logs/fix-identity-request-scope/report.md",
          "is_bot": false,
          "headline": "fix(identity): per-home rung resolution for request-selected runtimes…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T15:59:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d00585932db900e00f816be98f58bda2576a874d",
          "body": "…ed versions, frozen history, instance stamps, read-never-blocks, migrate-as-verb)",
          "is_bot": false,
          "headline": "docs: PROMPT 0011 verbatim + ADR 0122 substrate schema evolution (nam…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T15:58:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2903870ebe8cf13866bfdb1b003b542b1939d015",
          "body": "…-worktree memory-ID collision, lattice-class)",
          "is_bot": false,
          "headline": "docs: TASK-0004 (uncapped contradictions endpoint) + TASK-0005 (cross…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:39:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c84f0bac3eba9912851c263ef8e70e975ffb17f4",
          "body": "… two omission channels (MEMO-0006)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:desk-hardening procedural lesson — bounded folds have…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:39:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8dec569f04579c3c637ce9f6724bf664bb20a02b",
          "body": "…candidates leave (review 0001)\n\nThree Desk findings from the independent sol trunk review\n(docs/reviews/0001-sol-trunk-review-2026-07-18.md), fixed without touching\nthe seven-item output law, ranking, or the Desk's read-only posture.\n\nHIGH-2 composition bounds:\n- candidate .jsonl files: stat before\n[…]\npnpm -r test: memory 47, viewer 146, server 1341+2 skipped (was 1330+2).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(desk): bound composition, host-independent determinism, reviewed …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:39:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "22db8dc3a50f118e3571ad6a46dd6711e8cfd746",
          "body": "…-integrity finding)",
          "is_bot": false,
          "headline": "docs: TASK-0003 — search-demand packing parity gap (builder:telemetry…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:38:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c215e125d9052bdc2ce04c7d25c497352142f6ca",
          "body": "…d state via ALS; memfs rename infidelity (MEMO-0006)\n\nFinal telemetry-integrity commit. DONE: all three review 0001 telemetry\nMEDIUMs fixed with tests (packed-away recall hits, per-request HTTP\nsessions, 8 MiB sink rotation), CHANGELOG Fixed entry, live-verified\nagainst the real built server (two /\n[…]\nn green (memory 47, viewer 146,\nserver 1340+2 skipped), typecheck clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:telemetry-integrity procedural lesson — request-scope…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:37:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fd37adc2b1568c922f32250c13d33d8573cafb89",
          "body": "…iting review 0001\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): Unreleased Fixed entry — telemetry integrity fixes c…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:36:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "de23f4176836a1a382057f3a98b07e7635ce8994",
          "body": "…efore append\n\nReview 0001 MEDIUM: retrieval-telemetry.jsonl grew forever — no\nrotation, retention, or size cap — so a long-lived server under steady\nsearch traffic could fill the disk, and the resulting ENOSPC would\nbreak authoritative writes far beyond telemetry.\n\nappendTelemetryLine (retrieval-te\n[…]\nure, runtime-level wiring past a real 8 MiB\nsink, and the 8 MiB default.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): bound the sink — rotate once to <name>.1 past 8 MiB b…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:33:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5d693ee924322af2a2158af239aa3705611d766c",
          "body": "Review 0001 MEDIUM: the telemetry session UUID was module-global and\nminted once per process, so every request through the stateless HTTP\ntransport — which constructs a fresh server per request — shared one\nsession for the detached server's whole lifetime, letting independent\nclients be falsely corr\n[…]\nover shared runtimes record\ndistinct sessions with unchanged line shape.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): stateless HTTP/MCP requests each mint their own session",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:29:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5e3aeafb106b272b1c66ebe9940696590613d2cc",
          "body": "…val, not the packed response\n\nReview 0001 MEDIUM: recordRecallDemand() partitioned the fused,\ntoken-packed final response per home, so a home whose hit was dropped\nby cross-home packing recorded ids: [] — a fabricated recall miss\ncorrupting the R6 mining trigger and promotion-lane evidence. Ids now\n[…]\nived behavior.\nRanking untouched (0121 R5); event line schema unchanged.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): per-home recall ids derive from the home's own retrie…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:27:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a15c9486788f9057a46f1c36cc126e03592a38ca",
          "body": "…MEDIUM, 1 LOW); HIGH-1 verified by granite",
          "is_bot": false,
          "headline": "docs(reviews): review 0001 — independent sol trunk review (2 HIGH, 6 …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:18:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7608baf872fe0a6e4a853690d6036449c46024cc",
          "body": "…ompositions (MEMO-0005)\n\nFinal W2 commit. DONE: everything — implementation, 33 tests, docs,\nTASK-0001 done, rebase onto origin/main @ 002a13f, full validation green\n(memory 47, viewer 146, server 1330+2 skipped), first-person memory\nwritten at my own checkpoint via the stamped CLI.",
          "is_bot": false,
          "headline": "memory: engineer:lattice-w2 procedural lesson — two-filesystem test c…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:16:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f05a2fb5792ae084a26e15a54c4cd4ecb10abd42",
          "body": "…dence (CLI-stamped, MEMO-0004 auto-capture)\n\nDONE: implementation + tests + docs; live verification in this worktree\n(canonical title + exact stub observed, reverted clean); rebased onto\norigin/main @ 002a13f (completion memory renumbered MEMO-0003 → MEMO-0004\nto clear main's MEMO-0003).\nREMAINS: full validation on the rebased tip + first-person memory + final\nreport.",
          "is_bot": false,
          "headline": "docs(lattice-w2): CHANGELOG Unreleased entry; TASK-0001 done with evi…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:15:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc038d3fd244905f87d43d9c6a50763303664c51",
          "body": "…, wire-budget absorption gate\n\nDONE: 33 new tests — git-law-freshness (19: real repo + 3 linked worktrees;\ndiverged/fresh/ahead/worktree-only/missing/ambiguous/cached-read/fail-open/\nsha256; grounding law facts; production-composition E2E at the MCP boundary\nwith byte-exact memfs mirrors), core-wak\n[…]\ns:1,decisions:3,operations:1}, 2962 ≤ 3072 bytes).\nIN PROGRESS: docs (CHANGELOG, TASK-0001) + rebase + memory + report.\nTotals: memory 47, viewer 146, server 1323+2 skipped — baseline +33, only added.",
          "is_bot": false,
          "headline": "test(lattice-w2): real-git probe/grounding/E2E suite, fold exact-text…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:15:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3309f5e141f595adb16e661cd273ffbe5836e3d6",
          "body": "…fold, wire doctrine\n\nDONE: W2 implementation — git-law-freshness probe (blob-hash detection, one\npinned canonical read, per-process cache), grounding law facts, fold serves\ncanonical vision title + exact one-line divergence stubs (vision.divergence,\nconstraints_divergence), CLI formatter lines, pro\n[…]\n class; at most ONE canonical read per\ncomposition, cached per process; hash comparison never textual diff;\nnon-worktree homes byte-identical (git-family e2e test now doubles as the\nfresh-case proof).",
          "is_bot": false,
          "headline": "feat(lattice-w2): canonical-fresh law disclosure — probe, grounding, …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:15:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "002a13f1a3e79401dfbe79be6e55d5eb5601a2c1",
          "body": "… (builder:cli-context finding)",
          "is_bot": false,
          "headline": "docs: TASK-0002 — refs validation must derive from substrate registry…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:04:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0a88d1210ad32a867fe9960119c4fe69175fcbf",
          "body": "…ration fix\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:cli-context procedural lesson from the F3 context-hyd…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:02:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "722bea5e3c111ebf7efd7644372f573815b99a9b",
          "body": "… 0010 F3)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): Unreleased Fixed entry for CLI get --context (report…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:00:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b360d9991c2ea780e6cef751d1af9f0218a9066a",
          "body": "…(report 0010 F3)\n\nThe CLI get now takes --context and renders the same relational stubs the\nMCP backlog_get path returns (same core getItems/composeContextStubs call),\nin the CLI's recall-style stub grammar. Both surfaces emit the Tier-1\nexpand event on the context path for entity-id items only; plain gets stay\nbyte-identical. Parity covered in cli-get-context.test.ts.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(cli): get --context — the ADR 0114 neighborhood reaches the CLI …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:00:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4192f1667930c5fe4c8362f6ccac67c53c45fe1b",
          "body": "…eport 0010 F3)\n\nrecordExpand keeps the ADR 0092.9 R-14 strong-usage signal (overlay line +\ncounter bump) but no longer emits Tier-1 telemetry; the new\nrecordContextExpand emits the session/actor-stamped expand event for\nentity-id gets with context:true — granite's ruling: plain gets and\nresource-path gets are reads, not expansions. Ranking untouched.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): Tier-1 expand is the neighborhood act, not reading (r…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:00:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b645c96a97d9fa53e50e0c4ec64cbb61ad49ec51",
          "body": "…absorption assessment (7 absorbed, T1/T2 chartered frozen-lane, 3 refused, positioning seed)",
          "is_bot": false,
          "headline": "docs: PROMPT 0010 verbatim + REF-0015 (Cerebras KB) + knowledge-base …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T06:49:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45ce99b4eea6938fdffff7140e839d0c858653b9",
          "body": "…lane) + TASK-0001 (Lattice W2), report 0010 (findings F1-F4), fix 0116 index/frontmatter drift the session caught",
          "is_bot": false,
          "headline": "docs: dogfood session 01 — first project memories (MEMO-0002 release …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T02:34:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dd98c61c10b530584b23c25b7767c039aede08a",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.67.0, viewer 0.59.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T00:03:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f67338d85ea3fa869b6dd5248fa45a9445099e6f",
          "body": "…try build\n\nWritten via the built CLI (remember --layer procedural), attributed by\nthe ADR 0119.1 worktree stamp — no --as.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:telemetry-t1 procedural lesson from the Tier-1 teleme…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T00:02:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b3e402f6a8f741b70c553f216d6a458de6cdbfe2",
          "body": "…probes\n\nTelemetry's actor resolution made the first ambientAgentIdentity() call\nin a vitest worker a REAL git probe, so the process-level rung cache\ncould carry the host repo's actual backlog.agent into tests that prove\nABSENT-identity behavior. The envActor test now seeds absent rungs\nexplicitly (\n[…]\nval-telemetry.jsonl sibling\n— still fully under the ignored state/ area.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): deterministic identity-ladder seeding around telemetry …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:59:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8c7f342eccf01d7bac3ef1d23ec181019e3b6ea1",
          "body": "…ation README instrument note\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: Tier-1 retrieval telemetry — CHANGELOG Unreleased entry + evalu…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:55:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7dc971ae5d3252e5d922a663586018312b3fb248",
          "body": "…n, state-area\n\n16 new tests: session id stable per process + BACKLOG_SESSION override;\nrecall miss (ids: []) first-class with no overlay line; recall/search/\nexpand share one session; throwing sink or identity probe never\nsurfaces; project + global homes land events in <controlDir>/state/\nretrieval\n[…]\n Two\ncoordinator tests: per-home recall miss and per-home search demand.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): Tier-1 telemetry — session, misses, shared id, fail-ope…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:54:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "628d2dd8e71aab6569622f3733018eb2d9f01c9e",
          "body": "backlog_search (MCP + CLI) records returned ids through the tracker —\nids only, never query text (Tier 2 is gated separately). The cross-home\ncoordinator records per-home search demand and no longer skips\nzero-contribution homes on recall: a consulted home with no returned ids\nis the per-home recall\n[…]\ne\ndemand signal. Observation only — result shapes and ranking untouched.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): search + cross-home telemetry hooks (ADR 0121 R7)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:51:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "baf323a52ed71c8d81e16b048982342ae5245322",
          "body": "…ecall misses (ADR 0121 R7)\n\nNew memory/retrieval-telemetry.ts: one UUID session per process\n(BACKLOG_SESSION overrides), append-only {session, ts, event, ids, home,\nactor?} lines into <controlDir>/state/retrieval-telemetry.jsonl — the\nsame uncommitted state area as the usage overlay, never committe\n[…]\nail-open everywhere; overlay lines and retrieval\nresults byte-identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): Tier-1 retrieval telemetry — session-stamped events + r…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:51:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1658d7cb9b445eb2fb97889d12c4b53428711292",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.66.0, viewer 0.58.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:39:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "724d4037c7f2ebfbf7358243d73a476c5edaa8b5",
          "body": "Frontmatter only, as directed; rulings text untouched. Note: the\ndirected status wording predates R6 (added on main in 93cf2a3, protocol\nnot code) — R6 is likewise unchanged by this implementation.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0119.1 status -> Implemented (builder, 2026-07-17)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:38:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6f23a5e0e556862ec9c36467abb14ce1f4d7b7a5",
          "body": "CHANGELOG gains the Unreleased Added entry (set identity once via\ngit config backlog.agent; the briefing discloses the winning rung).\nREADME Configuration gains the ladder section with the five set-once\ncommands, the R1 worktree-over-env rationale, and the R4 shared-checkout\nanti-pattern. The five C\n[…]\ne.\nSKILL.md mentions neither --as nor BACKLOG_AGENT — nothing to update.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: teach the attribution ladder (CHANGELOG, README, --as help text)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:38:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1c8c068f65da006409d7325536af623041e5ed8a",
          "body": "…act text\n\nReal repo + real linked worktree (git-family pattern), hermetic via\nGIT_CONFIG_GLOBAL/GIT_CONFIG_NOSYSTEM: all six rungs, the R1\nworktree-over-env inversion, the extension-absent gate (a stamp file\nwithout extensions.worktreeConfig never becomes rung 2 — git itself\nrefuses to read it), no\n[…]\nyte-identical\nabsent case, and the intact identity.md presence fallback.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): attribution-ladder precedence matrix + R2 disclosure ex…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1a1ec2567f7202748938c12b0736bd69424bee9a",
          "body": "The briefing's meta line names the winning rung, exactly:\nidentity: <resolved-display-or-raw> (<source>) with source one of --as /\nworktree config / env / checkout config / user config. Display reuses\nthe fail-open read-side attribution index (ADR 0119 R2/R3): declared\nvalues render as the Agent tit\n[…]\nent / identity: present), and the MCP briefing JSON gains\nno key at all.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): wakeup meta discloses the identity source (ADR 0119.1 R2)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ca19107d544ce8886618b0677700e2aea4653d89",
          "body": "… (ADR 0119.1)\n\nThe six-rung ladder as one core module: explicit --as/MCP-as ->\ngit worktree config (extensions.worktreeConfig-gated) -> BACKLOG_AGENT\nenv -> git local config -> git global config -> absent. Returns value +\nwinning rung for R2 disclosure. R1: the deliberate worktree stamp beats\nthe i\n[…]\nd git, empty values -> rung absent, output\nbyte-identical to pre-0119.1.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): attribution ladder — implicit agent identity resolution…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "11cd47465454e23106c0689e3f3b72673254b9f8",
          "body": "…ubstrates), ADR index truth (0119.1/0120/0121 + shipped retags + Historical split), NORTH-STAR roadmap checkboxes, AGENTS.md 4-package truth, evaluation README title; retire docs/framework-adr pointer",
          "is_bot": false,
          "headline": "docs: freshness pass — README front door (Desk, operation=, shipped s…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb51bf4f99446dfe17d3f01c9f55b1608c4c2d39",
          "body": null,
          "is_bot": false,
          "headline": "fix: carry imperfect legacy docs through migration",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:34:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93cf2a301ee212ebb4df969d78ffe525ef3de4c6",
          "body": "…cope (goga's parallel-agent challenge)",
          "is_bot": false,
          "headline": "docs(adr): 0119.1 R6 — writers get worktrees; one writing actor per s…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:19:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63eaf0f85a0418e3d5eb4e6d463298984b68377f",
          "body": "…tribution ladder)",
          "is_bot": false,
          "headline": "docs: PROMPT 0009 verbatim + ADR 0119.1 implicit identity capture (at…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:13:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa4b53b2a0a1784fd85c6d454c424a13780e99ae",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.65.0, viewer 0.57.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:09:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32c7d667caa6b28133c10cd31f80b0dfbf717109",
          "body": null,
          "is_bot": false,
          "headline": "docs(changelog): docs-native ID navigation fix under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:09:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49bbce2e0f7ee1e084c79f120283b6c8380b8b03",
          "body": "…65 assertions, 25 failures\n\nSame-corpus before/after (sha 7c190d02dda3…, 229 documents, main code vs\nthis branch): 459 failures → 25.\n\n- navigation-id: 206 (bm25) + 224 (hybrid) → 0 + 0. Every entity now\n  resolves at rank 1 for BOTH forms of its own ID (space and hyphen).\n- navigation-title + memb\n[…]\nngle hit) in both modes. All\nnon-navigation per-class metrics identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(evaluation): structural suite rerun after ID-navigation fix — 24…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:07:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e695c6b7dc3dce87c6691eed11a4d7a12899d6d4",
          "body": "… zero-universe type-word fail-open\n\nTwo navigation plumbing bugs proved at corpus scale by the structural\ntruth suite (457 failures on main, dominated by navigation-id):\n\n1. The exact-ID fast path only knew built-in prefixes (TASK, EPIC, ...),\n   so docs-native display ids (\"ADR 0116\", \"REF-0004\", \n[…]\nRanking is untouched (ADR 0121 R5): no fusion, scoring, or decay change.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(search): docs-native ID navigation — registry-derived ID intent +…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:59:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3f60365f0e954d7e667143006e194a4de92182a6",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): the Desk under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8a2b09c3525535716ac5b44543a027d0ae5965b9",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(desk): /desk redirect carries home selection through to the SPA",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a227fab8b55e75be0e72da9c6651bf458cf120c1",
          "body": "Core fold: per-class why-surfaced rules, budget=7 cap, worst-first band\nordering, honest per-class omission, determinism, worktree chip.\nEndpoint: /api/desk composition + provenance, degrade-without-readers,\n/desk chrome redirect. Grounding: frontmatter-over-git recency, lenient\nattention/author rea\n[…]\nrbatim\nrender, chips, copy-only affordances, fail-closed home selection.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(desk): fold rules, endpoint, grounding readers, viewer page",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "10bfc6dda97721a268703edae2d80a18362c1b6d",
          "body": "…(V1)\n\nThe Desk (attention-viewer proposal, PROMPT 0007): one deterministic,\ntransport-free core fold (core/desk.ts) composes JUDGE/REVIEW/READ/HEALTH\nfrom store state — ≤7 items total, worst-first across classes via declared\nseverity bands, per-class honest omission, why-surfaced sentence and a\ncop\n[…]\no the SPA),\nread-only, home-scoped, matching the existing design system.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(desk): server desk fold + /api/desk endpoint + viewer Desk page …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2ae33054b809fe72f19b823079e0e91e4d7b1901",
          "body": "One memory, one home, fused reads: reads always fuse with provenance chips\n(0112 D made default), writes follow a nine-word rubric line (git ownership\nis the only real decision), 'meant for both' becomes usage-driven promotion\nwith provenance (cherry-pick for memories), identity is attribution and a\n[…]\nor art at verification\nlevels; signal-per-token audit: zero added turns.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: PROMPT 0008 verbatim + memory placement dissolution proposal",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2aa059a7b1787d010dae61e75ee774c9a24a06cc",
          "body": "…n (457 failures, -3)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: changelog for rubric pair + wire ceiling; post-merge suite reru…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:45:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3ddc9fc9548193e4f147951f28991d65a87ffb6a",
          "body": "The client owns the hooks (0117/0118.1 law). SessionStart mounts the\nbriefing via the verified additionalContext contract (matcher covers\nstartup|resume|clear|compact, --max-knowledge 0 load-bearing, fail-open).\nSessionEnd/PreCompact cannot deliver text to the model in Claude Code —\nthe remember rub\n[…]\nwhich is what\nPROMPT 0006's first-person-at-checkpoint law wants anyway.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: Claude Code session-hook recipe for the memory protocol",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:43:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8d8f00e61ac4ac4e83b33862559038d58150d075",
          "body": "… ceiling\n\nADR 0118.1 Slice A + memory-flywheel F1:\n- MEMORY_PROTOCOL rides every briefing once, as its final block:\n  recall rubric (session-start, ~55 tokens) + remember rubric\n  (session-end twin: the three capture triggers + PROMPT 0006's\n  first-person law). Non-droppable under the ceiling.\n- H\n[…]\nflood 3,066 B ·\ncold-open 2,173 B · amnesia 1,557/1,596 B — all ≤ 3,072.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): the rubric pair — memory protocol in wakeup + hard wire…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:43:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e2813d2690fb4239603b4e82222a211e31a97d09",
          "body": "…tions, 460 failures\n\nSame failure classes as the first run at proportional scale (corpus grew\n222→+ docs through today's merges): docs-native ID navigation broken at\ncorpus scale, hybrid taxes exact-ID lookup, intent-parser eats one title.\nDemonstrates the regenerate-per-run drift-proof property live.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(evaluation): structural suite rerun on current main — 2445 asser…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:43:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6031f91e91a14650842e3e5d29019afcac810d24",
          "body": "…ailures\n\nFirst run against the real corpus (222 documents: 143 adr, 5 prompt,\n14 reference entities + 60 resources; corpus 4b00540ce136…, both BM25\nand hybrid modes; byte-identical across two full runs).\n\nWhat holds by construction:\n- wakeup-reconciliation PASSES: 45 eligible decisions, 45 disclose\n[…]\n0096) but\n  shares no title tokens, so ordering is skipped and recorded.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(eval): first structural truth suite run — 2399 assertions, 450 f…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd1e6805471ee38af2b9931f3a65e8717afd3dc8",
          "body": "Lenient reads keep whatever YAML yields; ADR 0097 declares\nsupersedes: 0096-cron-entity-type.md as a scalar. A hand-written scalar\nis still a declaration of record — normalize to a one-element list so\nthe supersedes classes see it.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(eval): accept scalar frontmatter supersedes declarations",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "28313199b9c1aa71173eac24a4097750772dace5",
          "body": "…gate\n\nADR 0121 R9, with R4's truthful re-marking:\n\n- JUDGING.md gains the constructively-true assessor tier\n  (constructive:<generator> — truth by construction, no reviewer exists\n  to disagree) alongside human:<name> and llm:<agent-or-model>, plus the\n  note that the assessor role is adjudication,\n[…]\nllm: tier (24 queries, 235 qrels), preserving the\n  append-only history.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(eval): R9 honesty repairs — assessor tiers replace the substring …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "17d43bb5279d83d6052959f6c694a69327bec59d",
          "body": "One generator walks the real project corpus at run time and emits\njudge-free, constructively-true assertions, regenerated every run:\n\n- navigation-title / membership-title: every document's title as a query;\n  the document is the sole grade-3 target by construction (top-10 nav\n  window, top-20 membe\n[…]\n by\nconstruction: no timestamps, no timings, stable ordering everywhere.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(eval): structural truth suite generator (ADR 0121 R2)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "37b460c284a27a7d06f445c4156b4073ff7e57df",
          "body": "Unquoted, YAML treats \" #7)\" as a comment start and truncates the value;\nquoting preserves \"awaiting zombie-sweep ruling (report 0009 #7)\" exactly\nfor YAML-aware readers. Verified with js-yaml.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): quote the attention frontmatter values for YAML cleanliness",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "912a405c573aa9ddf6bdc6bacbf0b8c5938be927",
          "body": "…re note\n\n- Report 0009 (the judgment-queue probe) enters the tree with an appended\n  \"Reconciliation applied\" section: 12 flipped with evidence, 3 recorded\n  dispositions, 5 BUG ledgers, 4 NORTH-STAR rows, 7 zombies annotated,\n  and the genuinely-open remainder listed.\n- Report 0005 (owner's briefi\n[…]\nows 3/7/8/9 recorded as still open. The historical\n  table is untouched.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(reports): probe 0009 reconciliation ledger + briefing 0005 closu…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "30f1b154987327d68fa25eb4af9744537ba8e756",
          "body": "Context tools (0114, shipped 0.59.0), storage layout and docs home (0112\nfamily, 0.60.0-0.61.0), and ADR modeling (0113 Phases A-C) drifted: the\nwork shipped while the table still said open. Each row now carries its\nrelease evidence. The NAME row and the history/truth (0107 vs 0112) row\nare preserved as genuinely open - only table rows edited.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(north-star): mark the four shipped Open-decisions rows resolved",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7c33b95fc4883b0fc7de3217ee6ea08b04542df2",
          "body": "BUG-0001/0002/0004/0005 -> Fixed (0.64.0) with rerun citations (reports\n0006/0007/0008, CHANGELOG 0.64.0). BUG-0003 stays Open with an in-flight\nnote (retrieval defect batch) - it is still a known issue in 0.64.0.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(reports): reconcile EXP-1 BUG ledgers with the 0.64.0 reruns",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b4509b5db7df0628b989f66802a6e4be5665b825",
          "body": "Seven pre-uplift ADRs (0009, 0018, 0021, 0037, 0083, 0084, 0097.1) whose\nreport-0003 citations are partial (phase-only, quarantine-posture, or\nGARDEN-classified) get a machine-findable attention line instead of a\nmanufactured disposition. Statuses untouched; the ruling stays human.\nNotably 0083: ADR\n[…]\nplemented; cross-encoder proposal remains conditional\" - not superseded.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): annotate zombies awaiting the sweep ruling (report 0009 #7)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a3e18ff7c13ae36d1029df848fc6f191486492dc",
          "body": "….7, 0101)\n\n- 0036 pruning system: Superseded per report 0003 D10 (0092.x memory\n  architecture; decay reborn as 0092.12 ripeness; docs-native pivot 0112).\n- 0013.7 hosting Open Tension: resolved by ADR 0104's explicit text\n  (\"resolved in favor of neither: local is primary\"), per D14.\n- 0101 Phase \n[…]\n  engineering record documents the ID short-circuit), per 0003 appendix.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): record dispositions report 0003 already proved (0036, 0013…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "176d18fd6dcfb7a613f9c9d4cd37bcc41b218cf8",
          "body": "…0.64.0)\n\nThe charter shipped in 0.64.0 and all three acceptance reruns ran\n2026-07-17; the status line now records the measured numbers, including\nthe honest aime shortfall (3.0/5 vs the 4/5 bar - the declared zero-setup\nboundary), per reports 0006/0007/0008 and the CHANGELOG.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(proposals): wakeup-first-impression — implemented and measured (…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "919971093fc4ee008484462f2dd9db370071bcc8",
          "body": "Eleven ADRs whose work shipped (CHANGELOG 0.59.0-0.62.0, 2026-07-16, plus\nthe 0092.x engineering records) but whose ledgers still said Proposed:\n0092.3, 0106, 0106.5, 0112, 0112.1-0112.4, 0113, 0114, 0115. Each new\nstatus carries its release/record citation inline. Records reality only -\nno dispositions manufactured (report 0009, drift item #3).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): reconcile executed-but-Proposed statuses with ship evidence",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8d72374dfc496668203f8302984256887f114bab",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): remove conflict artifact from 0119-A rebase resolution",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:35:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f3cb6353c9afd2ecf971b142d1123d5706477dba",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): record ADR 0119 Slice A under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:34:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a16d92f9b1fa64a944cf365a064a91f4b0d3a128",
          "body": "…ce rendering\n\nThe R8 fixture declares the agent substrate as a project declaration and\nproves: compile + claim of the real nine-agent fleet roster, search via\nthe declared projection, attribution round-trip (write as AGENT-0001 /\naime:beryl / MCP as-field -> journal actor + \"by <title>\" rendering),\n[…]\no the new\nwithAgentIdentity export stays live under the stubbed runners.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): nine-agent fixture (0119 R8) + --as wiring and provenan…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:34:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 92,
      "commits_last_year": 920,
      "latest_release_at": "2026-07-20T19:05:19Z",
      "latest_release_tag": "v0.70.0",
      "releases_from_tags": false,
      "days_since_last_push": 6,
      "active_weeks_last_year": 26,
      "days_since_latest_release": 6,
      "mean_days_between_releases": 0.4
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "backlog-mcp",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "mcp",
            "model-context-protocol",
            "claude",
            "anthropic",
            "ai",
            "llm",
            "agent-memory",
            "memory",
            "context-engineering",
            "substrates",
            "progressive-disclosure",
            "local-first",
            "markdown",
            "backlog",
            "task-management",
            "claude-code"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/backlog-mcp",
          "is_deprecated": false,
          "latest_version": "0.70.0",
          "repository_url": "https://github.com/gkoreli/backlog-mcp",
          "versions_count": 91,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2363,
          "first_published_at": "2025-12-27T07:10:15.214000Z",
          "latest_published_at": "2026-07-20T19:05:26.448000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "popularity": {
      "forks": 2,
      "stars": 5,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 2,
        "total_forks": 2
      },
      "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": true,
      "bootstrap_files": [
        ".mise.toml"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "packages/memory/tsconfig.json",
        "packages/server/tsconfig.json",
        "packages/shared/tsconfig.json",
        "packages/viewer/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 56219,
      "source_files_sampled": 423,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        ".agents/skills/backlog-ui-framework/AGENTS.md",
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 33296
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.3,
            "advisory_ids": [
              "GHSA-f88m-g3jw-g9cj"
            ],
            "fixed_version": "0.35.0",
            "advisory_count": 1,
            "oldest_advisory_days": 5
          },
          {
            "name": "@hono/node-server",
            "direct": true,
            "version": "1.19.15",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-frvp-7c67-39w9"
            ],
            "fixed_version": "2.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 5
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 1,
          "moderate": 1
        },
        "advisory_count": 2,
        "affected_count": 2,
        "assessed_count": 248,
        "malicious_count": 0,
        "assessed_package": "npm:backlog-mcp@0.70.0",
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@backlog-mcp/shared",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@orama/orama",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@orama/stopwords",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@huggingface/transformers",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.8.1"
        },
        {
          "name": "@hono/node-server",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.14.0"
        },
        {
          "name": "@huggingface/transformers",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.8.1"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.25.1"
        },
        {
          "name": "@orama/orama",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@orama/stopwords",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@parcel/watcher",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "2.5.6"
        },
        {
          "name": "ajv",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.17.1"
        },
        {
          "name": "arctic",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.0"
        },
        {
          "name": "commander",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.3"
        },
        {
          "name": "gray-matter",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.3"
        },
        {
          "name": "hono",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.7.0"
        },
        {
          "name": "mcp-remote",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.37"
        },
        {
          "name": "zod",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.5"
        },
        {
          "name": "zod",
          "manifest": "packages/shared/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.5"
        },
        {
          "name": "@backlog-mcp/shared",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@nisli/core",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.54.0"
        },
        {
          "name": "@orama/highlight",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.9"
        },
        {
          "name": "@shikijs/engine-javascript",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "@shikijs/langs",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "@shikijs/themes",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "diff",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.0.0"
        },
        {
          "name": "dompurify",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.3.1"
        },
        {
          "name": "marked",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^17.0.1"
        },
        {
          "name": "marked-shiki",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.1"
        },
        {
          "name": "mermaid",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.12.3"
        },
        {
          "name": "shiki",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.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": 109,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 9
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "gkoreli",
          "commits": 595,
          "avatar_url": "https://avatars.githubusercontent.com/u/243085293?v=4"
        },
        {
          "type": "User",
          "login": "gogakoreli",
          "commits": 266,
          "avatar_url": "https://avatars.githubusercontent.com/u/12997449?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 59,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        }
      ],
      "contributors_sampled": 3,
      "top_contributor_share": 0.647
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "auto-tag.yml",
        "ci.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml"
      ],
      "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": 10,
            "reason": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
            "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/29 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": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "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": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not 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": "121 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "135db9d44ad5012d780eafc9b04b867000c35071",
        "ran_at": "2026-07-27T10:29:36Z",
        "aggregate_score": 3.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T19:05:30Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-19T16:17:51Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/gkoreli/backlog-mcp",
    "host": "github.com",
    "name": "backlog-mcp",
    "owner": "gkoreli"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 60,
      "inputs": {
        "security": 43,
        "vitality": 89,
        "community": 36,
        "governance": 49,
        "engineering": 77
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 89,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "commits_last_year": 920,
              "human_commit_share": 1,
              "days_since_last_push": 6,
              "active_weeks_last_year": 26
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "26/52 weeks with commits",
                "points": 18,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 26
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "920 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 920
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "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": 92,
              "latest_release_tag": "v0.70.0",
              "releases_from_tags": false,
              "days_since_latest_release": 6,
              "mean_days_between_releases": 0.4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "92 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 92
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0.4 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0.4
                    }
                  }
                ],
                "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": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 6,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 6 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "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": 36,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "forks": 2,
              "stars": 5,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "5 stars",
                "points": 9.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "2 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": [
                "backlog-mcp"
              ],
              "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": "at_risk",
        "name": "Sustainability & Governance",
        "value": 49,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 24,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 3,
              "top_contributor_share": 0.647
            },
            "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 65% of commits",
                "points": 7.9,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 65
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "3 contributors",
                "points": 4.1,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "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": "moderate",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 66,
            "inputs": {
              "merged_prs": 109,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 9
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "109/118 decided PRs merged",
                "points": 35.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 109,
                      "decided": 118
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "critical",
            "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": 21,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "gkoreli",
              "public_repos": 5,
              "account_age_days": 259
            },
            "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": "0 followers of gkoreli",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "gkoreli"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "5 public repos, account ~0 yr old",
                "points": 7.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 5
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "backlog-mcp"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 6
            },
            "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 6 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "91 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 91
                    }
                  }
                ],
                "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": "good",
        "name": "Engineering Quality",
        "value": 77,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "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": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "ai",
                "anthropic",
                "claude",
                "llm",
                "mcp",
                "model-context-protocol",
                "task-management"
              ],
              "has_wiki": false,
              "homepage": "https://gkoreli.com/one-hundred-pull-requests",
              "has_readme": true,
              "has_docs_dir": true,
              "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": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://gkoreli.com/one-hundred-pull-requests",
                "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": "7 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 43,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 37,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3.7
            },
            "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": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "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/29 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": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "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 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "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": "121 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "moderate",
            "name": "Dependency advisories",
            "note": "Matched the npm:backlog-mcp@0.70.0 runtime dependency closure — what installing the published package pulls in — 248 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:backlog-mcp@0.70.0",
                  "assessed": 248
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 69,
            "inputs": {
              "source": "osv",
              "advisories": 2,
              "affected_packages": 2,
              "assessed_packages": 248,
              "unassessed_packages": 0,
              "affected_by_severity": "high 1, moderate 1",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: @hono/node-server 1.19.15 (moderate 5.9)",
                "points": 18.5,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "@hono/node-server 1.19.15 (moderate 5.9)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "1 affected: sharp 0.34.5 (high 7.3)",
                "points": 10.4,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "sharp 0.34.5 (high 7.3)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "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": 248,
              "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
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 72,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                ".agents/skills/backlog-ui-framework/AGENTS.md",
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 33296
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "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": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                ".mise.toml"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "packages/memory/tsconfig.json",
                "packages/server/tsconfig.json",
                "packages/shared/tsconfig.json",
                "packages/viewer/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.65,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": ".mise.toml",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".mise.toml"
                    }
                  }
                ],
                "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": "packages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "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": "65 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 65,
                      "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 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 56219,
              "source_files_sampled": 423,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/423 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 423,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "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-27T10:29:45.479776Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/gkoreli/backlog-mcp.svg",
  "full_name": "gkoreli/backlog-mcp",
  "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.