)]}'
{
  "log": [
    {
      "commit": "98670d9ac8b39f4479a7613054803190f1b09bbc",
      "tree": "38056f6ce8749d821a8f88e3b6cc83d1be6486f3",
      "parents": [
        "192aa5ba77187438fb0de1ab1a33564cce8e06e5",
        "a1299a7d67e7e65bb35795301d82abe09cee2538"
      ],
      "author": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Mon Sep 21 14:22:04 2026 +0000"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Mon Sep 21 14:22:04 2026 +0000"
      },
      "message": "Merge branch \u0027gian/i51101\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4135"
    },
    {
      "commit": "a1299a7d67e7e65bb35795301d82abe09cee2538",
      "tree": "38056f6ce8749d821a8f88e3b6cc83d1be6486f3",
      "parents": [
        "192aa5ba77187438fb0de1ab1a33564cce8e06e5"
      ],
      "author": {
        "name": "Gianfranco",
        "email": "gsaenz@nvidia.com",
        "time": "Mon Sep 21 14:11:38 2026 +0200"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Mon Sep 21 16:12:18 2026 +0200"
      },
      "message": "Testsuite - Migrate test_133_1 as check/topology/test_route_tree.c\n\nThe old test guarded testcase6 on the slurmctld version, but it loaded\ntopology/tree from the install prefix. In mixed-version setups it ran\nagainst an older plugin and failed. As a libcheck test it now runs\nthrough test_100_1, which already skips libcheck tests in upgrade setups.\n\nEach subtest becomes a test case, so the 26.05 fan-out fix is an xfail on\nolder versions instead of a skip.\n"
    },
    {
      "commit": "192aa5ba77187438fb0de1ab1a33564cce8e06e5",
      "tree": "1ca48608f9a3b984980e359bebe8da51f3c5801c",
      "parents": [
        "5d58f686bf075c9eae7cb313c5470200edbbc335",
        "3bf789e16b8706ec980ffe0354f19301f7f5fedc"
      ],
      "author": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Mon Sep 21 13:55:48 2026 +0000"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Mon Sep 21 13:55:48 2026 +0000"
      },
      "message": "Merge branch \u0027gian/t21331\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4407"
    },
    {
      "commit": "3bf789e16b8706ec980ffe0354f19301f7f5fedc",
      "tree": "1ca48608f9a3b984980e359bebe8da51f3c5801c",
      "parents": [
        "2ba9f0edbf18da70108cd589cc2945f443f1ac9a"
      ],
      "author": {
        "name": "Gianfranco",
        "email": "gsaenz@nvidia.com",
        "time": "Wed Sep 16 16:31:21 2026 +0200"
      },
      "committer": {
        "name": "Gianfranco",
        "email": "gsaenz@nvidia.com",
        "time": "Mon Sep 21 15:48:43 2026 +0200"
      },
      "message": "Testsuite - Improve test7.21 using test_147_4 avoiding false failures\n\nThe tasks of the job array shared one output file and each of them\ntruncated it on start, so they could wipe each other\u0027s output.\nThat is why the test failed from time to time with \"1 !\u003d 2\".\nNow every task writes to its own file, and the checks on the SPANK log\nverify the values reported for each task instead of an exact number of\nlines.\n"
    },
    {
      "commit": "2ba9f0edbf18da70108cd589cc2945f443f1ac9a",
      "tree": "48654926c12eea87dd517bd2fa635464dc70e2ad",
      "parents": [
        "d2bd43a4b39e863953ed1e1c954e345d1d9fd06f"
      ],
      "author": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Mon Sep 21 11:40:45 2026 +0200"
      },
      "committer": {
        "name": "Gianfranco",
        "email": "gsaenz@nvidia.com",
        "time": "Mon Sep 21 14:49:21 2026 +0200"
      },
      "message": "Testsuite - Fix typos in spank_plugin\n"
    },
    {
      "commit": "d2bd43a4b39e863953ed1e1c954e345d1d9fd06f",
      "tree": "f4a69a95e48ae04bfef4e1c16ddc73761f465a67",
      "parents": [
        "d063ba75e027df4b5ba2d0abbfab1d6888496649"
      ],
      "author": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Mon Sep 21 11:39:42 2026 +0200"
      },
      "committer": {
        "name": "Gianfranco",
        "email": "gsaenz@nvidia.com",
        "time": "Mon Sep 21 14:49:21 2026 +0200"
      },
      "message": "Testsuite - Improve spank_plugin fixture supporting spank_tmp_plugin\n\nThis makes test needing spank plugins more homogeneous and creates a\npattern for future similar tests about improving the generic spank_plugin\nreusing code.\n"
    },
    {
      "commit": "d063ba75e027df4b5ba2d0abbfab1d6888496649",
      "tree": "a54276b5367934578beaa0393e9d2b4f4d908455",
      "parents": [
        "5d58f686bf075c9eae7cb313c5470200edbbc335"
      ],
      "author": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Mon Sep 21 11:34:47 2026 +0200"
      },
      "committer": {
        "name": "Gianfranco",
        "email": "gsaenz@nvidia.com",
        "time": "Mon Sep 21 14:49:21 2026 +0200"
      },
      "message": "Testsuite - Rename spank_fail_test to spank_plugin\n\nThis is just a first step to make it more generic in following commits.\n"
    },
    {
      "commit": "5d58f686bf075c9eae7cb313c5470200edbbc335",
      "tree": "25e460e7ea1822e6d68aa038dce198775c948de7",
      "parents": [
        "22abf367ec2b1c2ee4be4ead65e07eec2d8f91f7",
        "4c750b2330a08367606271f428bc68eccd30963f"
      ],
      "author": {
        "name": "Ben Glines",
        "email": "bglines@nvidia.com",
        "time": "Fri Sep 18 23:21:43 2026 +0000"
      },
      "committer": {
        "name": "Ben Glines",
        "email": "bglines@nvidia.com",
        "time": "Fri Sep 18 23:21:43 2026 +0000"
      },
      "message": "Merge branch \u0027nate-i50192-data-parser-cleanup\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4366"
    },
    {
      "commit": "22abf367ec2b1c2ee4be4ead65e07eec2d8f91f7",
      "tree": "017f02bfb8f9cd771417d199b2f3df34fd583d16",
      "parents": [
        "499b65c7af477b24bfae4e3fa761e56e44c6067c",
        "07820144a8285f4705582c0f0707c59913c22a7a"
      ],
      "author": {
        "name": "Ben Roberts",
        "email": "bproberts@nvidia.com",
        "time": "Fri Sep 18 21:49:28 2026 +0000"
      },
      "committer": {
        "name": "Ben Roberts",
        "email": "bproberts@nvidia.com",
        "time": "Fri Sep 18 21:49:28 2026 +0000"
      },
      "message": "Merge branch \u0027t21907-docs-gang-reconfig\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!489"
    },
    {
      "commit": "07820144a8285f4705582c0f0707c59913c22a7a",
      "tree": "017f02bfb8f9cd771417d199b2f3df34fd583d16",
      "parents": [
        "499b65c7af477b24bfae4e3fa761e56e44c6067c"
      ],
      "author": {
        "name": "Stephen Kendall",
        "email": "skendall@nvidia.com",
        "time": "Mon Jan 27 16:58:45 2025 -0700"
      },
      "committer": {
        "name": "Ben Roberts",
        "email": "bproberts@nvidia.com",
        "time": "Fri Sep 18 16:43:21 2026 -0500"
      },
      "message": "Docs - Update gang scheduling page based on current reconfig system\n\nTicket: 21907\n"
    },
    {
      "commit": "499b65c7af477b24bfae4e3fa761e56e44c6067c",
      "tree": "7885b07f17d617605bc2170672ca66e2d9dd0257",
      "parents": [
        "825e068bc7697215ae7aea709a67fd4f1dbcd3c3",
        "ae25274dfcc0c9b23f9cb19ea2aa1a14753469bc"
      ],
      "author": {
        "name": "Nathan Nash",
        "email": "nnash@nvidia.com",
        "time": "Fri Sep 18 18:32:53 2026 +0000"
      },
      "committer": {
        "name": "Nathan Nash",
        "email": "nnash@nvidia.com",
        "time": "Fri Sep 18 18:32:53 2026 +0000"
      },
      "message": "Merge branch \u0027thomas/t25728-doc-pdoi-reword\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4368"
    },
    {
      "commit": "825e068bc7697215ae7aea709a67fd4f1dbcd3c3",
      "tree": "b6a6cd077eae1390d6566b930e336fb6c32148d3",
      "parents": [
        "c1a188c7af0943b0f99bc2163b8fdf00f9f56df2",
        "12abd69388f8e138ba59c112f461465061ed3b39"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Fri Sep 18 11:46:49 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Fri Sep 18 11:46:49 2026 -0600"
      },
      "message": "Merge branch \u0027t25804-sbatch_array_wait\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4327"
    },
    {
      "commit": "12abd69388f8e138ba59c112f461465061ed3b39",
      "tree": "b6a6cd077eae1390d6566b930e336fb6c32148d3",
      "parents": [
        "d0d5f434c2ae1976071c8584a44e83951667a0bc"
      ],
      "author": {
        "name": "Megan Dahl",
        "email": "mdahl@nvidia.com",
        "time": "Thu Sep 03 11:00:39 2026 -0600"
      },
      "committer": {
        "name": "Megan Dahl",
        "email": "mdahl@nvidia.com",
        "time": "Fri Sep 18 11:27:08 2026 -0600"
      },
      "message": "Testsuite - Remove expect test 17.42, replaced by python test_105_15\n"
    },
    {
      "commit": "d0d5f434c2ae1976071c8584a44e83951667a0bc",
      "tree": "cbb665bc890fa4a0acbe09b98926b3e8b90b89c1",
      "parents": [
        "b44cce98d641e9026d8cf976d21901930929e1ae"
      ],
      "author": {
        "name": "Megan Dahl",
        "email": "mdahl@nvidia.com",
        "time": "Thu Sep 03 10:50:44 2026 -0600"
      },
      "committer": {
        "name": "Megan Dahl",
        "email": "mdahl@nvidia.com",
        "time": "Fri Sep 18 11:27:08 2026 -0600"
      },
      "message": "Testsuite - Add test_105_15 about sbatch -W on normal and array jobs\n"
    },
    {
      "commit": "b44cce98d641e9026d8cf976d21901930929e1ae",
      "tree": "c7bef09020457582a02e640831324c2aa695598e",
      "parents": [
        "c1a188c7af0943b0f99bc2163b8fdf00f9f56df2"
      ],
      "author": {
        "name": "Megan Dahl",
        "email": "mdahl@nvidia.com",
        "time": "Wed Sep 02 18:27:42 2026 -0600"
      },
      "committer": {
        "name": "Megan Dahl",
        "email": "mdahl@nvidia.com",
        "time": "Fri Sep 18 11:26:41 2026 -0600"
      },
      "message": "sbatch - Fix --wait for array jobs\n\nThis fixes a regression added by commit 089ebceda7. The slurm_step_id_t\npassed to _job_wait() had the SLUID specified meaning only 1 job could be\nreturned from slurm_load_job(). This made it so -W would fail to wait for\nall array tasks.\n\nSwitch back to only passing _job_wait() the job_id so all array tasks can\nbe returned by slurm_load_job().\n\nChangelog: sbatch - Fix a regression added in 26.05.0rc1 so that sbatch\n waits for all array tasks to finish instead of just the last one.\n"
    },
    {
      "commit": "c1a188c7af0943b0f99bc2163b8fdf00f9f56df2",
      "tree": "960ad756df01eb0877962f2bdc92edeb3b8d5528",
      "parents": [
        "fa68e5ce4b53030a660fef14618395d38f87129a",
        "6968dfa0e0df053b21e6223a1121ae8bf352a3fd"
      ],
      "author": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Fri Sep 18 14:33:58 2026 +0000"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Fri Sep 18 14:33:58 2026 +0000"
      },
      "message": "Merge branch \u0027gian/i50575_2\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4431"
    },
    {
      "commit": "6968dfa0e0df053b21e6223a1121ae8bf352a3fd",
      "tree": "960ad756df01eb0877962f2bdc92edeb3b8d5528",
      "parents": [
        "fa68e5ce4b53030a660fef14618395d38f87129a"
      ],
      "author": {
        "name": "Gianfranco",
        "email": "gsaenz@nvidia.com",
        "time": "Fri Sep 18 15:33:48 2026 +0200"
      },
      "committer": {
        "name": "Gianfranco",
        "email": "gsaenz@nvidia.com",
        "time": "Fri Sep 18 16:22:47 2026 +0200"
      },
      "message": "Testsuite - Remove leftover expect launcher for test7.24\n\nCommit 78855e4571 replaced test7.24 with test_147_3 and deleted the\nexpect script, but kept its python launcher.\n\nThe launcher calls a script that no longer exists, so it always fails\nwith \"command not found\".\n"
    },
    {
      "commit": "fa68e5ce4b53030a660fef14618395d38f87129a",
      "tree": "b941885fb43fdf685564e3be380c470fe8b71de5",
      "parents": [
        "8a497c6e9354959268e8c23c94cfbeaf745ae5c1",
        "0b9573c8ef035f1c4c34e9c9babb74b9b8c14661"
      ],
      "author": {
        "name": "Nathan Prisbrey",
        "email": "nprisbrey@nvidia.com",
        "time": "Thu Sep 17 14:26:54 2026 -0600"
      },
      "committer": {
        "name": "Nathan Prisbrey",
        "email": "nprisbrey@nvidia.com",
        "time": "Thu Sep 17 14:26:54 2026 -0600"
      },
      "message": "Merge branch \u0027scrontab-testsuite\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4404"
    },
    {
      "commit": "0b9573c8ef035f1c4c34e9c9babb74b9b8c14661",
      "tree": "a9a87df2b3c840662bb2ef8ad20eed1e9ccea6ff",
      "parents": [
        "92eb0b05df7526055b8ea9ee157ef10966581721"
      ],
      "author": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Tue Sep 15 19:21:01 2026 -0600"
      },
      "committer": {
        "name": "Nathan Prisbrey",
        "email": "nprisbrey@nvidia.com",
        "time": "Thu Sep 17 14:15:04 2026 -0600"
      },
      "message": "Testsuite - Add test_169_1 about scrontab job description building\n\nscrontab had no coverage at all, so nothing guarded the switch from its\nprivate fill_job_desc_from_opts() to slurm_opt_create_job_desc().\n\nSeven of the tests pass both before and after that switch, so they guard\nthe common path rather than pin this change: the install, list and remove\nround trip, the job name defaulting to the command, #SCRON options\nreaching slurmctld, options not leaking from one crontab entry into the\nnext, the rejection of a bad time spec, and the rejection of --clusters\nand --immediate, which are absent from scrontab\u0027s option table.\n\nThe entry-reset test is the one worth calling out. scrontab.1 promises\n\"Options are always reset in between each crontab entry\", which is the\nonly invariant the man page states about #SCRON and the one a\nsingle-entry crontab can never observe. It was verified to have teeth by\nmaking _reset_options() leak on purpose: the test failed on the second\nentry\u0027s TimeLimit while the other ten still passed.\n\nThe other four need the shared builder and are gated on 26.11. Two cover\noptions the #SCRON parser accepted and then dropped, using\n--oom-kill-step, including the case where the crontab sets nothing and\nthe field has to be left to TaskPluginParam rather than pinned to zero.\nTwo cover the validation the builder adds, where an unparsable --nodelist\nor arbitrary distribution without one now fails the whole crontab from\nthe client.\n\nThat gate reads bin/sbatch rather than the default component. The\nbehavior is the client\u0027s, and upgrades.shtml upgrades slurmctld before\nthe login nodes, so asking slurmctld would answer yes while scrontab was\nstill older. scrontab itself takes no -V, and client commands are\nupgraded as one package, so a sibling client reports its version.\n\nThe schedule is 00:00 on January 1st, so every job stays pending and none\nof them ever has to run.\n"
    },
    {
      "commit": "8a497c6e9354959268e8c23c94cfbeaf745ae5c1",
      "tree": "fd6cbda481acd1c80ba58198ce5d3d5e83f24ba2",
      "parents": [
        "beecf784b4b74392d36cce31c3f08deba1317777",
        "78855e4571082cd2665139d5e07f70ddce6b09eb"
      ],
      "author": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Thu Sep 17 16:23:21 2026 +0000"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Thu Sep 17 16:23:21 2026 +0000"
      },
      "message": "Merge branch \u0027gian-i50575\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!2164"
    },
    {
      "commit": "beecf784b4b74392d36cce31c3f08deba1317777",
      "tree": "cf38df8b41fb9796a50978f371d765c76189ce8d",
      "parents": [
        "ba4b3ffdeb5280816dbfa4cc3e98a68108dd8ca5",
        "eb436dcf021629383211125e1a1c1a901d5994be"
      ],
      "author": {
        "name": "Marshall Garey",
        "email": "mgarey@nvidia.com",
        "time": "Thu Sep 17 16:21:12 2026 +0000"
      },
      "committer": {
        "name": "Marshall Garey",
        "email": "mgarey@nvidia.com",
        "time": "Thu Sep 17 16:21:12 2026 +0000"
      },
      "message": "Merge branch \u0027nate-i50192-log\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4216"
    },
    {
      "commit": "eb436dcf021629383211125e1a1c1a901d5994be",
      "tree": "cf38df8b41fb9796a50978f371d765c76189ce8d",
      "parents": [
        "d2cc07cd8088d6cd3e5ad19aa792755808077137"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 17 11:07:37 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:29 2026 -0600"
      },
      "message": "Testsuite - Add libcheck test_log for the LogTimeFormat logic\n\nDrive the real src/common/log.c path: point the log at a temporary file,\nemit a message through info(), and compare the line it wrote. Cover every\ntimestamp format, each option on its own, and the combinations that were\nnot expressible before options existed.\n\nVersion gating lives in the skip_tests entry in test_100_1.py, which\nskips the whole file below 26.11.\n"
    },
    {
      "commit": "d2cc07cd8088d6cd3e5ad19aa792755808077137",
      "tree": "49fbe88e152374fc52bb16ac12c7321b1a011599",
      "parents": [
        "31f1747734a8d686984f59a1b25c1c8b5d8009ed"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 18 11:59:07 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:29 2026 -0600"
      },
      "message": "Docs - Document the LogTimeFormat flags\n"
    },
    {
      "commit": "31f1747734a8d686984f59a1b25c1c8b5d8009ed",
      "tree": "4d497b230f5c67ff44ec5f4a7e0079dd58fd6e74",
      "parents": [
        "fa743e90b99eb2e2d218ccc9518b433741a35fc8"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Aug 26 11:42:04 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:29 2026 -0600"
      },
      "message": "log - Take the timestamp with timespec_now()\n\ngettimeofday() has been obsolescent since POSIX.1-2008, and the tree\nalready wraps clock_gettime() as timespec_now() returning a timespec_t.\nUse it, so the one place that reads the clock for a log line reads it the\nway the rest of the tree does.\n"
    },
    {
      "commit": "fa743e90b99eb2e2d218ccc9518b433741a35fc8",
      "tree": "001cc02e26803f4c2da554c3536125dc9e42cfb5",
      "parents": [
        "eeb82d71d7dccfac3c799b58c665342a109fbb49"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 25 17:37:44 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:29 2026 -0600"
      },
      "message": "log - Name the thread name column width\n\nThe width the thread name is padded to was a bare 12 in the middle of\n_set_thread_id(), carrying a comment that described a static which grew\nto fit anything longer. That growth was removed in 2016, so the comment\nhas described the wrong thing ever since and the width has been fixed.\n"
    },
    {
      "commit": "eeb82d71d7dccfac3c799b58c665342a109fbb49",
      "tree": "5ef6fedb1c03d25be2c162c9ae01516fff24cc63",
      "parents": [
        "74c0a5fcc1817a100cb7bc1471e5e0403823f066"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 25 13:08:58 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:29 2026 -0600"
      },
      "message": "log - Use PRCTL_BUF_BYTES for the thread name buffer\n\nlog.c declared its own NAMELEN for the buffer that prctl(PR_GET_NAME)\nfills, while threadpool.h already names that size as PRCTL_BUF_BYTES and\ncarries the prctl() truncation rule it comes from. The two disagreed by a\nbyte.\n"
    },
    {
      "commit": "74c0a5fcc1817a100cb7bc1471e5e0403823f066",
      "tree": "783ab614c7b4f5ea20c3f1cc09bb599358831ff0",
      "parents": [
        "1360991c63ce2fe55dca0e79071b6ef6dd62e91d"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 25 13:06:57 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:29 2026 -0600"
      },
      "message": "log - Zero init thread_name in _set_thread_id()\n"
    },
    {
      "commit": "1360991c63ce2fe55dca0e79071b6ef6dd62e91d",
      "tree": "674f136715d0a2adbf8d614a5639d9399822724c",
      "parents": [
        "b769ed7df79b72247c39a492c4bca5f9fb782bae"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 17 10:15:32 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "data_parser/v0.0.46 - Add LogTimeFormatOptions\n\nThe LogTimeFormat options get their own field so that a client can read\nthem without parsing the format name, and so that adding an option later\nonly takes another row in the flag array.\n"
    },
    {
      "commit": "b769ed7df79b72247c39a492c4bca5f9fb782bae",
      "tree": "6eb2ab8abce0a75f15d94f2ed8bda38556406154",
      "parents": [
        "db7b76bc0d26d35bdfffb673927a9036c92421a9"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 17 15:03:29 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Keep the thread id when omit drops the timestamp\n\nThe three places that build a log line prefix tested omit directly, so\nomit threw away everything in the prefix rather than the timestamp\nalone. Ask _have_timefmt() instead, which is false only when there is\ngenuinely nothing left to print.\n\nomit,thread_id therefore prefixes each line with the process and thread\nand no time. omit on its own still prefixes nothing, as it always has.\n\nChangelog: slurm.conf - Add LogTimeFormat\u003dthread_id as a flag.\n"
    },
    {
      "commit": "db7b76bc0d26d35bdfffb673927a9036c92421a9",
      "tree": "07d2ba5b84f9f0daf31e4b82671ee4b251895808",
      "parents": [
        "c7ff11e5db426263f0613ab9e57a6a72e1dd6672"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 17 15:03:28 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Report the thread_id option from _logfmtstr()\n\nOptions are reported from their own log_opts[] table beside log_fmts[], so\nany further option only takes another row. thread_id stays in log_fmts[] as\nwell, because a controller older than 26.11 sends that format value on its\nown and it still needs a name.\n"
    },
    {
      "commit": "c7ff11e5db426263f0613ab9e57a6a72e1dd6672",
      "tree": "bc6e2ee897d650c2e4caf8d4a163acae61607fce",
      "parents": [
        "bba001ed8e8a16ca8933380f1e9ce0ff5de5619b"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Aug 26 13:05:55 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Render the thread id beside any timestamp format\n\n_set_timestamp() renders both halves now: the timestamp unless omit, and\nthe process and thread whenever the option is set or the deprecated\nformat asks for them. \"%M\" is a single call again.\n"
    },
    {
      "commit": "bba001ed8e8a16ca8933380f1e9ce0ff5de5619b",
      "tree": "9daf9f5dbff170020fb052d433402b4b335fa0fd",
      "parents": [
        "ce8de9c0d561f381ff12025b7fcfeaa50f09a892"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Aug 26 13:05:55 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Render the thread_id timestamp from the format table\n\n_set_thread_id()\u0027s timestamp half is what the shared renderer already\nproduces, a short date and time carried to microseconds, so\nLOG_FMT_THREAD_ID becomes one more row there. It needs its own\nmicrosecond format because it left justifies the fraction.\n"
    },
    {
      "commit": "ce8de9c0d561f381ff12025b7fcfeaa50f09a892",
      "tree": "8f79df16734320eaf3a930d908b4567f447f2a99",
      "parents": [
        "d389d56abbca79fbc0db2aa6c31dc4096743a6d1"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Aug 26 13:05:54 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Rename _set_idbuf() to _set_thread_id()\n\nThe name says what the function is about to become rather than what it\ndoes today: the next commit moves its timestamp half into the shared\nrenderer and leaves it writing the process and thread alone.\n"
    },
    {
      "commit": "d389d56abbca79fbc0db2aa6c31dc4096743a6d1",
      "tree": "1a99fc789630732dc0a71051c30ef9a2cf276a2c",
      "parents": [
        "617aa61afb0916da08edd936f9fb465fedfb257f"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 17 15:03:28 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Set LOG_FLAG_THREAD_ID in read_slurmdbd_conf()\n\nThe same for slurmdbd.conf, which parses LogTimeFormat separately from\nslurm.conf.\n"
    },
    {
      "commit": "617aa61afb0916da08edd936f9fb465fedfb257f",
      "tree": "d5d3234b7c3c4e405fca8f3acfda346eb8769647",
      "parents": [
        "5e630c24f39e8c5ac59fc3ed462042f57e83d38c"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 17 15:03:28 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Set LOG_FLAG_THREAD_ID in _validate_and_set_defaults()\n\nRecognise thread_id in slurm.conf as an option, with a standalone if beside\nthe unchanged format chain, so that it may now be given together with a\ntimestamp format rather than instead of one.\n\nGiven on its own it now selects rfc5424_us as well, so the timestamp beside\nthe thread id is a well formed fractional second instead of the left\njustified field the deprecated format value prints. That value keeps its own\nrendering for the configurations and older controllers that still carry it.\n"
    },
    {
      "commit": "5e630c24f39e8c5ac59fc3ed462042f57e83d38c",
      "tree": "98ee36c0dbb0492f79b6c1ac3fd5990fe8a0c278",
      "parents": [
        "783a5b60460b30d514a13da57ebe8cc150c4bb2a"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 17 15:03:28 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Add LOG_FLAG_THREAD_ID for the thread_id LogTimeFormat option\n\nThe thread id is not a timestamp format, it is a pair of extra fields\nprinted beside one, so give it a bit in log_flags. Nothing sets or reads\nit yet.\n\nThe thread_id format value is kept and still parsed. It is what a client\nolder than 26.11 is sent and the only spelling such a client knows, so\nretiring it would take the option away from every one of them. It is\nmarked deprecated in the header instead.\n"
    },
    {
      "commit": "783a5b60460b30d514a13da57ebe8cc150c4bb2a",
      "tree": "fc6e2f44c5c20f4c1a3d65fea8bd41ab5a75cf57",
      "parents": [
        "89a2b6ded4c66da7b9d1ebbc7fde1ce9c895ff1a"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 17 10:13:53 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Add rfc5424_us for microsecond timestamps\n\nLogTimeFormat offers milliseconds at most, through the \"_ms\" formats,\nwhich divide away the microseconds gettimeofday() already returned. RFC\n5424 permits six fractional digits and no more, so microseconds is both\nthe precision being discarded and the most the standard will carry.\n\nChangelog: slurm.conf - Add LogTimeFormat\u003drfc5424_us for RFC 5424\n timestamps with microsecond precision.\n"
    },
    {
      "commit": "89a2b6ded4c66da7b9d1ebbc7fde1ce9c895ff1a",
      "tree": "cae73b530b05413cc622a0726e3bd8149c76ffcb",
      "parents": [
        "a295c285404a41d494284af21b45c0a931381404"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Aug 19 11:44:39 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "xstring - Remove unused _xrfc3339timecat()\n\nIts only caller was the \"%M\" specifier in vxstrfmt(), which now renders\nevery timestamp format through one shared routine writing onto the\nstack. Nothing else in the tree calls it.\n"
    },
    {
      "commit": "a295c285404a41d494284af21b45c0a931381404",
      "tree": "fc88fbf337d234eaaa39f34adbd557093413b35c",
      "parents": [
        "a9208955543655e508c6c483460c415bb27e5080"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Aug 19 11:44:24 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "xstring - Remove unused _xrfc5424timecat()\n\nIts only caller was the \"%M\" specifier in vxstrfmt(), which now renders\nevery timestamp format through one shared routine writing onto the\nstack. Nothing else in the tree calls it.\n"
    },
    {
      "commit": "a9208955543655e508c6c483460c415bb27e5080",
      "tree": "88825626cc131b9369ca02ecd616cfcbb0c9e749",
      "parents": [
        "b9ca488f413ea19af1ae236b217397733e5e6fa3"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 25 10:37:53 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Add RFC5424_USEC for microsecond fractional seconds\n\nRFC 5424 allows no more than six digits of fractional second, and the\nformats added after this print them. Give the precision type that value\nand render it, so that those formats only have to name it.\n"
    },
    {
      "commit": "b9ca488f413ea19af1ae236b217397733e5e6fa3",
      "tree": "5644e49f9f1a399dd48009e157e4254644bb743c",
      "parents": [
        "28aa0c6fa7a6f83650d68e5f3940d49319752e9a"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 25 10:37:52 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Add rfc5424_prec_t for the fractional second precision\n\nThe renderer carried the fractional second as a bool, which names the one\nprecision it had rather than the field it fills. Give it a type whose\nvalues are the digit counts, and select on it with a switch, so that\nanother precision takes another case and the compiler names the site that\nhas to handle it.\n"
    },
    {
      "commit": "28aa0c6fa7a6f83650d68e5f3940d49319752e9a",
      "tree": "0fd3d76ea64d1101f6b197980ba7164257b19f41",
      "parents": [
        "99ee487457489a3478062f155406c7b07f126524"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 25 12:07:47 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Clamp the timestamp length when snprintf() truncates\n\nsnprintf() returns the length it wanted to write rather than the length\nit wrote, so a truncated timestamp leaves used past the end of buf. Both\nbuf + used and size - used are then wrong for whatever appends next, and\nsize - used is unsigned.\n"
    },
    {
      "commit": "99ee487457489a3478062f155406c7b07f126524",
      "tree": "5e77d8ce1c35cb254d1fc93280881ec2a556fb08",
      "parents": [
        "80000e9545571946547203ec5eba6572d779edba"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 25 12:07:46 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Terminate the timestamp buffer when strftime() fails\n\nstrftime() leaves the buffer unspecified when it returns 0, and the\ncaller reads it back as a string. The helpers this replaced rendered into\ntheir own buffer, which was initialized empty, so a failure appended\nnothing to the log line.\n"
    },
    {
      "commit": "80000e9545571946547203ec5eba6572d779edba",
      "tree": "ee825eeab2f32b2bb164a38a9a199a3e7ef47832",
      "parents": [
        "3ad7947867388cb3d7586fe54ecbf8c89bb4c3c4"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 25 12:07:46 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Zero the time structures in _set_timestamp()\n\nThe helpers this replaced left their struct timeval and struct tm\nuninitialized, so a failing gettimeofday() or localtime_r() rendered\nwhatever the stack happened to hold.\n"
    },
    {
      "commit": "3ad7947867388cb3d7586fe54ecbf8c89bb4c3c4",
      "tree": "672e1e53611d6c010226104b272e83cca4ccc81c",
      "parents": [
        "3d351f6a500b06a8ee0e7d2186d1fa479cfd0d1d"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 25 12:07:46 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Render the %M timestamp without allocating\n\nEvery timestamp format the \"%M\" specifier writes is the same strftime()\ncall with an optional fractional second and an optional timezone offset\nafter it. The switch spelled each one out through a different\nx*timecat() helper, which appends to an allocation, while the two that\ncould not be written that way filled the stack buffer beside it.\n"
    },
    {
      "commit": "3d351f6a500b06a8ee0e7d2186d1fa479cfd0d1d",
      "tree": "db4c190f2bce01fb3bdb7c5b58db57a7e026014a",
      "parents": [
        "6905d076ee13ee2a78bbf80d5683bedf530a265d"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 17 14:32:52 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Add log_t-\u003eflags for the LogTimeFormat options\n\nKeep the options beside the timestamp format in the logger\u0027s own state,\nso that the code rendering a prefix reads both from the same place under\nthe same lock.\n\nlog_set_timefmt() takes the options alongside the format, since the two\nare always set together. It is not exported to plugins, so widening it\nis not an ABI change. It now returns quietly when the log is not\ninitialized, with an xassert() to catch the caller in a developer build,\nrather than printing to stderr.\n"
    },
    {
      "commit": "6905d076ee13ee2a78bbf80d5683bedf530a265d",
      "tree": "053e4216e4ddbd6923ad15ab51f5b8e0247de0b3",
      "parents": [
        "154b21cd6590b61eb80c4eeca7d87d4f8db3d35d"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 18 15:16:02 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "slurmscriptd - Carry log_flags to a burst buffer script\n\nA burst buffer script gets its logging config over the slurmscriptd\nchannel rather than by reading slurm.conf, so the new LogTimeFormat\noptions have to travel beside the format. _init_bb_script_config()\ncopies both into slurm_conf and update_logging() applies them.\n"
    },
    {
      "commit": "154b21cd6590b61eb80c4eeca7d87d4f8db3d35d",
      "tree": "3a765df38d5f3bef77a5b9e4ac9cef4648a7a2dd",
      "parents": [
        "11f4c251ffd2d65d4c35b2ccc3da5c4653e3bfa0"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 18 15:16:02 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Add slurm_conf_t-\u003elog_flags for LogTimeFormat options\n\nGive the LogTimeFormat options a member of their own so the format keeps\nthe whole of log_fmt and neither has to be masked out of the other.\n\nThe member is typed log_flags_t rather than a width, so it says what it\nholds. An enum has no guaranteed width, so every serialization casts to\nthe uint16_t the wire carries.\n"
    },
    {
      "commit": "11f4c251ffd2d65d4c35b2ccc3da5c4653e3bfa0",
      "tree": "3cbbd9b10b24a5094fc74933ff83a4d31274ce44",
      "parents": [
        "29d8d2b2c78885221279701a4bb1e6a1022609a1"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 17 14:19:50 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Add log_flags_t for the LogTimeFormat options\n\nLogTimeFormat is gaining options that accompany the timestamp format\nrather than replace it. Give them a type of their own, so that no single\nvalue has to be both a timestamp format and an option.\n\nNo option is defined yet: LOG_FLAGS_NONE is the only enumerator, and\nLOG_FLAGS_DEFAULT names it as the default. omit and thread_id arrive as\nLOG_FLAG_* in later commits.\n"
    },
    {
      "commit": "29d8d2b2c78885221279701a4bb1e6a1022609a1",
      "tree": "65f4e9fcfddab2ba87cc906e6a41ce86fc970515",
      "parents": [
        "a83812dc9df2108afb5784211544d8391683b40f"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 17 10:05:55 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Convert _logfmtstr() to a lookup table\n\nReplace the if/else chain with a table so that adding a LogTimeFormat\nvalue only takes another row.\n"
    },
    {
      "commit": "a83812dc9df2108afb5784211544d8391683b40f",
      "tree": "d616e217d41c30ca410227f25de80dcbb7672e07",
      "parents": [
        "c0ea5779add557ca4fbbaba4e16d486b0ff9811b"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Aug 18 12:42:22 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Type log_t-\u003efmt as log_fmt_t\n\nNow that the timestamp formats are an enum, give the member the type it\nholds rather than a width. The only uses are the assignment in\nlog_set_timefmt() and the two switches that render a timestamp, so\nnothing else changes.\n\nslurm_conf_t-\u003elog_fmt deliberately keeps uint16_t. Its data_parser\nbinding is linked to a flag array declared as uint16_t, and\ncheck_parser() asserts that a parser and the parser it links to are the\nsame size, so widening the member would force a matching change in\ndata_parser/v0.0.45, which stays as released.\n"
    },
    {
      "commit": "c0ea5779add557ca4fbbaba4e16d486b0ff9811b",
      "tree": "63bf0e5d3661dc84699eba074195df4e168410b1",
      "parents": [
        "6614274ce5a7efb5d13f45a972cde5b5b1ec72b4"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Aug 13 17:45:16 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Convert LOG_FMT_* into an enum\n\nLogTimeFormat is gaining options that are not timestamp formats. Group\nthe timestamp formats into an enum so that the rest of log_fmt can be\ngiven to those options.\n\nThe values themselves are unchanged, so nothing is packed differently.\n"
    },
    {
      "commit": "6614274ce5a7efb5d13f45a972cde5b5b1ec72b4",
      "tree": "3e71356c78534de1d1ebf7f70dfdb5b18559ab91",
      "parents": [
        "ba4b3ffdeb5280816dbfa4cc3e98a68108dd8ca5"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Fri Aug 14 08:12:41 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Sep 17 09:37:28 2026 -0600"
      },
      "message": "log - Add LOG_FMT_DEFAULT for the default timestamp format\n\nThe default LogTimeFormat is picked in slurm.conf and slurmdbd.conf\nindependently. Name it once so both always agree.\n"
    },
    {
      "commit": "ba4b3ffdeb5280816dbfa4cc3e98a68108dd8ca5",
      "tree": "81b9231d19fb166c997063b70dfe3aba9755af95",
      "parents": [
        "0bbbe0d60668101499e16ad1481d25fca2bd63e8",
        "af875bde4f32e20f9436c00f88976b41cedcafb8"
      ],
      "author": {
        "name": "Tim McMullan",
        "email": "tmcmullan@nvidia.com",
        "time": "Thu Sep 17 11:18:25 2026 -0400"
      },
      "committer": {
        "name": "Tim McMullan",
        "email": "tmcmullan@nvidia.com",
        "time": "Thu Sep 17 11:18:25 2026 -0400"
      },
      "message": "Merge branch \u0027fix-51166-tmpfs-child-exit\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4315"
    },
    {
      "commit": "af875bde4f32e20f9436c00f88976b41cedcafb8",
      "tree": "556389631865d048b00c8a9114e80b5c65cc23a1",
      "parents": [
        "f40c19d3cdea2f26fb32f4708e747a9b898f6ae8"
      ],
      "author": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Tue Sep 01 08:57:33 2026 -0600"
      },
      "committer": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Thu Sep 17 08:57:28 2026 -0600"
      },
      "message": "namespace/tmpfs - Use _exit() in the forked namespace child\n\nThis child never execs, so exit() runs slurmstepd\u0027s inherited atexit\nhandlers and flushes stdio streams the parent still owns. Use _exit()\ninstead.\n\nFixes a LeakSanitizer false positive: the child\u0027s atexit run reported\nslurmstepd\u0027s still-live heap as leaked.\n"
    },
    {
      "commit": "0bbbe0d60668101499e16ad1481d25fca2bd63e8",
      "tree": "2657a965570c899181398938455d7ef0dd784636",
      "parents": [
        "495b2245b568c0971aec703e39040961380e6e7c",
        "f97c33aa811b55d0dcd448ce65a52ab3fc322755"
      ],
      "author": {
        "name": "Alejandro Sanchez",
        "email": "asanchezg@nvidia.com",
        "time": "Thu Sep 17 10:30:39 2026 +0100"
      },
      "committer": {
        "name": "Alejandro Sanchez",
        "email": "asanchezg@nvidia.com",
        "time": "Thu Sep 17 10:30:39 2026 +0100"
      },
      "message": "Merge branch \u002751136/fix-het-bcast\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4262"
    },
    {
      "commit": "495b2245b568c0971aec703e39040961380e6e7c",
      "tree": "1f788eb4addeba1fb2c774d22b7bcda871d288d2",
      "parents": [
        "d674c3ec6cbd24716d66be3a03a28fa5fbe14155",
        "d79836275cdc72e0ccaebbfabf20d48c8c4f3120"
      ],
      "author": {
        "name": "Alejandro Sanchez",
        "email": "asanchezg@nvidia.com",
        "time": "Thu Sep 17 10:24:28 2026 +0100"
      },
      "committer": {
        "name": "Alejandro Sanchez",
        "email": "asanchezg@nvidia.com",
        "time": "Thu Sep 17 10:24:28 2026 +0100"
      },
      "message": "Merge branch \u0027nate-i51086\u0027 into \u0027master\u0027\n\nCloses #51086\n\nSee merge request nvidia/schedmd/slurm/slurm!4088"
    },
    {
      "commit": "d674c3ec6cbd24716d66be3a03a28fa5fbe14155",
      "tree": "0e567a98b603883f12c8552492f11d807da6a030",
      "parents": [
        "f40c19d3cdea2f26fb32f4708e747a9b898f6ae8",
        "ba2e333b6506b28299b29d09240dd71d6f75fcd8"
      ],
      "author": {
        "name": "Alejandro Sanchez",
        "email": "asanchezg@nvidia.com",
        "time": "Thu Sep 17 10:12:59 2026 +0100"
      },
      "committer": {
        "name": "Alejandro Sanchez",
        "email": "asanchezg@nvidia.com",
        "time": "Thu Sep 17 10:12:59 2026 +0100"
      },
      "message": "Merge branch \u0027t25211-lua_unset_on_modify\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!3743"
    },
    {
      "commit": "f40c19d3cdea2f26fb32f4708e747a9b898f6ae8",
      "tree": "cff5b4ed4b4da5a64020a3055554615281298235",
      "parents": [
        "92eb0b05df7526055b8ea9ee157ef10966581721",
        "5b7c96eab5cdf852fb28d431e9ef3713c78e9959"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Sep 16 13:21:06 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Sep 16 13:21:06 2026 -0600"
      },
      "message": "Merge branch \u0027sheldon/bugzilla-25501\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4073"
    },
    {
      "commit": "92eb0b05df7526055b8ea9ee157ef10966581721",
      "tree": "43ebea44f370a720329a1e9ef9dd548d8bcbf3c3",
      "parents": [
        "0b539607f6341d92614049a851abba89d836a044",
        "887551e178de0259c8b75d8d78af446c463c12d8"
      ],
      "author": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Wed Sep 16 17:27:34 2026 +0000"
      },
      "committer": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Wed Sep 16 17:27:34 2026 +0000"
      },
      "message": "Merge branch \u0027nate-i50190-scrontab\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4308"
    },
    {
      "commit": "0b539607f6341d92614049a851abba89d836a044",
      "tree": "a7f5e45f2d96b57c9f0d050f52c8b7551689cc4b",
      "parents": [
        "84ba546d5b334d4e3c939f13dda442f403e16d19",
        "ed74a71dbdda1696cfd2c15d4adbad5008b87e4a"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Sep 16 08:59:12 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Sep 16 08:59:12 2026 -0600"
      },
      "message": "Merge branch \u0027t25581-fairshare-parent-parsing\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4163"
    },
    {
      "commit": "84ba546d5b334d4e3c939f13dda442f403e16d19",
      "tree": "8c95e65e45c6699ef700ee7c61c89e0ca6aa7803",
      "parents": [
        "8021f59cc67943e991507893ee070202e08b0218",
        "8318df3989ab72bc0c3c035497d40e85c8c5038d"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Sep 16 08:58:25 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Sep 16 08:58:25 2026 -0600"
      },
      "message": "Merge branch \u0027nbulloch/suspend-invalid-job\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4156"
    },
    {
      "commit": "8021f59cc67943e991507893ee070202e08b0218",
      "tree": "c18afa0ca3c4815598fefcfe0cb3c0e2be3e3a39",
      "parents": [
        "78a5ee3ecad40701391c9c423f9d349fb8ccdb1b",
        "d8dccbb33bd0303b940ddcda209652ab62ac8fdb"
      ],
      "author": {
        "name": "Alejandro Sanchez",
        "email": "asanchezg@nvidia.com",
        "time": "Wed Sep 16 15:50:30 2026 +0100"
      },
      "committer": {
        "name": "Alejandro Sanchez",
        "email": "asanchezg@nvidia.com",
        "time": "Wed Sep 16 15:50:30 2026 +0100"
      },
      "message": "Merge branch \u0027nate-i50190-multi-runtimes\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4214"
    },
    {
      "commit": "887551e178de0259c8b75d8d78af446c463c12d8",
      "tree": "77c579b7673d5f70f9ea762132763ed51be8134c",
      "parents": [
        "0909eda02507c5a3912307c633a34471b4513025"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 31 15:16:12 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Sep 16 08:44:18 2026 -0600"
      },
      "message": "scrontab - Drop fill_job_desc_from_opts()\n\nRemove the filler now that _entry_to_job() builds its job description\nwith slurm_opt_create_job_desc(). It was the only thing in\nsrc/scrontab/opt.c, so the file goes with it.\n"
    },
    {
      "commit": "0909eda02507c5a3912307c633a34471b4513025",
      "tree": "0f0b342e2d17fe7cc72976707ba6fafa54b61392",
      "parents": [
        "3c212c373a2f4e23aff0f1153d3ba118fae4af5d"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 31 15:15:48 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Sep 16 08:44:18 2026 -0600"
      },
      "message": "scrontab - Build the job description with slurm_opt_create_job_desc()\n\nUse the shared builder rather than scrontab\u0027s own fill_job_desc_from_opts(),\nso that a crontab job is described the same way srun, salloc, sbatch and\nscrun describe theirs.\n\nscrontab\u0027s copy set 74 fields; the shared one sets 94 and is the only\nversion that is kept current. Every option scrontab could already accept\nin a #SCRON line but then dropped on the floor now reaches slurmctld:\n--reboot, --container-id, --oom-kill-step, --segment, --ntasks-per-tres\nand --context among them. Options that only salloc, sbatch or srun can\nset are absent from scrontab\u0027s option table, so a #SCRON line naming one\nis rejected rather than accepted and then ignored. That covers --prefer,\n--x11, --hold, --clusters and --immediate alike.\n\nKeep std_err, std_in and std_out here. The shared builder leaves the\nstandard streams to its callers, because each of them names the options\ndifferently, and scrontab is no exception.\n\nThe builder validates where the old copy did not, so _entry_to_job() can\nnow fail: it rejects an unparsable --nodelist, refuses arbitrary\ndistribution without one, and validates GRES. The previous commit taught\nthe caller to expect that. Nothing is consumed before the builder runs,\nso the entry and the script are still the caller\u0027s on that path.\n\nOne change reaches crontabs that set no new option at all. scrontab left\noom_kill_step at the zero slurm_init_job_desc_msg() writes, which\nslurmctld reads as an explicit request not to kill the whole step on a\ntask OOM, overriding TaskPluginParam. The builder sends the NO_VAL16 the\noption resets to, so a crontab job now follows the configured default\nthe way an sbatch job does.\n\nTwo smaller differences worth naming. min_cpus is now derived from an\nestimated task count that accounts for --ntasks-per-node, as it is for\nsbatch, instead of --ntasks alone. And --nodelist is collapsed through a\nhostlist before it is sent, so it arrives in the same ranged form the\nother clients send.\n\nNote that the builder assigns submit_line by pointer rather than copying\nit. scrontab does not set opt.submit_line and builds one description per\ncrontab entry, so nothing aliases today, but setting it here would hand\nthe same string to every description in a list that frees its members.\n\nChangelog: scrontab - Send #SCRON options that were previously parsed\n and then dropped, such as --reboot, --container-id and --segment, to\n slurmctld.\nChangelog: scrontab - Follow the configured OOMKillStep default for\n crontab jobs instead of always disabling it.\n"
    },
    {
      "commit": "3c212c373a2f4e23aff0f1153d3ba118fae4af5d",
      "tree": "e7a3409e0cd4a4639283f6df87f00088a721f2f1",
      "parents": [
        "78a5ee3ecad40701391c9c423f9d349fb8ccdb1b"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Mon Aug 31 15:15:24 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Sep 16 08:44:18 2026 -0600"
      },
      "message": "scrontab - Handle a job description that cannot be built\n\nTake the description _entry_to_job() returns into a local and report a\nfailure the way the loop already reports a bad cron line, rather than\nappending whatever comes back to the job list.\n\n_entry_to_job() cannot fail yet, so this changes nothing on its own. It\nis separated out because the next commit gives it a builder that\nvalidates its input, at which point appending the result unchecked would\nput a NULL into the job list. list_append() asserts its element is not\nNULL, and with assertions compiled out the pack loop stops at the NULL\nwhile the packed job count still includes it.\n\nThe entry and the script are freed here because _entry_to_job() only\ntakes ownership of them once it has a description to attach them to.\n"
    },
    {
      "commit": "78a5ee3ecad40701391c9c423f9d349fb8ccdb1b",
      "tree": "dff5c611f5fd835040a7863daa6a78d3a9c992a7",
      "parents": [
        "dc8a9d406d5c44484361e0ecc28ce1658edf44dc",
        "40d92e7cd3d0fd1fbf7dc9a0de70c50cbb12f4ce"
      ],
      "author": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Wed Sep 16 08:41:01 2026 +0000"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Wed Sep 16 08:41:01 2026 +0000"
      },
      "message": "Merge branch \u0027qa\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4405"
    },
    {
      "commit": "40d92e7cd3d0fd1fbf7dc9a0de70c50cbb12f4ce",
      "tree": "dff5c611f5fd835040a7863daa6a78d3a9c992a7",
      "parents": [
        "dc8a9d406d5c44484361e0ecc28ce1658edf44dc"
      ],
      "author": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Wed Sep 16 10:28:30 2026 +0200"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Wed Sep 16 10:28:30 2026 +0200"
      },
      "message": "Testsuite - Remove unnecessary _GNU_SOURCE from libcheck tests\n"
    },
    {
      "commit": "dc8a9d406d5c44484361e0ecc28ce1658edf44dc",
      "tree": "a74bb37c39091aaefe0ff1dcf15423f3029f6775",
      "parents": [
        "a150dba2b25eac5028058574bdce3a3e7d99dd14",
        "e089effcc4b022df9a43d03b723094ad95f4ee16"
      ],
      "author": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Wed Sep 16 00:57:44 2026 +0000"
      },
      "committer": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Wed Sep 16 00:57:44 2026 +0000"
      },
      "message": "Merge branch \u0027shellcheck-ping-redirect\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4402"
    },
    {
      "commit": "e089effcc4b022df9a43d03b723094ad95f4ee16",
      "tree": "a74bb37c39091aaefe0ff1dcf15423f3029f6775",
      "parents": [
        "a150dba2b25eac5028058574bdce3a3e7d99dd14"
      ],
      "author": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Tue Sep 15 17:29:21 2026 -0600"
      },
      "committer": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Tue Sep 15 17:40:13 2026 -0600"
      },
      "message": "Fix shellcheck SC2327/SC2328 in slurm_completion.sh\n\n__slurm_ctld_status and __slurm_dbd_status both captured the output of a\ncommand whose stdout and stderr were redirected to /dev/null:\n\n    output\u003d$(scontrol ping \u003e/dev/null 2\u003e\u00261)\n\nso $output was always empty, and neither function ever read it. Only\nexit_code is used. shellcheck 0.10 added SC2327 and SC2328 for exactly\nthis pattern, and SC2328 is an error rather than a warning. ubuntu 26.04\nships 0.11, so pre-commit fails once the validate image carries a newer\nshellcheck than ubuntu 24.04\u0027s.\n\nDrop the pointless capture and call the command directly. $? after an\nassignment from a command substitution is the command\u0027s own exit status,\nthe same value a direct call leaves behind, so the returned status is\nunchanged.\n"
    },
    {
      "commit": "a150dba2b25eac5028058574bdce3a3e7d99dd14",
      "tree": "26caf14b64fc6193aa3b7ddde1d0ab3ef7973788",
      "parents": [
        "cde6929dd515dbc50be1c67806ef441351d73428",
        "960e0e4f8ae2ce84a06df19d5e695e5c663a7ab2"
      ],
      "author": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Tue Sep 15 21:08:17 2026 +0000"
      },
      "committer": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Tue Sep 15 21:08:17 2026 +0000"
      },
      "message": "Merge branch \u002750976-het-stepmgr\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!3819"
    },
    {
      "commit": "cde6929dd515dbc50be1c67806ef441351d73428",
      "tree": "3cb2c0d9de0e556e44f29db501077021f50e8dc9",
      "parents": [
        "73449a18f6c0b3773d228b12cc9e568306728454",
        "88c732790c22e77e7897178f1a3ae201ae00e0f6"
      ],
      "author": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Tue Sep 15 20:58:15 2026 +0000"
      },
      "committer": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Tue Sep 15 20:58:15 2026 +0000"
      },
      "message": "Merge branch \u0027shanks-gitlint\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4107"
    },
    {
      "commit": "88c732790c22e77e7897178f1a3ae201ae00e0f6",
      "tree": "3cb2c0d9de0e556e44f29db501077021f50e8dc9",
      "parents": [
        "adceaf12a626b6026f81839cb50d9f0b4d627f2b"
      ],
      "author": {
        "name": "Will Shanks",
        "email": "wshanks@nvidia.com",
        "time": "Thu Jul 30 11:52:24 2026 -0400"
      },
      "committer": {
        "name": "Will Shanks",
        "email": "wshanks@nvidia.com",
        "time": "Tue Sep 15 16:52:31 2026 -0400"
      },
      "message": "gitlint - Keep testsuite/[python|expect] changes in their own commit\n\nThe cherry-pick job in slurm-qa runs slurm-pick over every merge commit\non a protected branch. slurm-pick refuses a commit that changes\ntestsuite/python or testsuite/expect alongside anything it can carry to\na release branch, stopping the pick there and opening the cherry-pick MR\nas a Draft with an ERROR.\n\nThose two directories are removed from the release branches, so nothing\nunder them can ever be picked. testsuite/slurm_unit is still present and\nis picked along with the code it tests, which is why mixing it with the\nother two is a violation just as much as mixing in a path outside\ntestsuite/ is.\n\nAdd UC101 so that mix is caught when the commit is written instead of\nafter it merges. The path lists mirror slurm-pick and have to be updated\nalongside it.\n"
    },
    {
      "commit": "adceaf12a626b6026f81839cb50d9f0b4d627f2b",
      "tree": "50715b7c736463cd466f052b04bce1b3e0c70b1d",
      "parents": [
        "73449a18f6c0b3773d228b12cc9e568306728454"
      ],
      "author": {
        "name": "Will Shanks",
        "email": "wshanks@nvidia.com",
        "time": "Fri Jul 31 11:26:20 2026 -0400"
      },
      "committer": {
        "name": "Will Shanks",
        "email": "wshanks@nvidia.com",
        "time": "Tue Sep 15 16:52:31 2026 -0400"
      },
      "message": "gitlint - Pass --staged to the commit-msg hook\n\nThe hook overrides pre-commit\u0027s default args and in doing so drops\n--staged, leaving commit.changed_files empty for an interactive\ngit commit. Rules keyed on changed files therefore only took effect\nin CI, via the gitlint-ci-* aliases.\n\nTwo consequences are worth knowing. Because --staged reads the staged\ndiff rather than the resulting commit, an amended commit is only checked\nagainst whatever was newly staged, so a mix introduced by\ngit commit --amend passes the hook and is caught later in CI. And the\nauthor fields are now populated, which activates M1 author-valid-email\non interactive commits, where it previously no-opped on an empty email.\n"
    },
    {
      "commit": "ed74a71dbdda1696cfd2c15d4adbad5008b87e4a",
      "tree": "431b41e937245bd96055f33a8101a4cc8337121d",
      "parents": [
        "f1544c0c33258472915606dcdb44f76695983f70"
      ],
      "author": {
        "name": "McKay Marston",
        "email": "mmarston@nvidia.com",
        "time": "Fri Aug 14 15:13:54 2026 -0700"
      },
      "committer": {
        "name": "Nathan Prisbrey",
        "email": "nprisbrey@nvidia.com",
        "time": "Tue Sep 15 11:48:43 2026 -0600"
      },
      "message": "Testsuite - Add test case in test_112_46 about the SHARES parser\n\nCover the SHARES (fairshare) parser at each of its three use-sites.\nThese are ATF integration tests against a live slurmrestd, not unit\ntests.\n\nPOST /slurmdb/v0.0.46/associations/ (ASSOC.shares_raw)\n  * the {set, number} struct, replacing the bare integers this field\n    took before it was retyped\n  * a bare integer, and the bare string \"parent\"\n  * -1 and {infinite: true}, which reset shares to the default 1 share\n  * null, {set: false}, and an omitted field, which leave shares alone\n  * precedence: parent outranks infinite, infinite outranks set/number\n  * an unrecognized string, which is rejected with the stored count\n    left intact\n\nPOST /slurmdb/v0.0.46/users_association/ (ASSOC_REC_SET.fairshare)\n  * {parent: true} via the generated client\n  * the bare string \"parent\", which the generated client cannot express\n    because the schema types the field as the SHARES struct\n\nPOST /slurmdb/v0.0.46/accounts_association/ (ASSOC_REC_SET.fairshare)\n  * the bare string \"parent\"\n\nGET /slurm/v0.0.46/shares (ASSOC_SHARES_OBJ_WRAP.shares_raw)\n  * an inherited value renders as parent, with a numeric association in\n    the same response as the control\n"
    },
    {
      "commit": "73449a18f6c0b3773d228b12cc9e568306728454",
      "tree": "fde57359b4871ee6c6ffcf4e9195bb9aa86e5995",
      "parents": [
        "9452d650bacbbe652271937941cf0c75584a634c",
        "3a7c12c2f342017a34bc96acb799ec59e41286e0"
      ],
      "author": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Tue Sep 15 15:59:12 2026 +0000"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Tue Sep 15 15:59:12 2026 +0000"
      },
      "message": "Merge branch \u0027nate-i50192-xutf-test\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4201"
    },
    {
      "commit": "3a7c12c2f342017a34bc96acb799ec59e41286e0",
      "tree": "fde57359b4871ee6c6ffcf4e9195bb9aa86e5995",
      "parents": [
        "9452d650bacbbe652271937941cf0c75584a634c"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Thu Jun 25 11:33:37 2026 -0600"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Tue Sep 15 17:56:05 2026 +0200"
      },
      "message": "Testsuite - Add libcheck test_xutf about the UTF-8 handler\n"
    },
    {
      "commit": "8318df3989ab72bc0c3c035497d40e85c8c5038d",
      "tree": "e83935553df8cfab42c964b02a269cfa4d8b69d2",
      "parents": [
        "ddd22225f343c43123cf4026048b18771ea7dfff"
      ],
      "author": {
        "name": "Nathan Bulloch",
        "email": "nbulloch@nvidia.com",
        "time": "Fri Aug 21 16:39:05 2026 -0600"
      },
      "committer": {
        "name": "Nathan Bulloch",
        "email": "nbulloch@nvidia.com",
        "time": "Tue Sep 15 09:37:11 2026 -0600"
      },
      "message": "Testsuite - Add case to test_108_7 about invalid job ids\n\nslurmctld did not respond to a suspend/resume of a job id that does not\nexist, so scontrol blocked until MessageTimeout and printed \"Unexpected\nmessage received\". Before the fix there is never a reply, so it always\nfails there and never XPASSes under xfail_strict.\n"
    },
    {
      "commit": "ddd22225f343c43123cf4026048b18771ea7dfff",
      "tree": "4c06341c4753206bda3308b9f1563cc4101491ac",
      "parents": [
        "9452d650bacbbe652271937941cf0c75584a634c"
      ],
      "author": {
        "name": "Nathan Bulloch",
        "email": "nbulloch@nvidia.com",
        "time": "Thu Aug 06 12:33:44 2026 -0600"
      },
      "committer": {
        "name": "Nathan Bulloch",
        "email": "nbulloch@nvidia.com",
        "time": "Tue Sep 15 09:37:10 2026 -0600"
      },
      "message": "slurmctld - Respond to suspend with invalid job id\n\n_slurm_rpc_suspend() only sent a response from job_suspend() and\njob_suspend2(). When the job was not found, or the federated cluster\nlock could not be resolved to a cluster, error_code was set but no\nresponse was ever sent, leaving the client waiting until timeout.\n\nChangelog: slurmctld - Fix scontrol suspend/resume hanging instead of\n reporting an error when given an invalid job id.\n"
    },
    {
      "commit": "78855e4571082cd2665139d5e07f70ddce6b09eb",
      "tree": "9b8e40ae5042c694068ccb240a8c1a95623dc30f",
      "parents": [
        "8cb1a94ac8047885f62f91dca60d8493b202d270"
      ],
      "author": {
        "name": "Gianfranco Saenz",
        "email": "gsaenz@nvidia.com",
        "time": "Tue Sep 23 14:26:00 2025 +0200"
      },
      "committer": {
        "name": "Gianfranco",
        "email": "gsaenz@nvidia.com",
        "time": "Tue Sep 15 17:18:13 2026 +0200"
      },
      "message": "Testsuite - Improve test7.24 using test_147_3 avoiding false failures\n\nIssue: 50575\n"
    },
    {
      "commit": "9452d650bacbbe652271937941cf0c75584a634c",
      "tree": "90f7e3968dbd6f82e4065c7bae09f04bd53f1d88",
      "parents": [
        "312ce27d1128ab77cd5ba8d02351de81fcc284aa",
        "9d12f07bb08ad088ecae2a91f52429c15457e257"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Sep 15 08:58:48 2026 -0600"
      },
      "committer": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Tue Sep 15 08:58:48 2026 -0600"
      },
      "message": "Merge branch \u0027t25110-nodes-stuck-not-responding\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4254"
    },
    {
      "commit": "312ce27d1128ab77cd5ba8d02351de81fcc284aa",
      "tree": "fdbe1ee667a0f6d631328b87ba1e5608540a7b29",
      "parents": [
        "a014044ad2620188dc0393360fefda9c129f9e00",
        "392184f6a8ac70a700b8d34a823b11bf5431fc1b"
      ],
      "author": {
        "name": "Tim McMullan",
        "email": "tmcmullan@nvidia.com",
        "time": "Tue Sep 15 10:56:50 2026 -0400"
      },
      "committer": {
        "name": "Tim McMullan",
        "email": "tmcmullan@nvidia.com",
        "time": "Tue Sep 15 10:56:50 2026 -0400"
      },
      "message": "Merge branch \u0027shanks-memleak-fixes\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4384"
    },
    {
      "commit": "8cb1a94ac8047885f62f91dca60d8493b202d270",
      "tree": "907429d50a527e974b2c21470bc330ef5b3f8885",
      "parents": [
        "a014044ad2620188dc0393360fefda9c129f9e00"
      ],
      "author": {
        "name": "Gianfranco Saenz",
        "email": "gsaenz@nvidia.com",
        "time": "Wed Jun 24 18:05:38 2026 +0200"
      },
      "committer": {
        "name": "Gianfranco",
        "email": "gsaenz@nvidia.com",
        "time": "Tue Sep 15 16:55:54 2026 +0200"
      },
      "message": "Testsuite - Improve spank_fail_test to support env vars and atomic logs\n\nThis should allow scripts/spank_fail_test.c to be used by tests like\ntest7.24.\n\nIssue: 50575\n"
    },
    {
      "commit": "9d12f07bb08ad088ecae2a91f52429c15457e257",
      "tree": "351c2d7b4f6f20a52d3e789857c597b7440d2215",
      "parents": [
        "cc28205d0a7636fb01ddd9a6337cf327850313b5"
      ],
      "author": {
        "name": "Oriol Vilarrubi",
        "email": "ovilarrubi@nvidia.com",
        "time": "Fri Aug 21 13:53:18 2026 +0200"
      },
      "committer": {
        "name": "Oriol Vilarrubi",
        "email": "ovilarrubi@nvidia.com",
        "time": "Tue Sep 15 16:24:18 2026 +0200"
      },
      "message": "Testsuite - Add test_141_6 about NOT_RESPONDING on powered down nodes\n\nCover both halves of the fix: a resumed POWERED_DOWN cloud node must not be\nleft NOT_RESPONDING and must stay schedulable across a reconfigure, and a\nflag recovered from the node state file must be scrubbed on restart. Resume\nthrough both state\u003dresume and the ResumeAfter path from the ticket.\n\nAlso add a test_141_3 case for UNDRAIN on a POWERING_DOWN node, the only\npath that reaches _require_node_reg() with POWERING_DOWN still set.\n"
    },
    {
      "commit": "cc28205d0a7636fb01ddd9a6337cf327850313b5",
      "tree": "9fc316727e89b7635a962dbf7d00dc99f4094d18",
      "parents": [
        "c8690b48924c95e3b8b59d28eb5745d48c3b0d0b"
      ],
      "author": {
        "name": "Oriol Vilarrubi",
        "email": "ovilarrubi@nvidia.com",
        "time": "Tue Aug 25 16:34:24 2026 +0200"
      },
      "committer": {
        "name": "Oriol Vilarrubi",
        "email": "ovilarrubi@nvidia.com",
        "time": "Tue Sep 15 16:24:18 2026 +0200"
      },
      "message": "Docs - Note NoResp is not set on powered down nodes\n\nscontrol and power_save html stated that RESUME, IDLE, UNDRAIN and\nResumeAfter always move a node to IDLE and NoResp. A POWERED_DOWN or\nPOWERING_DOWN node has no slurmd to answer and is skipped by\nping_nodes(), so slurmctld no longer sets the flag on it.\n\nAlso correct what follows from that. Eligibility differs between the two\nstates: a POWERED_DOWN node whose base state is IDLE can be allocated\nright away, while a POWERING_DOWN node stays ineligible until it\nfinishes powering down.\n"
    },
    {
      "commit": "c8690b48924c95e3b8b59d28eb5745d48c3b0d0b",
      "tree": "b7c3c426ad5baba4f75150ab8469cb5887b35c35",
      "parents": [
        "2dcaa521c5fb0ef0a9ed2885161bda6872393aff"
      ],
      "author": {
        "name": "Oriol Vilarrubi",
        "email": "ovilarrubi@nvidia.com",
        "time": "Fri Aug 21 13:52:22 2026 +0200"
      },
      "committer": {
        "name": "Oriol Vilarrubi",
        "email": "ovilarrubi@nvidia.com",
        "time": "Tue Sep 15 16:24:18 2026 +0200"
      },
      "message": "slurmctld - Clear NO_RESPOND in load_all_node_state()\n\nA NO_RESPOND flag on a POWERED_DOWN or POWERING_DOWN node is never\ncleared. ping_nodes() skips those nodes, so nothing ever marks them as\nresponding, and _build_bitmaps() then leaves them out of\navail_node_bitmap on every reconfigure and slurmctld restart.\n\nScrub the flag when the node state is recovered, so nodes left stuck by\nan earlier slurmctld heal on upgrade.\n"
    },
    {
      "commit": "2dcaa521c5fb0ef0a9ed2885161bda6872393aff",
      "tree": "5ca5349c94e632a128d3be71dca0fc0377a370d7",
      "parents": [
        "8ae1ab7a23f88d1637bc4befa4a6d4e3e72b20f4"
      ],
      "author": {
        "name": "Nathan Rini",
        "email": "nrini@nvidia.com",
        "time": "Wed Aug 26 16:51:53 2026 -0600"
      },
      "committer": {
        "name": "Oriol Vilarrubi",
        "email": "ovilarrubi@nvidia.com",
        "time": "Tue Sep 15 16:24:18 2026 +0200"
      },
      "message": "slurmctld - Skip the rest of _require_node_reg() when powered down\n\nTurn the POWERED_DOWN / POWERING_DOWN check into an early return. Past\nthe NO_RESPOND flag the rest of the function is meaningless for such a\nnode: refreshing last_response records a response that was never\nreceived, boot_time is recomputed from the next registration before\nanything reads it, and ping_nodes_now schedules an immediate ping cycle\nthat skips this very node.\n\nAll three node loops in ping_nodes.c already skip POWERED_DOWN and\nPOWERING_DOWN nodes, so no ping was ever going to reach it.\n"
    },
    {
      "commit": "8ae1ab7a23f88d1637bc4befa4a6d4e3e72b20f4",
      "tree": "330259c56099b9e863217f45b2d3346e95e55931",
      "parents": [
        "a014044ad2620188dc0393360fefda9c129f9e00"
      ],
      "author": {
        "name": "Oriol Vilarrubi",
        "email": "ovilarrubi@nvidia.com",
        "time": "Fri Aug 21 13:52:22 2026 +0200"
      },
      "committer": {
        "name": "Oriol Vilarrubi",
        "email": "ovilarrubi@nvidia.com",
        "time": "Tue Sep 15 16:24:18 2026 +0200"
      },
      "message": "slurmctld - Do not set NO_RESPOND on powered down nodes\n\n_require_node_reg() set NODE_STATE_NO_RESPOND on POWERED_DOWN nodes,\nwhich ping_nodes() skips, so the flag was never cleared. Since\n_build_bitmaps() skips make_node_avail() for such nodes, a reconfigure\nor restart dropped them from avail_node_bitmap for good. Cloud nodes\nthen deadlocked: never scheduled, so never resumed, so never able to\nregister and clear the flag.\n\nDo not set the flag on POWERED_DOWN or POWERING_DOWN nodes.\n\nChangelog: slurmctld - Fix cloud nodes becoming permanently unschedulable\n after being resumed while powered down.\n"
    },
    {
      "commit": "392184f6a8ac70a700b8d34a823b11bf5431fc1b",
      "tree": "59db0253fb03091327433f9bead7e5123d275944",
      "parents": [
        "947ab8f99bc3ff860a3f4721afe839ec447ade4c"
      ],
      "author": {
        "name": "Tim McMullan",
        "email": "tmcmullan@nvidia.com",
        "time": "Mon Sep 14 17:08:02 2026 -0400"
      },
      "committer": {
        "name": "Tim McMullan",
        "email": "tmcmullan@nvidia.com",
        "time": "Tue Sep 15 08:14:29 2026 -0400"
      },
      "message": "stepmgr - Free the job step info response through its destructor\n\nBoth callers freed the response with xfree(), which skips\nslurm_free_job_step_info_response_msg() and so misses any field it\nfrees. _load_fed_steps() leaked stepmgr_jobs that way, and\n_get_stepmgr_steps() skipped the free entirely when the stepmgr\nreturned no steps.\n\nIntroduced in commit 84094a6003, first released in 24.05.\n"
    },
    {
      "commit": "a014044ad2620188dc0393360fefda9c129f9e00",
      "tree": "2caa138bcfe44400b82cff0881f8bf0b57b4a3a2",
      "parents": [
        "5c88f444f11b6194e0afec7dfd08cc9a8b657fad",
        "14cd32b43340b6227d5c5579fdb11dd6ff5c2304"
      ],
      "author": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Tue Sep 15 10:19:02 2026 +0000"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Tue Sep 15 10:19:02 2026 +0000"
      },
      "message": "Merge branch \u0027gitignore-check\u0027 into \u0027master\u0027\n\nSee merge request nvidia/schedmd/slurm/slurm!4263"
    },
    {
      "commit": "14cd32b43340b6227d5c5579fdb11dd6ff5c2304",
      "tree": "2caa138bcfe44400b82cff0881f8bf0b57b4a3a2",
      "parents": [
        "8821fd52b4278d3f8ec6efd6cb3a8b90bd93f878"
      ],
      "author": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Mon Aug 24 14:39:07 2026 -0600"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Tue Sep 15 12:14:22 2026 +0200"
      },
      "message": "Add pre-commit hook rejecting tracked files that are gitignored\n\nA tracked file matched by .gitignore is always a mistake: git status\nstops reporting edits to it, so changes go unnoticed. This typically\nhappens when a configure-generated file is promoted to a tracked source\nfile and the ignore rule is left behind, as testsuite.conf.sample was.\n"
    },
    {
      "commit": "8821fd52b4278d3f8ec6efd6cb3a8b90bd93f878",
      "tree": "b117e9c2d513398afcc0d6bde6ee96e1ab737231",
      "parents": [
        "5c88f444f11b6194e0afec7dfd08cc9a8b657fad"
      ],
      "author": {
        "name": "Brian Christiansen",
        "email": "bchristianse@nvidia.com",
        "time": "Mon Aug 24 14:37:54 2026 -0600"
      },
      "committer": {
        "name": "Albert Gil",
        "email": "agilmoreno@nvidia.com",
        "time": "Tue Sep 15 12:14:22 2026 +0200"
      },
      "message": "Remove testsuite.conf.sample from gitignore\n\nIt stopped being a configure-generated artifact in c08fcc87dd, which\ndropped it from configure.ac and renamed testsuite.conf.sample.in to\ntestsuite.conf.sample. The file is tracked now, so the ignore rule only\nserves to hide local edits to it from git status.\n"
    },
    {
      "commit": "960e0e4f8ae2ce84a06df19d5e695e5c663a7ab2",
      "tree": "2ecee73409366ef56e533f4ccb71c1c8437a7dc8",
      "parents": [
        "cc53624516cb64c2c80a71b7e152142b04bbb449"
      ],
      "author": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Sep 08 14:56:31 2026 +0100"
      },
      "committer": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Sep 15 10:01:42 2026 +0100"
      },
      "message": "Testsuite - Adapt test_107_5 for hetjob step cancel with stepmgr\n\nWith stepmgr the controller forwards a step cancel to the components\u0027\nstepmgr and cannot synchronously tell that no component has the step, so\nscancel of such a step succeeds instead of reporting an invalid job id.\nWithout stepmgr it still reports an invalid job id, so gate that\nassertion on the configuration rather than dropping it, and assert the\nsuccess path when stepmgr is enabled.\n\nAdd test_cancel_hetjob_step_with_stepmgr for the forwarded cancel. It\nneeds PrologFlags\u003dContain, which the module now requires: without it the\ncontroller silently drops the requested stepmgr and the job would run\ncontroller-managed, so the test would not exercise the forwarded path.\n"
    },
    {
      "commit": "cc53624516cb64c2c80a71b7e152142b04bbb449",
      "tree": "5fb18456a631f0979c08eabfb75884b0b6396403",
      "parents": [
        "a9223e95a8c97ee14a12d763b3b2bd2e7ed80f36"
      ],
      "author": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Sep 08 14:05:00 2026 +0100"
      },
      "committer": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Sep 15 10:01:42 2026 +0100"
      },
      "message": "Testsuite - Improve test_116_55 docstring about async on hetjobs\n\nThe old text said hetjobs cannot use stepmgr, which is falsified by\n\"Allow STEPMGR_ENABLED on heterogeneous job components\". Async steps are\nrejected on hetjobs because an async step\u0027s launch needs the aggregate\nhetjob task layout that only srun assembles, so say that instead.\n"
    },
    {
      "commit": "a9223e95a8c97ee14a12d763b3b2bd2e7ed80f36",
      "tree": "1dd469d8860e39e40bece242faf6c42fef9fae5a",
      "parents": [
        "1406e438b11cd59f8b45c636d01c793f3c45b654"
      ],
      "author": {
        "name": "Nathan Prisbrey",
        "email": "nprisbrey@nvidia.com",
        "time": "Wed Aug 05 16:27:23 2026 -0600"
      },
      "committer": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Sep 15 10:01:42 2026 +0100"
      },
      "message": "Testsuite - Add test_168_4 about hetjob scontrol show job fields\n\nThis is test_105_2 renamed. It only tests heterogeneous jobs, so it\nbelongs in the new test_168_# group rather than in test_105_#, which is\nfor sbatch options.\n"
    },
    {
      "commit": "1406e438b11cd59f8b45c636d01c793f3c45b654",
      "tree": "b68f1576e5e1f2486193ff73d10b12f40909e331",
      "parents": [
        "aaad4eebf50d69abc2aeb1721cf128bc68dd8fcc"
      ],
      "author": {
        "name": "Nathan Prisbrey",
        "email": "nprisbrey@nvidia.com",
        "time": "Wed Aug 05 16:26:35 2026 -0600"
      },
      "committer": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Sep 15 10:01:42 2026 +0100"
      },
      "message": "Testsuite - Add test_168_3 about hetjob client tools with stepmgr\n\nsbcast has to resolve --jobid\u003d\u003cleader\u003e and --jobid\u003d\u003cleader\u003e+\u003coffset\u003e\nthrough the controller and send each component its own job_id, since the\n\u003cleader\u003e+\u003coffset\u003e form is not resolvable on the target slurmd after the\nrequest has been rerouted. squeue --only-job-state has to keep reporting\nevery component.\n\nIssue: 50976\n"
    },
    {
      "commit": "aaad4eebf50d69abc2aeb1721cf128bc68dd8fcc",
      "tree": "46869c57c99cfba43674df9078a316317e1d1bd7",
      "parents": [
        "0c0a7fc8d4b5553235201afbdbc96b05d68171b2"
      ],
      "author": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Mon Jun 15 12:29:56 2026 +0100"
      },
      "committer": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Sep 15 10:01:42 2026 +0100"
      },
      "message": "Add Changelog for the previous commits\n\nChangelog: stepmgr - Support --stepmgr on heterogeneous jobs.\nIssue: 50976\n"
    },
    {
      "commit": "0c0a7fc8d4b5553235201afbdbc96b05d68171b2",
      "tree": "46869c57c99cfba43674df9078a316317e1d1bd7",
      "parents": [
        "8752f213aacd0ae853fc1e01d8b4d5ec33ed9bf9"
      ],
      "author": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Aug 04 16:09:12 2026 +0100"
      },
      "committer": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Sep 15 10:01:42 2026 +0100"
      },
      "message": "slurmstepd - pre-seed het leader stepmgr host from cred\n\nExtract the het leader\u0027s stepmgr host from the launch cred at extern\nstep init and use it as the initial value of the cache consulted by\n_remote_get_het_step_id(). Skips the ctld reroute round-trip on the\nfirst REQUEST_HET_STEP_ID when the leader batch_host was known at cred\ncreate time; falls back to the reroute path otherwise.\n\nIssue: 50976\n"
    },
    {
      "commit": "8752f213aacd0ae853fc1e01d8b4d5ec33ed9bf9",
      "tree": "e88519eaf6c73bf513659c85adefe6c090b56da7",
      "parents": [
        "bf60fae6bbd8129634fe48eaff87874673d551f0"
      ],
      "author": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Aug 04 14:49:57 2026 +0100"
      },
      "committer": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Sep 15 10:01:42 2026 +0100"
      },
      "message": "slurmstepd - extract _init_stepmgr() from _init_from_slurmd()\n\nNo functional change. Prep for a follow-up that pre-seeds the leader\nstepmgr host from the launch cred.\n\nIssue: 50976\n"
    },
    {
      "commit": "bf60fae6bbd8129634fe48eaff87874673d551f0",
      "tree": "5e6c118547530af3fe5c7d4b7bbcf3a27e670f05",
      "parents": [
        "1979e26663c60c46d6707cea99bcc4f13f6c4c9e"
      ],
      "author": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Aug 04 13:58:26 2026 +0100"
      },
      "committer": {
        "name": "Dominik Bartkiewicz",
        "email": "dbartkiewicz@nvidia.com",
        "time": "Tue Sep 15 10:01:42 2026 +0100"
      },
      "message": "launch_prolog() - pre-seed het_stepmgr_host for followers\n\nPopulate cred_arg-\u003ejob_het_stepmgr_host with the het leader\u0027s\nbatch_host so the follower stepd can skip the ctld reroute on the\nfirst REQUEST_HET_STEP_ID. Best-effort: NULL when the leader has not\nbeen picked yet, in which case the follower falls back to the reroute\npath.\n\nIssue: 50976\n"
    }
  ],
  "next": "1979e26663c60c46d6707cea99bcc4f13f6c4c9e"
}
