Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-28 09:50 UTC

Lians-ai / Lians

Agent memory for regulated environments. Bitemporal model, tamper-evident audit chain, GDPR crypto-shred.

PythonApache-2.0★ 1 Stern⑂ 2 Forksseit Juni 2026Auf GitHub ansehen ↗

Lians-ai/Lians erreicht einen Gesundheitsindex von 49 von 100 und liegt damit im Bereich Gefährdet. Am stärksten schneidet es bei Engineering Quality (81/100) ab, am schwächsten bei Sustainability & Governance (24/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

49
gesamt / 100
Gefährdet

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.

49
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

Lians-aiPersönliches Konto
0 Follower1 öffentliches Reposeit Juni 2026

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.

Metriken nach Kategorie

Vitalität

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

71Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
4.2/36Commit-Rhythmus — 6/52 Wochen mit Commits
18/18Commit-Volumen — 208 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Verwendete Eingangsdaten
commits_last_year208
human_commit_share1
days_since_last_push0
active_weeks_last_year6
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 9 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 10 Tagen
27/27Release-Rhythmus — ein Release etwa alle 2,6 Tage
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count9
latest_release_taglians-v0.4.2
releases_from_tagsnein
days_since_latest_release10
mean_days_between_releases2,6

Community & Verbreitung

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

40Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
0/60Stars — 1 Stars
0/25Forks — 2 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks2
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (Apache-2.0)
18/18CONTRIBUTING-Leitfaden
13.5/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingja
has_issue_templatenein
has_code_of_conductja
has_pull_request_templatenein

Nachhaltigkeit & Governance

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

24Kritisch · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
7.2/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 68 % der Commits
2.7/13.5Breite der Beitragenden — 2 Beitragende
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Verwendete Eingangsdaten
bus_factor1
contributors_sampled2
top_contributor_share0,678
Wie die Bewertung erfolgt
0/46.8Issue-Lösungsquote — 0 % der Issues geschlossen
38.2/38.3PR-Annahme — 57/57 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/29 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs57
open_issues2
closed_issues0
issue_closed_ratio0
closed_unmerged_prs0
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 Lians-ai
2.4/25Kontohistorie — 1 öffentliche Repos, Kontoalter ca. 0 Jahre
Verwendete Eingangsdaten
followers0
owner_typeUser
is_verified
owner_loginLians-ai
public_repos1
account_age_days32
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

81Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 8 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 25 out of 25 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

100Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://www.lians.ai/
10/10Repository-Beschreibung
10/10Topics — 18 Topics
10/10Wiki
Verwendete Eingangsdaten
topicsagents, ai, bitemporal, compliance, finance, hipaa, langchain, mcp, memory, python, self-hosted, agent-memory, audit-trail, local-first, model-context-protocol, point-in-time, temporal-memory, mcp-server
has_wikija
homepagehttps://www.lians.ai/
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

28Kritisch · 16 % des Gesamtindex

Sicherheitslage

28Kritisch
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 — 25 out of 25 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/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — keine Daten
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
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 38 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate2,8
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging. Die verbleibenden Gewichte wurden renormalisiert.

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.

73Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — docs/AGENTS.md, integrations/codex/AGENTS.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 92 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,92
agent_instruction_filesdocs/AGENTS.md, integrations/codex/AGENTS.md
agent_instruction_max_bytes5.630
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — agentmem/sdk/go/go.mod, agentmem/sdk/java/pom.xml (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — agentmem/sdk/typescript/tsconfig.json, integrations/grafana-lians-app/tsconfig.json
10/10Reproduzierbare Umgebung — Dockerfile, lockfile
10/10Belegte Agentenpraxis — 56 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
lockfilespackage-lock.json, uv.lock
has_dockerfileja
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configsagentmem/sdk/typescript/tsconfig.json, integrations/grafana-lians-app/tsconfig.json
agent_commit_share0,56
toolchain_manifestsagentmem/sdk/go/go.mod, agentmem/sdk/java/pom.xml
dependency_bot_commit_share0
Wie die Bewertung erfolgt
27/45Typprüfbarer Code — Python mit Typprüfungs-Konfiguration (agentmem/sdk/typescript/tsconfig.json, integrations/grafana-lians-app/tsconfig.json)
54.8/55Handhabbare Dateigrößen — 1/246 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languagePython
largest_source_bytes74.071
source_files_sampled246
oversized_source_files1
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
20/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalja
api_schema_files

Eckdaten

1GitHub-Sterne
2Mitwirkende
208Commits, letzte 12 Monate
0Tage seit letztem Push
9Releases
1Bus-Faktor
2offene Issues
PyPIPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch pypi package 'lians' from its registry
  • Could not fetch pypi package 'lians-agent-memory-mcpb' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Weitere Details

OpenSSF Scorecard 2.8 / 10
2.8Gesamtwert

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-28 09:50 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests25 out of 25 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
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
k. A.Packaginginternal error: Client.Actions.ListWorkflowRunsByFileName: internal error: ListWorkflowRunsByFileName: GET https://api.github.com/repos/Lians-ai/Lians/actions/workflows/publish-backtest-check.yml/runs?status=success: 404 Not Found []
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities38 existing vulnerabilities detected
Direkte Abhängigkeiten 22
RegistryPaketVersionsvorgabeManifest
PyPIfastapi>=0.111.0pyproject.toml
PyPIuvicorn>=0.29.0pyproject.toml
PyPIsqlalchemy>=2.0.30pyproject.toml
PyPIasyncpg>=0.29.0pyproject.toml
PyPIalembic>=1.13.0pyproject.toml
PyPIpydantic>=2.7.0pyproject.toml
PyPIpydantic-settings>=2.2.0pyproject.toml
PyPIredis>=5.0.0pyproject.toml
PyPIcryptography>=42.0.0pyproject.toml
PyPIvoyageai>=0.2.3pyproject.toml
PyPIopenai>=1.30.0pyproject.toml
PyPIanthropic>=0.103.0pyproject.toml
PyPIhttpx>=0.27.0pyproject.toml
PyPIpython-dotenv>=1.0.0pyproject.toml
PyPIpgvector>=0.3.0pyproject.toml
PyPInumpy>=1.26.0pyproject.toml
npm@grafana/data12.3.0integrations/grafana-lians-app/package.json
npm@grafana/runtime12.3.0integrations/grafana-lians-app/package.json
npm@grafana/ui12.3.0integrations/grafana-lians-app/package.json
npmreact^18.3.0integrations/grafana-lians-app/package.json
npmreact-dom^18.3.0integrations/grafana-lians-app/package.json
PyPIlians-sdk==0.4.1integrations/mcpb/pyproject.toml
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

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "agents",
        "ai",
        "bitemporal",
        "compliance",
        "finance",
        "hipaa",
        "langchain",
        "mcp",
        "memory",
        "python",
        "self-hosted",
        "agent-memory",
        "audit-trail",
        "local-first",
        "model-context-protocol",
        "point-in-time",
        "temporal-memory",
        "mcp-server"
      ],
      "is_fork": false,
      "size_kb": 2476,
      "has_wiki": true,
      "homepage": "https://www.lians.ai/",
      "languages": {
        "C": 29603,
        "Go": 20441,
        "Java": 29483,
        "Mako": 548,
        "CMake": 1340,
        "Python": 1767011,
        "Dockerfile": 2168,
        "JavaScript": 1517,
        "TypeScript": 51051
      },
      "pushed_at": "2026-07-27T16:42:25Z",
      "created_at": "2026-06-25T21:15:46Z",
      "owner_type": "User",
      "updated_at": "2026-07-25T04:38:50Z",
      "description": "Agent memory for regulated environments. Bitemporal model, tamper-evident audit chain, GDPR crypto-shred.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "master",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "User",
      "login": "Lians-ai",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/297000566?v=4",
      "created_at": "2026-06-25T21:13:03Z",
      "is_verified": null,
      "public_repos": 1,
      "account_age_days": 32
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "lians-v0.4.2",
          "kind": "other",
          "published_at": "2026-07-18T01:50:53Z"
        },
        {
          "tag": "v0.4.1",
          "kind": "patch",
          "published_at": "2026-07-17T20:17:54Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-07-06T06:10:34Z"
        },
        {
          "tag": "v0.3.4",
          "kind": "patch",
          "published_at": "2026-07-04T03:07:35Z"
        },
        {
          "tag": "v0.3.3",
          "kind": "patch",
          "published_at": "2026-07-04T02:54:33Z"
        },
        {
          "tag": "v0.3.2",
          "kind": "patch",
          "published_at": "2026-07-02T01:03:56Z"
        },
        {
          "tag": "v0.3.1",
          "kind": "patch",
          "published_at": "2026-07-02T00:06:35Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-06-30T15:33:02Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-06-27T05:19:49Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "374080c330e57ebde42fe456b30e09064837b6f9",
          "body": null,
          "is_bot": false,
          "headline": "Add RIAD-1 comparison and CI receipts",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-25T04:38:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5c899ae3ade0e98410eddc4e016a284344f8479",
          "body": null,
          "is_bot": false,
          "headline": "Hash audit payloads in versioned chain",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-25T04:16:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a5d21610b1470c88cb9756c2894b4f16fb35b3b",
          "body": null,
          "is_bot": false,
          "headline": "Add RIAD-1 decision reconstruction benchmark",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-25T04:16:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b152b834189b72ae6f64241bdfe0db8a30aef40",
          "body": null,
          "is_bot": false,
          "headline": "Add partner integration surfaces and platform hardening",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-25T04:16:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30e4c63ccc0bbb2af4f16aa9e963e58dd2c1025f",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Bump Python SDK to 0.4.2 (#59)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-18T01:48:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3d6d6334ac0dde5d696cdd9dfe93bdc9e60fe5e",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Ship semantic embeddings in local extras (#58)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-18T01:45:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f89103d5db5b5710409e89b84f0d79052ca70c4d",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Add public issue routing (#57)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-18T01:37:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1aec79b14ac8e910cad02b8662f340ecf07296f",
          "body": "Add direct README star path",
          "is_bot": false,
          "headline": "Merge pull request #56 from Lians-ai/agent/readme-star-path",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-18T00:59:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5f9c0d92e77a97bc27a3659b1f32c1752c78eef5",
          "body": null,
          "is_bot": false,
          "headline": "Add direct README star path",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-18T00:58:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51b415dfa2a44faed0365dfc6a889ca3692269d7",
          "body": "Stores the transparent blue wordmark in the canonical repository and removes the broken external image dependency.",
          "is_bot": false,
          "headline": "Show the current Lians wordmark in the README",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T22:37:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d040d749bb2102106fdee4fc93717e0cd714dc52",
          "body": "Records the verified production deployment, Heartwood comparison, Glama outreach, Smithery blocker, IndexNow submission, and Look-Ahead-Bench research proposal.",
          "is_bot": false,
          "headline": "Record July 17 live distribution outcomes",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T22:18:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c40755b9507644585637e7eb442e225ad7515488",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Add MCP marketplace launch guide (#53)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T21:36:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "312db26b8a2a894684d53006411ce0f7c3cb5fd0",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record Cline marketplace submission (#52)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T21:33:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6385fcc185579ce6af28509566465187960c3dd",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Add Cline marketplace install assets (#51)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T21:32:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9e7d1f94a13c6516120db5cf46f88f58d65c75a",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record Docker MCP Catalog submission (#50)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T21:26:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04f55789cf4b2ed81abc75e4bb8e86765bc74d55",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Publish verified MCP image to GHCR (#49)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T21:15:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3a5940f0a9b111305860a4db44f39dde7debd22",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record confirmed Glama submission (#48)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T21:11:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c073081d633b33fb3a78ca3e0aff4fbc8dfa4f96",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record passing Glama container proof (#47)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T21:10:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9cad51d103954f9d019dff2922216362b1994d3c",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Add reproducible Glama MCP container (#46)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T21:09:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f39efe5dd068f3d88149a3f075b55d071b89fcee",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record Claude plugin submission readiness (#45)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T21:04:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61b7b501d0c925547e210aaa08af0787dd301329",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Prepare Claude community plugin submission (#44)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T21:04:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f70dc0ecc487cb84bdb5df19aeab56c9ca1cc24",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record verified Google indexing (#43)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:58:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1800d03be07102f8835269f124c3b700b5e1ffc2",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record Glama and directory inbox outcomes (#42)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:56:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d29c535fb5a161b5fca3d1d26ce92c4fb06f409",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record regulated-eval methodology review (#41)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:54:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a239cb54bd22d84cd07f12ab99c00c6d6f3e926c",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record TensorBlock directory outreach (#39)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:52:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5fac6e378ef015e18f9d670a7633e215d87110e0",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record MCP Registry 0.4.1 publication (#38)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:50:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b78e43e389057c9ded1a044ed3010c28408dbd58",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Meet MCP registry description limit (#37)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:45:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "29c60cb346a29316d9421e61174af3699c97f8ab",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Refresh MCP registry manifest for 0.4.1 (#36)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:44:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a86e61ff325abbf36aa980416340cb8f9f376b39",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Verify Maven Central 0.4.1 availability (#35)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:35:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de191ab253d34dbf6f150eebe16ceae4a0588a48",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record MCP Market and Awesome Agents outreach (#33)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:32:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78cb48df0d433d09eb07fff7d4cb880420f1dd78",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Prepare npm publishing for OIDC (#34)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:29:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b65aeda900abd520a7457fd08db5585c5519148c",
          "body": "* Record verified v0.4.1 distribution outcomes\n\n* Record additional free directory submissions\n\n---------\n\nCo-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Record verified v0.4.1 distribution outcomes (#32)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:22:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08552a2ce9b53fe4a0ab6b68f16df35eca536ae4",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Refresh SDK package pages for 0.4.1 (#31)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:17:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9a27cfa6c49f4a09090a6a2d3d79348947ee8b8",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "docs: fix OpenAI Agents SDK integration example (#30)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:09:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "39bf255994ff45dc9a6f87a9946714891e4b15f7",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "docs: record Agent Framework sample proposal (#29)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T20:06:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f06cd4eded2a8dfbbc31efdfb8ed4738d127cf0d",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "docs: record additional free directory submissions (#28)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T19:57:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8af3e340452f6efde149d299c3d3d6690f7fd8a6",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "docs: record MCPServers.org submission (#27)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T19:53:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "380ec2295da4498cead1de1135c81d8f2e05d53d",
          "body": "Co-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "docs: track verified distribution outcomes (#25)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T19:46:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d721aa143f9930e833cbb1d9a29111ae8feb93e6",
          "body": "* chore: improve package discovery metadata\n\n* feat: add validated local MCP bundle\n\n* fix: declare Smithery-compatible MCPB runtime\n\n---------\n\nCo-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Improve package discovery and add local MCP bundle (#24)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T19:35:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b0b961f8dfefa922191415dccdbcc26b35c28c4",
          "body": "* Make MCP local-first and improve discovery\n\n* docs: publish LoCoMo retrieval results\n\n* docs: publish vendor right-of-reply ledger\n\n---------\n\nCo-authored-by: etanbuns <ethan.beirne@aol.com>",
          "is_bot": false,
          "headline": "Make MCP local-first and improve package discovery (#23)",
          "author_name": "ebeirne",
          "author_login": "ebeirne",
          "committed_at": "2026-07-17T18:14:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "18feeb96cd2edfdcf72c95374fb0eea05b7d55dd",
          "body": null,
          "is_bot": false,
          "headline": "Add regulated AI system-of-record ledger",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-15T18:10:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b27985e9f17f9a3997a44883d835b0510b22feb1",
          "body": null,
          "is_bot": false,
          "headline": "docs: update README with blue Lians logo",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-15T13:31:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4cdf9cc9573d7da602f0b10b1410216006ca4097",
          "body": "agentmem/results/ (2.9GB of checkpoint DBs and embedding caches) plus\nmemory-benchmarks/ were swept into the image by COPY agentmem/ and breached\nFly's 8GB unpacked-image limit — the release machine died at image unpack,\nwhich presented as an alembic timeout.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deploy): exclude benchmark artifacts from the Docker build context",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-13T23:04:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ad698a1d4982df8645992b40d7b0de16df6871cb",
          "body": "…n budgeting\n\nFrom the mem0 comparison takeaways:\n\n- add_from_messages(distill=True): LLM-extracted, dated, speaker-attributed\n  facts stored as derived memories (metadata.derived/distilled) alongside\n  the verbatim transcript — extraction like mem0's, except every derived\n  fact keeps its auditable\n[…]\nen size of the returned contents\n  so callers can budget the prompt cost of injecting a recall.\n\nExtractor stubbed in tests — no API dependency.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(sdk): opt-in fact distillation with raw provenance + recall toke…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-13T20:21:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8bb3b4faf891c14e23f7957612b2a743a7c69826",
          "body": "…@689 memories\n\n- _ScoringPack (Change 7 extension): everything query-independent about the\n  working set — decrypted contents, embedding matrix + norms, BM25 term\n  frequencies, event timestamps, materiality half-lives, stale-clause marks,\n  temporal-neighbor indices — computed once per agent and c\n[…]\nmaining latency is the fp32 query embed (~120ms CPU); ONNX/quantization\nis the follow-up (arctic's published ONNX graph is loader-incompatible).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(recall): scoring pack + deferred hydration — p50 624ms -> 160ms …",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-13T19:58:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9e43f70303354cdee59362899b8a70e8185e7642",
          "body": "…efault off)\n\nFrom studying how mem0's algorithm update reached 91.6/94.4: their retrieval\nfuses semantic + keyword + entity signals, with verb-normalized keywords.\n\n- _light_stem: conservative English suffix stripping in the shared BM25\n  tokenizer, so 'attended'/'attending'/'attends' meet the quer\n[…]\n raw\n  speaker-prefixed dialogue (78.6-78.8 vs 79.0 without) — it exists for\n  fact-shaped corpora where entities are sparse and discriminative.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(recall): BM25 inflection stemming + DF-gated entity-match arm (d…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-13T17:42:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "760edb7371b46476903c3d627dcf27234b750873",
          "body": "Correctness (all surfaced by the LOCOMO/LongMemEval judged runs):\n- as_of recall now anchors recency decay to the pinned moment instead of\n  wall-clock now — point-in-time queries no longer see uniformly dead\n  recency scores\n- numpy _cosine crashed the degraded-recall path (empty query vector =\n  s\n[…]\n at 89%: consumers misread isolated\n  fragments whose meaning lives in the adjacent turn.\n\nPlus the LongMemEval dump/replay benchmark harnesses.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix+feat(recall): benchmark-sprint findings shipped to the engine",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-13T15:28:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "619c437a7e2de615bab6acad0faca2f6295dcf29",
          "body": "…ctness gate; extraction default-on\n\nThe LOCOMO A/B for the interjection default caught the 2026-07-10 revision-cue\nsupersession falsely closing 9% of raw dialogue turns (527/5,882): bare\nwait/now/actually/quit fire on chat filler, and each closure deletes a turn\nfrom live recall (evidence retrieval\n[…]\nh the default config: hit@10 83.5 /\nall@10 69.4 (prior best 82.4/68.5). Full matrix + forensics in\ndocs/benchmarks/locomo-cue-fix-2026-07-11.md.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(supersession): cue lexicon over-pruned dialogue — tighten + compa…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-11T19:30:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9962b086f247c9977bd521ebb3fa6561a91090df",
          "body": "… -> 6/6)\n\nConversational turns bury durable facts as mid-clause asides; stored whole,\nthe turn dilutes the fact (recall misses it) and revisions can never\nsupersede it (turn-vs-turn cosine stays under the cue threshold).\n\n- interjection.py: deterministic clause splitter + cue lexicon; aside\n  marke\n[…]\nmode\n  behavior is bit-identical across all evals; enabled raw lifecycle holds\n  the 45/47 baseline. LOCOMO A/B pending before any default flip.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: interjection extraction — sub-turn durable facts (agent_sim 3/6…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-11T04:01:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8acb3d59a59bacd6de0e709017cdf76e6ce6dbb3",
          "body": "Per-question arctic embedding + tuned-blend scoring over the 500-question\nhaystacks, written in the harness predict format; resumable via per-question\ncaches in results/longmemeval_cache/.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "bench: LongMemEval-S retrieval dump for the mem0 harness",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-11T03:22:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "35610b1fb86570311a647847c372a95f95ddc4c0",
          "body": "Pairs each judged-run cutoff with its exact o200k_base context cost vs\nfull-conversation stuffing: 90.0% judged accuracy at 14.6% of full-context\ntokens; the 92.9 top-200 result ships with a 44% token reduction. Pure\naccounting over existing judged-run artifacts — free to rerun.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(benchmarks): LOCOMO token-efficiency report + accounting script",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-11T03:14:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b10a6e7775d29031176c2221f41bb7c9b6c0d38b",
          "body": "…nce point-in-time 8/8\n\nDeterministic decision-layer evals run 2026-07-10 alongside the LongMemEval\ndump: supersession classifier 12/12 (SUPERSEDES P/R 1.00) and financial\nas-of recall 8/8 across revision chains. Same-day compare_regulated re-run\nreproduced the Lians 5/5 live column.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(benchmarks): domain-invariants report — supersession 12/12, fina…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-11T02:41:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4858835d79847b20e4e50e5cdc92a0c578642814",
          "body": "…ports\n\nNew judge-free lifecycle suite (lifecycle_eval.py, scale_eval.py,\nagent_sim.py + scenario/persona datasets): state reconstruction from messy\ninterleaved revisions, as_of time-travel checkpoints incl. out-of-order\ningestion, mid-task interjections, closure/latency under noise, and an\nLLM-driv\n[…]\n) with the\nLOCOMO-10 dataset, and the judged-benchmark report (92.9% top-200 on\nMem0's own harness). results/ and checkpoint DBs are gitignored.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "bench: lifecycle/scale/agent-sim eval suite + LOCOMO harnesses and re…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-10T16:57:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aeb9230fae41e889629d9c5019c82aa91171d892",
          "body": "…d retrieval\n\nTwo workstreams that both live in the recall path:\n\n- Retrieval tuning from the LOCOMO replay sprint: asymmetric query\n  embedding (embed_query with per-family instructions: bge merge,\n  arctic/e5 \"query: \" prefix), retuned fusion weights, temporal-context\n  smoothing, temporal query b\n[…]\n fact per recall. At 1,030 live memories: recall p50 2.10s -> 0.78s,\n  ingest 1.45s -> 0.38s per memory. Scores byte-identical across all evals.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf+tune(recall): vectorized scoring, batched hydration, LOCOMO-tune…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-10T16:57:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "034ac2f3167a9b2e20607b2a94c63931628897b0",
          "body": "…sion, local-mode cache tax\n\nFound by the new lifecycle eval suite (state reconstruction / time-travel /\ninterjections). Lifecycle eval: keyed 93.6% -> 100%, raw plain-text 61.7% -> 95.7%.\n\n- Backdated writes close on arrival: SupersessionResult.superseded_by_id;\n  a fact whose event_time predates a\n[…]\nest pins RECALL_CACHE_ENABLED=true so the SDK default cannot leak\n  into server tests through os.environ (order-dependent health-test failures).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(lifecycle): close backdated writes, unkeyed revision-cue superses…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-10T16:53:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "265e5e1bbddf6004d1f3c67790a2172e29853492",
          "body": "Honest run is now −6%, Sharpe −0.8 (materiality-weighted decay shifted\nranking slightly); contaminated run unchanged. The demo repo itself was\nfixed today to run cold from a standalone clone — kit precondition\nre-verified end-to-end in a clean container.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(gtm): launch-kit numbers match the demo on lians-sdk 0.4.0",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-06T21:13:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c3acac521f37f6c582ad6f6a6a88dd3c92c74cd7",
          "body": "- Writing to a crypto-shredded subject returned a raw 500; it is now a\n  410 Gone with code subject_crypto_shredded via a typed\n  SubjectKeyDestroyedError and a global handler (the key is never\n  re-created — GDPR Art. 17). Regression tests for single and batch.\n- The Markdown statement's stated ver\n[…]\n rule.\n- Python SDK context() exposes surface_conflicts / max_conflicts.\n- FastAPI app version string was stale at 0.2.0 since the first deploy.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: findings from the v0.4.0 full-scope live test",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-06T20:33:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aadcf67b9f6f1535a9d862676a422525579dcbf4",
          "body": "lians.dev was never registered, so the dev.lians namespace can't be\nverified. ai.lians verifies against lians.ai (TXT record live). Since\nnothing was ever published to Central, rename the package with the\ngroupId while it's still free: sources and tests moved, imports\nrewritten, pom + READMEs + inst\n[…]\nntact\nemails now @lians.ai. install.md's stale 0.3.0 references bumped to\n0.4.0. Built + 7/7 tests green in Docker (maven:3-eclipse-temurin-17).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(sdk-java): dev.lians → ai.lians for the Maven Central namespace",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-06T19:51:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "504749f33305b437e49e8a12104aad3d4de3dd7c",
          "body": "Pre-compaction flush, signed Markdown memory statement, conflict\nresurfacing in /v1/context, audited degraded retrieval, and\nmateriality-weighted decay. All five SDK versions bumped in lock-step.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v0.4.0 — the memory-lifecycle release",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-06T06:10:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "47b6bd3cd95139606895c0dd4702b73aadf04e82",
          "body": "Long-running agents lose granular facts at the context cliff: the host\nframework summarizes old turns and whatever the summary drops is gone.\nThe SDK now flushes durable facts into governed memory before that\nhappens, tagged _flush: \"pre_compaction\" so the audit chain shows when\nthe agent externaliz\n[…]\nd).\n- OpenAI Agents / CrewAI / AutoGen: new agentmem_flush / flush_memory\n  tool - the model batch-persists durable facts when compaction nears.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(sdk): pre-compaction memory flush across the agent harness",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-06T04:12:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5825366345610290730c9c65245d21b20e528c4e",
          "body": "GET /v1/snapshot/markdown renders an agent's exhaustive point-in-time\nknowledge state as a Markdown document with YAML frontmatter - one\nsection per fact with provenance, validity window, and materiality;\nerased facts appear as explicit crypto-shred markers with existence\npreserved. The document's S\n[…]\nocedure (offline hash check + online chain check).\nraw=true returns bare text/markdown; default returns JSON with the\ndocument plus its anchors.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(export): signed human-readable Markdown memory statement",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-06T04:02:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "173c2ff9337546f31f7cc6253ed619e080b09afc",
          "body": "/v1/context now pushes an agent's open conflicts to the top of every\nassembled block (oldest first - the longest-unresolved is the most\noverdue), rendered as explicit 'X DISAGREES WITH Y' lines so the model\ntreats contested facts as contested. The result carries the surfaced\nconflicts plus the total\n[…]\nlse; bounded by max_conflicts with an explicit\n'+N more' overflow line - never a silent drop. Other agents' conflicts\nnever leak into the block.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(context): open conflicts actively resurface until adjudicated",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-06T03:53:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "371239cd3539a757ce792c14c6dd9d6ce9e436dd",
          "body": "An embedding-provider outage no longer takes recall down: the query\nproceeds lexical-only (BM25 + recency + importance) and the degradation\nis explicit everywhere it matters — retrieval_degraded on RecallResult\nand ContextResult, a retrieval_degraded flag in the recall audit event\n(only present when\n[…]\nr alerting, and\na span attribute. Degraded results are never cached, so recovery is\nimmediate. Keyed lookups never embed, so they never degrade.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(recall): explicit audited degraded-retrieval mode",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-06T03:41:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d5a97385c5c7afc117197ba013f4afd1bcb4e602",
          "body": "A fact's retrieval half-life now scales with metadata.materiality\n(low 7d / standard 30d / high 120d / critical 365d), so client\ninstructions and compliance flags stay retrievable long after passing\npreferences fade. Ranking-only: storage never decays, the tag is\ndeterministic caller/adapter metadat\n[…]\ne (as_of) scoring.\n\nAlso: conftest Docker auto-provisioning no longer INTERNALERRORs the\nrun when a half-started Docker daemon hangs pg_isready.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(ranking): materiality-weighted retrieval decay",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-06T03:37:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "64754f50d62abbd92a1352e416a37e6aaf0291ae",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'deploy-push'",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T03:25:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b656fb9356830b920fadd541526095f1655e41a4",
          "body": "Both steps have bitten a release: the registry publish is manual and was\nskipped for 0.3.3/0.3.4-day-one; the 0.3.2 wheel shipped with local mode\nbroken because verification only ever ran inside the monorepo.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(releasing): add the MCP-registry publish + clean-venv wheel checks",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T03:25:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d800cf808331b7f2eaf8faecfc243d72b70b6f49",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'deploy-push'",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T03:22:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eb4011395251c03251cd226db5aa5b6f29cd93bb",
          "body": "The registry only serves /v0/...; point the badge and docs at the\ncanonical /v0/servers/{name}/versions/latest endpoint, which returns the\nlive listing.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: fix MCP registry links — bare /servers/ path was never valid (404)",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T03:22:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "600b7beb9e343a8d898fcb192ae8c5a203f79482",
          "body": "Lians-ai is a user account we can't currently administer; the demo repo\nis published under ebeirne instead. Links updated accordingly.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: demo repo lives at ebeirne/lookahead-bias-demo",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T03:16:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2b88744c7869b580aed2a9684dc063aaa01b3228",
          "body": "… pages, and demo favicon\n\n- generate banner/logo/avatar/favicon from the canonical white-on-black mark\n- fix the main README banner (docs/images/banner.png previously did not exist)\n- add the logo header to all five SDK READMEs (renders on PyPI/npm/pkg.go.dev)\n- embed the mark as the demo page favicon (data URI, keeps the file self-contained)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "brand: adopt the white-on-black Lians mark across README banners, SDK…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T03:16:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1f04adc7d604e1d88118eb66a080634da98d0733",
          "body": "…h kit\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: wire the standalone lookahead-demo repo URL into README + launc…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T03:13:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9d4beb5778d4f90c2d72d290d809f96ac980f8d7",
          "body": "The 0.3.3 PyPI job failed: the static wheel force-include pointed at\n../../src/lians, and python -m build builds the wheel FROM THE SDIST,\nwhere that path doesn't exist. A custom hatch build hook (hatch_build.py)\nnow resolves the vendored engine from the repo checkout or the sdist's\nown copy, whiche\n[…]\nth\n(sdist -> wheel-from-sdist -> clean venv -> full lookahead demo run).\n\nnpm published 0.3.3 before the PyPI failure; 0.3.4 restores lock-step.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v0.3.4 — fix wheel build from sdist (0.3.3 never reached PyPI)",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T03:07:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9917770df26a97a0d206b0fd5b6f511d0f45d40e",
          "body": "…endor the engine\n\npip install lians-sdk[local] outside the monorepo failed on first use with\nModuleNotFoundError: No module named 'src' — the local mode imports the\nservice engine (src.lians.*), which the wheel never shipped. The flagship\nREADME quickstart was broken for every real user; all prior \n[…]\nrase-with-cert/audit-verify; plain install still imports.\n- Release 0.3.3: all SDK versions back in lock-step (C and Go had drifted\n  at 0.3.0).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(sdk-python): LocalLiansClient broken on every installed wheel — v…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T02:54:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7da765b0fe85a30b5dec75f5b7bcd31e2e225e46",
          "body": "…ply emails\n\n- Bug reports filed BEFORE first vendor contact (mem0ai/mem0#6085; 0.29.2\n  confirmation + workarounds on getzep/graphiti#1258) and linked from the\n  eval appendix — a vendor looking us up finds the engineering first.\n- right-of-reply-emails-2026-07.md: five ready-to-send emails with live\n  links and the July 17 reply deadline (10 business days from July 3).\n- Outreach log updated; the log is part of the published methodology.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(gtm): day-0 outbound — upstream reports filed, final right-of-re…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T02:30:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d0206e48a09ba6c5caeb530af44accb7364e9833",
          "body": "Per-vendor fact-check request (Mem0, Zep, Letta, Hindsight, Supermemory):\nmethodology + their column with justifications, 10-business-day window,\ncorrections credited by name, outreach log published as part of the\nmethodology. Written as the first-contact introduction it also is.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(gtm): vendor right-of-reply process + email templates",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T02:20:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c485a81cdf002b3527635c49a478494c28fc787a",
          "body": "Live results (default vendor configs, OPENAI_API_KEY, per-cell evidence\nin the results appendix):\n- Graphiti OSS: 2.0/5 — identical to the static assessment, now proven.\n  Its contradiction invalidation fired and correctly backdated invalid_at\n  (credited), but default search returns invalidated edg\n[…]\nin the appendix (mem0 default model\n  rejects its default temperature; graphiti Kuzu group_id crash; graphiti\n  Kuzu FTS indexes never created).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "bench: execute mem0 OSS + Graphiti live — evidence-backed scores",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T02:20:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3807bf41009ed4dd5fc0346d39885ed0db1eeda2",
          "body": "- New Mem0OSSAdapter and GraphitiOSSAdapter: with OPENAI_API_KEY set, both\n  columns execute the competitor's own quickstart-default configuration\n  (mem0 Memory() OpenAI LLM+embeddings; Graphiti OpenAI clients on embedded\n  Kuzu) instead of a capability assessment.\n- Tri-state scoring: checks can r\n[…]\nreference_date are marked\n  'Platform-only ... Not supported in OSS' in mem0's own docstrings.\n- Windows console UTF-8 fix for the table glyphs.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "bench: live OSS execution for mem0 + Graphiti; fairness-hardened scoring",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T01:47:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "26dbe7077d8016b4756c3008ed209b5c24b5f24d",
          "body": "- /v1/compliance/worm no longer self-asserts 'compliant posture'; it\n  attests controls factually and names what stays the operator's\n  responsibility (retention, D3P, org controls). Test pins the rule.\n- README: scope disclaimer under the compliance mapping table (software\n  provides technical cont\n[…]\nxplicit open-core boundary — tiers gate\n  the hosted service, never withheld code.\n- alternatives-mem0: pre-empt the 'you paywall too' rebuttal.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs,api: legal-language pass on compliance claims",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T01:32:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b28a3625f7f0d17ab8dce57ff048bb3193b2983e",
          "body": "- conftest: point pydantic-settings at a nonexistent env file and scrub\n  crypto/cache/rate-limit/WORM vars before any Settings() is built — a\n  developer's Docker-stack .env (real MASTER_ENCRYPTION_KEY etc.) changed\n  crypto/RLS/cache behavior and failed audit-chain/conflict tests. Full\n  suite now\n[…]\n: memories').\n  Cancel only after the prune effect is observed, so cancellation always\n  lands in the scheduler's sleep. 5/5 green in isolation.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test: make the suite immune to local .env; fix scheduler-cancel race",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T01:30:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ad49edea0fc990af33a62f504b39f5761f0bc2d7",
          "body": "- lians-gtm-plan.md: the 27-day positioning/marketing/build plan\n- docs/gtm/lookahead-distribution-kit.md: HN/Reddit/LinkedIn posts,\n  prepared rebuttals, cold-outreach email, launch checklist\n- docs/gtm/roundup-outreach.md: 11 live roundup targets + awesome-list\n  PR text + author pitch\n- docs/gtm/\n[…]\nl assessment — distribution,\n  not code, is the binding constraint; 10-day launch sequence\n- docs/website-layout.md: site structure for lians.ai\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(gtm): GTM plan, launch kits, outreach targets, pressure-test memo",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T01:19:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "088e381bb73a9f39657df9f71d283fab1d43653e",
          "body": "- alternatives-zep-regulated / alternatives-mem0-self-hosted: bottom-funnel\n  comparison pages with honest concessions, wired to the regulated eval\n- gdpr-crypto-shredding: why key destruction is the only provable Art. 17\n  answer for memory systems (embeddings, derived facts, backups)\n- point-in-time-vs-validity-windows: valid time vs transaction time, the\n  late-revision case, and where each system in the category lands\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: alternatives pages + regulatory deep-dives (GTM §2.1, §3)",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T01:19:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "588dcd24d7d6c0003b42bf9dacf4d81d0579ff4c",
          "body": "…ild B)\n\nSame strategy, same data, same memory store, run twice: present-time\nrecall() vs recall_at(as_of=decision_time). Contaminated run: +44.0%,\nSharpe 4.6; honest run: -4.2%, Sharpe -0.6. 918 leaked retrievals logged\nwith creation timestamps (receipts.csv/md); backtest_check() flags the\nstore programmatically. Deterministic synthetic market (seed=42,\nfictional tickers), no API keys, ~30s on CPU.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(demo): lookahead-bias demo — contaminated vs honest backtest (Bu…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T01:19:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fd79d29e8bab0ca9af22c31ef00b9c399eda5730",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(gitignore): exclude Java SDK build output (target/)",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-04T01:19:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "44da3bc9af5d917d9f67319e45fa69b0c07968df",
          "body": "Two workers each loading the ~1.3GB bge model OOM-looped the 2GB VM; one\nworker + 2 cores gives 0.4s warm writes/recalls. Single machine in sjc,\ncolocated with the DB.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "infra(fly): 1 uvicorn worker + 2 shared vCPUs for the embedding model",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-03T05:00:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a57f1c009a163af38e78d58ea9061180222f487a",
          "body": "…shot; colocate app with DB\n\n- erase/prune now shred embedding + metadata too (inversion attacks can\n  approximate content from vectors; metadata carries identifiers) and purge\n  the live_facts projection so recall cannot resurrect null-content husks\n- /v1/snapshot no longer hides erased rows: they \n[…]\npaid\n  a cross-country RTT; writes were ~2s), vm 2GB, embeddings switch to the\n  baked-in sentence-transformers model instead of hash projection\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(gdpr,snapshot): full crypto-shred + erased tombstones in /v1/snap…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-03T04:30:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "891b834b060ba398f5dea86523bc1ab6f34cff0a",
          "body": "…lter\n\nResolve verb is 'approve' but the admission engine's own vocabulary says\n'admit'; history rows are stored as 'approved' but callers filter 'admitted'.\nAccept the synonyms instead of 422/empty-listing on them.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(admissions): accept 'admit' action alias and 'admitted' status fi…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-03T04:30:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e1403af63a492c39de10e08e2b6a6ddba9b5df9f",
          "body": "…just SUPERSEDES\n\nPreviously every later keyed write audited as SUPERSEDES 1.0 — REFINES and\nCONFIRMS were unreachable end-to-end (unkeyed writes rarely find candidates\nwithout real embeddings). Now, deterministically:\n- identical value re-stated later  -> CONFIRMS 1.0 (closes old window, honest lab\n[…]\nds)\n- changed value                    -> SUPERSEDES 1.0 (unchanged)\n- same-time divergence             -> CONTRADICTS_SAME_TIME 0.9 (unchanged)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(supersession): keyed fast path classifies CONFIRMS/REFINES, not …",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-03T04:30:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd096d024799c7c7406b6970193aae255f3d0f57",
          "body": "…tuation glue\n\nThe lexical half of hybrid recall used str.split(): 'revenue.' never matched\n'revenue', and unsegmented scripts (Chinese/Japanese/Thai/Korean...) collapsed\ninto one giant token so lexical scoring could never fire for them. With\nEMBEDDING_PROVIDER=local that made non-Latin recall ordering effectively\nrandom. Shared unicode tokenizer for query+content: \\w+ word runs plus\ncharacter bigrams for unsegmented scripts.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(recall): unicode-aware BM25 tokenizer — CJK/Thai bigrams, no punc…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-03T04:30:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "562dbe9564728e4602e64e6e724d94217b807352",
          "body": "…server.json\n\n- GET /v1/admin/usage/{namespace} — calendar-month write/recall counts from\n  the append-only event_log, powering the console's usage meters. Admin ops\n  are excluded from the counts; covered by tests.\n- LICENSE was a truncated Apache-2.0 text GitHub's licensee could not detect\n  (repo\n[…]\no 0.3.2 and point website/repository at\n  lians.ai and ebeirne/Lians2 — the old entry advertised 0.3.0 and a repo\n  that is no longer canonical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(admin): usage metering endpoint; fix LICENSE detection; refresh …",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-02T17:12:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "77798bbca71c733b172cfab107694bb0b6d9fc7a",
          "body": "Extend the compare_regulated harness from two competitor columns to five.\nEach new adapter follows the established pattern: real SDK calls where a\npublic primitive exists, CapabilityAbsent where none does (a thrown\ninvariant is a failure), and full live execution when that vendor's key\nis present (L\n[…]\nhed\ninvariants, Zep stays the top-scoring competitor, and absent cells must\nliterally throw. Results doc regenerated (Lians executed live, 5/5).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "bench: score Letta, Hindsight, and Supermemory in the regulated eval",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-02T06:05:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f2c4b3cc1b59b4faed819a9823af0420e65fd2fe",
          "body": "Bump all SDK/plugin version strings to 0.3.2 in lock-step (Python, TypeScript,\nJava pom, Claude plugin.json, marketplace.json) so the fixed artifacts publish:\n\n- MCP fact_history / list_conflicts query-string fix (ships in lians-sdk[mcp];\n  the 0.3.1 PyPI wheel has the bug).\n- Java SDK HTTP/1.1 pin \n[…]\nall, and contains the\nMCP fix. gitignore the local docker-stack env (real key) and the scratch\nlive-smoke script so they can never be committed.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v0.3.2 — ship the cross-language + MCP fixes",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-02T01:03:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "67476570474ed1d391306b24072ac47bc3be689e",
          "body": "…nflicts)\n\nThe MCP server's _api GET helper passed `params=body or {}`. httpx treats an\nempty params dict as \"replace the query string\", so any GET whose query was\nbaked into the path — fact_history (?ticker&metric&agent_id) and list_conflicts\n(?status&limit) — had its query wiped and 422'd. Two of \n[…]\n.md TypeScript snippet: it called a non-existent\n`mem.add({ agentId, eventTime })`; the SDK method is\n`mem.addMemory({ agent_id, event_time })`.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcp): GET tools dropped their query string (fact_history, list_co…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-02T00:57:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6928c45dfd6bdde5140a92ae5d7dc9b5103a4f13",
          "body": "…e server\n\nThe Java SDK built its HttpClient without a version, so it defaulted to HTTP/2.\nAgainst the cleartext HTTP/1.1 server (uvicorn) the h2c upgrade attempt is parsed\nas a malformed request and every call failed with\n\"POST /v1/memories -> 400: Invalid HTTP request received\". The Java SDK could\n[…]\nified against the live stack: addMemory / recall / recallAt / snapshot all\npass (built + run in maven:3-eclipse-temurin-17 reaching the server).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(sdk-java): pin HTTP/1.1 — default HTTP/2 client is rejected by th…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-02T00:47:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8c75225963364fb11a83212837f1147b03b4eaa1",
          "body": "…story)\n\nRegression from the REFINES work: broadening Stage-1 candidate generation to\nmatch unkeyed free text by embedding similarity meant classify_relation then saw\nthose pairs and returned SUPERSEDES on \"newer + different value\". Every\nsuccessive unkeyed message thus superseded the previous one —\n[…]\ned.\n\nRegression tests: unkeyed distinct text → ADDS (3 cases), unkeyed narrowing →\nREFINES. 125 previously-failing/related tests green together.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(supersession): unkeyed free text must not auto-supersede (chat hi…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-02T00:23:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "256ed5d6897ab05c9ac11deec9977929a90d8b5d",
          "body": "Bump lians-sdk (Python + TypeScript) to 0.3.1 so the fixed wheel actually\nships — the 0.3.0 PyPI wheel is unimportable on a plain install. CHANGELOG\ncovers the cross-tenant subject-key isolation fix (migration 0019), the\nRATE_LIMIT_PER_MINUTE wiring fix, the SDK import fix, the Dockerfile CMD fix,\nand the REFINES relation + vagueness admission filter.\n\nVerified: the 0.3.1 wheel installs clean-room with only httpx and imports.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v0.3.1 — SDK republish + limit-test bug fixes",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-02T00:05:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2de0e987a1c593b2b0b1a32cc4497c2998b00eef",
          "body": "RateLimitMiddleware was added with no argument, so it always used its hardcoded\n300 req/min default. The prominently-documented RATE_LIMIT_PER_MINUTE setting\n(.env.example) therefore had NO effect in any deployment — every instance was\nsilently pinned at 300, regardless of what operators configured.\n[…]\n instead\n  of the old constant, and add a test that inspects the app middleware stack to\n  pin that the setting actually reaches the middleware.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(api): wire RATE_LIMIT_PER_MINUTE into the middleware (was ignored)",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-01T23:49:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c464b51c13bfe239cc7106b8394e2f263800a52",
          "body": "The accuracy benchmark's labeled taxonomy predated REFINES, so run_benchmark\nKeyError'd on the new relation once classify_relation could emit it. Add 4\nREFINES pairs (narrowings, including a same-time narrowing that must NOT flag a\nconflict), register REFINES in the confusion-matrix classes, and relabel the\n\"Fed rate held at 5.00%\" pair from SUPERSEDES to REFINES — same value, enriched\nwith the decision detail, which is exactly a narrowing.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(supersession): add REFINES as a first-class benchmark class",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-01T21:41:53Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "edec8d2229e07c0cfe237d06525244ea9b909c73",
          "body": "…solation\n\nCross-tenant crypto breach found while limit-testing the live stack. subject_keys\nhad subject_id as its SOLE primary key, but subject_id is only unique within a\ntenant. Two namespaces using the same subject_id (e.g. a shared customer id)\ntherefore shared ONE AES data-encryption key:\n\n  * \n[…]\neadable and writable.\n\nFull 40/40 live API surface green after the fix; migration verified on the running\nPostgres (PK = namespace, subject_id).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crypto): subject_keys keyed by (namespace, subject_id) — tenant i…",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-01T21:41:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d68f85a19e8f970e851bb7ac833799371898d785",
          "body": "Dockerfile CMD launched uvicorn src.lian.main:app — a pre-rename path that no\nlonger exists (the installed package imports as lians). Render deployments\nmasked the bug by overriding startCommand; the documented local path\n(docker compose up) hit it every time. Launch the installed package instead.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(docker): compose api service crash-looped on a stale module path",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-01T21:27:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b9c4b13e716b75ffeb6902092e79f38c0e0a09a7",
          "body": "The package __init__ eagerly imported LocalLiansClient, which requires the\noptional [local] extra (sqlalchemy/aiosqlite) — but the core dependency list\nis only httpx, so every plain install crashed with ModuleNotFoundError on\nfirst import. Import it lazily via module __getattr__ instead; the symbol\n\n[…]\nwhen actually used. Found while wiring the Governor bridge venv.\n\nNeeds a v0.3.1 release — the 0.3.0 wheel on PyPI is broken for plain installs.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(sdk): plain `pip install lians-sdk` could not even import lians",
          "author_name": "etanbuns",
          "author_login": "etanbuns",
          "committed_at": "2026-07-01T21:27:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 9,
      "commits_last_year": 208,
      "latest_release_at": "2026-07-18T01:50:53Z",
      "latest_release_tag": "lians-v0.4.2",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 6,
      "days_since_latest_release": 10,
      "mean_days_between_releases": 2.6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 85,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 2,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-07-01",
            "count": 2
          }
        ],
        "complete": true,
        "collected": 2,
        "total_forks": 2
      },
      "star_history": null,
      "open_issues_and_prs": 3
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "agentmem/sdk/typescript/tsconfig.json",
        "integrations/grafana-lians-app/tsconfig.json"
      ],
      "toolchain_manifests": [
        "agentmem/sdk/go/go.mod",
        "agentmem/sdk/java/pom.xml"
      ],
      "largest_source_bytes": 74071,
      "source_files_sampled": 246,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        "docs/AGENTS.md",
        "integrations/codex/AGENTS.md"
      ],
      "agent_instruction_max_bytes": 5630
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "fastapi",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.111.0"
        },
        {
          "name": "uvicorn",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.29.0"
        },
        {
          "name": "sqlalchemy",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.30"
        },
        {
          "name": "asyncpg",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.29.0"
        },
        {
          "name": "alembic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.13.0"
        },
        {
          "name": "pydantic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.7.0"
        },
        {
          "name": "pydantic-settings",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.2.0"
        },
        {
          "name": "redis",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=5.0.0"
        },
        {
          "name": "cryptography",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=42.0.0"
        },
        {
          "name": "voyageai",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.2.3"
        },
        {
          "name": "openai",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.30.0"
        },
        {
          "name": "anthropic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.103.0"
        },
        {
          "name": "httpx",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.27.0"
        },
        {
          "name": "python-dotenv",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0.0"
        },
        {
          "name": "pgvector",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.3.0"
        },
        {
          "name": "numpy",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.26.0"
        },
        {
          "name": "@grafana/data",
          "manifest": "integrations/grafana-lians-app/package.json",
          "ecosystem": "npm",
          "version_constraint": "12.3.0"
        },
        {
          "name": "@grafana/runtime",
          "manifest": "integrations/grafana-lians-app/package.json",
          "ecosystem": "npm",
          "version_constraint": "12.3.0"
        },
        {
          "name": "@grafana/ui",
          "manifest": "integrations/grafana-lians-app/package.json",
          "ecosystem": "npm",
          "version_constraint": "12.3.0"
        },
        {
          "name": "react",
          "manifest": "integrations/grafana-lians-app/package.json",
          "ecosystem": "npm",
          "version_constraint": "^18.3.0"
        },
        {
          "name": "react-dom",
          "manifest": "integrations/grafana-lians-app/package.json",
          "ecosystem": "npm",
          "version_constraint": "^18.3.0"
        },
        {
          "name": "lians-sdk",
          "manifest": "integrations/mcpb/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==0.4.1"
        }
      ],
      "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": 1,
        "merged_prs": 57,
        "open_issues": 2,
        "closed_ratio": 0,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "etanbuns",
          "commits": 141,
          "avatar_url": "https://avatars.githubusercontent.com/u/116187660?v=4"
        },
        {
          "type": "User",
          "login": "ebeirne",
          "commits": 67,
          "avatar_url": "https://avatars.githubusercontent.com/u/206487236?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.678
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "fly-deploy.yml",
        "publish-backtest-check.yml",
        "publish-lian-npm.yml",
        "publish-lian.yml",
        "publish-mcp-container.yml",
        "release.yml",
        "riad-1.yml",
        "test.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json",
        "uv.lock"
      ],
      "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": "25 out of 25 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": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "internal error: Client.Actions.ListWorkflowRunsByFileName: internal error: ListWorkflowRunsByFileName: GET https://api.github.com/repos/Lians-ai/Lians/actions/workflows/publish-backtest-check.yml/runs?status=success: 404 Not Found []",
            "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": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "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": "38 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "374080c330e57ebde42fe456b30e09064837b6f9",
        "ran_at": "2026-07-28T09:50:37Z",
        "aggregate_score": 2.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-27T16:51:42Z",
      "oldest_open_prs": [
        {
          "number": 26,
          "created_at": "2026-07-17T19:49:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-18T01:48:37Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 40,
          "created_at": "2026-07-17T20:53:34Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 60,
          "created_at": "2026-07-18T07:09:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/Lians-ai/Lians",
    "host": "github.com",
    "name": "Lians",
    "owner": "Lians-ai"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 49,
      "inputs": {
        "security": 28,
        "vitality": 71,
        "community": 40,
        "governance": 24,
        "engineering": 81
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 71,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 58,
            "inputs": {
              "commits_last_year": 208,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 6
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "6/52 weeks with commits",
                "points": 4.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "208 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 208
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 9,
              "latest_release_tag": "lians-v0.4.2",
              "releases_from_tags": false,
              "days_since_latest_release": 10,
              "mean_days_between_releases": 2.6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "9 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 10 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2.6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2.6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 40,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 2,
              "stars": 1,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "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 (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "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
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "critical",
        "name": "Sustainability & Governance",
        "value": 24,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 19,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.678
            },
            "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 68% of commits",
                "points": 7.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 68
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "at_risk",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 38,
            "inputs": {
              "merged_prs": 57,
              "open_issues": 2,
              "closed_issues": 0,
              "issue_closed_ratio": 0,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "0% of issues closed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 0
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "57/57 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 57,
                      "decided": 57
                    }
                  }
                ],
                "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": 16,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "Lians-ai",
              "public_repos": 1,
              "account_age_days": 32
            },
            "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 Lians-ai",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "Lians-ai"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "1 public repos, account ~0 yr old",
                "points": 2.4,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 1
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 81,
        "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": "8 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "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": "25 out of 25 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": 100,
            "inputs": {
              "topics": [
                "agents",
                "ai",
                "bitemporal",
                "compliance",
                "finance",
                "hipaa",
                "langchain",
                "mcp",
                "memory",
                "python",
                "self-hosted",
                "agent-memory",
                "audit-trail",
                "local-first",
                "model-context-protocol",
                "point-in-time",
                "temporal-memory",
                "mcp-server"
              ],
              "has_wiki": true,
              "homepage": "https://www.lians.ai/",
              "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://www.lians.ai/",
                "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": "18 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 28,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 28,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 2.8
            },
            "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": "25 out of 25 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 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "internal error: Client.Actions.ListWorkflowRunsByFileName: internal error: ListWorkflowRunsByFileName: GET https://api.github.com/repos/Lians-ai/Lians/actions/workflows/publish-backtest-check.yml/runs?status=success: 404 Not Found []",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "38 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          }
        ],
        "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": 73,
        "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": 0.92,
              "agent_instruction_files": [
                "docs/AGENTS.md",
                "integrations/codex/AGENTS.md"
              ],
              "agent_instruction_max_bytes": 5630
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "docs/AGENTS.md, integrations/codex/AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "docs/AGENTS.md, integrations/codex/AGENTS.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": "92 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 92,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json",
                "uv.lock"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "agentmem/sdk/typescript/tsconfig.json",
                "integrations/grafana-lians-app/tsconfig.json"
              ],
              "agent_commit_share": 0.56,
              "toolchain_manifests": [
                "agentmem/sdk/go/go.mod",
                "agentmem/sdk/java/pom.xml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "agentmem/sdk/go/go.mod, agentmem/sdk/java/pom.xml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "agentmem/sdk/go/go.mod, agentmem/sdk/java/pom.xml"
                    }
                  }
                ],
                "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": "agentmem/sdk/typescript/tsconfig.json, integrations/grafana-lians-app/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "agentmem/sdk/typescript/tsconfig.json, integrations/grafana-lians-app/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "56 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 56,
                      "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": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 74071,
              "source_files_sampled": 246,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python with type-check config (agentmem/sdk/typescript/tsconfig.json, integrations/grafana-lians-app/tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "agentmem/sdk/typescript/tsconfig.json, integrations/grafana-lians-app/tsconfig.json",
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/246 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 246,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "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": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "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",
    "Could not fetch pypi package 'lians' from its registry",
    "Could not fetch pypi package 'lians-agent-memory-mcpb' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-28T09:50:51.690766Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/l/Lians-ai/Lians.svg",
  "full_name": "Lians-ai/Lians",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

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