Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 7780,
"has_wiki": false,
"homepage": null,
"languages": {
"C": 23464,
"Go": 889816,
"C++": 163640,
"CMake": 1627,
"Shell": 8914,
"Swift": 177182,
"Kotlin": 101085,
"Python": 117753
},
"pushed_at": "2026-07-22T01:48:02Z",
"created_at": "2026-05-12T11:21:00Z",
"owner_type": "Organization",
"updated_at": "2026-07-18T06:19:58Z",
"description": null,
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Go",
"significant_languages": [
"Go",
"Swift",
"C++"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "Fheyalabs",
"company": null,
"location": null,
"followers": 0,
"avatar_url": "https://avatars.githubusercontent.com/u/271052521?v=4",
"created_at": "2026-03-25T19:15:16Z",
"is_verified": null,
"public_repos": 1,
"account_age_days": 119
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.9.8",
"kind": "patch",
"published_at": "2026-06-25T15:21:59Z"
},
{
"tag": "v0.9.7",
"kind": "patch",
"published_at": "2026-06-25T00:47:19Z"
},
{
"tag": "v0.9.6",
"kind": "patch",
"published_at": "2026-06-24T21:02:47Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2026-06-14T15:42:10Z"
},
{
"tag": "v0.7.5",
"kind": "patch",
"published_at": "2026-06-03T00:50:42Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-05-31T11:07:59Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2026-05-30T23:00:22Z"
},
{
"tag": "v0.4.1",
"kind": "patch",
"published_at": "2026-05-28T17:09:01Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-05-28T14:22:17Z"
},
{
"tag": "v0.3.2",
"kind": "patch",
"published_at": "2026-05-19T11:41:20Z"
},
{
"tag": "v0.3.1",
"kind": "patch",
"published_at": "2026-05-19T06:37:55Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-05-19T05:48:46Z"
}
],
"recent_commits": [
{
"oid": "6290743865d53da7b8d28b5e10087fadae9869eb",
"body": null,
"is_bot": false,
"headline": "feat(transport): add websocket replay cursor",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-07-18T06:18:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "665facd97c1205e36be5a0210dd8a0dc77b4cb6f",
"body": null,
"is_bot": false,
"headline": "fix(transport): preserve raw inbound payloads",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-07-18T05:44:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bf51c9b1d02478a2a83416e63ed947672079c135",
"body": null,
"is_bot": false,
"headline": "feat(swift): expose encrypted BFV distance inputs",
"author_name": "Hardik",
"author_login": "grussdorian",
"committed_at": "2026-07-18T00:35:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "65f23ac9fc2cf6032d224156a1582518a1a465b1",
"body": null,
"is_bot": false,
"headline": "feat(bfv): add ciphertext-only blind fallback",
"author_name": "Hardik",
"author_login": "grussdorian",
"committed_at": "2026-07-17T23:48:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb119e692367cf16fb1b0dfa04e5db5db71e1b35",
"body": null,
"is_bot": false,
"headline": "docs: add encrypted input ranking example",
"author_name": "Hardik",
"author_login": "grussdorian",
"committed_at": "2026-07-17T22:00:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "241422057ab1a6a697fc78429b8729ff07369eb6",
"body": null,
"is_bot": false,
"headline": "release: prepare ares-core v0.9.13",
"author_name": "Hardik",
"author_login": "grussdorian",
"committed_at": "2026-07-17T21:54:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7111402436271edd24bdf322868c88a92a658ea3",
"body": null,
"is_bot": false,
"headline": "fix(phase): route keygen round-one messages",
"author_name": "Hardik",
"author_login": "grussdorian",
"committed_at": "2026-07-17T21:43:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5596735a3f36028ba1199edeeb5fb154a809c05a",
"body": null,
"is_bot": false,
"headline": "feat(ckks): accept encrypted distances",
"author_name": "Hardik",
"author_login": "grussdorian",
"committed_at": "2026-07-17T21:43:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f1e32863b6e8505e3a7fc97fe0e30ab95e73791",
"body": null,
"is_bot": false,
"headline": "feat(clients): encrypt chunked payloads",
"author_name": "Hardik",
"author_login": "grussdorian",
"committed_at": "2026-07-17T21:43:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "45e1b327002ea2fdb458888238160fffcdba0d05",
"body": null,
"is_bot": false,
"headline": "feat(ckks): fan out encrypted payload union",
"author_name": "Hardik",
"author_login": "grussdorian",
"committed_at": "2026-07-17T21:43:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb136cd3cb83bb11671a827dedbbf0fded82170b",
"body": null,
"is_bot": false,
"headline": "feat(cgo): support encrypted payload fusion",
"author_name": "Hardik",
"author_login": "grussdorian",
"committed_at": "2026-07-17T21:43:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9ffc4ac5d6619271ba79c32d794eb565e6141bec",
"body": null,
"is_bot": false,
"headline": "feat(crypto): expose OpenFHE global context release",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-07-04T12:02:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "01ce9a2c36821bb1409cdad58f89a9c5b7c5b552",
"body": null,
"is_bot": false,
"headline": "fix(crypto): clear OpenFHE eval keys on context close",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-07-04T11:51:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "180e363f82bcc096d5a8f39852c37a06b2b404ea",
"body": null,
"is_bot": false,
"headline": "docs: release ares-core v0.9.10",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-07-04T10:51:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5dcb3d6bf2dd9912228bac833b75de7bfc4d69b4",
"body": null,
"is_bot": false,
"headline": "feat(crypto): eval product sum with per-index refs",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-07-04T09:45:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c0fd87fa2d52183f526540cd5ef27567c4217b9d",
"body": "…en fix\n\nAdd ChunkedUnionScoreCKKSWithEvalSumRefs, the per-index (b-only / CRS-seeded)\ncounterpart of ChunkedUnionScoreCKKSWithConcurrency. The threshold eval-sum fold\nkeys arrive as per-index a/b vector refs (the wire-reduced keygen) instead of one\nmonolithic serialized key map; this reconstructs t\n[…]\nTestBOnlyUnionDeepCircuitRecovers\ncovers the full secure b-only union path; TestSingularPerIndexEvalSumSharedA pins\nthe shared-a invariant after an eval-mult round1 (the regression for the fix above).",
"is_bot": false,
"headline": "feat(crypto): per-index b-only eval-sum union scoring + shared-a keyg…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-29T23:36:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3ff0726855034fa78eaded380d8f222d7affb5fa",
"body": "…oothstep\n\nAn unset SelectorSchedule was defaulted to the 4-pass selector-sharpen\nschedule \"smoothstep5,smoothstep5,smoothstep5,smoothstep7\" in two places:\nthe Go fuse boundary (defaultStringGo in FullFusePayloadCKKS[WithContext]\nand ChunkedFusePayloadCKKS[WithContext]) and the native split_schedule\n[…]\n ring 32768 / depth 16, dim 128, n=6 / 5 candidates,\nreal EmbeddingGemma: union 6/6, >=2-recovered 6/6, redundancy_wrong 0/6,\n~106 s/cohort (vs ~136 s/cohort on the old ring-65536 / depth-23 circuit).",
"is_bot": false,
"headline": "fix(crypto): empty selector schedule is no-op, not a hidden 4-pass sm…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-25T15:21:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bf8ddd474a15333cd2fee118ebe9d5482cbb730d",
"body": "The retune was first tagged v0.9.6.1, which is a 4-part string and not a\nvalid Go-module version (the proxy only resolves vMAJOR.MINOR.PATCH).\nRelabel the changelog entry to 0.9.7 so the tag, release, and changelog\nagree and the module stays go-gettable.",
"is_bot": false,
"headline": "docs(changelog): label the family-diverse union retune as 0.9.7",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-25T00:46:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bc6608fe5d8fac2161ae26226ee54a0a34673b56",
"body": "The default union CKKSRing32KUnionV1 shipped three logistic/selector\nlanes: ss5 (selector), logi_g4_b3_d13, logi_g3_b6_d13. A 100-cohort\nfull-Fheya-score sweep that scored seven candidate lanes on the same\ncohorts (then computed every lane-subset's union post-hoc) shows the\nrecovery ceiling is set b\n[…]\nCKKSRing32KUnionV1 pick up\nthe better lanes automatically.\n\nValidation: wiki summaries/ares-core-v0-9-5-ckks-bfv-validation.md\n(2026-06-25 section); run artifacts testbench/v28/runs/ckks_100_lanes7.*.",
"is_bot": false,
"headline": "feat(profiles): diversify default CKKS union by comparator family",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-25T00:43:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fb15cdc882e84d69b09cf46ab98f2c2bf6f81ff0",
"body": "ChunkedUnionScoreCKKS ran the union comparator lanes sequentially against\none shared CKKS context. This adds ChunkedUnionScoreCKKSWithConcurrency to\nrun those lanes concurrently; ChunkedUnionScoreCKKS now delegates to it with\nconcurrency 1 so existing callers are unchanged.\n\nThe shared context made \n[…]\necision 0/200, all_closed_fallback_to_bfv\n5/200 (the 5 tightest near-ties, margins <= 0.0017), peak RSS 6.4 GiB.\n\nTests: TestClampUnionConcurrency, TestUnionComparatorRequestCanUsePreinsertedEvalKeys.",
"is_bot": false,
"headline": "feat(crypto): concurrent comparator fanout with preinserted eval keys",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-24T20:56:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0a9cba55d9f77460c1a403c616caf9e510b09db9",
"body": null,
"is_bot": false,
"headline": "feat(crypto): add BFV fallback and chunked CKKS union",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-23T21:50:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "794b8eae5660eeedeeba1dd8a21c61f698ba4287",
"body": null,
"is_bot": false,
"headline": "perf(openfhe): stream per-index eval-sum keys into scoring",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-18T18:50:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c73ed6a4b231c18c8d886b5f31f393aaf56229da",
"body": "generatePerIndexEvalSumKey and generatePerIndexEvalSumShare now return\nRotKey handles directly instead of serialized Data. This eliminates\nthe serialize->deserialize roundtrip in the Mac client keygen loop.",
"is_bot": false,
"headline": "perf(swift): add handle-returning per-index eval-sum keygen methods",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-18T16:28:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dd6a8abbdfa32ef88645f89783e128e8f4d4e235",
"body": "The a-vectors are byte-identical across parties (proven by\nbonly_keygen_prototype), but combineEvalSumPerIndexLazy was resolving\nand deserializing them fresh for each party × each index: 102\nredundant 45 MB downloads + 102 redundant C++ deserializations for a\n6-party × 17-index combine.\n\nAdd a two-l\n[…]\nim=128 ring=2^16:\n- 85 fewer artifact downloads (~3.8 GB)\n- 85 fewer C++ deserializations (~3.8 GB of DCRTPoly work)\n- Combine latency ~6× faster\n\nNo wire change, no client change, no protocol change.",
"is_bot": false,
"headline": "perf(crypto): cache A-vectors in combineEvalSumPerIndexLazy",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-18T16:16:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "996353a06bd7563dd3dd4eb341355d608d013163",
"body": null,
"is_bot": false,
"headline": "feat(crypto): support b-only per-index eval-sum refs",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-18T10:58:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7520f926c1370a656d38a2c59874f8c3f5ebd0b0",
"body": null,
"is_bot": false,
"headline": "feat(crypto): lazily combine per-index eval-sum refs",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-17T22:16:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c568d0797de645c0d7a4f4c46bc2255a8169e1c",
"body": null,
"is_bot": false,
"headline": "feat(crypto): combine eval-sum shares per index",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-17T21:50:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dbdf968b9fd8a3a539225eda8854c1e9d89cef2c",
"body": "- C++ GeneratePerIndexEvalSumKey / GetMinimalRotationIndices\n- Swift CryptoContext wrappers for per-index (never-merged) keygen\n- MacClient emits eval_sum_round1_keys array instead of merged blob\n- Server orchestrator accepts both legacy and per-index format\n\nRing=2^16 still tight on Mac due to base64 accumulation in JSON.\nServer+homelab CI handles ring=2^16; Mac client validated at ring=2^15.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift): per-index rotation keygen — wire format change",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-17T13:34:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "afef86e22c9aaccc2d50257cc22247479f0f9746",
"body": "…scoring\n\nARESFullFusePayloadCKKS now takes an optional CryptoContextHandle as first\nparameter. When non-NULL, the provided context is reused instead of creating\na new one (~4 GB savings at ring 2^16). When NULL, behavior is unchanged.\n\nAlso: FullFusePayloadCKKSWithContext Go wrapper, concatCandidat\n[…]\nCiphertexts\nhelper.\n\nThis is the last piece for ring=2^16 e2e testing on 16 GB Mac — one context\nshared across keygen, eval-key generation, and scoring.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(crypto): add FullFusePayloadCKKSWithContext — reuse context for …",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T21:01:45Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0701d0d558beaaae6af71b1bc4e262987991a53f",
"body": "…shared context\n\nFinalize now only frees the CKKS context if ownsCtx=true.\nNewEvalSumIncrementalFold sets ownsCtx=true (owns its context).\nNewEvalSumIncrementalFoldWithContext sets ownsCtx=false (caller owns).\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(crypto): EvalSumIncrementalFold ownsCtx flag — don't double-free …",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T20:40:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c06f4a0dcdc60fe684bd7f87ec62eb91c40f75f1",
"body": "Adds StreamedEvalSumKeyGenLead and StreamedEvalSumKeyShare in C++,\nplus Go wrappers via shared context. These generate rotation keys one\nindex at a time, merging into an accumulator, so peak C++ RAM is\nbounded to a single rotation key (~90 MB at ring 2^16) rather than\nthe full map (~1.5 GB for 17 minimal indices).\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(crypto): streamed rotation-key gen — one index at a time",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T20:30:11Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6ae55226ec4051dfa535812cbc005c196975e49f",
"body": "…otocol\n\nAdds CryptoContext type + NewCryptoContext/Close, plus WithContext\nvariants of EvalKeyRound1Lead, EvalKeyRound1Participant,\nEvalKeyRound2Participant, CombineEvalMultSwitchShares,\nNewEvalSumIncrementalFold, and CombineEvalKeyRound2.\n\nCallers create one context (~3 GB at ring 2^16) and reuse it across\nall eval-key operations, instead of paying per-call context allocation.\nThis is load-bearing for ring=2^16 on 16 GB machines.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(crypto): add shared-context WithContext variants for eval-key pr…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T20:26:33Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "433e77cb721fdcad580f8488d2d0b2012c0c0c90",
"body": "Lets callers combine eval-mult shares independently when eval-sum\nshares have been folded incrementally via EvalSumIncrementalFold.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(crypto): add standalone CombineEvalMultSwitchShares",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T20:21:48Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "21d884a757b838f4ef66249e9dcff3dd5355a874",
"body": "Adds NewEvalSumIncrementalFold / Fold / Finalize so callers can fold\neval-sum shares one at a time, nil-ing each share's []byte immediately.\nPeak Go-side RAM stays at accumulator + one share instead of all N.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(crypto): expose step-by-step incremental eval-sum fold API",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T20:20:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "951cfa14af1665511bed4cb333dc02bf51ad4756",
"body": "Round 1 combine deserialized every eval-sum (rotation) share at once before\nfolding, so at ring 2^16 it held all N rotation-key maps resident together (the\nmulti-GB peak). It now folds via combineEvalSumIncremental: seed with the lead\nbase, then deserialize/fold/free one participant share at a time,\n[…]\n. Output is byte-identical (the incremental round-trip\ntest plus the distributed/threshold keygen tests confirm it), so every consumer\nof CombineEvalKeyRound1 gets the lower-RAM combine transparently.",
"is_bot": false,
"headline": "refactor(crypto): CombineEvalKeyRound1 folds eval-sum incrementally",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T18:27:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fe40062eeb936b3cfbbc98e6c57dc5ee9469fe99",
"body": "…ime)\n\nCombineEvalSumKeys folds rotation-key shares one at a time but requires every\nshare deserialized and resident at once, so combining N shares at ring 2^16\nholds N full rotation-key maps simultaneously (multi-GB peak). EvalSumCombineStart\nplus EvalSumCombineFold expose the fold incrementally: s\n[…]\ns as\nserialized bytes. A round-trip test confirms the incremental joint key is\nbyte-identical to the all-at-once CombineEvalSumKeys for the same share order\n(lead base first, then participant shares).",
"is_bot": false,
"headline": "feat(crypto): incremental eval-sum key combine (fold one share at a t…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T18:27:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a465dba34519d322052298ef8c9d0f2cb0308388",
"body": "The Task 1 pure-Go files (minimalRotationIndices derivation + test) were\ncreated without build tags per the implementation plan, but this breaks\nuntagged go build when cgo is enabled by default: Go's toolchain sees\nopenfhe_wrapper.cpp in the same directory with no file importing \"C\"\n(all such files \n[…]\nvation math is still\nunit-testable with -tags openfhe, consistent with every other Go file in\nthis package. Non-OpenFHE consumers can use CGO_ENABLED=0.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(crypto): add openfhe build tag to minimal rotation key files",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T18:25:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b91be9cbaf18b731aaa1fc3505b1bd8e94fc7aea",
"body": null,
"is_bot": false,
"headline": "feat(crypto): streamed rotation-keygen helpers honor minimal mode",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T18:13:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6f025ad8a424665ac1cdf4a078865d6d56ad8734",
"body": "…scorer",
"is_bot": false,
"headline": "feat(crypto): minimal-mode dot fold (rotate-and-add) in full payload …",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T18:09:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "196f3d3516396c5e967abca2ea9102293219791d",
"body": "…d index set)\n\nAdd a per-context flag that, when set, replaces the full-batch EvalSumKeyGen +\nbroadcast EvalAtIndexKeyGen with a compact at-index set derived from two\ncaller-supplied dimensions: positive power-of-two shifts < profile_dim (dot-product\nfold) and negative power-of-two shifts < payload_\n[…]\nerifies that a 2-party minimal eval-sum\n share (profile_dim=128, payload_slots=640) is < 0.75x the full-batch share for\n the same ring — confirming the key-count reduction is reflected in wire size.",
"is_bot": false,
"headline": "feat(crypto): opt-in minimal rotation keygen (EvalAtIndex over derive…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T18:03:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1844f47519ad5f619c023246ed7c496ba18fbede",
"body": "…erized keygen",
"is_bot": false,
"headline": "feat(crypto): minimal rotation-index derivation for dimension-paramet…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-15T17:26:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d7ee791dee9c619319256c3c93606c9a393362f",
"body": "Highlights since v0.7.5:\n\n- Single-key (non-threshold) CKKS reverse auction MVP: SingleKeyEncrypt and\n SingleKeyAuctionServerEnc, n=5 composite-key assembly at ring 2^14/depth 4,\n a server/rider split that binds the driver identity, and singleKeyGen() plus\n decryptSingle() in the Swift and Kotlin\n[…]\nduct.\n- CI: the hosted openfhe lane runs with -short so it stops being SIGTERM-killed\n on the keygen benchmarks (red since that suite landed); it is green again.\n\nSee CHANGELOG.md for the full entry.",
"is_bot": false,
"headline": "docs(release): v0.8.0 — single-key reverse auction + b-only keygen wire",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-14T15:41:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "94e95c75d99b550d21d03372aa72f8a2d302e691",
"body": "…chmarks\n\nThe hosted-runner openfhe job has failed on every push since 1dd2ba8 (the\nthreshold-CKKS keygen amortization suite). That commit added five\nmemory-bound benchmarks guarded by testing.Short(), plus a separate\nkeygen-bench.yml lane to run them on a high-RAM self-hosted runner, but the\nregula\n[…]\n every correctness test running. Locally the full\n`go test -tags openfhe -short ./...` suite is green in ~32s. The\nkeygen-bench lane invokes the benchmarks by name without -short, so it is\nunaffected.",
"is_bot": false,
"headline": "ci(openfhe): run the regular suite with -short to skip the keygen ben…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-14T15:34:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9e8ba11f9ae634d2cd8eb2e9facafe4f5bd0929c",
"body": "…helper\n\nPython talks to OpenFHE through the Go contract-helper over IPC rather than\na native binding, so the b-only rotation-key optimization is exposed as two\nhelper ops instead of a direct C call. A participant uploads only its\nb-vectors; the shared a-vectors (byte-identical across parties under \n[…]\nepted it silently. The test fixture now sets\nARES_FHE_ALLOW_INSECURE for the helper subprocess; the wrapper stays\nsecure-by-default (HEStd_128_classic) for production, which uses real ring\ndimensions.",
"is_bot": false,
"headline": "feat(python): wire b-only rotation-key split/reconstruct through the …",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-14T15:19:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0d8a2a2836cce04b88683dcb6de63aa646929ce7",
"body": "…ift and Kotlin\n\nThe native wrapper (symlinked into both clients) gained the b-only\nrotation-key functions; expose them in the Swift and Kotlin FHE bindings\nso a participant can serialize only its b-vectors, send or seed the\nshared a once, and have the combiner rebuild the full share from the\nshared\n[…]\nacross parties,\nb-only is smaller, the rebuilt (a,b) match the originals). Kotlin: the\nthree JNI bindings plus NativeFHE external declarations. The native JNI\nlibrary builds and the Swift test passes.",
"is_bot": false,
"headline": "feat(clients): wire b-only rotation-key serialize/reconstruct into Sw…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-14T11:05:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ee9b125c280416247fc4dd8bd3915c3f468154d8",
"body": "The multiparty rotation-key 'a'-vectors are byte-identical across parties\n(derived from shared public randomness), so each party only needs to\ntransmit its 'b'-vectors; the combiner rebuilds the full share from the\nshared 'a' plus the party 'b'. This halves the per-party rotation-key\nupload with no \n[…]\nhecks the 'a' vectors are shared across parties,\nthe b-only payload is smaller than the full share, and the rebuilt\nshare's (a,b) match the originals byte for byte (50 percent saved at the\ntest ring).",
"is_bot": false,
"headline": "feat(crypto): b-only rotation-key wire (serialize a/b + reconstruct)",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-14T10:42:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "369ca58ecae624e51df3e32d3be7aabc98072f0d",
"body": null,
"is_bot": false,
"headline": "fix(swift-fhe): correct extension braces in Decrypt.swift",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-08T17:10:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "71b20d4ad90f13b1e329581d0e4a15c75be235df",
"body": null,
"is_bot": false,
"headline": "chore: add rideshareswift .build to gitignore",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-08T17:07:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fad3548d1666e8927b2f350ee80e2338685b69e5",
"body": "Adds AresClientFHE (with COpenFHEBridge) to the products array so external\npackages like rideshareswift can depend on it.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift): expose AresClientFHE as library product",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-08T17:07:25Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ca6576df463984999bf2271489cf88cdb0ade90e",
"body": "…ty CKKS\n\n- jni_openfhe.cpp: 2 new JNI bridge functions (singleKeyEvalMultKeyGen, decryptSingle)\n- NativeFHE.kt: 2 new external declarations\n- CryptoContext.kt: singleKeyGen() + decryptSingle() methods\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(kotlin-fhe): add singleKeyGen() + decryptSingle() for single-par…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-08T17:02:15Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f9a009ae9f65a914836af231655dd1ed4cdd8fd6",
"body": "…y CKKS\n\n- Keygen.swift: singleKeyGen() calls keyGenFirst() + SingleKeyEvalMultKeyGen\n- Decrypt.swift: decryptSingle() wraps C function DecryptSingle for direct\n single-key decryption (no threshold fusion)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift-fhe): add singleKeyGen() + decryptSingle() for single-part…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-08T17:00:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3e800ab1434da37add343e1ce912d54cc318f1bb",
"body": "…-price auction\n\nAdd two pure-Go bridge functions so bidders can encrypt their own price locally\nbefore submission; the server receives pre-encrypted bid ciphertexts and never\nsees plaintext prices. SingleKeyEncrypt wraps a single scalar into a 4-slot\nCKKS ciphertext. SingleKeyAuctionServerEnc is a \n[…]\nld tag) verifies\nfor n in {3,4,5} that enc-path winner == plaintext-path winner == true economic\nargmin; passes at ring 2^15/depth-5 in ~3.7 s.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cgo): add SingleKeyEncrypt + SingleKeyAuctionServerEnc for blind…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-04T23:09:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "296b44d1c4ad4db9ddf837ceb5807fd3ce9dd489",
"body": "- singlekey_argmin_test.go, tiebreak_test.go: superseded by the new\n singlekey_auction_test.go (server/rider split + bidirectional signing)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(cgo): consolidate single-key auction tests, remove superseded files",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-04T22:40:58Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "53b86073033e1396ed2925dec956ab5f7abd61da",
"body": "…binding\n\nBREAKING: SingleKeyAuctionFull replaced by two functions:\n\n- SingleKeyAuctionServer(params, pk, bids...) → encrypted masks [][]byte\n Server-side: takes rider's PUBLIC key only, never sees sk.\n Returns serialized encrypted mask ciphertexts — server CANNOT decrypt.\n\n- SingleKeyAuctionDecry\n[…]\nhost winners are detected and rejected.\n\nVerified n=2..9 at ring 2^15/depth 5 (128-bit secure):\n n=9: winner=0 masks[0]=0.010 sep=0.002 sig=OK\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(cgo): SingleKeyAuction server/rider split + driver identity …",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-04T22:02:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4884e3f60720e387e5542bac80da44f15504e577",
"body": "Two optimisations to fit n=5 (rider+4 cabs) at ring 2^14/depth 4:\n\n1. Merged negate/scale into single EvalMultConst (1 level instead of 2)\n in SingleKeyAuctionFull key assembly. The combined coefficient\n -scale*K/span is applied in one level-conscious multiply.\n\n2. Balanced product tree in EvalA\n[…]\n12.00\n\nBinding via lineage commitment (plaintext lookup of winner's bid).\nShared secret = SHA256(nonce[winner] || sessionID) for OTP/phrase/QR.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cgo): n=5 full composite key assembly at ring 2^14/depth 4",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-04T21:12:40Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4731563cb860c3d094ee898a33e480499bf1221d",
"body": "New C ABI primitives (openfhe_wrapper.{h,cpp}):\n- SchemeSwitchingArgmin: CKKS→FHEW exact argmin via EvalMinSchemeSwitching\n (wired but deferred — needs depth >= 12 internally)\n- SingleKeyEvalMultKeyGen: generate eval-mult key for single-party context\n- DecryptSingle: direct single-key Decrypt (no t\n[…]\n — incompatible with ring 2^14\n- All mask values show correct argmax ordering; winner mask always strictly\n largest even at epsilon=0.001 gaps\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cgo): single-key CKKS reverse auction — full MVP flow",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-04T21:01:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b2751448d1d11a09a1383238a139fd8a228e699f",
"body": "The self-hosted runner has no C++ build toolchain (cmake not found) and per-run\nsource builds are the wrong model for a persistent box. Detect the provisioned\nOpenFHE install (lib + headers) and point cgo at it; fail with guidance if absent.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci(keygen-bench): use the runner's existing OpenFHE instead of building",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-04T00:11:47Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1dd2ba83d3500eb214ef99fc6487853adf7d8a72",
"body": "…ded keygen\n\nMeasurement suite (openfhe-gated, benchmarks skipped under -short) backing\nthe session-key amortization analysis, plus the bridge primitives it exercises:\n\n- keygen stage profile (CPK / eval-key round-1 / combine / decrypt) + sizes\n- resident vs byte-path combine (8-23x: the cost is (de\n[…]\n.yml — a manual\n(workflow_dispatch) lane for the heavy depth-30/2^17 rows on a high-RAM\nself-hosted runner; regular CI stays on hosted runners.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "bench(crypto): threshold-CKKS keygen amortization suite + memory-boun…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-03T23:43:46Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "aeca812095f79b43308cea0dfa732ae674bb8c5c",
"body": "Adds the Swift (SwiftPM) and Kotlin/Android (Gradle) client libraries —\nprotocol-crypto (onion/lineage/wire/signing), threshold-CKKS FHE over\nthe canonical openfhe_wrapper bridge, WebSocket transport, and\nclient-side ARES-BC — proven by local cross-language e2e. CKKS contexts\nare now secure-by-default; Kotlin builds pin the Gradle daemon to JDK 17.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(release): v0.7.5 — Swift + Kotlin ARES client libraries",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-03T00:49:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "68c3b335bd1d28bf198a0a8d6aef77080cdf5347",
"body": "The bundled Kotlin compiler (KGP 2.0.21) crashes parsing the Java\nversion when run on a host JDK that postdates it (e.g. JDK 26:\nIllegalArgumentException: 26.0.1). jvmToolchain(17) only sets the\ncompile target/jdkHome; the Kotlin compile daemon still inherited the\nGradle daemon's JVM. Pin the Gradle\n[…]\nRU).\n\nFresh clean build verified: ares-client recompiles + all ares-client-fhe\ntests run (0 skipped, 0 failures) without the JDK-version crash.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "build(kotlin): pin Gradle daemon to JDK 17 for reproducible fresh builds",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-03T00:47:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "caf9c9f6bc799d736c7b0338458a10aef5587b2b",
"body": "The canonical OpenFHE bridge created CKKS contexts with HEStd_NotSet,\nsilently disabling 128-bit security enforcement. Default to\nHEStd_128_classic so an under-provisioned ring (too small for the\nrequested multiplicative depth) is rejected at context creation.\n\nTests and local dev that deliberately \n[…]\np; FHE tests reparented\n- Kotlin: ares-client-fhe test task sets the env\n- e2e: lib.sh + boundcheck.sh export the opt-out (reduced local rings)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(crypto): CKKS contexts secure-by-default (HEStd_128_classic)",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-03T00:32:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b50de08383a202238018f3170b51fc38ac2308bd",
"body": "Task 1 — challenge hook fix: broadcast all check CTs+commitments to each\nparty (boundcheck.Exit fuses N-of-N per-ciphertext quorum).\n\nTask 2 — Swift boundcheck flow: two-phase concurrent-submit-then-serial-FHE\nto avoid deadlock; partial-decrypt the real enc_check from the challenge\n(not the raw enc_\n[…]\nTTLED, all participate.passed==true\n- violation → server flags inflated party, session aborts\n- tamper → client implicit check passed==false\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(bc-e2e): cross-language ARES-BC e2e (Swift+Kotlin) — 3 modes green",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T18:53:41Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "db8c889ee42297e7d806d39f99a2e4a36e328120",
"body": "…tments\n\nThe merged hook unicast each party only its own enc_check, but\nboundcheck.Exit fuses an N-of-N quorum per ciphertext — every party\nmust partial-decrypt every check CT. With per-party-only challenges,\nall senders get flagged as withholding.\n\nNow broadcasts the full {\"checks\":{...},\"commitments\":{...}} map\nto each participant so each can produce the complete partial map.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(bounded_admission): challenge hook broadcasts all check CTs+commi…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T16:05:07Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2bfa8cb71bfe232e1057d2abb78711dff18c6517",
"body": "…pant (implicit pass/fail)\n\nBoundCheckParticipant in ares-client-fhe: implicit commitment verify\n(SHA256(enc_check||SHA256(enc_x)||session_id), matches the Go boundcheck phase\n+ the Swift twin) + partial-decrypt; app sees only BoundCheckResult{passed}.\n3 tests (commitment-matches-Go native-free + pass-on-correct + fail-on-tamper).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge feat/androidB-B3c-kotlin-bc: Kotlin client-side ARES-BC partici…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:57:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e965820a7182ac119cd6905460913df128b826e1",
"body": "…E-interop e2e\n\nares-smoke gains the auction subcommand (AuctionFlow mirrors Swift): local\nN-party keygen + eval-mult-key rounds + encrypt + partial-decrypt via the\nJNI FHE module, pre-shared keys seeded over admin attrs. clients/kotlin/e2e/\nauction.sh delegates to the shared harness (ARES_CLIENT_CM\n[…]\nath), local Go sealed_bid_auction server at shallow depth 12/2048.\nProves Kotlin-serialized CKKS interop with the Go helper -> AUCTION_SETTLED.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge feat/androidB-B2-kotlin-auction: Kotlin auction flow + local FH…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:57:08Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "cf3b27ecd56a4b37eba39459322cf6deba655f73",
"body": "…rness\n\n- AuctionFlow.kt: N-party threshold keygen, eval-mult-key 2-round protocol,\n scalar-bid encrypt, pre-computed partial decrypts, pre-shared key seeding,\n concurrent per-bidder WS flow matching the Swift L3 auction e2e exactly.\n- Wire 'auction' subcommand in Main.kt.\n- e2e/auction.sh: builds\n[…]\negates to shared\n clients/swift/e2e/auction.sh via ARES_CLIENT_CMD with -Xmx2g.\n- ares-smoke/build.gradle.kts: add ares-client-fhe dependency.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(kotlin-smoke): auction flow (mirrors Swift AuctionFlow) + e2e ha…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:53:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5ab6f3278762b0a613a2e4afc2027b8ed3fa1d4e",
"body": "… commitment verify)\n\n- BoundCheckParticipant.kt: implicit commitment verify + partial-decrypt.\n commitment = SHA256(enc_check || SHA256(enc_x) || session_id) matches Go\n byte-exact from pkg/ares/phase/boundcheck/phase.go and the Swift participant.\n- BoundCheckResult: pass/fail verdict + partial d\n[…]\ndCheckParticipantTest: commitment-matches-Go (pure SHA-256, no FHE),\n pass-on-correct, fail-on-tampered-enc-check (tiny 1024/depth-4 context).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(kotlin-fhe): client-side ARES-BC participant (implicit pass/fail…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:51:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "eb51797abd096b3e8ab0f77ec5ff7d62c7af6e74",
"body": "… (implicit pass/fail)\n\nBoundCheckParticipant in AresClientFHE: implicit commitment verify\n(SHA256(enc_check||SHA256(enc_x)||session_id), matches the Go boundcheck phase)\n+ partial-decrypt, app sees only BoundCheckResult{passed}. 3 tests; Swift suite 37/37.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge feat/androidB-C-swift-bc: Swift client-side ARES-BC participant…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:39:47Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b15c7481f037241673c064c8ffd70f490b2e251e",
"body": "…rver + per-session-handle affordance\n\nAdditive boundcheck affordance (per-session ContextHandle/fuse from SessionContext\nfor shared-runner session-services; construction-time still wins) + a runnable\nexamples/bounded_admission session-service (Invite->Keygen->SubmitInput->boundcheck->Settle)\nwith a PostDispatchHook unicasting enc_check+commitment. go build/test/vet green.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge feat/androidB-B-boundcheck-server: ARES-BC bounded_admission se…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:39:47Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9f9a4665cfdbe6e09646a647505b40a2826d57c2",
"body": "…al openfhe_wrapper\n\nares-client-fhe module + host-native JNI .dylib (jni_openfhe.cpp + CMake +\nbuild-native.sh) doing real threshold CKKS; AutoCloseable+Cleaner handles;\nfull surface mirroring Swift AresClientFHE; threshold round-trip + 17.0625\nsmoke port + eval-key rounds + serialization tests (local, system OpenFHE 1.5.1).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge feat/androidB-A-kotlin-fhe: Kotlin FHE via JNI over the canonic…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:39:47Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f78aa266f1ade0c623eb0265f35f0835478542a5",
"body": "… add -A; gitignore build/\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(kotlin-fhe): drop stray clients/python/build artifacts from git…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:38:34Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7cae0a99c4f3f1612836de283b79104f90fa9504",
"body": "…mismatch test removed\n\n- CMakeLists.txt: manual JDK detection replacing find_package(JNI) to support JDK 21+ flat layouts\n- build-native.sh: auto-detect JAVA_HOME\n- Fixed symlink depth for openfhe_wrapper (3 levels up)\n- Removed ctxMismatchDeserializeThrows: OpenFHE 1.5.1 does not validate ring-dim at deserialization time\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(kotlin-fhe): JNI CMake manual JDK detection, symlinks fixed, ctx-…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:31:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "77f3953e066b376c5b90802de07e266b83acc75b",
"body": "…commitment verify)\n\n- BoundCheckParticipant.swift: implicit commitment verify + partial-decrypt.\n commitment = SHA256(enc_check || SHA256(enc_x) || session_id) matches Go\n byte-exact from pkg/ares/phase/boundcheck/phase.go.\n- BoundCheckResult: pass/fail verdict + partial decrypt blob.\n- BoundCheckParticipantTests: pass-on-correct, fail-on-tampered-enc-check,\n commitment-matches-Go-algorithm.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift-fhe): client-side ARES-BC participant (implicit pass/fail …",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:22:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3bec3d4b8c1512a3a7f6a40d4f7117dc6ba54ae3",
"body": "… affordance\n\nB0: Additive per-session handle/fuse fallback in boundcheck.Phase.\n- CtxBoundCheckHandle / CtxBoundCheckFuse context keys (server-set via trigger).\n- Enter/Exit resolve handle/fuse from context when construction-time is nil.\n- Construction-time wins; existing NewPhaseWithCrypto callers\n[…]\nefaultContractParams + fhecalib.\n- crypto_stub.go: no-op stub for tests.\n\nB3: README documenting state arc, message types, commitment contract.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(bounded-admission): ARES-BC example with per-session handle/fuse…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:20:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b3d73e00649d6917a45ca19ac0a061335e146ba9",
"body": "…he_wrapper\n\n- JNI bridge (jni_openfhe.cpp) covering every C ABI function\n- CMakeLists.txt, build-native.sh build infrastructure\n- NativeFHE.kt external declarations\n- AutoCloseable+Cleaner handle types (FheHandle, PublicKey, SecretKeyShare,\n Ciphertext, EvalMultKey, RotKey)\n- CryptoContext: keygen\n[…]\nrounds + EvalMult,\n serialization round-trips + ctx-mismatch rejection\n- assumeTrue(NativeFHE.loaded) so tests skip gracefully when lib absent\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(kotlin-fhe): complete Kotlin FHE/JNI module over canonical openf…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T15:16:48Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "11dc7e1ba35c009178d35c5d94e931b13132fab7",
"body": "…1 crypto + L3 transport, voting interop)\n\nKotlin/JVM mirror of the Swift client's L1 (SC-2 onion, SC-10 lineage DAGNode,\nv2 WSMessage frame, device signing) + L3 transport (OkHttp Session/AdminClient/\nOrchestrator/GossipParticipant) + an ares-smoke CLI. No FHE/JNI (the voting arc\nis pure crypto). B\n[…]\nly additive (clients/kotlin only);\npackage ares.client (fheya-free). FHE (L2/JNI) + auction + client-side ARES-BC\n= Android-B + Swift backport.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge feat/kotlin-client-androidA: Kotlin/Android client Android-A (L…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T11:30:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5806b4ec10e48851664c088848c6dba9db413549",
"body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(kotlin): Android-A README + final gate",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T11:27:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "169cfac418a77130111d7d7d2184420ca2fcdcc1",
"body": "…nion+lineage interop green)\n\nAdds the ares-smoke CLI module and VotingFlow for Android-A:\n- clients/kotlin/ares-smoke/build.gradle.kts: fat-jar target with signed-JAR\n exclusions (META-INF/*.SF/DSA/RSA/EC) so BouncyCastle merges cleanly\n- clients/kotlin/ares-smoke/src/.../Main.kt: CLI dispatcher (\n[…]\ndelegates to shared harness\n\nvoting e2e exit code: 0 (all 3 voters peel, slot.submit lineage verifies,\nsession reaches terminal CLOSED state)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(kotlin): ares-smoke CLI + voting onion-shuffle + lineage flow (o…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T11:23:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d8da3651206a9dfe054d6612784636b029390b0c",
"body": "…+ GossipParticipant\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(kotlin): L3 transport — OkHttp Session/AdminClient/Orchestrator …",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T11:14:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5a5df56d1b30a3f3614c6fbdf53a9d89bfaa1929",
"body": "…auth token\n\nAdds WireFrame (outbound v1/v2 frame encoder with inlined payload and\nsnake_case DAGNode), Signing (sorted-keys canonical JSON, Ed25519 device\nsign, HMAC-SHA256 auth-token), and pinned-vector tests (13/13 pass).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(kotlin): v2 WSMessage frame + canonical JSON + device signing + …",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T11:07:36Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a2d172edb770185d8b06a890aa2811c83294eaf5",
"body": "…GCM)\n\nImplements Onion.build/peelBatch mirroring the Swift reference:\nephemeral X25519 → HKDF-SHA256(info=\"ares_onion_v1\") → AES-256-GCM;\nwire = ephPub(32)||nonce(12)||ct||tag(16); selfMemo identity by byte-match.\n4 OnionTest cases pass including N=4 party positional round-trip.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(kotlin): SC-2 N-layer onion ECIES (BC X25519/HKDF + JCA AES-256-…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T11:03:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4e93ab0a62ad18de28023c4908aa23bb17086793",
"body": "…te-parity (signature included)\n\nImplements Lineage.buildSlotNode in clients/kotlin mirroring the Go/Swift byte layout\n(SHA-256 node hash, lp-framed fields, lex-sorted parents, Ed25519 via Bouncy Castle).\nAdds LineageVectorsTest + hand-rolled MiniJson parser; both golden vectors reproduce all\nsix fields — producer, payload_hash, node_hash, signing_msg, signature, algorithm —\nbyte-for-byte.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(kotlin): SC-10 lineage DAGNode + buildSlotNode; golden-vector by…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T10:53:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f224e4f76f1a2c7c32b6d1e481dbedfba7626f65",
"body": "Gradle 9.5.1 wrapper (JDK 26 compat; plan spec'd 8.10 but 8.x predates JDK 26 support in bundled Kotlin compiler). ByteUtilTest: 3/3 pass. Both modules build.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(kotlin): ares-kotlin-client Gradle scaffold + ByteUtil",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T10:40:26Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "eb536fd02654289c3cb374b637a3b04fe933d37c",
"body": "…anguage e2e)\n\nWS transport (AresTransport: Session/AdminClient/Orchestrator/GossipParticipant,\nFoundation-only) + AresSmoke CLI (auction/voting, gated ARES_OPENFHE) + a\nclient-agnostic e2e harness (clients/swift/e2e, ARES_CLIENT_CMD seam for the\nfuture Kotlin/Android client). Proves cross-language \n[…]\nssed\nSC-10 verification (now routed via HandleLineageMessage) + an opt-in\nPostDispatchHook. L1/L2 untouched bar a DAGNode Sendable conformance.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge feat/swift-client-l3: Swift ARES client L3 (transport + cross-l…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T09:48:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c7d6a2c6d3d357e21b9f00ea2e64f64596e7bfd1",
"body": "…inal gate",
"is_bot": false,
"headline": "docs(swift): L3 README section + auction/voting session-leak guard; f…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T09:44:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5307b6c7ec46bae70a454c8e6ab6129e9fd4b285",
"body": "…tate comment, add PostDispatchHook + v2-dispatch tests\n\n- examples/voting/states.go: correct PhaseSettle arc comment from\n DECRYPTING -> BROADCASTING to DECRYPTING -> (terminal / StateNone)\n- pkg/ares/phase/anon/states.go: add AccumulatedOnions() exported helper\n so external packages (relay, test\n[…]\ne (two sub-tests: v1 plain path\n and v2 lineage path, each in an isolated session to avoid nil-current\n collision after CheckComplete=true)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(voting/transport): export anon onion-bucket accessor, fix stale s…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T05:40:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ddcdbac48fe74eb9a117cdffd3ac7c6dfb046d89",
"body": "…(onion+lineage interop green)\n\n- VotingFlow.swift: full N-participant gossip arc — concurrent onion.batch,\n sequential server-relayed peel chain (voter-0→1→2), slot.submit with SC-10\n lineage (v2 frame), vote.ballot; returns 0 when terminal state reached.\n- voting.sh: e2e harness building voting \n[…]\naiming phase, stalling advance.\n- DAGNode + GossipParticipant: add Sendable conformance for Swift-6\n concurrency correctness in task groups.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift-smoke): voting onion-shuffle + lineage flow + e2e harness …",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T05:28:52Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "062b1e2c7bd19aa9d752d9688dd455eda64346f4",
"body": "…fle (onion+lineage)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(voting-example): minimal session-service wiring PipelineWithShuf…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T05:05:58Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f13bff68d87cb15cb4bb2fa11539ae5b32ac0f1e",
"body": "…erop vs local server\n\nclients/swift/e2e/lib.sh: shared REPO_ROOT resolver + wait_for_health + stop_server trap.\nclients/swift/e2e/auction.sh: builds helper + session-service (-tags openfhe), starts helper-backed\nserver (mode=helper, depth=12, ring_dim=2048, scaling_mod_size=50), runs AresSmoke auct\n[…]\nefault depth corrected to 12 (matches Python smoke and\nserver binary default; depth=6 is too shallow for PhaseArgmax depth_min=8 constraint).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(swift-e2e): client-agnostic auction harness — FHE-ciphertext int…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T05:01:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5a268f011dc0b308be3f26acb5ca5128b70a0cba",
"body": "…fhe_smoke.py)\n\nAdds AresSmoke executable target (FHE-gated, inside `if openFHEEnabled`)\nwith AuctionFlow translating the Python smoke: N-party threshold keygen,\nencrypt bids, seed pre-shared keys via admin attrs, concurrent WS phase\nchoreography (invitation → keygen.share → BIDDING → bid → DECRYPTI\n[…]\n capturing non-Sendable FHE handles across\nconcurrency domains. Uses @main for top-level async. VotingFlow stub\nincluded (L3-T7 placeholder).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift-smoke): AresSmoke CLI + auction flow (mirrors auction_open…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T04:52:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7bba9c6ef1578bd591ac6029162cfb60e5b5b0d5",
"body": "…slot submission)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift-transport): GossipParticipant (onion build/peel + lineage …",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T04:48:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9367cd7b076bd7ad3d19ad72f7685b997338b13d",
"body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift-transport): AdminClient (health/start/poll) + Orchestrator",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T04:45:17Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3331015ed3ac9f37aad1a6c82e6c2e1231766d5c",
"body": "…phaned continuation\n\nGive each waiter a stable UUID; on timeout/error, removeWaiter locates\nthe continuation by id, removes it, and resumes it with CancellationError\nso the associated nextFrame task can unwind (CheckedContinuation does not\nrespond to task cancellation alone). Add SessionWaiterTests (#if DEBUG)\nthat exercise the orphan-free invariant via an internal no-socket surface.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(swift-transport): evict timed-out receiveAny waiter to prevent or…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T04:43:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2afcdfcd66ceffdf37dd9be0fe2cb4c490f8b1f0",
"body": "…en, WS Session\n\nAdds AresTransport (Foundation-only, unconditional) with WSFrame encode/decode,\nHMAC-SHA256 auth-token derivation matching the Go AuthMiddleware, and an actor-based\nSession wrapping URLSessionWebSocketTask with inbox/waiter delivery, expect/receiveAny\nwith timeouts, awaitPhase HTTP-poll, and close. 16 tests pass (13 L1 + 3 WSFrame).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift-transport): AresTransport target — WSFrame codec, auth-tok…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T04:13:09Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a26c2545d4745bc19b793f86bb57712192280806",
"body": "…ops)\n\nThreshold-CKKS FHE client ops as safe Swift wrappers over ARES-core's\ncanonical C bridge (pkg/ares/crypto/cgo/openfhe_wrapper.{h,cpp}, reused via\nrepo-relative symlinks) compiled against system OpenFHE 1.5.1. New SwiftPM\ntargets COpenFHEBridge (C++) + AresClientFHE, gated behind ARES_OPENFHE \n[…]\ndd/sub/mult/sum/chebyshev/poly/argmax), serialization. App composites\nexcluded. 25 FHE tests (round-trip + tolerance); L1 unchanged (13 tests).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge feat/swift-client-l2: Swift ARES client library L2 (FHE client …",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-02T00:01:37Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "eb2dc5e386eb8d079053f85a52f67b7647893f31",
"body": "…pyAndFree leak, eval-sum e2e test\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(swift-fhe): combine-share OOB guard, honest deserialize error, co…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-01T23:55:30Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3da3b6fea414daac2ae2cbb17d6796e91b25ff9e",
"body": "Add SAFETY lifetime comment above the first handle class in Handles.swift\nexplaining the shared_ptr-backed ownership invariant. Append a generic\nAresClientFHE L2 section to clients/swift/README.md covering what the layer\nprovides, build gating via ARES_OPENFHE, a threshold round-trip usage snippet,\n\n[…]\nloy notes. .gitignore already covered .build/ and .swiftpm/.\nGate result: 25 / 13 / DECOUPLING-CLEAN / NO-ABSOLUTE-PATHS / SYMLINKS-RELATIVE.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(swift-fhe): L2 README section + handle SAFETY note + final gate",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-01T23:44:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "cd54efea366a1f73f5be61f354d8eb28ac0b7fd4",
"body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift-fhe): EvalChebyshevSign + EvalPolynomial + EvalArgmax",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-01T23:39:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8158c5509f8f6755fb592c61e6624180b29ca06d",
"body": "…ultKey/RotKey serialization\n\nAdds EvalKeyRounds.swift with the complete 2-round distributed eval-mult-key\nprotocol (GenLead/SwitchShare/CombineSwitch/FinalShare/CombineFinal/Insert)\nand the eval-sum-key protocol (GenLead/Share/Combine/Insert). Appends\nserialize/deserialize overloads for EvalMultKey\n[…]\ng internal copyAndFree helper. All 22 tests pass including\nthe EvalMult-after-explicit-insert squared-value assertion (4.0/9.0 accuracy 0.1).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift-fhe): full eval-mult + eval-sum key round protocol + EvalM…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-01T23:34:15Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c09ec71692e5ca9ed4277a69ff6c9855d7ed460d",
"body": "…; full smoke port (17.0625)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(swift-fhe): eval add/sub/mult/multconst/sum + eval-key share gen…",
"author_name": "grussdorian",
"author_login": "grussdorian",
"committed_at": "2026-06-01T23:30:26Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 12,
"commits_last_year": 256,
"latest_release_at": "2026-06-25T15:21:59Z",
"latest_release_tag": "v0.9.8",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 11,
"days_since_latest_release": 27,
"mean_days_between_releases": 4.1
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": false,
"has_contributing": true,
"health_percentage": 75,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "github.com/Fheyalabs/ares-core",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/Fheyalabs/ares-core",
"is_deprecated": false,
"latest_version": "v0.9.15",
"repository_url": "https://github.com/Fheyalabs/ares-core",
"versions_count": 27,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-22T01:47:08Z",
"latest_version_yanked": null,
"days_since_latest_publish": 0
}
]
},
"popularity": {
"forks": 0,
"stars": 0,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": {
"days": [],
"complete": true,
"collected": 0,
"total_stars": 0,
"collected_at": null
},
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"clients/kotlin/ares-client-fhe/build.gradle.kts",
"clients/kotlin/ares-client/build.gradle.kts",
"clients/kotlin/ares-smoke/build.gradle.kts",
"clients/kotlin/build.gradle.kts",
"go.mod"
],
"largest_source_bytes": 156261,
"source_files_sampled": 351,
"oversized_source_files": 2,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"go.mod"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go"
],
"dependencies": [
{
"name": "github.com/gorilla/websocket",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.5.3"
},
{
"name": "golang.org/x/crypto",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.31.0"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 16,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "grussdorian",
"commits": 256,
"avatar_url": "https://avatars.githubusercontent.com/u/45635468?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"go.yml",
"keygen-bench.yml",
"openfhe.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 9,
"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": null,
"reason": "no pull request found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "project was created within the last 90 days. Please review its contents carefully",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "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": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "18 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "6290743865d53da7b8d28b5e10087fadae9869eb",
"ran_at": "2026-07-22T21:07:42Z",
"aggregate_score": 2.7,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-18T06:24:03Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-05-19T10:45:02Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/Fheyalabs/ARES-core",
"host": "github.com",
"name": "ARES-core",
"owner": "Fheyalabs"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 52,
"inputs": {
"security": 27,
"vitality": 77,
"community": 43,
"governance": 49,
"engineering": 58
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 77,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 62,
"inputs": {
"commits_last_year": 256,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 11
},
"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": "11/52 weeks with commits",
"points": 7.6,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 11
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "256 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 256
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 12,
"latest_release_tag": "v0.9.8",
"releases_from_tags": false,
"days_since_latest_release": 27,
"mean_days_between_releases": 4.1
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "12 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 12
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 27 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 27
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~4.1 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 4.1
}
}
],
"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": 43,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 0,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "0 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 0
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "at_risk",
"name": "Sustainability & Governance",
"value": 49,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 10,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 72,
"inputs": {
"merged_prs": 16,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "16/16 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 16,
"decided": 16
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 33,
"inputs": {
"followers": 0,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "Fheyalabs",
"public_repos": 1,
"account_age_days": 119
},
"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": "0 followers of Fheyalabs",
"points": 0,
"status": "missed",
"details": [
{
"code": "owner_followers",
"params": {
"count": 0,
"login": "Fheyalabs"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "1 public repos, account ~0 yr old",
"points": 2.8,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 1
}
},
{
"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": [
"github.com/Fheyalabs/ares-core"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 0
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"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": "27 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 27
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "moderate",
"name": "Engineering Quality",
"value": 58,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 60,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "3 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 3
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"topics": [],
"has_wiki": false,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": false
},
"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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": "critical",
"name": "Security",
"value": 27,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "critical",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 27,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 2.7
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "binaries present in source code",
"points": 6.8,
"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": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "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": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "18 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"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": 1
},
"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": "moderate",
"name": "AI Readiness",
"value": 59,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 100,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 66,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.59,
"toolchain_manifests": [
"clients/kotlin/ares-client-fhe/build.gradle.kts",
"clients/kotlin/ares-client/build.gradle.kts",
"clients/kotlin/ares-smoke/build.gradle.kts",
"clients/kotlin/build.gradle.kts",
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "clients/kotlin/ares-client-fhe/build.gradle.kts, clients/kotlin/ares-client/build.gradle.kts, clients/kotlin/ares-smoke/build.gradle.kts (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "clients/kotlin/ares-client-fhe/build.gradle.kts, clients/kotlin/ares-client/build.gradle.kts, clients/kotlin/ares-smoke/build.gradle.kts"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Go (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "59 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 59,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 156261,
"source_files_sampled": 351,
"oversized_source_files": 2
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "2/351 source files over 60KB",
"points": 54.7,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 351,
"oversized": 2
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples"
],
"has_mcp_signal": false,
"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": 0,
"status": "missed",
"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": [
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-22T21:07:46.538277Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/Fheyalabs/ARES-core.svg",
"full_name": "Fheyalabs/ARES-core",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}