Skip to content

Re-submitted PRs: how to review them (49 re-submitted, 54 ready) #84

Description

@hjmjohnson

All 49 pull requests that were reverted from master on 2026-09-24 have
been re-submitted and are ready for review. master is back at f24a607,
the state it had before the batch landed. Nothing was lost: every reverted
commit is on 20260924_master_backup.

56 pull requests are open. Nothing needs to be reviewed in a hurry, and
nothing will be merged without a review.

Suggested way through this

  1. Start with the CI stack (COMP: Give install_linking the source directory instead of guessing it #85 to COMP: Detect a workflow that can never be scheduled #94). It is ten pull requests that
    must merge in order, and it restores the test and CI coverage everything
    else was checked against. Reviewing it first means every later pull
    request arrives with working CI.
  2. Then take the 26 independent ones in any order, or ignore the order
    entirely and pick whatever looks interesting. They do not interact.
  3. Leave the deep stack (ENH: Add regression tests for the bug fixes of the past two days #123 to BUG: Report XML read errors instead of treating them as end of input #133) for last. It depends on the
    independent ones; see the note below about ENH: Add regression tests for the bug fixes of the past two days #123.

If any of this is the wrong shape, say so and it will be reorganised. None
of the grouping is load-bearing except the stack ordering, which is a git
constraint rather than a preference.

1. The CI stack: merge bottom to top

Each is based on the one above it, not on master. Merging out of order
makes the later diffs swallow the earlier commits.

Order PR What it does
1 #85 COMP: Give install_linking the source directory instead of guessing it
2 #86 COMP: Show test output when the starter workflow fails
3 #87 COMP: Guard the CMP0169 policy setting so older CMake still configures
4 #88 COMP: Build the optional code paths in the per-PR workflow
5 #89 COMP: Widen CI coverage across platforms, linkage, and configurations
6 #90 COMP: Declare the exported functions that no header declares
7 #91 COMP: Install the tools the analysis jobs actually invoke
8 #92 COMP: Fail the build on an undeclared external function
9 #93 COMP: Build and test on Windows
10 #94 COMP: Detect a workflow that can never be scheduled

Two more hang off that stack rather than extending it:

PR Base What it does
#38 #87 COMP: Build as ISO C11 with no compiler extensions
#57 #91 COMP: Make the 'Build and Test' analysis workflow run

#87 is worth knowing about: without its if(POLICY CMP0169) guard the
project does not configure at all on CMake older than 3.30, which includes
the 3.28 that Ubuntu 24.04 ships. That is why several things are stacked
behind it rather than sitting on master.

2. Independent: review in any order (26)

Each applies to master on its own and touches nothing the others touch.

PR What it does
#47 BUG: Give i and j a defined value in nifti_mat44_to_orientation
#59 COMP: Add CI jobs for clang-tidy and for building with -Werror
#96 BUG: Compare NIfTI test output by content, not by compressed bytes
#97 ENH: Rework the clang-tidy configuration for C11
#98 BUG: Bound the aux_file copy by sizeof rather than a repeated 24
#99 BUG: Free the extension data when nifti_add_extension fails
#100 BUG: Free the previous filename when an ASCII header repeats the attribute
#101 BUG: Free the header on nifti_tool's duplicate-file failure paths
#102 BUG: Fix signed/unsigned comparisons in the nifti tools
#103 BUG: Stop loc_strnlen reading one byte past the buffer it is given
#104 STYLE: Add the missing newline at end of nifti1_tool.h
#105 BUG: Check dim[0] before using it to index dim[] in the NIFTI-2 converter
#106 BUG: Refuse a header whose dimensions overflow the voxel count
#107 BUG: Swap a nifti_1_header as a NIFTI-1 header, not as whatever its magic claims
#108 BUG: Fix the ambiguous-filename path in nifti_findhdrname
#109 BUG: Fix an out-of-bounds indirect call in axio_show_mim_summary
#110 BUG: Bound the formatted write in znzprintf, and end the va_list on failure
#111 BUG: Stop returning -1 from functions that return size_t
#112 Fixed some warnings from the new cppcheck 2.19
#114 BUG: Fix cdfbin's argument range check, which could never fire
#115 BUG: Do not use sscanf's output when sscanf matched nothing
#116 BUG: Use memcpy instead of casting to over-aligned pointer types
#117 BUG: Stop casting away const in fslio and cifti
#118 ENH: Give the cifti tools' gopt internal linkage
#119 DOC: Describe the CMake build and how to run the memory checks
#121 Update a couple of functions to know buffer length

Three small stacks sit alongside them:

Order PRs
#95 then #76 shared warning set, then the flags that are not yet clean
#113 then #120 then #122 clang-tidy fixes, statement macros, macro parentheses

3. The deep stack: #123 to #133, merge bottom to top

Order PR What it does
1 #123 ENH: Add regression tests for the bug fixes of the past two days
2 #124 BUG: Check the allocations whose result is used immediately
3 #125 BUG: Keep the XML skip depth at the element that started the skip
4 #126 BUG: Fix cifti_tool's CIFTI extension search, which never advanced
5 #127 ENH: Make the implicit sign conversions explicit
6 #128 BUG: Do fslio's size and offset arithmetic at 64-bit width
7 #129 BUG: Do not write to the stream that failed to open
8 #130 ENH: Pass calloc its arguments in the documented order
9 #131 ENH: Make the 64-to-32 bit truncations explicit
10 #132 BUG: Fix the REJECT_COMPLEX path in nifti_image_read
11 #133 BUG: Report XML read errors instead of treating them as end of input

#123 shows 42 commits instead of its own 10, and that is expected. It
depends on changes that are still open as separate pull requests, and GitHub
can only express that by including them. Once the independent pull requests
have merged, that stack can be rebased onto master and every diff in it
shrinks to its own commits. Ask for that rebase whenever it would help; it
is mechanical. The other ten already show only their own work.

Needs your decision, not review

PR Why
#12 Your WIP pull request. Left as a draft and untouched; its base is already correct.
#24 Your WIP pull request. Its two commits conflict with master and with every branch here, and nothing includes string_helper.h, so MSVC cannot resolve strlcpy. Left alone rather than guessed at.

Conventions adopted for this work

  • Commits carry at most one Assisted-by: <Agent>:<model-id> line, used
    sparingly where an AI contribution to the content is worth crediting. No
    Co-authored-by: for a tool, no Signed-off-by: from an agent, no session
    URLs, and no links that expire or point at a fork. This is a deliberate
    divergence from ITK, which keeps AI disclosure in the pull request body.
  • Attribution has not been applied to the re-submitted commits yet,
    because the threshold for "worth crediting" is a judgement call that has
    not been made. The original trailers are recoverable if wanted.
How the ordering was worked out

The 89 reverted commits are a validated linear history: they built and
passed tests at every point. Ordering is taken from that sequence rather
than guessed.

Each pull request was then cherry-picked onto a clean f24a607 in
isolation
to find out whether it needs predecessors at all. A
file-overlap heuristic alone reports a 21-deep chain, because nearly every
change touches niftilib/nifti1_io.c. Testing actual application is what
reduced it to the groups above.

Two kinds of dependency exist here, and only one shows up as a conflict:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions