JSON-Rohbericht maschinenlesbar
{
"data": {
"repo": {
"topics": [
"blob-storage",
"go",
"golang",
"time-series"
],
"is_fork": false,
"size_kb": 4689,
"has_wiki": true,
"homepage": null,
"languages": {
"Go": 3012028,
"Shell": 33312,
"Python": 59340,
"Assembly": 25299,
"Makefile": 7042
},
"pushed_at": "2026-07-25T18:42:29Z",
"created_at": "2025-10-06T11:36:09Z",
"owner_type": "User",
"updated_at": "2026-07-25T18:42:29Z",
"description": "A high-performance, space-efficient binary format for storing time-series metric data in Go",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": null,
"name": "Arlo Liu",
"type": "User",
"login": "arloliu",
"company": null,
"location": "Taiwan",
"followers": 9,
"avatar_url": "https://avatars.githubusercontent.com/u/1687357?v=4",
"created_at": "2012-04-28T07:14:54Z",
"is_verified": null,
"public_repos": 34,
"account_age_days": 5202
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v1.10.0",
"kind": "minor",
"published_at": "2026-07-25T18:43:01Z"
},
{
"tag": "v1.9.0",
"kind": "minor",
"published_at": "2026-07-19T09:34:07Z"
},
{
"tag": "v1.8.0",
"kind": "minor",
"published_at": "2026-06-21T16:19:19Z"
},
{
"tag": "v1.7.1",
"kind": "patch",
"published_at": "2026-06-14T15:37:10Z"
},
{
"tag": "v1.7.0",
"kind": "minor",
"published_at": "2026-06-14T15:36:54Z"
},
{
"tag": "v1.6.0",
"kind": "minor",
"published_at": "2026-04-11T13:48:18Z"
},
{
"tag": "v1.5.0",
"kind": "minor",
"published_at": "2026-04-06T05:58:13Z"
}
],
"recent_commits": [
{
"oid": "cd158deccd28f0f8d87257d8e3f5095dd6921a2f",
"body": "Promotes the metric-names collision-correctness work from Unreleased,\nreorganizes it into grouped subsections for readability, and trims\ninternal review asides not relevant to release notes.",
"is_bot": false,
"headline": "docs(changelog): release v1.10.0",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-25T18:37:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a9dac6ae389945b74bf51d4252bb19a96e06a70a",
"body": "…for metric names\n\nIsolates the marginal cost of carrying metric names at encode, decode,\nby-ID-vs-by-name access, and Materialize() time, and records the measured\nnumbers in docs/metric_names.md.",
"is_bot": false,
"headline": "test(blob): add encode/decode/materialize/access overhead benchmarks …",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-25T18:36:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "77dea13d2f454c4d59df9af23c3570285c434fd4",
"body": "Add docs/metric_names.md covering the full lifecycle: when names are stored,\nwhat stripping drops (enumeration and exact negative membership), decode\ncost, and the borrowed-decode option. Link it from README alongside its\nsibling guides.\n\nDocument blob-set identity: a set merges the same metric acro\n[…]\nStripMetricNamesInPlace, the four set\nenumeration methods on both concrete set types, two on\nMaterializedTextBlobSet, MaxMetricNamesCount, MaxMetricNameLength) and the\nstandardized collision behavior.",
"is_bot": false,
"headline": "docs: document metric-name lifecycle and blob-set identity semantics",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-25T17:44:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "46b71e29d9d62ba100dba8f486a7a1b0988b9482",
"body": "Extend the cross-version compatibility harness with a metric-names\ncapability tag so an older binary, lacking the new symbols, still compiles.\n\nScenarios:\n - Names-bearing V1/V2/V2Ext/text output, stripped output, and\n out-of-order-insertion decoding, plus two adversarial fixtures that\n must \n[…]\n capability-tag mislabel for the\nshared-timestamp encoding option.\n\nCHANGELOG and API_STABILITY entries for the new symbols and the\nstandardized collision behavior; tidy the tests/compat module files.",
"is_bot": false,
"headline": "test(compat): metric-name matrix, collision, and materialize coverage",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-25T17:44:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1733569a0ad4d2e83ddb11efda6f7cbdba11fedd",
"body": "MaterializedNumericBlob/MaterializedTextBlob's ordinalByName had only two\nof the three cases the raw blob's HasMetricName documents: a built byName\nmap (collision), or a retained names slice (hash + string-compare). With\nneither present — a Name-mode blob with no collision and no\nWithMetricNames()/d\n[…]\nted.\n\nAdd the same hash-based byID fallback the raw blob already uses, with a\nregression test per blob type that builds a no-names-payload blob and\nexercises Materialize()'s ByName accessors directly.",
"is_bot": false,
"headline": "fix(blob): resolve ByName lookups on Materialize() for names-free blobs",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-25T17:44:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e96efa8092d09d8c1c4455730aa12b5e1c37f606",
"body": "Add optional metric-name storage to numeric and text blobs, and make every\nread path correct in the presence of a hash collision (two distinct names\nsharing one 64-bit MetricID).\n\nEncoding:\n - WithMetricNames() makes the numeric encoder always store names\n (previously only a detected collision f\n[…]\ndes a committed real xxHash64 collision pair, a structure-aware fuzz\ncorpus for strip, and a benchmark/regression suite covering the collision,\naliasing, and zero-allocation contracts described above.",
"is_bot": false,
"headline": "feat(blob): collision-safe metric-name storage, decoding, and stripping",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-25T17:43:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "09dcbe4523d9993be63ad8c77bd1b44cacdc4d5e",
"body": "Update compression and system dependencies to their latest releases.\n\nPreserve the empty-input Zstd contract changed by the new encoder default.",
"is_bot": false,
"headline": "chore(deps): upgrade dependencies",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-19T14:49:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83e6ad8049876ce8addfe96d5e41f8c519c33213",
"body": "Update golangci-lint to v2.12.2 and move the GitHub Action to v9.\n\nMigrate deprecated configuration and resolve findings from the new release.",
"is_bot": false,
"headline": "ci(lint): upgrade golangci-lint",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-19T14:33:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f57387442672b7ec44eb59a55d146bccc919f117",
"body": "Promote the Unreleased section to v1.9.0 with ALP validation error\nsentinels, corrupt-column rejection, byte-compatible encoder speedups,\nand the internal codec package reorganization.",
"is_bot": false,
"headline": "chore(release): v1.9.0",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-19T09:32:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e70057aeb1266cbc7e4f53595dfb321d0c9d450",
"body": "Add reproducible benchmarks for Gorilla, DeltaPacked+Raw, and ALP\nhot paths.\n\nCover exact Gorilla bytes, DeltaPacked+Raw iteration parity, and ALP\nsearch boundaries so rejected optimizations remain evidence-backed.",
"is_bot": false,
"headline": "test(encoding): add codec hot-path optimization evidence",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-19T08:44:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b17200db0668609758d404500496581318c74a25",
"body": null,
"is_bot": false,
"headline": "docs(blob): clarify point API ordering",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-18T22:48:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d4d675e6b82052a3886167c3d8544f6705af92c",
"body": null,
"is_bot": false,
"headline": "test(blob): add point batching performance gates",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-18T21:36:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76eae39ff547db438012067c692b8226c3388f59",
"body": "Move timestamp, value, metadata, and shared codec primitives into\ncodec-owned packages behind the root compatibility facade.\n\nPreserve blob behavior and retained unregistered Simple8b and BP128 codecs,\nkeep fused iteration allocation-sensitive, and document the resulting layout.\n\nIncorporate the post-implementation review fixes for direct fused cursors,\nSimple8b facade compatibility, ALP research ownership, and facade ordering.",
"is_bot": false,
"headline": "refactor(encoding): modularize internal codecs",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-18T09:32:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "37cc25bee5df229fa94033b5f640bc60aaa7a3fa",
"body": "Document the shared text and tag length limit where blob encoding\nconfiguration and validation apply it.\n\nKeep the existing encoding behavior unchanged while making the limit visible\nto callers and maintainers.",
"is_bot": false,
"headline": "docs(blob): clarify text length limits",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-18T09:32:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7085ae818d3dd75610275d2b1720e74fde7acf4",
"body": "Define the codec-owned package layout, compatibility facade, and shared\nimplementation seams.\n\nPreserve registered formats, blob behavior, and the retained unregistered\nSimple8b and BP128 experiments.",
"is_bot": false,
"headline": "docs(encoding): add modularization plan",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-18T09:32:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cddae9dd526fda8b0f378d7210a1b7ac0753a1e4",
"body": null,
"is_bot": false,
"headline": "docs(perf): benchmark random access by codec",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-18T09:32:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a4ebfa8626de3ff518fc63de158eef509ff621d",
"body": "…nchmarks\n\nThree overlapping performance docs (a dead PERFORMANCE.md stub, PERFORMANCE_V2.md\nthat predated ALP by one day, and CODEC_BENCHMARK_SNAPSHOT.md) are now one\ndocs/performance.md, regenerated against a fresh benchmark run so it actually\nincludes ALP (format.TypeALP). Adds a new \"Codec Selec\n[…]\n Speed\" section that was never actually\nthe fastest to encode, and a couple of drifted bytes/point figures.\n\ntests/measurev2/results/ (generated benchmark JSON) is now gitignored instead of\ncommitted.",
"is_bot": false,
"headline": "docs: reorganize docs/, consolidate performance guide, refresh ALP be…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-16T14:22:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e75a640e276762b66509a3539ce0c442eda4f9c7",
"body": "…ptimization pass\n\nAppend before/after micro-benchmark tables for the decode-into and\nvalidation changes, the generated-kernel decode changes, and the\nfast-round + AVX-512 verify-kernel encode changes, plus the parked\n(unwired) AVX-512 decode kernel comparison.",
"is_bot": false,
"headline": "docs(perf): record ALP micro-benchmark deltas for the encode/decode o…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-16T11:24:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "edd4dee1af8d7f0ae9ed8a13b723a53b19b59fbd",
"body": "…oc under race\n\nZero-allocation warm-pool assertions for the new slice pools; the assertion\nis skipped under the race detector, which instruments allocations in a way\nthat defeats it.",
"is_bot": false,
"headline": "test(pool): cover the new uint32/uint64 slice pools and skip zero-all…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-16T11:24:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d70f9ee548da645d2b69a240bd6e555139e078dc",
"body": "…matrix\n\nRegression tests for the unknown-scheme and truncated-header rejection\nadded at blob open; numeric E2E benchmarks gain explicit-opt-in ALP rows\nalongside the existing Gorilla/Raw rows.",
"is_bot": false,
"headline": "test(blob): cover ALP header validation and add ALP to the E2E bench …",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-16T11:24:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b14c7ff731fb3230503899f590f72c508142cd3",
"body": "…rification\n\nGolden-byte hashes pin encoder output; a differential harness checks the\nnew kernels bit-exact against frozen scalar references; a large-scale\nrandomized cross-version corpus proves lossless round-trip and old-reader\ndecodability across the fast-round change; ALP-RD gets dedicated planning\nand kernel tests; and a per-vector ALP compression-ratio proof of concept\nis added for future comparison.",
"is_bot": false,
"headline": "test(encoding): cover ALP kernels, golden bytes, and cross-version ve…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-16T11:24:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f847a0d322e74a74aceca35c9e036d75b1e951d",
"body": "Validate a TypeALP column's payload against the closed scheme-byte set and\nminimum header length when a blob is opened, instead of silently decoding\nunrecognized or truncated headers as an empty/zero column. Both failure\nmodes now surface as errors.",
"is_bot": false,
"headline": "fix(blob): reject unknown or corrupt ALP column headers at blob open",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-16T11:24:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c1845a68325d1546177bd7c5d0d1b24b821bc15",
"body": "…st rounding, and AVX-512 verify\n\nGenerated width-specialized fused unpack+decode kernels for both ALP-main\nand ALP-RD decode paths; O(1) windowed reads and binary-searched exceptions\nfor At; single-pass digit/exception encoding for ALP-main; map-free ALP-RD\nplanning and dictionary build via new poo\n[…]\nl for encodeDigit, with a\nscalar fallback gated on a runtime CPU feature probe.\n\nAll changes are byte-identical to prior encoder output, verified against\ngolden-byte hashes and a cross-version corpus.",
"is_bot": false,
"headline": "perf(encoding): speed up ALP encode/decode with generated kernels, fa…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-07-16T11:23:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bc52770985deb067928590683c359bcff6667393",
"body": "Promote the Unreleased section to v1.8.0: the ALP value codec (TypeALP =\n0x6) and the ForEach push-iteration API for single columns and BlobSet.",
"is_bot": false,
"headline": "chore(release): v1.8.0",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-21T16:18:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9fb2b94c934e2f02afed44fcea8f11ebb05a1f19",
"body": "…bSet\n\nAdds zero-allocation callback (push) iterators that complement the existing\nrange-over-func All* iterators. The win is structural: the iter.Seq contract\nforces a heap iterator closure, an escaping range body, and a heap-resident\ndecode cursor — none removable without changing the signature. F\n[…]\nhe static Each decoders with a decodeValues/Timestamps\nfallback for ALP.\n\nDocs: FOREACH_CALLBACK_API.md gains a \"why two APIs\" section and a single-column\n+ BlobSet results section; CHANGELOG updated.",
"is_bot": false,
"headline": "feat(blob): add ForEach push-iteration API for single columns and Blo…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-21T16:17:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b79e1b9aa2dc7eb9212babffbedef744b25e16b1",
"body": "Re-measured the measurev2 matrix with the encode prune + digit-cache + RD\nmap-reuse. Compression and iterate are unchanged (encode is byte-identical and\ndecode was already optimized); ALP encode dropped notably — e.g. decimal 2dp\n79.5k -> 50.5k ns/1k (allocs/blob 1119 -> 925) and counter 70.7k -> 28.0k\n(allocs 244 -> 44). Updates the speed table and the encode-cost takeaway\n(~7-19x raw -> ~4-18x).",
"is_bot": false,
"headline": "docs(perf): refresh codec snapshot after ALP encode speedup",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-16T01:33:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db79f6b4919f18a8e2613cf6659366602a13c978",
"body": "Three byte-identical encode optimizations, guided by profiling plus a Codex\nsecond-opinion pass, each verified against the exhaustive (e,f)-selection\ndifferential and the roundtrip / bit-exact golden tests:\n\n1. alpBestEF width lower-bound prune. est = fullCnt*width + nExc*96, and both\n width (=bit\n[…]\nill dominates (~47% of decimal encode); cutting it further\n(two-phase search, e-f collapse, SIMD) risks the exact argmin or FP multiply\norder, so it is left as future work. Encode output is unchanged.",
"is_bot": false,
"headline": "perf(encoding): speed up ALP encode (byte-identical)",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-16T01:33:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b7e1b61d5e8eb6729a54dafdbab6461597f531cf",
"body": "Re-measured the measurev2 matrix with the streaming decode reader. Compression\nis unchanged (encode is byte-identical), but ALP sequential iterate dropped from\n~14.6–56k to ~7.2–8.1k ns/1k across profiles — now between gorilla and chimp\ninstead of the read-laggard. Updates the speed table, intro, and takeaways to\nnote the decode win and that the read-cost objection to selecting ALP is gone.",
"is_bot": false,
"headline": "docs(perf): refresh codec snapshot after ALP decode speedup",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-16T01:33:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de4b36cadee86d98fb19cce4de86db343a78f459",
"body": "The sequential ALP decode paths (All / DecodeAll) read each bit-packed code\none bit at a time via alpReadBitsAt — the decode mirror of the bit-by-bit\npacker that was already replaced word-at-a-time on the encode side. Profiling\nshowed this one function was 72% of main-scheme decode and 80% of ALP-RD\n[…]\nx)\n decode RD (full precision): 4,669,977 -> 334,000 ns/op (14x)\n\nRandom-access At() keeps alpReadBitsAt (single value, not a loop hotspot).\nEncode is unchanged. Adds decode regression benchmarks.",
"is_bot": false,
"headline": "perf(encoding): speed up ALP decode 5-14x (byte-identical)",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-16T01:33:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2b844d747d89ae906800985a2a0221fe1be1fb04",
"body": "Permanent end-to-end encoding-matrix snapshot across five realistic data\nprofiles (decimal 2dp/4dp gauge, counter, sparse-constant, full-precision\nworst_case), measured after the ALP encode speedup. Captures compression\n(bytes/point) for the full 3 timestamp x 4 value matrix plus encode/iterate\nspee\n[…]\ncal motivation for per-column adaptive\nvalue-codec selection.\n\n- docs/perf/CODEC_BENCHMARK_SNAPSHOT.md — human-readable report\n- tests/measurev2/results/*.json — raw machine-readable matrices",
"is_bot": false,
"headline": "docs(perf): add codec benchmark snapshot (measurev2)",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-16T01:33:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "56ad552d0a36acfc28c0d278acb3fc2402d8a326",
"body": "Bite-sized TDD implementation plan for TypeAdaptive=0x7: a self-contained\nmeta-codec that buffers each column, trial-encodes the candidates, keeps the\nsmallest, and writes a [tag][bytes] prefix; the decoder reads the tag and\ndelegates, so the blob wiring mirrors the proven ALP wiring. Grounded in the\nexperiments study; workflow-friendly with a per-task model/effort table.",
"is_bot": false,
"headline": "docs(plans): per-column adaptive value-codec selection plan",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-16T01:33:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6074a4d2d5e4152b52e088d69db238745e813c4e",
"body": "Five experiments (run for real against the codecs + measurev2 profiles, each\nindependently reproduced byte-for-byte) plus a heterogeneity experiment, choosing\nthe adaptive value-codec selection mechanism: per-column granularity, candidate\nset {raw,gorilla,chimp,alp} (float32 never wins), full per-co\n[…]\nrd floor, ratio-only objective with\nrandom-access as a deferred opt-in. Per-column is required because per-blob loses\nup to 36-80% when decimal-gauge and sparse/constant metrics co-mingle in one blob.",
"is_bot": false,
"headline": "docs(perf): adaptive selector empirical feasibility study",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-16T01:33:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c67b8b1572c7cbab29263c752f416e14aa7e54bd",
"body": "Profiling showed alpPackBits (the bit-by-bit LSB-first packer) was ~66% of ALP\nencode CPU on both the main and RD paths. Two byte-identical optimizations:\n\n- alpPackBits: pack word-at-a-time through a 64-bit accumulator, flushing whole\n bytes (carry-handled for widths up to 64), instead of testing \n[…]\n4.29 ms), zero allocation change, output\nbyte-identical. Guarded by differential fuzz tests (20k packing cases + 4k (e,f)\ncases) against reference reimplementations of the pre-optimization algorithms.",
"is_bot": false,
"headline": "perf(encoding): speed up ALP encode ~3-4x (byte-identical)",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-16T01:33:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4cb2e2ca72b66745b07a8b0f7ae9018825df35ee",
"body": null,
"is_bot": false,
"headline": "docs: add v1.7.1 to CHANGELOG (security + Gorilla/Chimp perf)",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:36:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a69df4288a04ee58e65647fe200f4554a66a0023",
"body": "The archsimd prototype test uses 512-bit Uint64x8 ops, which compile under\nGOEXPERIMENT=simd regardless of host hardware. On a CPU without AVX-512 (most\nCI runners) executing them faults with SIGILL, failing the `GOEXPERIMENT=simd`\ntest step. Guard every prototype test/benchmark with a runtime\narch.X86ArchSIMDHasAVX512() check and t.Skip() — the same detection the\nproduction archsimd paths use (ts_delta_simd.go) — so the prototype runs where\nAVX-512 exists and skips cleanly elsewhere.",
"is_bot": false,
"headline": "fix(encoding): skip BP128 archsimd prototype on non-AVX-512 CPUs",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:26:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f1eb858769f1d37aafecc65304c3b1aa2c0946be",
"body": "`make test` built TEST_DIRS from `find . -name '*_test.go'`, which started\npulling in tests/measurev2 once it gained its first test file — but that is a\nseparate Go module and cannot be tested from the root module (\"main module does\nnot contain package .../tests/measurev2\").\n\nExclude all of tests/* from the root scan (every tests/ subdir is its own\nmodule) and run nested-module tests from their own directories via a new\nTEST_SUBMODULES list, so the measurev2 tests still run under `make test`.",
"is_bot": false,
"headline": "build(make): fix `make test` for nested test modules",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:26:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a7be14c74834b51e74c59fd8e2aa7d55be392f9d",
"body": "Fact-checked research report on sampling-based adaptive codec selection\n(BtrBlocks, Data Blocks, Vortex/SpiralDB), synthesized for mebo's per-column\nselector decision: multi-objective (ratio + decode/random-access) picking,\nhybrid analytic+sampled estimator, raw as a hard floor, and validation on the\nmeasurev2 time-series profiles before committing a format byte. Notes coverage\ngaps (Parquet/ORC/Arrow/DuckDB/Velox/TSDBs unverified) and refuted claims.",
"is_bot": false,
"headline": "docs(perf): adaptive per-column codec selection investigation",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:26:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "786955fc2dece6532b3330b60f92d3346378ac80",
"body": "- docs/plans/2026-06-14-alp-wiring.md: Codex-reviewed ALP wiring plan.\n- docs/perf/CODEC_RESEARCH_FINDINGS.md: codec evaluation notes (ALP, BP128,\n Simple8b) and the I/O-aware gate rationale.\n- CHANGELOG: note the ALP value codec.",
"is_bot": false,
"headline": "docs: ALP wiring plan, codec-research findings, CHANGELOG",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:26:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "608faefef978421da48740b1e9c69674283e24ab",
"body": "Set gomoddirectives.replace-local so the tests/measurev2 and tests/compat\nsub-modules — which replace github.com/arloliu/mebo with the in-tree source —\nlint cleanly. The main module has no replace directives, so the gate is\nunchanged for production code.",
"is_bot": false,
"headline": "build(lint): allow local replace directives for test submodules",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:26:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b52045871ef5fce706590799025326ece80bd896",
"body": "Refactor the benchmark harness toward real-world data:\n\n- Profile catalog (decimal gauges 2dp/4dp, counter, sparse-constant, 60s\n scrape, bursty scrape, full-precision worst case) via GenerateProfile and a\n -profile flag; shared-timestamp variants through shareTimestamps().\n- Add ALP to the value-\n[…]\nalso removing regular/shared\n duplication), route stderr diagnostics through a logf helper, use\n BenchmarkResult.Alloced*PerOp(), tighten report file perms to 0o600, and\n annotate the seeded PRNGs.",
"is_bot": false,
"headline": "test(measurev2): realistic profiles, ALP matrix, -profile flag",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:26:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "dadfadd250deb0373fe2e5f9efae12b36306aacb",
"body": "Construct and flush the ALP value encoder from the factory, validate TypeALP in\nthe encoder config (values only), and dispatch ALP at every value read site:\nvalueAt, decodeValues (All), decodeValuesSlice (DecodeAll), and the\nmaterialized iterator / ForEach paths.\n\nIteration uses a materialized zip (\n[…]\nALP iteration improves from ~12x slower than Chimp to ~2x.\n\nTests: dispatch parity across All/At/materialize/ForEach, ForEach matrix\ncoverage, and an e2e bench showing ALP beats Chimp on decimal data.",
"is_bot": false,
"headline": "feat(blob): wire ALP value codec end-to-end",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:26:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f2240495ee98ad6884ef4a911951fec46107f2d4",
"body": "Add TypeALP to the value-encoding allow-list so ALP-encoded value columns pass\nsection flag validation. ALP stays rejected for timestamp columns.",
"is_bot": false,
"headline": "feat(section): accept TypeALP in value-encoding validation",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:26:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "269280fdc69caf77daf228c8978456b44a228ed4",
"body": "Assign the stable on-disk EncodingType byte for ALP-encoded values and report\nit from String(). 0x7 is intentionally left unassigned (BP128 deferred).",
"is_bot": false,
"headline": "feat(format): add TypeALP=0x6 encoding type",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:26:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de3bbbd9dd6337016f5dfa49bda17da9a1197529",
"body": "…ch PoCs\n\nAdd the ALP (Adaptive Lossless floating-Point) value codec that backs the\nTypeALP blob wiring, plus reference codecs and prototypes kept in-tree for\nevaluation:\n\n- numeric_alp.go: ALP main (decimal decompose + FOR + bit-pack + exceptions),\n ALP-RD (dict-coded left + bit-packed right), raw\n[…]\nD-BP128 timestamp spike — scalar + PFOR + AVX-512 Plan9\n asm, bit-exact. Deferred; holds no on-disk byte (see docs/plans).\n- poc_*_test.go: codec-research PoCs (ALP, ALP-RD, block layer, timestamps).",
"is_bot": false,
"headline": "feat(encoding): ALP value codec, Simple8b + BP128 spike, codec-resear…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:26:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "abcc88b3898f4561d4bfedfd70ae90d6a7e23ad8",
"body": "ALP becomes the deliverable (~81% smaller blobs / ~5x retrieval on decimal\ndata). BP128 timestamp codec was built and measured (scalar + first-delta +\nPFOR + AVX-512 asm, bit-exact, in-tree) but deferred: decode is par with Delta\n(the prototype's 3x was an iterator artifact), encode ~2x slower, and the ratio\nwin is negligible with shared timestamps. Records the I/O-aware verdict and the\nearn-the-byte principle that kept 0x7 unassigned.",
"is_bot": false,
"headline": "docs(specs): ALP wiring design + BP128 spike findings (deferred)",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-14T15:26:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "864963d6301f36b144bf042475b046c842aabd0d",
"body": "The SetCount zero-run cap was in the per-value decode primitives\n(decodeGorillaValue/decodeChimpValue), taxing the bulk fused loops\n(FusedDelta*Each, Fused*TagAll) that call them directly and are already\ncount-bounded. Move it to the GorillaValState/ChimpValState Next() wrappers —\nthe only unbounded\n[…]\nge, byte-identical output.\n\nAdds TestGorillaValState_SetCount mirroring the existing Chimp test; both\nassert SetCount bounds the drain and that an unbounded drain over-produces\nphantom padding values.",
"is_bot": false,
"headline": "perf(encoding): move Gorilla/Chimp count cap to Next() wrappers",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-13T04:49:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "aebaaf94e2dc496f9a6ae1fd3ab90255124654e6",
"body": "Post-implementation review found the prior audit fixes were applied\ninconsistently across sibling APIs. Complete them:\n\n- blob: extend the OOB index-entry bounds guard from forEachFromEntry to all\n sibling iteration and random-access paths via shared overflow-safe\n safeSlice/safeSuffix helpers (Al\n[…]\nnishInto(buf)` keeps the caller's buffer on error.\n\nAdds corrupt-index bounds-guard and ChimpValState.SetCount regression tests.\nNo measurable iterate perf change (DeltaChimp within run-to-run noise).",
"is_bot": false,
"headline": "fix(security): complete v1.7.0 audit follow-ups across sibling paths",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-13T03:31:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1569797a3d280964fb02133e7f2c11c62b69b09a",
"body": "Six issues found by multi-agent security/correctness review:\n\n- blob/numeric_blob_foreach.go: guard ForEach/ForEachByName against nil yield\n (confirmed panic on first data point with valid metric ID)\n- blob/numeric_blob_foreach.go: add bounds pre-checks in forEachFromEntry before\n slicing tsPayloa\n[…]\ne shared array were partially written\n- blob/numeric_encoder.go: move curPoints increment to after WriteSlice calls so\n a panic inside WriteSlice cannot leave the encoder with an inflated point count",
"is_bot": false,
"headline": "fix(security): address code review findings from v1.6.0→v1.7.0 audit",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-13T02:44:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9653d9c643327dac7fd2219e7e2bb56e6c57f993",
"body": "Fill in all versions from v1.1.0 through v1.7.0 with concise entries\ncovering features, fixes, performance, and infrastructure changes.",
"is_bot": false,
"headline": "docs: update CHANGELOG for v1.7.0 release",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T17:48:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "443616e890fbdb6b7495f748f456d822a2dbd27c",
"body": "The phase's PEXT proposal targeted the pre-June stateful bitReader; the\nwindowed rewrite already reduced extraction to two 1-cycle shifts on a\ncontiguous field, which PEXT (multi-cycle, built for sparse selection)\ncannot beat - confirmed by an external Codex design review grounded in\nthe current dec\n[…]\n% codec / ~2% e2e and documented it\nas a consumer build-flag tip. Recorded two-stream interleaved decode\n(est. 2-5% e2e, materialization paths only) as the one credible\nsuccessor idea for future work.",
"is_bot": false,
"headline": "docs(perf): close SIMD plan Phase 5 with grounded assessment",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T17:41:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b531f9dcd5c920c54cdcaf628f2724c2cdd256c1",
"body": "…plan Phase 4\n\nApply the Codex review finding on the Phase 3 kernel: the wrapper\nrequired 66 readable bytes before entering the pair loop while the\nkernel's window check needs only 65, costing one AVX-512 iteration on\nexact-tail streams. Also give the kernel a non-zero frame so the\nassembler preserv\n[…]\nidth\npredictability - the deciding factor - is not detectable upfront. The\nunrolled one-pass ladder stays. The investigation's jitter-regime\nparity and truncation tests are kept as permanent coverage.",
"is_bot": false,
"headline": "fix(encoding): tighten AVX-512 packed decoder tail guard; close SIMD …",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T17:35:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d84f6d646587c4a1c34a4e8d6100121d7a5074d5",
"body": "Implements SIMD plan Phase 3: decodeDeltaPackedASMAVX512BulkPairs\ndecodes two Group Varint groups (8 values) per iteration using a single\nzeroing-masked VPERMB (replacing the AVX2 two-pass VPSHUFB strategy),\nVPSRAQ-based zigzag, and two 8-wide VALIGNQ prefix sums with carries\nkept broadcast in ZMM r\n[…]\n13%; measurev2 200-pt All() iterate unchanged as expected (yield-bound\nat that scale). Parity verified against scalar across all existing\nbackend-parametrized tests including exhaustive control bytes.",
"is_bot": false,
"headline": "perf(encoding): add AVX-512 VBMI packed timestamp decode backend",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T17:16:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "80719762c495daa848d5c0a997cb9f47f9e73e33",
"body": "…ounds\n\nRefresh the auto-generated benchmark report (was dated 2026-04-05) to\nreflect the landed XOR codec rewrite, allocation fixes, and iterator\nescape elimination. Fastest encode is now 312us/op (raw-raw, was 477us\ndeltapacked-raw); default delta-gorilla iterates at 271us for 40k\npoints. Generated via the update-performance-report skill from a fresh\nmeasurev2 run; encoded_bytes identical to prior runs for all 18 combos.",
"is_bot": false,
"headline": "docs(perf): regenerate PERFORMANCE_V2 scoreboard after optimization r…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T16:57:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a2a815aa88c77dc288cc060379e797c4dfa116e",
"body": "All()'s residual iteration cost is the iter.Seq2 shape itself: the\niterator must be a heap closure and the caller's range loop body\nescapes through the dynamic call, costing ~600 allocations and ~25% of\nscan time on the reference workload. A direct callback chain measured\n4.9 ns/pt vs All()'s 6.8 an\n[…]\ns).\n\nReference workload full scan: 281 -> 208 us (-26%), 601 -> 2 allocs;\nwithin 6% of the measured codec floor. Output equality with All()\nverified across all 9 encoding combos with and without tags.",
"is_bot": false,
"headline": "feat(blob): add ForEach callback iteration API",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T16:51:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2f6dcf20765bfea3f551242c8daf1fb2a0181a3e",
"body": "Documents append semantics, the ownership rule (the returned slice\naliases dst; reuse only after the blob is fully consumed), use cases\n(ingest flush loops, framed network shipping, compaction, concatenated\nblob files), and when plain Finish() is the better choice. Linked from\nREADME and the perf report.",
"is_bot": false,
"headline": "docs: add FinishInto usage guide with buffer-reuse patterns",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T16:40:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d0e5fcf27fef6b2994508a17b6fc0ce29684e5d",
"body": "The final blob make+copy in Finish() was 88% of allocated bytes on the\nencode path (~0.39MB/op) and is unavoidable while Finish must return a\nfresh slice. FinishInto(dst) appends the encoded blob to a caller\nbuffer with standard append semantics: prefix preserved, no allocation\nwhen capacity suffice\n[…]\nits output and performance are unchanged. Applied to both\nNumericEncoder and TextEncoder.\n\nReference workload with a reused buffer: encode 446 -> 422 us/op (-5%),\nallocated bytes 393KB -> 42KB (-89%).",
"is_bot": false,
"headline": "feat(blob): add FinishInto for buffer-reusing blob finalization",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T16:34:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b056c8d6d4a10f6ef95768dcae0b9fb43f72806b",
"body": "… hot paths\n\nThe iterate path paid ~35% over raw codec decode cost: every\nallDataPoints* variant checked HasTag() inside the returned closure\n(capturing the ~400-byte NumericBlob per All call) and ranged over\nSeq2-returning fused decoders, which escape analysis cannot keep on the\nstack (loop body cl\n[…]\n-metric\nscan 1401 -> 601, bytes 81.6KB -> 20.8KB. Encoded bytes unaffected\n(decode-side only). Batch decoding and exported-state inline loops were\nprototyped and measured slower; see docs/perf report.",
"is_bot": false,
"headline": "perf(blob,encoding): eliminate iterator closure heap escapes in All()…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T16:26:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f274983ef43af6ecd945a8d22bb1d5dbd5e39fbd",
"body": "go mod tidy: bump go directive to 1.25.0 to match the root mebo module\nrequirement and record the golang.org/x/sys indirect dependency.",
"is_bot": false,
"headline": "chore(measurev2): tidy module for current root go directive",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T15:55:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1b132e33abf85ea318b6e2f2edcd35d6a9ba6ab9",
"body": "Restructure TestDecodeBlobSet_MixedBlobs into encoder helpers and four\nsubtests: data point values survive decode, numeric/text type isolation\n(iteration and point access), text-first input ordering, and multiple\nmixed blobs per type.",
"is_bot": false,
"headline": "test(blob): expand mixed blob set decode coverage",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T15:55:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1c1e3671a200324d083748a1167c6bd18122015a",
"body": "… overhead\n\nProfiling end-to-end encode showed 78% of allocated bytes came from\npool.ByteBuffer.Grow: payload buffers (~240KiB at 200x200 points) exceeded\nthe pool's 128KiB retention threshold, so every encode dropped the grown\nbuffer and re-grew from 16KiB through ~10 reallocs at 25% growth steps.\n\n[…]\nd), delta-raw 486 -> 334us (-31%).\nmeasurev2: all 18 combos encode -25% to -54% vs investigation baseline;\nencoded bytes identical everywhere.\n\nReport: docs/perf/BLOB_ENCODE_ALLOCATION_OPTIMIZATION.md",
"is_bot": false,
"headline": "perf(blob,pool): eliminate payload buffer realloc churn and per-point…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T15:38:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f2d0cc2a2faf5ad1032b1715754477d46db06e9f",
"body": "…ds and accumulator writes\n\nProfiling showed the stateful bitReader/writeBits machinery accounted for\n~60% of XOR codec decode time and ~50% of encode time, making float values\n~8x more expensive per point than timestamps in the default configuration.\n\nEncode: replace the per-call shift-and-or bit w\n[…]\n -10% to -22%.\n\nAlso fix BenchmarkTimestampRawEncoder_WriteSlice reusing an encoder after\nFinish(), which panicked and aborted full benchmark runs.\n\nReport: docs/perf/XOR_CODEC_BITPACK_OPTIMIZATION.md",
"is_bot": false,
"headline": "perf(encoding): rewrite Gorilla/Chimp bit machinery with windowed rea…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-06-12T15:26:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "da5b8e2e1608985d554cab90565b3c0d9199e568",
"body": "Add 128MB decompression limit to zstd and s2 codecs to match the\nexisting LZ4 cap, preventing decompression bomb OOM attacks. Validate\nnumeric and text header offset fields against maxSafeUint32 during\nparsing to prevent uint32→int overflow panics on 32-bit platforms.",
"is_bot": false,
"headline": "fix(security): cap decompression size and guard header offset casts",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-10T19:52:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0da22c6dd45e01996ff6fc6eb9dd5e5f69ceb52e",
"body": "GOEXPERIMENT=simd was introduced in Go 1.26; running it under Go 1.25\ncauses `go: unknown GOEXPERIMENT simd` and breaks CI. Detect the minor\nversion at make-time and skip the SIMD test step with a clear message\non older toolchains.",
"is_bot": false,
"headline": "ci(make): gate GOEXPERIMENT=simd on Go >= 1.26",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-10T19:23:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9badc42f3a7b6dcb0d3242b388c1b44f4749e4b3",
"body": "The SIMD zigzag decode in decodeDeltaPackedASMAVX2BulkGroups used\nVPSRAQ (64-bit arithmetic right shift) and VPXORQ (EVEX-suffixed XOR)\nwhich are AVX-512-only instructions. Go's assembler emits EVEX prefix\n(0x62) for these, causing SIGILL on AVX2-only CPUs such as GitHub\nActions CI runners (Xeon E5 \n[…]\ntension)\n - VPXORQ → VPXOR (drop EVEX-forcing Q suffix)\n\nThe encode kernel (encodeDeltaPackedGroupsASMAVX2) was verified clean —\nVPCMPGTQ is a valid AVX2 instruction and Go emits VEX encoding for it.",
"is_bot": false,
"headline": "fix(encoding): replace AVX-512-only instructions in AVX2 decode kernel",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-10T19:06:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9ae8b4842ee26f70580234d15fc4a8e3cb88ce4a",
"body": null,
"is_bot": false,
"headline": "ci: update strategy matrix to test with golang 1.25 and 1.26",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-10T18:54:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "454ae3168ca28d496d5c2a9e4dd7b1487df5f6f8",
"body": "Add *.test to .gitignore to exclude Go test binaries left by\nprofiling sessions (go test -c).\n\nRemove ts_delta_varint_poc_test.go — the POC validated the inlined\nvarint encode approach which was already merged in 7ea7757.",
"is_bot": false,
"headline": "chore: gitignore *.test binaries and remove stale varint POC test",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-10T17:22:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0fdaa1f21ceab4eb32541b5c0dac282ae98a566",
"body": "Inline the varint+zigzag decode into TimestampDeltaDecoder.DecodeAll,\neliminating per-element decodeVarint64 function call overhead. The first\n3 varint bytes are unrolled (covering 1/2/3-byte varints, >99% of\nreal-world time-series delta-of-deltas), with a loop fallback for 4+\nbyte varints.\n\nApply t\n[…]\n-38.16%, p=0.008)\n mem_usage_500: 3.505µs → 3.075µs (-12.27%, p=0.008)\n battery_volt_100: 669.3ns → 581.8ns (-13.07%, p=0.008)\n geomean: 2.125µs → 1.850µs (-12.96%)",
"is_bot": false,
"headline": "perf(encoding): inline varint decode in DecodeAll and Chimp bulk decode",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-10T17:20:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7ea77574eadf26b4d709489d25256ba4bca4010a",
"body": "…WriteSlice\n\nReplace the per-value appendUnsigned → appendSingleByte → ExtendOrGrow\nfunction call chain with a tight inlined loop that pre-grows the buffer\nonce per chunk and uses direct append on buf.B.\n\nThe bottleneck was 2 function calls + 1 capacity check per value (~10\ncycles for a single-byte \n[…]\n\n\nBenchmark results (10k timestamps, AMD Ryzen 9 9950X3D):\n\n Delta WriteSlice:\n Before: 20,135 ns\n After: 9,760 ns\n Speedup: 2.06x\n\n No regression at small sizes (size 10: 33 ns → 23 ns).",
"is_bot": false,
"headline": "perf(encoding): inline varint serialization in TimestampDeltaEncoder.…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-10T13:43:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c1b436310da5057237bb4ce8dc1f61a006bec958",
"body": "Add an AVX2 assembly kernel that fuses zigzag encoding, branchless tag\nclassification, and Group Varint packing into a single pass, replacing the\nper-element scalar zigzag + per-group flushGroup loop in WriteSlice.\n\nThe kernel uses SIMD threshold comparisons (VPCMPGTQ) to classify value\nwidths witho\n[…]\no regression at small sizes (size 10: 29 ns → 29 ns, below threshold).\n\nAlso add docs/SIMD_OPTIMIZATION_PLAN.md documenting the 7-phase SIMD\noptimization roadmap with baselines and target performance.",
"is_bot": false,
"headline": "perf(encoding): add AVX2 SIMD fused encode for DeltaPacked Group Varint",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-10T13:22:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "93f71d8fea37e81ed2af3b1079243f3db3b6159d",
"body": "…der.All\n\nWire the active AVX2 SIMD backend into the All() iterator via a scratch-buffer\nbulk decode loop, matching the strategy used in DecodeAll. The scalar\nfull-group and tail paths remain as fallback when SIMD is unavailable or\nthe remaining count falls below the SIMD threshold.\n\nAdd companion t\n[…]\nr the packed decoder\n\nAlso add ts_delta_packed_simd_amd64.s, ts_delta_packed_simd_bench_test.go,\nand ts_delta_packed_simd_test.go (AVX2 bulk group decode implementation,\nbenchmarks, and parity tests).",
"is_bot": false,
"headline": "feat(encoding): add SIMD bulk decode path to TimestampDeltaPackedDeco…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-10T10:27:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "55742af96cfb83c8990f1b829e38ea7da8086357",
"body": "Consolidate the scattered per-codec AVX2/AVX512 detection functions into a\nsingle internal/arch package with clear build-tag separation:\n\n- internal/arch/x86_amd64.go — X86HasAVX2/X86HasAVX512 via x/sys/cpu (amd64)\n- internal/arch/x86_archsimd.go — X86ArchSIMDHasAVX2/X86ArchSIMDHasAVX512 \n[…]\nd (ts_delta_simd_archsimd.go + stub)\n- deltaPackedDecodeAsmAVX2Enabled (ts_delta_packed_simd_asm_amd64.go + stub)\n\nAll call sites in ts_delta_simd.go and ts_delta_packed_simd.go updated to use arch.*.",
"is_bot": false,
"headline": "refactor(arch): extract CPU/SIMD capability detection into internal/arch",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-10T10:10:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2163b911014d961ff9d61292b45905a6313dab88",
"body": "Add scalar, asm, and archsimd delta-of-delta backends for internal/encoding.\n\nIntegrate the shared SIMD dispatch path into timestamp delta encoders,\nincluding AVX2 and AVX-512 implementations, parity tests, and backend\nbenchmarks.\n\nUpdate Makefile test targets so CI runs the focused GOEXPERIMENT=simd\ncoverage for ./internal/encoding in addition to the existing test suite.",
"is_bot": false,
"headline": "perf(encoding): add SIMD delta backends",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-09T15:39:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d4376918ce1bfce7e79a930678bf53fd19c98b35",
"body": "Add tests/compat/ — a standalone Go module that performs black-box\ncross-version compatibility checks between any two mebo release tags.\n\nTest matrix:\n 1. NEW decodes blobs encoded by OLD (backward compat)\n 2. OLD decodes V1-layout blobs encoded by NEW (forward compat)\n 3. OLD rejects new-format\n[…]\n automatic semver-based -tags v2 detection\n\nUsage:\n bash tests/compat/run_compat.sh # v1.4.3 vs v1.5.0\n bash tests/compat/run_compat.sh v1.5.0 v1.6.0 # future releases",
"is_bot": false,
"headline": "test(compat): add generic cross-version compatibility test harness",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-06T05:52:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "63694f7da7c7430ee743f90384d87ce5112c25b0",
"body": "Implement automatic compact (16B, 0xEA20) vs extended (32B, 0xEA30)\nindex entry selection for V2 numeric blobs. The encoder scans buffered\nentries in Finish() after sorting and dedup, and upgrades to extended\nformat when any per-metric offset delta exceeds uint16 or count exceeds\n65535.\n\nKey changes\n[…]\ntimestamps + extended, count triggers, and security (reserved\n byte corruption, truncated data)\n- Update DESIGN.md with adaptive index documentation\n- Add ADAPTIVE_INDEX_ENTRY_PLAN.md design document",
"is_bot": false,
"headline": "feat(blob): add adaptive index entry for V2 format",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-06T04:44:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6e441c5f2333e52c4c28f187c6eab8420f8cff82",
"body": "- Add MaxDataPoints() to NumericEncoder for encoding-aware data point\n limit validation (fail-fast instead of silent uint16 overflow)\n- Update StartMetricID/StartMetricName to validate against MaxDataPoints()\n with descriptive error messages including the computed limit\n- Add ErrUnsupportedEncodin\n[…]\nfor errors.Is inspection\n- Wrap encoding/compression errors in NewNumericEncoder and\n CreateCodec/GetCodec with sentinel errors\n- Generalize ErrInvalidNumOfDataPoints message (context now in wrapper)",
"is_bot": false,
"headline": "fix(blob): add MaxDataPoints guard and sentinel error wrapping",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-06T04:44:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e1ff268b7534630bde67fc99e39592fb6c78308b",
"body": "- Use ErrInvalidSharedTimestampTable consistently for malformed shared timestamp table parse/apply paths.\n- Add section-level and decoder-level regression tests for malformed V2 shared timestamp tables.\n- Refactor NumericEncoder.Finish shared timestamp branch into helper to satisfy cyclomatic complexity lint.",
"is_bot": false,
"headline": "fix(section): normalize shared timestamp table errors",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-06T04:44:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c4f8929ab3a33649fe74ff5b14762cc451bb9055",
"body": "…er struct layout\n\nRefresh memory layout table to reflect the actual 264-byte struct (was 144 bytes),\nwith correct cache line boundary annotations and hot/cold field separation notes.\nAdd compiler inlining verification section showing encoderState methods are\nconfirmed inlined and redundant self-assignments are optimized away.",
"is_bot": false,
"headline": "docs: update encoder cache locality analysis for current NumericEncod…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T09:29:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "80a37b59334879468baa9ea845d3df6bf53b983f",
"body": "NumericDecoder and TextDecoder are stateful and NOT thread-safe. Update README\nthread-safety table and encoding/doc.go to clearly distinguish them from the\nstateless internal encoders/decoders in the encoding package, and note that the\ndecoded Blob values are immutable and safe for concurrent reads.",
"is_bot": false,
"headline": "docs: correct thread-safety documentation for blob-level decoders",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T09:29:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3fbee2ebec113d144b45d03c214e52bb56e42f04",
"body": "HasMetricName, GetByName, and LenByName docstrings previously described the hash\nfallback as a collision-case branching detail. Clarify that it is the normal code\npath: metric IDs are deterministic xxHash64 hashes of names, so byName==nil lookup\nvia HasMetricID(hash.ID(name)) is always correct when no collision occurred.",
"is_bot": false,
"headline": "docs(blob): clarify name-based lookup and hash fallback semantics",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T09:29:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f55ab1e806e492abacb68b18e2af20e5d1887c46",
"body": "… decoders\n\nNumericDecoder: tests for corrupted metric count, header payload offsets beyond\ndata, truncated blob, and index entry delta offsets exceeding decompressed payload\nsizes (ts/val/tag channels).\n\nTextDecoder: tests for corrupted metric count, data offset beyond data, truncated\nblob, DataSiz\n[…]\needing DataSize (uint32\nunderflow prevention), and non-monotonic entry offsets.\n\nEach test verifies the specific sentinel error is returned via errors.Is rather\nthan a panic or silent data corruption.",
"is_bot": false,
"headline": "test(blob): add malformed index regression tests for numeric and text…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T09:29:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d7145ce5b526b4343802ff06710cb0228b8878c8",
"body": "…ty-tag encoding\n\nWhen Finish() strips the tag payload because all encoded tags were empty strings,\nindex entries still carry non-zero TagOffset deltas accumulated during EndMetric().\nThe decoder accumulates these into positive absolute offsets then validates them\nagainst tagPayloadSize=0, producing a false ErrInvalidIndexOffsets. Zero the deltas\nbefore writing the blob so the decoder sees consistent zero offsets.",
"is_bot": false,
"headline": "fix(blob): zero stale TagOffset deltas when dynamically disabling emp…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T09:29:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca431cf8912f2c2f3517e7d164fde6940e91e3f4",
"body": "…ext decoder path\n\nThree changes in TextDecoder.parseIndexEntries:\n- Validate last entry Offset <= DataSize before uint32 subtraction (prevents underflow)\n- Validate monotonic offsets before size subtraction (prevents underflow)\n- Replace raw fmt.Errorf strings with wrapped sentinel errors so caller\n[…]\ndexEntrySize, ErrInvalidIndexOffsets, ErrInvalidTimestampPayloadOffset,\n ErrDataSizeMismatch)\n\nAlso replace raw error strings in text_blob.go timestamp decoding with\nErrInvalidTimestampData sentinel.",
"is_bot": false,
"headline": "fix(blob): add index offset validation and adopt sentinel errors in t…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T09:28:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "53b53d9850d64efd6186b2a07887293b03977fbb",
"body": "…size in NumericDecoder\n\nAdd bounds check in parseIndexEntries before computing the last entry's lengths.\nCorrupted delta offsets that accumulate to an absolute offset exceeding the\ndecompressed ts/val/tag payload sizes now return ErrInvalidIndexOffsets instead\nof silently producing out-of-bounds slices that panic on first iterator access.",
"is_bot": false,
"headline": "fix(blob): validate index entry offsets against decompressed payload …",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T09:28:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb37fe79a4941d274bbdb91b4dd805b0ebebcbdf",
"body": "…xtDataCompression\n\nReplace options.NoError wrappers (which silently discard validation errors) with\noptions.New so that invalid encoding types and compression codecs are surfaced to\nthe caller at encoder construction time.",
"is_bot": false,
"headline": "fix(blob): propagate errors from WithTextTimestampEncoding and WithTe…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T09:28:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "26aea8e40d84ecbd489f8a6f33b9016cfd1f5fbf",
"body": "…ggedTextEncoder\n\nDefaults and built-in options (WithTagsEnabled) are now applied first so that\ncaller-provided opts can override them. Previously opts were prepended, making\ndefaults silently override any caller-supplied options with the same key.",
"is_bot": false,
"headline": "fix(mebo): fix option precedence in NewTaggedNumericEncoder and NewTa…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T09:28:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "95b116af5dd90cc2274b5f54fa3a77f7eba18941",
"body": "…entinel errors\n\nReplace int subtraction with cmp.Compare in SortFunc comparators to prevent\ninteger overflow when timestamp deltas exceed int range. Also replace raw error\nstrings in NewNumericBlobSet and NewTextBlobSet with errs.ErrEmptyBlobSet.",
"is_bot": false,
"headline": "fix(blob): fix integer overflow in BlobSet sort comparators and use s…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T09:28:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "77f9f7dba655579d70b47fbd639d25cd25c83a59",
"body": "…ismatch sentinel errors",
"is_bot": false,
"headline": "fix(errs): add ErrEmptyBlobSet, ErrInvalidTimestampData, ErrDataSizeM…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T09:28:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "42df1e9b1e1637ec28475efc3278488ad05efb62",
"body": null,
"is_bot": false,
"headline": "docs(agents): add qa-review skill and document skills location",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T08:12:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb7ad9b3f6c586abd8576ccba7a510f0f30dd85d",
"body": "- Rewrite README.md: remove emojis, fix section order, rewrite Design Philosophy\n and Features, fix Quick Start syntax bug, update performance numbers\n (200×200 dataset), add DeltaPacked/Chimp to Encoding Strategies, update\n Configuration Examples, extract Best Practices to summary + link\n- Add d\n[…]\nfresh head-to-head benchmark on\n AMD Ryzen 9 9950X3D (space, decode+iterate, random access)\n- Fix StartMetricName syntax bug in blob/doc.go\n- Move bench-gorilla-decoder from README to CONTRIBUTING.md",
"is_bot": false,
"headline": "docs: refactor README and extract dedicated documentation",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T07:02:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6c7a844a14386e35be6da385d4cfba1f9df195fc",
"body": "TagAt methods now return (\"\", true) when tags are absent but the\nmetric and index are valid. This fixes an API design trap where\nBlobSet.NumericAt/TextAt silently returned false for tagless blobs\neven though valid timestamp and value data existed.\n\nChanges:\n- TextBlob.TagAt/TagAtByName: validate met\n[…]\nb.HasTag() && tagOk))\n- MaterializedTextBlobSet.TagAt: return (\"\", true) for valid index\n when tags absent, matching all other materialized types\n- Unify TagAt docstrings across all 8 implementations",
"is_bot": false,
"headline": "fix(blob): return empty tag instead of false for tagless blobs",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T05:52:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "832519b122dcc6b29eff5cbf5e58906df799c4cf",
"body": "- Add docs/SHARED_TIMESTAMPS.md covering overview, usage, binary\n format, encode/decode flows, performance analysis, edge cases,\n and backward compatibility upgrade strategy\n- Move shared timestamps feature link to Documentation section\n- Point Benchmark Report link to docs/PERFORMANCE_V2.md\n- Add Chimp algorithm to Acknowledgments",
"is_bot": false,
"headline": "docs: add shared timestamps design guide and update README",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T04:42:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "57cd9bd74771fc396953f600adf68c81777e59a8",
"body": "Pre-decode shared timestamps at decode time and store in sharedTsCache.\nMetrics sharing the same TimestampOffset get decoded once instead of\nrepeatedly on each AllTimestamps/Materialize call.\n\nDecode cost: +2-3 µs (150m×100pts compressed)\nIteration benefit: -22 µs per full scan (44% faster at 100pts)\nNet win on first use at 100+ points; break-even at 10 points.",
"is_bot": false,
"headline": "perf(blob): populate sharedTsCache during decode",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T04:25:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a5bb3420246b163920a7371c9ee96925116c4df0",
"body": "Replace O(metrics × blobs) cross-product loops with ForEach-based\niteration in both NumericBlobSet and TextBlobSet Materialize methods.\nForEach walks only metrics present in each blob's index, fixing a V2\nsorted-index bug where iterating nil byID map found zero metrics.\n\n- Add empty-blobset guard to\n[…]\ny.Count\n- Defer tags slice allocation to point of first use\n- Add V2 layout materialization tests (dense, sparse, with tags)\n- Add mixed-tag blob regression tests for Materialize and MaterializeMetric",
"is_bot": false,
"headline": "fix(blob): use ForEach in BlobSet Materialize and fix tag alignment",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T04:03:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "af391d510795c57f80b59b8200907325ef841f8c",
"body": "Add DecodeAll(data, count, dst) methods to all internal decoders\nfor bulk decoding directly into pre-allocated slices, bypassing\nthe iter.Seq yield() overhead.\n\nDecoders updated:\n- NumericChimpDecoder, NumericGorillaDecoder (with batch zero-run)\n- TimestampDeltaDecoder, TimestampDeltaPackedDecoder (\n[…]\nctual produced count to prevent silent zero-fill on corruption\n\nBenchmarks:\n- Add AllVsDecodeAll comparison benchmarks for all decoder types\n- Use proper DCE-prevention sinks (last-element assignment)",
"is_bot": false,
"headline": "feat(encoding): add DecodeAll batch decode to all decoders",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T03:55:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e6448316f1b2fc1570d6d225452fd7e1293efe0b",
"body": "Add sharedTsCache field to NumericBlob that stores pre-decoded\ntimestamp slices keyed by TimestampOffset. When shared-TS metrics\ncall AllTimestamps, the cache returns a simple slice iterator instead\nof re-running delta decoding.\n\nBenchmark results (200 metrics × 200 points):\n- WithCache: 61,000 ns/op vs NoCache: 121,000 ns/op (1.98× faster)\n- Improvement scales with points-per-metric\n\nIncludes benchmark for SharedTsCache_AllTimestamps.",
"is_bot": false,
"headline": "feat(blob): add shared timestamp cache for AllTimestamps iteration",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-05T03:55:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04e97486374445d5ee510f0acda65f250fbf971d",
"body": null,
"is_bot": false,
"headline": "chore: run go fix to modernize codebase",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-04T13:48:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d02fb332f8703758cc93580007bba19fcf202e87",
"body": "- WithTimestampEncoding/WithValueEncoding: list all valid encoding types\n with descriptions and defaults; add Parameters/Returns sections\n- WithTimestampCompression/WithValueCompression: list all valid\n compression types; note relationship to encoding; add Parameters/Returns\n- WithLittleEndian/Wit\n[…]\n/Blobs: add Parameters/Returns sections\n- NumericEncoder/TextEncoder AddDataPoint/AddDataPoints: fix inaccurate\n \\\"microseconds since Unix epoch\\\" claim to caller-defined unit with\n consistency note",
"is_bot": false,
"headline": "docs(blob): improve godoc for public functions and methods",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-04T13:35:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "39f1864ebb8c9b2a674b092c2d4e251f245ac372",
"body": "…n script\n\n- Add SharedTS field to EncodingCombo and SharedTSCombos() generator\n- Add GenerateSharedTimestampData() for identical-timestamp test data\n- Integrate shared-TS combos into matrix and scaling benchmark phases\n- Conditionally apply WithSharedTimestamps() in encodeBlob()\n- Add generate_repo\n[…]\nse the script (3-step: bench → generate → verify)\n- Split scaling table into standard and shared-timestamp sections\n- Update PERFORMANCE_V2.md with 18-combo results (best: shared-delta-chimp 6.35 BPP)",
"is_bot": false,
"headline": "feat(measurev2): add shared-timestamp benchmarks and report generatio…",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-04T12:10:21Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "eedf82aaf10e97dfd370e77a85b5d68d0cdd5073",
"body": "Add tests/measurev2/ - a comprehensive encoding benchmark matrix tool\nthat compares all 9 timestamp×value encoding combinations with structured\nJSON output.\n\nChanges:\n- Add measurev2 tool with generator, bench runner, scaling analysis\n- Add bench-measure Makefile target for running the benchmark matrix\n- Add docs/PERFORMANCE_V2.md with benchmark results\n- Add update-performance-report agent skill with template\n- Deprecate tests/measure/ in favor of measurev2",
"is_bot": false,
"headline": "feat(tools): add measurev2 benchmark tool and PERFORMANCE_V2 report",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-04T09:44:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c256f30dfbaed2661d4f3ae03fefc881e5bac6d8",
"body": "Add Group Varint packed delta-of-delta timestamp encoding (TypeDeltaPacked)\nthat packs 4 zigzag-encoded values per control byte for batch-oriented\ndecoding.\n\nChanges:\n- Add TimestampDeltaPackedEncoder/Decoder with Group Varint format\n- Add fused DeltaPacked+Gorilla and DeltaPacked+Chimp decoders\n- E\n[…]\nity in fused decoder functions\n- Wire TypeDeltaPacked into blob encoder/decoder pipeline\n- Add comprehensive tests and benchmarks\n- Fix all lint issues (exhaustive, gosec, goimports, nlreturn, revive)",
"is_bot": false,
"headline": "feat(encoding): add DeltaPacked timestamp encoding with fused decoders",
"author_name": "Arlo Liu",
"author_login": "arloliu",
"committed_at": "2026-04-04T08:25:51Z",
"body_truncated": true,
"is_coding_agent": false
}
],
"releases_count": 7,
"commits_last_year": 175,
"latest_release_at": "2026-07-25T18:43:01Z",
"latest_release_tag": "v1.10.0",
"releases_from_tags": false,
"days_since_last_push": 1,
"active_weeks_last_year": 11,
"days_since_latest_release": 1,
"mean_days_between_releases": 18.4
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 71,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/arloliu/mebo",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/arloliu/mebo",
"is_deprecated": false,
"latest_version": "v1.10.0",
"repository_url": "https://github.com/arloliu/mebo",
"versions_count": 22,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-25T18:37:41Z",
"latest_version_yanked": null,
"days_since_latest_publish": 1
}
]
},
"popularity": {
"forks": 0,
"stars": 1,
"watchers": 0,
"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": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod",
"tests/compat/go.mod",
"tests/fbs_compare/go.mod",
"tests/measure/go.mod",
"tests/measurev2/go.mod"
],
"largest_source_bytes": 108197,
"source_files_sampled": 250,
"oversized_source_files": 7,
"agent_instruction_files": [
".github/copilot-instructions.md",
"AGENTS.md"
],
"agent_instruction_max_bytes": 22560
},
"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/cespare/xxhash/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.3.0"
},
{
"name": "github.com/klauspost/compress",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.19.0"
},
{
"name": "github.com/pierrec/lz4/v4",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v4.1.27"
},
{
"name": "github.com/stretchr/testify",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.11.1"
},
{
"name": "golang.org/x/sys",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.47.0"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 5,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "arloliu",
"commits": 175,
"avatar_url": "https://avatars.githubusercontent.com/u/1687357?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yaml"
],
"has_docs_dir": true,
"linter_configs": [
".golangci.yaml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 9,
"reason": "binaries present in source code",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/23 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 10,
"reason": "project is 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": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "cd158deccd28f0f8d87257d8e3f5095dd6921a2f",
"ran_at": "2026-07-27T03:43:44Z",
"aggregate_score": 5.1,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-25T18:44:26Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-19T14:33:49Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/arloliu/mebo",
"host": "github.com",
"name": "mebo",
"owner": "arloliu"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 62,
"inputs": {
"security": 51,
"vitality": 83,
"community": 33,
"governance": 54,
"engineering": 84
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 83,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"commits_last_year": 175,
"human_commit_share": 1,
"days_since_last_push": 1,
"active_weeks_last_year": 11
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 1 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 1
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "11/52 weeks with commits",
"points": 7.6,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 11
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "175 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 175
}
}
],
"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": 100,
"inputs": {
"releases_count": 7,
"latest_release_tag": "v1.10.0",
"releases_from_tags": false,
"days_since_latest_release": 1,
"mean_days_between_releases": 18.4
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "7 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 7
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 1 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 1
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~18.4 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 18.4
}
}
],
"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": 1,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 1 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 1
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 33,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 1,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "1 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 1
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 70,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"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 (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 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": 54,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 10,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 72,
"inputs": {
"merged_prs": 5,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "5/5 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 5,
"decided": 5
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/23 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 50,
"inputs": {
"followers": 9,
"owner_type": "User",
"is_verified": null,
"owner_login": "arloliu",
"public_repos": 34,
"account_age_days": 5202
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "9 followers of arloliu",
"points": 7.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 9,
"login": "arloliu"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "34 public repos, account ~14 yr old",
"points": 23.2,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 34
}
},
{
"code": "account_age_years",
"params": {
"years": 14
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/arloliu/mebo"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 1
},
"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 1 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 1
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "22 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 22
}
}
],
"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": "good",
"name": "Engineering Quality",
"value": 84,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "1 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 1
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".golangci.yaml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yaml"
}
}
],
"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": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"topics": [
"blob-storage",
"go",
"golang",
"time-series"
],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "4 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 4
}
}
],
"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": "moderate",
"name": "Security",
"value": 51,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 51,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 5.1
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "binaries present in source code",
"points": 6.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/23 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is fuzzed",
"points": 5,
"status": "met",
"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": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"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": 2
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 75,
"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": [
".github/copilot-instructions.md",
"AGENTS.md"
],
"agent_instruction_max_bytes": 22560
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": ".github/copilot-instructions.md, AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".github/copilot-instructions.md, AGENTS.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "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": null,
"notes": [],
"value": 72,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [
"go.mod",
"tests/compat/go.mod",
"tests/fbs_compare/go.mod",
"tests/measure/go.mod",
"tests/measurev2/go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"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": ".golangci.yaml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yaml"
}
}
],
"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": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 98,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 108197,
"source_files_sampled": 250,
"oversized_source_files": 7
},
"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": "7/250 source files over 60KB",
"points": 53.5,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 250,
"oversized": 7
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"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-27T03:43:52.092140Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/arloliu/mebo.svg",
"full_name": "arloliu/mebo",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}