Conversation
Select the nightly tests by label alone, without further exclusions, so that s_test, s_zombies, s_http and the python tests also run on the CI and HPC targets that were skipping them.
Select the nightly tests by label alone on the CI and HPC targets, so that s_test, s_zombies, s_http and py3_s_TestClientApi also run there.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015mHyqKGJ3Bu8RAnKdQhguB
mcocdawc
force-pushed
the
ci-approval-single-use
branch
from
September 8, 2026 13:14
3b3150e to
5f47988
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## job-name-from-resolved #435 +/- ##
==========================================================
+ Coverage 52.98% 55.71% +2.73%
==========================================================
Files 1260 1260
Lines 104076 104106 +30
Branches 15281 15280 -1
==========================================================
+ Hits 55145 58007 +2862
+ Misses 48931 46099 -2832 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Resolve the ECF_INCLUDE of py_s_TestClientApi from the source directory rather than from the current working directory, as py_s_TestPythonChildApi already does. The tests run from the build tree, where those include files are absent, so ecFlow generated a head.h of its own, and the checked-in one was only ever picked up when pytest happened to be invoked from libs/pyext. Drop the host and ping sanity checks from both that head include and the head.h that TaskScriptGenerator generates. Both ran under `set -e`, and thus killed every job before ecflow_client --init on an image that provides neither command, or that denies ICMP. Bound the wait loops of test_client_free_dep and test_client_get_file the way the surrounding tests are bounded, with an assertion that the suite has not aborted, and report the job output of the suite alongside the definition dump. A suite that never completes is then reported as a test failure naming the shell error, rather than as a ctest timeout that hides the remaining tests.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015mHyqKGJ3Bu8RAnKdQhguB
Select the nightly tests by label alone on every runner configuration, so that s_test, s_zombies, s_http and the Python client API test are no longer skipped per target. Running the latter outside a source directory required its ECF_INCLUDE to resolve from the source directory, and both the head.h it uses and the one TaskScriptGenerator generates to stop running a host or ping sanity check under `set -e`. Its waits for a suite to complete are now bounded and report the job output.
Carry the canonical Apache-2.0, MIT, BSD-3-Clause and CC0-1.0 texts under LICENSES/, assert ECMWF's copyright and intergovernmental notice in LICENSE and NOTICE, and drop the unreferenced COPYING duplicate. As per ADR-010: Adopt SPDX Licence Identifiers and REUSE-Compliant File Headers.
Every ECMWF-authored source file states its copyright holder and licence through SPDX-FileCopyrightText and SPDX-License-Identifier tags, in the comment syntax of the file. The year is the open range 2009-. The C++ header generated by cmake/GenerateClientHelp.cmake carries the same tags. Vendored third-party code keeps its own headers. As per ADR-010: Adopt SPDX Licence Identifiers and REUSE-Compliant File Headers
Seventeen files under Viewer/ecflowUI/src/ move to LF, matching the rest of the repository: fourteen C++ sources and the Qt .ui files beside them. Only the line terminator changes, which git diff --ignore-cr-at-eol confirms by reporting no difference. A .gitattributes keeps it that way. Files that Git detects as text are stored with LF, vendored code under 3rdparty/ is never renormalised, and tools/ecflow_logsvr.pl is marked explicitly because the literal NUL bytes in its Perl substitutions make Git detect it as binary.
The remaining ECMWF-authored files that accept a comment now state their copyright holder and licence: the CI workflows and their configuration, the conda and Docker packaging, the release engineering scripts, version.sh, the clang tooling configuration and CITATION. README.md and the INSTRUCTIONS files carry the tags in an HTML comment. In .cd/conda/build.sh the interpreter line moves to the first line of the file, where it takes effect. Files unable to carry a comment, vendored code, test data and documentation assets are covered separately. As per ADR-010: Adopt SPDX Licence Identifiers and REUSE-Compliant File Headers
A REUSE.toml declares copyright and licence for the content that cannot carry a header: documentation assets, the test fixtures and definition files that are compared byte for byte, Qt forms and icons, installed configuration, and formats without a comment syntax. Vendored code keeps its own licensing: cereal under BSD-3-Clause, cpp-httplib and nlohmann-json under MIT, LazyTextEdit under Apache-2.0 with Anders Bakken's copyright, the cereal helper header in libs/core under MIT, and spinning_wheel.gif under CC0-1.0. An in-file header takes precedence, so the ECMWF sources inside those directories are unaffected. reuse lint passes, with 3618 of 3618 files carrying both copyright and licence information. As per ADR-010: Adopt SPDX Licence Identifiers and REUSE-Compliant File Headers
The licence page gives the copyright year as the open range 2009-, quotes ECMWF's intergovernmental notice in its standing wording, and points at LICENSE, LICENSES/Apache-2.0.txt and NOTICE. A section describes the SPDX tags each file carries, and the REUSE.toml that covers files unable to carry a comment. The contributing page states the convention for new files: the tag template, the placement of an interpreter line and encoding declaration, the form for a second copyright holder, and that third-party files keep the header of their origin. It also gains a reference label, so the licence page can link to it. README.md gives the same year, links to the licensing files, and carries a REUSE badge. As per ADR-010: Adopt SPDX Licence Identifiers and REUSE-Compliant File Headers
Each of the 404 reStructuredText pages states its copyright holder and licence in a comment above the document title. The tags are comments, so the rendered pages are unchanged: all 406 HTML outputs are identical to those built before this change. The pages under docs/client_api/api and docs/python_api/reference are generated into the source tree on every documentation build, so the generators emit the tags themselves: build.py, extract_api.py and python_api.py prepend the header at each of their seven write sites. Regeneration therefore reproduces it. The constant holding the emitted text is fenced with REUSE-Ignore comments, so that licence tooling reads it as data rather than as the licensing of the generator, and those three scripts carry headers of their own. As per ADR-010: Adopt SPDX Licence Identifiers and REUSE-Compliant File Headers
A pre-commit hook runs `reuse lint` over the whole project, so a file added without SPDX tags, or a licence text missing from LICENSES/, is reported before the commit is made. The same hook runs in CI, where the existing pre-commit job invokes `pre-commit run --all-files`. The hook receives no file list, so the top-level exclude does not narrow what it checks, and vendored code is covered as well. always_run keeps it honest for a commit that touches only excluded paths. As per ADR-010: Adopt SPDX Licence Identifiers and REUSE-Compliant File Headers
Every file states its copyright holder and licence in machine-readable form: ECMWF-authored sources carry two SPDX tags in place of the Apache prose notice, and the files that cannot carry a comment are declared in REUSE.toml. The intergovernmental notice moves to LICENSE and NOTICE, alongside the canonical licence texts under LICENSES/. Four generators emit the tags into the files they write, so a build cannot reintroduce the old header. The seventeen files that used CRLF move to LF, with a .gitattributes to keep them there. The licence and contributing pages describe the convention, and a pre-commit hook runs `reuse lint` on every commit. As per ADR-010: Adopt SPDX Licence Identifiers and REUSE-Compliant File Headers
A REUSE Compliance workflow runs fsfe/reuse-action on every push and pull request, following the template published alongside ADR-010, so that the check stands on its own rather than through the pre-commit job. Both actions are pinned to a commit SHA rather than a tag, as the Codex audit guidance requires; the tag beside each is a comment recording which release the SHA belongs to. As per ADR-010: Adopt SPDX Licence Identifiers and REUSE-Compliant File Headers
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015RsLA9yt5sthqAuLFjBHdm
Contributor
Author
|
Reopening as a single pull request against |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Purely trigger the downstream CI from the CI itself.
This means it's automatically gated behind the CI approval of the CI.
Get rid of the contributor declaration test.
Contributor Declaration
By opening this pull request, I affirm the following:
🌦️ >> Documentation << 🌦️
https://sites.ecmwf.int/docs/dev-section/ecflow/pull-requests/PR-435