Repository navigation
fix: batch of six open-issue fixes (#248 #238 #245 #196 #237 #250) - #252
Merged
Merged
Conversation
backend_target_key dropped the endpoint+region (S3), storage_account (Azure), and backing volume (Filesystem), so two distinct backends sharing a bucket/ container/path name collided to one key and replication_destination_differs wrongly reported a self-replication — the webhook then rejected a valid RepositoryReplication between two different S3 providers. Fold every storage-identifying field (never credentials) into the key. Fixes #248
…duled Snapshots (#238) create_scheduled_backup hardcoded deletion_policy: None, so the mutating webhook always stamped its origin default (Delete) and the recipe's defaultDeletionPolicy was write-only. Resolve the policy and thread its default into the child Snapshot before admission (degrades to None on a GET failure, preserving today's behavior). Fixes #238
…#245) Repository/ClusterRepository called io::set_ready only in the suspend branch, so a healthy resume left Ready/Reconciling/Stalled frozen at the suspend generation (Flux wait: true hangs), and a never-suspended repo never got them. New io::ready_outcome_for_phase, layered onto every terminal status write in both reconcilers (on the existing conditions vec, since a merge-patch replaces the whole array). Fixes #245
The 'Backups OK' panel summed a durable per-run counter over 24h (23 policies x N runs = 115), with no per-policy health signal. Add kopiur_snapshotpolicy_ last_backup_success (0/1, latest terminal backup per policy) and retarget the panel to count(... == 1) -> 'Policies Healthy'. Fixes #196
MAX_RETURNED_SNAPSHOTS caps entry COUNT, not size; a full SnapshotListEntry is ~2KB (unbounded rootEntry.summ.errors + retentionReason + description), so ~500 entries exceeded etcd's 1MiB ConfigMap limit. The mover's best-effort write then 422'd, the Job still exited 0, and the controller looped ResultPending forever at Bootstrapped: False. Strip the three controller-unused heavy fields (~400B/ entry) inside prepare_catalog_entries, add a size-budget backstop that trims trailing entries, and log the write failure loudly. Fixes #237
kopia snapshot verify ran with no --sources, so a per-SnapshotPolicy quick verify verified every snapshot in the (shared) repository and verifyFilesPercent sampled the whole repo — a 1GB cache PVC filled verifying a 19MB snapshot. Add VerifyOptions.sources and scope the quick tier to the run's resolved identity (username@hostname:path). The deep tier was already identity-scoped. Fixes #250
Greptile SummaryThis PR fixes several backup operator regressions across validation, scheduling, repository status, mover jobs, verification, and observability. The main changes are:
|
| Filename | Overview |
|---|---|
| crates/api/src/validate/repository.rs | Expands replication backend identity keys to include storage-target discriminators for S3, Azure, filesystem, and SFTP. |
| crates/controller/src/snapshot_schedule.rs | Resolves SnapshotPolicy.defaultDeletionPolicy before creating scheduled Snapshots and propagates read errors. |
| crates/controller/src/repository.rs | Adds kstatus condition updates to namespaced repository terminal status paths. |
| crates/controller/src/cluster_repository.rs | Adds matching kstatus condition updates to cluster repository success, failure, and probe paths. |
| crates/controller/src/metrics.rs | Adds a per-policy 0/1 gauge for latest terminal backup success. |
| crates/kopia/src/client/mod.rs | Adds VerifyOptions.sources and emits --sources for scoped kopia snapshot verify calls. |
| crates/mover/src/bootstrap.rs | Slims bootstrap catalog entries and adds a serialized-result size budget. |
| crates/mover/src/main.rs | Applies the bootstrap result size guard and scopes quick verification to the resolved identity. |
| deploy/dashboards/kopiur.json | Updates the policy-health dashboard panel to use the new last-backup-success gauge. |
Reviews (2): Last reviewed commit: "fix(controller): fail the fire on a poli..." | Re-trigger Greptile
…t deletionPolicy (#238) Review follow-up to the #238 fix: policy_default_deletion_policy degraded a read failure/missing policy to None, and admission then stamps the origin default Delete — so a transient apiserver blip against a policy whose defaultDeletionPolicy is Retain/Orphan silently downgraded the produced snapshot's retention to destructive Delete. Return Result and propagate (mirroring policy_repo_timezone_default and the existing target-resolution failures in fire_for_targets), so the fire is skipped and retried idempotently instead of persisting the wrong semantics. A genuine None now means only 'the policy sets no default' (webhook Delete is then correct), never 'we could not read it'. Refactored to take &Client so the propagation is unit-tested with a mock kube client (5xx and 404 both error).
doonga
pushed a commit
to greyrock-labs/home-ops
that referenced
this pull request
Jul 15, 2026
….7.3 ➔ 0.7.4) (#74) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/home-operations/charts/kopiur](https://github.com/home-operations/kopiur) | patch | `0.7.3` → `0.7.4` | --- ### Release Notes <details> <summary>home-operations/kopiur (ghcr.io/home-operations/charts/kopiur)</summary> ### [`v0.7.4`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#074-2026-07-15) [Compare Source](home-operations/kopiur@0.7.3...0.7.4) ##### Features - bound Snapshot CR reconcile cost at scale ([#​249](home-operations/kopiur#249)) ([#​253](home-operations/kopiur#253)) ([3697aa9](home-operations/kopiur@3697aa9)) - **docs:** clean up admonitions in docs ([71c5d85](home-operations/kopiur@71c5d85)) - multi-cluster shared repository support — cluster identity, foreign-aware discovery, collision-free maintenance leases ([#​251](home-operations/kopiur#251)) ([a4593d8](home-operations/kopiur@a4593d8)) ##### Bug Fixes - batch of six open-issue fixes ([#​248](home-operations/kopiur#248) [#​238](home-operations/kopiur#238) [#​245](home-operations/kopiur#245) [#​196](home-operations/kopiur#196) [#​237](home-operations/kopiur#237) [#​250](home-operations/kopiur#250)) ([#​252](home-operations/kopiur#252)) ([045a5a5](home-operations/kopiur@045a5a5)) - **deps:** update rust crate http-body-util (0.1.3 → 0.1.4) ([#​244](home-operations/kopiur#244)) ([4878006](home-operations/kopiur@4878006)) - **deps:** update rust crate rustls (0.23.41 → 0.23.42) ([#​243](home-operations/kopiur#243)) ([13b1dc4](home-operations/kopiur@13b1dc4)) ##### Miscellaneous Chores - **krew:** kopiur 0.7.3 manifest ([d521675](home-operations/kopiur@d521675)) - **mise:** Update tool aqua:EmbarkStudios/cargo-deny (0.19.9 → 0.20.2) ([#​226](home-operations/kopiur#226)) ([9c109b4](home-operations/kopiur@9c109b4)) - **mise:** Update tool oxfmt (0.58.0 → 0.59.0) ([#​246](home-operations/kopiur#246)) ([41625e9](home-operations/kopiur@41625e9)) - **mise:** Update tool zizmor (1.26.1 → 1.27.0) ([#​247](home-operations/kopiur#247)) ([fe10a6a](home-operations/kopiur@fe10a6a)) </details> --- ### Configuration 📅 **Schedule**: (in timezone America/New_York) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI2MC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.greyrock.io/greyrock-labs/home-ops/pulls/74
eleboucher
pushed a commit
to eleboucher/homelab
that referenced
this pull request
Jul 16, 2026
….7.3 ➔ 0.7.4) (#1607) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/home-operations/charts/kopiur](https://github.com/home-operations/kopiur) | patch | `0.7.3` → `0.7.4` | --- ### Release Notes <details> <summary>home-operations/kopiur (ghcr.io/home-operations/charts/kopiur)</summary> ### [`v0.7.4`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#074-2026-07-15) [Compare Source](home-operations/kopiur@0.7.3...0.7.4) ##### Features - bound Snapshot CR reconcile cost at scale ([#​249](home-operations/kopiur#249)) ([#​253](home-operations/kopiur#253)) ([3697aa9](home-operations/kopiur@3697aa9)) - **docs:** clean up admonitions in docs ([71c5d85](home-operations/kopiur@71c5d85)) - multi-cluster shared repository support — cluster identity, foreign-aware discovery, collision-free maintenance leases ([#​251](home-operations/kopiur#251)) ([a4593d8](home-operations/kopiur@a4593d8)) ##### Bug Fixes - batch of six open-issue fixes ([#​248](home-operations/kopiur#248) [#​238](home-operations/kopiur#238) [#​245](home-operations/kopiur#245) [#​196](home-operations/kopiur#196) [#​237](home-operations/kopiur#237) [#​250](home-operations/kopiur#250)) ([#​252](home-operations/kopiur#252)) ([045a5a5](home-operations/kopiur@045a5a5)) - **deps:** update rust crate http-body-util (0.1.3 → 0.1.4) ([#​244](home-operations/kopiur#244)) ([4878006](home-operations/kopiur@4878006)) - **deps:** update rust crate rustls (0.23.41 → 0.23.42) ([#​243](home-operations/kopiur#243)) ([13b1dc4](home-operations/kopiur@13b1dc4)) ##### Miscellaneous Chores - **krew:** kopiur 0.7.3 manifest ([d521675](home-operations/kopiur@d521675)) - **mise:** Update tool aqua:EmbarkStudios/cargo-deny (0.19.9 → 0.20.2) ([#​226](home-operations/kopiur#226)) ([9c109b4](home-operations/kopiur@9c109b4)) - **mise:** Update tool oxfmt (0.58.0 → 0.59.0) ([#​246](home-operations/kopiur#246)) ([41625e9](home-operations/kopiur@41625e9)) - **mise:** Update tool zizmor (1.26.1 → 1.27.0) ([#​247](home-operations/kopiur#247)) ([fe10a6a](home-operations/kopiur@fe10a6a)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/1607
hbjydev
pushed a commit
to hbjydev/phoebe
that referenced
this pull request
Aug 27, 2026
…0.7.3 → 0.10.4) (#273) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/home-operations/charts/kopiur](https://github.com/home-operations/kopiur) | minor | `0.7.3` → `0.10.4` | --- >⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/141) for more information. --- ### Release Notes <details> <summary>home-operations/kopiur (ghcr.io/home-operations/charts/kopiur)</summary> ### [`v0.10.4`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#0104-2026-08-24) [Compare Source](home-operations/kopiur@0.10.3...0.10.4) ##### Bug Fixes - **chart:** give flowSchema its doc comment and timings a clean schema entry ([#​397](home-operations/kopiur#397)) ([7c8dd3f](home-operations/kopiur@7c8dd3f)) - **mover:** read status.resolved via the /status subresource ([#​408](home-operations/kopiur#408)) ([06fc2f9](home-operations/kopiur@06fc2f9)) ##### Miscellaneous Chores - **github-action:** update action docker/github-builder (v1.16.0 → v1.17.0) ([#​407](home-operations/kopiur#407)) ([b6d7d04](home-operations/kopiur@b6d7d04)) - **mise:** update mise tools ([#​400](home-operations/kopiur#400)) ([b1a83f8](home-operations/kopiur@b1a83f8)) - **mise:** update tool kubectl (1.36.3 → 1.36.4) ([#​405](home-operations/kopiur#405)) ([274e3d6](home-operations/kopiur@274e3d6)) - **mise:** update tool lefthook (2.1.10 → 2.1.11) ([#​406](home-operations/kopiur#406)) ([2ba700d](home-operations/kopiur@2ba700d)) - **mise:** update tool rust (1.97.1 → 1.98.0) ([#​403](home-operations/kopiur#403)) ([c655005](home-operations/kopiur@c655005)) - **mise:** update tool yq (4.53.3 → 4.53.4) ([#​402](home-operations/kopiur#402)) ([d1ed8a7](home-operations/kopiur@d1ed8a7)) - **mise:** update tool yq (4.53.4 → 4.53.6) ([#​404](home-operations/kopiur#404)) ([dd5878c](home-operations/kopiur@dd5878c)) ### [`v0.10.3`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#0103-2026-08-18) [Compare Source](home-operations/kopiur@0.10.2...0.10.3) ##### Features - **repository:** seed a fresh repository from its replica — DR for replicated repositories ([#​380](home-operations/kopiur#380)) ([#​396](home-operations/kopiur#396)) ([74665dc](home-operations/kopiur@74665dc)) ##### Bug Fixes - **rust:** update crate cel (0.14.2 → 0.14.3) ([#​387](home-operations/kopiur#387)) ([bf9aa0c](home-operations/kopiur@bf9aa0c)) - **rust:** update crate http-body-util (0.1.4 → 0.1.5) ([#​381](home-operations/kopiur#381)) ([6354e17](home-operations/kopiur@6354e17)) ##### Miscellaneous Chores - **github-action:** update action jdx/mise-action (v4.2.4 → v4.2.5) ([#​388](home-operations/kopiur#388)) ([1040c9e](home-operations/kopiur@1040c9e)) - **mise:** update tool aqua:astral-sh/uv (0.12.3 → 0.12.4) ([#​390](home-operations/kopiur#390)) ([bf3916c](home-operations/kopiur@bf3916c)) - **mise:** update tool aqua:astral-sh/uv (0.12.4 → 0.12.5) ([#​395](home-operations/kopiur#395)) ([b919878](home-operations/kopiur@b919878)) - **mise:** update tool helm (4.2.3 → 4.2.4) ([#​389](home-operations/kopiur#389)) ([5b134fa](home-operations/kopiur@5b134fa)) - **mise:** Update tool oxfmt (0.62.0 → 0.63.0) ([#​386](home-operations/kopiur#386)) ([65db237](home-operations/kopiur@65db237)) ### [`v0.10.2`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#0102-2026-08-13) [Compare Source](home-operations/kopiur@0.10.1...0.10.2) ##### Performance Improvements - **controller:** store-backed reads, LIST dedup, bounded PVC retries, client-side request metrics ([#​382](home-operations/kopiur#382)) ([#​383](home-operations/kopiur#383)) ([2b07022](home-operations/kopiur@2b07022)) ### [`v0.10.1`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#0101-2026-08-11) [Compare Source](home-operations/kopiur@0.10.0...0.10.1) ##### Bug Fixes - **mise:** something about mise warnings ([#​373](home-operations/kopiur#373)) ([fde8073](home-operations/kopiur@fde8073)) - **rust:** update crate cel (0.14.1 → 0.14.2) ([#​379](home-operations/kopiur#379)) ([4a60221](home-operations/kopiur@4a60221)) - **rust:** update crate futures (0.3.33 → 0.3.34) ([#​378](home-operations/kopiur#378)) ([ff657b8](home-operations/kopiur@ff657b8)) - **rust:** update crate rcgen (0.14.8 → 0.14.9) ([#​377](home-operations/kopiur#377)) ([e3b3b3f](home-operations/kopiur@e3b3b3f)) ##### Miscellaneous Chores - **mise:** Update tool aqua:astral-sh/uv (0.12.2 → 0.12.3) ([#​375](home-operations/kopiur#375)) ([952af6d](home-operations/kopiur@952af6d)) ### [`v0.10.0`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#0100-2026-08-09) [Compare Source](home-operations/kopiur@0.9.5...0.10.0) ##### ⚠ BREAKING CHANGES - **rust:** Update crate base64 (0.22.1 → 0.23.1) ([#​366](home-operations/kopiur#366)) ##### Features - **rust:** Update crate base64 (0.22.1 → 0.23.1) ([#​366](home-operations/kopiur#366)) ([2c6e3e7](home-operations/kopiur@2c6e3e7)) - SnapshotReplication (logical snapshot-level replication) + SnapshotPolicy multi-repository fan-out ([#​370](home-operations/kopiur#370)) ([4e06e42](home-operations/kopiur@4e06e42)) ##### Continuous Integration - **github-action:** Update action Swatinem/rust-cache (v2.9.1 → v2.9.2) ([#​372](home-operations/kopiur#372)) ([e4ce173](home-operations/kopiur@e4ce173)) ##### Miscellaneous Chores - **mise:** Update mise tools ([#​367](home-operations/kopiur#367)) ([d6f82f4](home-operations/kopiur@d6f82f4)) - **mise:** Update tool cosign (3.1.2 → 3.1.3) ([#​371](home-operations/kopiur#371)) ([558b9f4](home-operations/kopiur@558b9f4)) ### [`v0.9.5`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#095-2026-08-08) [Compare Source](home-operations/kopiur@0.9.4...0.9.5) ##### Bug Fixes - deliver s3 tls.caBundleRef to every kopia invocation ([#​365](home-operations/kopiur#365)) ([cda0237](home-operations/kopiur@cda0237)) - doctor misses structurally-blocked work ([#​359](home-operations/kopiur#359)) + phase/gate exhaustiveness ratchet ([#​363](home-operations/kopiur#363)) ([b844974](home-operations/kopiur@b844974)) - **rust:** update crate thiserror (2.0.19 → 2.0.20) ([#​360](home-operations/kopiur#360)) ([4aa646d](home-operations/kopiur@4aa646d)) ##### Continuous Integration - **github-action:** Update action docker/github-builder (v1.15.0 → v1.16.0) ([#​362](home-operations/kopiur#362)) ([db32818](home-operations/kopiur@db32818)) ### [`v0.9.4`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#094-2026-08-08) [Compare Source](home-operations/kopiur@0.9.3...0.9.4) ##### Features - **docs:** Update README.md ([#​358](home-operations/kopiur#358)) ([05d2506](home-operations/kopiur@05d2506)) ##### Bug Fixes - implement pvcSelector/groupBy ([#​346](home-operations/kopiur#346)) and model deduped backups as Unchanged ([#​351](home-operations/kopiur#351)) ([#​354](home-operations/kopiur#354)) ([a2b9ae6](home-operations/kopiur@a2b9ae6)) - **rust:** update crate clap (4.6.5 → 4.6.6) ([#​357](home-operations/kopiur#357)) ([e9ca396](home-operations/kopiur@e9ca396)) ##### Miscellaneous Chores - **mise:** Update tool node (24.18.1 → v24.19.0) ([#​353](home-operations/kopiur#353)) ([2f28c6d](home-operations/kopiur@2f28c6d)) - **mise:** Update tool oxfmt (0.61.0 → 0.62.0) ([#​356](home-operations/kopiur#356)) ([e95df6b](home-operations/kopiur@e95df6b)) ### [`v0.9.3`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#093-2026-08-05) [Compare Source](home-operations/kopiur@0.9.2...0.9.3) ##### Features - repository-level circuit breaker — stop fanning out doomed Jobs when the backend is unreachable ([#​350](home-operations/kopiur#350)) ([5d787b9](home-operations/kopiur@5d787b9)) ##### Bug Fixes - **rust:** update crate base64 (0.23.0 → 0.23.1) ([#​349](home-operations/kopiur#349)) ([11e7aa8](home-operations/kopiur@11e7aa8)) ##### Continuous Integration - **github-action:** Update action jdx/mise-action (v4.2.3 → v4.2.4) ([#​347](home-operations/kopiur#347)) ([1c9cf3b](home-operations/kopiur@1c9cf3b)) ##### Miscellaneous Chores - **renovate:** keep 0.x minors out of automerge ([#​352](home-operations/kopiur#352)) ([95d672a](home-operations/kopiur@95d672a)) ### [`v0.9.2`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#092-2026-08-02) [Compare Source](home-operations/kopiur@0.9.1...0.9.2) ##### Features - **repository:** object-lock blob retention ([#​332](home-operations/kopiur#332)); fix blank volumeSnapshotClassName ([#​344](home-operations/kopiur#344)) ([dab8fdd](home-operations/kopiur@dab8fdd)) ##### Bug Fixes - **ci:** fail the merge gate on cancelled jobs, and cut e2e artifact time ([#​330](home-operations/kopiur#330)) ([1847a8a](home-operations/kopiur@1847a8a)) - **rust:** update crate time (0.3.54 → 0.3.55) ([#​337](home-operations/kopiur#337)) ([ee1b951](home-operations/kopiur@ee1b951)) ##### Continuous Integration - **github-action:** Update action docker/github-builder (v1.14.0 → v1.15.0) ([#​327](home-operations/kopiur#327)) ([f5514fc](home-operations/kopiur@f5514fc)) - **github-action:** Update action docker/login-action (v4.5.1 → v4.5.2) ([#​331](home-operations/kopiur#331)) ([d90efdf](home-operations/kopiur@d90efdf)) - **github-action:** Update action docker/login-action (v4.5.2 → v4.6.0) ([#​339](home-operations/kopiur#339)) ([b783bcc](home-operations/kopiur@b783bcc)) - **github-action:** Update action home-operations/.github/actions/workflow-lint (v1.0.2 → v1.0.3) ([#​343](home-operations/kopiur#343)) ([4af16d5](home-operations/kopiur@4af16d5)) - update shared actions and use self-repository syntax ([#​341](home-operations/kopiur#341)) ([559e23f](home-operations/kopiur@559e23f)) ##### Miscellaneous Chores - **deps:** lock file maintenance (pep621) ([#​334](home-operations/kopiur#334)) ([e19ae0e](home-operations/kopiur@e19ae0e)) - **mise:** Lock file maintenance tool (mise) ([#​335](home-operations/kopiur#335)) ([666afb5](home-operations/kopiur@666afb5)) - **mise:** prune lockfile to used platforms ([#​342](home-operations/kopiur#342)) ([741d6a4](home-operations/kopiur@741d6a4)) - **mise:** Update tool aqua:astral-sh/uv (0.12.0 → 0.12.1) ([#​333](home-operations/kopiur#333)) ([3ed2766](home-operations/kopiur@3ed2766)) - **mise:** Update tool promtool (3.13.1 → 3.13.2) ([#​329](home-operations/kopiur#329)) ([ac1752e](home-operations/kopiur@ac1752e)) - **mise:** Update tool zizmor (1.28.0 → 1.29.0) ([#​340](home-operations/kopiur#340)) ([410dc26](home-operations/kopiur@410dc26)) - **release-please:** standardize the release pull request title pattern ([#​338](home-operations/kopiur#338)) ([21013a3](home-operations/kopiur@21013a3)) - **rust:** lock file maintenance crate (cargo) ([#​336](home-operations/kopiur#336)) ([8606177](home-operations/kopiur@8606177)) ### [`v0.9.1`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#091-2026-07-29) [Compare Source](home-operations/kopiur@0.9.0...0.9.1) ##### Features - **rust:** update crate http (1.4.2 → 1.5.0) ([#​323](home-operations/kopiur#323)) ([cf0b149](home-operations/kopiur@cf0b149)) ##### Bug Fixes - **controller:** survive a slow API server instead of abdicating on the first one ([#​319](home-operations/kopiur#319)) ([#​324](home-operations/kopiur#324)) ([df7e90c](home-operations/kopiur@df7e90c)) - **rust:** update crate rustls (0.23.42 → 0.23.43) ([#​326](home-operations/kopiur#326)) ([2f5123e](home-operations/kopiur@2f5123e)) ##### Tests - **e2e:** retry flaky tests with cargo-nextest ([#​322](home-operations/kopiur#322)) ([558ac85](home-operations/kopiur@558ac85)) ##### Miscellaneous Chores - **mise:** Update tool aqua:astral-sh/uv (0.11.33 → 0.12.0) ([#​320](home-operations/kopiur#320)) ([66ec350](home-operations/kopiur@66ec350)) - **mise:** Update tool node (24.18.0 → v24.18.1) ([#​325](home-operations/kopiur#325)) ([1c833a4](home-operations/kopiur@1c833a4)) ### [`v0.9.0`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#090-2026-07-28) [Compare Source](home-operations/kopiur@0.8.1...0.9.0) ##### ⚠ BREAKING CHANGES - **rust:** Update crate serial\_test (3.5.0 → 4.0.1) ([#​307](home-operations/kopiur#307)) - **secctx:** identity-aware mover merge, recorded snapshot identity, restore inherit-from-snapshot ([#​304](home-operations/kopiur#304)) ##### Features - **rust:** Update crate serial\_test (3.5.0 → 4.0.1) ([#​307](home-operations/kopiur#307)) ([4392e4a](home-operations/kopiur@4392e4a)) - **secctx:** identity-aware mover merge, recorded snapshot identity, restore inherit-from-snapshot ([#​304](home-operations/kopiur#304)) ([0632a29](home-operations/kopiur@0632a29)) ##### Bug Fixes - **rust:** update crate cel (0.14.0 → 0.14.1) ([#​317](home-operations/kopiur#317)) ([00cf539](home-operations/kopiur@00cf539)) - **rust:** update crate schemars (1.2.1 → 1.2.2) ([#​313](home-operations/kopiur#313)) ([b6e6268](home-operations/kopiur@b6e6268)) ##### Build System - **mise:** add actionlint and refresh the lockfile ([#​309](home-operations/kopiur#309)) ([e74c9b3](home-operations/kopiur@e74c9b3)) ##### Continuous Integration - adopt the shared workflow-lint and docs-build actions ([#​310](home-operations/kopiur#310)) ([7d4b329](home-operations/kopiur@7d4b329)) - gate pull requests on Build Success and share the docs build ([#​306](home-operations/kopiur#306)) ([1b693aa](home-operations/kopiur@1b693aa)) - **github-action:** Update action docker/login-action (v4.5.0 → v4.5.1) ([#​312](home-operations/kopiur#312)) ([29d00b1](home-operations/kopiur@29d00b1)) - **github-action:** Update action jdx/mise-action (v4.2.1 → v4.2.2) ([#​311](home-operations/kopiur#311)) ([65bbca4](home-operations/kopiur@65bbca4)) - **github-action:** Update action jdx/mise-action (v4.2.2 → v4.2.3) ([#​315](home-operations/kopiur#315)) ([5f517d4](home-operations/kopiur@5f517d4)) - skip release-please PRs in checks and drop nightly e2e ([#​305](home-operations/kopiur#305)) ([ee6d4f5](home-operations/kopiur@ee6d4f5)) ##### Miscellaneous Chores - **krew:** kopiur 0.8.1 manifest ([84df757](home-operations/kopiur@84df757)) - **mise:** Update tool aqua:astral-sh/uv (0.11.32 → 0.11.33) ([#​318](home-operations/kopiur#318)) ([f63bc3a](home-operations/kopiur@f63bc3a)) - **mise:** Update tool oxfmt (0.60.0 → 0.61.0) ([#​314](home-operations/kopiur#314)) ([bdbf6c6](home-operations/kopiur@bdbf6c6)) - **renovate:** drop the stale automerge overrides ([#​308](home-operations/kopiur#308)) ([c13a3d5](home-operations/kopiur@c13a3d5)) - standardize release-please changelog sections ([#​316](home-operations/kopiur#316)) ([273d0f8](home-operations/kopiur@273d0f8)) ### [`v0.8.1`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#081-2026-07-24) [Compare Source](home-operations/kopiur@0.8.0...0.8.1) ##### Features - **deps:** update rust crate base64 (0.22.1 → 0.23.0) ([#​293](home-operations/kopiur#293)) ([5ab14d5](home-operations/kopiur@5ab14d5)) - **deps:** update rust crate kube (4.0.0 → 4.2.0) ([#​288](home-operations/kopiur#288)) ([b067458](home-operations/kopiur@b067458)) - httpRequest hook headers ([#​290](home-operations/kopiur#290)) + recovery-aware alerts ([#​280](home-operations/kopiur#280)) ([#​296](home-operations/kopiur#296)) ([f388a14](home-operations/kopiur@f388a14)) - **renovate:** automerge if it passes CI ([66f243f](home-operations/kopiur@66f243f)) ##### Bug Fixes - **controller:** survive an API-server outage without exhausting file descriptors ([#​287](home-operations/kopiur#287)) ([ce184b6](home-operations/kopiur@ce184b6)) - **deps:** update rust crate clap (4.6.2 → 4.6.3) ([#​277](home-operations/kopiur#277)) ([e3d4113](home-operations/kopiur@e3d4113)) - **deps:** update rust crate libc (0.2.186 → 0.2.189) ([#​283](home-operations/kopiur#283)) ([2b2e636](home-operations/kopiur@2b2e636)) - **deps:** update rust crate serde\_json (1.0.150 → 1.0.151) ([#​275](home-operations/kopiur#275)) ([1410f42](home-operations/kopiur@1410f42)) - **deps:** update rust crate time (0.3.53 → 0.3.54) ([#​276](home-operations/kopiur#276)) ([ff250ff](home-operations/kopiur@ff250ff)) - **deps:** update rust crate tokio (1.53.0 → 1.53.1) ([#​281](home-operations/kopiur#281)) ([82082e9](home-operations/kopiur@82082e9)) - **helm:** stamp Chart.yaml version on release + document image sub-fields ([#​289](home-operations/kopiur#289)) ([041549a](home-operations/kopiur@041549a)) - **probe:** stamp the health probe at launch so it stops recycling its Job ([#​273](home-operations/kopiur#273)) ([#​278](home-operations/kopiur#278)) ([7fa3657](home-operations/kopiur@7fa3657)) - **release:** use the generic updater for Chart.yaml + stamp README badges ([#​292](home-operations/kopiur#292)) ([f4a3141](home-operations/kopiur@f4a3141)) - retention-aware adoption stops the adopt/prune/rediscover livelock ([#​299](home-operations/kopiur#299)) ([4093f12](home-operations/kopiur@4093f12)) ##### Styles - indent markdown at 2 to match embedded yaml ([#​279](home-operations/kopiur#279)) ([06885e0](home-operations/kopiur@06885e0)) ##### Miscellaneous Chores - **github-release:** Update release helm-unittest/helm-unittest (v1.1.1 → v1.1.2) ([#​301](home-operations/kopiur#301)) ([e62272d](home-operations/kopiur@e62272d)) - **krew:** kopiur 0.8.0 manifest ([2be416f](home-operations/kopiur@2be416f)) - **mise:** Update tool aqua:astral-sh/uv (0.11.29 → 0.11.30) ([#​282](home-operations/kopiur#282)) ([e12f96c](home-operations/kopiur@e12f96c)) - **mise:** Update tool aqua:astral-sh/uv (0.11.30 → 0.11.31) ([#​286](home-operations/kopiur#286)) ([a3f31e6](home-operations/kopiur@a3f31e6)) - **mise:** Update tool aqua:astral-sh/uv (0.11.31 → 0.11.32) ([#​298](home-operations/kopiur#298)) ([9d8c171](home-operations/kopiur@9d8c171)) - **mise:** Update tool kubectl (1.36.2 → 1.36.3) ([#​291](home-operations/kopiur#291)) ([ef290f8](home-operations/kopiur@ef290f8)) - **mise:** Update tool oxfmt (0.59.0 → 0.60.0) ([#​284](home-operations/kopiur#284)) ([ad8a18a](home-operations/kopiur@ad8a18a)) - **mise:** Update tool rust (1.96.1 → 1.97.1) ([#​222](home-operations/kopiur#222)) ([fbeb2fa](home-operations/kopiur@fbeb2fa)) - **mise:** Update tool zizmor (1.27.0 → 1.28.0) ([#​285](home-operations/kopiur#285)) ([9ef35ce](home-operations/kopiur@9ef35ce)) ### [`v0.8.0`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#080-2026-07-19) [Compare Source](home-operations/kopiur@0.7.5...0.8.0) ##### ⚠ BREAKING CHANGES - SnapshotPolicy deletion cascade + auto-adoption of discovered snapshots ([#​272](home-operations/kopiur#272)) ##### Features - **deps:** update rust crate tokio (1.52.4 → 1.53.0) ([#​264](home-operations/kopiur#264)) ([6cab0c6](home-operations/kopiur@6cab0c6)) - mass-deletion protection (cascade guard, per-repo breaker, batched deletes) ([#​265](home-operations/kopiur#265)) ([038ea6d](home-operations/kopiur@038ea6d)) - SnapshotPolicy deletion cascade + auto-adoption of discovered snapshots ([#​272](home-operations/kopiur#272)) ([9da8c26](home-operations/kopiur@9da8c26)) ##### Bug Fixes - **deps:** update rust crate anyhow (1.0.103 → 1.0.104) ([#​269](home-operations/kopiur#269)) ([4d81496](home-operations/kopiur@4d81496)) - **deps:** update rust crate clap (4.6.1 → 4.6.2) ([#​257](home-operations/kopiur#257)) ([c238df1](home-operations/kopiur@c238df1)) - **deps:** update rust crate futures (0.3.32 → 0.3.33) ([#​268](home-operations/kopiur#268)) ([926b52d](home-operations/kopiur@926b52d)) - **deps:** update rust crate serde (1.0.228 → 1.0.229) ([#​270](home-operations/kopiur#270)) ([5fbd713](home-operations/kopiur@5fbd713)) - **deps:** update rust crate thiserror (2.0.18 → 2.0.19) ([#​271](home-operations/kopiur#271)) ([d83730f](home-operations/kopiur@d83730f)) - **deps:** update rust crate tokio (1.52.3 → 1.52.4) ([#​261](home-operations/kopiur#261)) ([accf6ae](home-operations/kopiur@accf6ae)) - writable backup source ([#​254](home-operations/kopiur#254)), stuck deletion finalizer ([#​255](home-operations/kopiur#255)), kopia epoch parameters ([#​258](home-operations/kopiur#258)) ([#​263](home-operations/kopiur#263)) ([94f9a15](home-operations/kopiur@94f9a15)) ##### Miscellaneous Chores - **krew:** kopiur 0.7.5 manifest ([16d7390](home-operations/kopiur@16d7390)) - **mise:** Update tool aqua:astral-sh/uv (0.11.28 → 0.11.29) ([#​256](home-operations/kopiur#256)) ([f822335](home-operations/kopiur@f822335)) - **mise:** Update tool cosign (3.1.1 → 3.1.2) ([#​267](home-operations/kopiur#267)) ([649ba2e](home-operations/kopiur@649ba2e)) ### [`v0.7.5`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#075-2026-07-16) [Compare Source](home-operations/kopiur@0.7.4...0.7.5) ##### Bug Fixes - **readme:** update readme admonition ([987957c](home-operations/kopiur@987957c)) - **secctx:** SecurityContextCompatible is verified, not asserted; inherit merges with explicit ([#​259](home-operations/kopiur#259)) ([cbfd97d](home-operations/kopiur@cbfd97d)) ### [`v0.7.4`](https://github.com/home-operations/kopiur/blob/HEAD/CHANGELOG.md#074-2026-07-15) [Compare Source](home-operations/kopiur@0.7.3...0.7.4) ##### Features - bound Snapshot CR reconcile cost at scale ([#​249](home-operations/kopiur#249)) ([#​253](home-operations/kopiur#253)) ([3697aa9](home-operations/kopiur@3697aa9)) - **docs:** clean up admonitions in docs ([71c5d85](home-operations/kopiur@71c5d85)) - multi-cluster shared repository support — cluster identity, foreign-aware discovery, collision-free maintenance leases ([#​251](home-operations/kopiur#251)) ([a4593d8](home-operations/kopiur@a4593d8)) ##### Bug Fixes - batch of six open-issue fixes ([#​248](home-operations/kopiur#248) [#​238](home-operations/kopiur#238) [#​245](home-operations/kopiur#245) [#​196](home-operations/kopiur#196) [#​237](home-operations/kopiur#237) [#​250](home-operations/kopiur#250)) ([#​252](home-operations/kopiur#252)) ([045a5a5](home-operations/kopiur@045a5a5)) - **deps:** update rust crate http-body-util (0.1.3 → 0.1.4) ([#​244](home-operations/kopiur#244)) ([4878006](home-operations/kopiur@4878006)) - **deps:** update rust crate rustls (0.23.41 → 0.23.42) ([#​243](home-operations/kopiur#243)) ([13b1dc4](home-operations/kopiur@13b1dc4)) ##### Miscellaneous Chores - **krew:** kopiur 0.7.3 manifest ([d521675](home-operations/kopiur@d521675)) - **mise:** Update tool aqua:EmbarkStudios/cargo-deny (0.19.9 → 0.20.2) ([#​226](home-operations/kopiur#226)) ([9c109b4](home-operations/kopiur@9c109b4)) - **mise:** Update tool oxfmt (0.58.0 → 0.59.0) ([#​246](home-operations/kopiur#246)) ([41625e9](home-operations/kopiur@41625e9)) - **mise:** Update tool zizmor (1.26.1 → 1.27.0) ([#​247](home-operations/kopiur#247)) ([fe10a6a](home-operations/kopiur@fe10a6a)) </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/London) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjAuMiIsInVwZGF0ZWRJblZlciI6IjQ0LjQ2LjUiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=--> Reviewed-on: https://forgejo.hayden.moe/hayden/phoebe/pulls/273
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.
Fixes a batch of six open issues, one commit per issue. Every fix ships with a regression test that fails without it; the whole branch is green on
cargo test/clippy -D warnings/fmt/gen-checkand the cognitive-complexity ratchet.Fixes
fix(api)RepositoryReplication with different source and destination gets rejected by admission hook #248 — replication rejected when source ≠ destination.backend_target_keykeyed S3 on bucket+prefix only (dropping endpoint+region), Azure droppedstorage_account, Filesystem droppedvolume— so two distinct backends sharing a bucket/container/path name collided and the webhook rejected a validRepositoryReplicationbetween different S3 providers. Now folds every storage-identifying field into the key.fix(controller)SnapshotPolicy's defaultDeletionPolicy doesn't work #238 —SnapshotPolicy.defaultDeletionPolicywas write-only.create_scheduled_backuphardcodeddeletionPolicy: None, so the mutating webhook always stamped its origin default (Delete). Now resolves the policy and threads its default onto the childSnapshotbefore admission.fix(controller)ClusterRepository keeps stale suspended conditions after resume #245 — staleSuspendedconditions after resume.io::set_readywas called only in the suspend branch, so a healthy resume leftReady/Reconciling/Stalledfrozen at the suspend generation (Fluxwait: truehangs), and a never-suspended repo never got them. Newio::ready_outcome_for_phaseis layered onto every terminal status write in both repo reconcilers.feat(metrics)Backups Ok metric showing a number greater than number of policies #196 — "Backups OK" exceeded the policy count. The panel summed a durable per-run counter over 24h. Addskopiur_snapshotpolicy_last_backup_success(0/1 per policy) and retargets the panel tocount(... == 1)→ "Policies Healthy".fix(mover)Bootstrap result exceeds the ConfigMap 1MiB limit at ~500+ snapshots, permanently wedging the repository at Bootstrapped: False #237 — bootstrap ConfigMap > 1MiB permanently wedged the repo.MAX_RETURNED_SNAPSHOTScaps entry count, not size; ~500 full entries exceeded etcd's 1MiB limit, the write 422'd, the Job still exited 0, and the controller loopedResultPendingforever atBootstrapped: False. Strips the three controller-unused heavy fields (~400 B/entry) + a size-budget backstop + a loud write-failure log.fix(mover)SnapshotPolicy verification.quick does not target the snapshot with --scope #250 — quick verify wasn't scoped to the policy.kopia snapshot verifyran with no--sources, so a per-policy quick verify verified the whole shared repository (andverifyFilesPercentsampled every identity's data). Now scopes the quick tier to the run's resolved identity.Noted follow-ups (out of each issue's core scope)
kubectl create'dSnapshotwith apolicyRefstill won't inherit the default — theSnapshotadmission webhook is synchronous/client-less; fixing needs it async+client.ResultPending→ Warning (the strip + size guard already make the oversized case unreachable, so this is defense-in-depth).Closes #248, closes #238, closes #245, closes #196, closes #237, closes #250.