Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [
"excel",
"go",
"golang",
"xll",
"windows"
],
"is_fork": false,
"size_kb": 4761,
"has_wiki": true,
"homepage": null,
"languages": {
"C": 43917,
"Go": 1211227,
"C++": 436633,
"CMake": 3479,
"Python": 4251,
"Go Template": 182693
},
"pushed_at": "2026-07-26T09:15:26Z",
"created_at": "2025-05-19T00:04:57Z",
"owner_type": "Organization",
"updated_at": "2026-07-26T09:15:30Z",
"description": null,
"is_archived": false,
"is_disabled": false,
"license_spdx": "GPL-3.0",
"default_branch": "main",
"license_spdx_raw": "GPL-3.0",
"primary_language": "Go",
"significant_languages": [
"Go",
"C++"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "xll-gen",
"company": null,
"location": null,
"followers": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/212284552?v=4",
"created_at": "2025-05-19T00:02:46Z",
"is_verified": null,
"public_repos": 6,
"account_age_days": 436
},
"license": {
"state": "standard",
"spdx_id": "GPL-3.0",
"raw_spdx": "GPL-3.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.8.38",
"kind": "patch",
"published_at": "2026-07-26T09:14:59Z"
},
{
"tag": "v0.8.37",
"kind": "patch",
"published_at": "2026-07-26T06:48:13Z"
},
{
"tag": "v0.8.36",
"kind": "patch",
"published_at": "2026-07-26T05:35:31Z"
},
{
"tag": "v0.8.35",
"kind": "patch",
"published_at": "2026-07-26T04:40:54Z"
},
{
"tag": "v0.8.34",
"kind": "patch",
"published_at": "2026-07-26T04:00:59Z"
},
{
"tag": "v0.8.33",
"kind": "patch",
"published_at": "2026-07-26T01:18:54Z"
},
{
"tag": "v0.8.32",
"kind": "patch",
"published_at": "2026-07-26T00:53:18Z"
},
{
"tag": "v0.8.31",
"kind": "patch",
"published_at": "2026-07-24T12:27:35Z"
},
{
"tag": "v0.8.30",
"kind": "patch",
"published_at": "2026-07-24T11:33:54Z"
},
{
"tag": "v0.8.29",
"kind": "patch",
"published_at": "2026-07-23T14:01:50Z"
},
{
"tag": "v0.8.28",
"kind": "patch",
"published_at": "2026-07-23T13:56:14Z"
},
{
"tag": "v0.8.27",
"kind": "patch",
"published_at": "2026-07-20T12:35:04Z"
},
{
"tag": "v0.8.26",
"kind": "patch",
"published_at": "2026-07-20T12:01:42Z"
},
{
"tag": "v0.8.25",
"kind": "patch",
"published_at": "2026-07-10T12:42:46Z"
},
{
"tag": "v0.8.24",
"kind": "patch",
"published_at": "2026-07-09T12:57:59Z"
},
{
"tag": "v0.8.23",
"kind": "patch",
"published_at": "2026-07-04T09:07:14Z"
},
{
"tag": "v0.8.22",
"kind": "patch",
"published_at": "2026-07-04T07:44:04Z"
},
{
"tag": "v0.8.21",
"kind": "patch",
"published_at": "2026-07-04T07:06:30Z"
},
{
"tag": "v0.8.20",
"kind": "patch",
"published_at": "2026-07-03T17:45:07Z"
},
{
"tag": "v0.8.19",
"kind": "patch",
"published_at": "2026-07-03T17:04:48Z"
},
{
"tag": "v0.8.18",
"kind": "patch",
"published_at": "2026-07-03T14:23:16Z"
},
{
"tag": "v0.8.17",
"kind": "patch",
"published_at": "2026-07-03T12:49:03Z"
},
{
"tag": "v0.8.16",
"kind": "patch",
"published_at": "2026-07-02T11:21:30Z"
},
{
"tag": "v0.8.15",
"kind": "patch",
"published_at": "2026-07-02T09:08:25Z"
},
{
"tag": "v0.8.14",
"kind": "patch",
"published_at": "2026-06-26T12:33:24Z"
},
{
"tag": "v0.8.13",
"kind": "patch",
"published_at": "2026-06-21T17:01:09Z"
},
{
"tag": "v0.8.12",
"kind": "patch",
"published_at": "2026-06-20T09:30:31Z"
},
{
"tag": "v0.8.11",
"kind": "patch",
"published_at": "2026-06-18T09:34:33Z"
},
{
"tag": "v0.8.10",
"kind": "patch",
"published_at": "2026-06-18T08:15:18Z"
},
{
"tag": "v0.8.9",
"kind": "patch",
"published_at": "2026-06-18T06:54:43Z"
},
{
"tag": "v0.8.8",
"kind": "patch",
"published_at": "2026-06-17T13:54:04Z"
},
{
"tag": "v0.8.7",
"kind": "patch",
"published_at": "2026-06-17T12:49:19Z"
},
{
"tag": "v0.8.6",
"kind": "patch",
"published_at": "2026-06-16T13:51:26Z"
},
{
"tag": "v0.8.5",
"kind": "patch",
"published_at": "2026-06-15T15:23:11Z"
},
{
"tag": "v0.8.4",
"kind": "patch",
"published_at": "2026-06-15T11:38:55Z"
},
{
"tag": "v0.8.3",
"kind": "patch",
"published_at": "2026-06-15T09:57:25Z"
},
{
"tag": "v0.8.2",
"kind": "patch",
"published_at": "2026-06-15T06:05:25Z"
},
{
"tag": "v0.8.1",
"kind": "patch",
"published_at": "2026-06-15T05:21:07Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2026-06-15T04:34:57Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-06-14T04:23:28Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2026-06-13T11:11:30Z"
},
{
"tag": "v0.5.3",
"kind": "patch",
"published_at": "2026-06-13T04:14:06Z"
},
{
"tag": "v0.5.2",
"kind": "patch",
"published_at": "2026-06-12T10:54:19Z"
},
{
"tag": "v0.5.1",
"kind": "patch",
"published_at": "2026-06-12T09:13:58Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-06-12T07:50:41Z"
},
{
"tag": "v0.4.2",
"kind": "patch",
"published_at": "2026-06-11T22:37:10Z"
},
{
"tag": "v0.4.1",
"kind": "patch",
"published_at": "2026-06-11T13:52:53Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-06-11T12:31:15Z"
},
{
"tag": "v0.3.17",
"kind": "patch",
"published_at": "2026-06-10T11:36:53Z"
},
{
"tag": "v0.3.16",
"kind": "patch",
"published_at": "2026-05-17T12:15:20Z"
},
{
"tag": "v0.3.15",
"kind": "patch",
"published_at": "2026-05-17T11:55:35Z"
},
{
"tag": "v0.3.14",
"kind": "patch",
"published_at": "2026-05-17T11:50:24Z"
},
{
"tag": "v0.3.13",
"kind": "patch",
"published_at": "2026-05-17T11:42:17Z"
},
{
"tag": "v0.3.12",
"kind": "patch",
"published_at": "2026-05-17T11:32:03Z"
},
{
"tag": "v0.3.11",
"kind": "patch",
"published_at": "2026-05-17T11:21:12Z"
},
{
"tag": "v0.3.10",
"kind": "patch",
"published_at": "2026-05-17T11:12:51Z"
},
{
"tag": "v0.3.9",
"kind": "patch",
"published_at": "2026-05-17T11:10:28Z"
},
{
"tag": "v0.3.8",
"kind": "patch",
"published_at": "2026-05-17T11:09:04Z"
},
{
"tag": "v0.3.7",
"kind": "patch",
"published_at": "2026-05-17T10:47:09Z"
},
{
"tag": "v0.3.6",
"kind": "patch",
"published_at": "2026-05-17T10:34:17Z"
},
{
"tag": "v0.3.5",
"kind": "patch",
"published_at": "2026-05-17T09:13:27Z"
},
{
"tag": "v0.3.4",
"kind": "patch",
"published_at": "2026-05-17T08:44:49Z"
},
{
"tag": "v0.3.3",
"kind": "patch",
"published_at": "2026-05-17T08:28:21Z"
},
{
"tag": "v0.3.2",
"kind": "patch",
"published_at": "2026-01-15T09:42:13Z"
},
{
"tag": "v0.3.1",
"kind": "patch",
"published_at": "2026-01-15T08:44:40Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-01-08T07:17:55Z"
},
{
"tag": "v0.2.1",
"kind": "patch",
"published_at": "2025-12-28T05:07:36Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2025-12-15T02:09:40Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2025-12-08T01:12:38Z"
}
],
"recent_commits": [
{
"oid": "08d47331e3717b7fbef7657ab82ebd6ba14e6819",
"body": "A whole-column reference passed to a `grid` argument killed Excel. The cause\nwas not the size of the coerce, as first assumed — it was `SHMAllocator::\nallocate()` returning nullptr past capacity. `flatbuffers::Allocator` has no\nfailure channel: `reallocate_downward` does `allocate(new_size)` then me\n[…]\nectly does\nNOT arm for a same-sheet (xltypeSRef) range: that path never enters the\nRefCache, so there is no memoization to go stale.\n\nCo-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(args): the request arena is the real bound for reference arguments",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T09:14:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8f2b6508d7a74ee096be0c9c2183e402cbaa5646",
"body": "…op the slot probe\n\nA failing grid rtd-once handler froze the cell forever. RunOnceGrid did\npush is_error over the wire, but ProcessRtdUpdate's grid-once gate was a\nplain skip, so the message was discarded — and since the wrapper only\npaints on a registry HIT, every recalc missed, re-issued xlfRtd a\n[…]\n_sentRefCache peek that only plain rtd\nreceived; and the chunk header constants are inline constexpr now that\ntwo translation units include them.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(rtd,chunk): grid-once errors reach the cell; bound the sender; dr…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T06:48:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "462e7258e57beda6156b678779a94d4092889fa0",
"body": "…llbacks after teardown\n\nThe named-event stub only logged, so a user who declared\nCalculationCanceled in xll.yaml got a registered Excel callback that\nnever sent MSG_CALCULATION_CANCELED — the whole Go chain down to\nOnCalculationCanceled was dead code in every generated project.\n\nWiring it naively w\n[…]\nlt: the generated\nCMake does not enable -Wswitch, so a new enumerator would otherwise fall\nthrough to the completion check having copied nothing.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(events): CalculationCanceled is a real user event; guard calc ca…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T05:35:31Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "94c3e1a3efca0735d4600421ba6a47f846c1b586",
"body": "…ly on a miss\n\nTwo review-driven batches that both had to touch xll_main.cpp.tmpl, so\nthey land together.\n\nRibbon retry — the budget was charged for attempts never made.\nTryConnectRibbon deliberately does not charge a noApp result (no EXCEL7\nwindow = no workbook open) against its own give-up budget,\n[…]\nhe host->guest reassembler only, the\nguest->host C++ caps are compile-time; the total-mismatch reset is\ndeliberately Go-only. New AGENTS §18.6.1.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(ribbon,rtd): honest retry accounting; build composite payloads on…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T04:40:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6983a75e3864ebdfcaa977f92aab0577b9f3b511",
"body": "…fused\n\nTwo defects the reviewer found in the completion-contract hardening,\nplus one pre-existing crash it exposed.\n\nA zero-length chunk was accepted by both sides (C++ only tested for a\nnull data pointer, Go tested nothing), so it recorded a (offset, 0)\nsegment — and the real chunk arriving at tha\n[…]\nded the bug as the expectation (\"the id is\nreusable from scratch\") and is inverted; 16d pins per-id poison scope\nand 16e the empty-frame refusal.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(chunk): a rejected transfer stays rejected; zero-length frames re…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T04:00:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6148e0bf76302868d2ef9c2692e677a825005a63",
"body": "Picks up the host consume-claim fix (a sibling host thread could steal a\nslot whose response was still being read) and the v0.8.12 stream work\nthat v0.8.32 missed, since shm was tagged a minute after that release.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.33 — pin shm v0.8.13",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T01:18:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9641b6df9ee958cbab563bc9cb4bdad85d218eca",
"body": "…aped payloads\n\nA range/any argument shipped COORDINATES (ConvertRange emits sheet_name\n+ rects) but its topic token digested the range's VALUES. Two ranges\nholding the same numbers therefore collided on one token:\nSendRefCachePayloadOnce deduped the second payload, and the Go side\nresolved the FIRS\n[…]\nsful one.\n\nNative gate: 64 checks, 8 failures before, 0 after, all 49 original\nchecks retained. Cold in-memory cache only — nothing is persisted.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(cache): fold reference identity into the digest for coordinate-sh…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T01:18:45Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "77b6964082076dc4beb87b3ffbd24157defb28a0",
"body": "types v0.2.19 carries RtdUpdate.is_error, which the RTD consumer asset\ncalls. Until now it resolved only through a local replace directive,\nwhich covers Go but NOT the C++ side (FetchContent pulls the pinned\ntag), so tagging with the replace in place would have made every\ngenerated project fail to compile. Verified against the real pin:\nTestRtdOnceNumGridCppCompiles passes with no replace and no\nXLLGEN_TYPES_SRC.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.32 — pin types v0.2.19, drop the temporary replace",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T00:53:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7faa7de3d720bcf81409344c821190be9c9ebc30",
"body": "…est config\n\nGenerated Serve() called the global flag.Parse(), so a user main() with\nits own flags collided with -xll-shm and exited 2. ConnectSHM already\nscanned os.Args by hand, so that scan is now exported as\nserver.ResolveSHMName and is the single path. Behavior change worth\nnoting: only the -xl\n[…]\n Kill on the READY-failure\npath.\n\n.gitattributes pins *.fbs to LF so the byte-comparison against the types\ncopy is not obscured by autocrlf skew.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(server): drop global flag.Parse from generated Serve; strict regt…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T00:53:09Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2f232a5eaf0f07414f620f047e066e0a3ae846f5",
"body": "…bounces\n\nWith ribbon.bounce:off (or a bounce that failed) the only remaining\nconnect trigger was CalculationEnded, so a manual-calculation workbook\nwith no formulas never fired it and the ribbon tab never appeared even\nthough a workbook was open.\n\nDesign follows what §23.6 proved empirically: xlc* \n[…]\ne cancel, so no new teardown\nsurface. Everything is gated on Ribbon.Enabled; the golden fixture has\nthe ribbon off, hence a whitespace-only diff.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(ribbon): bounded OnTime connect retry for bounce:off and failed …",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T00:53:08Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "020eedc5891889992fb4d878c15c4316aed312b6",
"body": "…rge transfer failed\n\nThe slot payload is 1 MiB, but DirectHost splits it in half: the request\nbuffer is slotSize/2 = 512 KiB. DefaultChunkSize was 950 KiB, derived\nfrom a docstring that said \"1 MiB slot payload minus overhead\" and\nsimply omitted the /2. So shm rejected every chunk frame with \"data \n[…]\n fires before GetRoot. The ACK-pull machinery is kept\n(registerAckPullChunk) rather than deleted — removing a wire message id\nis a separate call.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(chunk): chunk budget was 1.86x the real request buffer — every la…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T00:52:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "70aa078b99e1deef19fcf49d99bccfeef5db5759",
"body": "…g the store\n\nA one-shot handler error was pushed as a normal RTD value, so the C++\nconsumer memoized it as the completed result: under memoize:true a\ntransient timeout froze until XLL reload, with no F9 recovery.\n\nThe obvious fix — skip StoreResult when is_error — is worse, and the\nreviewer caught \n[…]\n a native gate that compiles and RUNS the header\n(rtd_once_transient_cpp_test.go) plus marker tests that reject the\nskip-the-store form outright.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(rtd-once): store an error as a TRANSIENT entry instead of skippin…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T00:52:32Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c50a8966a3a17d47d6443501adbea30c4e8a2486",
"body": "…p a real mutex\n\nThree correctness defects in the generated cache layer, all found while\nprofiling the key/hash path and all proven with a native g++ gate\n(internal/assets/testdata/cache_native_test.cpp, 49 checks):\n\n1. GetOrComputeRefHash returned \"\" for anything that is not xltypeRef.\n xltypeSRe\n[…]\n1a,\nwhich is why Get on a 102 KB key drops 17.4us -> 161ns; a 100x100 grid\ntoken drops 7.9ms -> 86us. In-memory cold cache only — no persistence.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(cache): SRef args reach the key, kill a stack OOB read, give phma…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-26T00:52:14Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5a47f85a06b11495a79b62fa566ed02201df6803",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.31 — pin shm v0.8.11, types v0.2.18, sugar v0.8.8",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-24T12:27:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "63c8fec8e041597713995dae25e59a6603689372",
"body": "Empirical result (real Excel, 3/3 deterministic): CancelDeferredRunner's\nxlcOnTime cancel works from a genuine macro context (rc=xlretSuccess,\nrunner never dispatches), but the production teardown call site runs in\nCOM event context (OnBeginShutdown/OnDisconnection) where command-class\nC-API is reje\n[…]\nlog\nahead of the self-abort (pure atomic, STA invariants untouched), and\ncorrects the false context comment. AGENTS.md §23.6 HIGH #2 → RESOLVED.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(lifecycle): decode xlret in OnTime logs; pin the de-queue findings",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-24T12:24:04Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "96cf85acc79f21c3699bd32093e5861771cd4e0f",
"body": "…ardening\n\n- Generated CMakeLists defaults Visual Studio generators to x64 and\n hard-fails any 32-bit toolchain (CMAKE_SIZEOF_VOID_P != 8) — the\n ecosystem is windows/amd64-only since v0.8.30\n- rtd/rtd-once string args coerce non-xltypeStr inputs to the topic\n string via xlCoerce (ScopedXLOPER12R\n[…]\nbyte-identical)\n- xll_rtd.cpp drain comments rewired from the retired OnAutoClose model\n to RunDestructiveTeardown (§20.3/§23.6), comments only\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(codegen): x64 CMake lock, RTD string-arg coercion, cache-ladder h…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-24T12:24:04Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0d1864659408eb1710a8c3ba525eb8dfed36248d",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.30 — pin shm v0.8.10, sugar v0.8.7",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-24T11:33:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "183513d99af69d5a1fefccc6c976cf559ceb9a28",
"body": "Aligns AGENTS.md §0.1 and the platform package doc with shm v0.8.10's\namd64-only contract — the 32-bit guest was never functional (amd64-only\nMBI layout made every SHM attach fail), so the 32-bit Excel MUST is\ndropped rather than implemented. Follow-ups tracked in the backlog:\npin -A x64 in generated CMake, doctor 32-bit Excel detection.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: x64-only platform contract (32-bit Excel unsupported)",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-24T11:31:27Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "72696a91bfc4e3abfbf3d3813ad1e25c0c211dea",
"body": "Mirrors types' validateDims so oversized geometry fails at the builder\nwith a clear message instead of at the receiver's Validate().\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(fbany): reject grids whose rows*cols exceeds MaxInt32",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-24T11:31:27Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5c0b2b89c2fe42e7345c59a1f2b55fbb2125b6de",
"body": "…e-text emission\n\n- Route ProgID/Description/Ribbon-ProgID and both xlfRtd wProgID\n literals through escapeCppString (the all-free-text-escapes policy)\n- validateProgID: lenient charset (rejects control chars, quotes,\n backslash, whitespace; keeps hyphens/dots so the <project>.Ribbon\n default sur\n[…]\n drops the malformed Ctrl+Shift+A function\n example (worksheet functions ignore shortcuts; commands section\n already documents them correctly)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(config): validate prog_id/clsid/function shortcut; escape rtd fre…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-24T11:31:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "58fe8a3ad39b842a1e134fa0e68daa9860be9a65",
"body": "The generated server.go unconditionally imported the flatc-generated ipc\npackage, but with zero functions the schema is namespace-only and flatc\nemits no package at all, so a ribbon+command-only config — which\nvalidateRibbon explicitly supports — validated fine and then failed\ngo build. Gate the ipc\n[…]\nif .Functions}} (every ipc. usage is\ninside a .Functions range) and pin it with a real compile gate\n(TestGeneratedServerCompiles_ZeroFunctions).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(codegen): ribbon/command-only configs (zero functions) now compile",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-24T11:31:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "77451c3daba0df7805915650d0c68b98943bcafc",
"body": "Supersedes the v0.8.28 tag, which was pushed against a pre-rebase twin of\nthe same release commit and is not an ancestor of main. Content of v0.8.29\n= v0.8.28 fixes (log/temp-dir escaping, RTD float round-trip topics, types\nv0.2.17 pin) + two docs commits that landed on main concurrently. Published\ntags are never moved (Go module proxy caching), hence a new patch number.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.29",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-23T14:01:50Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0ed5f23be7a6178419a9660c0ff45db6b6fc0af7",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.28 — pin types v0.2.17",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-23T14:00:24Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7d5e1f9eb77024dbb685f1706a83f4ce81f28b75",
"body": "Two confirmed HIGH defects in the code generator:\n\n1. logging.dir / build.temp_dir were emitted verbatim into generated\n string literals. A Windows path such as `C:\\temp\\logs` would be\n interpreted by the C++ compiler as escape sequences (`\\t` -> TAB,\n `\\l` -> invalid), and by the Go interpret\n[…]\nd the control-char\nrejection; goldens regenerated (float sites + helper only); the rtd+date\nC++ compile gate confirms the template still builds.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: escape log/temp dirs and preserve float precision in RTD topics",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-23T14:00:24Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b504efabda747752b828e1b8e08b5704880b2551",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: ignore vendor/ and vendor.tar.gz",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-22T05:10:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1aaa6cf142c9ed1c33c9862add40d51b53403c23",
"body": "…y wording (#332)\n\n- Remove historical markers (v0.3.5+ on chunk, 'async: true is deprecated')\n per policy of keeping README present-tense only.\n- The doctor prompt gate is stdin (stdinIsTerminal in cmd/doctor.go), not\n piped output — correct the CLI Reference wording.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: drop version-history notes from README; fix doctor interactivit…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-22T05:08:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3052de2b6e3df1ffddc4dd1b99c29f0df4062fbd",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.27",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-20T12:35:04Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f260306217373a56ee07534c32a1a3f503ad4c08",
"body": "…gnose blocked launches\n\nFollow-ups to the ribbon.bounce work (v0.8.26), all aimed at coexisting with\nDLP/document-classification Office add-ins that hook Workbook events:\n\n- ribbon.bounce: full now wraps the scratch-book close in\n ScratchCloseEventSuppressor: Application.EnableEvents/DisplayAlerts\n[…]\nfixtures, markers).\n\nReview: xll-cpp-reviewer 0 BLOCKER (HIGH+2 MED+3 LOW all addressed);\nmemory-safety gates green; full unit suite + vet PASS.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(dlp-interop): harden default bounce, add doctor add-in scan, dia…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-20T12:34:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "02891fa6cc1442293c56e1e0a854979a844ce63f",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.26",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-20T12:01:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6744fddbaf439bd79184084ecc96d70dac982b0d",
"body": "…keep-open|off)\n\nThe xlAutoOpen temp-workbook bounce (create + close a scratch workbook to\nreach the Application object when Excel starts empty) fires third-party\nWorkbook event hooks at a hostile time: DLP/classification COM add-ins\n(e.g. Titus) hook WorkbookBeforeClose with a modal classification \n[…]\ned test\nconfigs render the default. Pinned by gen_ribbon_bounce_test.go\n(keep-open/off shapes, unset==full) and config_test.go value validation.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(ribbon): configurable temp-workbook bounce (ribbon.bounce: full|…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-20T12:01:32Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5690ae75373292ec591ce872bcbb50d9883fda3c",
"body": "…cs refresh\n\nCLI polish:\n- generate/regtest failures now use the colored printError style (was raw\n 'Error: %v')\n- ANSI colors auto-disable when stdout is not a TTY or NO_COLOR is set\n- doctor: enforce Go >= 1.24 and CMake >= 3.24 (FAIL when older, WARN when\n unparseable); vswhere fallback warns w\n[…]\n+ compile gates (TestCacheKeyCppCompiles);\nxll-cpp-reviewer pass (0 blocker/high); e2e init+generate+go build with a\nnon-default gen.go.package.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(dx): CLI/codegen DX improvements, wire launch+package config, do…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-11T02:26:39Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1fdafb85c8f1f5d4eed88e4c56b9ebd3a3dd3373",
"body": "MapGo now mirrors buildScalarCell's integer rules: int8/int16/uint8/uint16\nwiden to AnyValueInt, uint/uint32/uint64 pick AnyValueInt when the value\nfits int32 and AnyValueNum otherwise. Previously these kinds fell through\nto the Sprintf default, so e.g. uint64(42) returned via 'any' rendered as\nthe text \"42\" while the same value in a grid cell rendered numeric.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(fbany): map sized int/uint Go values to numeric Any, not text",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-11T02:26:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fbf57daea0126773cc950ea3b5f8b5c4dd295c1e",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.25",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-10T12:42:46Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5f2f4a3fbacad37c0b7e77bc3825f1c839752143",
"body": "TestRtdOnceNumGridCppCompiles and TestSyncDateCppCompiles still ran with\nt.Parallel() while sharing FETCHCONTENT_BASE_DIR; concurrent FetchContent\nreconfiguration made one gate's makefiles reference the other gate's build\ntree (\"No rule to make target 'libxll-gen-types.a'\"), failing full-suite\nruns intermittently. The rtd-date and cache gates already dropped\nt.Parallel for exactly this contention — apply the same fix.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(cmd): serialize remaining parallel cmake compile gates",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-10T12:42:46Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c4ab380d1c5e873fd129ae8aff42edf9c2a483e6",
"body": "….dir\n\nlogging.dir now resolves ONCE (in the generated xlAutoOpen) to a single\ndirectory holding BOTH <proj>_native.log and <proj>_go.log. Previously in\nsinglefile mode the launcher ignored logging.dir and wrote the Go log next\nto the extracted exe (%TEMP%\\<proj>\\) while InitLog forced the native lo\n[…]\nlden regenerated.\n\nVerified: go vet, pkg/... -race, generator/config tests, regtest\n(full cmake build + mock host), cmd compile gates all green.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(logging): unify XLL native log and Go server log into one logging…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-10T12:42:32Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0faa647a22196861615bb9c6bac387710c1e1174",
"body": "shm v0.8.9: guest-call endpoint co-location (HostConfig::guestWorkerAffinity +\nGo PinCurrentGoroutine; guest-call +88.8%, RTT 364->193ns — this is the Go\nbackend -> XLL RTD push path) + reclaim-machinery diet on the guest-call path,\nand the stream pipelining default inFlight 2->1 (measured strictly \n[…]\nst\nCMakeLists.\n\nGates: pin-consistency tests PASS, TestSyncDateCppCompiles real cmake+MinGW\ncompile against fetched v0.8.9 PASS, go build clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "deps: bump shm pin v0.8.8 -> v0.8.9; release v0.8.24",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-09T12:57:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6a5ecc4c6622ed46e29331e037b4a4079f612215",
"body": "shm v0.8.8 gives the Go guest responder a no-reclaim fast path — normal-mode\n1T/64B +41.5% best-of-3 (both ends of Direct Exchange now claim-free when\nauto-reclaim is off). This is the UDF request/response path (XLL host sends,\nGo guest responds), so generated projects' UDF throughput improves direc\n[…]\nVersions + TestFlatbuffersVersionConsistency\nPASS, TestSyncDateCppCompiles real cmake+MinGW compile against fetched v0.8.8\nPASS, go build clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "deps: bump shm pin v0.8.7 -> v0.8.8; release v0.8.23",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-04T09:07:14Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "182f6a3942b565040f4646f5987c55fb7b5fbf88",
"body": "shm v0.8.7 brings stream slot co-location (StreamSender fixed slot range;\nstream 4T/8T +28..+70%) to generated projects. Additive API only (baseSlot\ndefaults to the shared-pool path), wire ABI unchanged. Pins bumped in lockstep:\ngo.mod, versions.go, regtest CMakeLists.\n\nGates: TestRegtestCMakePinsMa\n[…]\nVersions + TestFlatbuffersVersionConsistency\nPASS, TestSyncDateCppCompiles real cmake+MinGW compile against fetched v0.8.7\nPASS, go build clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "deps: bump shm pin v0.8.6 -> v0.8.7; release v0.8.22",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-04T07:44:04Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "923aedf00eca9ea47fc92300951f9a230740e121",
"body": "shm v0.8.6 brings guest->host kernel-wake elimination (guest-call cell +836%\nbest-of-3) to generated projects — this is the Go backend -> XLL RTD-update\npath, so RTD streaming throughput/latency improves directly. Also adds\nDirectHost::TryAcquireSlot/TryAcquireHeldSlot and HostConfig::guestWorkerSpi\n[…]\nions + TestFlatbuffersVersionConsistency\nPASS, TestSyncDateCppCompiles real cmake+MinGW compile against fetched v0.8.6\nPASS, go build/vet clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "deps: bump shm pin v0.8.5 -> v0.8.6; release v0.8.21",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-04T07:06:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "64b6a0cc21ee56ebbbd45b6eb80c6bb849123c48",
"body": "shm v0.8.5 brings the held-slot session API (not yet consumed here — see\nbacklog for the UDF-path adoption design), inline small-copy fast path,\nguest-call response SignalEvent gating, and direct-into-destination stream\nreassembly to generated projects. Pins bumped in lockstep: go.mod,\ninternal/vers\n[…]\n + TestFlatbuffersVersionConsistency\nPASS, TestSyncDateCppCompiles real cmake+MinGW compile against the fetched\nv0.8.5 PASS, go build/vet clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "deps: bump shm pin v0.8.4 -> v0.8.5; release v0.8.20",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-03T17:45:07Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fcbdd7c016f585002142ab2e35c87fbdd062b235",
"body": "Picks up types v0.2.16, which fixes cross-sheet targeting in RangeToXLOPER12/\nLookupSheetId (book-qualified name + full-width IDSHEET). A deferred Set now\nlands on the sheet that scheduled it even when another sheet is active —\nverified live in the showcase (Sheet1!B25 updates while on Sheet2; Sheet\n[…]\nes.\n\nversions.go Types + go.mod + regtest testdata CMake pin bumped in lockstep;\nbuild/vet clean, drift gates + compile gate pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "deps: bump types pin v0.2.15 -> v0.2.16; release v0.8.19",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-03T17:04:48Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "be150b73ba7209d3b3fdaf41a9dc30cb52e11482",
"body": "Picks up types v0.2.15: RangeToXLOPER12 now honors Range.sheet_name, so a\ndeferred Set/Format targets the sheet that scheduled it instead of the active\nsheet. Fixes the showcase symptom where entering a formula on Sheet2 made the\nCalculationEnded stamp drift onto Sheet2!B25 instead of staying on the\n[…]\ntep\n(TestRegtestCMakePinsMatchVersions gate). build/vet clean, drift gates pass,\ngenerated project compiles against types v0.2.15.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "deps: bump types pin v0.2.14 -> v0.2.15; release v0.8.18",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-03T14:23:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7495a1c1191d487d232a2c3932e337fe9da0d98c",
"body": "Picks up shm v0.8.3 (cross-generation zombie-slot-steal fix — directly\nrelevant to rtd-once #GETTING_DATA reliability; StreamSender SYSTEM_ERROR\nsurfacing) and v0.8.4 (hot-path timer/false-sharing perf + AffinityAuto\noversubscription gate). All ABI-preserving (SHM_VERSION 0x00070000).\n\nSingle-source\n[…]\ngtestCMakePinsMatchVersions gate).\n\ngo build/vet clean; all cpp compile-gate tests pass in isolation and fetch\nshm v0.8.4 cleanly.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "deps: bump shm pin v0.8.2 -> v0.8.4; release v0.8.17",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-03T12:49:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a2c3d696eef9eb24dd041522b70d3d01b742e69a",
"body": "Bundles the 2026-07-02 ecosystem-review MEDIUM fixes on this branch:\n- xldate: stop silent date corruption past serial 106,752 (2192-04-09) —\n FromSerial/ToSerial no longer overflow time.Duration; exact to 9999-12-31.\n- config: reject rtd/rtd-once + timeout (was a declared-and-not-used build\n brea\n[…]\n> v0.8.6.\n\nPatch bump: bug-fix / dependency level, no public API or generated-interface\nsurface change for existing valid configs.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.16 — ecosystem-review MEDIUM fixes",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T11:21:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2fc7f008dad325eb0293a180586c3e6345f0d62d",
"body": "Follow-up to c4954da (v0.8.5, HIGH fixes): pick up the sugar MEDIUM fixes\ntoo. Same single consumer (internal/rtdtest/rtd_test.go, sugar.Do/Context —\nunchanged). go build/vet clean; rtdtest compiles against the new pin.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "deps: bump sugar pin to v0.8.6 (ecosystem-review MEDIUM fixes)",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T11:20:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8292d2138cc808aabe74e1ef1b1f2b0b1edf2b0c",
"body": "Reproduced: an rtd(-once) function with a `date` arg failed to compile on\nBOTH sides. date has ArgCppType \"double\" and is passed by value, so it is\nneither a recognized scalar (int/float/bool/string) nor a composite\n(grid/numgrid/range/any) in the RTD topic-building and dispatch ladders — it\nfell th\n[…]\ne), and a new SERIAL C++ compile\ngate (cpp_compile_gate_rtd_date_test.go) — both green with MinGW + the local\ntypes/shm checkouts.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(rtd): support date arguments in rtd / rtd-once (was compile break)",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T11:10:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fa2203ee5d4b7859c9b91f7236ca6a2b8dc381e7",
"body": "internal/regtest/testdata/CMakeLists.txt is a go:embed static asset (the\nmock-host build) that hardcodes flatbuffers/shm/types GIT_TAGs. Unlike the\ngenerated CMakeLists.txt.tmpl it is NOT templated from versions.go, so the\npins were hand-maintained (677b331) with no gate — a versions.go bump could\ns\n[…]\n three GIT_TAGs, compares\nto versions.SHM/Types/FlatBuffers) and registers this as the 6th shared-pin\nlocation in AGENTS.md §18.2.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(doctor): gate regtest CMakeLists.txt pins against versions.go",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T11:02:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "eb1c141adc6408e3b61fbb4eaf30936bbafb9917",
"body": "…ld break)\n\nserver.go.tmpl declares `timeout_<Name>` for EVERY function (a mode-blind\nrange) but only USES it inside the non-rtd dispatch case (gated on `not\n(isRtdLike .Mode)`). So an rtd(-once) function carrying a `timeout:` emitted\na declared-and-not-used variable → generated server.go failed `go\n[…]\nfront-door fixture (cmd/repro_rtd_timeout_test.go) proving the\nApplyDefaults+Validate gate rejects it before any template renders.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(config): reject rtd/rtd-once + timeout (declared-and-not-used bui…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T11:02:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5b825a10ca741330b5960fc1fa611b9393e3e1d8",
"body": "commands were the only names charset-validated; function names, argument\nnames, and handler names were unchecked, so three failure classes only\nsurfaced late (or as opaque generated-code compile errors):\n\n 1. snake_case argument names: flatc camelizes the FlatBuffers Go\n accessor (start_date ->\n[…]\n, arguments, command handlers, and event handlers. Also adds\nper-function duplicate-argument and global duplicate-function checks.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(config): validate function/argument/handler identifiers",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T11:01:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4feaf949aba04c7849d0de0288b253a9b3b4c555",
"body": "…752)\n\nFromSerial/ToSerial packed the whole Excel serial into a single\ntime.Duration (int64 ns, ceiling ~292 years = serial 106,751). Every\nserial past 106,752 (2192-04-09) overflowed: FromSerial(2958465)\n(9999-12-31) returned 1607-09-20, and ToSerial saturated at ~106,751.99.\n9999-12-31 is a real i\n[…]\nund-trip is representationally impossible — the old exact\nequality was an artifact of the symmetric ops that caused this overflow.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(xldate): stop silent date corruption past 2192-04-09 (serial 106,…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T10:53:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c4954daaf9904ec7cb6a8132c3e251a438cef0c9",
"body": "Bump the sugar pin v0.7.1 -> v0.8.5 to pick up the ecosystem-review HIGH\nfixes (win32 callback leak, VT_DATE zone drift, assign nil panic). sugar\nis imported by exactly one xll-gen file — internal/rtdtest/rtd_test.go\n(the opt-in windows+xll_rtdtest E2E harness), using only sugar.Do /\nsugar.Context, \n[…]\nrified: go build/vet ./... clean, and\n`go vet -tags=\"windows xll_rtdtest\" ./internal/rtdtest/` compiles clean\nagainst the new pin.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "deps: adopt sugar v0.8.5 (ecosystem-review HIGH fixes)",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T10:45:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1b47f7f3d75d82c80b55d4d93d96d9061a7066f9",
"body": "Version constant bump for the ecosystem-review cache-key fixes on this\nbranch (e5cbbd4 date/numgrid, 36e9398 string, 587722a Num precision) plus\nthe already-merged shm v0.8.2 pin (677b331). All are bug-fix / dependency\nlevel — no public API or generated-interface surface change — so a patch\nbump. ca\n[…]\norrectly-keyed C++ (previously: compile break for date/string,\nsilent mis-key/AV for numgrid). xll-cpp-reviewer: 0 BLOCKER/0 HIGH.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.15 — codegen cache-key ladder fixes",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T09:08:25Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "587722a07e1715ab29a7fd37ad9e85c3ae865293",
"body": "SerializeXLOPER's `Num:` branch used the stream's default precision\n(~6 significant figures), so two distinct doubles agreeing to 6 figures\nserialized to the same cache key and returned a stale result for a\ndifferent input. The date-arg cache-key fix (e5cbbd4) routes date serials\nthrough this exact \n[…]\newer during the ecosystem-review release gate.\nCompile+link gate (cmd TestCacheKeyCppCompiles) re-run PASS with the\nchanged asset.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(cache): serialize xltypeNum cache keys at round-trip precision",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T09:04:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "36e9398ce8cd018e7a1c568f651395724eede5fd",
"body": "…ringXLOPER\n\nThe cache-key collection ladder's string branch emitted\n`xArg = CreateStringXLOPER(s.c_str());` — a helper defined nowhere in\nxll-gen, types, or the C++ assets (grep-confirmed: referenced only by\nthis template + golden, never defined). So EVERY cache.enabled function\nwith a string arg f\n[…]\nN): diff confined to the string branch\n of the cache ladder.\n\nFollow-up to the ecosystem review's cache-key ladder fix (e5cbbd4).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(codegen): cache-key string arg no longer calls undefined CreateSt…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T08:58:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e5cbbd4880afaa6fd429558ed396038e1b9b0d93",
"body": "The cache-key collection ladder in internal/templates/xll_main.cpp.tmpl\n(the per-arg branch filling cacheArgs before xll::MakeCacheKey) only\nhandled int/float/bool/string and routed every other type through a\nblanket `cacheArgs.push_back((LPXLOPER12){{.Name}})`. Two real defects:\n\n- date (ArgCppType\n[…]\nion with a\ndate arg -> generated xll_main.cpp has `(LPXLOPER12)d` -> cmake build\nfails at the wrapper with the invalid-cast error.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(codegen): correct cache-key ladder for date/numgrid args",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-07-02T07:58:53Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "677b331ae8d8fd8478ce351b6e54ad90edce97e9",
"body": "shm v0.8.2 makes AffinityAuto chipset-aware — it now resolves to\nAffinitySibling automatically when LTP_PC_SMT pairs are reported and\nnumSlots fits within len(SmtPairs()). On Ryzen 9 3900X this gives\n+24-74 % over the previous CCX-wide pinning across the 1/4/8 threads\n× 64/1024 B matrix; the dominan\n[…]\nake template GIT_TAG and\n the generator `go get` invocation)\n* internal/regtest/testdata/CMakeLists.txt (static FetchContent tag for\n the regtest mock host build — caught by cross-repo-coordinator).",
"is_bot": false,
"headline": "deps: bump shm pin to v0.8.2 (chipset-aware AffinityAuto)",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-26T13:36:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "03019dd89401da7dacfde52480f24e65a68942f0",
"body": "Version constant bump to match the dependency upgrade in the prior\ncommit. xll-gen public API surface is unchanged; the runtime gain is\ndelivered entirely through the shm v0.8.1 default-on AffinityAuto\nbehaviour on AMD chiplet hosts.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v0.8.14 — shm v0.8.1 pin (CCX affinity default-on)",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-26T12:33:24Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8a2a05345ad2fd81dff49f241cc0e45106c53925",
"body": "shm v0.8.1 introduces ClientConfig.AffinityMode with AffinityAuto as the\nzero-value default. The xll-gen runtime client at\npkg/server/bootstrap.go uses shm.Connect(shm.ClientConfig{ShmName: name})\n— a zero ClientConfig — so the pin bump enables CCX-aware worker\npinning automatically when the host to\n[…]\n go build ./... + go vet ./... + go test ./internal/generator\n+ ./pkg/server + ./cmd (TestProtocolFbsMatchesPinnedTypes) all PASS.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(deps): bump shm v0.7.9 -> v0.8.1 (CCX-aware affinity, default-on)",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-26T12:33:04Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "02516e01cef0186e2a61ea25901cc1872ad1a925",
"body": "…+ boundary rule)\n\nA 2026-06-25 cross-repo audit removed exactly one redundant guard (in shm) and\ncorrectly kept every xll-gen candidate. Document that\nCacheManager::GetOrComputeRefHash's xltype guard is load-bearing (distinct\nxltypeRef/xltypeSRef bits + behavior-selecting branch + raw Excel input), and\nrecord the durable boundary rule for when an internal guard may be removed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(AGENTS): record over-defensive-logic audit (GetOrComputeRefHash …",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-25T06:00:30Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ecc9c1893e5720c9fce221ad27003e90d031f15c",
"body": "Cascade after the shm/types releases. Bump the generated-project dependency\npins to shm v0.7.9 (R26 stream contract parity + R44 DirectHost split) and\ntypes v0.2.14 (R33 Pascal wstring unification + converter refactors), and the\nCLI version to v0.8.13.\n\nPer the release-version-constant discipline, i\n[…]\ntays green against pinned types v0.2.14. go build/vet/test\n(protocol sync, flatbuffers version, golden) PASS; go mod verify clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Release v0.8.13: bump shm v0.7.9 + types v0.2.14 pins",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-21T17:01:09Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6351a06b38e42a8b37c0c109c2b809894a7c9721",
"body": "Bump version constant for the v0.8.12 patch release. Dependency pins\nunchanged (shm v0.7.8, types v0.2.13). This release ships the unreleased\nmain work since v0.8.11 — all output-neutral refactors and internal fixes:\n\n- R24: chunk framing/split unified into pkg/chunk\n- R22: codegen golden-file safet\n[…]\n (COM Range.NumberFormat, shipped earlier) confirmed working\nin real Excel. No ABI/wire/message-ID changes; patch bump is correct.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Release v0.8.12",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-20T09:30:31Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "186b67c3d977d92450f870332a41204b644900da",
"body": "…e 2)\n\nCollapse the two clear verbatim per-type ladder duplicates the R22 analysis\nflagged, proven output-neutral by the Phase 1 golden snapshot (TestGolden stays\ngreen = generated xll_main.cpp/server.go/interface.go are byte-identical; the\ngolden files were never regenerated).\n\n- server.go.tmpl: th\n[…]\ngs, no duplicate).\n\nVerified: go test ./internal/generator/ (incl. TestGolden) PASS, go vet clean,\ngo build ./... ok, gofmt clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Unify verbatim marshalling-ladder duplicates via {{define}} (R22 Phas…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-20T08:29:04Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6d38a77b1b0ebfeb5f096c67d55373e66ab1c38c",
"body": "Pin the byte-for-byte output of xll_main.cpp, server.go, and interface.go for\na comprehensive fixture that exercises every per-type marshalling ladder branch\n(string/int/float/bool/any/grid/numgrid/range/date across sync/async/rtd/\nrtd-once, plus memoize/memoize_ttl/composite/cache/caller-macro, a c\n[…]\n golden fails with a precise\nline/col/offset locator.\n\nNo template or generator logic changed — this only captures current output.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add codegen golden-file snapshot test (R22 Phase 1)",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-20T08:19:05Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b579a6d11beb7a354fa63a24e53f2515ea5710fb",
"body": "Extract the three duplicated chunking concerns into a new neutral leaf\npackage pkg/chunk: the protocol.Chunk wire-frame builder (BuildFrame),\nthe offset-advancing split loop with optional retry (Sender.Send), and\nthe DefaultChunkSize constant (single source of truth). Frame bytes are\nbyte-identical \n[…]\nalence,\nsplit boundaries (< / == / > chunkSize), and retry/NoRetry/mid-stream-abort.\ngo build/vet/test PASS; no C++ asset changes.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Unify chunk framing/split into pkg/chunk (R24)",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-20T03:51:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "dabf257e90fa5e90bd51dfa265ed993efb6ecaf0",
"body": "The previous regex `([^\"]*/)?protocol` rewrote any import ending in\n/protocol (clobbering unrelated github.com/foo/protocol) and dropped\nnon-`protocol` aliases. Anchor to the two exact forms flatc emits with\n--go-module-name: bare \"protocol\" and \"<goModPath>/protocol\", preserving\nany alias. fixGoImp\n[…]\nated import.\n\nAdd dependencies_test.go: rewrite+alias preservation, the unrelated-import\nregression guard, and the bare-form case.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Anchor fixGoImports protocol-import rewrite to known forms",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-19T11:15:22Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0f24c0bdbeca7b831af7fb717f49e998abe63bd3",
"body": "…lidators (R23)\n\nValidate was a ~300-line function mixing build/event/function/logging/server/\nrtd/chunk/command/ribbon checks inline, with two separate passes over\nconfig.Functions. Split into named helpers: validateBuild, validateEvents,\nvalidateFunctionReturns, validateLogging, validateFunctionMo\n[…]\nan, go vet clean, go test ./internal/config/\n(TestValidate_*, TestCommandValidation, full suite) + generator + cmd tests all\nPASS.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(config): decompose Validate god function into per-concern va…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-19T05:37:58Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a77e15daedfdf28eb88af1c2883309bbf135c575",
"body": "…xt codes\n\nTwo LOW backlog items from the ecosystem review.\n\nTransfer-ID: extract leaf package pkg/transferid (crypto/rand, 64-bit). The\nguest->host chunk-framing sites (async_batcher.sendChunkedAsync,\nrtd.SendOnceGrid) used uint64(rand.Int63()) -- a 63-bit value from the\nglobal-mutex math/rand -- w\n[…]\n.2 gains a command-return TypeText note. Verified: xll-cpp-reviewer\nPASS, sync-date C++ compile gate PASS, go build/vet/test PASS.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(backlog): unify transfer-ID generation + correct command TypeTe…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-19T05:10:32Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "16ff3f97b5aae172da84ca59ed77b53164d6c70b",
"body": "…; bump v0.8.11\n\nRtdServer::NotifyUpdate() called Excel's IRTDUpdateEvent::UpdateNotify() from the\nbackground worker thread (a plain std::thread, no CoInitialize), but the callback\nis obtained on the STA in ServerStart. That is a raw cross-apartment COM call on\nan unmarshalled \"Both\"-threaded interf\n[…]\nRTD cells keep updating, Excel alive across close/reopen, log\nclean. Regression: internal/generator/gen_rtd_notify_window_test.go.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(rtd): route UpdateNotify onto the STA via a hidden message window…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-18T09:34:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2ee56cfa7c870a2d434e410c2c113798afbf6aad",
"body": "…arg codegen)\n\n§23.6 Stage-4 Remediation #2: IRtdServer::ServerTerminate fires on EVERY\nzero-live-topic transition (workbook close, not only host shutdown), so any\ndestructive/process-scoped teardown must be gated on a separate confirmed-\nhost-shutdown signal — never driven by ServerTerminate alone.\n[…]\noffset; every by-value type must be listed in the builder-loop scalar\nbranch or the generated C++ references an undeclared arg<N>.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(agents): record v0.8.10 lessons (RTD ServerTerminate gate; date-…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-18T08:22:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0c69dec355fe88d35c84283e4a8416edbe611f3f",
"body": "…v0.8.10\n\nRtdServerBase::ServerTerminate called RunDestructiveTeardown() unconditionally.\nThe v0.8.7 close-ghost fix (§23.6 Stage 4) wired that under the false premise\nthat Excel only delivers ServerTerminate at host shutdown. Excel actually calls\nServerTerminate whenever the RTD live-topic count dr\n[…]\n, Excel alive). Regression:\ninternal/generator/gen_rtd_terminate_gate_test.go pins the gate, arm-once,\nordering, and ATTACH reset.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(rtd): gate destructive teardown on confirmed host shutdown; bump …",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-18T08:15:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6138d16dfca5db743d9657e1ed1f9116d870e1c7",
"body": "…uilder\n\nThe C++ request-builder loop in xll_main.cpp.tmpl only treated int/float/bool\nas by-value scalars; `date` fell to the else branch and emitted\n`reqBuilder.add_<name>(arg0)`, referencing an undeclared `arg0` (the arg-decode\nloop creates no arg<N> offset for scalar types) -> generated C++ fail\n[…]\n/gen_date_test.go::TestGenCpp_DateArgRequestBuilder\n(int/any/grid return matrix; asserts add_d(d) present and add_d(arg0) absent).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(codegen): emit date argument as direct double scalar in request b…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-18T08:15:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "016e103574e70d3e07a692ad39c0ff83e8b5ed93",
"body": "Completes the v0.8.9 release wiring: the generator now stamps generated\nheaders/CLI as v0.8.9 and pins github.com/xll-gen/shm at v0.7.8 (the\nslot-wait fix) in both the generated go.mod and the C++ FetchContent\nGIT_TAG. Without this, a regenerate would silently re-pin shm v0.7.7 and\nrevert the #GETTING_DATA stranding fix.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(release): bump version.Version to v0.8.9 and pinned shm to v0.7.8",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-18T06:54:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c564a330ce32bc119a974b44e5a37500e86625de",
"body": "Guest slots back every guest->host push: streaming RTD updates, one-shot\nrtd-once results, and grid sends. With only 2 slots, a workbook-open\nconnect storm (many RTD topics connecting within ~50ms) plus a grid send\nholding a slot could momentarily saturate the pool, so a one-shot\nrtd-once push lost \n[…]\nse: the published baseline reproduced \"all guest slots busy\" on a\n9-topic connect storm; the fixed build produced zero such drops.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(template): default numGuestSlots 2 -> 4; require shm v0.7.8",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-18T06:46:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8b40cfecc4a42eb267ed6f38262573589ac4b8f8",
"body": "…e deprecation\n\nTaskfile.yml.tmpl: add a root-level `env: GOAMD64: v3` so every generated\n`go build` targets x86-64-v3 (AVX/AVX2/BMI/FMA) by default, matching the C++\nside's Release AVX2 flags. Verified via `go version -m` build settings.\n\nCMakeLists.txt.tmpl: bump cmake_minimum_required 3.24 -> 3.2\n[…]\nVerified end-to-end: generate -> configure (0 CMake warnings) -> build\nproduces the .xll, and no types test executables are built.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "build(templates): default GOAMD64=v3 and silence FetchContent_Populat…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-18T02:28:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3f58c9e3a078d0b172c625af2c4fbe47cb7b7ae8",
"body": "The v0.8.8 tag (commit 11ba24c) shipped with version.go still reading\nv0.8.7, so generated-code headers from a v0.8.8 build cosmetically read\n\"Code generated by xll-gen v0.8.7\". The module proxy has already cached\nv0.8.8 immutably, so the tag is left in place (the RTD runtime fix it\ncarries is correct); this restores the source convention (version.go ==\nlatest released tag) so the next release bumps from the right base.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: bump version.go to v0.8.8 (missed in the v0.8.8 tag commit)",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-17T13:54:04Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "11ba24cef15ca1d57b63446b718c34f6be91dcf8",
"body": "A streaming RTD handler (e.g. Clock_RTD/StockTick_RTD) launches a\nfire-and-forget goroutine that captures the connect ctx, pushes an\nimmediate first value, then loops on <-ctx.Done()/ticker and returns nil\nimmediately. HandleRtdConnect's `defer cancel()` then fired the instant\nthe handler returned, \n[…]\nct (fails before the\nfix: counter=1; passes after). Existing DisconnectCancelsInFlight and\nNormalCompletionDeregisters stay green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(rtd): keep streaming RTD handler context alive until DisconnectData",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-17T13:44:42Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f29d90acf0354d1850b8cbcf2f741cfa7c8b6d37",
"body": "…l chars in escapeCppString\n\nsendWithRetry: skip the backoff sleep after the 10th (final) failed attempt\n— there is no subsequent retry to space out, so it only delayed the error\nreturn by up to ~1.28s. Corrected the comment to the real figure (9\ninter-attempt sleeps, ~2.56s total) and synced batche\n[…]\nUL truncated the emitted C wide-string literal. Adds\nTestEscapeCppString regression (NUL/control escaping + unicode pass-through).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(server,generator): drop wasted final backoff sleep; escape contro…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-17T13:13:22Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5d15c6cee044373dd53ad8ad013c967b00beef5e",
"body": "version.go was stale at v0.8.5 (v0.8.6 was tagged without bumping it).\nSet to v0.8.7 for this release (close-time ghost/orphan fix).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(release): bump version to v0.8.7",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-17T12:49:19Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5afb1d037ee4c78c9393cee31f89668595b28ea8",
"body": "Closing Excel with live RTD topics left EXCEL.EXE running windowless\nforever (ghost); in locked-down environments the Go server also orphaned\nand held its log handle after Excel was gone.\n\nGhost (S1): the destructive teardown ran synchronously inside\nOnBeginShutdown, deleting g_phost and reaping the\n[…]\n with a g_isUnloading guard. Reviewed by\nxll-cpp-reviewer (GO, 0 blocker/0 high). Regression tests added under\ninternal/generator.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(lifecycle): eliminate close-time ghost Excel and orphaned server",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-17T12:41:25Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8c7f33a5cdcb39cf0e0a67613934998fa38241a7",
"body": "HandleRtdConnect injected context.Background() into the detached\nonConnect goroutine, so rtd.RunOnce/RunOnceGrid's documented and tested\nctx-cancellation machinery was dead code in production. A topic\ndisconnected mid-flight kept running its one-shot handler to completion\nand then SendUpdate'd to an\n[…]\n a newer\nconnect that reused the same topicID.\n\nRegression tests: pkg/rtd/manager_cancel_test.go,\npkg/server/handlers_rtd_test.go.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(rtd): cancel in-flight connect handler on RTD disconnect",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-16T13:51:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f4bfbd878e2990f71023d7bf81dbbb1776c31455",
"body": "…o selection\n\nDate auto-format previously applied formats with xlcSelect + xlcFormatNumber,\nwhich forces the target cell to become the active selection — moving the user's\nselection and causing visible flicker on every recalc (XLM macro commands act on\nthe active selection). Switch to late-bound COM\n[…]\nl visual confirmation (no flicker, correct multi-workbook target,\nno keystroke lag) still pending — see IMPROVEMENT_BACKLOG.md §7.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(date-format): apply number formats via COM Range.NumberFormat, n…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-16T11:51:36Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "038b07484933135c60f99f5f7e7d1046ff24515b",
"body": "… gate\n\nMake types/go/protocol/protocol.fbs the single source of truth. The embedded\ninternal/templates/protocol.fbs (a flatc parse-stub written into generated\nprojects — actual protocol code comes from the pinned types module) is now an\nauto-synced verbatim copy:\n\n - internal/templates/syncprotoco\n[…]\nported, raw-XML image unsupported,\ndate->double, SAFEARRAY, TSO) and rewrite §18.1/§18.3/§18.4 for the new\nsingle-source workflow.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(generator): single-source protocol.fbs from pinned types + drift…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-16T11:51:15Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "231e0b4403111827a87674f3254cca7f1a4ac035",
"body": "…ionEnded event; greedy-mesh date formatting\n\nBLOCKER: the showcase BuildShowcaseSheet hard-crashed Excel (0xc0000005,\nfaulting module EXCEL.EXE) ~7-8s after build. Confirmed by single-variable\nbisection: the deferred xlSet from generated.ScheduleSet, executed\nsynchronously inside the xleventCalcula\n[…]\nnerator + pkg/algo tests, and the cmd cpp-compile gate\nall PASS; xll-cpp-reviewer(opus) 0 BLOCKER/0 HIGH. Bumps version to v0.8.5.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(rtd): defer calc-end command/format execution out of the Calculat…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T15:23:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5c426b211dae5f9b1c05705aa13e92be9945caff",
"body": "A CalculationEnded handler runs while Excel's STA thread is blocked inside\nthe synchronous calc-end round-trip, so driving Excel over COM (sugar\nattachExcel + Range/SetValue) deadlocks until the 2000ms timeout on every\nrecalc, freezing Excel. Document in README.md (Events) and AGENTS.md\n(§18.3) that event handlers must mutate Excel only via ScheduleSet/\nScheduleFormat; COM stays fine in command handlers (STA is free there).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(events): warn that event handlers must not do synchronous Excel COM",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T12:23:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5042af5104fd09c4250aa6f5deaa3843d32dce2b",
"body": "Decided not to wire date auto-format into continuous `mode: \"rtd\"`.\nReframe the §23.3.1 note from a future follow-up to an intentional\nnon-goal so it is not picked up as a backlog item later.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(agents): mark streaming-RTD date auto-format as WON'T DO",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T11:42:34Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5ae3bb66570240ac0bd64756cb8254098bbaf5b4",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: bump version to v0.8.4",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T11:38:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2c5e10e6457f1ca604e568e737882a8ac52cae45",
"body": "DrainAndApplyDateFormats issued a synchronous xlfGetCell COM round-trip\nper pending date cell on EVERY recalc (i.e. every keystroke), and the\nproducer re-enqueued every date cell every cycle. On workbooks with many\ndate cells this serialized O(N) UI-thread COM calls per keystroke and\nmade typing vis\n[…]\nwed clean by xll-cpp-reviewer and memory-safety-auditor (no\nblockers). Streaming-RTD date auto-format remains unwired (follow-up).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(assets): per-cell date-format dedup to stop calc-time typing lag",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T11:38:49Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9e45df1e5d850d37e3b826fe145ecbc003013222",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: bump version to v0.8.3",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T09:57:25Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "874726dc1ec2b54e836e348f1523f8d15eb6b846",
"body": "…onEnded (drain/clears/round-trip)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(codegen): user CalculationEnded handler must call HandleCalculati…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T09:56:13Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8181ec2c20aae96704326f612c6d77938e13cb28",
"body": "The non-singlefile Taskfile build-cpp (Release) ran only cmake, so\n`task build` / `xll-gen build` produced the .xll but NOT the <name>.exe\nserver (only the Debug variant built it). Add `task: build-go` to the\nRelease path, symmetric with build-cpp-debug. Regression test covers both\nstandalone and singlefile modes. Bump version to v0.8.2.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(codegen): standalone Release build-cpp must build the Go server",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T06:05:25Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6971afbf1e23784d4de694c41f3e66a229f5da2c",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: bump version to v0.8.1",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T05:21:07Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9036b077cf40e4478846a1e5162d38f29e966cda",
"body": "…ipped feature)\n\nAdds three real-Excel cases to TestDateFormat_Excel covering the\nmode:rtd-once + return:grid spill path that the original date-format e2e\ndid not exercise (only the SYNC grid path was covered):\n\n - BdhGridOnce: header row + datetime column-0 (.9375 fraction),\n memoize_ttl:60s — \n[…]\nm:ss; number columns\nstay General). The cases are retained as regression guards for the\npreviously-uncovered spill-once date path.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(smoke): rtd-once-grid date auto-format e2e coverage (gap from sh…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T05:17:48Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5311fd9a9ae90067b4a997a1ddeb342c1f808f87",
"body": "…to v0.8.0\n\nThe generated-code header (Code generated by xll-gen {{.Version}}) and the CLI\nboth read version/version.go as the single source; it was left at v0.7.0 when\nv0.8.0 was tagged. Add a version subcommand (also prints pinned dep versions)\nand wire cobra --version.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cli): xll-gen version command + --version; bump version.Version …",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T04:51:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "46504f1f8ab5a6e4553d907641ba73ec9fbb5c2e",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(deps): pin types v0.2.13 (Date union); drop local replace",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T04:34:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9290b5f1abf59fc7e45f9fcc79552a606c2c0fb7",
"body": "…lumn)\n\nAdds TestDateFormat_Excel proving the date auto-format feature end-to-end via\nCOM: scalar midnight date -> yyyy-mm-dd, datetime -> yyyy-mm-dd hh:mm:ss, and a\nBDH-style grid that formats ONLY its date column (number column stays General).\nAlso asserts the conditional-skip idempotency (a pre-s\n[…]\neFormat (absent from the pinned tag).\nNo-op when the env var is unset. Adds GetCellNumberFormat / SetCellNumberFormat\nCOM helpers.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(smoke): real-Excel COM e2e for date auto-format (scalar + BDH co…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T04:26:22Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4eb4d76af1dcaee2a3d17f0e483186be0a003c69",
"body": "… drain\n\nWire Plan B / Task 4: schedule date auto-formats in the value-materializing\nsync wrappers and the grid-once spill, and drain+apply them at CalculationEnded.\n\n- xll_main.cpp.tmpl: ungated #include \"xll_date_format.h\"; schedule producer\n before the sync any/grid return sites (both cached-com\n[…]\ngrid), the grid-once spill call, unconditional CalculationEnded\n registration, and the ungated drain in the xll_events.cpp asset.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(codegen): wire date-format producers (sync + spill) and calc-end…",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T03:07:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "37db4a09caf155ecc77df36827304a997b623c57",
"body": "…targets correct sheet)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(assets): resolve SRef caller sheet id via xlSheetId (date format …",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T02:53:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "45c1c7ff9d54a59d404331b489421a975639d948",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(assets): PendingDateFormats queue + conditional calc-end apply",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T02:43:15Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fdae469c63e61d5ebcb7998f1c16a969d498ca0e",
"body": "time.Time serializes as a Date (Excel serial) on all paths incl. RTD;\nupdate the byte-reference helper to mirror fbany Date encoding.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(rtd): SendUpdate time.Time reference now expects Date serial",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T02:26:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "86ca2de4539ad732c729fa0f391be45d6da236c5",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(fbany,server): correct time.Time->Date doc tables (was RFC3339)",
"author_name": "Minje Jeon",
"author_login": "minjejeon",
"committed_at": "2026-06-15T02:16:20Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 69,
"commits_last_year": 529,
"latest_release_at": "2026-07-26T09:14:59Z",
"latest_release_tag": "v0.8.38",
"releases_from_tags": true,
"days_since_last_push": 2,
"active_weeks_last_year": 15,
"days_since_latest_release": 2,
"mean_days_between_releases": 0.3
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": false,
"has_contributing": false,
"health_percentage": 37,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/xll-gen/xll-gen",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/xll-gen/xll-gen",
"is_deprecated": false,
"latest_version": "v0.8.38",
"repository_url": "https://github.com/xll-gen/xll-gen",
"versions_count": 69,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-26T09:14:59Z",
"latest_version_yanked": null,
"days_since_latest_publish": 2
}
]
},
"popularity": {
"forks": 0,
"stars": 2,
"watchers": 1,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Taskfile.yml"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 56278,
"source_files_sampled": 214,
"oversized_source_files": 0,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 235344
},
"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/go-ole/go-ole",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.3.0"
},
{
"name": "github.com/google/flatbuffers",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v25.9.23+incompatible"
},
{
"name": "github.com/google/uuid",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.0"
},
{
"name": "github.com/spf13/cobra",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.2"
},
{
"name": "github.com/xll-gen/shm",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.8.16"
},
{
"name": "github.com/xll-gen/sugar",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.8.10"
},
{
"name": "github.com/xll-gen/types",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.2.19"
},
{
"name": "golang.org/x/sys",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.33.0"
},
{
"name": "gopkg.in/yaml.v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.0.1"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 304,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 28
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "minjejeon",
"commits": 246,
"avatar_url": "https://avatars.githubusercontent.com/u/15648727?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": false,
"has_tests": true,
"ci_workflows": [],
"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": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 3,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 0,
"reason": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
"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": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": null,
"reason": "no workflows found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": null,
"reason": "no dependencies found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": null,
"reason": "No tokens found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 9,
"reason": "1 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "08d47331e3717b7fbef7657ab82ebd6ba14e6819",
"ran_at": "2026-07-29T03:41:36Z",
"aggregate_score": 3.9,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": null,
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-22T05:08:55Z",
"ci_last_conclusion": null,
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/xll-gen/xll-gen",
"host": "github.com",
"name": "xll-gen",
"owner": "xll-gen"
},
"metrics": {
"overall": {
"key": "overall",
"band": "at_risk",
"name": "Overall health",
"note": null,
"notes": [],
"value": 49,
"inputs": {
"security": 39,
"vitality": 80,
"community": 24,
"governance": 51,
"engineering": 44
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 80,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"commits_last_year": 529,
"human_commit_share": 1,
"days_since_last_push": 2,
"active_weeks_last_year": 15
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 2 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 2
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "15/52 weeks with commits",
"points": 10.4,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 15
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "529 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 529
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 88,
"inputs": {
"releases_count": 69,
"latest_release_tag": "v0.8.38",
"releases_from_tags": true,
"days_since_latest_release": 2,
"mean_days_between_releases": 0.3
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "69 version tags (no GitHub releases)",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "version_tags_no_releases",
"params": {
"count": 69
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 2 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 2
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~0.3 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 0.3
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 2,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 2 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 2
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "critical",
"name": "Community & Adoption",
"value": 24,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 2,
"watchers": 1,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "2 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 2
}
}
],
"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": "1 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 1
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (GPL-3.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "GPL-3.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 51,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 13,
"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 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 66,
"inputs": {
"merged_prs": 304,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 28
},
"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": "304/332 decided PRs merged",
"points": 35,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 304,
"decided": 332
}
}
],
"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": 41,
"inputs": {
"followers": 1,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "xll-gen",
"public_repos": 6,
"account_age_days": 436
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "1 followers of xll-gen",
"points": 2.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 1,
"login": "xll-gen"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "6 public repos, account ~1 yr old",
"points": 8.5,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 6
}
},
{
"code": "account_age_years",
"params": {
"years": 1
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/xll-gen/xll-gen"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 2
},
"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 2 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 2
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "69 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 69
}
}
],
"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": "at_risk",
"name": "Engineering Quality",
"value": 44,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "critical",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 24,
"inputs": {
"has_ci": false,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [
"excel",
"go",
"golang",
"xll",
"windows"
],
"has_wiki": true,
"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": "5 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 5
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 39,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"dangerous_workflow",
"packaging",
"pinned_dependencies",
"signed_releases",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 39,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 13,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 5,
"scorecard_aggregate": 3.9
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no workflows found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "No tokens found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "1 existing vulnerabilities detected",
"points": 6.8,
"status": "partial",
"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": "excellent",
"name": "AI Readiness",
"value": 85,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 235344
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md, CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md, CLAUDE.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 100,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_pinned_dependencies"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 79,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Taskfile.yml"
],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.99,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Taskfile.yml",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Taskfile.yml"
}
}
],
"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": "99 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 99,
"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": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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": 56278,
"source_files_sampled": 214,
"oversized_source_files": 0
},
"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": "0/214 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 214,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-29T03:41:41.948622Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/x/xll-gen/xll-gen.svg",
"full_name": "xll-gen/xll-gen",
"license_state": "standard",
"license_spdx": "GPL-3.0"
}