)]}'
{
  "log": [
    {
      "commit": "f5ec993a6491a55621121fd5b8e75f2f1c6707de",
      "tree": "52279361b91e0d6e7e5f97409d5ac2e1e1709e0a",
      "parents": [
        "3f456af0f21157d315ffe8b4b8ebe86701e81222"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Fri Nov 06 19:42:39 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 19:42:39 2026 -0600"
      },
      "message": "Add a Doxygen PR check to the Quick Checks (#490)\n\nATS now has a doxygen CMake target that fails on documentation\nwarnings, but nothing in CI builds it, so a PR can reintroduce\nwarnings unnoticed until someone next builds the API reference.\n\nThis patch adds a Github_Builds/doxygen job that configures with the\nci-fedora preset on the fedora:45 image and builds the doxygen target,\nskipping branches that predate the target. The top-level pipeline runs\nit alongside Format, RAT, and Docs in the Quick Checks and posts a\nDoxygen status.\n\nCo-authored-by: Claude Opus 5.5 Medium"
    },
    {
      "commit": "3f456af0f21157d315ffe8b4b8ebe86701e81222",
      "tree": "8d16808038dfdd8c80356f12f42200b61c84cd3d",
      "parents": [
        "867c9b79e65934a9937116792ea3302ba5133ea4"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Fri Nov 06 09:10:14 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 09:10:14 2026 -0600"
      },
      "message": "Add PlantUML to the Fedora 45 CI image (#491)\n\nThe ATS doxygen CMake target requires PlantUML, but the Fedora 45 CI\nimage only installs Doxygen, so configuring with ENABLE_DOXYGEN fails\nwhen it cannot find plantuml.jar.\n\nThis patch installs Fedora\u0027s plantuml package alongside Doxygen so a\nCI job can build the doxygen target on this image.\n\nCo-authored-by: Claude Opus 5.5 Medium"
    },
    {
      "commit": "867c9b79e65934a9937116792ea3302ba5133ea4",
      "tree": "48b588ecda93bc72231429c3428cd695e3aea4e0",
      "parents": [
        "2d342a11ffb465393b08a78816b3faf09a881661"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Nov 04 14:34:18 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 04 14:34:18 2026 -0600"
      },
      "message": "Number the URTest and branch AuTest shards from 1 (#489)\n\nThe shard labels were 0-based, so a three-shard run posted URTest 0of3,\n1of3 and 2of3 and never 3of3, which reads as an off-by-one. Label the\nshards 1of3 through 3of3, and convert back to the 0-based SHARD that\nurtest.sh and the AuTest slicing expect in the child jobs. The shard\nnumber in an [approve ci urtest N] comment is now 1-based as well.\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "2d342a11ffb465393b08a78816b3faf09a881661",
      "tree": "f661fe923bd760cab07cd60e418c0c831dd1a104",
      "parents": [
        "bb799f573c9314cbef602dcf01da346314ec7949"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Nov 03 16:08:45 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 16:08:45 2026 -0600"
      },
      "message": "Run the Fedora CI jobs on fedora:45 (#488)\n\nThe Fedora build, URTest, and branch AuTest jobs still run on\nfedora:44, while Fedora 45 brings newer compilers, Python 3.15, and\nOpenSSL 4. Testing on the current release catches toolchain and\nlibrary breakage before ATS users hit it.\n\nThis change points those three pipelines at the fedora:45 image, which\nis now in the CI registry on every agent, and updates the ccache note\nfor the newer image. Master already carries the test fixes Fedora 45\nneeds (apache/trafficserver#13976). The 10.2.x and 9.2.x branches need\ntheir backports, including the OpenSSL 4 build fixes for 9.2.x, before\ntheir PRs pass on the new image.\n\nCo-authored-by: Claude Opus 5.5 Medium \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "bb799f573c9314cbef602dcf01da346314ec7949",
      "tree": "918f9873f346fa85741aa2e240b8351e2e872b6a",
      "parents": [
        "d48d7500720e815a2c264d347e441ff89c042949"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Nov 03 09:07:34 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 09:07:34 2026 -0600"
      },
      "message": "Add doxygen to the Fedora 45 CI image (#487)\n\nInstall doxygen in the Fedora 45 image so it is available if we add a\nCI job that builds the ATS API documentation with Doxygen. Nothing uses\nit yet.\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "d48d7500720e815a2c264d347e441ff89c042949",
      "tree": "c205b3116fcbb092ea7ec69f81561781a8fff390",
      "parents": [
        "8716f226d4d846c38d89debbfc9943692f453011"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Fri Oct 30 21:29:40 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 21:29:40 2026 -0500"
      },
      "message": "Skip the full build in clang-tidy and clang-analyzer (#486)\n\nThe clang-tidy and clang-analyzer PR jobs each spent about ten minutes\non an uncached full Debug build before running their tools. Neither\ntool needs the build products: both work from compile_commands.json,\nwhich CMake writes at configure time, plus the ParseRules tables that\nsrc/tscore generates at build time. The analyzer also checked the\nvendored third party code under lib/, which the project does not fix.\n\nThis patch configures with the ci-clang-analyzer preset and builds only\nthe three ParseRules targets, falling back to the full build on any\nbranch that does not define them. C++ module scanning is turned off\nexplicitly because otherwise the compilation database refers to .modmap\nfiles that only a full build creates; newer presets also set it, but\nthe release branches\u0027 presets do not. The analyzer now excludes every\nlib/ directory except libswoc, which the project maintains.\n\nIn the ubuntu:26.04 CI image on a 4 vCPU node, the full analyzer job\nran clean on master, 10.2.x and 10.1.x, taking about 25, 23 and 20\nminutes. Setup before analysis now takes about a minute.\n\nCo-authored-by: Claude Opus 5.5 Medium \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "8716f226d4d846c38d89debbfc9943692f453011",
      "tree": "ed3babbf361cd531a26c85d20d9aabae513fbb8c",
      "parents": [
        "68923b3fa04c94f3edd9ebae39d37e7f22c08e47"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Fri Oct 30 17:38:59 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 17:38:59 2026 -0500"
      },
      "message": "Add a shared remote ccache for the Fedora and Debian PR builds (#485)\n\nEach docker agent has its own local ccache, so URTest shards and any job\non a host it hasn\u0027t run on lately compile cold, which takes 17 to 21\nminutes on these 4-core hosts. A shared cache lets an object compiled on\none agent hit on all of them.\n\nccache-remote/ packages a bazel-remote server for docker11, which is out\nof Jenkins rotation: a compose file, a systemd unit, and an install\nscript. The server listens on port 9090 with host networking so that\nufw, synced from config/allowed-clients.txt, controls who can reach it.\nThe install script refuses to run unless ufw is active and denies\nincoming connections. bazel-remote\u0027s --max_size (60 GiB by default)\nbounds the disk it uses, evicting least recently used entries.\n\nURTest, Fedora, and Debian PR builds set CCACHE_REMOTE_STORAGE. Their\nimages ship ccache 4.12 and 4.7, and that variable needs 4.7 or newer.\nThe Rocky 8, CentOS 7, and Ubuntu 20.04 images ship ccache 3.7, which\nhas no remote storage support. If the server is unreachable, ccache\nfalls back to compiling locally. Each of these builds now prints its own\nccache statistics after the Build stage, so a build that never reaches\nthe server is visible.\n\nOn docker11, a build with a warm remote cache over a 1.5 ms link took\n71 s, against 69 s with a warm local cache and 1031 s cold.\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "68923b3fa04c94f3edd9ebae39d37e7f22c08e47",
      "tree": "d4eb6f80c81f2b48b49eb94c93471b920a8d03f9",
      "parents": [
        "0060172a3beec709965fa1dd281a4909092ab2e2"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Oct 29 15:21:41 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 15:21:41 2026 -0500"
      },
      "message": "Raise the local ccache size limit from 5 GB to 20 GB (#484)\n\nEach docker agent keeps one ccache directory, ${HOME}/ccache, shared by\nevery job that runs there. That cache sits at the 5 GB default and is\nfull on every host checked. Its oldest entries are only 1 to 3 days\nold, so any build configuration that hasn\u0027t run on a host for a day or\ntwo, such as PRs against the release branches, compiles cold.\n\nSet CCACHE_MAXSIZE to 20G in every pipeline that mounts the shared\ncache. URTest also writes the limit into the host\u0027s ccache.conf so that\njobs configured outside this repository, which mount the same cache\nwithout CCACHE_MAXSIZE, don\u0027t trim it back to 5 GB. ccache 3.7 and 4.x\nboth read that setting. Every agent has at least 53 GiB free.\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "0060172a3beec709965fa1dd281a4909092ab2e2",
      "tree": "47b0ce8ff8b69f10aa44a3cc507ec61955304748",
      "parents": [
        "a0b6171d5f37bf68090d867bda84152ac7e6a0ed"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Oct 29 13:52:42 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 13:52:42 2026 -0500"
      },
      "message": "Rename AuTest CI to URTest and split out Clang-Tidy (#483)\n\nThe Clang-Analyzer job is the longest running PR check since it now\nruns both the analyzer and Clang-Tidy serially after a full build.\n\nThis splits Clang-Tidy into its own clang-tidy job so the two run in\nparallel, and renames the autest job to urtest since the suite has\nbeen converted to Uranium. The urtest job now runs with 4 parallel\nworkers instead of 2 so that the shard count can drop from 4 to 3\n(via the URTEST_SHARDS Jenkins parameter) without a large increase\nin wall time. \"[approve ci autest]\" is still accepted alongside\n\"[approve ci urtest]\".\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "a0b6171d5f37bf68090d867bda84152ac7e6a0ed",
      "tree": "485de2bdb4126af7817187e7cf8b92143799cbd3",
      "parents": [
        "28d2e6557ddb60b186662c464983f03a7c733ca2"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Sat Oct 24 15:51:07 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 15:51:07 2026 -0400"
      },
      "message": "github-mirror: add hdr_rw_git.config; back up maintenance units (#482)\n\nThe /mirror/ ATS remap loads hdr_rw_git.config, but the file existed only\non the controller, so a rebuild from this repository could not recreate the\nremap. Add it under github-mirror/ats as the source of truth, and have\ninstall-controller.sh install it into the ATS config directory when it is\nmissing. The installer never overwrites a live copy; ATS_CONFIG_DIR selects\nthe directory, and an empty value skips the step.\n\nAlso include github-mirror-maintenance.service and .timer in\nbackup-controller-config.sh, next to the fallback units.\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "28d2e6557ddb60b186662c464983f03a7c733ca2",
      "tree": "1c965a4537e1d51e2b54c2d8946c93747cffac24",
      "parents": [
        "93f0cf07d90bf98baa65ccdd29ee6b6c85893318"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Sat Oct 24 15:34:00 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 15:34:00 2026 -0400"
      },
      "message": "github-mirror: sync with the live controller; repack from a systemd timer (#481)\n\nBring the github-mirror package in line with the live controller, and run\nthe nightly repack from a systemd timer.\n\n- README: document the mirror UID/GID (gitdaemon) and running manual git\n  commands as that user, the fallback timer interval, the per-remap cache\n  disable, the server_session_sharing.match\u003dnone override, and a complete\n  file inventory.\n- ATS remap snippet: add server_session_sharing.match\u003dnone so ATS does not\n  reuse origin sessions that httpd has already closed behind docker-proxy.\n- Upstream smart-http tuning deployed on 2026-10-14 but never committed:\n  compose format 2.4 with memory limits, git pack memory limits in the\n  httpd image, and event MPM concurrency caps.\n- Add bin/maintain-mirrors.sh (repack with bitmaps, commit-graph, prune)\n  and run it from github-mirror-maintenance.service/.timer at 09:30 UTC.\n  install-controller.sh installs the timer and removes the old\n  hand-installed cron job.\n- Document that the Github_Builds/* Jenkins jobs now load their pipelines\n  from the HTTPS mirror instead of git://. git-daemon stays bound to all\n  addresses until no git:// traffic remains.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "93f0cf07d90bf98baa65ccdd29ee6b6c85893318",
      "tree": "785b2ac8e638b189a652411da4eac92c746d2321",
      "parents": [
        "06f216e1b11330a478ba3e6dcdd2b3ac4857d21b"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Oct 22 21:31:21 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 21:31:21 2026 -0400"
      },
      "message": "Keep Uranium sandbox settings out of child environments (#480)\n\nExporting the CI sandbox path causes nested pytest sessions to inherit\nthe parent session\u0027s locked sandbox. Framework self-tests then fail\nbefore reaching the behavior they are intended to validate.\n\nThis patch passes the sandbox explicitly on the command line and removes\nthe inherited environment setting for Uranium invocations. It preserves\nthe artifact location and legacy AuTest dispatch while isolating nested\nsessions across both CMake and Autotools jobs.\n\nCo-authored-by: GPT-6 Astra Medium"
    },
    {
      "commit": "06f216e1b11330a478ba3e6dcdd2b3ac4857d21b",
      "tree": "4eff8f90af510a155ae86b73cad2b7e0dc32d50e",
      "parents": [
        "658fbaf215ce7a7472f729a11a99761128dfa033"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Oct 22 15:45:07 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 16:45:07 2026 -0400"
      },
      "message": "Support Uranium in Autotools CI builds (#479)\n\nSupported release branches still use Autotools, whose configured test\nrunner lives outside the CMake build tree. CI otherwise falls back to\nAuTest after those branches migrate to Uranium.\n\nThis patch recognizes both configured runner locations and preserves the\nexisting AuTest fallback. It also applies the unconverted-test guard to\nAutotools builds and keeps Uranium sandboxes in the artifact location.\n\nCo-authored-by: GPT-6 Astra Medium"
    },
    {
      "commit": "658fbaf215ce7a7472f729a11a99761128dfa033",
      "tree": "12e6fd73719d751c3c63cc33642b2276cd428a19",
      "parents": [
        "21bac7be89ab403affcd735c479ed854e291ef6a"
      ],
      "author": {
        "name": "Bryan Call",
        "email": "bcall@apache.org",
        "time": "Fri Oct 16 14:30:43 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 16:30:43 2026 -0500"
      },
      "message": "Retry CI checkouts with a per-attempt timeout and backoff (#476)\n\n* Give each branch checkout attempt its own timeout\n\nThe branch pipelines wrapped retry(3) inside one timeout, so a single\nslow attempt used up the whole budget and the retries never ran. Swap\nthem so each of the three attempts gets 5 minutes.\n\nfreebsd, osx and osx-m1 had no timeout or retry on the source checkout\nat all; give them the same block.\n\nAlso note in the checkout comment that a requested SHA must now be on\nthe branch being built, since only that branch is fetched.\n\n* Back off with jitter between branch checkout retries\n\nWait a random 30 to 90 s before the second try and 60 to 120 s before\nthe third, outside the per-attempt timeout, so children that failed\ntogether do not hit the mirror again at the same moment.\n\n* Retry PR build checkouts with a per-attempt timeout\n\nThe GitHub PR pipelines run the source checkout once, with no timeout\nand no retry, so one failed or hung fetch from the CI mirror fails the\ncheck. Wrap it in retry(3) with a 5 minute timeout per attempt, and\nwait a random 30 to 90 s (then 60 to 120 s) before each retry so jobs\nthat failed together do not hit the mirror again at the same moment.\n\n* Keep the git fetch limit under the per-attempt timeout\n\nThe CloneOption timeout (10 min in branch pipelines, 20 in PR\npipelines) could never fire inside the 5 minute attempt timeout, so it\nonly suggested a budget the pipeline does not give. Set it to 4 so git\ngives up on a stuck fetch first with its own error, and the 5 minute\nstep timeout still covers the rest of the checkout."
    },
    {
      "commit": "21bac7be89ab403affcd735c479ed854e291ef6a",
      "tree": "93a37c0737d5799ed4ef2c97a339042104d285ff",
      "parents": [
        "1646b72774df66a08eb5c98231e998530f4e0b0b"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Fri Oct 16 14:53:55 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 14:53:55 2026 -0500"
      },
      "message": "Fix listing a PR\u0027s changed files on the CI controller (#478)\n\nSince the CI tier change landed, every Github_PR_Checks build has\nfallen back to the full tier with \"could not determine changed files\".\nThe controller\u0027s git 2.39 refuses \"fetch --filter\" into a repository\nthat has no partial-clone remote configured, so every attempt to list\nthe PR\u0027s files exited with an error. The trafficserver mirror doesn\u0027t\nsupport filtering anyway, so the filter never saved anything.\n\nThis patch drops the filter from the shallow merge-ref fetch, which\ntakes a few seconds and about 25 MB against the mirror. This patch also\ndeclares CI_TIER as a script field, which silences Jenkins\u0027 \"Did you\nforget the def keyword?\" warning about setting it from a method.\n\nCo-authored-by: Claude Opus 5.5 Medium \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "1646b72774df66a08eb5c98231e998530f4e0b0b",
      "tree": "5a4c3213e54661eca1e993b8e92e7d31ebc127f1",
      "parents": [
        "da6f39d20d6e3bc28cb71c00313bb1d93a19ed84"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Oct 15 17:56:25 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 17:56:25 2026 -0500"
      },
      "message": "Skip PR checks that a PR\u0027s changed files can\u0027t affect (#477)\n\nEvery PR runs the full set of PR checks, even when it only touches\ndocumentation, repository metadata or end-to-end tests. PRs that only\nchange .asf.yaml wait up to an hour for checks that test nothing. Since\n.asf.yaml marks all of these checks as required, a skipped check still\nhas to report a passing status for the PR to merge. Of the 1,111\napache/trafficserver PRs opened in the year before this change, 13%\ncould have skipped the OS builds: 0.6% changed only .asf.yaml, 4.2%\nchanged only docs or repository metadata, and 8.2% changed only\nend-to-end tests.\n\nThis patch has toplevel.pipeline list the PR\u0027s changed files from the\nmirrored merge ref and assign the PR a CI tier. An .asf.yaml-only PR\nruns no checks. Documentation, .github, top-level Markdown, .gitignore\nand editor or agent configuration files run only the Quick Checks.\nChanges to end-to-end tests in tests/gold_tests, or tests/uranium_tests\nonce the UrTest conversion lands, run the Quick Checks plus AuTest,\nunless the change touches compiled test plugins. Everything else runs\nin full. Toplevel posts a passing status for each skipped check without\nstarting its job. Any doubt, such as a failed fetch or a stale merge\nref, falls back to a full run, as does an explicit \"[approve ci ...]\"\ncomment.\n\nThis patch also makes failed AuTest shards fail the toplevel build and\nremoves github_polling.pipeline, which only an abandoned 2023 test job\nused.\n\nCo-authored-by: Claude Opus 5.5 Medium \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "da6f39d20d6e3bc28cb71c00313bb1d93a19ed84",
      "tree": "a041cd69f9d3bd69b850ba227c7fc573134d98fd",
      "parents": [
        "6b682e127892049f19cb916f51f178174d669928"
      ],
      "author": {
        "name": "Bryan Call",
        "email": "bcall@apache.org",
        "time": "Wed Oct 14 15:00:04 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 17:00:04 2026 -0500"
      },
      "message": "Fetch only the built branch in branch build checkouts (#474)\n\nBranch build children fetched every branch from the CI mirror\n(+refs/heads/*) at depth 1000. Measured on the controller, one such\nfetch is a 165 MB pack and about 570 MB of git memory on the server.\nA branch build starts about 30 children at once, which runs the\ncontroller out of memory.\n\nFetch only refs/heads/${GITHUB_BRANCH} instead, with honorRefspec so\nthe initial clone uses the same refspec. For master that is a 37 MB\npack and about 306 MB on the server. Children still check out the SHA\nthat branch_build resolved, which is on that branch within the\nexisting depth of 1000."
    },
    {
      "commit": "6b682e127892049f19cb916f51f178174d669928",
      "tree": "bf38fc300d44bd8a1301745308d5a2737ad27b74",
      "parents": [
        "e39ccf8bf0126b660d2f56d1f30f5f6376c8941c"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Oct 14 15:30:21 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 15:30:21 2026 -0500"
      },
      "message": "Allow branch builds 10 minutes to clone (#473)\n\nThe branch pipelines wrapped their source checkout, including all\nthree retries, in a one-minute timeout. Under mirror load a single\nshallow clone can exceed that, so builds abort before compiling.\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "e39ccf8bf0126b660d2f56d1f30f5f6376c8941c",
      "tree": "60c6441be814b78ddd1b90e83efc92f0a6799312",
      "parents": [
        "e652caf6dbc3fea55051699898cc0bba8dbff01b"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Oct 01 13:51:45 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 13:51:45 2026 -0500"
      },
      "message": "Add Fedora 45 CI image (#471)\n\n* Add Fedora 45 CI image\n\nCI needs a Fedora 45 image to exercise Traffic Server with the newer\ncompiler, Python, and system library versions before the pipelines move\nto the next Fedora release.\n\nThis patch carries forward the Fedora 44 tools and builds PCRE1 from\nverified source for older ATS branches. It uses Fedora\u0027s Asio headers for\nNuRaft\u0027s OpenSSL 4 compatibility and includes the zlib static archive\nrequired by the distribution\u0027s CMake targets.\n\nCo-authored-by: Codex GPT-6.1 Sol High\n\n* Expose PCRE1 metadata in Fedora 45\n\nFedora\u0027s default pkg-config search path excludes libraries installed\nunder /usr/local, leaving the source-built PCRE1 metadata undiscoverable.\n\nThis patch includes that metadata directory in PKG_CONFIG_PATH so older\nATS branches can find PCRE1 alongside the packaged PCRE2 libraries.\n\nCo-authored-by: Codex GPT-6.1 Sol High\n\n---------"
    },
    {
      "commit": "e652caf6dbc3fea55051699898cc0bba8dbff01b",
      "tree": "9a8b6b28a9d9fc6eee7086973083a61eeace9bae",
      "parents": [
        "e3f2d45c553c2002cbc650a2282fbbd4f625018e"
      ],
      "author": {
        "name": "Bryan Call",
        "email": "bcall@apache.org",
        "time": "Wed Sep 30 14:44:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 16:44:15 2026 -0500"
      },
      "message": "Time out a branch build after 12 hours (#472)\n\nA branch_build whose child builds never report back, as after a Jenkins\ncontroller restart, stays in progress indefinitely. branch_build runs one\nbuild at a time, so every later branch build queues behind it:\nmaster/branch_build #1403 hung for 93 days and 9.2.x #192 for 65 before\nthey were aborted by hand. The real work in a run takes under 3 hours."
    },
    {
      "commit": "e3f2d45c553c2002cbc650a2282fbbd4f625018e",
      "tree": "3ad28c92cff6a98b8e91e595a7c31113c48afe43",
      "parents": [
        "4ed8074a936bd97bce97c132363aa40457ba0d95"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Sep 23 15:28:43 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 15:28:43 2026 -0500"
      },
      "message": "Select shared OpenSSL for Debian 13 and Amazon Linux (#470)\n\nNuRaft\u0027s static OpenSSL lookup breaks newer CI image builds. Debian 13\npulls non-PIC zlib objects into its shared library, while Amazon Linux\n2023\u0027s OpenSSL development package does not provide static archives.\n\nThis patch explicitly selects the system shared OpenSSL libraries for\nboth images, following the existing Ubuntu 26.04 workaround. The library\ndirectory comes from pkg-config to support the distro\u0027s architecture.\n\nCo-authored-by: GPT-6 Astra Medium"
    },
    {
      "commit": "4ed8074a936bd97bce97c132363aa40457ba0d95",
      "tree": "4a0e7594dfaa496069b06039ba9409445314a69b",
      "parents": [
        "40a4186255e32c7e3a6c65ae5c23976339299a4f"
      ],
      "author": {
        "name": "Phong Nguyen",
        "email": "p.nguyen@yahooinc.com",
        "time": "Mon Sep 21 13:34:12 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 15:34:12 2026 -0500"
      },
      "message": "Add Debian 13, Amazon Linux 2023, Rocky 10 (#442)\n\n# Debian 13 notes:\n\nno libpcre3-dev (aka pcre1) → build from source like in ubuntu26.04\n\n# Rocky 10 notes:\n\nno pcre-devel (aka pcre1) → build from source like in ubuntu26.04\n\n# amzn2023 notes:\n\nGlobal pip install is prohibited → pip install --user → run pipenv from ~/.local/bin\nNo wdiff package available\nNo python3-gunicorn package available\n\n* no pcre1 on el10\n\n* no pcre1 on deb13\n\n* Build pcre1 from source on deb13 and rocky10\n\n* amzn2023: no need for h3 tools\n\n* PR Remediations (1)\n\n* Fix pipenv install location\n\n* Agentic code review"
    },
    {
      "commit": "40a4186255e32c7e3a6c65ae5c23976339299a4f",
      "tree": "c390995a1be3a2fbaf67b7158b0f48ebdf0485a7",
      "parents": [
        "0aee9f1d5f00150ba95ab3ba134761c17e5eba35"
      ],
      "author": {
        "name": "Phong Nguyen",
        "email": "p.nguyen@yahooinc.com",
        "time": "Thu Sep 17 14:46:47 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 14:46:47 2026 -0700"
      },
      "message": "Remove orphaned Jenkins pipelines, job scripts and CI images (#468)\n\nNone of these are referenced by any pipeline, Dockerfile or script in\nthis repository, and I confirmed against the Jenkins job configuration\nat ci.trafficserver.apache.org that no enabled, passing job depends on\nthem.\n\nAbandoned prototype pipelines:\n\n- jenkins/fedora.pipeline, jenkins/ubuntu.pipeline and\n  jenkins/ubuntu-param.pipeline (last touched April 2022) build from\n  ats/old_ci/fedora:30 and ats/old_ci/ubuntu:19.04, and clone from the\n  ezelkow1/trafficserver personal forks and jenkins.trafficserver.org,\n  a hostname that no longer resolves. Their only consumers are\n  OS-Builds/fedora-build and OS-Builds/ubuntu-build, which last ran in\n  March 2021.\n\nPre-CMake job scripts superseded by inline pipeline steps. All of these\nrun \"autoreconf\" and \"./configure\" unconditionally with no CMake path,\nand github.sh still passes --enable-wccp, which ATS removed in #10763:\n\n- jenkins/bin/coverity.sh sources devtoolset-7 and calls\n  /home/admin/bin/cov-submit.sh. branch/coverity.pipeline performs the\n  build and submission inline; master/coverity passed as recently as\n  today against a CMake-only master, which this autotools-only script\n  could not have produced.\n- jenkins/bin/cache-tests.sh uses /home/jenkins/cache-tests and writes\n  to /CA/cache-tests. branch/cache-tests.pipeline runs npm inline\n  against /cache-tests in the image.\n- jenkins/bin/github.sh, snapshot.sh and cleanup.sh target the old\n  ATS_BUILD_BASEDIR layout and the asf-dist make target.\n\nCI images no passing job selects:\n\n- docker/fedora41 backs only master/os-fedora_41, which is enabled but\n  has been failing since Fedora 41 went end of life in November 2025.\n- docker/ubuntu2304 is Ubuntu 23.04, end of life since January 2024.\n  Every os-ubuntu_23.04 job is disabled except the one in 10.0.x, where\n  the entire distro build set has been failing since April 2026.\n- docker/docs builds FROM fedora:30, installs devtoolset-7, and has its\n  entire CMD block commented out. Docs are built by\n  branch/docs.pipeline on rockylinux:8 via jenkins/bin/docs.sh.\n\nDeliberately kept after checking Jenkins:\n\n- docker/fedora40, because 10.1.x/os-fedora_40 and 10.2.x/os-fedora_40\n  are enabled and last built successfully.\n- docker/fedora42, because master/os-fedora_42 is enabled and passing.\n- jenkins/branch/freebsd.pipeline and jenkins/github/freebsd.pipeline.\n  81bf709 commented out the FreeBSD stage in toplevel.pipeline but left\n  the jobs in place; twelve enabled freebsd jobs still point at these\n  two files, and Github_Builds/freebsd was triggered on 2026-09-11.\n  Those jobs should be deleted in Jenkins before the pipelines go.\n- docker/jenkins-agent, deployed by hand via docker-compose rather than\n  referenced from a pipeline.\n\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "0aee9f1d5f00150ba95ab3ba134761c17e5eba35",
      "tree": "2bb6fc298ca0f33dd518e1e8f86a04548a1c4d4c",
      "parents": [
        "64fdc21de5846dc4f0efd3b637d0f1c8525cb881"
      ],
      "author": {
        "name": "Phong Nguyen",
        "email": "p.nguyen@yahooinc.com",
        "time": "Thu Sep 17 14:46:42 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 14:46:42 2026 -0700"
      },
      "message": "Remove unreferenced helper scripts from bin/ (#467)\n\nEverything in bin/ except update_lets_encrypt_certs dates to the initial\nimport in e4814fd (\"scripts for ci\", Feb 2021) and has not been touched\nsince. None of it is referenced by any pipeline, Dockerfile or script in\nthis repository, nor by ci/ or tools/ on trafficserver master or 9.2.x.\n\nThe removed scripts fall into four groups:\n\n- Interactive distro shells (alpine38, centos7, debian7/8/9,\n  fedora30-33, ubuntu1404 through ubuntu2010, quic.sh). Each is a\n  one-line \"docker run ... ats/\u003cdistro\u003e:\u003cver\u003e /bin/bash\" against\n  registry tags that no longer exist. The same applies to the loops in\n  docker-all.sh (Fedora 27-30, CentOS 6/7, Ubuntu 17.04), version-all.sh\n  and pull-all.sh.\n\n- Administration for CI hosts that are long gone: rax.sh and\n  make-machines.sh (Rackspace), update.sh and on-all.sh (ssh into\n  fedora22-int, centos5-int and friends), clean-github.sh (github1-int\n  through github4-int), iptables.sh, purge.sh (hardcodes 192.168.3.14),\n  btrfs-snap, freebsd.sh, and the /CA cleanup scripts clean-autest.sh,\n  clean-clang.sh and cleanup.sh. freebsd.sh also embeds the provisioning\n  SSH public key and source-IP allowlist for the decommissioned\n  jenkins-master.rax.boot.org.\n\n- Personal workstation helpers: clean (a copy of clean.pl with a\n  changelog beginning in 1991), dbash, docker (a HOSTALIASES wrapper),\n  start-ats.sh, start-registry.sh, src_watcher.sh, build_master.sh,\n  RTD.sh (fetches MathJax from the retired cdn.mathjax.org),\n  coad-6_1_x.pl, compare-yum.sh, update-rpm-links.sh, and the\n  sync/copy wrappers gd-sync.sh, master-sync.sh, site_sync.sh,\n  rsync.sh, scp-all.sh, on-docker.sh and on-gd.sh.\n\n- Stale duplicates of files that are maintained elsewhere:\n  build_h3_tools.sh (each image carries its own copy, and trafficserver\n  master has tools/build_h3_tools.sh), gh-mirror.sh (jenkins/bin has the\n  live one), and the ats_conf.pl / invoker_wrap.sh / backtrace.sh\n  cluster, which references only itself and is byte-identical to the\n  ats_conf.pl that trafficserver 9.2.x still carries and master dropped.\n\nbin/update_lets_encrypt_certs is kept; it was added recently in #281 and\nis still used to refresh the docs host certificates.\n\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "64fdc21de5846dc4f0efd3b637d0f1c8525cb881",
      "tree": "3201354c72d179069612c0efe848e96fe290a11c",
      "parents": [
        "67bb06e6a5fdff6b1d4239c81a49fcd0cb8341c7"
      ],
      "author": {
        "name": "Phong Nguyen",
        "email": "p.nguyen@yahooinc.com",
        "time": "Thu Sep 17 13:58:17 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 15:58:17 2026 -0500"
      },
      "message": "Remove bin/cov-submit.sh and its committed Coverity token (#466)\n\nThis script has carried a hardcoded Coverity Scan submission token and\nsubmitter email in the public repository since it was first added in\ne4814fd (\"scripts for ci\", Feb 2021), under a header reading \"NOTE NOTE:\nDo not commit this script into any source repository!!!\".\n\nNothing invokes it. The Coverity job that actually runs today\n(jenkins/branch/coverity.pipeline) inlines its own submission step and\ntakes the token from Jenkins credentials rather than from a file in the\ntree. The only other reference is jenkins/bin/coverity.sh, which is\nitself dead and is removed separately.\n\nNote that deleting the file does not unpublish the token, which remains\nin git history and should be rotated in Coverity Scan independently of\nthis change.\n\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "67bb06e6a5fdff6b1d4239c81a49fcd0cb8341c7",
      "tree": "a758fa990d786503e61e1ad5af2a595a30896262",
      "parents": [
        "b01a7b318e05d9e6699461e8078b2eba67550a9f"
      ],
      "author": {
        "name": "Phong Nguyen",
        "email": "phongn@gmail.com",
        "time": "Tue Sep 15 10:16:43 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 12:16:43 2026 -0500"
      },
      "message": "Add lz4 and zstd packages to recent CI hosts (#441)\n\n* Add lz4 and zstd packages to recent CI hosts\n\n* Add ubuntu 26.04"
    },
    {
      "commit": "b01a7b318e05d9e6699461e8078b2eba67550a9f",
      "tree": "09a3f2f26f173df2b385c55cbe333f817a4cce01",
      "parents": [
        "deed407543e57ec58969019f350a58e1802030cb"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Sep 14 18:41:39 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 18:41:39 2026 -0500"
      },
      "message": "Ubuntu 26.04 builds PCRE1 for older ATS branches (#464)\n\nUbuntu 26.04 no longer packages PCRE1, which older supported ATS\nbranches still require to build.\n\nThis patch builds and installs PCRE 8.45 from a checksum-verified\nrelease archive after the apt dependencies, with JIT and Unicode\nsupport enabled.\n\nCo-authored-by: GPT-6 Astra Light"
    },
    {
      "commit": "deed407543e57ec58969019f350a58e1802030cb",
      "tree": "78abf3953747d147ca84a04215714cadb72aa0ae",
      "parents": [
        "1232aad962caaa02a11b04e0521fbaf3e6b94de5",
        "0a350f00420fb5aec0f191dfb05e8b28629a7cef"
      ],
      "author": {
        "name": "Masaori Koshiba",
        "email": "masaori@apache.org",
        "time": "Tue Sep 15 07:31:21 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 07:31:21 2026 +0900"
      },
      "message": "Merge pull request #462 from masaori335/hrw4u-test\n\nRun the hrw4u unit tests in the Fedora PR build"
    },
    {
      "commit": "1232aad962caaa02a11b04e0521fbaf3e6b94de5",
      "tree": "9ec0b060445321b78d5e89c2c7b6606703e241fc",
      "parents": [
        "c7f06b16826039052502ba1784fb8c1abe483034"
      ],
      "author": {
        "name": "Evan Zelkowitz",
        "email": "eze@apache.org",
        "time": "Fri Sep 11 16:54:06 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 16:54:06 2026 -0600"
      },
      "message": "Comment out closing brace in toplevel.pipeline\n\nComment out the closing brace for a conditional block."
    },
    {
      "commit": "c7f06b16826039052502ba1784fb8c1abe483034",
      "tree": "d83db95cb3980f3b02e26e33135ef66a622c69bb",
      "parents": [
        "673bc140a9d377cb5de94b8861aa749d9a94798d"
      ],
      "author": {
        "name": "Evan Zelkowitz",
        "email": "eze@apache.org",
        "time": "Fri Sep 11 16:50:00 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 16:50:00 2026 -0600"
      },
      "message": "Fix commented-out block in toplevel.pipeline"
    },
    {
      "commit": "673bc140a9d377cb5de94b8861aa749d9a94798d",
      "tree": "9ec0b060445321b78d5e89c2c7b6606703e241fc",
      "parents": [
        "ed4e8b959f8ed70004a71d5c507a73d973051016"
      ],
      "author": {
        "name": "Evan Zelkowitz",
        "email": "eze@apache.org",
        "time": "Fri Sep 11 16:47:17 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 16:47:17 2026 -0600"
      },
      "message": "Disable FreeBSD Build stage in toplevel.pipeline\n\nComment out FreeBSD build stage in the pipeline."
    },
    {
      "commit": "ed4e8b959f8ed70004a71d5c507a73d973051016",
      "tree": "3d0f6cc9a57d1e66c72f3a9f9b984df8dd914e96",
      "parents": [
        "1d8ae96e7d4543d1889af204fd114df2a4c52af4",
        "81bf709e346603ff2274824ae291da89c73d1a5c"
      ],
      "author": {
        "name": "Evan Zelkowitz",
        "email": "eze@apache.org",
        "time": "Fri Sep 11 14:26:02 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 14:26:02 2026 -0600"
      },
      "message": "Merge pull request #461 from apache/ezelkow1-patch-1\n\nRemove freebsd build from ci"
    },
    {
      "commit": "0a350f00420fb5aec0f191dfb05e8b28629a7cef",
      "tree": "f254df688965339f57825cc3f47c92b871b85114",
      "parents": [
        "1d8ae96e7d4543d1889af204fd114df2a4c52af4"
      ],
      "author": {
        "name": "Masaori Koshiba",
        "email": "masaori@apple.com",
        "time": "Thu Sep 10 16:17:19 2026 +0900"
      },
      "committer": {
        "name": "Masaori Koshiba",
        "email": "masaori@apple.com",
        "time": "Thu Sep 10 16:17:19 2026 +0900"
      },
      "message": "Run the hrw4u unit tests in the Fedora PR build\n\ntools/hrw4u/tests holds 698 tests that no CI job runs today. ats/fedora:44\nis the only pull-request image carrying antlr4 and uv, which is what they\nwere installed there for (#421).\n\nFedora\u0027s antlr4 package names the generator antlr4 while the Makefile\ndefaults to Homebrew\u0027s antlr, hence the override. UV_LINK_MODE is set\nbecause uv\u0027s cache and the bind-mounted workspace are on different\nfilesystems.\n"
    },
    {
      "commit": "81bf709e346603ff2274824ae291da89c73d1a5c",
      "tree": "3d0f6cc9a57d1e66c72f3a9f9b984df8dd914e96",
      "parents": [
        "1d8ae96e7d4543d1889af204fd114df2a4c52af4"
      ],
      "author": {
        "name": "Evan Zelkowitz",
        "email": "eze@apache.org",
        "time": "Wed Sep 02 16:45:17 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 16:45:17 2026 -0600"
      },
      "message": "Remove freebsd build from ci\n\nRemoved section for FreeBSD Build stage."
    },
    {
      "commit": "1d8ae96e7d4543d1889af204fd114df2a4c52af4",
      "tree": "3b791a32eeae6b00ec7299962e7a864c510d9ee1",
      "parents": [
        "e1fc380c5d135021b94554816578ed8bf8e2adb2"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Sep 02 16:36:28 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 16:36:28 2026 -0500"
      },
      "message": "Surface the Clang-Tidy diagnostics in the log and artifacts (#460)\n\nrun-clang-tidy\u0027s diagnostics went only to the console log, where one\ninvocation line plus a \"N warnings generated.\" line per translation unit\nburied them: a failing run over ~700 files printed 1355 lines of noise\naround the handful of lines saying what actually failed.\n\nKeep the full output as an artifact next to the clang-analyzer report,\ndrop the per-translation-unit counts from the console copy, and print a\nde-duplicated list of the diagnostics at the end of the stage. Also pass\n-export-fixes so the findings are archived in machine readable form for\nclang-apply-replacements.\n\nCo-authored-by: Claude Opus 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "e1fc380c5d135021b94554816578ed8bf8e2adb2",
      "tree": "b64332151412235a32631f3e21815347b6adb5ec",
      "parents": [
        "b4380aaf5138cd48925a7ccb2d2ab86df6d6cc4e"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Fri Aug 28 12:15:05 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 12:15:05 2026 -0500"
      },
      "message": "Add Clang-Tidy CI checks (#459)\n\nThe Clang analyzer job currently misses several focused correctness\nand lifetime diagnostics available through Clang-Tidy.\n\nThis patch adds a separate Clang-Tidy stage that consumes ATS\u0027s\nexplicit CI configuration, treats findings as errors, and skips branches\nwithout the configuration."
    },
    {
      "commit": "b4380aaf5138cd48925a7ccb2d2ab86df6d6cc4e",
      "tree": "0e864da8442cd0f831f6c1f74c88f04b2361a9dc",
      "parents": [
        "3842a499cbee0baec874b1a7ec81dbf13251fc3b"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Aug 27 17:37:27 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 27 17:37:27 2026 -0500"
      },
      "message": "Run Clang 21 analyzer on Ubuntu 26.04 (#456)\n\nThe analyzer job is pinned to Ubuntu 22.04 and versioned Clang 14 tool\nnames, so it misses newer diagnostics and enables alpha.core.SizeofPtr,\na checker current Clang releases no longer provide.\n\nThis patch moves the job to the Ubuntu 26.04 image and its unversioned\nClang entry points, drops the retired checker, and excludes the vendored\nHighway subtree so third party findings cannot hold back an ATS owned\nclean baseline.\n\nThe Ubuntu 26.04 image needs to be published before this merges, so the\nanalyzer job stays green through the transition.\n\nCo-authored-by: Claude Opus 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "3842a499cbee0baec874b1a7ec81dbf13251fc3b",
      "tree": "4ddd78b1355ac93b5a88edf084c68813732c8893",
      "parents": [
        "c8c1854b40d15edc882fb31006c947510c5697dc"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Aug 27 15:11:55 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 27 15:11:55 2026 -0500"
      },
      "message": "Build nuraft against shared OpenSSL on Ubuntu 26.04 (#458)\n\nOpenSSL 3.5 lists \"-lz\" in the static half of its pkg-config file, so\nCMake\u0027s FindOpenSSL resolves zlib while it is restricted to static\nlibraries and puts the non-PIC libz.a into libnuraft.so. amd64 rejects\nthat relocation, so the ubuntu2604 image fails to build there while\narm64 tolerates the same archive.\n\nThis patch names the shared OpenSSL libraries, which keeps FindOpenSSL\nout of its static path and drops the zlib, jitterentropy, and zstd\ndependencies from the nuraft link entirely.\n\nCo-authored-by: Claude Opus 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "c8c1854b40d15edc882fb31006c947510c5697dc",
      "tree": "25c12bedf0191a3570530b244a9405d7abf2bc23",
      "parents": [
        "00d36e3be15daf3bf542f1fc72e34bfafeb740cf"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Aug 27 14:35:48 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 27 14:35:48 2026 -0500"
      },
      "message": "ubuntu:26.04 (#457)"
    },
    {
      "commit": "00d36e3be15daf3bf542f1fc72e34bfafeb740cf",
      "tree": "f51749a91dca4ef3856ed573c230f507d6625922",
      "parents": [
        "c653ecd30d8dd817f2e264c243bd97c370e7222a"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Fri Aug 21 14:25:10 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 14:25:10 2026 -0500"
      },
      "message": "Reject AuTest files in Uranium jobs (#455)\n\nAuTest files added during the migration window can silently stop running\nonce a branch selects Uranium, allowing coverage to disappear despite\ngreen CI.\n\nThis change makes every Jenkins Uranium build reject *.test.py files\nbefore configuring ATS and lists the paths that must be converted.\nLegacy branches without urtest.sh continue down the existing AuTest\npath."
    },
    {
      "commit": "c653ecd30d8dd817f2e264c243bd97c370e7222a",
      "tree": "ed24df9a09a63a1faca0c9da4cda10467839adb7",
      "parents": [
        "b69b0979cc1c46d69488bf8dbca077b86a4712f0"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Aug 19 22:47:57 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 22:47:57 2026 -0500"
      },
      "message": "Preserve test sandbox permissions (#454)\n\nRestrictive checkout modes can make CMake-installed defaults unreadable,\ncausing runroot verification to fail. The failed-artifact path then\nrewrites sandbox modes before archiving and erases the evidence.\n\nThis patch normalizes source readability before end-to-end builds and\npackages failed sandboxes before workspace cleanup changes permissions.\nThe tar keeps complete sandbox contents while continuing to omit sockets\nand cache.db."
    },
    {
      "commit": "b69b0979cc1c46d69488bf8dbca077b86a4712f0",
      "tree": "080e4a4ffa6a553def64958f075b726d173afeba",
      "parents": [
        "a985afaa7d909cbfc19df0634d6ee6fd1827e455"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Aug 19 15:15:48 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 15:15:48 2026 -0500"
      },
      "message": "Archive only failed test artifacts (#453)\n\nSuccessful test runs still invoked Jenkins artifact archiving. Failed\nruns could also encounter unreadable sandbox files while copying\ndiagnostics. Passing jobs therefore did needless work, while failure\npublication was slow or incomplete.\n\nThis patch publishes artifacts only when the build fails, clears stale\noutput before each run, and makes sandbox diagnostics readable before\ncopying them. It applies to PR, branch, and Quiche jobs while retaining\nAuTest compatibility."
    },
    {
      "commit": "a985afaa7d909cbfc19df0634d6ee6fd1827e455",
      "tree": "83b6c0e3a5f36f7f2fe9a656e6148700807c7620",
      "parents": [
        "e53c55625e4922fdfda674b10e56502c23ce05c8"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Aug 18 20:29:56 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 20:29:56 2026 -0500"
      },
      "message": "Show Uranium test progress (#452)\n\nUranium\u0027s default pytest output does not identify individual tests as\nthey complete. Long CI runs therefore appear idle and make it hard to\nsee which scenario is running or failed.\n\nThis enables verbose pytest reporting for every Uranium CI invocation\nso each completed test emits one status line. AuTest invocations remain\nunchanged."
    },
    {
      "commit": "e53c55625e4922fdfda674b10e56502c23ce05c8",
      "tree": "d95e44fbd760ee932bf7d7b4ae15cf3bc549419c",
      "parents": [
        "b10791acb6f6bf6b1d03c853b50d87f0e62dddb4"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Aug 18 18:21:13 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 18:21:13 2026 -0500"
      },
      "message": "Support Uranium and AuTest CI (#451)\n\nATS branches can expose either Uranium or AuTest CMake presets and\nrunners. Selecting only legacy names prevents migrated branches from\nconfiguring, while dropping them would break maintained releases.\n\nDetect the runner in each checkout, select matching presets and\ninvocations, and preserve AuTest sharding and artifacts for older\nbranches."
    },
    {
      "commit": "b10791acb6f6bf6b1d03c853b50d87f0e62dddb4",
      "tree": "ba1003d783e0b7a1bc9544cd43d5715c09f60b54",
      "parents": [
        "92c53ba002ec5d80410d5c65d82978dbba5d65fb"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Aug 10 10:57:00 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 10:57:00 2026 -0500"
      },
      "message": "Parallelize FreeBSD PR builds (#450)\n\nFreeBSD PR builds use the Unix Makefiles generator, so omitting a job\ncount leaves the full CMake build serial. Clean builds consequently take\nroughly 45 minutes.\n\nThis patch addresses the delay by using three parallel jobs, matching\nthe existing FreeBSD branch pipeline and autotools fallback."
    },
    {
      "commit": "92c53ba002ec5d80410d5c65d82978dbba5d65fb",
      "tree": "b15716b3e7d5b984a3577f0ebb6ea1caa39dcf18",
      "parents": [
        "1a3112cd60a8bcf3f65bd1d528a0d2c9485578af"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Jul 30 09:56:54 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 09:56:54 2026 -0500"
      },
      "message": "Fix Fedora 44 OTEL and WAMR CI (#449)\n\nFedora 44 no longer needs a separately built OpenSSL, but the CI image\nand pipelines still assumed /opt/openssl-quic. BoringSSL curl also\nshadowed Fedora curl, preventing OpenSSL 3.5-only AuTests from running.\n\nThis removes the custom OpenSSL build, links NuRaft to Fedora OpenSSL,\nand keeps BoringSSL clients in their dedicated prefix. It also makes\nthe image fail fast if required OTEL or WAMR artifacts are missing.\n\nThis updates the AuTest pipelines to use the system TLS defaults while\nretaining supplemental tools from /opt/bin."
    },
    {
      "commit": "1a3112cd60a8bcf3f65bd1d528a0d2c9485578af",
      "tree": "5c9226d25af8f68de69bc52b6f13002487534b07",
      "parents": [
        "2b8344b23e0f89cd62c954896ec6903ddab0be1c"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Jul 23 10:22:57 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 10:22:57 2026 -0500"
      },
      "message": "fedora44: update OpenTelemetry and WAMR (#448)\n\n* fedora44: update OpenTelemetry and WAMR\n\nATS requires OpenTelemetry 1.19.0 to build the otel_tracer plugin and\ndocuments WAMR 2.1.1 for the wasm plugin.\n\nUpdate the Fedora 44 image to those versions and use the OpenTelemetry\nbuild options expected by ATS.\n\n* fedora44: install which\n\nInstall the which utility in both the build and runtime stages so CI\njobs can locate commands consistently."
    },
    {
      "commit": "2b8344b23e0f89cd62c954896ec6903ddab0be1c",
      "tree": "7404de13e5f5897c75ca86e87678a6f0c0a0cd13",
      "parents": [
        "584118a919458b1fa12591d18feef38cfb21f784"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Jul 13 13:22:21 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 12:22:21 2026 -0500"
      },
      "message": "Add -v for verbose output for parallel autests (#447)"
    },
    {
      "commit": "584118a919458b1fa12591d18feef38cfb21f784",
      "tree": "5c8f6569b2acaf8752a8f5aeca42918a76939018",
      "parents": [
        "abf842b1721b728f592341836c28c63a9c2344a5"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Jun 15 12:00:37 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 12:00:37 2026 -0500"
      },
      "message": "Support legacy github-mirror Compose (#446)\n\nThe controller still uses legacy docker-compose 1.25, which rejects Compose\nfiles without an explicit version and does not support default-value\ninterpolation in bind mount strings. The new /opt/github-mirror installer hit\nthat incompatibility during rollout.\n\nThis keeps the Compose file compatible with the controller by restoring the\nversion field and relying on the installer-generated .env file for MIRROR_ROOT.\nThis also excludes the installed webhook secret from future Docker build\ncontexts."
    },
    {
      "commit": "abf842b1721b728f592341836c28c63a9c2344a5",
      "tree": "41febb96b4e983d697e2df95919afd33bd157046",
      "parents": [
        "28fedf22676b38b18706fc3c7dc531da293b8974"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Jun 15 11:50:57 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 11:50:57 2026 -0500"
      },
      "message": "Run GitHub mirror from Compose (#445)\n\nGitHub mirror operations were split across the repo checkout, /etc secret\nstate, host-level webhook services, and a smart-HTTP-only Compose file. That\nmade controller backup and restore more awkward than the other controller\nservices that live under a single /opt directory.\n\nThis makes /opt/github-mirror the canonical mirror root and puts the long-lived\nwebhook and smart HTTP services behind one docker-compose.yml. The installer\npreserves config across refreshes, writes the Compose UID/GID environment,\ninstalls small systemd boot hooks, and migrates the old secret and service\nlayout when present.\n\nThis also updates the backup helper and runbook for the Compose layout, so the\nnormal mirror backup is just the /opt/github-mirror tree plus optional Jenkins\nand live ATS config snapshots."
    },
    {
      "commit": "28fedf22676b38b18706fc3c7dc531da293b8974",
      "tree": "6a50870c4a81d4ff18108a3b9c733c25d1418637",
      "parents": [
        "b308b5fdfc757efab2e7d1f9f61cf7bf648826c9"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Jun 15 11:24:41 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 11:24:41 2026 -0500"
      },
      "message": "Clean up GitHub mirror runbook (#444)\n\nThe mirror documentation still carried migration-era cron rollout details,\nwhich made the steady-state recovery path harder to follow after the webhook\nand readiness gate became the supported configuration.\n\nThis trims the runbook to the current smart HTTP and webhook design, keeps the\nfresh-controller rebuild steps, and documents Jenkins quietPeriod\u003d0 with the\nreadiness gate. This also adds a small helper for generating the shared GitHub\nwebhook secret without committing any secret material.\n\nCo-authored-by: bneradt \u003cbneradt@yahooinc.com\u003e"
    },
    {
      "commit": "b308b5fdfc757efab2e7d1f9f61cf7bf648826c9",
      "tree": "280b30b61eb8e38c4d07ccf69d14f4bedd8b867f",
      "parents": [
        "31a102e94e3103b02a2ccafd451769100fae710d"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Jun 15 10:13:30 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 10:13:30 2026 -0500"
      },
      "message": "Wait for mirrored PR refs before fanout (#443)\n\nGitHub delivers the Jenkins PR trigger and the mirror webhook independently.\nWithout an explicit readiness check, the top-level PR job can start child jobs\nbefore the controller mirror has fetched the new PR head and merge refs.\n\nThis adds a controller-side readiness stage to the GitHub PR fanout pipelines.\nThe stage polls the configured Git URL until the mirrored PR head matches\nGITHUB_PR_HEAD_SHA and the PR merge ref exists, allowing the Jenkins quiet\nperiod to be reduced to zero once the webhook is active."
    },
    {
      "commit": "31a102e94e3103b02a2ccafd451769100fae710d",
      "tree": "8db8954ace9fe2b162cf98281e99574a2239ca16",
      "parents": [
        "4774ec2265a86a7ca8414cb37407ffe10e50c133"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Jun 10 19:37:16 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 19:37:16 2026 -0500"
      },
      "message": "Use shallow mirror checkouts in Jenkins (#440)\n\nFresh CI workspaces still transfer a large amount of Git history even when\nJenkins fetches from the controller mirror. Narrow PR refspecs avoid fetching\nunrelated refs, but full-depth checkouts can still pull most of the ATS object\nhistory and slow down PR fanout and branch builds.\n\nThis makes PR and branch source checkouts shallow and no-tags by default.\nPR jobs keep honorRefspec and use depth 1000 so PreBuildMerge can still find\nthe merge base in normal cases, while branch jobs fail fast if asked to build\nan older SHA outside the shallow window."
    },
    {
      "commit": "4774ec2265a86a7ca8414cb37407ffe10e50c133",
      "tree": "1146389dfadb9d6b56e3a7c699b6b91b0ebd4681",
      "parents": [
        "fad769462d6538e6505b5e5ee4ee6649e7ad46ea"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Jun 10 19:05:52 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 19:05:52 2026 -0500"
      },
      "message": "Raise smart mirror Git backend timeout (#439)\n\nCI fanout can ask the smart HTTP mirror to generate many large Git packs at\nonce. The default httpd CGI timeout is 60 seconds, which can kill a\nqueued git-upload-pack before it writes response bytes and surface to\nJenkins as an HTTP 502 checkout failure.\n\nThis gives git-http-backend a longer timeout budget in the smart mirror\ncontainer. The troubleshooting notes also call out the 60-second 502\nsignature so operators know to rebuild and restart the image during\nrollout."
    },
    {
      "commit": "fad769462d6538e6505b5e5ee4ee6649e7ad46ea",
      "tree": "81d302167db9d304ce747464602f07e3975f8f6a",
      "parents": [
        "e85e8b203260f705b60ab19985312cdca509cf91"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Jun 10 18:48:25 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 18:48:25 2026 -0500"
      },
      "message": "Fix GitHub PR pipeline refspec syntax (#438)\n\nThe narrowed PR refspec change left the GitSCM checkout map one closing\nbracket short in every GitHub PR child pipeline. Jenkins fails while\nparsing those pipeline scripts, so affected PR jobs stop before they can\nrun any build steps.\n\nThis restores the missing list/map close on each userRemoteConfigs entry\nand fixes the repeated identity comment typo while touching the same\ncheckout block."
    },
    {
      "commit": "e85e8b203260f705b60ab19985312cdca509cf91",
      "tree": "b25ccaa196908c92b56042816cfccf14fffe1098",
      "parents": [
        "49af6232d2f7fcacaba610e5b8218467e2d754ce"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Jun 10 18:39:05 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 18:39:05 2026 -0500"
      },
      "message": "Trust mounted Git mirror repositories (#437)\n\nThe smart HTTP container serves host-owned bare repositories from a\nread-only bind mount. Git rejects those repositories as dubious when the\ncontainer UID does not match the host mirror owner, which makes direct\nsmart HTTP fetches fail with HTTP 500.\n\nThis records the expected mirror paths as system safe directories in the\ncontainer image. The troubleshooting notes also point operators at the\nsame failure mode so an old image can be rebuilt quickly during rollout."
    },
    {
      "commit": "49af6232d2f7fcacaba610e5b8218467e2d754ce",
      "tree": "8b7b7312f10a57eda326f61f996effd9bb89fa42",
      "parents": [
        "0152c98d9836b56631a2ad1a7eac9bdbf2b28560"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Jun 10 18:25:49 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 18:25:49 2026 -0500"
      },
      "message": "Add smart HTTP Git mirror service (#436)\n\nJenkins mirror clones are now served through a static HTTP export, which\nforces CI fanout jobs to download dumb HTTP packs and makes PR checkouts\ndepend on broad ref fetches. That path can turn the controller into a\nbottleneck even when the local mirror is fresh.\n\nThis adds a dedicated smart HTTP container and systemd unit that run\ngit-http-backend on 127.0.0.1:9417 behind the existing /mirror/ URLs. The\ncontroller installer starts the service, mirror initialization disables\nreceive-pack, and the runbook documents rollout, verification, and\nrollback.\n\nThis narrows PR child job refspecs to the target branch and current PR\nhead/merge refs with honorRefspec enabled. The mirror check scripts now\nverify PR merge refs and can compare the mirrored head against\nGITHUB_PR_HEAD_SHA."
    },
    {
      "commit": "0152c98d9836b56631a2ad1a7eac9bdbf2b28560",
      "tree": "b1e8b8bb79bf859678dba97cde3beda459686c1a",
      "parents": [
        "a225e88362c91fe81fcf00b178f0bec5c90a7a75"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Jun 10 15:45:13 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 15:45:13 2026 -0500"
      },
      "message": "Add controller GitHub mirror tooling (#435)\n\nCI jobs currently clone ATS and trafficserver-ci directly from GitHub, which\nmakes every docker agent depend on external fetches and leaves PR checkout\nspeed at the mercy of GitHub and VM networking.\n\nThis adds a self-contained github-mirror package with controller install,\nmirror update, webhook, cron fallback, and verification tooling. It also\nmoves Jenkins checkout URLs to the controller mirrors and adds PR mirror\nreadiness checks before GitHub build fanout.\n\nCo-authored-by: bneradt \u003cbneradt@yahooinc.com\u003e"
    },
    {
      "commit": "a225e88362c91fe81fcf00b178f0bec5c90a7a75",
      "tree": "26a2e6009982751703cbadee384e0d8bb897c347",
      "parents": [
        "83949896eb4160b1db763e4a9f167441fadc7f93"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Jun 04 16:33:08 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 16:33:08 2026 -0500"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Revert \"Update autest.pipeline\" (#430)\" (#431…\" (#434)\n\nTrying to switch to fedora:44 again.\n\nThis reverts commit 83949896eb4160b1db763e4a9f167441fadc7f93."
    },
    {
      "commit": "83949896eb4160b1db763e4a9f167441fadc7f93",
      "tree": "95b543c7d23b84799d412d46e88c5357e3a48e5b",
      "parents": [
        "05f23ec6cf2cc85b62a8611070095db189545cb9"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Jun 04 09:33:20 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 09:33:20 2026 -0500"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Update autest.pipeline\" (#430)\" (#431)\" (#432)\" (#433)\n\nThis reverts commit 05f23ec6cf2cc85b62a8611070095db189545cb9."
    },
    {
      "commit": "05f23ec6cf2cc85b62a8611070095db189545cb9",
      "tree": "26a2e6009982751703cbadee384e0d8bb897c347",
      "parents": [
        "a5498f1d411ca486eb686867749a3834fb35a018"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Jun 03 21:34:42 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 21:34:42 2026 -0500"
      },
      "message": "Revert \"Revert \"Revert \"Update autest.pipeline\" (#430)\" (#431)\" (#432)\n\nThis reverts commit a5498f1d411ca486eb686867749a3834fb35a018."
    },
    {
      "commit": "a5498f1d411ca486eb686867749a3834fb35a018",
      "tree": "95b543c7d23b84799d412d46e88c5357e3a48e5b",
      "parents": [
        "3f94ddface6a9f8e0d5337f00acfe5e64113493e"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Jun 02 22:56:20 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 22:56:20 2026 -0500"
      },
      "message": "Revert \"Revert \"Update autest.pipeline\" (#430)\" (#431)\n\nThis reverts commit 3f94ddface6a9f8e0d5337f00acfe5e64113493e."
    },
    {
      "commit": "3f94ddface6a9f8e0d5337f00acfe5e64113493e",
      "tree": "26a2e6009982751703cbadee384e0d8bb897c347",
      "parents": [
        "887984e6a43f8df30e20ef7404c3932252d7e795"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Jun 02 21:44:56 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 21:44:56 2026 -0500"
      },
      "message": "Revert \"Update autest.pipeline\" (#430)\n\nLet\u0027s try fedora:44 again.\n\nThis reverts commit 887984e6a43f8df30e20ef7404c3932252d7e795."
    },
    {
      "commit": "887984e6a43f8df30e20ef7404c3932252d7e795",
      "tree": "95b543c7d23b84799d412d46e88c5357e3a48e5b",
      "parents": [
        "f232377fd531ea55f0708fd59e60178e87f8b6ec"
      ],
      "author": {
        "name": "Evan Zelkowitz",
        "email": "eze@apache.org",
        "time": "Tue Jun 02 09:26:23 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 09:26:23 2026 -0600"
      },
      "message": "Update autest.pipeline\n\nswitching autest back to fedora 42 for now"
    },
    {
      "commit": "f232377fd531ea55f0708fd59e60178e87f8b6ec",
      "tree": "26a2e6009982751703cbadee384e0d8bb897c347",
      "parents": [
        "9441b011125cf145cb139d19ee2ea858efea60e3"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Jun 01 15:02:00 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 15:02:00 2026 -0500"
      },
      "message": "CI: fedora:42 -\u003e fedora:44 (#429)\n\nSwitching over our CI to use fedora:44"
    },
    {
      "commit": "9441b011125cf145cb139d19ee2ea858efea60e3",
      "tree": "60d8aec658e549e0ace13fe2d887b6bd92b18b12",
      "parents": [
        "f66ea8ba7f707ceec685c085a8481a0aaaa63993"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu May 21 21:42:10 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 21:42:10 2026 -0500"
      },
      "message": "fedora:44 update h3 dependency tags (#428)\n\nThe Fedora 44 H3 build scripts should track the same current dependency\nversions as the Traffic Server helper scripts. Some previous defaults were\nolder than the latest available releases and could accidentally regress the\ncontroller-built toolchain.\n\nThis updates the Fedora 44 BoringSSL and OpenSSL helper defaults to the\nlatest checked tags for OpenSSL 3.5.x, ngtcp2, and nghttp2 while keeping\ncurl and nghttp3 at their current latest tags.\n\nCo-authored-by: bneradt \u003cbneradt@yahooinc.com\u003e"
    },
    {
      "commit": "f66ea8ba7f707ceec685c085a8481a0aaaa63993",
      "tree": "a11fc2c1cbf9845c4276be45a6183b59fae09b00",
      "parents": [
        "0684d85329f6cc3e502cfd529db2a3177212a81a"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu May 21 16:34:13 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 16:34:13 2026 -0500"
      },
      "message": "fedora:44 h3 library updates (#426)\n\nSync up with ATS"
    },
    {
      "commit": "0684d85329f6cc3e502cfd529db2a3177212a81a",
      "tree": "a7f163f57a0a77aae9009cc6096bc73f776d8d8e",
      "parents": [
        "83a823fbc25aabfc838397b44ac8a514e732731e"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu May 21 14:53:04 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 14:53:04 2026 -0500"
      },
      "message": "Add Fedora 44 CI image (#425)\n\nFedora 44 is the next CI image target for ATS, and the existing\nFedora 43-based configuration does not exercise the latest compiler,\nOpenSSL, Python, and H3 dependency stack.\n\nThis adds the Fedora 44 image files with H3 helper scripts updated to\nthe dependency versions used by proxy-verifier. The OpenSSL toolchain\nnow uses official OpenSSL 3.5.5 with native QUIC, while the BoringSSL\ntoolchain keeps the pinned BoringSSL revision and updates only nghttp2,\nngtcp2, and nghttp3.\n\nThis also switches the runtime stage to Fedora 44 and adds the Perl\nmodule required by the OpenSSL 3.5.5 build."
    },
    {
      "commit": "83a823fbc25aabfc838397b44ac8a514e732731e",
      "tree": "6410291886f46fbe38826849c30aaade4ef0792b",
      "parents": [
        "12516178e90f04b03c19cad1d67b40a1c9b34e75"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Apr 08 13:17:02 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 13:17:02 2026 -0500"
      },
      "message": "Handle RAT 0.13 and 0.17 output (#423)\n\nThis updates the RAT job checks to accept the old 0.13 summary\nformat and the new 0.17 summary format. The selection is based on\nwhether the checked-out Traffic Server tree includes ci/apache-rat-0.17.jar.\n\nThis also passes the RAT output path into the helper explicitly so the\nvalidation logic is clearer while ATS rolls forward to RAT 0.17."
    },
    {
      "commit": "12516178e90f04b03c19cad1d67b40a1c9b34e75",
      "tree": "cef59a367ab571d1a350ea80df5c7c887cc9f41d",
      "parents": [
        "4649469cbea3a2f0b296f2cdff7f5486dba7bbb5"
      ],
      "author": {
        "name": "Bryan Call",
        "email": "bcall@apache.org",
        "time": "Tue Feb 17 14:44:11 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 17 16:44:11 2026 -0600"
      },
      "message": "Script for updating certs on docs (#281)\n\n"
    },
    {
      "commit": "4649469cbea3a2f0b296f2cdff7f5486dba7bbb5",
      "tree": "3510aaf328528df3de1cf6a8ae76ae69f3f50e84",
      "parents": [
        "8f6a9d0bef4888fbe37fabb569ebf35860cf6162"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Feb 17 15:54:58 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 17 15:54:58 2026 -0600"
      },
      "message": "The packages need to be in the deploy step (#422)\n\n"
    },
    {
      "commit": "8f6a9d0bef4888fbe37fabb569ebf35860cf6162",
      "tree": "f9da399c5c488bb6a61add780c6f503f42eca3a0",
      "parents": [
        "56910db88e4cf7312d133eb9f2d2c13ca393bcf8"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Feb 17 11:23:36 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 17 11:23:36 2026 -0600"
      },
      "message": "Add antlr to fedora, for hrw4u (#421)\n\n"
    },
    {
      "commit": "56910db88e4cf7312d133eb9f2d2c13ca393bcf8",
      "tree": "ece3a151e259914e82b20c6a8d8497260aeb0dc3",
      "parents": [
        "12cc207e5b75edf7593fe51c36f1a0e950514088"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Feb 12 17:21:58 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 12 17:21:58 2026 -0600"
      },
      "message": "archiving fixes: handle sockets better (#420)\n\nOur previous exclusion regex didn\u0027t ignore the uds.socket file. This\nmade the archiving step fail prematurely, leading to partical sandbox\narchives. This fixes that by more generically removing all socket files\nvia a find command and updating the regex."
    },
    {
      "commit": "12cc207e5b75edf7593fe51c36f1a0e950514088",
      "tree": "84567102261c34cdce4249d12abbd701051a4e9b",
      "parents": [
        "265f6a1b3ccf2d50b17732be21294daa28e75484"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Feb 10 17:53:36 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 10 17:53:36 2026 -0600"
      },
      "message": "Parallel autest execution with -j 2 when supported (#419)\n\nThe autest.sh script now accepts a -j flag for parallel test execution\n(apache/trafficserver#12867). Detect support by grepping for the\nparallel_mode variable and prepend -j 2 to autest_args when present.\nOlder branches without the feature are unaffected."
    },
    {
      "commit": "265f6a1b3ccf2d50b17732be21294daa28e75484",
      "tree": "f849ec331a60a70611309295ce5f45b6361da65c",
      "parents": [
        "26d0005388b9c9ceb12dbabaeeb8955a1b952a25"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Jan 06 18:08:34 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 06 18:08:34 2026 -0600"
      },
      "message": "cmake jobs: Making sure /opt/bin is in PATH (#418)\n\n"
    },
    {
      "commit": "26d0005388b9c9ceb12dbabaeeb8955a1b952a25",
      "tree": "8fd7fa58814eb6f3c8918518e971c281ad7627ae",
      "parents": [
        "e5c0821206aee730a7864f6af817963ed5f58d43"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Jan 06 17:35:54 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 06 17:35:54 2026 -0600"
      },
      "message": "Fix uv install location to /opt/bin (#417)\n\n"
    },
    {
      "commit": "e5c0821206aee730a7864f6af817963ed5f58d43",
      "tree": "64d4c3261309ea9d8b83b5ab4eeaf228ef622a9e",
      "parents": [
        "5be26304d0128df5184eef21619b22f34e9abff2"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Jan 06 16:15:44 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 06 16:15:44 2026 -0600"
      },
      "message": "Add uv to relevant images (#416)\n\n"
    },
    {
      "commit": "5be26304d0128df5184eef21619b22f34e9abff2",
      "tree": "3841c3bd9a1cdabbbda56637494fa08e48f51158",
      "parents": [
        "70e244ead91c4dc87ef1acdbb96d7814dfb1a5ca"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Dec 23 17:16:56 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 17:16:56 2025 -0600"
      },
      "message": "Revert privilege escalation for centos pipeline (#415)\n\nRemove --cap-add\u003dSYS_PTRACE and --security-opt seccomp\u003dunconfined from\nthe centos pipeline docker args. These were added to enable ptrace for\ncrash log backtraces, but they don\u0027t work because the Jenkins host has\nYAMA ptrace_scope\u003d1, which blocks a child process from ptracing its\nparent regardless of container privileges.\n\nKeep --init for proper signal handling in the container."
    },
    {
      "commit": "70e244ead91c4dc87ef1acdbb96d7814dfb1a5ca",
      "tree": "919bb7a1a3c631d32d62f173ad8368f1af967dc2",
      "parents": [
        "1b7ee793c6eb59fa6d265c0e2bfa7ed3a0280239"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Dec 23 16:35:24 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 16:35:24 2025 -0600"
      },
      "message": "Run centos pipeline in privileged mode for ptrace (#414)\n\nThe traffic_crashlog helper uses ptrace to get backtraces from the\ncrashed traffic_server process. For ptrace to work, the process needs\neither:\n1. CAP_SYS_PTRACE in its effective capability set, or\n2. YAMA ptrace_scope set to 0 (classic permissions)\n\nWith Docker\u0027s --cap-add\u003dSYS_PTRACE, the capability is only added to the\ncontainer\u0027s initial process but not inherited by child processes like\ntraffic_server and traffic_crashlog. Additionally, YAMA\u0027s default\nptrace_scope\u003d1 only allows tracing children, not parents.\n\nUsing --privileged mode gives the container full capabilities and\ndisables security restrictions, allowing traffic_crashlog to ptrace\nits parent process (traffic_server)."
    },
    {
      "commit": "1b7ee793c6eb59fa6d265c0e2bfa7ed3a0280239",
      "tree": "b8b359af649c8880f00351131edd0373eec398ed",
      "parents": [
        "b5af36bdeeae3599b9ffe16ab04c41abdbb1aa8d"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Dec 23 16:14:05 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 16:14:05 2025 -0600"
      },
      "message": "Add SYS_PTRACE capability to centos pipeline (#413)\n\nThe traffic_crashlog helper uses ptrace to get backtraces from the\ncrashed traffic_server process. Without the SYS_PTRACE capability,\nptrace fails with EPERM and no backtrace is captured in the crash log.\n\nAlso add --init for proper signal handling in the container.\n\nAlso disable seccomp filtering with --security-opt seccomp\u003dunconfined\nbecause Docker\u0027s default seccomp profile blocks ptrace even when\nSYS_PTRACE capability is added."
    },
    {
      "commit": "b5af36bdeeae3599b9ffe16ab04c41abdbb1aa8d",
      "tree": "80ed2358f61a0f03271b8abe23adb4a26ef184b1",
      "parents": [
        "ce09ff3bc3d8e2f431b7c8fd4ef7660b4bb6505a"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Dec 23 15:28:17 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 15:28:17 2025 -0600"
      },
      "message": "Add SYS_PTRACE capability to centos pipeline (#412)\n\nThe traffic_crashlog helper uses ptrace to get backtraces from the\ncrashed traffic_server process. Without the SYS_PTRACE capability,\nptrace fails with EPERM and no backtrace is captured in the crash log.\n\nAlso add --init for proper signal handling in the container."
    },
    {
      "commit": "ce09ff3bc3d8e2f431b7c8fd4ef7660b4bb6505a",
      "tree": "d12273c9217084c612551395e946b266e555fbf6",
      "parents": [
        "1d4abefb3b5858a462174df375bd5bd54a6b5759"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Dec 23 14:25:31 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 14:25:31 2025 -0600"
      },
      "message": "Archive ATS logs on centos pipeline failure (#411)\n\nWhen the centos pipeline build or test fails, copy the Traffic Server\nlog directory (/tmp/ats/var/log/trafficserver) to the output directory.\nThis includes traffic.out and any crash logs, making it easier to\ndebug failures.\n\nUse a bash EXIT trap to ensure logs are archived even if the script\nis interrupted by a signal (e.g., SIGALRM from regression test timeout).\n\nThe logs are archived using Jenkins archiveArtifacts and can be\ndownloaded from the build job page.\n\nAlso fix git commands to use -s instead of --no-patch for compatibility\nwith the older git version on CentOS 7."
    },
    {
      "commit": "1d4abefb3b5858a462174df375bd5bd54a6b5759",
      "tree": "6a3d074fce35eb30b6bfb14f80bb96e158657b8e",
      "parents": [
        "c1506cfb0ebb31810a4bd219db956f456d78542d"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Dec 23 13:35:11 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 13:35:11 2025 -0600"
      },
      "message": "Archive ATS logs on centos pipeline failure (#410)\n\nWhen the centos pipeline build or test fails, copy the Traffic Server\nlog directory (/tmp/ats/var/log/trafficserver) to the output directory.\nThis includes traffic.out and any crash logs, making it easier to\ndebug failures.\n\nThe logs are archived using Jenkins archiveArtifacts and can be\ndownloaded from the build job page."
    },
    {
      "commit": "c1506cfb0ebb31810a4bd219db956f456d78542d",
      "tree": "6bcc2942367019508c7ec7bd6419b23277266aa9",
      "parents": [
        "86a86b2d7133509c81e374b23299374dc237fdca"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Dec 09 14:22:50 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 09 14:22:50 2025 -0600"
      },
      "message": "ATS regression tests: -R 1 -\u003e -R 3 (#408)\n\n"
    },
    {
      "commit": "86a86b2d7133509c81e374b23299374dc237fdca",
      "tree": "dcc8d93856cbaed0f0b97c4163838fa5bc7ecca0",
      "parents": [
        "b7d880f52c470b4eaed53917f417cdcefb3732f2"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Dec 03 15:40:11 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 03 15:40:11 2025 -0600"
      },
      "message": "-R 3 -\u003e -R 1 (#407)\n\n-R 3 crashes in CI:\nhttps://github.com/apache/trafficserver/issues/12728"
    },
    {
      "commit": "b7d880f52c470b4eaed53917f417cdcefb3732f2",
      "tree": "6bcc2942367019508c7ec7bd6419b23277266aa9",
      "parents": [
        "7044927be8984c1ed6d13fa04d001730df1a9ec7"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Dec 03 14:55:47 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 03 14:55:47 2025 -0600"
      },
      "message": "- R 3 -\u003e -R 3 (#406)\n\nFix regression test invocation spacing."
    },
    {
      "commit": "7044927be8984c1ed6d13fa04d001730df1a9ec7",
      "tree": "f16e60ad4bc76c9e09a0dacadc2dc115f838d9f0",
      "parents": [
        "a2d789232483285ce8d177d457620379b82b4c2f"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Dec 03 12:59:31 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 03 12:59:31 2025 -0600"
      },
      "message": "Regression tests: R 3 instead of 1 (#405)\n\nUse R 3 for the regression tests now that they are fixed:\nhttps://github.com/apache/trafficserver/pull/12721"
    },
    {
      "commit": "a2d789232483285ce8d177d457620379b82b4c2f",
      "tree": "dcc8d93856cbaed0f0b97c4163838fa5bc7ecca0",
      "parents": [
        "770421d98506e01bf39789b010c9b674088c49cb"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Dec 03 12:54:59 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 03 12:54:59 2025 -0600"
      },
      "message": "Ubuntu 24.04 (#404)\n\n"
    },
    {
      "commit": "770421d98506e01bf39789b010c9b674088c49cb",
      "tree": "ad6136e8c8468a4fcc5bd4f5780eed56dc62197b",
      "parents": [
        "2286af7d567d1f36a78aeb138a97cf9f3dc70b45"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Nov 25 14:09:38 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 25 14:09:38 2025 -0600"
      },
      "message": "cmake: use format for ws checks (#403)\n\nWith the following PR, we no longer need to roll our own whitespace\ncheck in ci because the format target itself will cover it as it already\ndoes for cmake, clang, and python formatting.\n\nhttps://github.com/apache/trafficserver/pull/12696"
    },
    {
      "commit": "2286af7d567d1f36a78aeb138a97cf9f3dc70b45",
      "tree": "b8353c8f75c6a34e0fb6453879b1e3c7142a5a10",
      "parents": [
        "6bbe453e2458a7b4782037c99cc06c4a285999d9"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Nov 24 11:45:26 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 24 11:45:26 2025 -0600"
      },
      "message": "Put back catching catastrophic errors again (#401)\n\nASF should be fixed now."
    },
    {
      "commit": "6bbe453e2458a7b4782037c99cc06c4a285999d9",
      "tree": "537e550b8b39e88b9750b302dcd402f4ff87218c",
      "parents": [
        "9a0c19959db2062ac22088a78c1de0c942b19c6d"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Nov 24 11:18:09 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 24 11:18:09 2025 -0600"
      },
      "message": "Really turn if off, for sure (#400)\n\n"
    },
    {
      "commit": "9a0c19959db2062ac22088a78c1de0c942b19c6d",
      "tree": "4e0765bef7b70f70204c4e8abdf394bef90271d8",
      "parents": [
        "172466a854e37574558f83c11fad6327ed1c8276"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Nov 24 11:07:24 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 24 11:07:24 2025 -0600"
      },
      "message": "temp allow catastaphic autest to pass (#399)\n\n"
    },
    {
      "commit": "172466a854e37574558f83c11fad6327ed1c8276",
      "tree": "a44f94bd2099effff850c8301eb590859901fc96",
      "parents": [
        "d7bb848c030583ce574ff00bdfaf29e869d53bb8"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Mon Nov 24 10:57:34 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 24 10:57:34 2025 -0600"
      },
      "message": "Catch when autest doesn\u0027t run (#398)\n\n"
    },
    {
      "commit": "d7bb848c030583ce574ff00bdfaf29e869d53bb8",
      "tree": "fd55fc1dee569e74f22b4c95695e4f8cca222804",
      "parents": [
        "71f43a3da61c94fd99af4fc5b248476f90a536e5"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Wed Oct 29 12:58:33 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 29 12:58:33 2025 -0500"
      },
      "message": "Revert \"ci jobs: fedora:42 -\u003e fedora:43 (#396)\" (#397)\n\nThis reverts commit 71f43a3da61c94fd99af4fc5b248476f90a536e5.\n\nReverts #396\n\nWe\u0027re seeing CI failures. I\u0027m not sure whether it is fedora:42 or godaddy vm issues. To be safe, I\u0027ll revert back to fedora:42 to see whether that helps."
    },
    {
      "commit": "71f43a3da61c94fd99af4fc5b248476f90a536e5",
      "tree": "6e3b93a3b44e01ba4ab4aa4a7d25b13c00042a06",
      "parents": [
        "5207d1dc51c1543f245fdc90bbe7765407aa3a60"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Tue Oct 28 18:13:16 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 28 18:13:16 2025 -0500"
      },
      "message": "ci jobs: fedora:42 -\u003e fedora:43 (#396)\n\n"
    },
    {
      "commit": "5207d1dc51c1543f245fdc90bbe7765407aa3a60",
      "tree": "fd55fc1dee569e74f22b4c95695e4f8cca222804",
      "parents": [
        "653b7d6063396974771263ffa4f8e46d18b14971"
      ],
      "author": {
        "name": "Brian Neradt",
        "email": "brian.neradt@gmail.com",
        "time": "Thu Oct 23 15:09:47 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 23 15:09:47 2025 -0500"
      },
      "message": "fedora:43 update (#395)\n\npip3 install of pipenv and httpbin work now that fedora:43 is further\nalong."
    },
    {
      "commit": "653b7d6063396974771263ffa4f8e46d18b14971",
      "tree": "2fa6812807a92558f4d1eef823fbde51cc34e1f1",
      "parents": [
        "5e0ae4c01d3f43ea132cbfd82ea76ae3b9de0ffb",
        "9fc3dda9126cc66eeb163ffc530025bda1202c34"
      ],
      "author": {
        "name": "Evan Zelkowitz",
        "email": "eze@apache.org",
        "time": "Thu Oct 09 18:37:13 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 09 18:37:13 2025 -0600"
      },
      "message": "Merge pull request #394 from apache/revert-393-ezelkow1-patch-1\n\nRevert \"Update rocky.pipeline - add libfmt to build cripts\""
    },
    {
      "commit": "9fc3dda9126cc66eeb163ffc530025bda1202c34",
      "tree": "2fa6812807a92558f4d1eef823fbde51cc34e1f1",
      "parents": [
        "5e0ae4c01d3f43ea132cbfd82ea76ae3b9de0ffb"
      ],
      "author": {
        "name": "Evan Zelkowitz",
        "email": "evan.zelkowitz@gmail.com",
        "time": "Thu Oct 09 18:36:36 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 09 18:36:36 2025 -0600"
      },
      "message": "Revert \"Update rocky.pipeline - add libfmt to build cripts\"\n"
    },
    {
      "commit": "5e0ae4c01d3f43ea132cbfd82ea76ae3b9de0ffb",
      "tree": "b7414c138052c06fd977a5f3de9b93deae3acd2c",
      "parents": [
        "c67a8124cee5325ecc2cff377957f1f0b154b41a",
        "ab203e27d4aec17d9018e7c55fc3d84271f4bf49"
      ],
      "author": {
        "name": "Evan Zelkowitz",
        "email": "eze@apache.org",
        "time": "Thu Oct 09 18:17:22 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 09 18:17:22 2025 -0600"
      },
      "message": "Merge pull request #393 from apache/ezelkow1-patch-1\n\nUpdate rocky.pipeline - add libfmt to build cripts"
    },
    {
      "commit": "ab203e27d4aec17d9018e7c55fc3d84271f4bf49",
      "tree": "b7414c138052c06fd977a5f3de9b93deae3acd2c",
      "parents": [
        "c67a8124cee5325ecc2cff377957f1f0b154b41a"
      ],
      "author": {
        "name": "Evan Zelkowitz",
        "email": "eze@apache.org",
        "time": "Thu Oct 09 18:16:46 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 09 18:16:46 2025 -0600"
      },
      "message": "Update rocky.pipeline - add libfmt to build cripts"
    }
  ],
  "next": "c67a8124cee5325ecc2cff377957f1f0b154b41a"
}
