Skip to content

refactor(api)!: move the API group to blockstor.org - #221

Merged
Andrei Kvapil (kvaps) merged 2 commits into
mainfrom
refactor/api-group-blockstor-org
Nov 12, 2026
Merged

Andrei Kvapil (kvaps) merged 2 commits into
mainfrom
refactor/api-group-blockstor-org

Conversation

@kvaps

@kvaps Andrei Kvapil (kvaps) commented Oct 24, 2026 •

Copy link
Copy Markdown
Member

Moves the API group from blockstor.cozystack.io to blockstor.org, and the label and annotation keys from blockstor.io/ to blockstor.org/. The project is meant to stand on its own, under the domain it publishes its site on, and the group is the one name that cannot change cheaply once clusters carry objects under it. Nothing runs on it yet, so it moves now, with no migration.

What moves:

  • every kind, to blockstor.org/v1alpha1: the CRDs (regenerated, one file per kind under the new name), the RBAC markers and roles, the samples and the stand manifests;
  • the finalizers, the resize-pending annotation, and the scrubber that keeps the group off the LINSTOR wire;
  • the e2e and cli-matrix scripts, the replay harness and the docs;
  • the controller's leader-election lease;
  • every label and annotation key: the original-name annotation, the replica and pool label index, the controller's bookkeeping annotations, the unapplied-group-layer-stack annotation and the topology.blockstor.org/ labels synced from Kubernetes nodes.

The LINSTOR migrator stamps apiVersion from the scheme, so the objects it writes come out under the new group; its golden manifests say so.

Two strings keep the old spelling on purpose: the seed of the stable node UUIDs, which is a hash input, not the group, and must not change, and the history in CHANGELOG.md and dated audit notes.

cozystack/cozystack#2942 follows the group in its chart and tests.

Breaking change

The API group is blockstor.org, and so are the label and annotation keys. A cluster running a build from before this has to be reinstalled: objects under blockstor.cozystack.io and keys under blockstor.io/ are not read.

Testing

  • The regenerated CRDs differ from the old ones in the group alone.
  • go test ./... with envtest assets, including the migrator's golden manifests: green.
  • make lint: clean.
  • Not run on a stand.

@coderabbitai

coderabbitai Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 286 files, which is 186 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7f1cf7b6-d481-4c9e-baa8-cb973e3870c2
Commits

Reviewing files that changed from the base of the PR and between 2c3c095 and 660ec3b.

Files selected for processing: 286

  • .work-u3-stand-validate.sh
  • PROJECT
  • api/v1alpha1/groupversion_info.go
  • api/v1alpha1/physicaldevice_types.go
  • api/v1alpha1/printcolumns_test.go
  • api/v1alpha1/resource_types.go
  • api/v1alpha1/snapshot_types.go
  • api/v1alpha1/storagepool_types.go
  • cmd/apiserver/main.go
  • cmd/controller/main.go
  • cmd/linstor-migrate/main.go
  • cmd/satellite/coldstart_owned_test.go
  • config/crd/bases/blockstor.org_controllerconfigs.yaml
  • config/crd/bases/blockstor.org_nodes.yaml
  • config/crd/bases/blockstor.org_physicaldevices.yaml
  • config/crd/bases/blockstor.org_resourcedefinitions.yaml
  • config/crd/bases/blockstor.org_resourcegroups.yaml
  • config/crd/bases/blockstor.org_resources.yaml
  • config/crd/bases/blockstor.org_snapshots.yaml
  • config/crd/bases/blockstor.org_storagepools.yaml
  • config/crd/kustomization.yaml
  • config/rbac/node_admin_role.yaml
  • config/rbac/node_editor_role.yaml
  • config/rbac/node_viewer_role.yaml
  • config/rbac/resource_admin_role.yaml
  • config/rbac/resource_editor_role.yaml
  • config/rbac/resource_viewer_role.yaml
  • config/rbac/resourcedefinition_admin_role.yaml
  • config/rbac/resourcedefinition_editor_role.yaml
  • config/rbac/resourcedefinition_viewer_role.yaml
  • config/rbac/resourcegroup_admin_role.yaml
  • config/rbac/resourcegroup_editor_role.yaml
  • config/rbac/resourcegroup_viewer_role.yaml
  • config/rbac/role.yaml
  • config/rbac/satellite_role.yaml
  • config/rbac/snapshot_admin_role.yaml
  • config/rbac/snapshot_editor_role.yaml
  • config/rbac/snapshot_viewer_role.yaml
  • config/rbac/storagepool_admin_role.yaml
  • config/rbac/storagepool_editor_role.yaml
  • config/rbac/storagepool_viewer_role.yaml
  • config/samples/blockstor.cozystack.io_v1alpha1_node.yaml
  • config/samples/blockstor.cozystack.io_v1alpha1_resource.yaml
  • config/samples/blockstor.cozystack.io_v1alpha1_resourcedefinition.yaml
  • config/samples/blockstor.cozystack.io_v1alpha1_resourcegroup.yaml
  • config/samples/blockstor.cozystack.io_v1alpha1_snapshot.yaml
  • config/samples/blockstor.cozystack.io_v1alpha1_storagepool.yaml
  • config/samples/kustomization.yaml
  • docs/cli-parity-known-deltas.md
  • docs/layer-stack.md
  • docs/linstor-migration.md
  • docs/usage.md
  • internal/cli/volume_sizes_test.go
  • internal/controller/auto_diskful_controller.go
  • internal/controller/auto_diskful_test.go
  • internal/controller/autosnapshot_controller.go
  • internal/controller/autosnapshot_controller_test.go
  • internal/controller/autosnapshot_stamp_conflict_test.go
  • internal/controller/cel_naming_admission_test.go
  • internal/controller/drift_bug_148_149_test.go
  • internal/controller/ensure_tiebreaker_burst_bug_153_test.go
  • internal/controller/ensure_tiebreaker_race_bug130_test.go
  • internal/controller/ensure_tiebreaker_test.go
  • internal/controller/eviction_test.go
  • internal/controller/name_key_test.go
  • internal/controller/node_controller.go
  • internal/controller/node_label_sync_controller.go
  • internal/controller/node_label_sync_test.go
  • internal/controller/rd_reconcile_test.go
  • internal/controller/resource_controller.go
  • internal/controller/resource_migration_controller.go
  • internal/controller/resource_state_projection_controller.go
  • internal/controller/resourcedefinition_controller.go
  • internal/controller/resourcegroup_controller.go
  • internal/controller/rg_rebalance_controller.go
  • internal/controller/rg_rebalance_spawn_shortfall_test.go
  • internal/controller/rg_rebalance_strip_bug021_test.go
  • internal/controller/snapshot_bug_353_test.go
  • internal/controller/snapshot_controller.go
  • internal/controller/storagepool_controller.go
  • pkg/api/v1/annotations.go
  • pkg/api/v1/node.go
  • pkg/api/v1/physical_device.go
  • pkg/api/v1/props.go
  • pkg/api/v1/resource_definition.go
  • pkg/api/v1/resource_group.go
  • pkg/api/v1/snapshot.go
  • pkg/linstormigrate/convert.go
  • pkg/linstormigrate/model.go
  • pkg/linstormigrate/testdata/golden/manifests.yaml
  • pkg/placer/placer.go
  • pkg/placer/placer_test.go
  • pkg/rest/api_call_rc.go
  • pkg/rest/autoplace.go
  • pkg/rest/autoplace_test.go
  • pkg/rest/cache_invalidation.go
  • pkg/rest/encryption.go
  • pkg/rest/input_validation.go
  • pkg/rest/internal_annotations.go
  • pkg/rest/internal_annotations_test.go
  • pkg/rest/nodes.go
  • pkg/rest/peer_changed_bump_bug_263_test.go
  • pkg/rest/peer_delete_sync.go
  • pkg/rest/resource_adjust_conflict_test.go
  • pkg/rest/resource_definitions.go
  • pkg/rest/resource_definitions_test.go
  • pkg/rest/resource_groups.go
  • pkg/rest/resource_groups_test.go
  • pkg/rest/resources.go
  • pkg/rest/server.go
  • pkg/rest/snap_multi_scrub_bug_200_test.go
  • pkg/rest/snapshot_multi.go
  • pkg/rest/snapshots.go
  • pkg/rest/volume_definitions.go
  • pkg/rest/volume_definitions_bug_136_139_140_test.go
  • pkg/rest/write_store_error_bug_162_164_test.go
  • pkg/rest/writeerror_scrub_bug_199_test.go
  • pkg/satellite/controllers/bug_399_volume_evict_test.go
  • pkg/satellite/controllers/observer.go
  • pkg/satellite/controllers/physicaldevice.go
  • pkg/satellite/controllers/physicaldevice_test.go
  • pkg/satellite/controllers/resource.go
  • pkg/satellite/controllers/resource_test.go
  • pkg/satellite/controllers/snapshot.go
  • pkg/satellite/controllers/storage_sweeper.go
  • pkg/satellite/controllers/storagepool.go
  • pkg/satellite/controllers/sweeper.go
  • pkg/satellite/controllers/sweeper_test.go
  • pkg/store/k8s/crdname.go
  • pkg/store/k8s/deleting_flag_internal_test.go
  • pkg/store/k8s/k8s.go
  • pkg/store/k8s/list_by_definition_mixed_label_bug038_test.go
  • pkg/store/k8s/nodes.go
  • pkg/store/k8s/patch_bug_210_test.go
  • pkg/store/k8s/resource_definitions.go
  • pkg/store/k8s/resource_groups_bug57_test.go
  • pkg/store/k8s/resources.go
  • pkg/store/k8s/snapshots.go
  • pkg/store/k8s/spellings.go
  • pkg/store/k8s/topology_labels_test.go
  • pkg/store/k8s/typed_field_carry_across_test.go
  • pkg/store/patch_copy_test.go
  • pkg/store/storetest/annotation_contract.go
  • site/content/en/docs/architecture.md
  • site/content/en/docs/layer-stack.md
  • site/content/en/docs/operations.md
  • site/content/en/docs/resources.md
  • site/content/en/docs/troubleshooting.md
  • stand/blockstor-apiserver-deploy.yaml
  • stand/blockstor-deploy.yaml
  • stand/blockstor-satellite-daemonset.yaml
  • stand/blockstor-storagepools.yaml
  • stand/install-blockstor.sh
  • stand/iter.sh
  • stand/run-scenarios-only.sh
  • tests/burnin-blockstor.sh
  • tests/drbd-troubleshooting-scenarios.md
  • tests/e2e/affinity-controller.sh
  • tests/e2e/auto-diskful.sh
  • tests/e2e/backup-restore-identity.sh
  • tests/e2e/cli-matrix/auto-diskful-evicted-node.sh
  • tests/e2e/cli-matrix/bug-278-skipdisk-autoclear-after-reattach.sh
  • tests/e2e/cli-matrix/lib.sh
  • tests/e2e/cli-matrix/luks-autoplace-encrypted.sh
  • tests/e2e/cli-matrix/n-d-evicted-rejected.sh
  • tests/e2e/cli-matrix/n-evict-tiebreaker-no-shuffle.sh
  • tests/e2e/cli-matrix/n-rst-recreates-tiebreaker.sh
  • tests/e2e/cli-matrix/r-activate-deactivate-lifecycle.sh
  • tests/e2e/cli-matrix/r-c-autoplace-3r.sh
  • tests/e2e/cli-matrix/r-c-autoplace-plus-one-over-tb.sh
  • tests/e2e/cli-matrix/r-c-no-drbd-multi-place-rejected.sh
  • tests/e2e/cli-matrix/r-c-no-drbd-no-tiebreaker.sh
  • tests/e2e/cli-matrix/r-c-on-shape-2r-tb.sh
  • tests/e2e/cli-matrix/r-c-over-tiebreaker-skip-sync.sh
  • tests/e2e/cli-matrix/r-d-collapses-tiebreaker.sh
  • tests/e2e/cli-matrix/r-d-inactive-no-tiebreaker.sh
  • tests/e2e/cli-matrix/r-d-last-uptodate-midsync-rejected.sh
  • tests/e2e/cli-matrix/r-d-then-r-c-stuck.sh
  • tests/e2e/cli-matrix/r-deactivate-drops-peer-from-res.sh
  • tests/e2e/cli-matrix/r-full-lifecycle.sh
  • tests/e2e/cli-matrix/r-inactive-refills-active-redundancy.sh
  • tests/e2e/cli-matrix/r-l-conns-shapes.sh
  • tests/e2e/cli-matrix/r-td-diskless-reaps-tiebreaker.sh
  • tests/e2e/cli-matrix/r-td-diskless.sh
  • tests/e2e/cli-matrix/rd-c-layer-list-rejected.sh
  • tests/e2e/cli-matrix/rd-clone-vd-data-plane.sh
  • tests/e2e/cli-matrix/rd-d-blocked-by-snapshot.sh
  • tests/e2e/cli-matrix/rd-d-deleting-surface.sh
  • tests/e2e/cli-matrix/rg-c-overcommit-spawn-defers.sh
  • tests/e2e/cli-matrix/rg-layer-stack-pin.sh
  • tests/e2e/cli-matrix/rwx-ganesha-data-vol-mkfs.sh
  • tests/e2e/cli-matrix/snap-c-single-node-incomplete.sh
  • tests/e2e/cli-matrix/snap-create-inactive-replica-excluded.sh
  • tests/e2e/cli-matrix/snap-create-multiple-group-consistency.sh
  • tests/e2e/cli-matrix/snap-create-multiple-lifecycle.sh
  • tests/e2e/cli-matrix/snap-create-thick-pool-rejected.sh
  • tests/e2e/cli-matrix/snap-cross-node-consistency.sh
  • tests/e2e/cli-matrix/snap-full-lifecycle.sh
  • tests/e2e/cli-matrix/snap-r-rst-stamps-resources.sh
  • tests/e2e/cli-matrix/snap-restore-snapshotless-node-rejected.sh
  • tests/e2e/cli-matrix/snap-single-replica-zfs-restore-u464.sh
  • tests/e2e/cli-matrix/snap-suspend-resume-isolation-u138-u52.sh
  • tests/e2e/cli-matrix/sp-d-clears-physicaldevice-attachto.sh
  • tests/e2e/cli-matrix/sync-final-uptodate-transition.sh
  • tests/e2e/cli-matrix/toggle-disk-migrate-from.sh
  • tests/e2e/cli-matrix/toggle-disk-solo-last-copy.sh
  • tests/e2e/cli-matrix/u251-rejoin-resync-clean.sh
  • tests/e2e/cli-matrix/u268-bulk-create-converges.sh
  • tests/e2e/cli-matrix/vd-d-cascades-replicas.sh
  • tests/e2e/cli-matrix/vd-d-prune-resource-volumes-no-flap.sh
  • tests/e2e/cli-matrix/vd-resize-bounds-rejected.sh
  • tests/e2e/cli-matrix/vd-resize-full-lifecycle.sh
  • tests/e2e/cli-matrix/vd-resize-thick-lvm-grown-region-consistent.sh
  • tests/e2e/cli-matrix/vd-resize-thin-readd-grown-geometry.sh
  • tests/e2e/cli-matrix/vd-resize-with-diskless-peer.sh
  • tests/e2e/cli-matrix/vd-shrink-rejected.sh
  • tests/e2e/disk-replace-external-metadata.sh
  • tests/e2e/disk-replace-internal-metadata.sh
  • tests/e2e/drbd-luks-stack.sh
  • tests/e2e/evacuate.sh
  • tests/e2e/keep-tiebreaker-3way.sh
  • tests/e2e/lc-rd-delete-churn.sh
  • tests/e2e/lib.sh
  • tests/e2e/lifecycle-toggle-migrate.sh
  • tests/e2e/lifecycle-toggle-retry.sh
  • tests/e2e/luks-layer.sh
  • tests/e2e/network-partition.sh
  • tests/e2e/no-drbd.sh
  • tests/e2e/node-replace-hardware.sh
  • tests/e2e/observability-capacity-correlation.sh
  • tests/e2e/observability-destructive-walk.sh
  • tests/e2e/observability-linstor-node-bridge.sh
  • tests/e2e/quorum-loss-2tb-recovery.sh
  • tests/e2e/quorum-loss-recovery.sh
  • tests/e2e/quorum-tiebreaker-no-return.sh
  • tests/e2e/rd-name-length-48.sh
  • tests/e2e/rd-name-validation-bulk.sh
  • tests/e2e/recovery-auto-place-real-drbd.sh
  • tests/e2e/recovery-bitmap-drop.sh
  • tests/e2e/recovery-deleting-convert.sh
  • tests/e2e/recovery-discard-my-data.sh
  • tests/e2e/recovery-inconsistent-blocking.sh
  • tests/e2e/recovery-node-id-mismatch.sh
  • tests/e2e/recovery-poolmissing-real-zfs.sh
  • tests/e2e/recovery-port-collision.sh
  • tests/e2e/recovery-primary-force.sh
  • tests/e2e/recovery-quorum-persistence.sh
  • tests/e2e/recovery-setgi-per-peer.sh
  • tests/e2e/recovery-stuck-synctarget-down-up.sh
  • tests/e2e/recovery-stuck-synctarget.sh
  • tests/e2e/recovery-suspended-quorum.sh
  • tests/e2e/replica-add-no-resync.sh
  • tests/e2e/resize-luks.sh
  • tests/e2e/resize-no-drbd.sh
  • tests/e2e/rolling-upgrade.sh
  • tests/e2e/rwx-ganesha.sh
  • tests/e2e/skip-init-sync-offline-holder.sh
  • tests/e2e/snap-ship-cross-node.sh
  • tests/e2e/split-brain-recovery.sh
  • tests/e2e/state-auto-resync.sh
  • tests/e2e/state-offline-unknown.sh
  • tests/e2e/state-standalone-partition.sh
  • tests/e2e/storage-error-injection.sh
  • tests/e2e/storage-external-drbd-meta.sh
  • tests/e2e/tiebreaker-promote-clears-flag.sh
  • tests/e2e/tiebreaker-r-d-cleanup.sh
  • tests/e2e/tiebreaker-r-d-r-c-other-node.sh
  • tests/e2e/tiebreaker.sh
  • tests/e2e/toggle-disk.sh
  • tests/e2e/two-primaries-live-migration.sh
  • tests/e2e/two-volume-rd.sh
  • tests/e2e/vd-volume-number-validation.sh
  • tests/e2e/zfs-clone-source-delete.sh
  • tests/integration/group_c_test.go
  • tests/integration/group_d_test.go
  • tests/integration/group_f_test.go
  • tests/integration/group_g_test.go
  • tests/integration/group_k_test.go
  • tests/integration/harness/fixtures.go
  • tests/integration/resource_listbynode_test.go
  • tests/integration/vd_size_ratchet_test.go
  • tests/operator-harness/lib.sh
  • tests/operator-harness/replay/rg-layer-stack-pin.yaml
  • tests/operator-harness/replay/vd-d-prune-resource-volumes-no-flap.yaml
  • tests/scenarios/01-api-contract.md
  • tests/smoke-blockstor.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

The project stands on its own under the domain its site is published
on, and the API group is the one name that cannot change cheaply once
clusters carry objects under it. Nothing runs on it yet, so it moves
now, without a migration.

Every kind moves to blockstor.org/v1alpha1, and the label and
annotation keys from blockstor.io/ to blockstor.org/. The seed of the
stable node UUIDs keeps the old string: it is a hash input, and
changing it would change every node UUID.

BREAKING CHANGE: objects under blockstor.cozystack.io and keys under
blockstor.io/ are no longer read; a cluster on an earlier build has to
be reinstalled.

Assisted-by: LLM
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Andrei Kvapil (@kvaps) NOT LGTM. Please put the reinstall requirement in the site's upgrade instructions before the rollout steps. The page still tells existing installations to apply the new CRDs and roll the components, but the new controller and API server cannot read their old-group resource definitions and replicas. The PR and commit explain this boundary; the published procedure does not. The rolling-upgrade test restarts the same images, so its green result does not cover this transition.

The upgrade steps told existing installations to apply the new CRDs
and roll the components, but the new release reads neither the old API
group nor the old keys. The page now says so before the steps, and the
notes on rolling across the port and TLS change, which no longer
happens, are replaced by the reinstall.

Assisted-by: LLM
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
@kvaps

Copy link
Copy Markdown
Member Author

Fixed in 660ec3b. The upgrade section now says before the steps that v0.1.17 or earlier is reinstalled, and the old note about rolling across the port and TLS change is replaced by the reinstall, since that rollout no longer happens.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Andrei Kvapil (@kvaps) The reinstall instructions address my previous comment. Please investigate the failing integration test before merging. The current run times out in TestGroupKWFHappyPath waiting for Snapshot wf-happy.snap-1. I have not established whether the API-group change causes this failure.

@IvanHunters IvanHunters left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Verdict

LGTM with non-blocking notes

A mechanical, near-symmetric rename of the API group (blockstor.cozystack.io to blockstor.org) and the label/annotation keys (blockstor.io/ to blockstor.org/), +989/-992 across 286 files. I checked it for completeness and consistency rather than reading every file, and both hold.

What I checked

The rename is complete, and the only old-group strings left are the ones the PR keeps on purpose. A tree-wide grep for the old group leaves exactly seven hits: the dated audit note docs/zfs-thick-validation-2026-05-14.md (history), site/content/en/docs/operations.md:219 (it has to name the old group to describe the migration), and pkg/api/v1/node.go:218,226, the node-UUID hash seed, which is a hash input rather than the group and now carries a comment saying exactly that. The single residual blockstor.io/ is that same operations doc. Nothing dangling is left for a reader or a writer to miss.

The one functional coupling got handled, and actually tightened. pkg/rest/internal_annotations.go is the wire scrubber that keeps controller-private annotations off the REST boundary. Before this change its canonical prefix (blockstor.io/) and its per-bug suffix (.blockstor.cozystack.io/) sat on two different domains; the rename collapses both onto blockstor.org/ and .blockstor.org/. The matching logic is unchanged (HasPrefix for the canonical namespace, Index(...) > 0 for the <ns>.blockstor.org/ scratch pattern), so producer and consumer stay paired.

The only edit that is not a string swap is the leader-election lease, a3f89427.cozystack.io becoming a3f89427.blockstor.org in cmd/controller/main.go:176, a single reference with no stale name anywhere else. The rest outside the swap is gofmt realignment from the changed key lengths plus the one added seed comment.

CI is green on the reviewed head 660ec3b: Unit, Integration, Contract, every E2E lane, piraeus interop, lint, DCO and the license checks. The Contract and interop jobs are the independent signal that the wire contract survived the rename, not just my reading of it. origin/main is still at this PR's merge-base, so the tree CI built is the head itself.

On the integration test from the earlier round: TestGroupKWFHappyPath timed out waiting for wf-happy.snap-1 on an earlier attempt of run 43129625037, and attempt 2 of that same run, on the identical head SHA 660ec3b, finished green. A rename that broke the test would fail it on every attempt, not one in two. So it is a non-deterministic timing flake in the harness, not a regression from this change. Worth tracking on its own, but it does not gate the PR.

The breaking change (no migration, reinstall required) is stated in the PR, the commit, and now the operations docs, which is where the earlier round asked for it.

Notes (non-blocking)

  • pkg/rest/nodes_test.go:1326 asserts StableNodeUUID("n1") against a fresh call to the same function, so it never pins the literal UUID the seed produces. The seed is load-bearing and declared immutable, so a golden test fixing the exact UUID string for a known node name would turn a future accidental seed change into a red test instead of a silent identity shift. Pre-existing, not introduced here.
  • The flaky TestGroupKWFHappyPath is worth its own issue, so the timeout gets chased to a root cause instead of absorbed by re-runs.

@kvaps
Andrei Kvapil (kvaps) dismissed Aleksei Sviridkin (lexfrei)’s stale review November 12, 2026 15:01

Addressed in 660ec3b: the upgrade page now says v0.1.17 or earlier is reinstalled. The reviewer confirmed it closes the comment.

@kvaps
Andrei Kvapil (kvaps) merged commit ec71930 into main Nov 12, 2026
27 of 28 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.

3 participants