review-checklist.js previously tried to enforce a single load-balanced reviewer per area by actively stripping anyone else who showed up, using a checklist-comment-existence heuristic (isOpeningRace) to decide when it was safe to do so. Walking through real PR timelines surfaced several cases where that heuristic and that stripping behavior did the wrong thing: - An old PR's first encounter with the bot (or one whose checklist comment was deleted) was misdiagnosed as a brand-new PR, forcibly reselecting a human-curated reviewer list. - A CODEOWNER for areas this PR doesn't touch (e.g. a project lead added by hand for their judgment) was swept by the same logic as junk auto-assignment, with no protection for an existing approval. - A reviewer who isn't an owner of any touched area was invisible in the checklist and untouched by any cleanup path either way. - A PR that picked up reviewers while non-draft, then was converted to draft, had those reviewers wiped out by the next push — converted_to_draft isn't in this workflow's trigger list, so there's no event at the actual transition to distinguish "noise from this PR's creation" from "a real assignment from before it became a draft." - A reviewer removed via the PR UI could be silently re-added by GitHub's own CODEOWNERS engine on a later push, since there was no memory of the removal across runs. Redesign around one principle: the bot should never automatically strip a reviewer who's already on the PR, manually added or auto-assigned, except where the policy explicitly calls for it. Concretely: - coordinateReviewers is now purely additive for non-draft PRs: chooseReviewers runs against the *real* existingRequested, so it naturally skips any area that already has someone and only fills gaps. This is idempotent and safe on every event, eliminating the need for the old race-detection heuristic entirely (isOpeningRace, the new-PR/synchronize distinction, and the post-request 15s delayed re-clear are all removed as dead weight). - Pruning — used only where the bot still clears reviewers — is scoped to touchedAreaOwners (owners of areas this PR touches, plus catch-all "*" owners) instead of the repo-wide allCodeOwners, so a CODEOWNER for unrelated areas is never touched. - Draft handling clears auto-assigned reviewers only at the literal opened/reopened-as-draft moment — the one point where "CODEOWNERS noise from this PR's creation" and "this PR's actual reviewer state" are mechanically the same thing. Every other event while draft leaves existing reviewers alone. - An explicit review_request_removed persists that login to an exclusion list embedded as a second hidden marker in the checklist comment (the only durable storage available), and every run strips anyone in that list who reappears — covering GitHub re-assigning them on a later push. A direct review_requested for that exact login overrides the exclusion, since it's the strongest available signal that someone individually decided that person should be back right now. - buildBody adds a catch-all "Additional reviewers" line for anyone requested who isn't an owner of any touched area, so they're visible and their approval is shown (informationally — it doesn't gate any area's sign-off), and accepts any owner's approval for an area's sign-off rather than only the specifically-assigned one's. 12 new tests cover the buildBody changes and the parseExcluded/serializeExcluded round-trip; all existing pure-function tests are unchanged. Co-authored-by: H. Joe Lee <hyoklee@hdfgroup.org>
What is HDF5?
This repository contains a high-performance library's source code and a file format specification that implements the HDF5® data model. The model has been adopted across many industries, and this implementation has become a de facto data management standard in science, engineering, and research communities worldwide.
The HDF Group is the developer, maintainer, and steward of HDF5 software. Find more information about The HDF Group, the HDF5 Community, and other HDF5 software projects, tools, and services at The HDF Group's website.
Quick Start
-
New to HDF5? Start with the INSTALL.md guide for compilation and installation instructions.
-
Ready to build? See INSTALL_CMake.md for CMake-based builds.
-
Running on HPC? Check out README_HPC.md for parallel HDF5 configuration.
Table of Contents
- What is HDF5?
- Quick Start
- Documentation
- Help and Support
- Forum and News
- Release Schedule
- Downloads and Source Code
- Java Maven Artifacts
- Contributing
- How to Cite HDF5
- Build Status
Documentation
Documentation for all HDF software is available at:
- All HDF Documentation: https://support.hdfgroup.org/documentation/index.html
- Latest HDF5 Library: https://support.hdfgroup.org/documentation/hdf5/latest
See the CHANGELOG.md file in the release_docs/ directory for information specific to the features and updates included in this release of the library.
Platform-Specific Guides
Several files in the docs/ directory provide platform-specific details:
| File | Description |
|---|---|
| INSTALL | General compilation and installation instructions (start here) |
| INSTALL_CMake.md | Building with CMake |
| README_HPC.md | Building and configuring Parallel HDF5 on HPC systems |
| INSTALL_Windows.md | Windows installation |
| INSTALL_Cygwin.md | Cygwin installation |
| USING_HDF5_CMake.md | Building HDF5 applications with CMake |
| USING_CMake_Examples.md | Building and testing HDF5 examples with CMake |
Help and Support
The HDF Group staffs a free Help Desk accessible at https://help.hdfgroup.org and also monitors the Forum. Our free support service is community-based and handled as time allows. We'll do our best to respond to your question as soon as possible, but please note that response times may vary depending on the complexity of the issue and staff availability.
If you're interested in guaranteed response and resolution times, a dedicated technical account manager, and more benefits (all while supporting the open-source work of The HDF Group), please check out Priority Support.
Forum and News
The HDF Forum is provided for public announcements, technical questions, and discussions of interest to the general HDF5 Community.
These forums are provided as an open and public service for searching and reading. Posting requires completing a simple registration and allows one to join in the conversation. Please read the quickstart guide for more information on how to get started.
Release Schedule
HDF5 does not follow a regular release schedule. Instead, updates are based on the introduction of new features and the resolution of bugs. However, we aim to have at least one annual release for each maintenance branch.
Release Progress
The badges above show the current progress of critical and high priority issues with colors that reflect completion status:
- 🟢 Green (90%+): Readying for Deployment - most issues completed
- 🟡 Yellow (60-89%): Nearing Completion - on track for release
- 🟠 Orange (40-59%): In Development - attention needed
- 🔴 Red (<40%): Initial Phase - significant issues remain
Click the badges to view the detailed project board with current release items.
Downloads and Source Code
Snapshots and Releases
- Development Snapshots: https://github.com/HDFGroup/hdf5/releases/tag/snapshot
- Latest Release: https://github.com/HDFGroup/hdf5/releases
- Previous Releases: https://support.hdfgroup.org/archive/support/ftp/HDF5/releases/index.html
- Development Code: https://github.com/HDFGroup/hdf5.git
HPC Testing Results
View HPC configure/build/test results on CDash
Java Maven Artifacts
HDF5 Java bindings and examples are available as Maven artifacts. For detailed usage instructions including dependency configuration, repository setup, and platform-specific builds, see HDF5Examples/JAVA/README-MAVEN.md.
Contributing
We welcome contributions to HDF5! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.
How to Contribute
- Report Issues: Use our GitHub Issues to report bugs or request features
- Submit Pull Requests: Fork the repository, make your changes, and submit a PR
- Join Discussions: Participate in the HDF Forum
For detailed contribution guidelines, please contact us through the Help Desk.
How to Cite HDF5
If you use HDF5 in your research, please cite it. This repository includes a CITATION.cff file containing standard citation metadata.
Quick DOI: 10.5281/zenodo.17808558

