Skip to content

fix(release): keep the core-operations version in sync - #1717

Merged
erni-a merged 3 commits into
caura-ai:mainfrom
miyannishar:fix/release-please-core-operations-version
Oct 11, 2026
Merged

erni-a merged 3 commits into
caura-ai:mainfrom
miyannishar:fix/release-please-core-operations-version

Conversation

@miyannishar

@miyannishar miyannishar commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Add core-operations (pyproject + uv.lock) to release-please extra-files, as #1213 did for the other services, and sync it to 3.20.1.

Related Issue

Closes #716

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that changes existing behavior)
  • Documentation update
  • Refactor / internal cleanup
  • Other:

How Has This Been Tested?

core-operations: ruff, mypy, uv lock --check, pytest (90 passed). All eight backend version files resolve to 3.20.1.

Checklist

  • I have read CONTRIBUTING.md
  • I have added tests that cover my changes (or explained why none are needed): config only
  • ruff check and ruff format --check pass
  • mypy passes
  • pytest passes locally: core-operations suite only
  • I have updated relevant documentation (README, docs, etc.): RELEASING.md
  • I have updated CHANGELOG.md under the Unreleased section (if user-facing): N/A, generated by release-please

Additional Notes

N/A

@miyannishar
miyannishar requested a review from a team as a code owner September 24, 2026 17:50

@erni-a erni-a left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @miyannishar, the extra-files entries are exactly the shape #1213 used and RELEASING.md now lists the service. One number to change before merge: main has moved to 3.19.2 since you branched (core-api/pyproject.toml is the reference), so please set core-operations/pyproject.toml and its uv.lock entry to 3.19.2 rather than 3.19.0, so all four services carry the same version when release-please next bumps them. Push that and I will approve the CI run and merge the same day.

@miyannishar

Copy link
Copy Markdown
Contributor Author

Thanks! Bumped core-operations to 3.19.2 and merged main in, which also picks up #1719 so the mypy failure on core-storage-api should be gone now. All eight version files match the manifest.

@miyannishar

Copy link
Copy Markdown
Contributor Author

@erni-a main shipped 3.20.1 since my last push, so I bumped core-operations to 3.20.1 and merged main again. CI was green on the previous commit. If you get a chance to merge before the next release that'd be great, otherwise it'll drift again. Thanks!

@miyannishar

Copy link
Copy Markdown
Contributor Author

Small heads up @erni-a: the release PR #1738 is still open. If this one goes in first, release-please will bump core-operations to 3.20.2 along with the other services, which is kind of the whole point of the fix. If #1738 lands first I'll just bump it again, no big deal.

erni-a
erni-a previously approved these changes Oct 2, 2026
eldad-caura-ai added a commit that referenced this pull request Oct 7, 2026
#1983)

Fixes part 1 of **M-01** from the 2026-10-01 OSS audit.

## Every service lock is checked

Each service image installs its own `uv.lock` as it stands (`uv export
--frozen`), while CI tests the pyproject ranges, resolved afresh, and
nothing checked that a lock still matched its pyproject. A pyproject
edit made without a re-lock passed CI and was missing from the image.

- **The check:** the CI job now runs `uv lock --check --directory
<service>` for all four services, before it installs anything, and names
every stale lock in one error. `uv lock --check` fails when re-locking
would change the lock; it exists since uv 0.5.8, and CI runs 0.9.26.
- **Main passes it today**, as far as reading the files can tell: in all
four locks, the requirements, extras, dependency groups, Python range
and version they recorded match their pyprojects, before and after
release #1980.
- **Bots keep the locks in step:** release-please bumps each service's
version in its `uv.lock` with its `pyproject.toml` (#1717
does the same for core-operations), Dependabot's uv updates re-lock, and
its pip updates touch only the root `requirements.txt`.

## core-worker's image is built

No workflow built core-worker's image, the write path in deferred mode.
The image job ("core-api image bakes a real version") now builds it and
runs `python -c "import uvicorn, core_worker.app"` inside it: the app
its CMD serves, from what the image installed. In CI's shared venv
another service's dependency can stand in for one core-worker never
declared; in the image it cannot.

The import needs no environment: every setting has a default, `ddtrace`
is imported under `try/except ImportError`, and the event bus and
storage client start only in the app's lifespan. Every other third-party
module the app loads at import is a declared core-worker dependency.

## Tests

`tests/test_m01_every_lock_is_checked_and_every_image_built.py` fails
when a service's `uv.lock` is not named in a ci.yml step that runs `uv
lock --check`, or a service's Dockerfile is not built by a ci.yml
`docker build`. A guard checks that the scans find all four services,
and the core-api image build.

| Push | Run | Result |
|---|---|---|
| Tests alone (46383fe) |
[37622734288](https://github.com/caura-ai/caura/actions/runs/37622734288)
| Failed exactly the 2 new cases: no ci.yml step checked any of the four
locks, and no `docker build` built core-worker's Dockerfile. The guard
and 9,654 other tests passed. The first push (46383fe) had stopped at
the root-tests ruff check (SIM300) before the tests ran; the amend
flipped two comparisons. |
| Fix added (1e9036f) |
[37624349643](https://github.com/caura-ai/caura/actions/runs/37624349643)
| This PR's checks |

## Not in this PR

- **Part 2 of M-01**, CI installing from the service locks, waits on
aligning SQLAlchemy: core-api's lock pins 2.0.50 and core-storage-api's
2.1.0.
- **L-01**, making the image job a required check, is a
branch-protection setting.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: eldad-caura <eldad@caura.ai>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
release-please-config.json listed the pyproject.toml and uv.lock of
core-api, core-worker and core-storage-api as extra-files, but not
core-operations, so its version stayed at 1.0.0 while the backend
release moved on to 3.19.0.

Add core-operations/pyproject.toml and its editable uv.lock entry,
using the same shape caura-ai#1213 introduced for the other services, bring
both to the current release version, and list them in RELEASING.md.

Closes caura-ai#716.

Signed-off-by: Nishar <nishar@dayos.com>
@erni-a
erni-a force-pushed the fix/release-please-core-operations-version branch from 8e75bb1 to 6dc39ff Compare October 11, 2026 13:34
@erni-a

erni-a commented Oct 11, 2026

Copy link
Copy Markdown
Contributor

@miyannishar I rebased your branch onto current main (one commit, still authored and signed by you) so it could merge: core-operations synced to 3.30.6, which is where main is today, and RELEASING.md resolved against #1987's rewrite of that section. tests/test_l90_release_docs_match_release_please.py passes, so the doc and the release-please config agree. On the release-PR interplay you flagged: release-please will simply bump core-operations with the other three from here on, which is the point of the change. Merging once CI is green. Thanks for the patience on this one.

@erni-a erni-a left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-approving after the rebase. Same change as approved on Sept 27 and Oct 2, now one commit on current main with the version synced to 3.30.6 and the release-docs parity test passing.

@erni-a
erni-a merged commit 96a7907 into caura-ai:main Oct 11, 2026
16 checks passed
@caura-deploy-bot caura-deploy-bot Bot mentioned this pull request Oct 11, 2026
eldad-caura-ai pushed a commit that referenced this pull request Oct 11, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>backend: 3.30.7</summary>

##
[3.30.7](backend-v3.30.6...backend-v3.30.7)
(2026-10-11)


### Bug Fixes

* a bulk item's null weight gets the column default (L-97)
([#2036](#2036))
([25bc89e](25bc89e))
* **client-python:** raise CauraAPIError for non-JSON 2xx bodies
([#2013](#2013))
([d6580f7](d6580f7))
* **client-typescript:** raise CauraApiError for a non-JSON 2xx body
([#2014](#2014))
([9ba140d](9ba140d))
* **clients:** parse HTTP-date Retry-After values
([#2010](#2010))
([f575803](f575803))
* **events:** type pull_executor concretely in _hold_leases
([#1596](#1596))
([#1698](#1698))
([45dff80](45dff80))
* **release:** keep the core-operations version in sync
([#1717](#1717))
([96a7907](96a7907))
* storage answers for the database it has (B28)
([#2033](#2033))
([67a0a57](67a0a57))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Signed-off-by: release-please[bot] <release-please[bot]@users.noreply.github.com>
Co-authored-by: caura-deploy-bot[bot] <265395343+caura-deploy-bot[bot]@users.noreply.github.com>
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.

[Bug] fix(release-please): core-operations/pyproject.toml missing from release-please-config.json extra-files — version stuck at 1.0.0

2 participants