Звіт у форматі JSON машиночитний
{
"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
}