Skip to content

develop -> main - #924

Merged
atriaybagur merged 4 commits into
mainfrom
develop
Aug 7, 2026
Merged

develop -> main#924
atriaybagur merged 4 commits into
mainfrom
develop

Conversation

@atriaybagur

@atriaybagur atriaybagur commented Aug 7, 2026

Copy link
Copy Markdown
Member

Description

Cuts the v0.4.0 release: promotes develop into main per CONTRIBUTING
"Cutting a release".

This is a deliberately small diff — 14 files, +15/-15. The feature work for this release was already
promoted by #808 (merged 2026-08-06); everything here is the version bump (#917) plus one release-pipeline
fix bundled with it. Nothing else has landed on develop since.

Commits: 20a4072f, 0f57d781, 181dd447, merged via fcd964c5 (#917).

Version bumps

Component Version
FLIP (root — becomes the v0.4.0 release tag) 0.3.0 → 0.4.0
flip-api 0.3.0 → 0.4.0
flip-ui 0.3.0 → 0.4.0
imaging-api 0.3.0 → 0.4.0
data-access-api 0.3.0 → 0.4.0
trust-api 0.3.0 → 0.4.0
flip-utils (flip on PyPI) 0.4.0 → 0.4.1

trust-api tracks the platform version. Only its dependencies changed since v0.3.0, so a strict semver
read would make it 0.3.1 — but holding one service back means image tags, deployed services and support
requests no longer line up without a per-service lookup. It moves to 0.4.0 with everything else.

flip-utils is the deliberate exception and goes to 0.4.1, not 0.4.0. It is published to PyPI as flip
and has its own consumers, so its version stays independent. release.yml (reads the root version) and
release-pypi.yml (reads flip.__version__) mint tags into the same v* namespace and both fire on every
push to main. flip 0.4.0 was never published or tagged (release-pypi has failed on every run since June),
so once this merges release.yml would claim v0.4.0 and release-pypi's tag-exists check would then skip
publishing flip 0.4.0 permanently. 0.4.1 sidesteps the collision for this release; separating the tag
namespaces (e.g. a flip-utils-v* prefix) is the proper long-term fix.

Release-pipeline fix bundled in

Drop -s from the release-pypi pytest invocation (20a4072f). The run on main after #808 merged
crashed at interpreter exit with OSError: [Errno 9] Bad file descriptor on sys.stdout.flush (exit code
120) after every test had passed, killing the release job before publish. With default capture the suite is
clean — verified locally on uv-synced deps: 653 passed.

What merging this triggers

  • release.yml — reads the root pyproject.toml version, creates the v0.4.0 tag and a GitHub Release with
    auto-generated notes.
  • docker_build_*.yml — rebuilds every service and pushes the :prod image tag (alongside :<sha>) to GHCR.
  • release-pypi.yml — attempts to publish flip 0.4.1 to PyPI.

⚠️ Known blocker on the PyPI leg (not fixable in-repo)

The June release-pypi run got past tests and failed at publish with 422 invalid-publisher: PyPI trusted
publishing for the flip project does not match this repo/workflow/environment (workflow release-pypi.yml,
environment flip). Until that is configured on pypi.org the PyPI leg will keep failing. The platform release
(release.yml tag + GitHub Release + :prod images) is independent and unaffected.

Linked Issues

None — this is a release cut. Issue links live on the individual PRs promoted by #808 and on #917.

Checklist

  • Follows the project's coding conventions and style guide
  • Updates documentation — n/a, no behaviour change
  • I have added tests that prove my fix is effective or that my feature works — n/a, version strings + a CI flag
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published

Type of Change

  • Non-breaking change (fix or new feature that would not break existing functionality).
  • Breaking change (fix or new feature that would cause existing functionality to change).
  • New tests added to cover the changes.
  • In-line docstrings updated.
  • Documentation updated, tested make -C docs/ docs.

Testing

Verification carried out on #917 before it merged to develop:

  • uv lock --check passes on all five re-locked projects (uv 0.11.16 — CI's pinned version).
  • flip-utils: ruff check clean; pytest -vv without -s: 653 passed.
  • Changes are version-string-only otherwise; the full suite runs on this PR (every PR runs the whole roster,
    no path filtering).

Additional Notes

develop shows as 3 commits behind main — those are the main-only merge commits from PRs #531, #654 and
#808. That is the normal shape of this repo's release flow (main is never merged back into develop) and
does not conflict; GitHub reports the PR as mergeable.

Ignore the version in the release-notes preview comment below — it says v0.4.1, which is wrong.
pr-release-notes-preview.yml reads flip-utils/flip/__init__.py (the PyPI package version) instead of the
root pyproject.toml that release.yml actually tags from, so it is previewing flip-utils, not the platform
release. The release this PR cuts is v0.4.0. The same comment's empty changelog is a second, separate
fault: the workflow grants itself contents: read, but releases/generate-notes needs contents: write, so
the API call fails with Resource not accessible by integration and the template renders unpopulated. Both
faults pre-date this PR — the preview on #808 likewise announced 0.4.0 for what was cut as v0.3.0.

atriaybagur and others added 4 commits August 6, 2026 16:27
With capture disabled, the flip-utils suite crashes at interpreter exit in
CI (OSError: [Errno 9] Bad file descriptor on sys.stdout.flush, exit code
120) after every test has passed, killing the release job before publish.
Run pytest with default capture; verified locally: 653 passed.

Signed-off-by: at24_bioeng625-pc <alexandre.triay_bagur@kcl.ac.uk>
Root and changed services go to 0.4.0 (flip-api, flip-ui, imaging-api,
data-access-api); trust-api to 0.3.1 (dependency updates only since
v0.3.0). flip-utils goes to 0.4.1 rather than staying at 0.4.0: that
version was never published (release-pypi has failed on every run since
June) and its v0.4.0 tag would collide with the platform release tag
that release.yml creates on the same push to main.

Signed-off-by: at24_bioeng625-pc <alexandre.triay_bagur@kcl.ac.uk>
trust-api was held at 0.3.1 in the v0.4.0 release because only its
dependencies changed since v0.3.0. Track the platform version instead so
every FLIP component reports the same version as the release tag, which
makes image tags, deployed services and support requests line up without
a per-service lookup.

Signed-off-by: Claude <noreply@anthropic.com>
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

📋 Release Notes Preview — flip v0.4.1

📦 FLIP 0.4.1 Release Notes

✨ Highlights

⚠️ Breaking Changes

🌱 New Features

🐛 Bug Fixes

📁 PRs merged in this release

⭐ Acknowledgements

A big thank you to the following contributors for their work on this release:


Could not generate changelog preview at this time.


Version: v0.4.1
Comparing: v0.3.0...v0.4.1

This preview is automatically generated and updated with each new commit pushed to this PR.

@codecov

codecov Bot commented Aug 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

atriaybagur added a commit that referenced this pull request Aug 7, 2026
The release-notes preview read flip-utils/flip/__init__.py, but flip-utils
ships to PyPI as `flip` and is versioned independently of the platform, so
the preview described a different artefact than the one being released.
Read the root pyproject.toml instead, exactly as release.yml does when it
mints the tag. The two most recent release PRs both announced the wrong
number: #924 said v0.4.1 for a v0.4.0 cut, #808 said v0.4.0 for v0.3.0.

The changelog section never rendered either. generate-notes requires
contents:write and the workflow granted contents:read, so every call
failed with "Resource not accessible by integration" and the comment fell
back to bare template text. Override to contents:write at the job level,
matching release.yml, and keep the workflow default read-only.

That fallback is why this survived two releases unnoticed: it read as an
empty release rather than a broken workflow. Report the API error through
core.warning and in the comment body so the next failure is legible.

Signed-off-by: at24_bioeng625-pc <alexandre.triay_bagur@kcl.ac.uk>
@atriaybagur
atriaybagur merged commit c55f79e into main Aug 7, 2026
72 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants