You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Update review skills and changelogs to use unreleased section (#2672)
* Update review skills and changelogs to use unreleased section
* Align with CR comments
* Versioning exceptions
---------
Co-authored-by: Paweł Pęczek <146137186+PawelPeczek-Roboflow@users.noreply.github.com>
Co-authored-by: Paweł Pęczek <pawel@roboflow.com>
Copy file name to clipboardExpand all lines: .claude/skills/add-inference-model/SKILL.md
+6-5Lines changed: 6 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -115,12 +115,13 @@ Add a package-URL constant and a `pytest.fixture(scope="module")` in `inference_
115
115
116
116
Start from loading a **local** package while experimenting, then follow up by uploading that package as a `*.zip` asset and adding a fixture that downloads it at test time, as other integration tests do.
117
117
118
-
### 5. Version + changelog companion (required)
118
+
### 5. Changelog companion (required)
119
119
120
-
Any PR that ships model code in `inference_models` must bump the package version and record the change — the sibling `review-inference-models-pkg` skill enforces this:
120
+
Any PR that ships model code in `inference_models` must record the change. The
121
+
package version is selected and bumped later by maintainers:
-Add an entry under a new version heading in `inference_models/docs/changelog.md` (follow the existing `## \`<version>\`` → `### Added` format at the top of the file).
123
+
-Add an entry under `## Unreleased`in `inference_models/docs/changelog.md`, using the appropriate `### Added`, `### Changed`, `### Fixed`, or `### Removed` subsection.
124
+
-Do not edit `inference_models/pyproject.toml` solely to bump its version.
124
125
125
126
### 6. Workflow block (surface 3, optional)
126
127
@@ -183,7 +184,7 @@ Before declaring done:
183
184
-[ ] Architecture registered in `models_registry.py`; import + class resolve without error
184
185
-[ ]`YourClass.from_pretrained(local_dir)` loads from a flat directory of files (smoke-tested)
185
186
-[ ]`inference_models` unit tests pass (from `inference_models/` cwd)
186
-
-[ ]`inference_models/pyproject.toml` version bumped + `inference_models/docs/changelog.md` entry added
187
+
-[ ]`inference_models/docs/changelog.md` entry added under `## Unreleased` (version bump left to maintainers)
187
188
-[ ] If surface 3: workflow-block unit tests pass (from repo root)
188
189
-[ ] Model packaged & registered via the internal Inference Core team tooling (staging, then production after approval) — coordinate with the team
189
190
-[ ]`AutoModel.from_pretrained("<arch>/<default>")` loads + runs once registered
Copy file name to clipboardExpand all lines: .claude/skills/create-workflow-block/SKILL.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,13 +60,13 @@ These hold regardless of category — the per-category references only add nuanc
60
60
-[ ]`type` Literal `roboflow_core/{family}@v{N}` (+ legacy alias if replacing one).
61
61
-[ ] Inputs are `Selector(kind=[...])` / `Union[literal, Selector(...)]` with rich `Field(description=, examples=)` (docs are generated from these).
62
62
-[ ]`describe_outputs()` matches every key `run()` emits — on every path (empty / error branches included).
63
-
-[ ]`get_execution_engine_compatibility()` set to the minimum EE version you rely on.
63
+
-[ ]`get_execution_engine_compatibility()` set to the TRUE minimum EE version you rely on — look up which EE version introduced each capability you use in `docs/workflows/execution_engine_changelog.md`; do not copy-paste the default range. If a capability you need is still under `## Unreleased`, the EE version must be placed and bumped first (maintainer-coordinated) so your range can reference it.
64
64
-[ ] Batch / dimensionality hooks declared if the block batches inputs or changes nesting level.
65
65
-[ ] Registered in `core_steps/loader.py` (`load_blocks()`); any new kind in `types.py` + `load_kinds()` + a serializer/deserializer pair.
-[ ] Stateful block: state keyed by `video_identifier` + evicted; `get_restrictions()` declared; `NotImplementedError` on `StepExecutionMode.REMOTE` if remote is incoherent.
68
68
-[ ] Unit test under `tests/workflows/unit_tests/core_steps/...` + integration test under `tests/workflows/integration_tests/execution/...`.
69
-
-[ ]Bump `EXECUTION_ENGINE_V1_VERSION` +`docs/workflows/execution_engine_changelog.md` ONLY if the EE itself changed (no `inference/core/version.py` bump — that is handled at release time).
69
+
-[ ]If the EE itself changed, add its user-facing entry under `## Unreleased` in`docs/workflows/execution_engine_changelog.md`; maintainers bump the EE versionat release time.
70
70
-[ ] Do NOT hand-write `docs/workflows/blocks/<block>.md` — it is generated from manifest field descriptions.
71
71
72
72
Reviewer's checklist for block PRs: `review-workflows-blocks`.
@@ -85,7 +85,7 @@ Rules from `docs/workflows/versioning.md` and `docs/workflows/blocks_bundling.md
85
85
86
86
-**Bug-fix in place; anything else is a new version.** Only patch the existing `vN.py` for bug fixes. Behavioral/interface changes create `v(N+1).py` in a new module under the block package — **stability over DRY**; code duplication is accepted and blocks stay independent.
87
87
-**Type identifiers & aliases.** Convention `{plugin}/{block_family}@v{X}` (e.g. `roboflow_core/detection_offset@v1`). The `type``Literal` may list a legacy alias (`"DetectionOffset"`) so old definitions keep parsing.
88
-
-**EE compatibility.** Every manifest returns a semver range from `get_execution_engine_compatibility()`; if a block needs a feature added in `1.3.7`, declare `">=1.3.7,<2.0.0"`. A definition's `version: 1.1.0` resolves to `>=1.1.0,<2.0.0`. History: `docs/workflows/execution_engine_changelog.md`.
88
+
-**EE compatibility.** Every manifest returns a semver range from `get_execution_engine_compatibility()`; if a block needs a feature added in `1.3.7`, declare `">=1.3.7,<2.0.0"` — derive the floor from the changelog, never copy-paste the default. A feature still under `## Unreleased` has no version to declare against: the EE version must be placed and bumped (maintainer-coordinated) before the block ships. A definition's `version: 1.1.0` resolves to `>=1.1.0,<2.0.0`. History: `docs/workflows/execution_engine_changelog.md`.
89
89
-**Plugin layout & the `__init__.py` requirement.** A plugin is a Python package: `{plugin}/{block_name}/v1.py` per block, plus a main `__init__.py` exposing `load_blocks()` (required), optionally `load_kinds()`, `REGISTERED_INITIALIZERS`, and `KINDS_SERIALIZERS`/`KINDS_DESERIALIZERS`. See `docs/workflows/blocks_bundling.md`.
Copy file name to clipboardExpand all lines: .claude/skills/review-cli-cloud-tooling/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -80,7 +80,7 @@ Two distinct cloud surfaces live here — do not conflate them:
80
80
-**Tests** — logic changes need unit tests under `tests/inference_cli/unit_tests/lib/...` mirroring the source tree; user-visible changes update integration tests under `tests/inference_cli/integration_tests/`. (#891 updated both.)
81
81
-**CI deps** — new runtime imports must be covered by the unit-test CI install list; `inference` is an optional dep, so new deps typically belong in `requirements/requirements.cli.txt`.
82
82
-**Docs** — user-facing command/option changes update `docs/inference_helpers/cli_commands/{benchmark,cloud,workflows,infer,server}.md`. Batch-processing API swagger is exposed externally - tag @Erol444.
83
-
-**Enterprise / inference_models** — inference-compiler PRs (#2186) also touch `inference_models/pyproject.toml`, `inference_models/docs/changelog.md`, and weights-provider code — verify they move together.
83
+
-**Enterprise / inference_models** — inference-compiler PRs (#2186) also touch weights-provider code and must add user-facing changes under `## Unreleased` in `inference_models/docs/changelog.md`; apply `review-inference-models-pkg` to any `pyproject.toml` dependency changes, but do not ask the contributor for a version bump.
Copy file name to clipboardExpand all lines: .claude/skills/review-inference-models-pkg/SKILL.md
+16-4Lines changed: 16 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ OUT of scope (defer to sibling skills): `inference/core/**` model adapters, work
16
16
## Review checklist
17
17
Severity tags: **BLOCK** = must fix before merge; **FLAG** = raise it; **NIT** = optional.
18
18
19
-
1.**BLOCK** — Functional change but no version bump in `inference_models/pyproject.toml` (`version = "0.29.x"`) OR no `docs/changelog.md` entry. See *Required companions*.
19
+
1.**BLOCK** — Functional change but no entry under `## Unreleased`in `inference_models/docs/changelog.md`. Do not ask the contributor to bump a version. See *Required companions*.
20
20
2.**BLOCK** — Deps changed in `pyproject.toml` but `uv.lock` not regenerated, or shared server deps not mirrored into `requirements/*.txt`.
21
21
3.**BLOCK** — New model/backend not registered in `REGISTERED_MODELS`, or missing `from_pretrained(**kwargs)`, resolvable `LazyClass`, integration tests, or `docs/models/*`. See *Standards §1–2*.
22
22
4.**BLOCK** — Prediction-entity field shape/semantics (`xyxy`/`class_id`/`confidence`/`mask`) changed non-additively, or a backend / `to_supervision()` / `docs/api-reference/*` left un-updated. See *Standards §3*.
@@ -32,7 +32,8 @@ Severity tags: **BLOCK** = must fix before merge; **FLAG** = raise it; **NIT** =
32
32
33
33
### Not blocking
34
34
- Do NOT demand a **speed-verification** or **prediction-correctness** artefact from the diff — those live in the PR description / attached evidence, not the tree (see *Required companions*). Confirm they were provided; do not block on their absence from the diff.
35
-
- Do NOT block a doc-only, changelog-only, or test-only PR for a missing version bump.
35
+
- Do NOT block a doc-only or test-only PR for a missing changelog entry.
36
+
- Do NOT ask contributors to change `inference_models/pyproject.toml` or `inference/core/version.py`; maintainers version releases separately.
36
37
- Do NOT treat a `supervision`-constructor guard as an inference_models concern — that guard lives in the workflows viz block (#2467); on this surface #2467 was only additive `keypoints_detection.py` enrichment.
37
38
- Do NOT block a clean **revert** (#2241, #2087) for removing registry/CI/deps/changelog together — that is the correct rollback shape.
38
39
@@ -61,9 +62,10 @@ Severity tags: **BLOCK** = must fix before merge; **FLAG** = raise it; **NIT** =
61
62
11.**Tolerant test assertions.** New integration/e2e/GPU assertions use tolerant comparisons (`>=`, loosened tolerance), not exact box-count/class-set equality, which flakes on GPU/ONNX (#2026, #1646, #1649, #1809, #1638, #1843). Keypoint/segmentation slicing uses model-declared slot counts, not `-1` inference (#1626 broke multi-class keypoints with `5 + num_classes` / `view(..., -1, 3)`; fix uses fixed `6:` offset + `_key_points_slots_in_prediction`).
62
63
63
64
## Required companions
64
-
Block a functional change unless it carries these (condition → required file):
65
+
Block a functional change unless it carries these contributor-owned companions
66
+
(condition → required file):
65
67
66
-
-**Any functional change** → version bump in `inference_models/pyproject.toml` AND a `docs/changelog.md` entry under a new `` ## `{version}` `` heading with `Added`/`Fixed`/`Changed`. (No `inference/core/version.py` bump — inference releases are versioned separately.)
68
+
-**Any functional change** → an entry under `## Unreleased` in `inference_models/docs/changelog.md`, using `Added`/`Changed`/`Fixed`/`Removed` as appropriate.
67
69
-**`pyproject.toml` deps changed** → `inference_models/uv.lock` regenerated (`uv sync`); shared server deps also mirrored into `requirements/*.txt` (#2047, #2449 security bumps, #2415/#2510 dep updates).
-**New model** → `REGISTERED_MODELS` entry + `docs/models/<model>.md` + a license file for the model-family dir, listed in `docs/models/index.md`.
@@ -76,6 +78,16 @@ Non-diff-checkable — **verify via the PR description / attached evidence, not
76
78
-**Speed verification** → new-model contributions must attach speed evidence on NVIDIA L4 GPU and MacBook (MacBook optional if unsupported), comparing our implementation vs. the original. Absence blocks approval.
77
79
-**Prediction correctness** → new or substantial model changes must show predictions are reasonable — ideally integration tests asserting meaningful prediction qualities; for modifications, existing tests suffice or manual evidence against the unchanged code. Absence blocks approval.
78
80
81
+
## Release notice
82
+
83
+
For every functional `inference_models` change, add a non-blocking top-level
84
+
review notice addressed to maintainers: **inference-models requires a version
85
+
bump for release**. This notice is required even when the contributor supplied
86
+
the changelog entry. Maintainers choose the version, update
87
+
`inference_models/pyproject.toml` and related lock-step pins/lockfiles, move the
88
+
entries into the final version section, and leave a fresh `## Unreleased`
Copy file name to clipboardExpand all lines: .claude/skills/review-packaging-ci/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -67,9 +67,9 @@ OUT of scope (defer): library/business logic under `inference/`, `inference_mode
67
67
68
68
## Required companions
69
69
Block the PR if a change lacks its companion:
70
-
-**Release PR** ("Release X.Y.Z") → bump `inference/core/version.py``__version__` AND `inference_models/pyproject.toml``version` AND `inference_models/uv.lock` AND all 4 `inference-models~=` pins. RC→final drops the `rc` suffix in every place (#2341).
70
+
-**Release PR** ("Release X.Y.Z") → bump `inference/core/version.py``__version__` AND `inference_models/pyproject.toml``version` AND `inference_models/uv.lock` AND all 4 `inference-models~=` pins, then amend `inference_models/docs/changelog.md` by replacing `## Unreleased` with the released version heading and adding a fresh `## Unreleased` section. RC→final drops the `rc` suffix in every place (#2341).
71
71
-**`inference-models` bump anywhere** → the other 3 requirements files + `pyproject.toml` + `uv.lock`. Never one-of-four (#2341).
72
-
-**`inference_models/pyproject.toml` dep add/bump** → regenerated `inference_models/uv.lock` in the same PR (#2301) + an `inference_models/docs/changelog.md` entry under the new `## \`X.Y.Z\`` header for user-facing changes.
72
+
-**`inference_models/pyproject.toml` dep add/bump** → regenerated `inference_models/uv.lock` in the same PR (#2301) + an `inference_models/docs/changelog.md` entry under `## Unreleased` for user-facing changes.
73
73
-**New Docker image target** → its `.github/workflows/docker.<name>.yml` + Dockerfile + (if published) publish script + `permissions:`. Removing a target removes all of these (#2149).
74
74
-**New PyPI wheel / requirements group** → wire into `.release/pypi/*.setup.py` and/or `Makefile:create_wheels` and the relevant `test_package_install_*.yml`.
75
75
-**New runtime dep** → correct `requirements/*.txt` AND every Dockerfile target that uses it (system libs via `apt/dnf`, e.g. `libvips`#1209, `rustc`#975).
0 commit comments