)]}'
{
  "log": [
    {
      "commit": "211799b2864689719f8423e511785ea0c8db5b12",
      "tree": "98974082517a96bfe9aafd6b69bdad62bf94cadf",
      "parents": [
        "3ff8d6f350fc3cfd3dce725a407cff23bf7021fa"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 31 16:23:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:23:55 2026 +0200"
      },
      "message": "fix(hive): release acquired locks with a cleanup context (#1605)\n\n## Summary\n\n- release acquired Hive locks with a live cleanup context\n- bound cleanup with the existing five-second timeout\n- return unlock failures alongside the operation result\n- apply the cleanup path to drop, rename, and commit\n\n## Why\n\nThese operations deferred `Release` with the caller\u0027s context. If that\ncontext was canceled after lock acquisition, Hive could reject the\nunlock immediately, and the error was discarded. This could leave other\nwriters blocked until the lock was cleared externally.\n\n## Testing\n\n- `go test ./catalog/hive`"
    },
    {
      "commit": "3ff8d6f350fc3cfd3dce725a407cff23bf7021fa",
      "tree": "1376a601be8a5e434de52530c5aa04bdfd74f7bb",
      "parents": [
        "327ec1e3989c07a57daf5af65bf02ef13bbce407"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 31 16:23:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:23:29 2026 +0200"
      },
      "message": "fix(puffin): poison writers after write failures (#1594)\n\n## What changed\n\nRecord the first physical write failure on a Puffin writer and reject\nevery subsequent mutation, blob write, or finish attempt while\npreserving the original cause. Route blob and footer writes through the\nshared failure-tracking path.\n\nAdd fault-injection coverage for partial failures during blob, footer\nmagic, footer payload, and trailer writes, plus short writes that return\nno underlying error. The tests verify that no additional writes occur\nafterward.\n\n## Why\n\nAn `io.Writer` may consume bytes and return an error or report a short\nwrite. Reusing the Puffin writer afterward left its logical offset\nbehind the physical stream and could emit corrupt metadata.\n\n## Testing\n\n- `go test ./puffin -count\u003d1`\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "327ec1e3989c07a57daf5af65bf02ef13bbce407",
      "tree": "96012451243c7cc56ee3428b41704392cff63655",
      "parents": [
        "c12bf38e523820e3f12611c8d4d89aaf4f17f23b"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 31 16:22:48 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:22:48 2026 +0200"
      },
      "message": "fix(table): validate position-delete columns before access (#1583)\n\n## What changed\n\nValidate that a position-delete table contains exactly one `file_path`\ncolumn and exactly one `pos` column before indexing either field.\n\n## Why\n\nThe scanner indexed the first result from `FieldIndices` without\nchecking its length. Missing required columns therefore caused an\nindex-out-of-range panic, while duplicate columns were ambiguous.\n\nRegression coverage includes valid schemas, the optional `row` column,\neach missing-column case, neither column, and duplicate `pos` columns.\n\n## Testing\n\n- `go test ./table`\n- `go vet ./table`\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "c12bf38e523820e3f12611c8d4d89aaf4f17f23b",
      "tree": "5437402e4f7d0b67e213bbd7627e7669b013bbb1",
      "parents": [
        "8f1a87eb2184e0f01dcaf1a8c0db753c733d9c2e"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 31 16:22:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:22:18 2026 +0200"
      },
      "message": "fix(io): make MemFS WalkDir emit directory entries (#1604)\n\n## Summary\n\n- synthesize root and intermediate directory entries in `MemFS.WalkDir`\n- emit entries in lexical order\n- implement `SkipDir` and `SkipAll` behavior\n- keep callbacks outside the filesystem lock\n\n## Why\n\n`ListableIO.WalkDir` requires callbacks for every file or directory,\nincluding the root. MemFS previously emitted only files in map iteration\norder, so directory-aware behavior and `SkipDir` differed from other\nfilesystem implementations.\n\n## Testing\n\n- `go test ./io`"
    },
    {
      "commit": "8f1a87eb2184e0f01dcaf1a8c0db753c733d9c2e",
      "tree": "c5ad2bc26711e54687e7f2a84f1baa4d67e8805b",
      "parents": [
        "18baae267848679afb7f693c82b97e6b43be9a8a"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 31 16:21:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:21:49 2026 +0200"
      },
      "message": "fix(table): canonicalize partition values used as map keys (#1581)\n\n## What changed\n\nCanonicalize partition values used internally for fanout and\nclustered-writer lookup. Binary and fixed values use a distinct\nstring-backed key, and float NaNs use stable typed sentinels.\n\nOriginal partition values remain unchanged for paths and metadata. Byte\nvalues are cloned when a partition is first recorded so metadata does\nnot retain Arrow-owned storage. Fixed-size Arrow binary values are also\nconverted to Iceberg literals before grouping.\n\n## Why\n\nBinary and fixed partition values are byte slices, which panic when used\nas Go map keys. Clustered partition equality could panic for the same\nreason, while repeated NaNs did not compare equal and could split one\nlogical partition.\n\n## Testing\n\nCoverage exercises binary, fixed, and NaN grouping; source-buffer\nmutation; clustered equality; and closed-partition tracking.\n\n- `go test ./table`\n- `go vet ./table`\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "18baae267848679afb7f693c82b97e6b43be9a8a",
      "tree": "9660ca3aa8e6b11741070e926fee43855eee1e48",
      "parents": [
        "7cf02335229fc54636f3e2a7ba6b86563f19593f"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 31 16:21:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:21:13 2026 +0200"
      },
      "message": "fix(table): validate last-updated-ms presence (#1591)\n\n## What changed\n\nRequire `last-updated-ms` to be present and non-null while decoding\nmetadata versions 1, 2, and 3. Numeric values remain unrestricted, so\nUnix epoch zero and existing negative fixture values are preserved.\n\nAdd coverage for missing, null, epoch-zero, and negative values across\nall metadata format versions.\n\n## Why\n\nThe decoder previously used a numeric sentinel for presence validation.\nThat made a valid number indistinguishable from an absent field and\neither accepted missing metadata or rejected explicitly encoded values.\n\n## Testing\n\n- `go test ./table ./table/internal -count\u003d1 -timeout\u003d180s`\n- `go test ./... -count\u003d1 -timeout\u003d300s`\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "7cf02335229fc54636f3e2a7ba6b86563f19593f",
      "tree": "4dcd306c680694bebda74bf5b73b4c5eed281cde",
      "parents": [
        "55f384b8e12272bf576e8ed78fb532f4805826e7"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 31 16:20:33 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:20:33 2026 +0200"
      },
      "message": "fix(literals): reject oversized fixed-width values (#1585)\n\n## What changed\n\nContinue padding shortened fixed-width bounds for compatibility, but\nreject inputs larger than the declared fixed width with\n`ErrInvalidBinSerialization`.\n\n## Why\n\nThe previous `len !\u003d width` branch copied every mismatched value into a\nwidth-sized buffer. Oversized values were silently truncated into a\ndifferent valid value, which could corrupt bounds used for pruning.\n\nRegression coverage includes exact, shortened, empty, one-byte\noversized, and substantially oversized inputs, with expected and actual\nlengths asserted for oversize errors.\n\n## Testing\n\n- `go test .`\n- `go vet .`\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "55f384b8e12272bf576e8ed78fb532f4805826e7",
      "tree": "6fb4879bf6bd06e037e371bd20859ada63bc9e3d",
      "parents": [
        "027b116dae5863a509bfdc37c533c43e4a006583"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 31 16:19:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:19:53 2026 +0200"
      },
      "message": "fix(schema): match Java column name sanitization (#1576)\n\n## What changed\n\nAlign column-name sanitization with Java Iceberg\u0027s Unicode behavior:\n\n- process names rune by rune instead of treating the first UTF-8 byte as\na character\n- preserve valid BMP Unicode letters and digits\n- encode supplementary characters as Java-compatible UTF-16 surrogate\nescapes\n- reject malformed UTF-8 and sibling-name collisions introduced by\nsanitization\n\nInitial digits retain the existing readable `_\u003cdigit\u003e` form.\n\n## Why\n\nThe previous implementation handled the first byte of a multibyte\ncharacter separately, then resumed iteration in the middle of its UTF-8\nencoding. This could produce malformed output and behavior that differed\nfrom Java Iceberg.\n\nSanitization can also map distinct source names to the same result.\nRejecting those collisions prevents schemas with ambiguous sibling\nfields.\n\n## Testing\n\nCoverage includes valid ASCII names, BMP and supplementary Unicode\nletters and digits, emoji, punctuation, malformed UTF-8, top-level and\nnested collisions, and collision scoping across separate records.\n\n- `go test .`\n- `go vet .`\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e\nSigned-off-by: Hoang Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "027b116dae5863a509bfdc37c533c43e4a006583",
      "tree": "db3f04c15e0894245671044f9dedfae5c96f8aee",
      "parents": [
        "f503b457b9a274c5faa81af1ec9ccf7457da7d0f"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 31 16:16:09 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:16:09 2026 +0200"
      },
      "message": "fix(partitions): validate decoded partition specs (#1593)\n\n## What changed\n\nApply structural partition-field and partition-spec validation during\nJSON decoding. Reject invalid spec IDs, missing or non-positive source\nIDs, empty and duplicate names, duplicate field IDs, redundant\ndefinitions, and invalid transforms.\n\nThe validation remains independent of the current schema so historical\nspecs may still reference dropped source columns.\n\n## Why\n\nThe JSON path directly populated internal fields and bypassed invariants\nenforced by the constructor. Malformed standalone specs and historical\ntable specs could therefore enter the model and be serialized again.\n\n## Testing\n\n- `go test . -run\n\u0027Test(PartitionFieldUnmarshalJSON|PartitionSpecUnmarshalRejectsInvalidStructure|DeserializePartitionSpec)\u0027\n-count\u003d1`\\n- `go test ./table -run\n\u0027TestRejectStructurallyInvalidHistoricalPartitionSpec$\u0027 -count\u003d1`\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "f503b457b9a274c5faa81af1ec9ccf7457da7d0f",
      "tree": "76d896d5746d4365c368c22a5035fa1b645d9b00",
      "parents": [
        "00acae94e06b8c387b1326c040d16ef51b2a99d8"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 31 15:24:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 15:24:54 2026 +0200"
      },
      "message": "fix(name_mapping): isolate updated mappings (#1547)\n\n## What changed\n\nClone mapped field IDs and name slices while building the result of\nUpdateNameMapping. Fields without IDs now retain the independently\nvisited child results as well.\n\n## Why\n\nThe update visitor reused FieldID pointers from the input mapping.\nMutating the returned mapping could therefore change the original.\nAppending a renamed field to a name slice with spare capacity could also\nwrite into the input backing array during the update itself.\n\nThe regression test covers both alias paths across parent and nested\nfields.\n\n## Testing\n\n- go test .\n- go vet .\n- go test ./..."
    },
    {
      "commit": "00acae94e06b8c387b1326c040d16ef51b2a99d8",
      "tree": "f784aa0aaa4e8abb6fc840a6e0b5683be987e44d",
      "parents": [
        "492b945b03db0c146057eeced4d1dae0bb5fb840"
      ],
      "author": {
        "name": "Badal Prasad Singh",
        "email": "badal@datazip.io",
        "time": "Fri Jul 31 02:10:32 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 22:40:32 2026 +0200"
      },
      "message": "fix(table): mark transaction committed only after successful commit (#1603)\n\n## Description\n\nFixes #1602, issue of setting `t.committed \u003d true` before invoking\n`doCommit`.\n\nMoved `t.committed \u003d true` so it is set only after `doCommit` returns\nsuccessfully. The transaction is left usable for retry. Add a test for\nit.\n\n---------\n\nSigned-off-by: badalprasadsingh \u003cbadal@datazip.io\u003e"
    },
    {
      "commit": "492b945b03db0c146057eeced4d1dae0bb5fb840",
      "tree": "90f3fae981c9039521319c3531731cf3a7367d76",
      "parents": [
        "f3045ff16a9b8be5c05660d4da951b4f282d14a4"
      ],
      "author": {
        "name": "jj.lee",
        "email": "63435794+jx2lee@users.noreply.github.com",
        "time": "Fri Jul 31 04:25:50 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 21:25:50 2026 +0200"
      },
      "message": "test(table): use SerializeDV for scanner DV fixture (#1608)\n\n## Summary\n- Replace hand-built deletion vector serialization in scanner tests with\n`dv.SerializeDV`\n- Remove obsolete `binary` / `crc32` test-only serialization logic and\nTODO\n\n  ## Testing\n  - `go test ./table`"
    },
    {
      "commit": "f3045ff16a9b8be5c05660d4da951b4f282d14a4",
      "tree": "2aee21b9e98636808f106483549f959304c64e88",
      "parents": [
        "83f062352a33bf3f2fd80c6a8228ba387035ddb5"
      ],
      "author": {
        "name": "Badal Prasad Singh",
        "email": "badal@datazip.io",
        "time": "Fri Jul 31 00:27:35 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 20:57:35 2026 +0200"
      },
      "message": "fix(table): preserve branch/tag rentention settings on snapshot ref updates (#1601)\n\n## Description\n\nFixes #1600, silent loss of _snapshot-ref_ retention settings\n(`min-snapshots-to-keep`, `max-snapshot-age-ms`, `max-ref-age-ms`) on\nevery commit and rollback.\n\nHave added the necessary tests for it.\n\n---------\n\nSigned-off-by: badalprasadsingh \u003cbadal@datazip.io\u003e"
    },
    {
      "commit": "83f062352a33bf3f2fd80c6a8228ba387035ddb5",
      "tree": "ae10e13386b1d5af80681d9cfbb56c1d8dbb9fa1",
      "parents": [
        "b3888c308e41717c145bada42c014fe3e6705d7d"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Thu Jul 30 10:02:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 10:02:12 2026 +0200"
      },
      "message": "fix(puffin): constrain DV cardinality to int64 (#1587)\n\n## What changed\n\nValidate deletion-vector cardinality properties as non-negative signed\n64-bit values. Add coverage for the maximum accepted value and the first\nvalue above the signed range.\n\n## Why\n\nThe writer accepted the full `uint64` range while the deletion-vector\nreader and manifest record counts use `int64`. This allowed writing\nPuffin files that the reader could not parse.\n\n## Testing\n\n- `go test ./puffin`\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "b3888c308e41717c145bada42c014fe3e6705d7d",
      "tree": "12875599530e8c9172dc653a8976714e9b16f6e2",
      "parents": [
        "4ede599b3a678ad4f21f117dd387b6b4e9d5ffde"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Thu Jul 30 10:01:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 10:01:55 2026 +0200"
      },
      "message": "fix(substrait): preserve nested reference paths (#1588)\n\n## What changed\n\nBuild Substrait field references from the positional path retained by\nthe bound Iceberg reference. Add coverage for a colliding top-level leaf\nname, a missing top-level leaf name, and a deeply nested field.\n\n## Why\n\nThe converter rebound only the leaf field name. Nested references could\ntherefore target a same-named top-level column or fail conversion when\nno top-level field shared that name.\n\n## Testing\n\n- `go test ./table/substrait`\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "4ede599b3a678ad4f21f117dd387b6b4e9d5ffde",
      "tree": "d3e0b2c10093c19733d0ed9def3394b887035ec9",
      "parents": [
        "9cc9211c9a8497572e9e4b4b7e1ec5ff0144011e"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Thu Jul 30 09:58:45 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 09:58:45 2026 +0200"
      },
      "message": "fix(table): calculate snapshot summary totals as int64 (#1582)\n\n## What changed\n\nCalculate snapshot summary totals with `GetInt64` and format them with\n`strconv.FormatInt`.\n\n## Why\n\nSnapshot totals such as record counts and file sizes were parsed through\nplatform-sized `int`. On 32-bit systems, ordinary Iceberg totals above\n`math.MaxInt32` could truncate or wrap.\n\nThe regression test adds values above the 32-bit range and verifies\ntheir exact totals.\n\n## Testing\n\n- `go test ./table`\n- `go vet ./table`\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "9cc9211c9a8497572e9e4b4b7e1ec5ff0144011e",
      "tree": "48edf895dc1780707177f79390f79629167406ff",
      "parents": [
        "c23b885d3cdb174868af47bfe11bc578bae65af4"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Thu Jul 30 09:55:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 09:55:54 2026 +0200"
      },
      "message": "fix(types): floor negative nanosecond timestamps (#1586)\n\n## What changed\n\nUse signed floor division when converting nanosecond timestamps to\nmicroseconds. Add boundary coverage around zero and verify casts to both\ntimestamp variants.\n\n## Why\n\nGo integer division truncates toward zero. For pre-epoch timestamps with\nsub-microsecond precision, that could move the converted value forward\nby one microsecond and even cross the Unix epoch.\n\n## Testing\n\n- `go test .`\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "c23b885d3cdb174868af47bfe11bc578bae65af4",
      "tree": "b1f0015fd52409a95a73a1ab2401d2f984987c2a",
      "parents": [
        "488fb35efd984803439e54e92245014503e6c15e"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Thu Jul 30 09:49:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 09:49:54 2026 +0200"
      },
      "message": "fix(table): reject duplicate snapshot IDs (#1592)\n\n## What changed\n\nValidate snapshot ID uniqueness before constructing or checking snapshot\nreferences. Add coverage for identical duplicate snapshots and duplicate\nIDs carrying different manifest lists.\n\n## Why\n\nSnapshot lookup returns the first matching entry. Accepting duplicate\nIDs made current-snapshot and reference resolution depend on JSON array\norder.\n\n## Testing\n\n- `go test ./table -run\n\u0027Test(RejectDuplicateSnapshotIDs|MetadataV[123]Parsing)$\u0027 -count\u003d1`\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "488fb35efd984803439e54e92245014503e6c15e",
      "tree": "5f9b49e09ab3f5d286ff35f373c8a659c665c583",
      "parents": [
        "eb8285ce8075a2f8784fbb3f118ec6567a005697"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Thu Jul 30 09:40:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 09:40:43 2026 +0200"
      },
      "message": "fix(dv): validate metadata before writing Puffin files (#1589)\n\n## What changed\n\nConstruct and validate all deletion-vector `DataFile` metadata before\nwriting the completed Puffin object. Extend the unknown-spec regression\ntest to verify that no file is created.\n\n## Why\n\n`Flush` previously persisted the Puffin file before resolving partition\nspecs and building manifest metadata. A metadata error could therefore\nreturn failure while leaving an unreferenced object in storage.\n\n## Testing\n\n- `go test ./table/dv`\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "eb8285ce8075a2f8784fbb3f118ec6567a005697",
      "tree": "139c8a4a47046158a098efb06aab20b97efa45d0",
      "parents": [
        "5ce9c0a71c1b84e92a14bb1ce70cc884da494993"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Thu Jul 30 00:12:23 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 00:12:23 2026 +0200"
      },
      "message": "fix(table): cancel record writes on iterator stop (#1595)\n\n## What changed\n\nCancel unpartitioned and fanout write contexts when a `WriteRecords`\nconsumer stops early. Fanout writes now cancel record production\nindependently from rolling writers and release retained batches left in\nthe input queue after workers exit.\n\nAdd unpartitioned and partitioned regressions showing that breaking\nafter the first output stops the source before all records are consumed.\nThe checked allocator also verifies retained Arrow memory is released.\n\n## Why\n\nThe iterator previously drained output without canceling production.\nBreaking iteration could therefore consume the entire source, continue\nwriting files, or never return for an unbounded source.\n\n## Testing\n\n- `go test ./table -run\n\u0027Test(WriteRecords|FanoutWriter|PositionDeletePartitionedFanoutWriter)\u0027\n-count\u003d1 -timeout\u003d180s`\\n- `go test -race ./table -run\n\u0027TestWriteRecords/TestEarlyStopCancelsRecordProduction\u0027 -count\u003d1\n-timeout\u003d120s`\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "5ce9c0a71c1b84e92a14bb1ce70cc884da494993",
      "tree": "931e70a38a7107945414b0c6d47861bb6cd0c8a6",
      "parents": [
        "59a02254a25d74e041a0b26b795cb58b9cd8fb29"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Thu Jul 30 00:03:50 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 00:03:50 2026 +0200"
      },
      "message": "fix(view): protect identifiers from mutation (#1543)\n\n## What changed\n\nCopy view identifiers when constructing a View and when returning\nIdentifier.\n\n## Why\n\nView identifiers are slices. New previously retained the caller-owned\nslice, and Identifier returned that same backing array. Either path\nallowed external mutation to change the identity of an existing View and\naffect equality or catalog behavior.\n\nThe regression test mutates both the constructor input and the getter\nresult.\n\n## Testing\n\n- go test ./view\n- go vet ./view\n- go test ./..."
    },
    {
      "commit": "59a02254a25d74e041a0b26b795cb58b9cd8fb29",
      "tree": "fe2d4d5cea01052f203ce7c1d1e2aa46f35a7f15",
      "parents": [
        "d555e4fedc914415d3ee1f68f5ba458263bafce0"
      ],
      "author": {
        "name": "Tanmay Rauth",
        "email": "t_rauth@apple.com",
        "time": "Wed Jul 29 14:32:22 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 23:32:22 2026 +0200"
      },
      "message": "feat(expr): bbox predicate evaluation for geo pruning (#1597)\n\nSummary\n  \nAdds geospatial BBoxIntersects / BBoxNotIntersects predicates and wires\nthem through the bound-expression visitor so data files whose geometry\nbounds cannot overlap a query bounding box are pruned during scan\nplanning. Reuses the single-value geo bound codec from #993.\n \n\n  What changed\n\n- New predicate (exprs.go) — BoundingBox (planar XY box with\nValid/Equals) and the BBoxIntersects(term, bbox) constructor producing\nan UnboundPredicate. Binding rejects non-geo columns (ErrType) and\ntransform terms; the constructor panics on a nil term or an invalid box\n(NaN / inverted min-max) to prevent silent mis-pruning. Adds\nOpBBoxIntersects / OpBBoxNotIntersects (kept after the boolean ops so\nexisting op-group ranges are undisturbed) with negation and String()\nsupport.\n- Visitor interface (visitors.go) — adds VisitBBoxIntersects /\nVisitBBoxNotIntersects to BoundBooleanExprVisitor, dispatches them in\nVisitBoundPredicate, and collapses bbox predicates to AlwaysTrue in the\nsanitize visitor (they carry query-box coordinates, not user literals,\nand have no REST JSON form). The row-level exprEvaluator conservatively\nkeeps every row — full ST_Intersects remains a query-engine\n  concern.\n- Data-file pruning (table/evaluators.go) —\ninclusiveMetricsEval.VisitBBoxIntersects prunes files whose decoded\ngeometry bounds are disjoint from the query box (all-null files also\nprune). Geography columns are never pruned (geodesic bounds may cross\nthe antimeridian). BBoxNotIntersects, strict eval, manifest eval, and\nthe bloom collector all conservatively keep files, since bounds alone\ncan\u0027t answer them.\n- Codec helpers (table/internal/geo_codec.go) — GeoBoundsXY decodes\nlower/upper bounds to planar extents (fails safe on\nmissing/malformed/NaN), and BBoxIntersectsXY does the closed-interval\noverlap test.\n- Serialization guards — bbox predicates return an error from\nMarshalJSON (no REST grammar) and panic in the substrait converter,\nsince they exist only for local scan planning.\n\n  Testing\n\nexpr_bbox_test.go, table/evaluators_geo_test.go,\ntable/internal/geo_codec_internal_test.go, and additions to\nvisitors_test.go cover construction/validation, binding, pruning\ndecisions (geometry vs geography, null-only, malformed bounds), and\ncodec edge cases.\n\nCloses: #994"
    },
    {
      "commit": "d555e4fedc914415d3ee1f68f5ba458263bafce0",
      "tree": "74ff254fa586fba32eb9e0cbc2620980c227fab6",
      "parents": [
        "3f482bda0cbd556132efa131af5f9222fd2fa89e"
      ],
      "author": {
        "name": "jj.lee",
        "email": "63435794+jx2lee@users.noreply.github.com",
        "time": "Wed Jul 29 03:57:32 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 20:57:32 2026 +0200"
      },
      "message": "fix(cli): report successful drop operation in cli (#1566)\n\n## Summary\n- Priunt success message after dropping a namespace/table\n- Printt distinct success message when `drop table --purge`\n\n## Testing\ndid not add test code (no exists create/rename cmd)\n\n- `go test ./cmd/iceberg` (fails existing build error in\n`table/arrow_scanner.go:1027:35: undefined: internal`)"
    },
    {
      "commit": "3f482bda0cbd556132efa131af5f9222fd2fa89e",
      "tree": "66e8c531fd1b323fb987d3e91b0b0cc8117de333",
      "parents": [
        "ebb84a000a45f7d76091130060d754d0b2dd1026"
      ],
      "author": {
        "name": "İrem Çağın Yurttürk",
        "email": "cagin.yurtturk@getbruin.com",
        "time": "Tue Jul 28 19:51:54 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 18:51:54 2026 +0200"
      },
      "message": "fix(ci): make labeler config parse under actions/labeler v7 (#1565)\n\nA stricter YAML parser bundled with `actions/labeler` v7 (bumped in\n#1553) rejects the multi-line **flow-style** list in\n`.github/labeler.yml`, so the `triage` job now fails on every PR:\n\n```\nYAMLException: deficient indentation (29:7)  in .github/labeler.yml\n```\n\nThe flow-style `any-glob-to-any-file: [ … ]` block was added in #910 and\nparsed fine under v6.x; v7 tightened parsing and exposed it.\n\n## Fix\n\nConvert the `INFRA` rule\u0027s `any-glob-to-any-file` list from flow style\nto canonical block style. Single file, no label-semantics change — the\nsame seven globs still map to `INFRA`. Verified the result parses\ncleanly with `js-yaml` (the parser `actions/labeler` uses).\n\n## Note for reviewers\n\nThis PR\u0027s own `triage` check will still show red: the labeler workflow\nruns on `pull_request_target` and reads the config from the **base\nbranch** (still-broken `main`), not from this PR. It will go green for\nall PRs once this merges.\n\nSigned-off-by: iremcaginyurtturk \u003ccagin.yurtturk@getbruin.com\u003e"
    },
    {
      "commit": "ebb84a000a45f7d76091130060d754d0b2dd1026",
      "tree": "969349e304e9aed5d9871ab1d253c44a69a6fe13",
      "parents": [
        "4c1bccbe11863da521aa3b4f454a3c32dc1580f3"
      ],
      "author": {
        "name": "İrem Çağın Yurttürk",
        "email": "cagin.yurtturk@getbruin.com",
        "time": "Tue Jul 28 19:29:26 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 18:29:26 2026 +0200"
      },
      "message": "fix(table): repair broken build from stray internal.Enumerated reference (#1564)\n\n## What\n\n`table/arrow_scanner.go` fails to compile on `main`:\n\n```\ntable/arrow_scanner.go:1027:35: undefined: internal\n```\n\n## Why\n\n#1426 aliased the `github.com/apache/iceberg-go/table/internal` import\nto `tblutils` and updated the call sites, but one reference in\n`processRecords` was left as bare `internal.Enumerated`. There is no\nimport named `internal`, so the `table` package no longer builds.\n\n## Fix\n\nPoint the stray reference at the `tblutils` alias, matching the 22 other\ncall sites in the file. One line.\n\n```\ngo build ./table/   # passes\ngo vet ./table/     # passes\n```"
    },
    {
      "commit": "4c1bccbe11863da521aa3b4f454a3c32dc1580f3",
      "tree": "f0b98928930c89f82813a16fcc1f9a76ef5dcc3c",
      "parents": [
        "f219c1ede6d5ea5ed2f7e1acaf00d054a49d092e"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 23:22:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 23:22:12 2026 +0200"
      },
      "message": "fix(sql): hide namespace exists sentinel property (#1411)\n\n## Motivation\n\nSQL catalogs persist an internal `exists\u003dtrue` row for namespaces that\nhave no user properties. Returning that row leaks an implementation\ndetail through the public namespace-properties API, while allowing\ncallers to mutate it can make a sentinel-only namespace disappear.\n\n## Changes\n\n- hide the internal `exists` sentinel from `LoadNamespaceProperties`\n- reject the reserved key during namespace creation, updates, and\nremovals with `iceberg.ErrInvalidArgument`\n- preserve the sentinel internally for namespaces created without user\nproperties\n- cover sentinel-only and user-property namespaces on the in-memory and\nSQLite backends\n\nRemoval is intentionally rejected rather than treated as a\nmissing-property no-op because deleting the only sentinel row would\nremove the namespace itself.\n\n## Testing\n\n- `go test ./catalog/sql`\n- full CI"
    },
    {
      "commit": "f219c1ede6d5ea5ed2f7e1acaf00d054a49d092e",
      "tree": "ec3be386c2d2505ae58e14384faf0e3b41e5c351",
      "parents": [
        "8696265d64a87424fdf20589ef65e572e464a1c7"
      ],
      "author": {
        "name": "İrem Çağın Yurttürk",
        "email": "cagin.yurtturk@getbruin.com",
        "time": "Mon Jul 27 23:44:28 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:44:28 2026 -0400"
      },
      "message": "fix(io): strip GCS-incompatible SDK headers on reads too (#1559)\n\n## Problem\n\nThe `strip-gcs-incompatible-signed-headers` compat-mode middleware\n(added in #1423) removes `Amz-Sdk-Invocation-Id`, `Amz-Sdk-Request`, and\n`Accept-Encoding` from the SigV4 signed set only for **write**\noperations (`PutObject`/`UploadPart`/`CreateMultipartUpload`).\n\n**Read** operations still send those headers signed. Against Google\nCloud Storage\u0027s S3-interop endpoint (`storage.googleapis.com` + HMAC\nkeys), a `GetObject`/`HeadObject` — e.g. loading a table\u0027s\n`metadata.json` during a table-exists check — is rejected with:\n\n```\noperation error S3: GetObject, StatusCode: 403 ... SignatureDoesNotMatch\n```\n\nSo writes succeed but any subsequent read fails, making GCS S3-interop\nunusable end to end.\n\n## Fix\n\n- Strip `Amz-Sdk-Invocation-Id` / `Amz-Sdk-Request` / `Accept-Encoding`\nbefore signing on **every** operation (reads included), so none of them\nare in the SigV4 signed set.\n- Re-add `Accept-Encoding: identity` in a middleware inserted **after**\nthe Signing step, so it is present on the wire but **not** part of the\nsignature. This keeps GCS happy while still suppressing the HTTP\ntransport\u0027s transparent gzip, so read responses aren\u0027t silently\ndecompressed (which would drop `Content-Length`).\n\nOnly affects the S3-compat path (`s3.compat-mode\u003dtrue`); the normal AWS\nS3 path is unchanged."
    },
    {
      "commit": "8696265d64a87424fdf20589ef65e572e464a1c7",
      "tree": "211b986fca22eb50d6cf09b744c0af031ce50c0a",
      "parents": [
        "4bf26f3a09c82f343b87c3efd00a62f3e8e4826b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 16:31:09 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:31:09 2026 -0400"
      },
      "message": "build(deps): bump the gomod_updates group with 8 updates (#1554)\n\nBumps the gomod_updates group with 8 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n|\n[cloud.google.com/go/storage](https://github.com/googleapis/google-cloud-go)\n| `1.63.0` | `1.63.1` |\n|\n[github.com/RoaringBitmap/roaring/v2](https://github.com/RoaringBitmap/roaring)\n| `2.19.0` | `2.21.0` |\n|\n[github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2)\n| `1.32.29` | `1.32.30` |\n|\n[github.com/aws/aws-sdk-go-v2/credentials](https://github.com/aws/aws-sdk-go-v2)\n| `1.19.28` | `1.19.29` |\n|\n[github.com/aws/aws-sdk-go-v2/service/glue](https://github.com/aws/aws-sdk-go-v2)\n| `1.148.0` | `1.148.1` |\n|\n[github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2)\n| `1.105.0` | `1.105.2` |\n| [github.com/aws/smithy-go](https://github.com/aws/smithy-go) |\n`1.27.3` | `1.27.4` |\n|\n[google.golang.org/api](https://github.com/googleapis/google-api-go-client)\n| `0.288.0` | `0.289.0` |\n\nUpdates `cloud.google.com/go/storage` from 1.63.0 to 1.63.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/releases\"\u003ecloud.google.com/go/storage\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003estorage: v1.63.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/compare/storage/v1.63.0...storage/v1.63.1\"\u003e1.63.1\u003c/a\u003e\n(2026-07-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eo11y:\u003c/strong\u003e Regenerate clients for LRO tracing (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-cloud-go/issues/20107\"\u003e#20107\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/779074edd267a26520bae459307660953129eb07\"\u003e779074e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e Minor documentation fix (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-cloud-go/issues/20139\"\u003e#20139\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/37f17453d73ad7abbc424f51b51ff82f8004c5b2\"\u003e37f1745\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/ad1a4bff8775b71bd212fc9e97ab954d86202b00\"\u003e\u003ccode\u003ead1a4bf\u003c/code\u003e\u003c/a\u003e\nchore(main): release storage 1.63.1 (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-cloud-go/issues/20130\"\u003e#20130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/37f17453d73ad7abbc424f51b51ff82f8004c5b2\"\u003e\u003ccode\u003e37f1745\u003c/code\u003e\u003c/a\u003e\nfix(storage): Minor documentation fix (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-cloud-go/issues/20139\"\u003e#20139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/779074edd267a26520bae459307660953129eb07\"\u003e\u003ccode\u003e779074e\u003c/code\u003e\u003c/a\u003e\nfeat(o11y): regenerate clients for LRO tracing (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-cloud-go/issues/20107\"\u003e#20107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/e1011e2d2c43a838abe080ad9d3f614f8c92e55a\"\u003e\u003ccode\u003ee1011e2\u003c/code\u003e\u003c/a\u003e\nfeat(bigtable): add Session primitives (AttemptOutcome, vRPC ctx,\nmsgtype) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/a50338e36874536293858b70463fdad4817714bd\"\u003e\u003ccode\u003ea50338e\u003c/code\u003e\u003c/a\u003e\nchore(main): release bigquery 1.78.0 (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-cloud-go/issues/20127\"\u003e#20127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/b9d638d0f7ebeabbdbe99ab0764e63c4d108f528\"\u003e\u003ccode\u003eb9d638d\u003c/code\u003e\u003c/a\u003e\nchore(librarian): align Go toolchain to 1.25.0 (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-cloud-go/issues/20129\"\u003e#20129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/e67d752238880037a1c622c938730e8a233d0b0c\"\u003e\u003ccode\u003ee67d752\u003c/code\u003e\u003c/a\u003e\nchore(main): release firestore 1.23.0 (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-cloud-go/issues/19997\"\u003e#19997\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/fec9388c26ab4c4b71c4c24abf0e0674c395e4fa\"\u003e\u003ccode\u003efec9388\u003c/code\u003e\u003c/a\u003e\nchore: remove bq v2 from release-please config (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-cloud-go/issues/20128\"\u003e#20128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/75a5d59b99251a947fd7627ec036ccbf5f6b6b7e\"\u003e\u003ccode\u003e75a5d59\u003c/code\u003e\u003c/a\u003e\nfix(agentregistry): correct go min version (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-cloud-go/issues/20108\"\u003e#20108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/commit/8eb3be67ba18722e93545f3b32f6540012e3e7cd\"\u003e\u003ccode\u003e8eb3be6\u003c/code\u003e\u003c/a\u003e\nchore: wire up mod validation action (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-cloud-go/issues/20125\"\u003e#20125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/googleapis/google-cloud-go/compare/compute/v1.63.0...storage/v1.63.1\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github.com/RoaringBitmap/roaring/v2` from 2.19.0 to 2.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/releases\"\u003egithub.com/RoaringBitmap/roaring/v2\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.21.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eperf: optimize bitmapContainer.fillLeastSignificant16bits using\nTrailingZeros64 by \u003ca\nhref\u003d\"https://github.com/perfloop-agent\"\u003e\u003ccode\u003e@​perfloop-agent\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/RoaringBitmap/roaring/pull/534\"\u003eRoaringBitmap/roaring#534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/compare/2.20.0...v2.21.0\"\u003ehttps://github.com/RoaringBitmap/roaring/compare/2.20.0...v2.21.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.20.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ebitmap: use bits.LeadingZeros64 intrinsic in maximum() by \u003ca\nhref\u003d\"https://github.com/TheHippo\"\u003e\u003ccode\u003e@​TheHippo\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/RoaringBitmap/roaring/pull/529\"\u003eRoaringBitmap/roaring#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebsi: vectorize and simplify batch equal with direct bitwise set\noperations by \u003ca\nhref\u003d\"https://github.com/perfloop-agent\"\u003e\u003ccode\u003e@​perfloop-agent\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/RoaringBitmap/roaring/pull/532\"\u003eRoaringBitmap/roaring#532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf(BSI): bound BatchEqual memory on scattered IN-lists with\nparallel scan fallback by \u003ca\nhref\u003d\"https://github.com/perfloop-agent\"\u003e\u003ccode\u003e@​perfloop-agent\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/RoaringBitmap/roaring/pull/533\"\u003eRoaringBitmap/roaring#533\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/perfloop-agent\"\u003e\u003ccode\u003e@​perfloop-agent\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/RoaringBitmap/roaring/pull/532\"\u003eRoaringBitmap/roaring#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/compare/v2.19.0...2.20.0\"\u003ehttps://github.com/RoaringBitmap/roaring/compare/v2.19.0...2.20.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/commit/44559cd5c0e01050eb7ee87feb73a1b6ee90cf43\"\u003e\u003ccode\u003e44559cd\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/RoaringBitmap/roaring/issues/534\"\u003e#534\u003c/a\u003e\nfrom perfloop/perfloop-pr-open-gtf1q33kjy\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/commit/cfa8937027f792d7a096f249e9954d4e8de14cb9\"\u003e\u003ccode\u003ecfa8937\u003c/code\u003e\u003c/a\u003e\nMerge branch \u0027master\u0027 into perfloop-pr-open-gtf1q33kjy\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/commit/c260295acb308c7c642ae7ab9c59b358ff2449da\"\u003e\u003ccode\u003ec260295\u003c/code\u003e\u003c/a\u003e\nremoving silly compatibility layer\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/commit/135991202823bdc86b7538501b23c714faf6ca86\"\u003e\u003ccode\u003e1359912\u003c/code\u003e\u003c/a\u003e\nperf: optimize bitmapContainer.fillLeastSignificant16bits using\nTrailingZeros64\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/commit/7900bdcab8fb280efad0b6473cb3eff7dc4e96fb\"\u003e\u003ccode\u003e7900bdc\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/RoaringBitmap/roaring/issues/533\"\u003e#533\u003c/a\u003e\nfrom perfloop/perfloop-pr-open-knxx61ntcy\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/commit/873a1e356cf5dd8688f43c7fcd82dccd159a9b63\"\u003e\u003ccode\u003e873a1e3\u003c/code\u003e\u003c/a\u003e\nRemove stars section from README\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/commit/3e12681deefc53401b7ce1c72899fdb24cfc00a9\"\u003e\u003ccode\u003e3e12681\u003c/code\u003e\u003c/a\u003e\nperf(BSI): keep BatchEqual fallback in-package, drop exported\nhelper\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/commit/e0a362eaccf8f1645f7fce53d0bb7d58fa8470a3\"\u003e\u003ccode\u003ee0a362e\u003c/code\u003e\u003c/a\u003e\nperf(BSI): bound BatchEqual memory on scattered IN-lists with parallel\nscan f...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/commit/dac837d3bbc8b5113e8a313372139bf0cf4f7a23\"\u003e\u003ccode\u003edac837d\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/RoaringBitmap/roaring/issues/532\"\u003e#532\u003c/a\u003e\nfrom perfloop/perfloop-pr-open-j88wgmc05t\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/commit/7fe6c1a7bfd5c32f1f574a5bd99e67f36b651537\"\u003e\u003ccode\u003e7fe6c1a\u003c/code\u003e\u003c/a\u003e\nperf: root BatchEqual in the existence bitmap and share plane work\nacross values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/RoaringBitmap/roaring/compare/v2.19.0...v2.21.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github.com/aws/aws-sdk-go-v2/config` from 1.32.29 to 1.32.30\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/2704503be74c5f1c49b2fb5d1c9cb46b5fabcdb2\"\u003e\u003ccode\u003e2704503\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-13\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/2475fc6b28465173bdef88cff5e0bbbdb6f1b24d\"\u003e\u003ccode\u003e2475fc6\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/89ce46e6351004d830a5481d1e639fac3b6586c3\"\u003e\u003ccode\u003e89ce46e\u003c/code\u003e\u003c/a\u003e\nUpdate endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/97a7b5555b92bd932b977998bbeb205f2984a1c1\"\u003e\u003ccode\u003e97a7b55\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/472756aa53e9edf3369d69bb3cdd66b3908f984c\"\u003e\u003ccode\u003e472756a\u003c/code\u003e\u003c/a\u003e\nadd response snapshot tests for new wave 1 (partial cbor) (\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/3471\"\u003e#3471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/3133b1d537ced4144103b33460fe73c7082a62bf\"\u003e\u003ccode\u003e3133b1d\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-10\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/2d7d0f831cdfb369f7698de45c0d6f8f74f6ca7c\"\u003e\u003ccode\u003e2d7d0f8\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/cdc7fe361da37345462ad00d03273464fd0b7220\"\u003e\u003ccode\u003ecdc7fe3\u003c/code\u003e\u003c/a\u003e\nUpdate endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/d41266e1451258cb008c87cd1a7d807e079f188a\"\u003e\u003ccode\u003ed41266e\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/d7ac1fcd9fbf2c1a288b148c2292db01c8a3cd22\"\u003e\u003ccode\u003ed7ac1fc\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-09\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/compare/config/v1.32.29...config/v1.32.30\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github.com/aws/aws-sdk-go-v2/credentials` from 1.19.28 to\n1.19.29\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/2704503be74c5f1c49b2fb5d1c9cb46b5fabcdb2\"\u003e\u003ccode\u003e2704503\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-13\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/2475fc6b28465173bdef88cff5e0bbbdb6f1b24d\"\u003e\u003ccode\u003e2475fc6\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/89ce46e6351004d830a5481d1e639fac3b6586c3\"\u003e\u003ccode\u003e89ce46e\u003c/code\u003e\u003c/a\u003e\nUpdate endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/97a7b5555b92bd932b977998bbeb205f2984a1c1\"\u003e\u003ccode\u003e97a7b55\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/472756aa53e9edf3369d69bb3cdd66b3908f984c\"\u003e\u003ccode\u003e472756a\u003c/code\u003e\u003c/a\u003e\nadd response snapshot tests for new wave 1 (partial cbor) (\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/3471\"\u003e#3471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/3133b1d537ced4144103b33460fe73c7082a62bf\"\u003e\u003ccode\u003e3133b1d\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-10\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/2d7d0f831cdfb369f7698de45c0d6f8f74f6ca7c\"\u003e\u003ccode\u003e2d7d0f8\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/cdc7fe361da37345462ad00d03273464fd0b7220\"\u003e\u003ccode\u003ecdc7fe3\u003c/code\u003e\u003c/a\u003e\nUpdate endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/d41266e1451258cb008c87cd1a7d807e079f188a\"\u003e\u003ccode\u003ed41266e\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/d7ac1fcd9fbf2c1a288b148c2292db01c8a3cd22\"\u003e\u003ccode\u003ed7ac1fc\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-09\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/compare/credentials/v1.19.28...credentials/v1.19.29\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github.com/aws/aws-sdk-go-v2/service/glue` from 1.148.0 to\n1.148.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/de4f646b7271b9698a67f63bff876ad40eb690ca\"\u003e\u003ccode\u003ede4f646\u003c/code\u003e\u003c/a\u003e\nRelease 2024-02-20\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/a31327acbd07ca1d42ca83107993d7bcfa223dd8\"\u003e\u003ccode\u003ea31327a\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/d1333952165a0f8ceea1c7de5d20d06af4925c30\"\u003e\u003ccode\u003ed133395\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/b135f991ff3bef2f7c9ce8117dd59e1abae43a0f\"\u003e\u003ccode\u003eb135f99\u003c/code\u003e\u003c/a\u003e\nfix(2502): zero region should explicitly fail endpoint resolution (\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/2503\"\u003e#2503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/7cb105f17b3a12d4b69219ce9957d517dba299d8\"\u003e\u003ccode\u003e7cb105f\u003c/code\u003e\u003c/a\u003e\nRelease 2024-02-19\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/7f9c4d2eee136647971352eb9d06b196cc9abaf0\"\u003e\u003ccode\u003e7f9c4d2\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/a60d4b2fc37bab61dc219d9e210369c4bf4e445e\"\u003e\u003ccode\u003ea60d4b2\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/be0accd6c6511b727d38cbe98489753e481d68b3\"\u003e\u003ccode\u003ebe0accd\u003c/code\u003e\u003c/a\u003e\nfix: panic due to potentially uncomparable wrapped fn in express_resolve\n(\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/2500\"\u003e#2500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/compare/service/ec2/v1.148.0...service/ec2/v1.148.1\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.105.0 to\n1.105.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/0ffbcb97471596ba81b4df82a95b7d7d12b261b1\"\u003e\u003ccode\u003e0ffbcb9\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-16\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/2a0ecfb483abfe255009604b1c8d7db4ea4497d9\"\u003e\u003ccode\u003e2a0ecfb\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/20ba39f06feaaa14fed77bce28f6b646852af813\"\u003e\u003ccode\u003e20ba39f\u003c/code\u003e\u003c/a\u003e\nUpdate endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/89252131887f6ad82ffe9dd983e0707671a7ba23\"\u003e\u003ccode\u003e8925213\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/47e09a2b476cc53c85834778b71c688412081dc0\"\u003e\u003ccode\u003e47e09a2\u003c/code\u003e\u003c/a\u003e\nadd replace annotations for new generic client auth/endpoints (\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/3477\"\u003e#3477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/1dc42b2f6c32a454cf827e6ce9ce4f60b78f8c45\"\u003e\u003ccode\u003e1dc42b2\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-15\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/b945893fc20519091c148d868fb11484fb9e6647\"\u003e\u003ccode\u003eb945893\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/ccbf00ce1491d39353dabdc6fe7bfdab53a2f624\"\u003e\u003ccode\u003eccbf00c\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/b8df6dc6b5f74691c15e6aca2d664200f4325978\"\u003e\u003ccode\u003eb8df6dc\u003c/code\u003e\u003c/a\u003e\nenable schema-serde cbor wave 1 (\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/00daf3640234e0941ba63b2a12cfd21d4e6b2d15\"\u003e\u003ccode\u003e00daf36\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-14\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.105.0...service/s3/v1.105.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github.com/aws/smithy-go` from 1.27.3 to 1.27.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/smithy-go/commit/870555a648218564f98a855d655e6cc12031c4e3\"\u003e\u003ccode\u003e870555a\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-16\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/smithy-go/commit/b06f3539e8869ff06475f11f9a033e9ae7d625a3\"\u003e\u003ccode\u003eb06f353\u003c/code\u003e\u003c/a\u003e\nchangelogs\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/smithy-go/commit/25d4f57cd7cff9c219d3b7b9ed83485dade64da1\"\u003e\u003ccode\u003e25d4f57\u003c/code\u003e\u003c/a\u003e\nadd temporary maven manual publish\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/smithy-go/commit/90775c9524f7ca365ad30d163951e3e8e742ae3a\"\u003e\u003ccode\u003e90775c9\u003c/code\u003e\u003c/a\u003e\nmake generic clients work mostly (\u003ca\nhref\u003d\"https://redirect.github.com/aws/smithy-go/issues/687\"\u003e#687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/smithy-go/commit/da34ee1870ca8553aca2d2d8781b666e49efb54d\"\u003e\u003ccode\u003eda34ee1\u003c/code\u003e\u003c/a\u003e\nadd maven staging artifact\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/smithy-go/commit/1eb963bdba884ee91ebb36384c0fc5ca7a79c225\"\u003e\u003ccode\u003e1eb963b\u003c/code\u003e\u003c/a\u003e\nadd serde response snapshot gen (\u003ca\nhref\u003d\"https://redirect.github.com/aws/smithy-go/issues/685\"\u003e#685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/smithy-go/commit/a349439bbd28b1e55e79e49df983c175273d3a1a\"\u003e\u003ccode\u003ea349439\u003c/code\u003e\u003c/a\u003e\nreplace literal unicodes with escaped forms (\u003ca\nhref\u003d\"https://redirect.github.com/aws/smithy-go/issues/684\"\u003e#684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/smithy-go/commit/82c56314ed24d14c65977a22db5cada5ca1b3e31\"\u003e\u003ccode\u003e82c5631\u003c/code\u003e\u003c/a\u003e\ngenerate serde snapshot tests (\u003ca\nhref\u003d\"https://redirect.github.com/aws/smithy-go/issues/682\"\u003e#682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/aws/smithy-go/compare/v1.27.3...v1.27.4\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google.golang.org/api` from 0.288.0 to 0.289.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/releases\"\u003egoogle.golang.org/api\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.289.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/compare/v0.288.0...v0.289.0\"\u003e0.289.0\u003c/a\u003e\n(2026-07-16)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3649\"\u003e#3649\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/6e259cbb923dd10f071e2f724be23914f8ccd78b\"\u003e6e259cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3652\"\u003e#3652\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/5116a48938fa4674df57289ca63e75d209c06e10\"\u003e5116a48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3653\"\u003e#3653\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/6c876b4102b2db7dabc6a0f69eb0e854d298f48d\"\u003e6c876b4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3655\"\u003e#3655\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/69af635fafd38d3623f52c173715883d93d7ead5\"\u003e69af635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3656\"\u003e#3656\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/1fc8f4539d0bf40f8272c1eb36f1e84cfa0ecea7\"\u003e1fc8f45\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3657\"\u003e#3657\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/aa8d256cb84dcc38ee3888c983515cae283d7436\"\u003eaa8d256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3659\"\u003e#3659\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/af8d03336daad8d37f8de7e4692a8b67a7d35b7e\"\u003eaf8d033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md\"\u003egoogle.golang.org/api\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/compare/v0.288.0...v0.289.0\"\u003e0.289.0\u003c/a\u003e\n(2026-07-16)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3649\"\u003e#3649\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/6e259cbb923dd10f071e2f724be23914f8ccd78b\"\u003e6e259cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3652\"\u003e#3652\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/5116a48938fa4674df57289ca63e75d209c06e10\"\u003e5116a48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3653\"\u003e#3653\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/6c876b4102b2db7dabc6a0f69eb0e854d298f48d\"\u003e6c876b4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3655\"\u003e#3655\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/69af635fafd38d3623f52c173715883d93d7ead5\"\u003e69af635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3656\"\u003e#3656\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/1fc8f4539d0bf40f8272c1eb36f1e84cfa0ecea7\"\u003e1fc8f45\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3657\"\u003e#3657\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/aa8d256cb84dcc38ee3888c983515cae283d7436\"\u003eaa8d256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3659\"\u003e#3659\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/af8d03336daad8d37f8de7e4692a8b67a7d35b7e\"\u003eaf8d033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/783bf4bedcc95794980288f1e9928582e9a231b9\"\u003e\u003ccode\u003e783bf4b\u003c/code\u003e\u003c/a\u003e\nchore(main): release 0.289.0 (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3650\"\u003e#3650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/af8d03336daad8d37f8de7e4692a8b67a7d35b7e\"\u003e\u003ccode\u003eaf8d033\u003c/code\u003e\u003c/a\u003e\nfeat(all): auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3659\"\u003e#3659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/080002a0ba10410dcd7c018483bfbdf27c2160ff\"\u003e\u003ccode\u003e080002a\u003c/code\u003e\u003c/a\u003e\nchore: constrain go version updates in renovate (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3658\"\u003e#3658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/aa8d256cb84dcc38ee3888c983515cae283d7436\"\u003e\u003ccode\u003eaa8d256\u003c/code\u003e\u003c/a\u003e\nfeat(all): auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3657\"\u003e#3657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/1fc8f4539d0bf40f8272c1eb36f1e84cfa0ecea7\"\u003e\u003ccode\u003e1fc8f45\u003c/code\u003e\u003c/a\u003e\nfeat(all): auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3656\"\u003e#3656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/7ac76e4d28ec9dd11c07746b48262426805a0084\"\u003e\u003ccode\u003e7ac76e4\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump golang.org/x/crypto from 0.51.0 to 0.52.0 in\n/internal/koko...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/8a47d2a5ae242a70b49a82a25eb72754dcc9acfc\"\u003e\u003ccode\u003e8a47d2a\u003c/code\u003e\u003c/a\u003e\nchore(all): update all (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3654\"\u003e#3654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/69af635fafd38d3623f52c173715883d93d7ead5\"\u003e\u003ccode\u003e69af635\u003c/code\u003e\u003c/a\u003e\nfeat(all): auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3655\"\u003e#3655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/6c876b4102b2db7dabc6a0f69eb0e854d298f48d\"\u003e\u003ccode\u003e6c876b4\u003c/code\u003e\u003c/a\u003e\nfeat(all): auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3653\"\u003e#3653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/5116a48938fa4674df57289ca63e75d209c06e10\"\u003e\u003ccode\u003e5116a48\u003c/code\u003e\u003c/a\u003e\nfeat(all): auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3652\"\u003e#3652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/compare/v0.288.0...v0.289.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s major version (unless you unignore this specific\ndependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s minor version (unless you unignore this specific\ndependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR\nand stop Dependabot creating any more for the specific dependency\n(unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore\nconditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will\nremove the ignore condition of the specified dependency and ignore\nconditions\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "4bf26f3a09c82f343b87c3efd00a62f3e8e4826b",
      "tree": "832c3d290892223ff221c74b88f09493ea3d96dc",
      "parents": [
        "fad386daf4c2b8bdaceb9330119c6925c94a7e26"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 16:31:06 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:31:06 2026 -0400"
      },
      "message": "build(deps): bump actions/labeler from 6.2.0 to 7.0.0 (#1553)\n\nBumps [actions/labeler](https://github.com/actions/labeler) from 6.2.0\nto 7.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/actions/labeler/releases\"\u003eactions/labeler\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eEnhancements:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate to ESM and update dependencies by \u003ca\nhref\u003d\"https://github.com/chiranjib-swain\"\u003e\u003ccode\u003e@​chiranjib-swain\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/labeler/pull/949\"\u003eactions/labeler#949\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/actions/labeler/compare/v6...v7.0.0\"\u003ehttps://github.com/actions/labeler/compare/v6...v7.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/labeler/commit/bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13\"\u003e\u003ccode\u003ebf12e9b\u003c/code\u003e\u003c/a\u003e\nfeat: migrate to ESM and update dependencies (\u003ca\nhref\u003d\"https://redirect.github.com/actions/labeler/issues/949\"\u003e#949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/actions/labeler/compare/b8dd2d9be0f68b860e7dae5dae7d772984eacd6d...bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/labeler\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d6.2.0\u0026new-version\u003d7.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fad386daf4c2b8bdaceb9330119c6925c94a7e26",
      "tree": "9e51817f4004fccf4ed0deb58bb5214d4996d145",
      "parents": [
        "20629f74695a812768284c34d613d596c314ddda"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 16:31:02 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:31:02 2026 -0400"
      },
      "message": "build(deps): bump actions/setup-go from 6.5.0 to 7.0.0 (#1552)\n\nBumps [actions/setup-go](https://github.com/actions/setup-go) from 6.5.0\nto 7.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/actions/setup-go/releases\"\u003eactions/setup-go\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate to ESM and upgrade dependencies by \u003ca\nhref\u003d\"https://github.com/priyagupta108\"\u003e\u003ccode\u003e@​priyagupta108\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-go/pull/763\"\u003eactions/setup-go#763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​actions/cache\u003c/code\u003e to 6.2.0 by \u003ca\nhref\u003d\"https://github.com/philip-gai\"\u003e\u003ccode\u003e@​philip-gai\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-go/pull/771\"\u003eactions/setup-go#771\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/philip-gai\"\u003e\u003ccode\u003e@​philip-gai\u003c/code\u003e\u003c/a\u003e made\ntheir first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-go/pull/771\"\u003eactions/setup-go#771\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/actions/setup-go/compare/v6...v7.0.0\"\u003ehttps://github.com/actions/setup-go/compare/v6...v7.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-go/commit/b7ad1dad31e06c5925ef5d2fc7ad053ef454303e\"\u003e\u003ccode\u003eb7ad1da\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump \u003ccode\u003e@​actions/cache\u003c/code\u003e to 6.2.0 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-go/issues/771\"\u003e#771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-go/commit/0778a10ce47b5d450cf60fb94fafad4330008a35\"\u003e\u003ccode\u003e0778a10\u003c/code\u003e\u003c/a\u003e\nMigrate to ESM and upgrade dependencies (\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-go/issues/763\"\u003e#763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/actions/setup-go/compare/924ae3a1cded613372ab5595356fb5720e22ba16...b7ad1dad31e06c5925ef5d2fc7ad053ef454303e\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/setup-go\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d6.5.0\u0026new-version\u003d7.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "20629f74695a812768284c34d613d596c314ddda",
      "tree": "49fd4aa099065a77562f0a8fe3652865ee50c2ce",
      "parents": [
        "8faa6600a30ec5776b29fe8a1f4d1aa8ff4a747f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 16:30:59 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:30:59 2026 -0400"
      },
      "message": "build(deps): bump actions/checkout from 7.0.0 to 7.0.1 (#1551)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0\nto 7.0.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/actions/checkout/releases\"\u003eactions/checkout\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eskip running unsafe pr check if input is default by \u003ca\nhref\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2518\"\u003eactions/checkout#2518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrim only ascii whitespace for branch by \u003ca\nhref\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2521\"\u003eactions/checkout#2521\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eescape values passed to --unset by \u003ca\nhref\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2530\"\u003eactions/checkout#2530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVarious dependency updates\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/actions/checkout/compare/v7...v7.0.1\"\u003ehttps://github.com/actions/checkout/compare/v7...v7.0.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/actions/checkout/blob/main/CHANGELOG.md\"\u003eactions/checkout\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003ev7.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSkip running unsafe pr check if input is default by \u003ca\nhref\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2518\"\u003eactions/checkout#2518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTrim only ascii whitespace for branch by \u003ca\nhref\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2521\"\u003eactions/checkout#2521\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape values passed to --unset by \u003ca\nhref\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2530\"\u003eactions/checkout#2530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVarious dependency updates\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev7.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBlock checking out fork PR for pull_request_target and workflow_run\nby \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2454\"\u003eactions/checkout#2454\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVarious dependency updates\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix checkout init for SHA-256 repositories by \u003ca\nhref\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2439\"\u003eactions/checkout#2439\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: expand merge commit SHA regex and add SHA-256 test cases by \u003ca\nhref\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2414\"\u003eactions/checkout#2414\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix tag handling: preserve annotations and explicit fetch-tags by \u003ca\nhref\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2356\"\u003eactions/checkout#2356\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd worktree support for persist-credentials includeIf by \u003ca\nhref\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2327\"\u003eactions/checkout#2327\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePersist creds to a separate file by \u003ca\nhref\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2286\"\u003eactions/checkout#2286\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate README to include Node.js 24 support details and requirements\nby \u003ca href\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2248\"\u003eactions/checkout#2248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePort v6 cleanup to v5 by \u003ca\nhref\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2301\"\u003eactions/checkout#2301\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate actions checkout to use node 24 by \u003ca\nhref\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2226\"\u003eactions/checkout#2226\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.3.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePort v6 cleanup to v4 by \u003ca\nhref\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2305\"\u003eactions/checkout#2305\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: update README.md by \u003ca\nhref\u003d\"https://github.com/motss\"\u003e\u003ccode\u003e@​motss\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/1971\"\u003eactions/checkout#1971\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd internal repos for checking out multiple repositories by \u003ca\nhref\u003d\"https://github.com/mouismail\"\u003e\u003ccode\u003e@​mouismail\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/1977\"\u003eactions/checkout#1977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocumentation update - add recommended permissions to Readme by \u003ca\nhref\u003d\"https://github.com/benwells\"\u003e\u003ccode\u003e@​benwells\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2043\"\u003eactions/checkout#2043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust positioning of user email note and permissions heading by \u003ca\nhref\u003d\"https://github.com/joshmgross\"\u003e\u003ccode\u003e@​joshmgross\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2044\"\u003eactions/checkout#2044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate README.md by \u003ca\nhref\u003d\"https://github.com/nebuk89\"\u003e\u003ccode\u003e@​nebuk89\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2194\"\u003eactions/checkout#2194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CODEOWNERS for actions by \u003ca\nhref\u003d\"https://github.com/TingluoHuang\"\u003e\u003ccode\u003e@​TingluoHuang\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2224\"\u003eactions/checkout#2224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate package dependencies by \u003ca\nhref\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/2236\"\u003eactions/checkout#2236\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eurl-helper.ts\u003c/code\u003e now leverages well-known environment\nvariables by \u003ca href\u003d\"https://github.com/jww3\"\u003e\u003ccode\u003e@​jww3\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/1941\"\u003eactions/checkout#1941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand unit test coverage for \u003ccode\u003eisGhes\u003c/code\u003e by \u003ca\nhref\u003d\"https://github.com/jww3\"\u003e\u003ccode\u003e@​jww3\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/1946\"\u003eactions/checkout#1946\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCheck out other refs/* by commit if provided, fall back to ref by \u003ca\nhref\u003d\"https://github.com/orhantoy\"\u003e\u003ccode\u003e@​orhantoy\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/pull/1924\"\u003eactions/checkout#1924\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/checkout/commit/3d3c42e5aac5ba805825da76410c181273ba90b1\"\u003e\u003ccode\u003e3d3c42e\u003c/code\u003e\u003c/a\u003e\nprep v7.0.1 release (\u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/issues/2531\"\u003e#2531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/checkout/commit/28802689a136bfcdb721715abd713740beecbe07\"\u003e\u003ccode\u003e2880268\u003c/code\u003e\u003c/a\u003e\nescape values passed to --unset (\u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/issues/2530\"\u003e#2530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/checkout/commit/12cd2235efa0937479335606d7c3ac9f6c0973b1\"\u003e\u003ccode\u003e12cd223\u003c/code\u003e\u003c/a\u003e\ntrim only ascii whitespace for branch (\u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/issues/2521\"\u003e#2521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/checkout/commit/62661c4e71a304b2823ed026347b8d34c3eac541\"\u003e\u003ccode\u003e62661c4\u003c/code\u003e\u003c/a\u003e\nskip running unsafe pr check if input is default (\u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/issues/2518\"\u003e#2518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/checkout/commit/e8d4307400f9427dba7cb98e488d6ab85f1cec5f\"\u003e\u003ccode\u003ee8d4307\u003c/code\u003e\u003c/a\u003e\nBump the minor-actions-dependencies group with 2 updates (\u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/issues/2499\"\u003e#2499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/checkout/commit/631c942040754b6e095e929c1677c07e10ed4f87\"\u003e\u003ccode\u003e631c942\u003c/code\u003e\u003c/a\u003e\neslint 9 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/issues/2474\"\u003e#2474\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/checkout/commit/4f1f4aec02e41874fa0262ea8ff5172d7978ad1e\"\u003e\u003ccode\u003e4f1f4ae\u003c/code\u003e\u003c/a\u003e\nBump actions/upload-artifact from 4 to 7 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/issues/2476\"\u003e#2476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/checkout/commit/ba097532fb203f7e88c9c3c0b899b49469908a92\"\u003e\u003ccode\u003eba09753\u003c/code\u003e\u003c/a\u003e\nBump actions/checkout from 6 to 7 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/issues/2488\"\u003e#2488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/checkout/commit/b9e0990d219a03df7633c93f6f005a8fecbcab22\"\u003e\u003ccode\u003eb9e0990\u003c/code\u003e\u003c/a\u003e\nBump docker/login-action from 3.3.0 to 4.2.0 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/issues/2479\"\u003e#2479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/checkout/commit/e8cb398be4a550817e382abf69e4c12c76fce1f2\"\u003e\u003ccode\u003ee8cb398\u003c/code\u003e\u003c/a\u003e\nBump docker/build-push-action from 6.5.0 to 7.2.0 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/checkout/issues/2478\"\u003e#2478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/actions/checkout/compare/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0...3d3c42e5aac5ba805825da76410c181273ba90b1\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/checkout\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d7.0.0\u0026new-version\u003d7.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8faa6600a30ec5776b29fe8a1f4d1aa8ff4a747f",
      "tree": "6274f7cc6b3db8d60d2a82c3e95bf7ef1bfe3930",
      "parents": [
        "eeada16f710a6164bfd51d70c17c1afbfac08484"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 16:30:56 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:30:56 2026 -0400"
      },
      "message": "build(deps): bump zizmorcore/zizmor-action from 0.5.7 to 0.6.0 (#1550)\n\nBumps\n[zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action)\nfrom 0.5.7 to 0.6.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/releases\"\u003ezizmorcore/zizmor-action\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.0\u003c/h2\u003e\n\u003cp\u003ezizmor 1.27.0 is now the default version used by the action.\u003c/p\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFold Docker image pull output into a collapsed Actions log group by\n\u003ca href\u003d\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e with\n\u003ca href\u003d\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/pull/132\"\u003ezizmorcore/zizmor-action#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReadme: document missing inputs by \u003ca\nhref\u003d\"https://github.com/staabm\"\u003e\u003ccode\u003e@​staabm\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/pull/130\"\u003ezizmorcore/zizmor-action#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: block version sync workflow on forks by \u003ca\nhref\u003d\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/pull/129\"\u003ezizmorcore/zizmor-action#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSync zizmor versions by \u003ca\nhref\u003d\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/pull/137\"\u003ezizmorcore/zizmor-action#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecollect\u003c/code\u003e input by \u003ca\nhref\u003d\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/pull/139\"\u003ezizmorcore/zizmor-action#139\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\nwith \u003ca href\u003d\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/pull/132\"\u003ezizmorcore/zizmor-action#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/staabm\"\u003e\u003ccode\u003e@​staabm\u003c/code\u003e\u003c/a\u003e made\ntheir first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/pull/130\"\u003ezizmorcore/zizmor-action#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e made\ntheir first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/pull/129\"\u003ezizmorcore/zizmor-action#129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/compare/v0.5.7...v0.6.0\"\u003ehttps://github.com/zizmorcore/zizmor-action/compare/v0.5.7...v0.6.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/6599ee8b7a49aef6a770f63d261d214911a7ce02\"\u003e\u003ccode\u003e6599ee8\u003c/code\u003e\u003c/a\u003e\nAdd \u003ccode\u003ecollect\u003c/code\u003e input (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/139\"\u003e#139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/bec05c80b8586b8cbc030450e4fa4e82b83a9427\"\u003e\u003ccode\u003ebec05c8\u003c/code\u003e\u003c/a\u003e\nSync zizmor versions (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/137\"\u003e#137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/cf5954948fbc9d5b9460b774e281e3387b989ea6\"\u003e\u003ccode\u003ecf59549\u003c/code\u003e\u003c/a\u003e\nAdd issue templates (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/f72bf176f67e8007f87b16d80f9880ece648aa65\"\u003e\u003ccode\u003ef72bf17\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump github/codeql-action/upload-sarif (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/b2a6fac1a76b42abf3794cd06cef23af2f13e590\"\u003e\u003ccode\u003eb2a6fac\u003c/code\u003e\u003c/a\u003e\nci: block version sync workflow on forks (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/129\"\u003e#129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/2d88f441dcd818e199d649f55e9a347196a52262\"\u003e\u003ccode\u003e2d88f44\u003c/code\u003e\u003c/a\u003e\nReadme: document missing inputs (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/130\"\u003e#130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/d81e2769a6bdcb1d076bf52b5e7e663c881f94e7\"\u003e\u003ccode\u003ed81e276\u003c/code\u003e\u003c/a\u003e\nFold Docker image pull output into a collapsed Actions log group (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/8c13c5382c13a16f7ece1f965891708b819d28b2\"\u003e\u003ccode\u003e8c13c53\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump the github-actions group with 2 updates (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/2f8e9c6f609a49998258063502592a555c964847\"\u003e\u003ccode\u003e2f8e9c6\u003c/code\u003e\u003c/a\u003e\nREADME: bump versions (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/128\"\u003e#128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/compare/192e21d79ab29983730a13d1382995c2307fbcaa...6599ee8b7a49aef6a770f63d261d214911a7ce02\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dzizmorcore/zizmor-action\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d0.5.7\u0026new-version\u003d0.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "eeada16f710a6164bfd51d70c17c1afbfac08484",
      "tree": "b246a392ea2f9dde5b128a1675a58441ca557cba",
      "parents": [
        "b6eeb11d711acf404f2b07e74f31bc945d465a0b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 16:30:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:30:53 2026 -0400"
      },
      "message": "build(deps): bump the codeql-action group with 2 updates (#1549)\n\nBumps the codeql-action group with 2 updates:\n[github/codeql-action/init](https://github.com/github/codeql-action) and\n[github/codeql-action/analyze](https://github.com/github/codeql-action).\n\nUpdates `github/codeql-action/init` from 4.37.0 to 4.37.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003egithub/codeql-action/init\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.37.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eUpcoming breaking change\u003c/em\u003e: Add a deprecation warning for\ncustomers using CodeQL version 2.20.6 and earlier. These versions of\nCodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise\nServer 3.16, and will be unsupported by the next minor release of the\nCodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3956\"\u003e#3956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1\"\u003e2.26.1\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4019\"\u003e#4019\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/blob/main/CHANGELOG.md\"\u003egithub/codeql-action/init\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCodeQL Action Changelog\u003c/h1\u003e\n\u003cp\u003eSee the \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003ereleases\npage\u003c/a\u003e for the relevant changes to the CodeQL CLI and language\npacks.\u003c/p\u003e\n\u003ch2\u003e[UNRELEASED]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThis version of the CodeQL Action adds support for the\n\u003ccode\u003etools\u003c/code\u003e input for the \u003ccode\u003ecodeql-action/init\u003c/code\u003e step to\nbe specified using a \u003ccode\u003egithub-codeql-tools\u003c/code\u003e \u003ca\nhref\u003d\"https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization\"\u003erepository\nproperty\u003c/a\u003e. This feature will gradually be rolled out following the\nrelease of this version. Once rolled out, this allows for the CodeQL CLI\nversion that is used in GitHub-managed workflows, such as Default Setup,\nto be set to a custom value. For example, customers who run into issues\nwith rate limits when a new CodeQL CLI version is released can set the\nvalue to \u003ccode\u003etoolcache\u003c/code\u003e to always use the CodeQL CLI version\nthat is available in the runner toolcache. For Advanced Setup workflows,\nthe value provided for \u003ccode\u003etools\u003c/code\u003e in the workflow definition\nalways takes precedence unless the value of the repository property\nstarts with \u003ccode\u003e!\u003c/code\u003e. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4037\"\u003e#4037\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.3 - 22 Jul 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.37.2 - 21 Jul 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe new address format for the \u003ccode\u003econfig-file\u003c/code\u003e input that\nwas introduced in CodeQL Action 4.37.0 is now enabled by default. In\naddition to the format described there, the \u003ccode\u003eremote\u003d\u003c/code\u003e prefix\ncan now be used to explicitly indicate that the input refers to a remote\nfile. All previous input formats continue to be accepted as well. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4023\"\u003e#4023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe CodeQL Action can now make use of \u003ca\nhref\u003d\"https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries\"\u003econfigured\nprivate registries\u003c/a\u003e in Default Setup to retrieve CodeQL configuration\nfiles from remote repositories that require authentication. This will\nallow customers to store their CodeQL configuration in a single\nrepository that can then be referenced by Default Setup workflows in\nother repositories. We expect to roll this and other, related changes\nout to everyone in July. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4007\"\u003e#4007\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.1 - 16 Jul 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eUpcoming breaking change\u003c/em\u003e: Add a deprecation warning for\ncustomers using CodeQL version 2.20.6 and earlier. These versions of\nCodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise\nServer 3.16, and will be unsupported by the next minor release of the\nCodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3956\"\u003e#3956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1\"\u003e2.26.1\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4019\"\u003e#4019\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.0 - 08 Jul 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0\"\u003e2.26.0\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3995\"\u003e#3995\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIn addition to the existing input format, the\n\u003ccode\u003econfig-file\u003c/code\u003e input for the \u003ccode\u003ecodeql-action/init\u003c/code\u003e\nstep will soon support a new \u003ccode\u003e[owner/]repo[@ref][:path]\u003c/code\u003e\nformat. All components except the repository name are optional. If\nomitted, \u003ccode\u003eowner\u003c/code\u003e defaults to the same owner as the repository\nthe analysis is running for, \u003ccode\u003eref\u003c/code\u003e to \u003ccode\u003emain\u003c/code\u003e, and\n\u003ccode\u003epath\u003c/code\u003e to \u003ccode\u003e.github/codeql-action.yaml\u003c/code\u003e. Support\nfor this format ships in this version of the CodeQL Action, but will\nonly be enabled over the coming weeks. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3973\"\u003e#3973\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.36.3 - 01 Jul 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.36.2 - 04 Jun 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCache CodeQL CLI version information across Actions steps. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3943\"\u003e#3943\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReduce requests while waiting for analysis processing by using\nexponential backoff when polling SARIF processing status. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3937\"\u003e#3937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6\"\u003e2.25.6\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3948\"\u003e#3948\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.36.1 - 02 Jun 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.36.0 - 22 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eBreaking change\u003c/em\u003e: Bump the minimum required CodeQL bundle\nversion to 2.19.4. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3894\"\u003e#3894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for SHA-256 Git object IDs. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3893\"\u003e#3893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5\"\u003e2.25.5\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3926\"\u003e#3926\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.5 - 15 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWe have improved how the JavaScript bundles for the CodeQL Action\nare generated to avoid duplication across bundles and reduce the size of\nthe repository by around 70%. This should have no effect on the runtime\nbehaviour of the CodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3899\"\u003e#3899\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/7188fc363630916deb702c7fdcf4e481b751f97a\"\u003e\u003ccode\u003e7188fc3\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4020\"\u003e#4020\u003c/a\u003e\nfrom github/update-v4.37.1-9e7c07009\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/c8b5f69be686908c3dfd844428137d56fe80c936\"\u003e\u003ccode\u003ec8b5f69\u003c/code\u003e\u003c/a\u003e\nUpdate changelog for v4.37.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/9e7c070092090e89e8b3d62f977d4456e0732cd7\"\u003e\u003ccode\u003e9e7c070\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4014\"\u003e#4014\u003c/a\u003e\nfrom github/mbg/explicit-remote-prefix\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/3492b7e9ab96e28b1d8b971345d30e929c6f8fee\"\u003e\u003ccode\u003e3492b7e\u003c/code\u003e\u003c/a\u003e\nChange \u003ccode\u003eREMOTE_PATH_PREFIX\u003c/code\u003e to \u003ccode\u003eremote\u003d\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/3654baa924bc6456db54002581cb7c1c877548c4\"\u003e\u003ccode\u003e3654baa\u003c/code\u003e\u003c/a\u003e\nMerge remote-tracking branch \u0027origin/main\u0027 into\nmbg/explicit-remote-prefix\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/2d682ac05f1b3588aaff3814826bede39b9ba6bb\"\u003e\u003ccode\u003e2d682ac\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4017\"\u003e#4017\u003c/a\u003e\nfrom github/dependabot/github_actions/dot-github/wor...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/23f6a50753a88efd9b7ae8687b29f6bdb65f6250\"\u003e\u003ccode\u003e23f6a50\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4009\"\u003e#4009\u003c/a\u003e\nfrom github/mbg/action-state/additions\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/1ee3c75d1988ab8621f01ebb165115c38d56df91\"\u003e\u003ccode\u003e1ee3c75\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4018\"\u003e#4018\u003c/a\u003e\nfrom github/dependabot/github_actions/dot-github/wor...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/e053684dc500899b0b5520edc8549ac0f1ed730b\"\u003e\u003ccode\u003ee053684\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4015\"\u003e#4015\u003c/a\u003e\nfrom github/dependabot/npm_and_yarn/npm-minor-fd2e83...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/6803c5671d2f87a83ed96e151c441b1cb3bdc66a\"\u003e\u003ccode\u003e6803c56\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4019\"\u003e#4019\u003c/a\u003e\nfrom github/update-bundle/codeql-bundle-v2.26.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/github/codeql-action/compare/99df26d4f13ea111d4ec1a7dddef6063f76b97e9...7188fc363630916deb702c7fdcf4e481b751f97a\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github/codeql-action/analyze` from 4.37.0 to 4.37.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003egithub/codeql-action/analyze\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.37.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eUpcoming breaking change\u003c/em\u003e: Add a deprecation warning for\ncustomers using CodeQL version 2.20.6 and earlier. These versions of\nCodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise\nServer 3.16, and will be unsupported by the next minor release of the\nCodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3956\"\u003e#3956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1\"\u003e2.26.1\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4019\"\u003e#4019\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/blob/main/CHANGELOG.md\"\u003egithub/codeql-action/analyze\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCodeQL Action Changelog\u003c/h1\u003e\n\u003cp\u003eSee the \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003ereleases\npage\u003c/a\u003e for the relevant changes to the CodeQL CLI and language\npacks.\u003c/p\u003e\n\u003ch2\u003e[UNRELEASED]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThis version of the CodeQL Action adds support for the\n\u003ccode\u003etools\u003c/code\u003e input for the \u003ccode\u003ecodeql-action/init\u003c/code\u003e step to\nbe specified using a \u003ccode\u003egithub-codeql-tools\u003c/code\u003e \u003ca\nhref\u003d\"https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization\"\u003erepository\nproperty\u003c/a\u003e. This feature will gradually be rolled out following the\nrelease of this version. Once rolled out, this allows for the CodeQL CLI\nversion that is used in GitHub-managed workflows, such as Default Setup,\nto be set to a custom value. For example, customers who run into issues\nwith rate limits when a new CodeQL CLI version is released can set the\nvalue to \u003ccode\u003etoolcache\u003c/code\u003e to always use the CodeQL CLI version\nthat is available in the runner toolcache. For Advanced Setup workflows,\nthe value provided for \u003ccode\u003etools\u003c/code\u003e in the workflow definition\nalways takes precedence unless the value of the repository property\nstarts with \u003ccode\u003e!\u003c/code\u003e. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4037\"\u003e#4037\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.3 - 22 Jul 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.37.2 - 21 Jul 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe new address format for the \u003ccode\u003econfig-file\u003c/code\u003e input that\nwas introduced in CodeQL Action 4.37.0 is now enabled by default. In\naddition to the format described there, the \u003ccode\u003eremote\u003d\u003c/code\u003e prefix\ncan now be used to explicitly indicate that the input refers to a remote\nfile. All previous input formats continue to be accepted as well. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4023\"\u003e#4023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe CodeQL Action can now make use of \u003ca\nhref\u003d\"https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries\"\u003econfigured\nprivate registries\u003c/a\u003e in Default Setup to retrieve CodeQL configuration\nfiles from remote repositories that require authentication. This will\nallow customers to store their CodeQL configuration in a single\nrepository that can then be referenced by Default Setup workflows in\nother repositories. We expect to roll this and other, related changes\nout to everyone in July. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4007\"\u003e#4007\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.1 - 16 Jul 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eUpcoming breaking change\u003c/em\u003e: Add a deprecation warning for\ncustomers using CodeQL version 2.20.6 and earlier. These versions of\nCodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise\nServer 3.16, and will be unsupported by the next minor release of the\nCodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3956\"\u003e#3956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1\"\u003e2.26.1\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4019\"\u003e#4019\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.0 - 08 Jul 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0\"\u003e2.26.0\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3995\"\u003e#3995\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIn addition to the existing input format, the\n\u003ccode\u003econfig-file\u003c/code\u003e input for the \u003ccode\u003ecodeql-action/init\u003c/code\u003e\nstep will soon support a new \u003ccode\u003e[owner/]repo[@ref][:path]\u003c/code\u003e\nformat. All components except the repository name are optional. If\nomitted, \u003ccode\u003eowner\u003c/code\u003e defaults to the same owner as the repository\nthe analysis is running for, \u003ccode\u003eref\u003c/code\u003e to \u003ccode\u003emain\u003c/code\u003e, and\n\u003ccode\u003epath\u003c/code\u003e to \u003ccode\u003e.github/codeql-action.yaml\u003c/code\u003e. Support\nfor this format ships in this version of the CodeQL Action, but will\nonly be enabled over the coming weeks. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3973\"\u003e#3973\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.36.3 - 01 Jul 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.36.2 - 04 Jun 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCache CodeQL CLI version information across Actions steps. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3943\"\u003e#3943\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReduce requests while waiting for analysis processing by using\nexponential backoff when polling SARIF processing status. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3937\"\u003e#3937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6\"\u003e2.25.6\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3948\"\u003e#3948\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.36.1 - 02 Jun 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.36.0 - 22 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eBreaking change\u003c/em\u003e: Bump the minimum required CodeQL bundle\nversion to 2.19.4. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3894\"\u003e#3894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for SHA-256 Git object IDs. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3893\"\u003e#3893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5\"\u003e2.25.5\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3926\"\u003e#3926\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.5 - 15 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWe have improved how the JavaScript bundles for the CodeQL Action\nare generated to avoid duplication across bundles and reduce the size of\nthe repository by around 70%. This should have no effect on the runtime\nbehaviour of the CodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3899\"\u003e#3899\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/7188fc363630916deb702c7fdcf4e481b751f97a\"\u003e\u003ccode\u003e7188fc3\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4020\"\u003e#4020\u003c/a\u003e\nfrom github/update-v4.37.1-9e7c07009\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/c8b5f69be686908c3dfd844428137d56fe80c936\"\u003e\u003ccode\u003ec8b5f69\u003c/code\u003e\u003c/a\u003e\nUpdate changelog for v4.37.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/9e7c070092090e89e8b3d62f977d4456e0732cd7\"\u003e\u003ccode\u003e9e7c070\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4014\"\u003e#4014\u003c/a\u003e\nfrom github/mbg/explicit-remote-prefix\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/3492b7e9ab96e28b1d8b971345d30e929c6f8fee\"\u003e\u003ccode\u003e3492b7e\u003c/code\u003e\u003c/a\u003e\nChange \u003ccode\u003eREMOTE_PATH_PREFIX\u003c/code\u003e to \u003ccode\u003eremote\u003d\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/3654baa924bc6456db54002581cb7c1c877548c4\"\u003e\u003ccode\u003e3654baa\u003c/code\u003e\u003c/a\u003e\nMerge remote-tracking branch \u0027origin/main\u0027 into\nmbg/explicit-remote-prefix\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/2d682ac05f1b3588aaff3814826bede39b9ba6bb\"\u003e\u003ccode\u003e2d682ac\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4017\"\u003e#4017\u003c/a\u003e\nfrom github/dependabot/github_actions/dot-github/wor...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/23f6a50753a88efd9b7ae8687b29f6bdb65f6250\"\u003e\u003ccode\u003e23f6a50\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4009\"\u003e#4009\u003c/a\u003e\nfrom github/mbg/action-state/additions\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/1ee3c75d1988ab8621f01ebb165115c38d56df91\"\u003e\u003ccode\u003e1ee3c75\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4018\"\u003e#4018\u003c/a\u003e\nfrom github/dependabot/github_actions/dot-github/wor...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/e053684dc500899b0b5520edc8549ac0f1ed730b\"\u003e\u003ccode\u003ee053684\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4015\"\u003e#4015\u003c/a\u003e\nfrom github/dependabot/npm_and_yarn/npm-minor-fd2e83...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/6803c5671d2f87a83ed96e151c441b1cb3bdc66a\"\u003e\u003ccode\u003e6803c56\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4019\"\u003e#4019\u003c/a\u003e\nfrom github/update-bundle/codeql-bundle-v2.26.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/github/codeql-action/compare/99df26d4f13ea111d4ec1a7dddef6063f76b97e9...7188fc363630916deb702c7fdcf4e481b751f97a\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s major version (unless you unignore this specific\ndependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s minor version (unless you unignore this specific\ndependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR\nand stop Dependabot creating any more for the specific dependency\n(unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore\nconditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will\nremove the ignore condition of the specified dependency and ignore\nconditions\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b6eeb11d711acf404f2b07e74f31bc945d465a0b",
      "tree": "7c4f03cfec4ed951cadacf6e27217c17c30a08ef",
      "parents": [
        "36bd848da31c0e401f14d38caf70a90f3205fb8b"
      ],
      "author": {
        "name": "Neelesh Salian",
        "email": "nssalian@users.noreply.github.com",
        "time": "Mon Jul 27 13:30:04 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:30:04 2026 -0400"
      },
      "message": "fix(table): invalidate shredded variant bounds only on the field\u0027s own residual (#1555)\n\n`collectVariantBounds` dropped a shredded field\u0027s bound when any\nancestor object\u0027s residual `value` column was non-null. Now it drops\nonly when the field\u0027s own `value` residual is non-null.\n\nPer the Iceberg spec [Bounds for\nVariant](https://github.com/apache/iceberg/blob/main/format/spec.md), a\nfield\u0027s bounds must be accurate for its non-null values. A row whose\nancestor is a scalar has the descendant field absent (null), so it is\noutside the bound and cannot invalidate it. This matches Java\n`ParquetMetrics.object()`/`value()`, where the object residual is\ntrusted and only the field\u0027s own residual invalidates its bound.\n\nSerialization unchanged; only which fields get a bound. Follow-up to\n[#1478](https://github.com/apache/iceberg-go/pull/1478)."
    },
    {
      "commit": "36bd848da31c0e401f14d38caf70a90f3205fb8b",
      "tree": "78d0ab327697ccdbaac3d56a92f3ad910c544cfd",
      "parents": [
        "52b7be6da524978b9f96f7298c419a6428448909"
      ],
      "author": {
        "name": "Tanmay Rauth",
        "email": "t_rauth@apple.com",
        "time": "Mon Jul 27 13:30:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:30:01 2026 -0400"
      },
      "message": "fix(table): reject reserved metadata field IDs before reassignment (#1548)\n\nNewMetadata reassigns schema IDs before the compatibility check runs, so\na user-supplied reserved ID (e.g. _row_id) was silently remapped to a\nfresh value and later resolved to the wrong physical column against\nJava-written files. Validate the user schema against the full reserved\nrange before reassignIDs. The AddSchema check stays narrow so internal\nposition-delete schemas (file_path/pos) still pass.\n\nFixes: #1107"
    },
    {
      "commit": "52b7be6da524978b9f96f7298c419a6428448909",
      "tree": "53a161966fb548e2f719bbc4e30a42f76a7efc79",
      "parents": [
        "1d4478a2b32f81f1a69b08ae478e9df3ac23c8b8"
      ],
      "author": {
        "name": "hankivstmb",
        "email": "4664535+hankivstmb@users.noreply.github.com",
        "time": "Mon Jul 27 14:29:58 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:58 2026 -0400"
      },
      "message": "fix(table): emit Last sentinel for scan tasks with no record batches (#1537)\n\nCloses #1536.\n\n## What\n\nA filtered scan silently returns zero rows (no error) when a scan task\nearlier in plan order produces no record batches — e.g. when every row\ngroup of its file is pruned by parquet row-group statistics.\n\n`createIterator` sequences per-task records and only releases task N+1\u0027s\nrecords after task N emitted a record with `Last\u003dtrue`. The `dropFile`\npath already emits an empty sentinel batch for statically skipped files,\nbut a task whose reader yields no batches emitted nothing: the first\nsuch task stalls the sequenced channel, and on close the deferred drain\nreleases every queued record from later tasks without yielding them.\n\n## Fix\n\nEmit the same empty sentinel batch the `dropFile` path uses when\n`processRecords` finishes with no records produced.\n\n## Test\n\n`TestScanSurvivesFullyPrunedTask`: two statless data files (registered\nvia `NewDataFileBuilder`/`AddDataFiles` in one commit, so plan order is\ndeterministic and file-level pruning cannot eliminate either), scanned\nwith a filter that fully prunes the first file\u0027s row groups.\n\n- Before: `expected: []int32{1000, 1001, 1002}, actual: nil` — the\nsecond file\u0027s rows are silently dropped; a checked allocator\nadditionally reports the stalled record leak.\n- After: the second file\u0027s rows are returned; allocator clean.\n\nFound in production: a table populated by a micro-batch committer plus\nAWS Glue compaction returned 0 rows for every windowed filtered read in\niceberg-go while Athena/Trino returned millions from the same snapshot.\n\n---------\n\nSigned-off-by: Henry Berglund \u003chenry.berglund@earthscope.org\u003e\nCo-authored-by: Henry Berglund \u003chenry.berglund@earthscope.org\u003e"
    },
    {
      "commit": "1d4478a2b32f81f1a69b08ae478e9df3ac23c8b8",
      "tree": "c6ec9ebc42b2c39f4fefff4d0c6106c530f20c1a",
      "parents": [
        "2282afd688c78607c54e5fef5eba35f554cf59d8"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:55 2026 -0400"
      },
      "message": "fix(io): reject invalid MemFS offsets (#1545)\n\n## What changed\n\nValidate negative ReadAt offsets and unknown Seek whence values in\nMemFS. Both cases now return a PathError wrapping fs.ErrInvalid, and a\nrejected seek leaves the current position unchanged.\n\n## Why\n\nReadAt previously sliced with a negative index and panicked. Seek\naccepted any unknown whence value as an absolute position of zero,\nsilently moving the file cursor instead of reporting invalid input.\n\nThe regression test covers both public file operations and verifies that\nan invalid seek does not alter the cursor.\n\n## Testing\n\n- go test ./io\n- go vet ./io\n- go test ./..."
    },
    {
      "commit": "2282afd688c78607c54e5fef5eba35f554cf59d8",
      "tree": "53ffbc7b3e46e65c7909f1f2fa34ca91d279c31e",
      "parents": [
        "f8cc75a458ddbf58c31adc906b9f90e593d87216"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:52 2026 -0400"
      },
      "message": "fix(puffin): return defensive metadata copies (#1532)\n\n## Summary\n\n- return independent blob and file property metadata from Reader\n- deep-copy nested fields, properties, and compression codec pointers\n- protect cached footer metadata through ReadBlob and ReadAllBlobs\nresults\n\nThis matches the immutable metadata exposure in the Java implementation\nand the borrowed immutable accessors in Rust.\n\n## Testing\n\n- go test ./puffin -count\u003d1\n- all repository packages except io/gocloud"
    },
    {
      "commit": "f8cc75a458ddbf58c31adc906b9f90e593d87216",
      "tree": "2984f58b7d44ee282ae8664a2d5b60e8aeabe6ef",
      "parents": [
        "d9a78905172e854dc710bc5aa04bf0aa8acfe631"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:49 2026 -0400"
      },
      "message": "fix(literals): reject timestamp nanos overflow (#1533)\n\n## Summary\n\n- check microsecond timestamp bounds before converting to nanoseconds\n- return ErrBadCast instead of silently wrapping int64 values\n- cover both timestamp_ns variants and both overflow directions\n\nThis follows the checked multiplication used by the Java implementation.\n\n## Testing\n\n- go test . -count\u003d1\n- all repository packages except io/gocloud"
    },
    {
      "commit": "d9a78905172e854dc710bc5aa04bf0aa8acfe631",
      "tree": "6a12269a7d9736210969258e15db48f417dddf9d",
      "parents": [
        "d63f629632cc1680968e3ba5ddb274e138df8b0f"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:46 2026 -0400"
      },
      "message": "fix(transforms): avoid hour string overflow (#1530)\n\n## Summary\n\n- convert hour ordinals through Unix seconds instead of time.Duration\n- avoid duration overflow for valid dates outside roughly 1677 to 2262\n- cover years before and after that range\n\nThis preserves the direct epoch-hour behavior used by the Java\nimplementation.\n\n## Testing\n\n- go test . -count\u003d1\n- all repository packages except io/gocloud"
    },
    {
      "commit": "d63f629632cc1680968e3ba5ddb274e138df8b0f",
      "tree": "f5a456385cdaee5f1b46cb19242665a416676bea",
      "parents": [
        "a2f24cdd5ab942718775cfff38980bd86ca334ca"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:43 2026 -0400"
      },
      "message": "fix(transforms): bucket timestamp nanos at microsecond precision (#1529)\n\n## Problem\n\nIceberg bucket transforms hash timestamps as their microsecond integer\nrepresentation. `timestamp_ns` and `timestamptz_ns` were instead hashing\nthe raw nanosecond value, so the same instant could land in a different\nbucket depending on its timestamp precision.\n\nThat breaks partition compatibility with other Iceberg implementations\nand can make equality projection prune the wrong files.\n\n## Fix\n\nConvert nanoseconds to microseconds before Murmur3 hashing, and use the\nsame helper from both `Apply` and `Transformer`. Predicate projection\ndelegates to those paths, so all three entry points now agree.\n\nThe conversion uses floor division. This matters before the Unix epoch:\n`-1ns` belongs to microsecond `-1`, while ordinary Go integer division\nwould truncate it to `0`.\n\nThis follows the [Iceberg Appendix B hash\nrequirements](https://iceberg.apache.org/spec/#appendix-b-32-bit-hash-requirements)\nand mirrors [Java Iceberg’s timestamp-nano bucket\nimplementation](https://github.com/apache/iceberg/blob/470f4642bdda336bac5372c79c762a2654dfe3f3/api/src/main/java/org/apache/iceberg/transforms/Bucket.java#L235-L247).\n\n## Tests\n\nCoverage verifies:\n\n- `timestamp_ns` and `timestamptz_ns`\n- `Apply`, `Transformer`, and equality projection\n- positive and sub-microsecond values\n- pre-epoch values and the negative microsecond boundary\n- the Appendix B example that must produce bucket `6` for 16 buckets\n\nValidation:\n\n- `go test -count\u003d1 ./...`\n- `go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.8.0\nrun --timeout\u003d10m`\n\nFixes #1498\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "a2f24cdd5ab942718775cfff38980bd86ca334ca",
      "tree": "9f38cd4cb466767cbc44c2a0f2ed770756e2a59e",
      "parents": [
        "01422becd7b6d4d06fbc5f5979a335dfbe11f1a4"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:40 2026 -0400"
      },
      "message": "fix(partitions): return defensive field copies (#1540)\n\n## What changed\n\n- Clone SourceIDs for fields returned by PartitionSpec.Field and\nPartitionSpec.Fields.\n- Deep-copy fields returned by FieldsBySourceID instead of cloning only\nthe outer slice.\n- Preserve a nil result when no fields match a source ID.\n- Reuse the same field-copy helper during construction.\n\n## Why\n\nPartitionField is returned by value, but its SourceIDs slice previously\nshared backing storage with the spec. A caller could mutate a supposedly\nread-only result, alter later serialization, and leave the cached source\nID lookup keyed by an outdated value.\n\nThe regression test mutates results from all three getter paths and\nverifies that the spec and lookup remain unchanged.\n\n## Testing\n\n- go test .\n- go vet ."
    },
    {
      "commit": "01422becd7b6d4d06fbc5f5979a335dfbe11f1a4",
      "tree": "685ec614ee6488c27469e68ebe908ec4cdad2f6c",
      "parents": [
        "3c6aa14ea7ef070f247deb52bb49ba195cdc2dc6"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:37 2026 -0400"
      },
      "message": "fix(table): reject invalid schema entries (#1531)\n\n## Summary\n\n- reject null entries in the table metadata schemas list\n- reject duplicate schema IDs, including duplicates after the current\nschema\n- return ErrInvalidMetadata instead of allowing a nil dereference\n\nThis matches the non-null, unique schema indexing used by the Java\nimplementation.\n\n## Testing\n\n- go test ./table -count\u003d1\n- all repository packages except io/gocloud"
    },
    {
      "commit": "3c6aa14ea7ef070f247deb52bb49ba195cdc2dc6",
      "tree": "4ab2a1d17282942665af5380c1503680ea9bdbaf",
      "parents": [
        "b2975d18ccdaf284ea6c85b34530431584da77c2"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:34 2026 -0400"
      },
      "message": "fix(partitions): retain dropped-source partition fields (#1527)\n\n## Problem\n\n`PartitionSpec.PartitionType(schema)` compacted away fields whose source\ncolumns were no longer present. Manifest partition summaries are\npositional against the complete partition spec, so the compacted type\nwas unsafe for positional consumers.\n\n#1191 fixed the active manifest-pruning bug with a separate\n`manifestPartitionFields` implementation. That left two definitions of a\npartition type and made the same positional bug easy to reintroduce\nelsewhere.\n\n## Fix\n\nMake `PartitionType` retain every spec field in order and use it as the\nsingle source of truth.\n\nWhen a source column is missing, `UnknownType` is passed to the\ntransform:\n\n- source-dependent transforms such as identity, truncate, and void\nresolve to `UnknownType`\n- fixed-result transforms such as bucket and time transforms retain\ntheir known result type\n\nThis matches [current Java Iceberg\nbehavior](https://github.com/apache/iceberg/blob/470f4642bdda336bac5372c79c762a2654dfe3f3/api/src/main/java/org/apache/iceberg/PartitionSpec.java#L188-L200),\nwhich is slightly more precise than degrading every dropped-source\ntransform to unknown.\n\nThe supporting audit also:\n\n- removes `manifestPartitionFields` and uses `PartitionType` for\nmanifest evaluation\n- maps unknown partition fields to Avro `null`\n- detects unknown field IDs from the generated entry schema and\nnormalizes stale historical values to null during encoding\n- records null presence without inventing lower or upper bounds for\nunknown fields\n- preserves full field positions in partition paths and fanout records\n\n## Safety\n\nProjected filters cannot reference a dropped source ID, so unknown\nplaceholders remain unreferenced during expression binding.\n\nA rewritten historical entry may still carry the old non-null partition\nvalue. Its source type is no longer available, so that value cannot be\nencoded or compared safely. Normalizing only schema-identified unknown\nfields to null keeps the entry writable and positionally correct;\nfixed-result fields continue to encode with their known types.\n\n## Tests\n\nCoverage includes:\n\n- source-dependent and fixed-result type resolution\n- positional manifest pruning with dropped fields\n- Avro schema conversion\n- data-file codec round-trip from a stale non-null value to null\n- manifest summary construction\n- partition paths and fanout partition records\n\nValidation:\n\n- `go test -count\u003d1 ./...`\n- `go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.8.0\nrun --timeout\u003d10m`\n\nFixes #1205\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "b2975d18ccdaf284ea6c85b34530431584da77c2",
      "tree": "b4989f9dac48878c9dcc829781f8b510ea3c97b5",
      "parents": [
        "69cc74bac4c4019162e78c3de5e2ab02c1c549b0"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:30 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:30 2026 -0400"
      },
      "message": "fix(view): report metadata writer close errors (#1542)\n\n## What changed\n\nMove metadata writing into a helper with a named error result.\nCreateView now returns a View only after the metadata writer closes\nsuccessfully.\n\n## Why\n\nThe previous code deferred CheckedClose against a local error variable\nand then returned explicit values. Updating that local variable during\nthe deferred close could not change the error already selected for\nreturn. Filesystems that flush or finalize writes during Close could\ntherefore report a failure while CreateView returned success.\n\nThe regression test exercises the public CreateView path with a\nregistered filesystem whose writer fails during Close. It verifies that\nthe error is returned and no View is produced.\n\n## Testing\n\n- go test ./view\n- go vet ./view"
    },
    {
      "commit": "69cc74bac4c4019162e78c3de5e2ab02c1c549b0",
      "tree": "a1076116dd9064c611fa23db3a730b87136343b2",
      "parents": [
        "666d86e96e2b056141a61541a7373d1ab3fcdcd5"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:27 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:27 2026 -0400"
      },
      "message": "fix(view): return defensive metadata copies (#1541)\n\n## What changed\n\n- Deep-copy versions returned by CurrentVersion and Versions, including\nsummaries, representations, and default namespaces.\n- Deep-copy schemas returned by CurrentSchema, Schemas, and SchemasByID.\n- Copy nested struct, list, and map types, identifier IDs, and mutable\ndefault values.\n- Clone version logs and properties.\n- Keep CurrentSchemaID on an internal lookup path to avoid an\nunnecessary defensive copy.\n\n## Why\n\nView metadata getters previously exposed internal pointers, maps, and\nslices. Callers could mutate persisted metadata without using the\nmetadata builder. SchemasByID cloned only the map, so mutating a\nreturned schema could also invalidate the cached schema lookup.\n\nRegression coverage mutates every affected getter and separately\nverifies nested schema types, byte-slice defaults, and binary literal\ndefaults.\n\n## Testing\n\n- go test ./view\n- go vet ./view"
    },
    {
      "commit": "666d86e96e2b056141a61541a7373d1ab3fcdcd5",
      "tree": "b64b4e83679d1aa3af06ab7f9a457ef3ee863730",
      "parents": [
        "f86425aae8300cc8170de94fa5f9d4b6ef702cf8"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:23 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:23 2026 -0400"
      },
      "message": "fix(udf): protect metadata and identifiers from mutation (#1526)\n\n## Motivation\n\nUDF metadata is documented as immutable, but its getters expose internal\nmaps, slices, pointers, nested type fields, and raw JSON buffers.\nMutating a definition returned by `Definitions` or `DefinitionByID` can\neven leave the lazy definition index keyed by the old ID while the\nstored definition contains a new one.\n\nTable metadata getters already return defensive copies following #1444.\nApplying the same boundary to UDF metadata keeps the metadata APIs\nconsistent rather than leaving UDF values externally mutable.\n\nThe loaded UDF identifier has the same aliasing problem at construction\nand access.\n\n## Changes\n\n- Return defensive copies from definition, definition-log, property, and\nraw-representation getters.\n- Deep-copy definition versions, nested UDF types, and unknown\nrepresentation JSON.\n- Make cloning part of the sealed type and representation contracts so\nnew implementations must define copy behavior.\n- Clone identifiers both when constructing a UDF and when returning its\nidentifier.\n- Document the copy guarantees on metadata getters and add mutation\nregression coverage.\n\n## Testing\n\n- `go test ./...`\n- `golangci-lint run ./udf`\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "f86425aae8300cc8170de94fa5f9d4b6ef702cf8",
      "tree": "a0ed97dbdc5683555e578e3225d6590c788f3aca",
      "parents": [
        "7288e5fab7933954ba97418af58589c13ce02124"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:20 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:20 2026 -0400"
      },
      "message": "fix(view): reject null and duplicate metadata entries (#1525)\n\n## Motivation\n\nView metadata validation dereferences every schema and version entry\nwithout first checking for `null`, so malformed metadata can panic\nduring parsing instead of returning `ErrInvalidViewMetadata`.\n\nDuplicate schema or version IDs are also accepted. The metadata keeps\nall duplicate entries in the public lists while its ID indexes retain\nonly one, making `CurrentSchema` and `CurrentVersion` depend on array\norder.\n\n## Changes\n\n- Reject null schema and version entries before any validation\ndereferences them.\n- Reject duplicate `schema-id` and `version-id` values before\nconstructing or using ID lookups.\n- Add regression cases for null and duplicate schemas and versions,\nincluding an explicit no-panic assertion.\n\n## Testing\n\n- `go test ./...`\n- `golangci-lint run ./view`\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "7288e5fab7933954ba97418af58589c13ce02124",
      "tree": "19d7faa819e04c6c52be05e430ed5375a07478a3",
      "parents": [
        "c598ffa0b12a9d761f5cd894e6435a077998b503"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:17 2026 -0400"
      },
      "message": "fix(manifest): return defensive metadata copies (#1544)\n\n## What changed\n\n- Clone key metadata returned by ManifestFile.\n- Deep-copy partition summaries, including bounds and nullable\nContainsNaN values.\n- Copy the nullable first row ID before returning it.\n- Reuse the partition summary copy helper for builder inputs and getter\noutputs.\n\n## Why\n\nManifestFile getters exposed slices and pointers owned by decoded\nmanifest-list entries. A caller could mutate key metadata, partition\nbounds, summary flags, or first row IDs and silently change later\nplanning or manifest rewrite behavior.\n\nThe regression test mutates every affected getter and verifies that\nsubsequent reads remain unchanged.\n\n## Testing\n\n- go test .\n- go vet .\n- go test ./..."
    },
    {
      "commit": "c598ffa0b12a9d761f5cd894e6435a077998b503",
      "tree": "522dcaf7ceebb7b858b31dbf011ab9141623b189",
      "parents": [
        "1767615cad806460670e2bc5720c50cd42732a78"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:14 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:14 2026 -0400"
      },
      "message": "fix(hive): cap lock backoff without overflow (#1539)\n\n## What changed\n\nReplace floating-point exponential backoff calculation with bounded\ninteger arithmetic. The calculation now clamps to LockMaxWaitTime before\neither the shift count or time.Duration can overflow.\n\n## Why\n\nLock retry counts are configurable. At sufficiently large attempts,\nconverting the floating-point result back to time.Duration produced a\nnegative duration. time.After then returned immediately, bypassing the\nconfigured maximum wait and causing rapid lock polling.\n\nValues below the overflow boundary retain exact exponential behavior,\nwhile larger attempts saturate at the configured maximum.\n\n## Testing\n\n- go test ./catalog/hive\n- go vet ./catalog/hive\n- boundary coverage at attempts 62 and 63 using the maximum\ntime.Duration"
    },
    {
      "commit": "1767615cad806460670e2bc5720c50cd42732a78",
      "tree": "49e00eb737fdc5a3fa520eff553c199d82ace6c0",
      "parents": [
        "ef139c7ef83866afd100521d71af975f9d3318b6"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:11 2026 -0400"
      },
      "message": "fix(table): return defensive sort field copies (#1538)\n\n## What changed\n\n- Copy the SortField slice and each SourceIDs slice in NewSortOrder.\n- Yield fresh SourceIDs slices from SortOrder.Fields.\n- Preserve the existing validation and serialization behavior.\n\n## Why\n\nSortOrder is expected to remain stable after construction and\nvalidation. Previously it retained the caller-owned field slice, while\nFields returned values whose SourceIDs still shared internal backing\narrays. Mutating either value could silently change later serialization\nand compatibility checks.\n\nThe regression test mutates both constructor inputs and iterator\nresults, then reads the order again to verify that its fields remain\nunchanged.\n\n## Testing\n\n- go test ./table\n- go vet ./table"
    },
    {
      "commit": "ef139c7ef83866afd100521d71af975f9d3318b6",
      "tree": "cc35b362e2ee6c4023f0b96384a6b0b6363e4433",
      "parents": [
        "a68b5a04958c22fe34a6a1356f9b23235b6bc869"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:07 2026 -0400"
      },
      "message": "fix(table): safely match binary equality-delete partitions (#1528)\n\n## Problem\n\nEquality-delete planning compares data-file and delete-file partition\nmaps before attaching a delete to a scan task. The maps store values as\n`any`, and the previous direct `!\u003d` comparison panicked when a supported\npartition value was non-comparable in Go.\n\nBinary and fixed partition values are represented as `[]byte`, so a\nvalid table could fail during scan planning with `comparing uncomparable\ntype []uint8`.\n\n## Fix\n\nCompare the maps with `maps.EqualFunc` and `reflect.DeepEqual`.\n\nThis keeps the existing matching contract:\n\n- both maps must contain the same field IDs\n- values must have the same concrete type and value\n- independently allocated byte slices with the same bytes match\n- different binary values or type mismatches do not match\n\nIt also remains safe if another non-comparable value reaches a custom\n`DataFile` implementation. Comparable primitives retain their previous\nequality semantics, including NaN values remaining unequal.\n\n## Tests\n\nThe tests cover the comparison helper and the real equality-delete\nmatching path, including:\n\n- equal and different byte slices\n- binary versus string values\n- comparable multi-field partitions\n- different partition field IDs\n- selecting only the matching delete file without panicking\n\nValidation:\n\n- `go test -count\u003d1 ./...`\n- `go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.8.0\nrun --timeout\u003d10m`\n\nFixes #1349\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "a68b5a04958c22fe34a6a1356f9b23235b6bc869",
      "tree": "b02d4fe1f74ec40bd3b179cf3a0c807e339e2622",
      "parents": [
        "9cdc718cb9604d8251b31033bf817ecc800f6369"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:04 2026 -0400"
      },
      "message": "fix(hadoop): return fully qualified child namespaces (#1524)\n\n## Motivation\n\nFor a nested namespace such as `[\"a\", \"child\"]`, `ListNamespaces(ctx,\n[\"a\"])` currently returns only `[\"child\"]`. The truncated identifier\ncannot be passed back to catalog methods such as `CheckNamespaceExists`,\n`LoadNamespaceProperties`, or `ListTables` because those methods\ninterpret it as a root namespace.\n\n## Changes\n\n- Build listed child identifiers by appending the directory name to the\nrequested parent.\n- Create nested namespaces through the catalog API in the regression\ntest.\n- Verify the exact fully qualified results and round-trip every returned\nidentifier through `CheckNamespaceExists`.\n\n## Testing\n\n- `go test ./...`\n- `golangci-lint run ./catalog/hadoop`\n\n---------\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "9cdc718cb9604d8251b31033bf817ecc800f6369",
      "tree": "54667dbe08f23101d4dec1bd312d4f33ed41e3bb",
      "parents": [
        "b559159e7159770f7874ba461b58edd24861fd8f"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 22:29:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:29:01 2026 -0400"
      },
      "message": "fix(glue): preserve existing column comments (#1522)\n\n## Problem\n\nGlue table updates rebuild storage descriptor columns from Iceberg\nmetadata. When a field has no Iceberg documentation, this replaces an\nexisting Glue column comment with an empty value during otherwise\nunrelated commits.\n\n## Changes\n\n- preserve existing Glue column comments by column name when the Iceberg\nfield doc is empty\n- keep non-empty Iceberg field docs authoritative\n- use the first existing comment when old Glue columns contain duplicate\nnames\n- safely handle tables without an existing storage descriptor\n\n## Testing\n\n- `go test ./...`\n- `golangci-lint run --timeout\u003d10m`"
    },
    {
      "commit": "b559159e7159770f7874ba461b58edd24861fd8f",
      "tree": "22c47ee7b95961e957f8462c73defc65585c8c65",
      "parents": [
        "152cbf183071d2d73c932cd8b0351ac5cc1647cc"
      ],
      "author": {
        "name": "Colton Loftus",
        "email": "70598503+C-Loftus@users.noreply.github.com",
        "time": "Mon Jul 27 15:49:58 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 15:49:58 2026 -0400"
      },
      "message": "feat(table): projjson read/write support (#1426)\n\nCloses #1230 \n\nThis PR threads through projjson definition metadata by using a `ctx`\nvariable in accordance to the guidance in #1230 . Note that some of the\nwriter call stack did not previously take a `ctx` variable. As such,\nanything public has an additional new private helper that takes in a\n`ctx` to resolve it.\n\nI modified `icebergCRSToGeoArrowMetadata` to take in a `ctx` as well so\nit can resolve either normal inline crs or projjson.\n\nThis ultimately ends up giving us a VisitGeometry API like the following\n\n```go\nfunc (c convertToArrow) VisitGeometry(g iceberg.GeometryType) arrow.Field {\n\tmeta, err :\u003d icebergCRSToGeoArrowMetadata(c.ctx, g.CRS())\n       /// rest removed for brevity ....\n}\n```\n\nHappy to refactor as maintainers see fit. I wasn\u0027t entirely sure on a\nfew of the refactors and whether or not there is a better way to thread\nthe context through / if it is reasonable to change the public methods\nfor things like `SchemaToArrowSchema`"
    },
    {
      "commit": "152cbf183071d2d73c932cd8b0351ac5cc1647cc",
      "tree": "1433d1b3decf91c4f4b12e216e2e669748552fd6",
      "parents": [
        "4f52e01b0c80e4afb788d770df944de5c153479e"
      ],
      "author": {
        "name": "Hectar",
        "email": "84522781+hectar-glitches@users.noreply.github.com",
        "time": "Mon Jul 27 12:49:55 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 15:49:55 2026 -0400"
      },
      "message": "feat(encryption): add KMS catalog-property registry (#1493)\n\n## What\n\nAdds a named-factory registry for `KeyManagementClient` implementations,\nselected via the `encryption.kms-type` / `encryption.kms-impl` catalog\nproperties. This completes the second half of the \"KMS client interface\"\nchecklist item from #1289 (the interface + in-memory impl landed in\n#1447).\n\nMirrors the existing `io.Register`/`io.SchemeFactory` scheme registry\npattern (`io/registry.go`) rather than introducing a new convention.\n\n## Details\n\n- `RegisterKMS(name, factory)` / `UnregisterKMS(name)` /\n`GetRegisteredKMSNames()`: a mutex-guarded named registry for\n`KMSFactory` implementations.\n- `LoadKeyManagementClient(props)`: resolves `encryption.kms-type`\nfirst,\nfalling back to `encryption.kms-impl`: returning an error wrapping the\nnew\n  `ErrKMSTypeNotFound` if neither is set or the name isn\u0027t registered.\n- Registers `\"memory\"` to `InMemoryKeyManagementClient` as the built-in\noption in `init()`.\n\n## Not in scope\n\n- `StandardEncryptionManager` (envelope KEK/DEK logic).\n\n## Testing\n\n- New unit tests in `encryption/kms_registry_test.go` covering:\nresolution via each property, `kms-type` taking precedence when both are\nset, missing/unregistered names, duplicate/nil-factory registration\npanics, and factory-error propagation.\n\n---------\n\nSigned-off-by: hectar-glitches \u003chectar@uni.minerva.edu\u003e"
    },
    {
      "commit": "4f52e01b0c80e4afb788d770df944de5c153479e",
      "tree": "33d7e1d5280cb08543bebc38baab0a5115693b6c",
      "parents": [
        "4b6678459d0d9c3689976ffa7fc47ed5bf357f68"
      ],
      "author": {
        "name": "Alex Stephen",
        "email": "1325798+rambleraptor@users.noreply.github.com",
        "time": "Mon Jul 27 12:49:52 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 15:49:52 2026 -0400"
      },
      "message": "fix(catalog/rest): ScanPlan requests + responses (#1477)\n\nPart of #1178 \n\nThis allows catalog.PlanFiles to send the Plan requests and parse the\nresponses. This brings together the work that @Revanth14 has been doing\nwith my expression parsing work.\n\nI also changed the expression parsing interface, since we already have\nJSON parsing interfaces for expressions."
    },
    {
      "commit": "4b6678459d0d9c3689976ffa7fc47ed5bf357f68",
      "tree": "f3088a68747c857838cb95d893d42fe6c6feb22c",
      "parents": [
        "28ce3354cc0a465bd3ba5b9588f17f6f115ca257"
      ],
      "author": {
        "name": "Tanmay Rauth",
        "email": "t_rauth@apple.com",
        "time": "Mon Jul 27 12:49:49 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 15:49:49 2026 -0400"
      },
      "message": "feat(table): aggregate geo bounds across data files at manifest level (#1511)\n\nAdd GeoBoundsAggregator to combine per-file geometry bounds into one\nbounding box via per-dimension min/max, never a scalar byte compare, so\nthe unorderable geo bounds stay honest. decodeGeoBound inverts the\nsingle-value serialization; the same omit-on-ambiguity rule for Z/M\napplies across files, and geography files contribute nothing.\n\nWiring the aggregate into scan-time pruning lands in a follow-up PR.\n\nFix: #993"
    },
    {
      "commit": "28ce3354cc0a465bd3ba5b9588f17f6f115ca257",
      "tree": "692a074fdc63b8f5d4f43389d3f582eae20cdf1c",
      "parents": [
        "35a3d573676ebf5e1f76425b28f38bc463c01ebb"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 21:49:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 15:49:46 2026 -0400"
      },
      "message": "fix(partitions): assign missing partition field IDs (#1514)\n\n## Summary\n\n- assign missing partition field IDs after the greatest of 999,\n`last-partition-id`, or any explicit field ID\n- preserve explicit IDs and assign only the missing fields\n- allocate IDs across all specs in table metadata so generated IDs\ncannot collide between specs\n- update `last-partition-id` when it is present and reject explicit null\nfield IDs\n\n## Why\n\nOlder partition spec JSON may omit field IDs. Java assigns those IDs\nfrom `PARTITION_DATA_ID_START`, while Go decoded every missing ID as\nzero. That loses field identity and can make partition fields collide.\n\nThe metadata parser needs table-wide context because partition field IDs\nare shared across specs. Standalone partition specs use the same\nallocation rule within the spec.\n\n## Testing\n\n- `go test -count\u003d1 . ./table`\n- full CI"
    },
    {
      "commit": "35a3d573676ebf5e1f76425b28f38bc463c01ebb",
      "tree": "d47a56393ba5b21b7acf8383cd100b93d8b437d2",
      "parents": [
        "c47495743368937e6aa2ffeac0081fcaf1bb7788"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 21:49:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 15:49:43 2026 -0400"
      },
      "message": "fix(transforms): validate parameterized transform values (#1508)\n\n## Summary\n\n- validate directly constructed bucket counts and truncate widths before\nserialization or execution\n- reject parameter values outside the parser-supported range of 1\nthrough `math.MaxInt32`\n- validate partition specs and sort orders eagerly when they are\nconstructed\n\n## Why\n\n`ParseTransform` rejects invalid parameter values, but callers can\nconstruct the exported transform structs directly. A zero truncate width\nreaches integer modulo and panics, while values such as `1 \u003c\u003c 32` narrow\nto zero in the int32 paths and can panic for both bucket and truncate\ntransforms.\n\nPartition specs and sort orders now reject these invalid transforms\nduring construction instead of deferring the failure until metadata\nserialization.\n\n## Testing\n\n- `go test ./...`\n- `go test -race ./codec/... ./table/...`\n- `golangci-lint run --timeout\u003d10m`\n- focused transform, partition-spec, and sort-order regression tests"
    },
    {
      "commit": "c47495743368937e6aa2ffeac0081fcaf1bb7788",
      "tree": "157a4bae4b2f0f252a8a47c8aff142e64e035723",
      "parents": [
        "11797d221a1df3429d97f5abddadf3d7a43fc3bd"
      ],
      "author": {
        "name": "İrem Çağın Yurttürk",
        "email": "cagin.yurtturk@getbruin.com",
        "time": "Mon Jul 27 22:49:41 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 15:49:41 2026 -0400"
      },
      "message": "fix(io/s3): let explicit s3.* credentials override the context AWS config (#1506)\n\n## Problem\n\n`createS3Bucket` (`io/gocloud/s3.go`) resolves the AWS config by\npreferring an ambient config injected into the context via\n`utils.WithAwsConfig` — for example the Glue catalog\u0027s own AWS config —\nand only falls back to `ParseAWSConfig(props)` when no context config\nexists. The **endpoint** is always read from the properties\n(`s3.endpoint`), but the **credentials** are whatever the context config\ncarries.\n\nSo when a catalog whose API credentials are AWS (Glue) writes to a\nbucket reached via a custom `s3.endpoint` whose credentials differ — a\nlocal MinIO, or a cross-account / delegated-role S3 target — the\nmetadata read-back authenticates with the catalog\u0027s AWS credentials\ninstead of the explicitly supplied `s3.access-key-id`, and fails:\n\n```\nS3: GetObject ... api error InvalidAccessKeyId: The Access Key Id you provided does not exist in our records.\n```\n\n`s3.access-key-id` / `s3.secret-access-key` / `s3.session-token` are\nsilently ignored whenever a context config is present (the endpoint is\nhonoured, so the request reaches the right store — with the wrong\ncredentials).\n\n## Fix\n\nExtract the resolution into `resolveS3AWSConfig`. When explicit `s3.*`\ncredentials are present, layer a static credentials provider built from\nthem over the resolved config — on a copy, so the shared context config\nis not mutated. Precedence becomes **explicit props \u003e context config \u003e\ndefault chain**, matching how `s3.endpoint` already behaves. The common\ncase (Glue + AWS S3, where the storage creds *are* the catalog creds) is\nunchanged.\n\n---------\n\nSigned-off-by: iremcaginyurtturk \u003ccagin.yurtturk@getbruin.com\u003e"
    },
    {
      "commit": "11797d221a1df3429d97f5abddadf3d7a43fc3bd",
      "tree": "8798dbca66e7a5c0b9927c7b8b657d9ebe861bba",
      "parents": [
        "e4bab6d4c509bb09f7388c20f1c2f8e4572b19f8"
      ],
      "author": {
        "name": "İrem Çağın Yurttürk",
        "email": "cagin.yurtturk@getbruin.com",
        "time": "Mon Jul 27 22:49:38 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 15:49:38 2026 -0400"
      },
      "message": "fix(io/gcs): authenticate the GCS client with supplied credentials (#1503)\n\n## Problem\n\n`createGCSBucket` (`io/gocloud/gcs.go`) builds the authenticated HTTP\nclient from Application Default Credentials — or an anonymous client\nwhen ADC is absent — and ignores the credentials parsed from the\n`gcs.jsonkey` (`GCSJSONKey`) and `gcs.keypath` (`GCSKeyPath`)\nproperties. `ParseGCSConfig` turns those into client options, but they\nare passed to `gcsblob.OpenBucket` alongside the pre-built client, whose\ntransport takes precedence — so the explicit credentials never\nauthenticate requests.\n\n**Effect:** with a catalog configured with explicit GCS service-account\ncredentials but **no** `GOOGLE_APPLICATION_CREDENTIALS` in the\nenvironment, GCS reads/writes go out **anonymously** and fail with `HTTP\n403 AccessDenied`. The credentials only take effect if the same account\nis also exported via ADC.\n\n## Fix\n\nResolve credentials from `gcs.jsonkey` / `gcs.keypath` first (via the\nnon-deprecated `CredentialsFromJSONWithType`, defaulting to a\nservice-account key and honouring `gcs.credtype`) and build the client\u0027s\ntoken source from them. Fall back to ADC (which may be nil → anonymous\nclient) only when neither property is set.\n\n---------\n\nSigned-off-by: iremcaginyurtturk \u003ccagin.yurtturk@getbruin.com\u003e"
    },
    {
      "commit": "e4bab6d4c509bb09f7388c20f1c2f8e4572b19f8",
      "tree": "9904be364f57bd25c8c9192229db83ce0493a287",
      "parents": [
        "3d751cb27919f3594786f7f068bf1b74af515597"
      ],
      "author": {
        "name": "Tanmay Rauth",
        "email": "t_rauth@apple.com",
        "time": "Mon Jul 27 12:49:34 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 15:49:34 2026 -0400"
      },
      "message": "  feat(metrics): instrument scan planning and emit ScanReport (#1236) (#1501)\n\nPR 4: Instruments local scan planning to gather scan metrics and emit a\nScanReport through the scan\u0027s configured reporter.\n\nBuilds on the reporter plumbing already merged in #1430\n(Scan.Reporter(), catalog/table/scan wiring). No new public API —\nmetrics-reporter-impl / WithMetricsReporter remain the entry points.\n\n  Changes\n\n- PlanFiles now times local planning and, on success, emits a ScanReport\nvia scan.Reporter().Report(...). Split into PlanFiles (mode dispatch +\nemission) and planFilesLocal (the local-planning body).\n- Manifest counts (total / scanned / skipped, split by data vs delete\ncontent) gathered in the single-goroutine manifest-filter loop.\n- Result-scoped metrics (result-data-files, result-delete-files,\npositional/equality/DV counts, total-file-size-in-bytes,\ntotal-delete-file-size-in-bytes) derived from the planned tasks — delete\nfiles counted once by path, and\nDV-suppressed positional deletes excluded, so they stay consistent with\nresult-data-files.\n- Schema/filter/projected-fields resolved best-effort; report building\nnever fails a scan.\n\n  Behavior / scope\n\n- Opt-in, zero-overhead default: with the no-op reporter (the default)\nno report is built — the instrumented path costs only a few integer\nincrements.\n- Remote planning reports its own metrics server-side and does not emit\na local report.\n- Race-safe: all counters written from a single goroutine (manifest\ncounts before the read barrier, result/delete counts after); verified\nunder -race.\n- Omit, don\u0027t fabricate: scanned/skipped reflect partition-spec pruning;\nper-entry skipped-data-files / skipped-delete-files and\nindexed-delete-files are left unset (deferred) rather than reported as\nzero.\n\n  Testing\n\ngo test ./table/... ./metrics/... and -race on the scan/delete/DV\nplanning suites. New tests: report assembly, projected-field resolution,\nresult-scoped delete dedup (TestApplyResultDeleteMetrics),\nemit-on-local, no-emit-on-remote,\n  and no-op-reporter safety.\n  \n  Related: #1236"
    },
    {
      "commit": "3d751cb27919f3594786f7f068bf1b74af515597",
      "tree": "7da96cb91157898777a35b764a60af64b2996ac9",
      "parents": [
        "9097100f4aa3bae419644e3b1f25d3fe29ce8fb7"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 27 21:49:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 15:49:31 2026 -0400"
      },
      "message": "fix(sql): reject table-view name collisions (#1489)\n\n## Problem\n\nSQL tables and views share the same catalog key, but creation only\nchecked for an existing object of the same kind. A table could write\nmetadata where a view already existed, or vice versa, before the\ndatabase rejected the catalog insert. A concurrent creator could also\nwin after the prechecks and leave the losing request\u0027s metadata file\nbehind.\n\n## Changes\n\n- reject table creation when the identifier is already registered as\neither a table or a view\n- reject view creation when the identifier is already registered as\neither a view or a table\n- return the matching catalog sentinel for conflicts found by the\nprechecks\n- check and document table existence as catalog registration rather than\nmetadata-file reachability\n- remove newly written metadata when a catalog insert fails, using a\nnon-cancelled cleanup context and the catalog filesystem properties\n\nThe prechecks make ordinary duplicate and cross-kind conflicts\ndeterministic. A genuinely concurrent creator can still win between the\nprecheck and insert, so the losing request keeps the database insert\nerror; cleanup prevents that race from leaking its metadata file.\n\n## Testing\n\n- both table/view collision directions with unchanged metadata\ndirectories\n- duplicate-table creation returns `ErrTableAlreadyExists`\n- forced catalog insert failures remove table and view metadata\n- `go test ./catalog/sql`\n- `go test -race ./catalog/sql`\n- `go vet ./catalog/sql`"
    },
    {
      "commit": "9097100f4aa3bae419644e3b1f25d3fe29ce8fb7",
      "tree": "d7a9209356a9c2315df2d63bfedcf987dbe7b7c0",
      "parents": [
        "cab639ec3c997a955537580218eea0bcda88377a"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 22:06:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 22:06:26 2026 +0200"
      },
      "message": "fix(table): reject null position deletes (#1518)\n\n## Motivation\n\nThe Iceberg position delete schema requires `pos` values to be non-null.\nThe Arrow scanner currently reads the raw `Int64Values` backing slice\nwithout checking the validity bitmap, so a malformed delete file\ncontaining a null position may be interpreted as a real row position\ninstead of returning an invalid-schema error.\n\n## Changes\n\n- Reject null values in position delete `pos` chunks with\n`iceberg.ErrInvalidSchema`.\n- Add a regression test covering a nullable position array and verifying\nthe error contract."
    },
    {
      "commit": "cab639ec3c997a955537580218eea0bcda88377a",
      "tree": "20dfab6e4d1fb7b7d93f7c4092bed809d81daa09",
      "parents": [
        "5677a0dc96235376e0e234cc039d000b900fb67b"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 22:05:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 22:05:16 2026 +0200"
      },
      "message": "fix(hive): synchronize HMS table metadata on commit (#1486)\n\n## Problem\n\nHive commits only advanced `metadata_location`. The HMS storage\ndescriptor and table properties could stay stale after schema, location,\nor property updates. The update helper also reused the original\nparameters map.\n\n## Changes\n\n- refresh HMS columns and location from the committed Iceberg metadata\n- apply property additions, changes, and removals while preserving\nunrelated HMS parameters\n- maintain current and previous metadata pointers and reserved Iceberg\nparameters\n- copy the parameters map and storage descriptor before updating them\n\n## Testing\n\nAdded coverage for schema and location changes, property\nsynchronization, reserved parameters, preserved HMS fields, and input\nimmutability.\n\n- `go test ./catalog/hive`"
    },
    {
      "commit": "5677a0dc96235376e0e234cc039d000b900fb67b",
      "tree": "cea0680473089418894f00a8e359bee52f2f813d",
      "parents": [
        "626a322e40b82ce6fc1dfc4605b612245f26c3a2"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 21:59:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 21:59:31 2026 +0200"
      },
      "message": "fix(sql): keep namespace drops atomic (#1466)\n\n## Summary\n\n- check namespace existence, catalog-object emptiness, and property\ndeletion in one serializable write transaction\n- treat views and future object types as namespace contents instead of\nrelying on the table-only `ListTables` result\n- recheck source and destination namespaces inside serializable create,\ncommit, and rename transactions so concurrent drops cannot leave\norphaned objects\n- reload namespace properties inside the serializable update transaction\nso a concurrent drop cannot recreate a namespace\n- retry recognized serialization, deadlock, and database-lock failures\nwith bounded, context-aware backoff\n- keep view-only namespaces intact and return the object-neutral\n`ErrNamespaceNotEmpty` sentinel\n\n## Why\n\nOn the V1 SQL schema, `ListTables` intentionally excludes views.\n`DropNamespace` used that filtered result to decide whether a namespace\nwas empty, so a namespace containing only a view could report a\nsuccessful drop while the view row—and therefore the namespace—still\nexisted.\n\nThe old prechecks also left races with object creation, rename, and\nnamespace property updates. Drop, creators, renames, and property\nupdates now participate in serializable transactions and recheck the\nrelevant namespaces in the same transaction as their writes. Property\nupdates reload the current rows and recompute their update summary on\nevery retry, preventing stale results and namespace resurrection.\n\nDatabase engines can abort serializable transactions under contention.\nThe retry classifier handles PostgreSQL SQL states, typed MySQL deadlock\nand lock-timeout errors, SQLite lock errors from the actual driver, and\nOracle serialization and deadlock errors. Exhausted retries return the\ndatabase error directly. The `NewCatalog` documentation also calls out\nthe WAL and busy-timeout configuration expected for concurrent SQLite\nwriters.\n\n## Testing\n\n- view-only namespace regression\n- deterministic drop races covering `CreateTable`, `CreateView`, and the\ncreate branch of `CommitTable`\n- deterministic drop versus namespace-property-update regression\n- real SQLite driver lock classification plus PostgreSQL, MySQL, and\nOracle retry classification\n- retry exhaustion and cancellation coverage\n- `go test ./catalog/sql`\n- `go test -race ./catalog/sql`\n- `go vet ./catalog/sql`"
    },
    {
      "commit": "626a322e40b82ce6fc1dfc4605b612245f26c3a2",
      "tree": "d15d58e05655eb5ee5bc0366917a828ca5dfe5df",
      "parents": [
        "885435cf7ec97c34012ad9785c0e8b63115d33d6"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 21:58:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 21:58:57 2026 +0200"
      },
      "message": "fix(cli): execute confirmed orphan cleanup plans (#1452)\n\n## Summary\n\nSplit orphan cleanup into an explicit plan and execution phase so\nconfirmation applies to the exact files shown to the user.\n\n- capture candidate paths, sizes, and the age cutoff in an immutable\ncleanup plan;\n- show the planned files before confirmation while keeping JSON output\nto one final document;\n- execute only the confirmed plan, without rescanning or adding newly\nappeared files;\n- return the actual deleted-file result and sizes in the final CLI\noutput;\n- reject planning-only options when executing an existing plan.\n\nThe existing `DeleteOrphanFiles` path uses the same planning and\nexecution flow.\n\n## Testing\n\n- `go test ./table ./cmd/iceberg`\n- coordinated plan/execute coverage proves files appearing after\nplanning remain untouched\n- CLI coverage verifies preview and final deleted-file output\n- real modification-time coverage verifies the age filter"
    },
    {
      "commit": "885435cf7ec97c34012ad9785c0e8b63115d33d6",
      "tree": "5563a1f2b36574aa3cd37351e088573f20496139",
      "parents": [
        "953bb4a63dbab2177bbac419717b7f9c87da534e"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 21:58:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 21:58:35 2026 +0200"
      },
      "message": "fix(table): return defensive metadata getter copies (#1444)\n\n## Summary\n\nReturn defensive copies from table metadata getters so callers cannot\nmutate persisted metadata through returned maps, slices, pointers, or\nnested values.\n\nThe clones cover schemas and defaults, partition specs, snapshots and\nrefs, sort orders, statistics/blob metadata, partition statistics,\nencryption keys, and properties. Nil slice behavior is preserved.\n\n## Testing\n\n- `go test ./table ./cmd/iceberg`\n- regression coverage mutates every returned getter value—including\nbinary defaults, source ID slices, blob metadata, and encryption\nproperties—and verifies the underlying metadata remains unchanged"
    },
    {
      "commit": "953bb4a63dbab2177bbac419717b7f9c87da534e",
      "tree": "5c2d29c80e48ef47706b65931381b24a14d297a3",
      "parents": [
        "b3fbfd3c95e99efefb79696d2a37b4cf5caebedf"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 21:58:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 21:58:11 2026 +0200"
      },
      "message": "fix(manifest): encode decimal partitions with declared width (#1355)\n\n## Summary\n\nDecimal partition values now use the fixed byte width declared by\npartition-schema precision instead of a width inferred from the\nformatted value.\n\n- keep decimal read scale separate from fixed encoding width;\n- sign-extend negative values to the declared width;\n- reject oversized values unless discarded bytes are redundant sign\nextension;\n- apply the declared width in data-file statistics conversion and\n`MarshalAvroEntry`;\n- keep builder-created partition values directly typed; scale\nreconstruction is only required after Avro decoding.\n\n## Testing\n\n- table-driven positive, zero, negative, boundary, padding, and overflow\nvectors\n- manifest write/read decimal round trips\n- `DataFileStatistics.ToDataFile` → manifest round trip\n- `MarshalAvroEntry` → decoder round trip\n- `go test . ./table/internal`"
    },
    {
      "commit": "b3fbfd3c95e99efefb79696d2a37b4cf5caebedf",
      "tree": "0fb1e5fd102d7326a7e80c9d8b4f1f8eaba80b7c",
      "parents": [
        "aa27f3fe9149d1e1bdff15cebd7c9242475507aa"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 21:56:10 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 21:56:10 2026 +0200"
      },
      "message": "fix(table): validate retry duration properties (#1454)\n\n## Summary\n\nCommit retry properties are validated before unsigned values are\nconverted to signed durations or used as retry counts.\n\n- reject durations larger than the maximum safe `time.Duration`;\n- reject reversed minimum/maximum waits;\n- normalize explicit zero waits and total timeout to their defaults;\n- cap retry counts at a practical `math.MaxUint32` limit;\n- keep exponential backoff and jitter arithmetic overflow-safe;\n- report the offending property in configuration errors.\n\nA full-width `PropUInt64` helper preserves values long enough to\nvalidate them without truncation.\n\n## Testing\n\n- `go test . ./table`\n- boundary coverage for `math.MaxUint64`, `maxRetryDurationMs + 1`,\nreversed waits, zero timeout, and retry-count overflow"
    },
    {
      "commit": "aa27f3fe9149d1e1bdff15cebd7c9242475507aa",
      "tree": "bc96527f05db235069c252cfb0be59270c1a0111",
      "parents": [
        "d250876a8aecb53902dc53a634fb0eb27b09fa5f"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 21:35:45 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 15:35:45 2026 -0400"
      },
      "message": "fix(glue): use canonical comment property for descriptions (#1521)\n\n## Summary\n\nGlue uses `comment` as the canonical property for namespace and table\ndescriptions, while older catalogs may still provide the legacy\n`Description` parameter.\n\nThis change:\n\n- writes canonical `comment` properties without leaking description\nfields into Glue parameters;\n- accepts legacy `Description` values when loading namespaces;\n- gives canonical `comment` values deterministic precedence over legacy\nvalues;\n- preserves native Glue descriptions as the highest-priority namespace\nvalue;\n- applies the same compatibility behavior to namespace and table\ncreation.\n\n## Testing\n\n- `go test ./catalog/glue`\n- `go test ./catalog/...`\n- `git diff --check`"
    },
    {
      "commit": "d250876a8aecb53902dc53a634fb0eb27b09fa5f",
      "tree": "30478585aa9e3a59ad0411b81276d8b532327fc0",
      "parents": [
        "9ca3e55c508e51613430266be1c4fc4cf5f3dca8"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 20:52:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:52:54 2026 -0400"
      },
      "message": "fix(partitions): reject negative PartitionSpec IDs (#1413)\n\n## Summary\n\n- validate `WithSpecID` inputs and reject negative partition spec IDs;\n- return `ErrInvalidPartitionSpec` with the invalid value;\n- add regression coverage for the negative boundary.\n\n## Testing\n\n- `go test . -run TestPartitionSpecRejectsNegativeSpecID -count\u003d1`"
    },
    {
      "commit": "9ca3e55c508e51613430266be1c4fc4cf5f3dca8",
      "tree": "e7a3dbed94e1921eb419d618e58feacfee0d3274",
      "parents": [
        "9736768aea8b79c62f60feaf275c361ca1d95263"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 20:37:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:37:01 2026 -0400"
      },
      "message": "fix(schema): prevent AsStruct aliasing (#1415)\n\n## What changed\n- Make `Schema.AsStruct()` return a deep-cloned `StructType` field list\ninstead of exposing internal schema state.\n- Add deep-copy helpers for nested struct/list/map types to prevent\nmutable aliasing through returned nested types.\n- Add regression tests covering top-level and nested field aliasing.\n\nThis ensures callers cannot mutate schema internals through\n`Schema.AsStruct()`."
    },
    {
      "commit": "9736768aea8b79c62f60feaf275c361ca1d95263",
      "tree": "06fd946da0193c396cf4059383c42dd1a6780f0f",
      "parents": [
        "0df1d8b7ebf951d4e3501f717fcad69e257c0cf1"
      ],
      "author": {
        "name": "Revanth",
        "email": "revanthcse1@gmail.com",
        "time": "Fri Jul 24 13:36:18 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:36:18 2026 -0400"
      },
      "message": "feat(rest): decode REST scan-task payloads into FileScanTasks (#1492)\n\n## Summary\n\nImplements REST scan-task payload decoding as part of\n[#1178](https://github.com/apache/iceberg-go/issues/1178).\n\nThis converts REST `ScanTasks` responses into `table.FileScanTask`\nvalues, including data files, delete files, metrics, partitions, bounds,\nand residual filters.\n\n## Changes\n\n- Adds REST wire types for content files, count maps, bounds, data\nfiles, and delete files. These\n(`RESTContentFile`/`RESTDataFile`/`RESTFileScanTask`/`RESTDeleteFile`)\nare exported as part of the existing `ScanTasks` response surface\nintroduced as stubs in #1324.\n- Adds `DecodeScanTasks` with metadata-aware partition and residual\ndecoding.\n- Decodes partition values using their partition transform result types.\n- Decodes lower and upper bounds from Java-compatible hexadecimal binary\nvalues.\n- Resolves envelope-local delete-file references.\n- Classifies positional deletes, equality deletes, and Puffin deletion\nvectors.\n- Supports and validates Java\u0027s optional `referenced-data-file` field,\nwhile deriving the target for deletion vectors when omitted.\n- Validates malformed metrics, references, content variants, file sizes,\nrecord counts, split offsets, and equality IDs.\n- Adds `Residual` to `table.FileScanTask`.\n- Extends the existing `FileScanTask` codec with an optional framed\nresidual extension:\n  - New decoders can read legacy payloads.\n- Existing decoders continue reading the unchanged Avro envelope prefix.\n\nBounds fixtures mirror Java\u0027s authoritative `TestContentFileParser`,\nwhere values are hexadecimal encodings of raw Iceberg binary values, for\nexample:\n\n    \"lower-bounds\":{\"keys\":[3,4],\"values\":[\"01000000\",\"02000000\"]}\n\n## Scope\n\nThis PR implements decoding only. It does not add plan-task fanout,\n`PlanFiles` orchestration, storage-credential handling, capability\nenablement, or the fake REST planning server.\n\n`DecodeScanTasks` is a standalone building block with no production\ncaller in this PR; `PlanFiles` will invoke it in a follow-up.\n\n`ReadTasks` currently continues applying the Scan\u0027s original row filter\nand does not consume per-task residuals. This preserves correctness for\nscans using their originating `Scan`, but applying task-specific\nresiduals remains follow-up work before decoded tasks can be consumed\nindependently.\n\nDelete-file references are scoped to each `ScanTasks` response, so\ncallers must decode each response before combining results.\n\n## Testing\n\n    go test ./...\n    go test -race ./catalog/rest ./codec ./table\n    go vet ./catalog/rest ./codec ./table\n    git diff --check"
    },
    {
      "commit": "0df1d8b7ebf951d4e3501f717fcad69e257c0cf1",
      "tree": "e0af47b5f61656653d077ca4778e4371041d1490",
      "parents": [
        "dc30f413cc19d22fb22d463f909fee7981d144e8"
      ],
      "author": {
        "name": "Badal Prasad Singh",
        "email": "badal@datazip.io",
        "time": "Fri Jul 24 23:57:27 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:27:27 2026 -0400"
      },
      "message": "feat(table): union schema evolution (#1359)\n\n### Description\n\nIn Iceberg-go, `table.UpdateSchema`, right now, does not provide a way\nto evolve a table\u0027s schema to the union of its current schema and an\nincoming schema matched by field name.\n\nIceberg-java\u0027s `org.apache.iceberg.UpdateSchema` exposes this as\n`unionByNameWith(Schema)`. This PR solves the same for Iceberg-Go.\n\nFixes #1187\n\n---------\n\nSigned-off-by: badalprasadsingh \u003cbadal@datazip.io\u003e"
    },
    {
      "commit": "dc30f413cc19d22fb22d463f909fee7981d144e8",
      "tree": "2b7fc832996ca7c5b4f87b32377bc1b68aa92941",
      "parents": [
        "446cba12eb2012f131e5a55bfbaaf62fed3a9612"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 20:08:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:08:24 2026 -0400"
      },
      "message": "fix(glue): reject dropping non-empty namespaces (#1520)\n\n## Summary\n\n- check a Glue database for tables before dropping its namespace\n- return `catalog.ErrNamespaceNotEmpty` when any table exists\n- avoid deleting the database when Glue cannot determine whether it is\nempty\n\nThe check includes both Iceberg and non-Iceberg tables because deleting\na Glue database makes all tables in that database inaccessible.\n\n## Testing\n\n- `go test ./catalog/glue`"
    },
    {
      "commit": "446cba12eb2012f131e5a55bfbaaf62fed3a9612",
      "tree": "6356dd204a24acd65a4ec3785cce9b10a9aa49b9",
      "parents": [
        "6466d3611513daf599ad682f916efe0d5d68daa3"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 20:08:14 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:08:14 2026 -0400"
      },
      "message": "fix(hadoop): validate metadata before dropping tables (#1491)\n\n## Problem\n\n`DropTable` considered a directory to be a table based only on the\npresence of a metadata-shaped filename, then recursively deleted the\ndirectory. A partial or corrupt metadata file could therefore authorize\na destructive drop.\n\n## Changes\n\nLoad and parse the current table metadata before removing the table\ndirectory. Invalid metadata now returns an error and leaves the\ndirectory untouched.\n\nThe existing successful-drop tests now create real table metadata rather\nthan placeholder JSON.\n\n## Testing\n\nAdded a regression test with invalid metadata and a marker file that\nmust survive the failed drop.\n\n- `go test ./catalog/hadoop`"
    },
    {
      "commit": "6466d3611513daf599ad682f916efe0d5d68daa3",
      "tree": "68b851d85c60677190828676cdabb034b392c223",
      "parents": [
        "09dc19dac08739cc53292239ffa399a9a4578385"
      ],
      "author": {
        "name": "Tanmay Rauth",
        "email": "t_rauth@apple.com",
        "time": "Fri Jul 24 11:08:05 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:08:05 2026 -0400"
      },
      "message": "fix(table): cross-check deletion vector cardinality against manifest record_count (#1510)\n\nReadDV now validates the decoded bitmap against the manifest entry\u0027s\nrecord_count (field 103) and cross-checks it with the puffin blob\u0027s\ncardinality property when present. record_count is a required\nnon-nullable long, so it always participates: a manifest zero against a\nnonzero puffin property is a real disagreement, not an absent value, and\nfails fast.\n\nBlobs missing the puffin property are still validated against\nrecord_count and accepted with a warning. Adds a hand-built fixture to\nexercise the missing-property branch, which the puffin writer otherwise\nforbids.\n\nCloses #1058"
    },
    {
      "commit": "09dc19dac08739cc53292239ffa399a9a4578385",
      "tree": "f885e396d51bf70c32e405bc282fb0cd77a4f705",
      "parents": [
        "cdb2a8b08abefa4cca8276eecf25e3f4277681ec"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 20:07:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:07:54 2026 -0400"
      },
      "message": "fix(table): honor parquet row group byte target (#1517)\n\n## Summary\n\n* honor `write.parquet.row-group-size-bytes` when writing buffered\nParquet row groups\n* start a new row group before the next non-empty batch after the byte\ntarget is reached\n* avoid creating an empty trailing row group when the file is closed\n* reject invalid and non-positive target values, matching Iceberg Java\nbehavior\n* preserve `write.parquet.row-group-limit` as an independent row-count\nceiling\n\n## Why\n\n`write.parquet.row-group-size-bytes` is exported and documented, but the\nGo Parquet writer did not read it. Changing the property therefore had\nno effect on generated row groups.\n\nArrow Go v18.7 provides `RowGroupTotalBytesWritten` and\n`NewBufferedRowGroupChecked`, allowing the writer to apply the\nconfigured uncompressed byte target safely.\n\nRotation happens before the next non-empty batch instead of immediately\nafter reaching the target. This prevents closing the writer from\nproducing an empty trailing row group.\n\n## Testing\n\n* added coverage for the default and configured byte targets\n* added coverage for malformed, zero, and negative values\n* added a Parquet metadata regression test verifying that:\n\n  * a small target creates multiple row groups\n  * each row group contains data\n  * no empty trailing row group is produced\n* `git diff --check`\n\nSigned-off-by: Minh Vu \u003cvuhoangminh97@gmail.com\u003e"
    },
    {
      "commit": "cdb2a8b08abefa4cca8276eecf25e3f4277681ec",
      "tree": "08582c61e3344930f5fa08185dc64fad58d4f3d6",
      "parents": [
        "863aa916fa8c5184e1bef6fcf0832658ea8c4900"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 20:07:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:07:44 2026 -0400"
      },
      "message": "fix(table): make summary equality nil-safe (#1516)\n\n## Summary\n\n- handle nil snapshot summaries symmetrically in `Summary.Equals`\n- cover direct summary comparison and `Snapshot.Equals` in both operand\norders\n\n## Why\n\n`Summary.Equals` handled a non-nil receiver with a nil argument, but not\nthe reverse. Comparing a snapshot without a summary to one with a\nsummary dereferenced the nil receiver and panicked. Equality should\nreturn false regardless of operand order.\n\n## Testing\n\n- `go test ./...`\n- `go test -race ./table`\n- `golangci-lint run --timeout\u003d10m`\n- `go vet ./...`"
    },
    {
      "commit": "863aa916fa8c5184e1bef6fcf0832658ea8c4900",
      "tree": "0d86c7977e31f11b529eadd18f341eca7bae29b7",
      "parents": [
        "7b8883e4fef803342ea89dc0defba7f0424fa827"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 20:07:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:07:34 2026 -0400"
      },
      "message": "fix(table): avoid mutating sort fields during marshaling (#1515)\n\n## Summary\n\n- compute default sort direction and null order in local variables\n- preserve the existing JSON output without changing the `SortField`\nreceiver\n- use a value receiver so both `SortField` values and pointers use the\ncustom encoder\n\n## Why\n\n`SortField.MarshalJSON` wrote default values back into the field being\nserialized. Marshaling should be read-only; mutating caller state is\nsurprising and can race when a field is serialized concurrently. The\npointer receiver also meant marshaling a `SortField` value bypassed the\ncustom JSON shape entirely.\n\n## Testing\n\n- `go test ./...`\n- `go test -race ./table`\n- `golangci-lint run --timeout\u003d10m`\n- `go vet ./...`"
    },
    {
      "commit": "7b8883e4fef803342ea89dc0defba7f0424fa827",
      "tree": "b60723d44068bed69d86152558d3040a255587f4",
      "parents": [
        "655d3fcf51c140f4923fcce8d64e2ee0071ec205"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 20:07:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:07:24 2026 -0400"
      },
      "message": "fix(table): tolerate missing snapshot summary operation (#1513)\n\n## Summary\n\n- default a non-empty snapshot summary without `operation` to\n`overwrite`\n- preserve the remaining summary properties\n\n## Why\n\nJava uses this fallback for compatibility with older snapshot metadata.\nGo returned `ErrMissingOperation` instead, so it could not load metadata\nthat Java accepts.\n\n## Testing\n\n- `go test ./...`\n- `go test -race ./table`\n- `go vet ./...`"
    },
    {
      "commit": "655d3fcf51c140f4923fcce8d64e2ee0071ec205",
      "tree": "a57c54f3550de9f63176b9159899c5cd393fe57e",
      "parents": [
        "aada7e3e0724073e6da727e64bbd8eae320207a4"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 20:06:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:06:44 2026 -0400"
      },
      "message": "fix(table): validate snapshot references (#1512)\n\n## Summary\n\n- require `snapshot-id` and `type` when decoding snapshot references\n- reject non-positive retention values\n- reject branch-only retention settings on tags during decoding and\nmetadata updates\n\n## Why\n\nThe Java `SnapshotRef` builder and parser enforce these invariants, but\nGo only checked the reference type while decoding. Programmatic metadata\nupdates also allowed tag references with `min-snapshots-to-keep` or\n`max-snapshot-age-ms`, producing metadata Java rejects.\n\n## Testing\n\n- `go test ./...`\n- `go test -race ./table`\n- `go vet ./...`"
    },
    {
      "commit": "aada7e3e0724073e6da727e64bbd8eae320207a4",
      "tree": "ded6f10ebb709368d3a82ca07f6eb241775e0f2a",
      "parents": [
        "c44be37e07a33051451dbdc7d1b3253ab7f3110e"
      ],
      "author": {
        "name": "Badal Prasad Singh",
        "email": "badal@datazip.io",
        "time": "Fri Jul 24 23:34:18 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 20:04:18 2026 +0200"
      },
      "message": "fix(io): S3 compatibility with GCS HMAC endpoints (#1423)\n\n## Description\n\nWhen the S3 IO backend (`io/gocloud`) is pointed at a non-AWS\nS3-compatible endpoint that supports the AWS SigV4 HMAC interop API but\nis **not** Amazon S3 itself — most notably **Google Cloud Storage\u0027s\nS3-compatible interop endpoint\n(`https://storage.googleapis.com`)** with HMAC keys.\n\nFixes #1422 \n\n## Proposed Fix\n\n* When `props[\"s3.endpoint\"]` (`io.S3EndpointURL`) is set, configure the\nS3 client to use `aws.RequestChecksumCalculationWhenRequired` so the SDK\ndoesn\u0027t automatically enable CRC32 for requests where it isn\u0027t required.\n* Add an **Initialize** middleware\n(`iceberg-go/strip-s3-input-checksum-algorithm`) **before**\n`AWSChecksum:SetupInputContext` to clear `ChecksumAlgorithm` on\n`PutObject`, `UploadPart`, and `CreateMultipartUpload`, preventing\nchunked encoding from being enabled for compatible S3 endpoints.\n* Add a **Finalize** middleware\n(`iceberg-go/strip-gcs-incompatible-signed-headers`) **before** SigV4\nsigning to remove `Amz-Sdk-Invocation-Id`, `Amz-Sdk-Request`, and\n`Accept-Encoding` from the signed request, avoiding signature mismatches\nwith GCS S3-compatible endpoints while leaving the AWS S3 code path\nunchanged.\n\n---------\n\nSigned-off-by: badalprasadsingh \u003cbadal@datazip.io\u003e"
    },
    {
      "commit": "c44be37e07a33051451dbdc7d1b3253ab7f3110e",
      "tree": "49e4e0a71ef4c964372d6238d7a10d495e9cac1a",
      "parents": [
        "6dae5589ecee8314b7af822b5431bd591d34a807"
      ],
      "author": {
        "name": "İrem Çağın Yurttürk",
        "email": "cagin.yurtturk@getbruin.com",
        "time": "Fri Jul 24 15:08:05 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:08:05 2026 +0200"
      },
      "message": "fix(hive): derive namespace location from the warehouse (#1507)\n\n## Problem\n\n`CreateNamespace` (`catalog/hive/hive.go`) sets the Hive database\n`LocationUri` only from an explicit `location` / `Location` property.\nWhen none is provided — the common case (e.g. a client calls\n`CreateNamespace` with empty properties) — and the metastore has no\ndefault warehouse dir configured, the metastore is handed an empty\nlocation and rejects it:\n\n```\nMetaException: java.lang.IllegalArgumentException: Can not create a Path from an empty string\n```\n\nThe catalog already carries the `warehouse` option, but\n`CreateNamespace` never uses it for the namespace location. (pyiceberg\u0027s\nHive catalog derives the database location from the warehouse.)\n\n## Fix\n\nWhen no explicit location is given, derive `\u003cwarehouse\u003e/\u003cdb\u003e.db` — the\nmetastore\u0027s conventional database location — from the catalog\u0027s\n`warehouse`. When no warehouse is configured the location stays empty,\npreserving the previous behavior (no regression for setups that rely on\nthe metastore\u0027s own default warehouse dir).\n\n---------\n\nSigned-off-by: iremcaginyurtturk \u003ccagin.yurtturk@getbruin.com\u003e"
    },
    {
      "commit": "6dae5589ecee8314b7af822b5431bd591d34a807",
      "tree": "7a28c14d8b240be3f509c1a4a57f231c5710e349",
      "parents": [
        "582c41f1c8e96cd77942e1146650b259ace4a01b"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 24 14:02:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:02:40 2026 +0200"
      },
      "message": "fix(glue): map fixed types to binary (#1519)\n\n## Summary\n\n- map Iceberg fixed types to Glue `binary` instead of the unsupported\nparameterized `binary(n)` form\n- cover fixed types nested inside container types\n- align Glue schema conversion with Iceberg Java and PyIceberg\n\n## Testing\n\n- `go test ./catalog/glue`"
    },
    {
      "commit": "582c41f1c8e96cd77942e1146650b259ace4a01b",
      "tree": "0c4080625dad58cc15d5d16fc4456c13306efcf7",
      "parents": [
        "116e58c1432eb06a730054428f2fc8c0b8a00123"
      ],
      "author": {
        "name": "Neelesh Salian",
        "email": "nssalian@users.noreply.github.com",
        "time": "Wed Jul 22 15:07:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 18:07:15 2026 -0400"
      },
      "message": "feat(table): bounds for shredded variant fields (#1478)\n\nCloses #988"
    },
    {
      "commit": "116e58c1432eb06a730054428f2fc8c0b8a00123",
      "tree": "a984fbcf7e14e792db75bc886e056a785ecb6398",
      "parents": [
        "46cd7cfe949b0f256948f29c3992da194516fa44"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Tue Jul 21 21:44:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 15:44:36 2026 -0400"
      },
      "message": "fix(glue): apply catalog properties when loading metadata (#1487)\n\n## Problem\n\nGlue loaded table metadata with a nil property map in both registration\nand normal table loading. Filesystem implementations that depend on\ncatalog configuration could therefore fail even though the catalog was\nconfigured correctly.\n\n## Changes\n\nPass the Glue catalog properties to the filesystem factory used by\n`RegisterTable` and `convertGlueToIceberg`.\n\n## Testing\n\nAdded a property-dependent custom filesystem and exercised both\nregistration and normal loading.\n\n- `go test ./catalog/glue`"
    },
    {
      "commit": "46cd7cfe949b0f256948f29c3992da194516fa44",
      "tree": "ad0a9c422a116989606f24f8630c1e2a6690a28f",
      "parents": [
        "60bf5d21a8d59d4d163714b1498672e4ff2e94c9"
      ],
      "author": {
        "name": "Neelesh Salian",
        "email": "nssalian@users.noreply.github.com",
        "time": "Tue Jul 21 12:42:02 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 15:42:02 2026 -0400"
      },
      "message": "chore(deps): bump arrow-go to v18.7.0 (#1504)\n\n## Rationale for the change\n  \nBump `github.com/apache/arrow-go/v18` to\n[`v18.7.0`](https://github.com/apache/arrow-go/releases/tag/v18.7.0).\n\n## Changes\n  \n- `go.mod` / `go.sum`: `arrow-go` -\u003e `v18.7.0` (+ transitive bumps from\n`go mod tidy`).\n- `table/arrow_utils_test.go`: one test field `TimeZone: \"Z\"` -\u003e\n`\"+00:00\"` (v18.7.0 rejects the non-spec `\"Z\"` zone).\n- `table/internal/parquet_files_test.go`: `AppendRowGroup` -\u003e\n`AppendRowGroupChecked` (deprecated in v18.7.0).\n\n## Testing\n\n- Locally ran `go build ./...`, `go test ./...`, `go vet ./...`,\n`golangci-lint run`.\n  - Locally ran Integration (Spark 3.5 / 4.0)."
    },
    {
      "commit": "60bf5d21a8d59d4d163714b1498672e4ff2e94c9",
      "tree": "5863e4f5f6524705d4341c79ee48a20559f50be1",
      "parents": [
        "825b4f991b01654a787ccacc8627a9d14db4f105"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 14:40:12 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 14:40:12 2026 -0400"
      },
      "message": "build(deps): bump zizmorcore/zizmor-action from 0.5.6 to 0.5.7 (#1339)\n\nBumps\n[zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action)\nfrom 0.5.6 to 0.5.7.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/releases\"\u003ezizmorcore/zizmor-action\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.5.7\u003c/h2\u003e\n\u003cp\u003e1.26.1 is now available via the action\n1.26.1 is now the default version of zizmor used by the action\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/192e21d79ab29983730a13d1382995c2307fbcaa\"\u003e\u003ccode\u003e192e21d\u003c/code\u003e\u003c/a\u003e\nSync zizmor versions (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/127\"\u003e#127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/2720f2673c0b64a8656d08b009ac239b9383c0ae\"\u003e\u003ccode\u003e2720f26\u003c/code\u003e\u003c/a\u003e\nUpdate README.md with new actions/checkout version (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/126\"\u003e#126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/40b41b824eab0ad9c19ddf9856be25550729e6d8\"\u003e\u003ccode\u003e40b41b8\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump the github-actions group with 2 updates (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/123\"\u003e#123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/a687b25bf3aa149153e80ed5f45292e47589888c\"\u003e\u003ccode\u003ea687b25\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump github/codeql-action from 4.35.5 to 4.36.0 in the\ngithub-ac...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/64a6900ea7f40fab0caa7dcfc77b392d28fe0cb1\"\u003e\u003ccode\u003e64a6900\u003c/code\u003e\u003c/a\u003e\nadd note to explain that the default value for\n\u003ccode\u003eonline-checks\u003c/code\u003e is different t...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/14050abd109fcba34e6e2f31a723280997808e82\"\u003e\u003ccode\u003e14050ab\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump the github-actions group with 2 updates (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/118\"\u003e#118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/ee9b4194a74f093e38908dbcfcb078f63eeef002\"\u003e\u003ccode\u003eee9b419\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump github/codeql-action in the github-actions group (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/116\"\u003e#116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/commit/fddf2b4aa9bf29290c6bf9866e6d113b0cdf6f67\"\u003e\u003ccode\u003efddf2b4\u003c/code\u003e\u003c/a\u003e\nBump pins in README (\u003ca\nhref\u003d\"https://redirect.github.com/zizmorcore/zizmor-action/issues/115\"\u003e#115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/zizmorcore/zizmor-action/compare/5f14fd08f7cf1cb1609c1e344975f152c7ee938d...192e21d79ab29983730a13d1382995c2307fbcaa\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dzizmorcore/zizmor-action\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d0.5.6\u0026new-version\u003d0.5.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Matt Topol \u003cmatt@columnar.tech\u003e"
    },
    {
      "commit": "825b4f991b01654a787ccacc8627a9d14db4f105",
      "tree": "ca75b8bfb8daebf12a4905c4e088c03623c12ce5",
      "parents": [
        "9ca7e11f69e7f7bff6459195a093444003cc4009"
      ],
      "author": {
        "name": "Tanmay Rauth",
        "email": "t_rauth@apple.com",
        "time": "Mon Jul 20 11:29:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 14:29:20 2026 -0400"
      },
      "message": "feat(metrics): wire reporter selection through catalog, table, and scan (#1236) (#1430)\n\nThird PR of the metrics reporting framework. Adds reporter selection and\nthreads it from catalog to scan:\n\n- metrics: a name-\u003efactory registry and FromProperties, selecting a\nreporter via the metrics-reporter-impl property (the Go analogue of\nJava\u0027s reflection-based loader); built-in nop and logging reporters.\n- table: a WithMetricsReporter option on New/NewFromLocation (variadic,\nbackward compatible), a MetricsReporter accessor, and a WithReporter\nscan option; scans inherit the table\u0027s reporter.\n- catalog/{rest,sql,glue,hive,hadoop} resolve the reporter from\nproperties when loading or creating a table.\n\nReporting stays opt-in: the default reporter is no-op, so there is no\nbehavior change for existing users. Report emission is added with the\nscan and commit instrumentation in later PRs.\n\nRelated: #1236"
    },
    {
      "commit": "9ca7e11f69e7f7bff6459195a093444003cc4009",
      "tree": "bffb8a7e25496e9afdf107d9c735e006b806a6e0",
      "parents": [
        "16e76a354f214c8fd2de4d266847203770397e32"
      ],
      "author": {
        "name": "Revanth",
        "email": "revanthcse1@gmail.com",
        "time": "Mon Jul 20 13:01:03 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 14:01:03 2026 -0400"
      },
      "message": "test(rest): add fake server for REST scan planning (#1494)\n\nAdds a concurrency-safe in-process fake REST scan-planning server under\ncatalog/rest/internal/planfake, plus a conformance suite exercising the\nexisting low-level REST scan-planning client against independently authored\nwire payloads. Test infrastructure only.\n\nPart of #1178."
    },
    {
      "commit": "16e76a354f214c8fd2de4d266847203770397e32",
      "tree": "4c5a61da57b91a2a8030fd88f8e29d8bbd0913d7",
      "parents": [
        "938c8c08c4871e13b9a66ffcad901d8d7966c6e3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 13:56:20 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 13:56:20 2026 -0400"
      },
      "message": "build(deps): bump actions/labeler from 6.1.0 to 6.2.0 (#1496)\n\nBumps [actions/labeler](https://github.com/actions/labeler) from 6.1.0\nto 6.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/actions/labeler/releases\"\u003eactions/labeler\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove PR number validation and warning messages in input handling\nby \u003ca\nhref\u003d\"https://github.com/chiranjib-swain\"\u003e\u003ccode\u003e@​chiranjib-swain\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/labeler/pull/939\"\u003eactions/labeler#939\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency Updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump js-yaml to 4.2.0, apply npm audit fix, and add undici override\nby \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/labeler/pull/943\"\u003eactions/labeler#943\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​typescript-eslint/eslint-plugin\u003c/code\u003e from 8.59.1 to\n8.61.1 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/labeler/pull/942\"\u003eactions/labeler#942\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/actions/labeler/compare/v6.1.0...v6.2.0\"\u003ehttps://github.com/actions/labeler/compare/v6.1.0...v6.2.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/labeler/commit/b8dd2d9be0f68b860e7dae5dae7d772984eacd6d\"\u003e\u003ccode\u003eb8dd2d9\u003c/code\u003e\u003c/a\u003e\nBump \u003ccode\u003e@​typescript-eslint/eslint-plugin\u003c/code\u003e from 8.59.1 to\n8.61.1 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/labeler/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/labeler/commit/53affe8ca4150876fc7eb7d268d3a1f74511a244\"\u003e\u003ccode\u003e53affe8\u003c/code\u003e\u003c/a\u003e\nBump js-yaml to 4.2.0, apply npm audit fix, and add undici override for\n0 vul...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/labeler/commit/f612d9ad188e81643862c2de70f57fbb1d17abd1\"\u003e\u003ccode\u003ef612d9a\u003c/code\u003e\u003c/a\u003e\nFix: Improve PR number validation and warning messages in input handling\n(\u003ca\nhref\u003d\"https://redirect.github.com/actions/labeler/issues/939\"\u003e#939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/actions/labeler/compare/f27b608878404679385c85cfa523b85ccb86e213...b8dd2d9be0f68b860e7dae5dae7d772984eacd6d\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/labeler\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d6.1.0\u0026new-version\u003d6.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "938c8c08c4871e13b9a66ffcad901d8d7966c6e3",
      "tree": "da85135bca3071558f6ebe0b045e52423ba804c3",
      "parents": [
        "1c5d2a1c9616c8c5798cc8e8cd60391ef07b3149"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 13:55:44 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 13:55:44 2026 -0400"
      },
      "message": "build(deps): bump the gomod_updates group with 6 updates (#1497)\n\nBumps the gomod_updates group with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n|\n[github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2)\n| `1.32.27` | `1.32.29` |\n|\n[github.com/aws/aws-sdk-go-v2/credentials](https://github.com/aws/aws-sdk-go-v2)\n| `1.19.26` | `1.19.28` |\n|\n[github.com/aws/aws-sdk-go-v2/service/glue](https://github.com/aws/aws-sdk-go-v2)\n| `1.147.1` | `1.148.0` |\n|\n[github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2)\n| `1.104.2` | `1.105.0` |\n| [golang.org/x/term](https://github.com/golang/term) | `0.44.0` |\n`0.45.0` |\n|\n[google.golang.org/api](https://github.com/googleapis/google-api-go-client)\n| `0.287.0` | `0.288.0` |\n\nUpdates `github.com/aws/aws-sdk-go-v2/config` from 1.32.27 to 1.32.29\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/ed75d3d097568d903f639876299d03241605fd7c\"\u003e\u003ccode\u003eed75d3d\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-08.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/d67404a5e5ee30a469b0823fb493ca9961107d92\"\u003e\u003ccode\u003ed67404a\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/8a21e0976a42f7c28934d0782ad49388fdd4c9d3\"\u003e\u003ccode\u003e8a21e09\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/cb69824f6c68e6fe0144def8e757be46ad4cfcbb\"\u003e\u003ccode\u003ecb69824\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-08\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/0f18a1fc3762f1f42337e32c37e4a30a51254f8b\"\u003e\u003ccode\u003e0f18a1f\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/982e0d00ad41cbd01ff073cb46c8358887c31e4b\"\u003e\u003ccode\u003e982e0d0\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/2872baecbf12283d444219e48940142ee6f28c08\"\u003e\u003ccode\u003e2872bae\u003c/code\u003e\u003c/a\u003e\nAdd missing options.RequestChecksumCalculation (\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/3470\"\u003e#3470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/ef1f0feba0ff99de62b7dd7916dcd4bd459c766c\"\u003e\u003ccode\u003eef1f0fe\u003c/code\u003e\u003c/a\u003e\nfix(feature/s3/transfermanager): allow multiple symlinks to share the\nsame ta...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/0df1b91ba8f02e9de847523efed547b2427e4ba6\"\u003e\u003ccode\u003e0df1b91\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-07\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/b4ef7306d81dee7c2a3e4016466f826037298767\"\u003e\u003ccode\u003eb4ef730\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/compare/config/v1.32.27...config/v1.32.29\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github.com/aws/aws-sdk-go-v2/credentials` from 1.19.26 to\n1.19.28\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/ed75d3d097568d903f639876299d03241605fd7c\"\u003e\u003ccode\u003eed75d3d\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-08.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/d67404a5e5ee30a469b0823fb493ca9961107d92\"\u003e\u003ccode\u003ed67404a\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/8a21e0976a42f7c28934d0782ad49388fdd4c9d3\"\u003e\u003ccode\u003e8a21e09\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/cb69824f6c68e6fe0144def8e757be46ad4cfcbb\"\u003e\u003ccode\u003ecb69824\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-08\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/0f18a1fc3762f1f42337e32c37e4a30a51254f8b\"\u003e\u003ccode\u003e0f18a1f\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/982e0d00ad41cbd01ff073cb46c8358887c31e4b\"\u003e\u003ccode\u003e982e0d0\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/2872baecbf12283d444219e48940142ee6f28c08\"\u003e\u003ccode\u003e2872bae\u003c/code\u003e\u003c/a\u003e\nAdd missing options.RequestChecksumCalculation (\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/3470\"\u003e#3470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/ef1f0feba0ff99de62b7dd7916dcd4bd459c766c\"\u003e\u003ccode\u003eef1f0fe\u003c/code\u003e\u003c/a\u003e\nfix(feature/s3/transfermanager): allow multiple symlinks to share the\nsame ta...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/0df1b91ba8f02e9de847523efed547b2427e4ba6\"\u003e\u003ccode\u003e0df1b91\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-07\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/b4ef7306d81dee7c2a3e4016466f826037298767\"\u003e\u003ccode\u003eb4ef730\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/compare/credentials/v1.19.26...credentials/v1.19.28\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github.com/aws/aws-sdk-go-v2/service/glue` from 1.147.1 to\n1.148.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/4334b43c27eeb4c4ecfcba1a87cc08f963fe91a3\"\u003e\u003ccode\u003e4334b43\u003c/code\u003e\u003c/a\u003e\nRelease 2024-02-16\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/9e29187dc08c2e9bf8f66166841ca9c75e0624ab\"\u003e\u003ccode\u003e9e29187\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/f672c49fb7b4199becd3ba0a6e9d2b35f215e985\"\u003e\u003ccode\u003ef672c49\u003c/code\u003e\u003c/a\u003e\nUpdate endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/7f935782a0d8ee350736d4515cc05001e4ac3d01\"\u003e\u003ccode\u003e7f93578\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/da7bcdacddcf05ee9c897137fdbcdc8caf501698\"\u003e\u003ccode\u003eda7bcda\u003c/code\u003e\u003c/a\u003e\nfeat: add client config passthrough to waiter opts (\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/2499\"\u003e#2499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/1bb048272ad54b3cbeb3b6da99f4be8090bea5d2\"\u003e\u003ccode\u003e1bb0482\u003c/code\u003e\u003c/a\u003e\nRelease 2024-02-15\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/cc83a2b05532dfe5e6ccba25881887352134fbbd\"\u003e\u003ccode\u003ecc83a2b\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/7f44d9967b75499363425c29a5cf40375e9869a7\"\u003e\u003ccode\u003e7f44d99\u003c/code\u003e\u003c/a\u003e\nUpdate endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/4280ccb2671145220be23f299bc0db4a2c061ff5\"\u003e\u003ccode\u003e4280ccb\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/a264562983a722b90b7a08e5547de85274006e30\"\u003e\u003ccode\u003ea264562\u003c/code\u003e\u003c/a\u003e\nfix awsjson error deserialization to not expect string code (\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/2489\"\u003e#2489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/compare/service/glue/v1.147.1...service/ec2/v1.148.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.104.2 to\n1.105.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/fc087ca9c93f355ac25ad7d78cd1f60170424e0c\"\u003e\u003ccode\u003efc087ca\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-06\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/a0dc66ef2b9f031cb3edefc4c9b20635294537ea\"\u003e\u003ccode\u003ea0dc66e\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/0e93979277a5678f5a47b407745d3b20b2300083\"\u003e\u003ccode\u003e0e93979\u003c/code\u003e\u003c/a\u003e\nUpdate endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/1e51eb5e75f504acee800c09b21f5b271d62c728\"\u003e\u003ccode\u003e1e51eb5\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/a4cd1c9dcbc1492cd27b72f2a21682d43dab7f40\"\u003e\u003ccode\u003ea4cd1c9\u003c/code\u003e\u003c/a\u003e\nadd serialization snapshot tests (\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/3463\"\u003e#3463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/8d5a855c81f3a632fcac37fbc67d65e114902efc\"\u003e\u003ccode\u003e8d5a855\u003c/code\u003e\u003c/a\u003e\nset rollout strategy 2 (\u003ca\nhref\u003d\"https://redirect.github.com/aws/aws-sdk-go-v2/issues/3467\"\u003e#3467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/bdb96810ded2e8f93c329e2b3380543254b984a1\"\u003e\u003ccode\u003ebdb9681\u003c/code\u003e\u003c/a\u003e\nRelease 2026-07-02\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/dad37d5b8a86c70b41ba6eb26114db1b0566218a\"\u003e\u003ccode\u003edad37d5\u003c/code\u003e\u003c/a\u003e\nRegenerated Clients\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/019a359cb7d5af2e9a8cffdaf5139797d4d382db\"\u003e\u003ccode\u003e019a359\u003c/code\u003e\u003c/a\u003e\nUpdate endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/commit/c51ba98fbf1df116d7a9a3770a08788d11f6c480\"\u003e\u003ccode\u003ec51ba98\u003c/code\u003e\u003c/a\u003e\nUpdate API model\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.104.2...service/s3/v1.105.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `golang.org/x/term` from 0.44.0 to 0.45.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/golang/term/commit/9f69229da31ca6a34b522f59dbe07cad5ea21587\"\u003e\u003ccode\u003e9f69229\u003c/code\u003e\u003c/a\u003e\ngo.mod: update golang.org/x dependencies\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/golang/term/compare/v0.44.0...v0.45.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google.golang.org/api` from 0.287.0 to 0.288.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/releases\"\u003egoogle.golang.org/api\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.288.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/compare/v0.287.1...v0.288.0\"\u003e0.288.0\u003c/a\u003e\n(2026-07-09)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3647\"\u003e#3647\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/510a0c19483ea5631b7b0a453f9d6df1b9ef596a\"\u003e510a0c1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.287.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/compare/v0.287.0...v0.287.1\"\u003e0.287.1\u003c/a\u003e\n(2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove old TODO file (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3645\"\u003e#3645\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/9d7a6b8ba7ca7fda1fda4373714a8aff1e930e6f\"\u003e9d7a6b8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md\"\u003egoogle.golang.org/api\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/compare/v0.287.1...v0.288.0\"\u003e0.288.0\u003c/a\u003e\n(2026-07-09)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eall:\u003c/strong\u003e Auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3647\"\u003e#3647\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/510a0c19483ea5631b7b0a453f9d6df1b9ef596a\"\u003e510a0c1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/compare/v0.287.0...v0.287.1\"\u003e0.287.1\u003c/a\u003e\n(2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove old TODO file (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3645\"\u003e#3645\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/9d7a6b8ba7ca7fda1fda4373714a8aff1e930e6f\"\u003e9d7a6b8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/31d2afed7eb393f33e56bdbaf0b17bc7c5345abc\"\u003e\u003ccode\u003e31d2afe\u003c/code\u003e\u003c/a\u003e\nchore(main): release 0.288.0 (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3648\"\u003e#3648\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/510a0c19483ea5631b7b0a453f9d6df1b9ef596a\"\u003e\u003ccode\u003e510a0c1\u003c/code\u003e\u003c/a\u003e\nfeat(all): auto-regenerate discovery clients (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3647\"\u003e#3647\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/93d63e8234f46095c363aff86b433c750ccd7332\"\u003e\u003ccode\u003e93d63e8\u003c/code\u003e\u003c/a\u003e\nchore(main): release 0.287.1 (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3646\"\u003e#3646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/9d7a6b8ba7ca7fda1fda4373714a8aff1e930e6f\"\u003e\u003ccode\u003e9d7a6b8\u003c/code\u003e\u003c/a\u003e\ndocs: remove old TODO file (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3645\"\u003e#3645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/576018ff14470f5cf33aa1a1d388d219a5291e40\"\u003e\u003ccode\u003e576018f\u003c/code\u003e\u003c/a\u003e\nchore(all): update all (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3644\"\u003e#3644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/cc70265cdfbc6c3d6ccbd7b068ff70a9c3695893\"\u003e\u003ccode\u003ecc70265\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump golang.org/x/net in /internal/kokoro/discogen (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3642\"\u003e#3642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/9858f66b46ba1fdea7dacf1a02b47c0881e2c27a\"\u003e\u003ccode\u003e9858f66\u003c/code\u003e\u003c/a\u003e\nchore: downgrade go version in go.work (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3641\"\u003e#3641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/commit/3cb00c0ab3ced21614ceb1f8e3e664f6d8ff7712\"\u003e\u003ccode\u003e3cb00c0\u003c/code\u003e\u003c/a\u003e\nchore: downgrade min Go version (\u003ca\nhref\u003d\"https://redirect.github.com/googleapis/google-api-go-client/issues/3640\"\u003e#3640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/googleapis/google-api-go-client/compare/v0.287.0...v0.288.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s major version (unless you unignore this specific\ndependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s minor version (unless you unignore this specific\ndependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR\nand stop Dependabot creating any more for the specific dependency\n(unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore\nconditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will\nremove the ignore condition of the specified dependency and ignore\nconditions\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1c5d2a1c9616c8c5798cc8e8cd60391ef07b3149",
      "tree": "63dab22593df3dc9798323099d39cd5b644c0265",
      "parents": [
        "10665a92a49df5817a3f0462c188545c9d3e757e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 13:55:16 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 13:55:16 2026 -0400"
      },
      "message": "build(deps): bump the codeql-action group with 2 updates (#1495)\n\nBumps the codeql-action group with 2 updates:\n[github/codeql-action/init](https://github.com/github/codeql-action) and\n[github/codeql-action/analyze](https://github.com/github/codeql-action).\n\nUpdates `github/codeql-action/init` from 4.36.3 to 4.37.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003egithub/codeql-action/init\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.37.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0\"\u003e2.26.0\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3995\"\u003e#3995\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIn addition to the existing input format, the\n\u003ccode\u003econfig-file\u003c/code\u003e input for the \u003ccode\u003ecodeql-action/init\u003c/code\u003e\nstep will soon support a new \u003ccode\u003e[owner/]repo[@ref][:path]\u003c/code\u003e\nformat. All components except the repository name are optional. If\nomitted, \u003ccode\u003eowner\u003c/code\u003e defaults to the same owner as the repository\nthe analysis is running for, \u003ccode\u003eref\u003c/code\u003e to \u003ccode\u003emain\u003c/code\u003e, and\n\u003ccode\u003epath\u003c/code\u003e to \u003ccode\u003e.github/codeql-action.yaml\u003c/code\u003e. Support\nfor this format ships in this version of the CodeQL Action, but will\nonly be enabled over the coming weeks. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3973\"\u003e#3973\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/blob/main/CHANGELOG.md\"\u003egithub/codeql-action/init\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCodeQL Action Changelog\u003c/h1\u003e\n\u003cp\u003eSee the \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003ereleases\npage\u003c/a\u003e for the relevant changes to the CodeQL CLI and language\npacks.\u003c/p\u003e\n\u003ch2\u003e[UNRELEASED]\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.37.1 - 16 Jul 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eUpcoming breaking change\u003c/em\u003e: Add a deprecation warning for\ncustomers using CodeQL version 2.20.6 and earlier. These versions of\nCodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise\nServer 3.16, and will be unsupported by the next minor release of the\nCodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3956\"\u003e#3956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1\"\u003e2.26.1\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4019\"\u003e#4019\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.0 - 08 Jul 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0\"\u003e2.26.0\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3995\"\u003e#3995\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIn addition to the existing input format, the\n\u003ccode\u003econfig-file\u003c/code\u003e input for the \u003ccode\u003ecodeql-action/init\u003c/code\u003e\nstep will soon support a new \u003ccode\u003e[owner/]repo[@ref][:path]\u003c/code\u003e\nformat. All components except the repository name are optional. If\nomitted, \u003ccode\u003eowner\u003c/code\u003e defaults to the same owner as the repository\nthe analysis is running for, \u003ccode\u003eref\u003c/code\u003e to \u003ccode\u003emain\u003c/code\u003e, and\n\u003ccode\u003epath\u003c/code\u003e to \u003ccode\u003e.github/codeql-action.yaml\u003c/code\u003e. Support\nfor this format ships in this version of the CodeQL Action, but will\nonly be enabled over the coming weeks. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3973\"\u003e#3973\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.36.3 - 01 Jul 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.36.2 - 04 Jun 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCache CodeQL CLI version information across Actions steps. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3943\"\u003e#3943\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReduce requests while waiting for analysis processing by using\nexponential backoff when polling SARIF processing status. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3937\"\u003e#3937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6\"\u003e2.25.6\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3948\"\u003e#3948\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.36.1 - 02 Jun 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.36.0 - 22 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eBreaking change\u003c/em\u003e: Bump the minimum required CodeQL bundle\nversion to 2.19.4. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3894\"\u003e#3894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for SHA-256 Git object IDs. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3893\"\u003e#3893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5\"\u003e2.25.5\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3926\"\u003e#3926\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.5 - 15 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWe have improved how the JavaScript bundles for the CodeQL Action\nare generated to avoid duplication across bundles and reduce the size of\nthe repository by around 70%. This should have no effect on the runtime\nbehaviour of the CodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3899\"\u003e#3899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFor performance and accuracy reasons, \u003ca\nhref\u003d\"https://redirect.github.com/github/roadmap/issues/1158\"\u003eimproved\nincremental analysis\u003c/a\u003e will now only be enabled on a pull request when\ndiff-informed analysis is also enabled for that run. If diff-informed\nanalysis is unavailable (for example, because the PR diff ranges could\nnot be computed), the action will fall back to a full analysis. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3791\"\u003e#3791\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIf multiple inputs are provided for the GitHub-internal\n\u003ccode\u003eanalysis-kinds\u003c/code\u003e input, only \u003ccode\u003ecode-scanning\u003c/code\u003e will\nbe enabled. The \u003ccode\u003eanalysis-kinds\u003c/code\u003e input is experimental, for\nGitHub-internal use only, and may change without notice at any time. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3892\"\u003e#3892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded an experimental change which, when running a Code Scanning\nanalysis for a PR with \u003ca\nhref\u003d\"https://redirect.github.com/github/roadmap/issues/1158\"\u003eimproved\nincremental analysis\u003c/a\u003e enabled, prefers CodeQL CLI versions that have\na cached overlay-base database for the configured languages. This speeds\nup analysis for a repository when there is not yet a cached overlay-base\ndatabase for the latest CLI version. We expect to roll this change out\nto everyone in May. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3880\"\u003e#3880\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.4 - 07 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.4\"\u003e2.25.4\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3881\"\u003e#3881\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.3 - 01 May 2026\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/99df26d4f13ea111d4ec1a7dddef6063f76b97e9\"\u003e\u003ccode\u003e99df26d\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3996\"\u003e#3996\u003c/a\u003e\nfrom github/update-v4.37.0-c7c896d71\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/31c27074fda95256cda077009907f8a6022dd7c0\"\u003e\u003ccode\u003e31c2707\u003c/code\u003e\u003c/a\u003e\nAdd changenote for \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3973\"\u003e#3973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/72df2181aac054d1f4b44264399d2aac12cf11c6\"\u003e\u003ccode\u003e72df218\u003c/code\u003e\u003c/a\u003e\nUpdate changelog for v4.37.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/c7c896d71b3055d36f2aff93b16bcc6c69923b91\"\u003e\u003ccode\u003ec7c896d\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3995\"\u003e#3995\u003c/a\u003e\nfrom github/update-bundle/codeql-bundle-v2.26.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/3f34ff0ea3f5153c96071437b7cbf71ea3757146\"\u003e\u003ccode\u003e3f34ff0\u003c/code\u003e\u003c/a\u003e\nAdd changelog note\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/43bec09f1dc368b430cab4b5d69799bc904079d1\"\u003e\u003ccode\u003e43bec09\u003c/code\u003e\u003c/a\u003e\nUpdate default bundle to codeql-bundle-v2.26.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/f58f0d11ebf5dedd870fab2f999275f7602cfa46\"\u003e\u003ccode\u003ef58f0d1\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3973\"\u003e#3973\u003c/a\u003e\nfrom github/mbg/repo-props/config-file-shorthands\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/7dc37cbb5b3e37f0e1cd1f18b61e0ea849898fb8\"\u003e\u003ccode\u003e7dc37cb\u003c/code\u003e\u003c/a\u003e\nMerge remote-tracking branch \u0027origin/main\u0027 into\nmbg/repo-props/config-file-sh...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/8e22350a7e28c34c82a5a499fc241923301c2c4f\"\u003e\u003ccode\u003e8e22350\u003c/code\u003e\u003c/a\u003e\nThread \u003ccode\u003eActionState\u003c/code\u003e to \u003ccode\u003einitConfig\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/69c9e8c7d918cf2fee13b8b72fdde15883ff155b\"\u003e\u003ccode\u003e69c9e8c\u003c/code\u003e\u003c/a\u003e\nMark some \u003ccode\u003estatus-report\u003c/code\u003e imports as \u003ccode\u003etype\u003c/code\u003e-only\nto avoid circular dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/github/codeql-action/compare/54f647b7e1bb85c95cddabcd46b0c578ec92bc1a...99df26d4f13ea111d4ec1a7dddef6063f76b97e9\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github/codeql-action/analyze` from 4.36.3 to 4.37.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003egithub/codeql-action/analyze\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.37.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0\"\u003e2.26.0\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3995\"\u003e#3995\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIn addition to the existing input format, the\n\u003ccode\u003econfig-file\u003c/code\u003e input for the \u003ccode\u003ecodeql-action/init\u003c/code\u003e\nstep will soon support a new \u003ccode\u003e[owner/]repo[@ref][:path]\u003c/code\u003e\nformat. All components except the repository name are optional. If\nomitted, \u003ccode\u003eowner\u003c/code\u003e defaults to the same owner as the repository\nthe analysis is running for, \u003ccode\u003eref\u003c/code\u003e to \u003ccode\u003emain\u003c/code\u003e, and\n\u003ccode\u003epath\u003c/code\u003e to \u003ccode\u003e.github/codeql-action.yaml\u003c/code\u003e. Support\nfor this format ships in this version of the CodeQL Action, but will\nonly be enabled over the coming weeks. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3973\"\u003e#3973\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/blob/main/CHANGELOG.md\"\u003egithub/codeql-action/analyze\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCodeQL Action Changelog\u003c/h1\u003e\n\u003cp\u003eSee the \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003ereleases\npage\u003c/a\u003e for the relevant changes to the CodeQL CLI and language\npacks.\u003c/p\u003e\n\u003ch2\u003e[UNRELEASED]\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.37.1 - 16 Jul 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eUpcoming breaking change\u003c/em\u003e: Add a deprecation warning for\ncustomers using CodeQL version 2.20.6 and earlier. These versions of\nCodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise\nServer 3.16, and will be unsupported by the next minor release of the\nCodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3956\"\u003e#3956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1\"\u003e2.26.1\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4019\"\u003e#4019\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.0 - 08 Jul 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0\"\u003e2.26.0\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3995\"\u003e#3995\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIn addition to the existing input format, the\n\u003ccode\u003econfig-file\u003c/code\u003e input for the \u003ccode\u003ecodeql-action/init\u003c/code\u003e\nstep will soon support a new \u003ccode\u003e[owner/]repo[@ref][:path]\u003c/code\u003e\nformat. All components except the repository name are optional. If\nomitted, \u003ccode\u003eowner\u003c/code\u003e defaults to the same owner as the repository\nthe analysis is running for, \u003ccode\u003eref\u003c/code\u003e to \u003ccode\u003emain\u003c/code\u003e, and\n\u003ccode\u003epath\u003c/code\u003e to \u003ccode\u003e.github/codeql-action.yaml\u003c/code\u003e. Support\nfor this format ships in this version of the CodeQL Action, but will\nonly be enabled over the coming weeks. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3973\"\u003e#3973\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.36.3 - 01 Jul 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.36.2 - 04 Jun 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCache CodeQL CLI version information across Actions steps. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3943\"\u003e#3943\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReduce requests while waiting for analysis processing by using\nexponential backoff when polling SARIF processing status. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3937\"\u003e#3937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6\"\u003e2.25.6\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3948\"\u003e#3948\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.36.1 - 02 Jun 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.36.0 - 22 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eBreaking change\u003c/em\u003e: Bump the minimum required CodeQL bundle\nversion to 2.19.4. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3894\"\u003e#3894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for SHA-256 Git object IDs. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3893\"\u003e#3893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5\"\u003e2.25.5\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3926\"\u003e#3926\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.5 - 15 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWe have improved how the JavaScript bundles for the CodeQL Action\nare generated to avoid duplication across bundles and reduce the size of\nthe repository by around 70%. This should have no effect on the runtime\nbehaviour of the CodeQL Action. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3899\"\u003e#3899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFor performance and accuracy reasons, \u003ca\nhref\u003d\"https://redirect.github.com/github/roadmap/issues/1158\"\u003eimproved\nincremental analysis\u003c/a\u003e will now only be enabled on a pull request when\ndiff-informed analysis is also enabled for that run. If diff-informed\nanalysis is unavailable (for example, because the PR diff ranges could\nnot be computed), the action will fall back to a full analysis. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3791\"\u003e#3791\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIf multiple inputs are provided for the GitHub-internal\n\u003ccode\u003eanalysis-kinds\u003c/code\u003e input, only \u003ccode\u003ecode-scanning\u003c/code\u003e will\nbe enabled. The \u003ccode\u003eanalysis-kinds\u003c/code\u003e input is experimental, for\nGitHub-internal use only, and may change without notice at any time. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3892\"\u003e#3892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded an experimental change which, when running a Code Scanning\nanalysis for a PR with \u003ca\nhref\u003d\"https://redirect.github.com/github/roadmap/issues/1158\"\u003eimproved\nincremental analysis\u003c/a\u003e enabled, prefers CodeQL CLI versions that have\na cached overlay-base database for the configured languages. This speeds\nup analysis for a repository when there is not yet a cached overlay-base\ndatabase for the latest CLI version. We expect to roll this change out\nto everyone in May. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3880\"\u003e#3880\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.4 - 07 May 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.4\"\u003e2.25.4\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/3881\"\u003e#3881\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.35.3 - 01 May 2026\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/99df26d4f13ea111d4ec1a7dddef6063f76b97e9\"\u003e\u003ccode\u003e99df26d\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3996\"\u003e#3996\u003c/a\u003e\nfrom github/update-v4.37.0-c7c896d71\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/31c27074fda95256cda077009907f8a6022dd7c0\"\u003e\u003ccode\u003e31c2707\u003c/code\u003e\u003c/a\u003e\nAdd changenote for \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3973\"\u003e#3973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/72df2181aac054d1f4b44264399d2aac12cf11c6\"\u003e\u003ccode\u003e72df218\u003c/code\u003e\u003c/a\u003e\nUpdate changelog for v4.37.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/c7c896d71b3055d36f2aff93b16bcc6c69923b91\"\u003e\u003ccode\u003ec7c896d\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3995\"\u003e#3995\u003c/a\u003e\nfrom github/update-bundle/codeql-bundle-v2.26.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/3f34ff0ea3f5153c96071437b7cbf71ea3757146\"\u003e\u003ccode\u003e3f34ff0\u003c/code\u003e\u003c/a\u003e\nAdd changelog note\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/43bec09f1dc368b430cab4b5d69799bc904079d1\"\u003e\u003ccode\u003e43bec09\u003c/code\u003e\u003c/a\u003e\nUpdate default bundle to codeql-bundle-v2.26.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/f58f0d11ebf5dedd870fab2f999275f7602cfa46\"\u003e\u003ccode\u003ef58f0d1\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/3973\"\u003e#3973\u003c/a\u003e\nfrom github/mbg/repo-props/config-file-shorthands\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/7dc37cbb5b3e37f0e1cd1f18b61e0ea849898fb8\"\u003e\u003ccode\u003e7dc37cb\u003c/code\u003e\u003c/a\u003e\nMerge remote-tracking branch \u0027origin/main\u0027 into\nmbg/repo-props/config-file-sh...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/8e22350a7e28c34c82a5a499fc241923301c2c4f\"\u003e\u003ccode\u003e8e22350\u003c/code\u003e\u003c/a\u003e\nThread \u003ccode\u003eActionState\u003c/code\u003e to \u003ccode\u003einitConfig\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/69c9e8c7d918cf2fee13b8b72fdde15883ff155b\"\u003e\u003ccode\u003e69c9e8c\u003c/code\u003e\u003c/a\u003e\nMark some \u003ccode\u003estatus-report\u003c/code\u003e imports as \u003ccode\u003etype\u003c/code\u003e-only\nto avoid circular dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/github/codeql-action/compare/54f647b7e1bb85c95cddabcd46b0c578ec92bc1a...99df26d4f13ea111d4ec1a7dddef6063f76b97e9\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s major version (unless you unignore this specific\ndependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s minor version (unless you unignore this specific\ndependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR\nand stop Dependabot creating any more for the specific dependency\n(unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore\nconditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will\nremove the ignore condition of the specified dependency and ignore\nconditions\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "10665a92a49df5817a3f0462c188545c9d3e757e",
      "tree": "3842e062a44c3b30a03e7e1f31c3b5c058f12297",
      "parents": [
        "3d8d3cad5bd9fe4a8d6f66b5f43d06dd20603331"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 20 19:29:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 13:29:17 2026 -0400"
      },
      "message": "fix(table): validate encryption-key metadata fields (#1406)\n\n## Why\n`add-encryption-key` updates accepted incomplete key payloads and could\npersist invalid metadata (empty key-id or empty encrypted metadata).\n\n## What changed\n- Validate `EncryptionKey` whenever an encryption-key add update is\napplied (both through `MetadataBuilder.AddEncryptionKey` and the update\nobject path).\n- Return `ErrInvalidArgument` when required encryption key fields are\nmissing or empty.\n- Add coverage for empty `key-id`, empty `encrypted-key-metadata`, and\nmalformed update payloads that decode with missing fields.\n\n## Testing\n- `go test ./table -run\n\u0027TestAddEncryptionKeyUpdate_Apply_RejectsMissingKeyID|TestAddEncryptionKeyUpdate_Apply_RejectsMissingEncryptedKeyMetadata|TestAddEncryptionKeyUpdate_UnmarshalMissingFields_ApplyRejects\u0027\n-count\u003d1`"
    },
    {
      "commit": "3d8d3cad5bd9fe4a8d6f66b5f43d06dd20603331",
      "tree": "32adb0b0365ea6e0ec8ad2fd3c2b93fe15ae8bdc",
      "parents": [
        "0968050c7234fc181d995077aca44250a2202f52"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Mon Jul 20 19:27:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 13:27:54 2026 -0400"
      },
      "message": "fix(rest): apply server config to HTTP session (#1440)\n\nREST configuration was fetched with a session constructed from the\ninitial client options, and that same session remained active after\nserver defaults and overrides were merged. Transport-level configuration\ntherefore appeared in catalog properties without affecting later\nrequests.\n\nInitialization now uses the initial session only to fetch `/v1/config`,\nthen creates the catalog session from the merged options. Session\nconstruction no longer stores an automatically created OAuth manager in\nthe options, preventing bootstrap authentication state from carrying\ninto the final session. The final client is created before applying the\ncatalog prefix so OAuth endpoints remain rooted at `/v1`.\n\nThe regression test supplies a required header through config overrides,\nperforms a catalog operation, and verifies that only the post-config\nrequest receives it.\n\nTests:\n- `go test ./...`\n- `golangci-lint run --timeout\u003d10m`"
    },
    {
      "commit": "0968050c7234fc181d995077aca44250a2202f52",
      "tree": "c3e1e3291c5d65278caf11181acdd5fd5027d260",
      "parents": [
        "8f818409de71e17ae4761a4c27b35647115bec26"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 17 21:46:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 21:46:59 2026 +0200"
      },
      "message": "fix(glue): accept empty root namespace identifiers (#1490)\n\n## Problem\n\nGlue treated an allocated empty identifier differently from nil when\nlisting the root namespace. Callers using `table.Identifier{}` received\na hierarchical-namespace error even though it represents the same root.\n\n## Changes\n\nUse identifier length to distinguish the root from unsupported non-empty\nhierarchical namespaces.\n\n## Testing\n\nAdded coverage for an allocated empty root identifier.\n\n- `go test ./catalog/glue`"
    },
    {
      "commit": "8f818409de71e17ae4761a4c27b35647115bec26",
      "tree": "be636715fde0d7729683885bfa2856b3f5b483e3",
      "parents": [
        "6a92f18f746343dbabbc8e83187f0709b956d5df"
      ],
      "author": {
        "name": "Minh Vu",
        "email": "vuhoangminh97@gmail.com",
        "time": "Fri Jul 17 17:44:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 11:44:24 2026 -0400"
      },
      "message": "fix(manifest): clone partition and key metadata inputs (#1402)"
    }
  ],
  "next": "6a92f18f746343dbabbc8e83187f0709b956d5df"
}
