Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-29 18:21 UTC

lemmaoracle / lemma

Give AI proven facts — a cryptographically verified truth layer for agent AI, built on ZK proofs, selective disclosure, and on-chain provenance.

Astro · TypeScript · HTMLEigene Lizenz★ 1 Stern⑂ 1 Forkseit Feb. 2026Auf GitHub ansehen ↗

lemmaoracle/lemma erreicht einen Gesundheitsindex von 55 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Engineering Quality (85/100) ab, am schwächsten bei Community & Adoption (32/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

55
gesamt / 100
Mittel

Software-Gesundheitsindex

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

55
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

lemmaoracleOrganisation
1 Follower8 öffentliche Reposseit Feb. 2026

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
npm@lemmaoracle/mcp0.0.231.29621vor 8 Tagen
npm@lemmaoracle/sdk0.1.12.41340vor 0 Tagen
npm@lemmaoracle/seal0.3.81.64915vor 8 Tagenlemmasealauthzkcircuitsign-in
npm@lemmaoracle/spec0.1.02.70936vor 0 Tagen
npm@lemmaoracle/agent0.0.3591514vor 8 Tagenlemmaagentidentitycredentialauthorityschemawasm

Metriken nach Kategorie

Vitalität

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

48Gefährdet · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
15.2/36Commit-Rhythmus — 22/52 Wochen mit Commits
18/18Commit-Volumen — 1.281 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year1.281
human_commit_share1
days_since_last_push0
active_weeks_last_year22
Wie die Bewertung erfolgt
0/27Liefert Releases aus — keine Releases veröffentlicht
0/36Release-Aktualität — keine Releases
0/27Release-Rhythmus — keine Releases
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

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

32Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
0/60Stars — 1 Stars
0/25Forks — 1 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks1
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
16.9/22.5Lizenz — Lizenzdatei vorhanden, keine anerkannte Lizenz
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
52.7/80Downloads pro Monat — 8.982 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packages@lemmaoracle/mcp, @lemmaoracle/sdk, @lemmaoracle/seal, @lemmaoracle/spec, @lemmaoracle/agent
dependents
ecosystemsnpm
total_downloads
monthly_downloads8.982
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

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

59Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
9.6/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 57 % der Commits
5.4/13.5Breite der Beitragenden — 4 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 5 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor1
contributors_sampled4
top_contributor_share0,572
Wie die Bewertung erfolgt
37.4/46.8Issue-Lösungsquote — 80 % der Issues geschlossen
36.7/38.3PR-Annahme — 680/709 entschiedene PRs gemergt
1.5/15OpenSSF Scorecard: Code-Review — Found 3/30 approved changesets -- score normalized to 1
Verwendete Eingangsdaten
merged_prs680
open_issues1
closed_issues4
issue_closed_ratio0,8
closed_unmerged_prs29
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
2.2/25Reichweite des Inhabers — 1 Follower von lemmaoracle
7.8/25Kontohistorie — 8 öffentliche Repos, Kontoalter ca. 0 Jahre
Verwendete Eingangsdaten
followers1
owner_typeOrganization
is_verified
owner_loginlemmaoracle
public_repos8
account_age_days163

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 5 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 0 Tagen
20/20Versionshistorie — 40 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packages@lemmaoracle/mcp, @lemmaoracle/sdk, @lemmaoracle/seal, @lemmaoracle/spec, @lemmaoracle/agent
ecosystemsnpm
any_deprecatednein
min_days_since_publish0

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

85Exzellent · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 1 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — eslint.config.js
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
18/20OpenSSF Scorecard: CI-Tests — 23 out of 24 merged PRs checked by a CI test -- score normalized to 9
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_confignein

Dokumentation

90Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://lemma.frame00.com/
10/10Repository-Beschreibung
10/10Topics — 10 Topics
0/10Wiki
Verwendete Eingangsdaten
topicsai-agents, did, provenance, rag, selective-disclosure, trusted-web, typescript, verifiable-ai, zero-knowledge-proofs, zk
has_wikinein
homepagehttps://lemma.frame00.com/
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

49Gefährdet · 16 % des Gesamtindex

Sicherheitslage

42Gefährdet
Wie die Bewertung erfolgt
6/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.2/2.5CI-Tests — 23 out of 24 merged PRs checked by a CI test -- score normalized to 9
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0.8/7.5Code-Review — Found 3/30 approved changesets -- score normalized to 1
2.5/2.5Contributors — project has 5 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
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
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
0/7.5Vulnerabilities — 134 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4,2
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
7.5/25Indirekte Abhängigkeiten ohne bekannte Advisories — 3 betroffen: brace-expansion 2.1.2 (high 7.5), underscore 1.13.6 (high 7.5), @hono/node-server 1.19.17 (moderate 5.9)
33.7/40Keine offenen Advisories — 1 Paket(e) mit Advisory seit über 90 Tagen unbehandelt; ältestes vor 148 Tagen veröffentlicht
Verwendete Eingangsdaten
sourceosv
advisories3
affected_packages3
assessed_packages198
unassessed_packages0
affected_by_severityhigh 2, moderate 1
direct_affected_packages0
Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von npm:@lemmaoracle/mcp@0.0.23 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 198 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

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

77Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — .cursorrules, AGENTS.md, CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 97 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,97
agent_instruction_files.cursorrules, AGENTS.md, CLAUDE.md
agent_instruction_max_bytes772
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — packages/agent/Cargo.toml, packages/agent/normalize/Cargo.toml, packages/canonical-sort/normalize/Cargo.toml (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration — eslint.config.js
11/11Statische Typprüfung — packages/agent/tsconfig.json, packages/blog-article/circuits/tsconfig.json, packages/canonical-sort/tsconfig.json, packages/content/circuits/tsconfig.json, packages/content/tsconfig.json, packages/data-commitment/tsconfig.json, packages/demo/tsconfig.json, packages/feeds/tsconfig.json, packages/fetcher/tsconfig.json, packages/mcp/tsconfig.json, packages/parser/tsconfig.json, packages/passthrough/tsconfig.json, packages/relay/tsconfig.json, packages/sdk/tsconfig.json, packages/seal/tsconfig.json, packages/spec/tsconfig.json, packages/trust402/tsconfig.json, packages/web/tsconfig.json, packages/x402/tsconfig.json
10/10Reproduzierbare Umgebung — Dockerfile, lockfile
10/10Belegte Agentenpraxis — 26 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
lockfilesCargo.lock, package-lock.json, pnpm-lock.yaml
has_dockerfileja
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_configja
typecheck_configspackages/agent/tsconfig.json, packages/blog-article/circuits/tsconfig.json, packages/canonical-sort/tsconfig.json, packages/content/circuits/tsconfig.json, packages/content/tsconfig.json, packages/data-commitment/tsconfig.json, packages/demo/tsconfig.json, packages/feeds/tsconfig.json, packages/fetcher/tsconfig.json, packages/mcp/tsconfig.json, packages/parser/tsconfig.json, packages/passthrough/tsconfig.json, packages/relay/tsconfig.json, packages/sdk/tsconfig.json, packages/seal/tsconfig.json, packages/spec/tsconfig.json, packages/trust402/tsconfig.json, packages/web/tsconfig.json, packages/x402/tsconfig.json
agent_commit_share0,26
toolchain_manifestspackages/agent/Cargo.toml, packages/agent/normalize/Cargo.toml, packages/canonical-sort/normalize/Cargo.toml, packages/passthrough/Cargo.toml
dependency_bot_commit_share0
Wie die Bewertung erfolgt
27/45Typprüfbarer Code — Astro mit Typprüfungs-Konfiguration (packages/agent/tsconfig.json, packages/blog-article/circuits/tsconfig.json, packages/canonical-sort/tsconfig.json, packages/content/circuits/tsconfig.json, packages/content/tsconfig.json, packages/data-commitment/tsconfig.json, packages/demo/tsconfig.json, packages/feeds/tsconfig.json, packages/fetcher/tsconfig.json, packages/mcp/tsconfig.json, packages/parser/tsconfig.json, packages/passthrough/tsconfig.json, packages/relay/tsconfig.json, packages/sdk/tsconfig.json, packages/seal/tsconfig.json, packages/spec/tsconfig.json, packages/trust402/tsconfig.json, packages/web/tsconfig.json, packages/x402/tsconfig.json)
54.3/55Handhabbare Dateigrößen — 3/247 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageAstro
largest_source_bytes120.192
source_files_sampled247
oversized_source_files3
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
4Mitwirkende
1.281Commits, letzte 12 Monate
0Tage seit letztem Push
0Releases
1Bus-Faktor
1offene Issues
npmPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch crates package 'lemma-agent' from its registry
  • Could not fetch npm package '@lemmaoracle/feeds' from its registry
  • Could not fetch npm package '@lemmaoracle/roles' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Weitere Details

OpenSSF Scorecard 4.2 / 10
4.2Gesamtwert

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-29 18:21 UTC

8Binary-Artifactsbinaries present in source code
0Branch-Protectionbranch protection not enabled on development/release branches
9CI-Tests23 out of 24 merged PRs checked by a CI test -- score normalized to 9
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
1Code-ReviewFound 3/30 approved changesets -- score normalized to 1
10Contributorsproject has 5 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
10Maintained30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
k. A.Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
0Vulnerabilities134 existing vulnerabilities detected
Direkte Abhängigkeiten 59
RegistryPaketVersionsvorgabeManifest
crates.iowasm-bindgen0.2packages/agent/Cargo.toml
crates.iojs-sys0.3packages/agent/Cargo.toml
crates.ioserde1packages/agent/Cargo.toml
crates.ioserde_json1packages/agent/Cargo.toml
npm@lemmaoracle/sdkworkspace:*packages/agent/package.json
npm@lemmaoracle/specworkspace:*packages/agent/package.json
npmposeidon-lite0.3.0packages/agent/package.json
npmramda0.30.1packages/agent/package.json
npm@lemmaoracle/sdkworkspace:*packages/attestation/package.json
npm@lemmaoracle/specworkspace:*packages/attestation/package.json
npmsnarkjs^0.7.6packages/attestation/package.json
npm@lemmaoracle/sdkworkspace:*packages/blog-article/package.json
npm@lemmaoracle/specworkspace:*packages/blog-article/package.json
npmposeidon-lite^0.3.0packages/content/package.json
npm@lemmaoracle/sdkworkspace:*packages/content/package.json
npm@lemmaoracle/specworkspace:*packages/content/package.json
npm@lemmaoracle/canonical-sortworkspace:*packages/data-commitment/package.json
npm@lemmaoracle/sdkworkspace:*packages/data-commitment/package.json
npm@noble/hashes^1.7.0packages/data-commitment/package.json
npmposeidon-lite^0.2.0packages/data-commitment/package.json
npm@lemmaoracle/fetcherworkspace:*packages/feeds/package.json
npm@lemmaoracle/sdkworkspace:*packages/feeds/package.json
npm@trust402/sdkworkspace:*packages/feeds/package.json
npmposeidon-lite^0.2.0packages/feeds/package.json
npm@lemmaoracle/sdkworkspace:*packages/fetcher/package.json
npm@lemmaoracle/sdk^0.0.31packages/mcp/package.json
npm@lemmaoracle/spec^0.0.30packages/mcp/package.json
npm@modelcontextprotocol/sdk^1.29.0packages/mcp/package.json
npmagents^0.11.4packages/mcp/package.json
npmramda^0.30.1packages/mcp/package.json
npmzod^3.24.0packages/mcp/package.json
npm@huggingface/transformers^3.8.0packages/parser/package.json
npmonnxruntime-node^1.21.0packages/parser/package.json
npmramda^0.30.1packages/parser/package.json
crates.iowasm-bindgen0.2packages/passthrough/Cargo.toml
crates.iojs-sys0.3packages/passthrough/Cargo.toml
npm@lemmaoracle/sdkworkspace:*packages/passthrough/package.json
npm@lemmaoracle/specworkspace:*packages/passthrough/package.json
npmramda0.30.1packages/passthrough/package.json
npm@lemmaoracle/sdkworkspace:*packages/relay/package.json
npmramda^0.30.1packages/relay/package.json
npm@lemmaoracle/sdkworkspace:*packages/roles/package.json
npm@lemmaoracle/specworkspace:*packages/roles/package.json
npmsnarkjs^0.7.6packages/roles/package.json
npm@docknetwork/crypto-wasm^0.35.0packages/sdk/package.json
npm@lemmaoracle/specworkspace:*packages/sdk/package.json
npm@noble/ciphers^1.2.0packages/sdk/package.json
npm@noble/curves^1.8.0packages/sdk/package.json
npm@noble/hashes^1.7.0packages/sdk/package.json
npmbuffer^6.0.3packages/sdk/package.json
npmposeidon-lite^0.2.0packages/sdk/package.json
npmramda^0.30.1packages/sdk/package.json
npmsnarkjs^0.7.5packages/sdk/package.json
npm@lemmaoracle/sdkworkspace:*packages/seal/package.json
npm@lemmaoracle/specworkspace:*packages/seal/package.json
npm@lemmaoracle/sdkworkspace:*packages/trust402/package.json
npm@lemmaoracle/specworkspace:*packages/trust402/package.json
npm@noble/hashes^1.7.0packages/trust402/package.json
npmposeidon-lite^0.2.0packages/trust402/package.json
Alle Abhängigkeiten nicht erhoben

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

Abhängigkeits-Advisories 3

Die Installation von npm:@lemmaoracle/mcp@0.0.23 zieht 198 Pakete nach sich, direkt und transitiv: 3 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
brace-expansion2.1.2indirekthoch15.0.8
underscore1.13.6indirekthoch11.13.8
@hono/node-server1.19.17indirektmittel12.0.5

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

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "ai-agents",
        "did",
        "provenance",
        "rag",
        "selective-disclosure",
        "trusted-web",
        "typescript",
        "verifiable-ai",
        "zero-knowledge-proofs",
        "zk"
      ],
      "is_fork": false,
      "size_kb": 77576,
      "has_wiki": false,
      "homepage": "https://lemma.frame00.com/",
      "languages": {
        "CSS": 47928,
        "HTML": 436942,
        "Rust": 42625,
        "XSLT": 6822,
        "Astro": 2046692,
        "Shell": 34479,
        "Circom": 41759,
        "Solidity": 49306,
        "Dockerfile": 3619,
        "JavaScript": 124399,
        "TypeScript": 1396837
      },
      "pushed_at": "2026-07-29T17:02:31Z",
      "created_at": "2026-02-22T15:02:25Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-29T17:02:49Z",
      "description": "Give AI proven facts — a cryptographically verified truth layer for agent AI, built on ZK proofs, selective disclosure, and on-chain provenance.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "Astro",
      "significant_languages": [
        "Astro",
        "TypeScript",
        "HTML"
      ]
    },
    "owner": {
      "blog": "https://lemma.frame00.com/",
      "name": "lemmaoracle",
      "type": "Organization",
      "login": "lemmaoracle",
      "company": null,
      "location": null,
      "followers": 1,
      "avatar_url": "https://avatars.githubusercontent.com/u/261871631?v=4",
      "created_at": "2026-02-16T07:30:11Z",
      "is_verified": null,
      "public_repos": 8,
      "account_age_days": 163
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [],
      "recent_commits": [
        {
          "oid": "926478b2408863158384f4b3ee46507c79b9afc7",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-29 (#716)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-29T17:02:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f4aab66c09a08623062a9bd78fbdaa3b7b29e00",
          "body": "* feat(web): add proof verification UI to verify page\n\nWire single-record mode to GET /v1/proofs and POST /v1/proofs/verify so visitors can verify a registered proof on the certificate card.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n* feat(web): auto-run proof verify on single-doc page load\n\n[…]\ny button with an on-load verifying skeleton and trigger verifyProof after loadDoc succeeds.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "feat(web): add proof verification UI with auto-verify (#714)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-29T12:35:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f416a3ad35c7a4d7e65ab4537abd333803a5970b",
          "body": "* feat(web): SPECページと真正性ページ(JA)をリニューアル先行でデザイン移行\n\nサイトリニューアルに先行して、モック(lemma_article_mock_v6 /\nlemma_authenticity_mock_v4)の面をこの2ページに入れる。**先に確認したいのは\nこの2ページだけ**なので、記事テンプレート全体には広げていない。\n\nトークンの値は /ja/preview/top/(PreviewTopTemplate の .pv)と同じものを\n使う——リニューアル後に2種類の緑・2種類の紙色が並ばないようにするため。\nフォントは **Layout が実際に読み込むもの\n[…]\nc.com>\nClaude-Session: https://claude.ai/code/session_01JSvoSwF3xseF2aH39a7Fr4\n\n---------\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): SPECページと真正性ページ(JA)をリニューアル先行でデザイン移行 (#713)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-29T11:04:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "38e3f573a8a58e33c36a76c0867988cd76f29fc6",
          "body": null,
          "is_bot": false,
          "headline": "chore(sdk): bump to 0.1.1 (getByDocument → getByDocHash)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-29T11:03:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "29fc249ea976b3279a7e616e15abd0ad3fdade5a",
          "body": "No consumers yet — safe rename before adoption.",
          "is_bot": false,
          "headline": "refactor(sdk): rename getByDocument to getByDocHash",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-29T11:02:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7b5b8cf82548833a6fc756dd3571ba9ac021a50",
          "body": "- spec: ProofRecord type (docHash, circuitId, proof, inputs, status, registeredAt)\n- spec: GET /v1/proofs OpenAPI definition\n- sdk: proofs.getByDocument(docHash) → Promise<ProofRecord>\n- Enables verify flow: getByDocument → POST /v1/proofs/verify",
          "is_bot": false,
          "headline": "feat(sdk,spec): add ProofRecord type and proofs.getByDocument",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-29T10:58:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ab252099d9a595d846b6758fdbf31e618d7ed3f",
          "body": "* feat(web): 新トップページ案の社内プレビュー /ja/preview/top/ を追加\n\n実装指示 v1(2026-07-29)/モック v5.8 に沿って、新トップページ案を社内が\n実機で触れるプレビュー面として追加する。本番トップ `/` `/ja/` は変更しない。\n\n- `/ja/preview/top/`(JA のみ)。`noindex,nofollow` + sitemap から除外\n  (astro.config.mjs の filter に `/preview/` を追加)。サイト内リンクなし。\n- 最上部に PREVIEW 識別バー(本番差し替え時に削除する)。\n[…]\nc.com>\nClaude-Session: https://claude.ai/code/session_01JSvoSwF3xseF2aH39a7Fr4\n\n---------\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): 新トップページ案の社内プレビュー /ja/preview/top/ (#712)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-29T03:43:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2943aa4975dafcc2e2239df0ef6ef897c7fb261c",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-28 (#711)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-28T17:02:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d17d11f700ed8d6620d320edbbe8c462ff413952",
          "body": "* content(briefs): Critical Brief 110・111 を JA+EN で追加\n\n- 110: OpenAI の評価用エージェントが封じ込め(社内 proxy 1 本)を\n  ゼロデイで抜け、無関係な Hugging Face 本番環境を侵害した事案。\n  Pillar 03 / agent-infrastructure。\n- 111: Wanchain の Cardano–BNB ブリッジで、TreasuryCheck の非単射な\n  署名メッセージ符号化により正規署名 1 つが約 6.5 万倍の払い出しに\n  再利用された事案。Pillar 01 / bridg\n[…]\n-Session: https://claude.ai/code/session_01Puk9rsGWXSFQUgcyzT26UY\n\n---------\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "content(briefs): Critical Brief 110・111 を JA+EN で追加 (#710)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-28T03:06:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b7f7147e693685d66ac754b8cd69502a3369741b",
          "body": null,
          "is_bot": false,
          "headline": "fix(lint): daily lint fixes (2026-07-27) (#709)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-27T20:02:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5caeabb04664958dc09c620e372d59c5e240e619",
          "body": "直近90日(=当プロパティに残っている全期間)の JA+EN Views 合算で再集計。\nNo.067 が圏外になり、No.011(SynthID)が2位で新規入り。\n集計期間の根拠は popularBriefs.ts のコメントに明記。",
          "is_bot": false,
          "headline": "content(briefs): よく見られている Brief を GA4 2026-07-27 時点に更新 (#708)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-27T08:08:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f13b2dd928b416e4b9247f4bcf1674817b5f1df",
          "body": "#706 で Featured / Recent に昇格した記事を変更履歴リストから除外していたが、\n変更履歴はリリース履歴として通しで読めるべきなので除外をやめ、全件表示に戻す。\nFeatured / Recent を section 横断の日付降順で選ぶ #706 の挙動は不変。",
          "is_bot": false,
          "headline": "fix(blog): リリース記事・Announcements を変更履歴リストにも残す (#707)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-27T05:58:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a2411a6350a3d176199f8b7e6ed12f16e5e0054",
          "body": "Featured / Recent が section === \"Essays\" の記事だけを拾っていたため、\ndefaultSectionByCategory により section: Changelog が既定になる\ncategory: Announcements の記事は、日付が最新でもインデックス上部に出ず\n下部の変更履歴リストにしか現れていなかった。\n\nFeatured / Recent を entries(記事+変更履歴を日付降順にマージ済み)から\n選ぶよう変更し、上部に出た分は変更履歴リストから除外して二重掲載を防ぐ。\nJA / EN 両インデックスに適用。",
          "is_bot": false,
          "headline": "fix(blog): 最新記事が Announcement だとブログ上部に出ない件 (#706)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-27T05:29:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "069c11d14509e17494d1f89748a287df5069c379",
          "body": "…hots (#705)\n\n* feat(feeds): list forex/composite daily fetcher envelope on Trust402\n\nAdd an idempotent post-pipeline script that fetches suite latest via\nfetcher Workers, archives the envelope by request.date, and publishes a\nTrust402 dataset listing whose commitment is the fetcher Merkle root.\n\nCo\n[…]\nefault\nto in-process fetchAndCommit (Node), keep Workers behind USE_FETCHER_WORKERS.\n\nCo-authored-by: aggre <hiroyuki.aggre@gmail.com>\n\n---------\n\nCo-authored-by: Cursor Agent <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "feat(feeds): Trust402 listing for forex/composite daily fetcher snaps…",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-26T20:02:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b5a1305e120192237889937d6aed88616c8ddded",
          "body": "* feat(fetcher): bind request URL and fetch time into commitment\n\nCommit `{ request: { url, fetchedAt, date }, response: { body } }` under\ndata-commitment-v1, and reshape FetchResult to `{ request, response,\ncommitment }`. Update feeds at the shared FetchResult boundary so forex\nworker consumers and\n[…]\ne.data` or legacy `data` so forex feeds and registry tests work\nacross deploy order.\n\nCo-authored-by: aggre <hiroyuki.aggre@gmail.com>\n\n---------\n\nCo-authored-by: Cursor Agent <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "feat(fetcher): bind upstream URL and fetch time into commitment (#704)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-26T14:13:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "78161f9e1729468bba0fd494bf3305ad2e978047",
          "body": null,
          "is_bot": false,
          "headline": "fix(lint): daily lint fixes (2026-07-25) (#701)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-25T20:02:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "721ed886b72fbb49b66386be96fa584135d4fe70",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-25 (#702)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-25T17:02:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "082c5564b48c6c445cd25f152e47639dcf3cf2f9",
          "body": "- feeds/jp-postal-codes.ts: fix no-base-to-string by adding type guards before String()\n- seal/proof.ts: remove 5 unused eslint-disable directives + 2 any type aliases\n  after SDK build resolved no-unsafe-* errors\n- agent/commit.ts: remove 3 unused eslint-disable directives + unnecessary\n  type assertion after SDK build resolved no-unsafe-* errors",
          "is_bot": false,
          "headline": "fix(lint): daily lint fixes (2026-07-24) (#700)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-24T20:02:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87d0c2a582a28841f3f6cc7d2542c3ab3086ce78",
          "body": "PR #697 レビュー指摘。単票モードは実装完了しているため、冒頭 JSDoc の\n「※次段で実装(API契約 CTO 確認待ち)」「← 本ファイルで実装」を削除。\n(もう1件の display=swap は既に付与済みのため変更なし)\n\n\nClaude-Session: https://claude.ai/code/session_01QK3E1fg2R92E4keQkzd9Dv\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(verify): 古い JSDoc を更新(両モード実装済み・次段待ち記述を削除) (#698)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-24T10:37:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "da3d2879281cd6c2256c0430d6e5e5c42da79a8f",
          "body": ".panel.tech::before が radial-gradient(circle,…)+border-radius:50% で、狭幅では\n要素がほぼ正方形になり「くっきりした丸」に見えていた。パネル全面(inset:0)に\n広げた楕円のソフトウォッシュ radial-gradient(125% 78% at 92% -18%, …, transparent 60%)\nに変更し、どの幅でも右上からの環境光として馴染むようにした。\n(単票 cert2 は別ジオメトリのため影響なし)\n\n\nClaude-Session: https://claude.ai/code/session_01QK3E1fg2R92E4keQkzd9Dv\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(verify): REGISTRY パネルのライム環境光がモバイルで硬い円になる件 (#699)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-24T10:33:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "56ed6e60a1d1b19ed362c09c78b807e80f92d3af",
          "body": "* feat(verify): 全体モードを検証センター(REGISTRY)へ刷新\n\nLemma 検証ページ実装指示 v1 の全体モード(?doc なし)。VerifyAnchorTemplate を\nモック v9 準拠のスレート REGISTRY パネルへ刷新:\n- ヘッダーはロゴのみ(LemmaOracle)・フッターは © / 利用規約 / プライバシーのみ\n  (検証面の第三者性を守るため宣伝導線を置かない)\n- GET /v1/counters を表示のたびに取得(45秒ポーリング)。失敗時は推定で埋めず\n  — / OFFLINE / 生レスポンス直リンク。数字はビルド時に焼き込ま\n[…]\nession: https://claude.ai/code/session_01QK3E1fg2R92E4keQkzd9Dv\n\n---------\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(verify): 検証ページを2モード(単票 + 全体)へ刷新 (#697)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-24T09:27:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7fe79e4b976ce30b47a527f874606d3fef4308a2",
          "body": "…ServiceNow RCE), JA+EN (#696)\n\n* content(critical-briefs): add No.107–109 (Verus repeat / AFX Trade / ServiceNow RCE), JA+EN\n\n3件の Critical Brief を JA+EN で追加(いずれも status: draft・published は仮日付 2026-07-24)。\n\n- 107 Verus-Ethereum ブリッジ再攻撃($7.54M・5月と同一入口の反復)\n- 108 AFX Trade validator 署名鍵/クォーラム侵害($24.15M)\n[…]\nession: https://claude.ai/code/session_01QK3E1fg2R92E4keQkzd9Dv\n\n---------\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "content(critical-briefs): add No.107–109 (Verus repeat / AFX Trade / …",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-24T02:31:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b0e749b26aad5d6dc1a1768beb9718bdaa93093a",
          "body": "- FP rewrite: parsePostalCodes (for loop → filter/map chain)\n- Fixed restrict-template-expressions in fetch error message\n- Fixed no-base-to-string in getDocumentId and getAttributes (type narrowing)\n- Added justified disable comments for byte-level ZIP scanner, guard throws, and FeedSource.fetch interface\n- Removed 4 existing eslint-disable comments (loop + conditionals in parsePostalCodes)\n\nRemaining: 2 no-base-to-string in getAttributes (meta.count, meta.updatedAt)",
          "is_bot": false,
          "headline": "fix(lint): daily lint fixes (2026-07-23) (#694)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-23T20:01:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0ad45d0c464da9ee0a2a001a85ac2af8dd110d9",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-23 (#695)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-23T17:02:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4583eb0bc4eb1bb8b50ef3d8348a398cb2dcfd7b",
          "body": null,
          "is_bot": false,
          "headline": "fix(feeds): strip CSV quotes in jp-postal-codes parser",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-23T14:27:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26c5a083063e6dea0ec4ba28e4e33f8bd3df2763",
          "body": "Compact snapshot (~4 leaves): {type, count, contentHash, updatedAt}\n- contentHash = SHA-256 of canonical full dataset JSON (124K records)\n- ZIP extraction with zero external dependencies (node:crypto + node:zlib)\n- idempotent: docHash = sha256(root | contentHash)\n- meta.* attributes only (per-record postal.* not emitted — too many)\n\nSeed: packages/feeds/scripts/seed-jp-postal-codes.ts\nTests: 15 tests (parse, canonical, snapshot, ZIP extraction)",
          "is_bot": false,
          "headline": "feat(feeds): jp-postal-codes feed — Japan Post postal code data",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-23T14:18:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "28ca906db6015b1854e21abd2b0938e1b5ef3a33",
          "body": "* fix(lint): daily lint fixes (2026-07-22)\n\n- sdk: fix 8 eslint errors (FP rewrites + 2 new justified disables)\n  - canonical.ts: no-control-regex → justified disable (JSON escape regex)\n  - commitments.ts: no-unsafe-argument → type narrowing\n  - commitments.ts: 3x no-conditional-statements → ternar\n[…]\ne paths from main left the committed\nbundle stale; CI checks git diff after bundle:openapi.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "fix(lint): FP rewrites across packages (2026-07-22) (#689)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-23T08:47:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "88222c977e7cff1d641a11d52fc22e4d84d817da",
          "body": "…(#692)\n\n祝日 証明付きデータAPI(W0)の型基盤。配信は forex と同じ feeds スイート配下\n(/v1/suites/feeds/{dataset}/latest + /plain)に載せる。\n\n- DataProvenance: contentHash(data の canonical JSON の SHA-256・クライアント再\n  ハッシュで照合)+ issuerId/snapshotAt、docHash/registeredAt/verifyUrl は\n  optional(登録失敗中も鮮度優先で配信)。verifyUrl は GET /v1/documents/\n[…]\n\n\n\nClaude-Session: https://claude.ai/code/session_015VgpJgZYuM4YwxrJ4R9z7q\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec): DatasetResponse / DataProvenance — 証明付き公共データAPI(W0 PR-A) …",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-23T05:07:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d2342a7e05fedd608d05fe2b6eed963e83c95724",
          "body": "…#693)\n\n証明付き公共データAPI(W0)の proof 生成側。snarkjs は workerd で動かないため、\nproof 生成は Node の feeds パイプラインが担う(workers は配信/計数のみ=#124)。\n\n- src/feeds/jp-holidays.ts: 内閣府 祝日 CSV を fetch → Shift_JIS デコード\n  (TextDecoder(\"shift_jis\"))→ 正規化(YYYY/M/D→ISO・日付昇順)。\n  - **コンパクト commit**:Merkle 木は `{type,holidaysHash,count,rang\n[…]\n\n\n\nClaude-Session: https://claude.ai/code/session_015VgpJgZYuM4YwxrJ4R9z7q\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(feeds): jp-holidays feed + seed(proof 生成)(W0 PR-B・WIP/lemma 側) (…",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-23T04:54:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2a326790491bb8259614467edb3b0e9f07686ab9",
          "body": "Add forex-average-v1 circuit that cryptographically proves\naverageRate = (rateA + rateB) / 2 without exposing raw source values.\n\nCircuit (8,368 constraints, PTAU 2^15):\n- Per-currency proof: 2 Merkle inclusions + average assertion\n- pathHash is runtime public input (currency-independent)\n- Rates sc\n[…]\ndd runAverageProofPipeline() for forex-average-v1 proofs\n- forex-proof-pipeline.ts: source feeds → data-commitment-v1, composite → forex-average-v1\n\nDry-run verified: 32+168+29 = 229 proofs, all pass.",
          "is_bot": false,
          "headline": "feat(feeds): forex-average-v1 ZK circuit for composite average proofs",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-23T02:29:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b3ed6b696265f3100e27f38ab8ec156fb4d2d0d4",
          "body": "* feat(web): 検証センターに検証カウンターを設置(live 取得・内訳・最終更新時刻)\n\n週次シグナル→アクション提案 v3 の P0b。「数字には、出典がある。」を掲げる面に\n出典の無い数字は置けないため、表示のたびに GET /v1/counters から取得する。\n\n- components/VerificationCounter.astro: 検証済み証明数(V)・発行された証明(I)、\n  各内訳、最終更新時刻、「この数字を検証する」導線。JA/EN 同梱。\n- config/counters.ts: 参照APIのURL。数字の取得元とリンク先が必ず一致するよう\n  1か\n[…]\nession: https://claude.ai/code/session_015VgpJgZYuM4YwxrJ4R9z7q\n\n---------\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): 検証センター /verify を SSL証明書型に+検証カウンター公開 (#691)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-22T23:57:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8120f483423178bdbbf6d6e7899e909fd8e9c65f",
          "body": "* chore: pnpm update 2026-07-22\n\n* chore: pnpm update 2026-07-22",
          "is_bot": false,
          "headline": "chore: deps update 2026-07-22 (#690)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-22T17:02:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6644c05ca05a687413265d07b2d0323aad7252f6",
          "body": "The composite feed (forex/composite) already provides the abstraction\nlayer. Source feeds should name their actual data provider — no need\nto hide behind an ECB alias.",
          "is_bot": false,
          "headline": "refactor(feeds): rename forex/ecb → forex/frankfurter",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-22T00:35:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5984f48ad8d9a0ccfd797664df37192860d838c",
          "body": "The composite feed called commitDeep() without maxDepth, building a\ntree at minimum depth (e.g. 6 for 34 leaves). But the circuit expects\ndepth 16. The witness padded siblings to 16, but the tree only had 6\nlevels — root mismatch caused Assert Failed on all composite proofs.\n\nSource feeds (frankfurter, er-api) were unaffected because they go\nthrough the fetcher Workers which defaults maxDepth to 16.",
          "is_bot": false,
          "headline": "fix(feeds): pass maxDepth=16 to composite feed commitDeep",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-22T00:24:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbf017c3dbf61d0e6c83fdd379be023eb6e4b18d",
          "body": null,
          "is_bot": false,
          "headline": "chore: sync pnpm-lock.yaml with package.json",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T23:57:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0553785aa50f7ed0a7b9e01d5b1a6617b86e1fed",
          "body": "- Add forex-er-api FeedSource (ExchangeRate-API free tier)\n- Add forex-composite FeedSource (Frankfurter ⊕ ER-API average)\n- Add runMultiPipeline for FeedSource[] sequential processing\n- Add toHex64 helper to prevent leading-zero truncation in BigInt\n- Update forex-proof-pipeline entry point for 3-feed execution\n- Include source roots in composite Merkle tree for cryptographic binding\n- Store per-currency source values in document attributes for audit",
          "is_bot": false,
          "headline": "feat(feeds): add multi-source forex pipeline with composite average",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T23:53:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af4a27c1ad4a13c2cfef0eddd98b1024c64d5a26",
          "body": "- pipeline.ts: prove via SDK (fetches wasm/zkey from IPFS, cached)\n- Remove wasmPath/zkeyPath from PipelineConfig\n- Remove snarkjs/@types/snarkjs/fs dependencies from feeds\n- SDK v0.0.40: add artifact cache to prover.prove (batch proving)\n\nFirst proof ~9s (IPFS fetch), subsequent ~900ms (cached).",
          "is_bot": false,
          "headline": "refactor(feeds): replace groth16.fullProve with SDK prover.prove",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T21:40:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eed444f99585cf0908502c0d91dc1b2588988dc8",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-21 (#688)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T17:02:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b5db9aae8f71e5f53072965a2c731f3f0b0bb42d",
          "body": "…d-v1\n\ncanonical-sort-v1 is a registered schema in D1 that accurately describes\nthe fetch → canonicalize → commit pipeline the fetcher already performs.",
          "is_bot": false,
          "headline": "fix(feeds): use canonical-sort-v1 schema instead of made-up lemma-fee…",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T15:19:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4954f977b2cae0acb72e534c0379e78fa47b7307",
          "body": "…ubs.nippo.v1 → lemma-feed-v1\n\n- forex/ecb: authority-based ID instead of source/proxy name\n- lemma-feed-v1: proper feed schema instead of CLUBS daily report schema",
          "is_bot": false,
          "headline": "refactor(feeds): rename feed forex/frankfurter → forex/ecb, schema cl…",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T15:04:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a07fc5a4c2630aca4bf4f9092c973254b79b697d",
          "body": "getAttributes now flattens all rates (rates.EUR, rates.JPY, etc.) into\nthe document attributes, enabling /v1/suites/feeds/* to return the\ncomplete feed data alongside verification status.",
          "is_bot": false,
          "headline": "feat(feeds): include all forex rates in attributes for full data access",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T14:44:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a07f689b3baa91e42baf1dfa15245acc402ea25",
          "body": "… pipeline\n\n- forex.ts: in-process fetchAndCommit → HTTP GET to fetcher Workers\n- pipeline.ts: generic runProofPipeline (fetch→register→prove→submit)\n- FeedSource: add getDocumentId/getAttributes for per-feed metadata\n- forex-proof-pipeline.ts: thin entry point (env + 1 call)\n- feeds package: add @lemmaoracle/sdk + @types/snarkjs deps",
          "is_bot": false,
          "headline": "feat(feeds): route pipeline through fetcher Workers + extract generic…",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T14:04:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a49dade1c344f87f3d09239dd86fba5dddecdd0",
          "body": null,
          "is_bot": false,
          "headline": "fix: use wrangler [alias] to resolve SDK from source, drop [build] step",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T13:14:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9dd72bef177a6b94382d915b2959c5cad42148f7",
          "body": null,
          "is_bot": false,
          "headline": "fix: add [build] command to wrangler.toml to build SDK before bundling",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T13:13:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45fcf86cc18b3c9e4f6660212dd243ef280ce7d9",
          "body": null,
          "is_bot": false,
          "headline": "revert: rename fetch back to fetcher (package + dir + worker)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T13:02:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "add46a661fe2b3858e177b76a4f3ce58346f301c",
          "body": "…oracle/fetch + pnpm-lock",
          "is_bot": false,
          "headline": "fix: update feeds package imports from @lemmaoracle/fetcher to @lemma…",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T12:59:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d165213adcb57a7b836151e2ad17bcb064fb6d8f",
          "body": null,
          "is_bot": false,
          "headline": "deploy",
          "author_name": "Aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T12:53:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f7cac3af73bafff0be1f140248f5af5c8ad01f3",
          "body": "- Package: @lemmaoracle/fetcher → @lemmaoracle/fetch\n- Directory: packages/fetcher → packages/fetch\n- Worker name: fetcher → fetch\n- Health service: lemma-fetcher → fetch",
          "is_bot": false,
          "headline": "refactor: rename fetcher -> fetch (package + dir + worker name)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T12:47:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96191b9d2c5cdfac12160db9e3e22283983db8da",
          "body": "Wrangler handles TS natively via esbuild; no separate build step needed.",
          "is_bot": false,
          "headline": "chore: remove build:worker script, add --noEmit to type-check:worker",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T12:38:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a223c4da4d747f351379bace67e9e0832896ca5",
          "body": "The fetcher is a pure HTTP service — scheduling is the caller's job.\nRemoved: scheduled handler, SCHEDULED_SOURCES env, cron triggers,\nScheduledController/ExecutionContext types.",
          "is_bot": false,
          "headline": "refactor: remove scheduled trigger from fetcher",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T12:31:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7078cbdc6fb39cf070e167f685b2e0d484c42435",
          "body": null,
          "is_bot": false,
          "headline": "chore: rename worker to 'fetcher'",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T12:30:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ecec4d3a4f79f9c2352a766459c9f436e8417d7",
          "body": "- src/worker.ts: HTTP API (GET/POST /fetch, GET /health) + cron trigger\n  - X-API-Key auth via FETCHER_API_KEY secret\n  - SCHEDULED_SOURCES for cron-configured URLs\n  - maxDepth defaults to 16 (data-commitment-v1.1)\n- wrangler.toml: cron at 17:35 UTC daily, nodejs_compat flag\n- tsconfig.worker.json: @cloudflare/workers-types\n- package.json: deploy/dev/build:worker/type-check:worker scripts\n- Dry-run: 8.3KB bundle (2.8KB gzip), type-check clean, 7/7 tests pass",
          "is_bot": false,
          "headline": "feat: fetcher CF Workers entry point + wrangler.toml",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T12:27:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1e1ac7138d4075dad0ead7bba98936a860d5f34",
          "body": "- Rust crate with serde_json + ryu for deterministic JSON serialization\n- Matches TS canonical.ts rules: key sort, no whitespace, -0→0, float .0 strip\n- 12 unit tests passing\n- wasm-pack build → canonical_sort_bg.wasm (64KB) + JS shim\n- Uploaded to IPFS: wasm=QmTjU7xT6..., js=QmcPLweD5C...\n- Schema registered on workers API (artifact update pending D1 access)\n\nAlso: consolidate fetcher imports (2 lines → 1)",
          "is_bot": false,
          "headline": "feat: canonical-sort-v1 Rust/WASM normalize",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T12:05:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20da6e5fc65bba1e9cb3278c5230557ca4c58297",
          "body": null,
          "is_bot": false,
          "headline": "Bump package versions",
          "author_name": "Aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T11:53:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e741ad2e35382cd99f55094ebc9b60b5a4ea0886",
          "body": "- commitDeep pairs naturally with commit (shallow vs deep traversal)\n- Follows JS/TS convention: cloneDeep, mergeDeep, equalDeep\n- Renamed across SDK, fetcher, and feeds pipeline\n- CommitToDataOptions → CommitDeepOptions\n- Pipeline import switched from data-commitment dist to SDK dist",
          "is_bot": false,
          "headline": "refactor: rename commitToData → commitDeep",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T11:35:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b77286acd1585e1705db3afadfc7e3c7ff0b1981",
          "body": "- fix(sdk): toScalar always hashes strings via SHA-256 (prevents 42/\"42\" collision)\n- feat(sdk): add commitToData() with recursive path-value extraction + maxDepth option\n- feat(sdk): add canonicalSort() / canonicalize() (canonical-sort-v1)\n- refactor(fetcher): depend only on @lemmaoracle/sdk (remove canonical-sort, data-commitment deps)\n- feat: register data-commitment-v1.1 circuit with artifacts on workers API\n- test: update toScalar test for new SHA-256 string behaviour",
          "is_bot": false,
          "headline": "feat: SDK commitToData + canonicalSort, fetcher SDK-only dep",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T11:13:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ebc11426e2449b84bbd83771ac253adf4f38c15b",
          "body": null,
          "is_bot": false,
          "headline": "chore: update pnpm-lock",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T10:21:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "709f798202a6c4a829a44fb6a13e301cb3eab70b",
          "body": null,
          "is_bot": false,
          "headline": "feeds: add snarkjs dep + forex-proof-pipeline script",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-21T10:21:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45017ed4654428196c83767c53662e9e17424be4",
          "body": "照合ページ改修提案(2026-07-21)改修3 の最小構成。CLUBS 等の照合ページの\nフッタークレジット「独立した証明基盤 Lemma に固定されています」が指す受け皿。\n\n- /verify/(EN)・/ja/verify/(JA)。共有テンプレ VerifyAnchorTemplate を locale 分岐。\n- 内容(Phase 2まで最小構成): 検証境界(✓ が意味すること・しないこと)/\n  照合・検証・証明の3語の分業/独立した証明基盤(第三者性・肯定文)/四本柱への導線。\n- 用語: 「AI証明基盤 / proof layer」。照合=当事者の行為・検証=第三者の行為・\n[…]\n\n\n\nClaude-Session: https://claude.ai/code/session_01D3EsNY9rApoqT6nvrWEXJH\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): 検証センター(照合記録アンカーページ)/verify・/ja/verify (#687)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-21T10:12:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5e30dfd3ea635c2f570017efc7d30a8168425d48",
          "body": "…ing) (#686)\n\n* Add Critical Briefs 105 (JAPRO likeness/voice) and 106 (Figma content training)\n\n105-japro-likeness-voice-ai-provenance: 肖像・声の無断利用が4万件超、削除率100%でも\n同一人物のモデルが再投稿(Pillar 01・data-provenance)。\n106-figma-content-training-default-consent: AI学習が個人/小規模で既定オン・\nエンタープライズで既定オフ、Khan v. Figma(Pillar \n[…]\nession: https://claude.ai/code/session_01D3EsNY9rApoqT6nvrWEXJH\n\n---------\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Critical Briefs 105 (JAPRO likeness/voice) + 106 (Figma content train…",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-21T02:34:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0f666ada8d979be76459b1db1e06f7f3a5d3752b",
          "body": "…TI) (#685)\n\n103-ostium-oracle-signer-key-future-priced-data: オラクル署名鍵1本の侵害で\n未来日付の価格が有効署名で受理され $18M 流出(Pillar 01・data-provenance)。\n104-webmcp-mid-session-tool-injection: WebMCP のツール表面をセッション途中で\n差し替える MSTI 攻撃(Pillar 03・agent-infrastructure)。\n\nJA+EN 各2ファイル。gap モジュール・og_lead 付与、astro sync 検証済み。\n\n\nClaude-Session: https://claude.ai/code/session_01D3EsNY9rApoqT6nvrWEXJH\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add Critical Briefs 103 (Ostium oracle signer key) and 104 (WebMCP MS…",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-21T02:32:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b1a0e89f634e04d20229c32e7444b1c7391045ac",
          "body": null,
          "is_bot": false,
          "headline": "chore: update submodules 2026-07-20",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-20T20:30:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "397ffc3d1be57ec3cf1292b48a4bf2345bb71607",
          "body": "- trust402: 35→0 errors — FP rewrite of detectContentType (if-chain\n  → lookup-table + single expression), spread-based header\n  construction in publish()/list(), .catch() for proof submission,\n  ternary for file upload conditional, type-safe errBody casts\n- 14 FP rewrites, 6 justified new disables \n[…]\n\n  async body, 1 Object.assign for Error prototype, 1 try-catch\n  inside Promise wrapper for URL API boundary)\n- 0 disable comments removed (all existing disables are justified\n  boundary/crypto code)",
          "is_bot": false,
          "headline": "fix(lint): daily lint fixes (2026-07-20) (#683)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-20T20:02:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "762bc7339457988497388ac2ec3e779e611e4036",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-20 (#684)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-20T17:02:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0d05520c46b4044bcbbf29ae2372e1b5bb7ec4a",
          "body": "seal (15→0):\n  - bits.ts: extract throw into  helper with justified disable\n  - proof.ts: add type annotations for imprecise SDK types + disables\n\nagent (24→0):\n  - validate.ts: rewrite validateTimestamps in FP style (remove let/loop/expression-statements)\n  - validate.ts: remove unused  helper\n  - \n[…]\ns\n\ncontent (49→38, 11 fixed):\n  - normalizer.ts: rewrite reduceElements in functional style (reduce instead of for-loop)\n  - normalizer.ts: extract throw into  helper for writeBigEndian overflow check",
          "is_bot": false,
          "headline": "fix(lint): daily lint fixes (2025-07-19) (#681)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-19T20:02:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1652aedb047306a6d729fdaf0b76f08d59910213",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-19 (#682)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-19T17:02:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f071c39ab002046164c31328d9707bc2493f10b2",
          "body": "Same root cause as c10a726 (which removed the broken `build` script):\nboth packages have no `src/` and no `tsconfig.json` at the package\nroot — only `circuits/`. `tsc --noEmit` with no project and no source\nfiles prints help and exits 1, breaking the root `pnpm type-check`\n(`pnpm -r --if-present typ\n[…]\nrun `pnpm type-check`, so this is latent, but the\ntemplate-residue script is removed for consistency with the c10a726\nprecedent. Circuit build (`build:circuit`) and tests are unaffected.\n\nRefs c10a726",
          "is_bot": false,
          "headline": "fix: remove broken `type-check` script from attestation/roles (#680)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-18T20:01:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "88ad64cfaa06d8fa6b97c71e80ef5349e9b6d8ca",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-17 (#679)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-17T17:02:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b13d6281e118d3f714aead0793e4f100f863616",
          "body": "- sdk/platform.ts: 5 errors fixed — justified polyfill boundary disables\n- trust402/pay-fetch.ts: 21 errors fixed — non-null assertions removed,\n  justified disables for HTTP/Wallet boundary code\n- trust402/trust402.ts: 24 errors fixed — FP rewrites for\n  bytesToFieldElements + reduceElements (PKCS7\n[…]\n2),\n  unnecessary optional chains and String() conversion removed\n\n50/84 errors fixed. 35 remaining in trust402/trust402.ts (HTTP gateway\nboundary code in publish/list and detectContentType if-chain).",
          "is_bot": false,
          "headline": "fix(lint): daily lint fixes (2026-07-16) (#677)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-16T21:33:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "df9ca7aecc3c6de4d3d821e75021d0611841d37f",
          "body": "…629)\n\n* docs(sdk): add CHANGELOG migration note for 0.0.14 → 0.0.3x (#587)\n\nFulfills promised follow-up #2 from issue #587: a 'what moved' note\ncovering the 0.0.14 → 0.0.3x transition. Docs-only, single new file.\n\nCovers four real surface changes:\n- Breaking: deep ./dist/* imports removed (0.0.14 →\n[…]\nt() path is untouched.\n\nPart of the Merkle bundle anchor feature: batch N documents into one\nMerkle root on-chain, reducing gas cost ~90%.\n\nFoundry tests: 12/12 pass (8 existing + 4 new bundle tests).",
          "is_bot": false,
          "headline": "docs(sdk): add CHANGELOG migration note for 0.0.14 → 0.0.3x (#587) (#…",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-16T20:02:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6ebf2ea4202bd2352bdfe658aa1b882f8b5ddddc",
          "body": "- FP rewrite: fetchArtifact in sdk/prover.ts (remove if/for/try)\n- Express fix: if→ternary in x402/lemma-submission.ts proveViaRelay\n- Remove unnecessary union type in trust402/pay-types.ts\n- Fix template literal types in seal/bits.ts\n- Remove unnecessary ?? and as cast in x402/lemma-submission.ts",
          "is_bot": false,
          "headline": "fix(lint): daily lint fixes (2025-07-16) (#676)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-16T20:02:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63cd5acbf117185392deb2785a88dc0bb0e454fb",
          "body": "- Remove unused SampleCopy import, fix unused vars, binding-less catch (demo)\n- Add no-conditional-statements to justified Map-cache disables, add now param to gcJobs, bind void to const (relay/prove.ts)\n- FP rewrite of findMatchingRoute reduce to eliminate if statements (relay/server.ts)\n- FP rewrite of compilePathPattern removing eslint-disable comment (relay/types/http.ts)\n- --fix: remove unnecessary type assertions (demo/translations.ts)",
          "is_bot": false,
          "headline": "fix(lint): daily lint fixes (2025-07-15) (#674)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-16T05:43:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "66bd9ea425bcfa9799404b06310be7c2e22ddaa6",
          "body": "…587) (#622)\n\nFollow-up to #609. Aggre flagged these in #587's latest comment:\n'Out of scope (separate follow-up): crypto.ts:encrypt and disclose.ts\n(sign/verify/reveal/verifyProof) carry the same unused-_client pattern.'\n\nAdds/extends docstrings on all 5 functions explaining:\n- no network I/O (loca\n[…]\n LemmaClient | undefined (createProof passes\n  undefined internally)\n\nDocs-only. No code, signature, or behavior changes. tsc + eslint clean.\nWhitepaper refs: §2.1/§4.4 (crypto), §2.6/§4.6 (disclose).",
          "is_bot": false,
          "headline": "docs(sdk): clarify _client param is not read in encrypt + disclose (#…",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-16T05:41:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4d2b65d91a79763025754b8e95872d09dacc7ba5",
          "body": "- demo: fix 3 unused-vars errors (remove SampleCopy import, rename catch var, rename unused param)\n- relay: FP rewrite — convert if-statements to ternaries in prove.ts and server.ts\n- relay: add gcJobs param to satisfy functional/functional-parameters\n- relay: narrow eslint-disable comments (immutable-data only) on Map mutations\n- relay + agent + demo + trust402: auto-fix unnecessary type assertions, unused eslint-disable directives\n- Remove 2 unused eslint-disable directive warnings in relay",
          "is_bot": false,
          "headline": "fix(lint): daily lint fixes (2026-07-12) (#660)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-16T05:41:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e4c406f5201519550b94017e0802121b4992290",
          "body": null,
          "is_bot": false,
          "headline": "Bump @lemmaoracle/seal version to 0.3.7",
          "author_name": "Aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-16T05:24:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3fbd84008fc5a344f38d98cf7c698ec4c87610c",
          "body": "SEAL_CIRCUIT_ID was 'seal-identity-v1' but the registered circuit in\nD1 is 'seal-identity-v2.2'. The zkeys differ (different compilation),\nso provers using v1 would generate proofs that fail verification\nagainst v2.2's vkey.\n\nChanges:\n- proof.ts: SEAL_CIRCUIT_ID = 'seal-identity-v2.2'\n- vkey.ts: imp\n[…]\nv2.2 vkey (QmQsFzT...) instead of v1\n- vkeys/: add seal-identity-v2.2.json from IPFS\n\nVerified: prove(secret, nonce) → valid:true against live\nPOST /v1/proofs/verify with circuitId: seal-identity-v2.2",
          "is_bot": false,
          "headline": "fix(seal): update SEAL_CIRCUIT_ID to seal-identity-v2.2",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-16T05:10:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8d8de60c20c911bdda293c502dc8663e866d19ea",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-15 (#675)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-15T17:02:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "394dbae1c61464e71a04d16b809983db83b547b6",
          "body": null,
          "is_bot": false,
          "headline": "chore(sdk): bump version to 0.0.38",
          "author_name": "Aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-15T03:10:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9b778400a45baa72df79405db5c4f909eb4f4a94",
          "body": "…acks\n\nCircuit artifact fetches were failing in the browser because w3s.link\n301-redirects cross-origin to dweb.link, which some browsers reject\nunder CORS re-validation, and ipfs.io has intermittent reachability\nissues from certain networks.\n\nAdd gateway.pinata.cloud (Lemma's artifact upload origin\n[…]\nhe first gateway, and trustless-gateway.link\n(IPFS Foundation's verifiable-response gateway) as an additional\nfallback. Demote w3s.link to last resort.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "fix(sdk): add Pinata and trustless-gateway.link to IPFS gateway fallb…",
          "author_name": "Aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-15T03:03:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "832282f2f0a8dc87fe4f1001b6bdffda493a85ad",
          "body": "…nt TS build in CI\n\n#672 は壊れた content/passthrough を CI の build から除外して緑にした。本 PR は\nそのうち content を「実際にビルド可能」にして戻す(passthrough は据え置き)。\n\n全 workspace を依存順にビルドして棚卸しした結果、モノレポで唯一の実コードバグは\ncontent/src/normalizer.ts の型エラーだった(他は全て正常ビルド)。\n\n- normalizer.ts: `reduceElements` の `elements[0]` / `elements[i]` が\n  noUn\n[…]\n\n\n\nClaude-Session: https://claude.ai/code/session_013fkFD51i3F3R3SHUvwcqMD\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(content): fix unchecked index access in normalizer, restore conte…",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-15T01:17:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "afdc708fad2c700117299b72c8cc6695f8794a61",
          "body": "AI Now Institute が 2026-07-08 に公開した PoC「Friendly Fire」。開発者が\nClaude Code / Codex に第三者ライブラリのセキュリティ審査を頼むと、審査対象に\n仕込まれた悪性バイナリをエージェントが「安全」と誤判定してホスト上で実行する。\nPillar 01(来歴)/ code-provenance。EN + JA。\n\n一次ソース照合済み(すべて原典で確認、事実のズレなし):\n- AI Now Institute 原典(発行日 2026-07-08・著者 Milanov/Khlaaf・CLI 版・モデル4種)\n- GitHub 再現 r\n[…]\n\n\n\nClaude-Session: https://claude.ai/code/session_013fkFD51i3F3R3SHUvwcqMD\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Critical Brief No.102: Friendly Fire(防御用エージェントの RCE) (#668)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-15T01:00:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c10a72677757b2905240e5f6e8b117c0691aa695",
          "body": "* fix(ci): attestation/roles の壊れた build スクリプトを削除\n\nCI に `pnpm -r build`(#—、sdk の dist/ を test 前に作る目的)が入ったことで、\nこれまで一度も実行されず眠っていた壊れたビルドスクリプトが露出した。\n\npackages/attestation と packages/roles は `\"build\": \"tsc -p tsconfig.json\"` を\n持つが、どちらも src/ が無く(circuits のみ)tsconfig.json も存在しない。\n→ `error TS5058: The specif\n[…]\nession: https://claude.ai/code/session_013fkFD51i3F3R3SHUvwcqMD\n\n---------\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): remove broken tsc build scripts from attestation/roles",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-15T00:48:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fd6598631647f349df9f41e78c36b3d58fc8c76b",
          "body": null,
          "is_bot": false,
          "headline": "chore(seal): bump CIRCUIT_ID to seal-identity-v2.2",
          "author_name": "Aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-15T00:44:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2661fd3e64b1ec4a63ccd3e734e2a42483900752",
          "body": "- Add VKEY_PATH and upload seal-identity_vkey.json via Pinata\n- Include vkey in artifact location for self-contained circuit registration\n- Bump CIRCUIT_ID to seal-identity-v2.1",
          "is_bot": false,
          "headline": "feat(seal): upload vkey to IPFS alongside wasm/zkey",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-15T00:28:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17e4af404b9e466fa7b9e3421deaf6aa1cb99706",
          "body": "* fix: sync typescript-eslint to ^8.64.0 matching pnpm-lock.yaml\n\npnpm-lock.yaml was bumped to 8.64.0 in #667 but package.json stayed\nat 8.63.0, causing --frozen-lockfile CI failures on all PRs.\n\n* fix(ci): add pnpm -r build before tests\n\npackages like @lemmaoracle/sdk need dist/ built before dependents\nlike data-commitment can import them. CI had no build step between\ninstall and test, so sdk/dist was missing in clean environments.",
          "is_bot": false,
          "headline": "fix(ci): add pnpm -r build step before tests (#670)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-15T00:15:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c45d399af538283c6cb1f2dfd8bc9e83132fb52",
          "body": "pnpm-lock.yaml was bumped to 8.64.0 in #667 but package.json stayed\nat 8.63.0, causing --frozen-lockfile CI failures on all PRs.",
          "is_bot": false,
          "headline": "fix: sync typescript-eslint to ^8.64.0 matching pnpm-lock.yaml (#669)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-15T00:07:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b19914761d683e2b375bb030cd52129c6aa16f2",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-14 (#667)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-14T17:02:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38d3e0d0d3b15659e00b8f63eada69cf2c6771bb",
          "body": "Three endpoints that existed in code but not in spec: GET /v1/verification-count, GET /v1/document-count, GET /v1/documents/stats. Also regenerates the bundle to fix #665's createdAt→registeredAt that didn't make it into the bundled JSON.",
          "is_bot": false,
          "headline": "spec: add counter endpoints (V, I/N, per-scope stats) (#666)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-14T15:20:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "774feef8fbbeac6f0165c8097545a7b213897132",
          "body": "… (#665)\n\nGET /v1/documents/:docHash(#107)の返す形が、検証ページの契約と違う。\nstatus も onchainTxHash も無く、登録日時は createdAt という名前なので、受け手は\n「登録済みかどうか」を判定できない。実際 AI業務日報の検証ページは status で分岐するため、\n登録済みの日報が「照合を待っています」と表示される(安全側に外してはいるが事実と違う)。\n\n- status: registered / anchored / pending の3値。tx が確定していないものを anchored と\n  呼ばない。オンチェーン\n[…]\n\n\n\nClaude-Session: https://claude.ai/code/session_013fkFD51i3F3R3SHUvwcqMD\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "spec: GetDocumentResponse に status / onchainTxHash / registeredAt を追加…",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-14T11:38:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bfd6e24be18dbcf98f2a1b4b52d8294e858195d9",
          "body": "…#663)\n\nAdds public read endpoint for registered documents so that third parties\ncan verify that a docHash was registered on Lemma without authentication.\n\n- New GetDocumentResponse schema (docHash, schemaId, issuerId, subjectId,\n  commitmentRoot, chainId, createdAt — no internal fields exposed)\n- New GET /v1/documents/{docHash} path with security: [] (public)\n- TypeScript type in packages/spec/src/index.ts\n\nCloses #105",
          "is_bot": false,
          "headline": "feat(spec): add GET /v1/documents/:docHash — public document lookup (…",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-14T06:49:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff326bbdf2cc37bb9045ab09886c50847f1df804",
          "body": null,
          "is_bot": false,
          "headline": "chore: update submodules 2026-07-13",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-13T20:32:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8e957cea9705094d22ae28491c4be027e13b142",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-13 (#662)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-13T17:02:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0eb9369f1dc603477508ec5b63562944320287bb",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-12 (#661)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-12T17:02:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d407825070b792053bc42f1fa56496c80f72c38a",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-11 (#659)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-11T17:02:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d28d6ba79e6c5a3756b68e01675610c67a060e87",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-10 (#658)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-10T17:02:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a9b6eafb75803a71b0d2619f4c30a52ca23dac0",
          "body": "* feat(briefs): No.093 A7A5 ruble-stablecoin sanctions evasion (Pillar 04)\n\nThis week's Brief. Only the A7A5 case from the 2026-07-03 candidate draft\nwas written — the other candidate (No.093 draft on AI chatbot political\nbias) was dropped after primary-source verification: the WaPo test it\ncited di\n[…]\n.com>\nClaude-Session: https://claude.ai/code/session_01FLcqXYL3EEYn5AsrpMV2eE\n\n---------\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(briefs): No.093 A7A5 ルーブル建てステーブルコイン制裁回避(Pillar 04) (#618)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-10T01:30:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7cc60666ea4be2f9c49943d075b35903c30b605d",
          "body": "* briefs: add Critical Brief 099 / 100 / 101 (JA+EN)\n\n- 099 Agentjacking(Sentry MCP 経由の偽エラー報告でコーディングエージェントが\n  攻撃者コマンドを実行)— Pillar 02 / ai-decision-integrity / Pack C\n- 100 Aptos Move VM 型混同(約3,000ドル検証環境で再現・下流波及リスク)\n  — Pillar 01 / bridge-config-trust / Pack A\n- 101 Paysafe 偽 SDK(決済SDKを装う17パッケージが決済AP\n[…]\nession: https://claude.ai/code/session_01FLcqXYL3EEYn5AsrpMV2eE\n\n---------\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "briefs: add Critical Brief 099 / 100 / 101 (JA+EN) (#657)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-10T01:17:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "acd2e9e48ca72738566573572ba54826cb2eb39f",
          "body": null,
          "is_bot": false,
          "headline": "chore: pnpm update 2026-07-09 (#656)",
          "author_name": "aggre",
          "author_login": "aggre",
          "committed_at": "2026-07-09T17:02:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef6130dc95c8d8cb05714e149f3d69c2943d77e0",
          "body": "業務LP のヒーローを authenticity 起点に寄せた(#654)のに合わせ、共有カード\n(OG画像)も privacy/委任フレームから本物×証明へ更新。ヒーロー H1 と一致。\n\n- title: 「「AIは不安」を「任せて安心」へ。」→「本物のデータだけを、AIに。」\n- tagline: 「社内のデータは外に出さず…」→「中身を渡さず、「本物である」ことだけを証明する。」\n- EN も並行更新。label「AI導入ガイド」・レイアウトは不変。\n\n生成 PNG を目視確認済み(本物=アクセント)。build 緑(360 pages)。\n\n\nClaude-Session: https://claude.ai/code/session_01FLcqXYL3EEYn5AsrpMV2eE\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "copy(og/ai-gyomu-anshin): OG画像を本物×証明ポジションに更新 (#655)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-09T08:39:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d625a2fef0fdc35edad2fb55683b1125bfc3009f",
          "body": "* copy(ai-gyomu-anshin): 本物×証明ポジションへLPコピー調整(変更1/2/3)\n\n業務LP を privacy 起点 → authenticity 起点に。コピーのみ・レイアウト/価格/\n機能/CTA/構造は不変(既存クラス流用、新規CSSなし)。\n\n- 変更2(Option A)ヒーロー主従調整:\n  H1「データは渡さない。それでも、取引は前に進む。」→「本物のデータだけを、AIに。」\n  sub → 「データは渡さない。中身を見せずに『本物であること』だけを証明する、\n  AI のための信頼インフラ。」\n- 変更1+3 フッター近傍に会社紹介ブロックを新設:\n \n[…]\nession: https://claude.ai/code/session_01FLcqXYL3EEYn5AsrpMV2eE\n\n---------\n\nCo-authored-by: Mayumi Hara <mayumi@Mayumis-iMac.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "copy(ai-gyomu-anshin): 本物×証明ポジションへLPコピー調整(変更1/2/3) (#654)",
          "author_name": "Mayumi",
          "author_login": "yumemayu",
          "committed_at": "2026-07-09T08:29:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 0,
      "commits_last_year": 1281,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 22,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 37,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@lemmaoracle/mcp",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@lemmaoracle/mcp",
          "is_deprecated": false,
          "latest_version": "0.0.23",
          "repository_url": "https://github.com/lemmaoracle/lemma",
          "versions_count": 21,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1296,
          "first_published_at": "2026-04-26T03:02:02.121000Z",
          "latest_published_at": "2026-07-21T11:52:26.117000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "@lemmaoracle/sdk",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@lemmaoracle/sdk",
          "is_deprecated": false,
          "latest_version": "0.1.1",
          "repository_url": "https://github.com/lemmaoracle/lemma",
          "versions_count": 40,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2413,
          "first_published_at": "2026-03-16T05:38:00.037000Z",
          "latest_published_at": "2026-07-29T11:03:47.130000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        },
        {
          "name": "@lemmaoracle/seal",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "lemma",
            "seal",
            "auth",
            "zk",
            "circuit",
            "sign-in"
          ],
          "ecosystem": "npm",
          "matches_repo": null,
          "registry_url": "https://www.npmjs.com/package/@lemmaoracle/seal",
          "is_deprecated": false,
          "latest_version": "0.3.8",
          "repository_url": null,
          "versions_count": 15,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1649,
          "first_published_at": "2026-05-16T04:06:40.881000Z",
          "latest_published_at": "2026-07-21T11:52:11.223000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "@lemmaoracle/spec",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@lemmaoracle/spec",
          "is_deprecated": false,
          "latest_version": "0.1.0",
          "repository_url": "https://github.com/lemmaoracle/lemma",
          "versions_count": 36,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2709,
          "first_published_at": "2026-03-16T05:37:19.600000Z",
          "latest_published_at": "2026-07-29T10:58:51.846000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        },
        {
          "name": "@lemmaoracle/agent",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "lemma",
            "agent",
            "identity",
            "credential",
            "authority",
            "schema",
            "wasm"
          ],
          "ecosystem": "npm",
          "matches_repo": null,
          "registry_url": "https://www.npmjs.com/package/@lemmaoracle/agent",
          "is_deprecated": false,
          "latest_version": "0.0.35",
          "repository_url": null,
          "versions_count": 14,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 915,
          "first_published_at": "2026-04-30T11:03:10.172000Z",
          "latest_published_at": "2026-07-21T11:52:14.764000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 1,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-05-17",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 1,
        "total_forks": 1
      },
      "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": [
        "packages/agent/tsconfig.json",
        "packages/blog-article/circuits/tsconfig.json",
        "packages/canonical-sort/tsconfig.json",
        "packages/content/circuits/tsconfig.json",
        "packages/content/tsconfig.json",
        "packages/data-commitment/tsconfig.json",
        "packages/demo/tsconfig.json",
        "packages/feeds/tsconfig.json",
        "packages/fetcher/tsconfig.json",
        "packages/mcp/tsconfig.json",
        "packages/parser/tsconfig.json",
        "packages/passthrough/tsconfig.json",
        "packages/relay/tsconfig.json",
        "packages/sdk/tsconfig.json",
        "packages/seal/tsconfig.json",
        "packages/spec/tsconfig.json",
        "packages/trust402/tsconfig.json",
        "packages/web/tsconfig.json",
        "packages/x402/tsconfig.json"
      ],
      "toolchain_manifests": [
        "packages/agent/Cargo.toml",
        "packages/agent/normalize/Cargo.toml",
        "packages/canonical-sort/normalize/Cargo.toml",
        "packages/passthrough/Cargo.toml"
      ],
      "largest_source_bytes": 120192,
      "source_files_sampled": 247,
      "oversized_source_files": 3,
      "agent_instruction_files": [
        ".cursorrules",
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 772
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.1.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 1,
            "oldest_advisory_days": 4
          },
          {
            "name": "underscore",
            "direct": false,
            "version": "1.13.6",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-qpx9-hpmf-5gmw"
            ],
            "fixed_version": "1.13.8",
            "advisory_count": 1,
            "oldest_advisory_days": 148
          },
          {
            "name": "@hono/node-server",
            "direct": false,
            "version": "1.19.17",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-frvp-7c67-39w9"
            ],
            "fixed_version": "2.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 8
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 2,
          "moderate": 1
        },
        "advisory_count": 3,
        "affected_count": 3,
        "assessed_count": 198,
        "malicious_count": 0,
        "assessed_package": "npm:@lemmaoracle/mcp@0.0.23",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "wasm-bindgen",
          "manifest": "packages/agent/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2"
        },
        {
          "name": "js-sys",
          "manifest": "packages/agent/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "serde",
          "manifest": "packages/agent/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_json",
          "manifest": "packages/agent/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/agent/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/spec",
          "manifest": "packages/agent/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "poseidon-lite",
          "manifest": "packages/agent/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.3.0"
        },
        {
          "name": "ramda",
          "manifest": "packages/agent/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.30.1"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/attestation/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/spec",
          "manifest": "packages/attestation/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "snarkjs",
          "manifest": "packages/attestation/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.6"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/blog-article/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/spec",
          "manifest": "packages/blog-article/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "poseidon-lite",
          "manifest": "packages/content/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.3.0"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/content/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/spec",
          "manifest": "packages/content/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/canonical-sort",
          "manifest": "packages/data-commitment/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/data-commitment/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@noble/hashes",
          "manifest": "packages/data-commitment/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.0"
        },
        {
          "name": "poseidon-lite",
          "manifest": "packages/data-commitment/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.2.0"
        },
        {
          "name": "@lemmaoracle/fetcher",
          "manifest": "packages/feeds/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/feeds/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@trust402/sdk",
          "manifest": "packages/feeds/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "poseidon-lite",
          "manifest": "packages/feeds/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.2.0"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/fetcher/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.0.31"
        },
        {
          "name": "@lemmaoracle/spec",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.0.30"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.29.0"
        },
        {
          "name": "agents",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.11.4"
        },
        {
          "name": "ramda",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.30.1"
        },
        {
          "name": "zod",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.24.0"
        },
        {
          "name": "@huggingface/transformers",
          "manifest": "packages/parser/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.8.0"
        },
        {
          "name": "onnxruntime-node",
          "manifest": "packages/parser/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.21.0"
        },
        {
          "name": "ramda",
          "manifest": "packages/parser/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.30.1"
        },
        {
          "name": "wasm-bindgen",
          "manifest": "packages/passthrough/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2"
        },
        {
          "name": "js-sys",
          "manifest": "packages/passthrough/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/passthrough/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/spec",
          "manifest": "packages/passthrough/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "ramda",
          "manifest": "packages/passthrough/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.30.1"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "ramda",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.30.1"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/roles/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/spec",
          "manifest": "packages/roles/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "snarkjs",
          "manifest": "packages/roles/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.6"
        },
        {
          "name": "@docknetwork/crypto-wasm",
          "manifest": "packages/sdk/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.35.0"
        },
        {
          "name": "@lemmaoracle/spec",
          "manifest": "packages/sdk/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@noble/ciphers",
          "manifest": "packages/sdk/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.0"
        },
        {
          "name": "@noble/curves",
          "manifest": "packages/sdk/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.8.0"
        },
        {
          "name": "@noble/hashes",
          "manifest": "packages/sdk/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.0"
        },
        {
          "name": "buffer",
          "manifest": "packages/sdk/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.0.3"
        },
        {
          "name": "poseidon-lite",
          "manifest": "packages/sdk/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.2.0"
        },
        {
          "name": "ramda",
          "manifest": "packages/sdk/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.30.1"
        },
        {
          "name": "snarkjs",
          "manifest": "packages/sdk/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.5"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/seal/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/spec",
          "manifest": "packages/seal/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/sdk",
          "manifest": "packages/trust402/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@lemmaoracle/spec",
          "manifest": "packages/trust402/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@noble/hashes",
          "manifest": "packages/trust402/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.0"
        },
        {
          "name": "poseidon-lite",
          "manifest": "packages/trust402/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.2.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 2,
        "merged_prs": 680,
        "open_issues": 1,
        "closed_ratio": 0.8,
        "closed_issues": 4,
        "closed_unmerged_prs": 29
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "aggre",
          "commits": 641,
          "avatar_url": "https://avatars.githubusercontent.com/u/1970283?v=4"
        },
        {
          "type": "User",
          "login": "yumemayu",
          "commits": 472,
          "avatar_url": "https://avatars.githubusercontent.com/u/33956553?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        },
        {
          "type": "User",
          "login": "cursoragent",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/199161495?v=4"
        }
      ],
      "contributors_sampled": 4,
      "top_contributor_share": 0.572
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.js"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock",
        "package-lock.json",
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 8,
            "reason": "binaries present in source code",
            "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": 9,
            "reason": "23 out of 24 merged PRs checked by a CI test -- score normalized to 9",
            "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": 1,
            "reason": "Found 3/30 approved changesets -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 5 contributing companies or organizations",
            "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": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "134 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "926478b2408863158384f4b3ee46507c79b9afc7",
        "ran_at": "2026-07-29T18:21:13Z",
        "aggregate_score": 4.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-29T17:06:46Z",
      "oldest_open_prs": [
        {
          "number": 671,
          "created_at": "2026-07-15T00:16:29Z",
          "last_comment_at": "2026-07-25T17:06:50Z",
          "last_comment_author": "aggre"
        },
        {
          "number": 715,
          "created_at": "2026-07-29T15:18:38Z",
          "last_comment_at": "2026-07-29T15:20:10Z",
          "last_comment_author": "cloudflare-workers-and-pages"
        }
      ],
      "last_merged_pr_at": "2026-07-29T17:02:29Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 678,
          "created_at": "2026-07-16T22:37:26Z",
          "last_comment_at": "2026-07-22T17:05:02Z",
          "last_comment_author": "aggre"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/lemmaoracle/lemma",
    "host": "github.com",
    "name": "lemma",
    "owner": "lemmaoracle"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 55,
      "inputs": {
        "security": 49,
        "vitality": 48,
        "community": 32,
        "governance": 59,
        "engineering": 85
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "at_risk",
        "name": "Vitality",
        "value": 48,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "commits_last_year": 1281,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 22
            },
            "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": "22/52 weeks with commits",
                "points": 15.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 22
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "1281 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 1281
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 32,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 1,
              "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": "1 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 66,
            "inputs": {
              "packages": [
                "@lemmaoracle/mcp",
                "@lemmaoracle/sdk",
                "@lemmaoracle/seal",
                "@lemmaoracle/spec",
                "@lemmaoracle/agent"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 8982
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "8,982 downloads/month across npm",
                "points": 52.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 8982,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 59,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 4,
              "top_contributor_share": 0.572
            },
            "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 57% of commits",
                "points": 9.6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 57
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "4 contributors",
                "points": 5.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 5 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "merged_prs": 680,
              "open_issues": 1,
              "closed_issues": 4,
              "issue_closed_ratio": 0.8,
              "closed_unmerged_prs": 29
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "80% of issues closed",
                "points": 37.4,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 80
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "680/709 decided PRs merged",
                "points": 36.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 680,
                      "decided": 709
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 3/30 approved changesets -- score normalized to 1",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "followers": 1,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "lemmaoracle",
              "public_repos": 8,
              "account_age_days": 163
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "1 followers of lemmaoracle",
                "points": 2.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1,
                      "login": "lemmaoracle"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "8 public repos, account ~0 yr old",
                "points": 7.8,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 8
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@lemmaoracle/mcp",
                "@lemmaoracle/sdk",
                "@lemmaoracle/seal",
                "@lemmaoracle/spec",
                "@lemmaoracle/agent"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "5 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 5,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "40 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 40
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 85,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": "eslint.config.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "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": "23 out of 24 merged PRs checked by a CI test -- score normalized to 9",
                "points": 18,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "ai-agents",
                "did",
                "provenance",
                "rag",
                "selective-disclosure",
                "trusted-web",
                "typescript",
                "verifiable-ai",
                "zero-knowledge-proofs",
                "zk"
              ],
              "has_wiki": false,
              "homepage": "https://lemma.frame00.com/",
              "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://lemma.frame00.com/",
                "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": "10 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 49,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 42,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 4.2
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6,
                "status": "partial",
                "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": "23 out of 24 merged PRs checked by a CI test -- score normalized to 9",
                "points": 2.2,
                "status": "partial",
                "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 3/30 approved changesets -- score normalized to 1",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 5 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "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.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "134 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "good",
            "name": "Dependency advisories",
            "note": "Matched the npm:@lemmaoracle/mcp@0.0.23 runtime dependency closure — what installing the published package pulls in — 198 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:@lemmaoracle/mcp@0.0.23",
                  "assessed": 198
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 76,
            "inputs": {
              "source": "osv",
              "advisories": 3,
              "affected_packages": 3,
              "assessed_packages": 198,
              "unassessed_packages": 0,
              "affected_by_severity": "high 2, moderate 1",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "3 affected: brace-expansion 2.1.2 (high 7.5), underscore 1.13.6 (high 7.5), @hono/node-server 1.19.17 (moderate 5.9)",
                "points": 7.5,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 3,
                      "packages": "brace-expansion 2.1.2 (high 7.5), underscore 1.13.6 (high 7.5), @hono/node-server 1.19.17 (moderate 5.9)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "1 advisory-carrying package(s) unaddressed past 90 days; oldest published 148 days ago",
                "points": 33.7,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 1,
                      "oldest": 148
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 198,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 77,
        "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.97,
              "agent_instruction_files": [
                ".cursorrules",
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 772
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".cursorrules, AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".cursorrules, AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "97 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 97,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock",
                "package-lock.json",
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "packages/agent/tsconfig.json",
                "packages/blog-article/circuits/tsconfig.json",
                "packages/canonical-sort/tsconfig.json",
                "packages/content/circuits/tsconfig.json",
                "packages/content/tsconfig.json",
                "packages/data-commitment/tsconfig.json",
                "packages/demo/tsconfig.json",
                "packages/feeds/tsconfig.json",
                "packages/fetcher/tsconfig.json",
                "packages/mcp/tsconfig.json",
                "packages/parser/tsconfig.json",
                "packages/passthrough/tsconfig.json",
                "packages/relay/tsconfig.json",
                "packages/sdk/tsconfig.json",
                "packages/seal/tsconfig.json",
                "packages/spec/tsconfig.json",
                "packages/trust402/tsconfig.json",
                "packages/web/tsconfig.json",
                "packages/x402/tsconfig.json"
              ],
              "agent_commit_share": 0.26,
              "toolchain_manifests": [
                "packages/agent/Cargo.toml",
                "packages/agent/normalize/Cargo.toml",
                "packages/canonical-sort/normalize/Cargo.toml",
                "packages/passthrough/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "packages/agent/Cargo.toml, packages/agent/normalize/Cargo.toml, packages/canonical-sort/normalize/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "packages/agent/Cargo.toml, packages/agent/normalize/Cargo.toml, packages/canonical-sort/normalize/Cargo.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "packages/agent/tsconfig.json, packages/blog-article/circuits/tsconfig.json, packages/canonical-sort/tsconfig.json, packages/content/circuits/tsconfig.json, packages/content/tsconfig.json, packages/data-commitment/tsconfig.json, packages/demo/tsconfig.json, packages/feeds/tsconfig.json, packages/fetcher/tsconfig.json, packages/mcp/tsconfig.json, packages/parser/tsconfig.json, packages/passthrough/tsconfig.json, packages/relay/tsconfig.json, packages/sdk/tsconfig.json, packages/seal/tsconfig.json, packages/spec/tsconfig.json, packages/trust402/tsconfig.json, packages/web/tsconfig.json, packages/x402/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/agent/tsconfig.json, packages/blog-article/circuits/tsconfig.json, packages/canonical-sort/tsconfig.json, packages/content/circuits/tsconfig.json, packages/content/tsconfig.json, packages/data-commitment/tsconfig.json, packages/demo/tsconfig.json, packages/feeds/tsconfig.json, packages/fetcher/tsconfig.json, packages/mcp/tsconfig.json, packages/parser/tsconfig.json, packages/passthrough/tsconfig.json, packages/relay/tsconfig.json, packages/sdk/tsconfig.json, packages/seal/tsconfig.json, packages/spec/tsconfig.json, packages/trust402/tsconfig.json, packages/web/tsconfig.json, packages/x402/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": "26 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 26,
                      "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": 81,
            "inputs": {
              "primary_language": "Astro",
              "largest_source_bytes": 120192,
              "source_files_sampled": 247,
              "oversized_source_files": 3
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Astro with type-check config (packages/agent/tsconfig.json, packages/blog-article/circuits/tsconfig.json, packages/canonical-sort/tsconfig.json, packages/content/circuits/tsconfig.json, packages/content/tsconfig.json, packages/data-commitment/tsconfig.json, packages/demo/tsconfig.json, packages/feeds/tsconfig.json, packages/fetcher/tsconfig.json, packages/mcp/tsconfig.json, packages/parser/tsconfig.json, packages/passthrough/tsconfig.json, packages/relay/tsconfig.json, packages/sdk/tsconfig.json, packages/seal/tsconfig.json, packages/spec/tsconfig.json, packages/trust402/tsconfig.json, packages/web/tsconfig.json, packages/x402/tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "packages/agent/tsconfig.json, packages/blog-article/circuits/tsconfig.json, packages/canonical-sort/tsconfig.json, packages/content/circuits/tsconfig.json, packages/content/tsconfig.json, packages/data-commitment/tsconfig.json, packages/demo/tsconfig.json, packages/feeds/tsconfig.json, packages/fetcher/tsconfig.json, packages/mcp/tsconfig.json, packages/parser/tsconfig.json, packages/passthrough/tsconfig.json, packages/relay/tsconfig.json, packages/sdk/tsconfig.json, packages/seal/tsconfig.json, packages/spec/tsconfig.json, packages/trust402/tsconfig.json, packages/web/tsconfig.json, packages/x402/tsconfig.json",
                      "language": "Astro"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "3/247 source files over 60KB",
                "points": 54.3,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 247,
                      "oversized": 3
                    }
                  }
                ],
                "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 crates package 'lemma-agent' from its registry",
    "Could not fetch npm package '@lemmaoracle/feeds' from its registry",
    "Could not fetch npm package '@lemmaoracle/roles' 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-29T18:21:33.394626Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/l/lemmaoracle/lemma.svg",
  "full_name": "lemmaoracle/lemma",
  "license_state": "custom",
  "license_spdx": null
}

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

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

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm.