Stage 3 (final) of the woodpecker seed→apps move. Removes the transient commonAnnotations: prune: disabled from apps/woodpecker/kustomization.yaml now that the ownership handoff is done.
Stage 2 (#396) verified on the cluster:wp-pg + the Namespace + server/agent all adopted by the woodpecker KS, RESTARTS=0, no ownership conflict, nothing pruned. So the app objects no longer need blanket prune protection — they should be normally prunable by their owning KS again.
Removes only the commonAnnotations block.
The 4 CNPG DB objects keep their per-fileprune: disabled (permanent data-guard on Cluster/wp-pg, ObjectStore, ScheduledBackup, hetzner-creds ExternalSecret).
Verified:kubectl kustomize apps/woodpecker → 17 objects, exactly 4 still annotated (the DB objects), 0 on the 13 app objects.
Trade-off: rolls woodpecker-server + agent once more as the annotation leaves their pod templates — same accepted CI restart as stage 1.
This completes the woodpecker migration. Remaining seed apps after this: paperless, immich, authentik (all have dedicated app KSes → the clean fold pattern).
**Stage 3 (final)** of the woodpecker seed→apps move. Removes the transient `commonAnnotations: prune: disabled` from `apps/woodpecker/kustomization.yaml` now that the ownership handoff is done.
**Stage 2 (#396) verified on the cluster:** `wp-pg` + the Namespace + server/agent all adopted by the `woodpecker` KS, `RESTARTS=0`, no ownership conflict, nothing pruned. So the app objects no longer need blanket prune protection — they should be normally prunable by their owning KS again.
- Removes **only** the `commonAnnotations` block.
- The 4 CNPG DB objects keep their **per-file** `prune: disabled` (permanent data-guard on `Cluster/wp-pg`, ObjectStore, ScheduledBackup, hetzner-creds ExternalSecret).
**Verified:** `kubectl kustomize apps/woodpecker` → 17 objects, exactly **4** still annotated (the DB objects), 0 on the 13 app objects.
**Trade-off:** rolls `woodpecker-server` + `agent` once more as the annotation leaves their pod templates — same accepted CI restart as stage 1.
This completes the woodpecker migration. Remaining seed apps after this: `paperless`, `immich`, `authentik` (all have dedicated app KSes → the clean fold pattern).
Final stage of the seed-woodpecker -> dedicated woodpecker KS move. The
commonAnnotations prune:disabled guard on apps/woodpecker/ has done its job: the
ownership handoff completed (verified — wp-pg + all app objects adopted by the
woodpecker KS, RESTARTS=0, nothing pruned), so the app objects no longer need
blanket prune protection and should be normally prunable by their owning KS again.
Removes only the commonAnnotations block. The 4 CNPG DB objects keep their
per-file prune: disabled (permanent data-guard on Cluster/wp-pg etc.) — verified
kubectl kustomize apps/woodpecker now annotates exactly those 4, not the 13 app
objects.
Rolls woodpecker-server + agent once more as the annotation leaves their pod
templates — the same accepted CI restart as stage 1.
Co-Authored-By: Claude Bot <claude-bot@renner.uno>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
🤖Automated review — model claude-haiku-4-5-20251001 (complexity: trivial), commit 80098afd8d5fb7a9ef7ffbf571abcfdc741eac06.
Advisory review by the review-bot pipeline. It never approves; a human merges. Push new commits to get a fresh review.
Summary
This PR completes stage 3 of the woodpecker seed→dedicated Kustomization migration by removing the transient commonAnnotations: prune: disabled guard from kubernetes/apps/woodpecker/kustomization.yaml. The dedicated woodpecker KS now fully owns these objects, and stage 2 verified the ownership handoff completed without conflicts or pruning incidents.
🔴 Blocking
None identified.
🟡 Suggestions
None. The change is minimal and well-documented.
🟢 Nits
None.
Tests
This is a Kubernetes configuration change with no test coverage expected. The PR relies on stage 2's verification that the ownership transfer succeeded (no pruning, RESTARTS=0, no conflicts). The risk is low because:
DB objects retain per-file protection: All 4 critical objects (cluster/objectstore/scheduled-backup/hetzner-creds-externalsecret) still have individual kustomize.toolkit.fluxcd.io/prune: disabled annotations in their yaml — verified ✓
Dedicated KS is the lifecycle owner: kubernetes/clusters/homelab/woodpecker.yaml has prune: true and will now control pruning of the app objects
Woodpecker is no longer in the catch-all apps KS: Removed from kubernetes/apps/kustomization.yaml with an explanatory comment
Expected behavior: woodpecker-server and agent pod restart once (acknowledged trade-off due to annotation removal from pod templates).
Recommendation
Looks reasonable — no blocking issues; the change correctly completes the migration after stage 2 verification.
🤖 **Automated review** — model `claude-haiku-4-5-20251001` (complexity: trivial), commit `80098afd8d5fb7a9ef7ffbf571abcfdc741eac06`.
> Advisory review by the `review-bot` pipeline. It never approves; a human merges. Push new commits to get a fresh review.
---
## Summary
This PR completes stage 3 of the woodpecker seed→dedicated Kustomization migration by removing the transient `commonAnnotations: prune: disabled` guard from `kubernetes/apps/woodpecker/kustomization.yaml`. The dedicated `woodpecker` KS now fully owns these objects, and stage 2 verified the ownership handoff completed without conflicts or pruning incidents.
## 🔴 Blocking
None identified.
## 🟡 Suggestions
None. The change is minimal and well-documented.
## 🟢 Nits
None.
## Tests
This is a Kubernetes configuration change with no test coverage expected. The PR relies on stage 2's verification that the ownership transfer succeeded (no pruning, `RESTARTS=0`, no conflicts). The risk is low because:
1. **DB objects retain per-file protection**: All 4 critical objects (cluster/objectstore/scheduled-backup/hetzner-creds-externalsecret) still have individual `kustomize.toolkit.fluxcd.io/prune: disabled` annotations in their yaml — verified ✓
2. **Dedicated KS is the lifecycle owner**: `kubernetes/clusters/homelab/woodpecker.yaml` has `prune: true` and will now control pruning of the app objects
3. **Woodpecker is no longer in the catch-all apps KS**: Removed from `kubernetes/apps/kustomization.yaml` with an explanatory comment
Expected behavior: woodpecker-server and agent pod restart once (acknowledged trade-off due to annotation removal from pod templates).
## Recommendation
Looks reasonable — no blocking issues; the change correctly completes the migration after stage 2 verification.
<!-- pr-review:sha=80098afd8d5fb7a9ef7ffbf571abcfdc741eac06 -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Stage 3 (final) of the woodpecker seed→apps move. Removes the transient
commonAnnotations: prune: disabledfromapps/woodpecker/kustomization.yamlnow that the ownership handoff is done.Stage 2 (#396) verified on the cluster:
wp-pg+ the Namespace + server/agent all adopted by thewoodpeckerKS,RESTARTS=0, no ownership conflict, nothing pruned. So the app objects no longer need blanket prune protection — they should be normally prunable by their owning KS again.commonAnnotationsblock.prune: disabled(permanent data-guard onCluster/wp-pg, ObjectStore, ScheduledBackup, hetzner-creds ExternalSecret).Verified:
kubectl kustomize apps/woodpecker→ 17 objects, exactly 4 still annotated (the DB objects), 0 on the 13 app objects.Trade-off: rolls
woodpecker-server+agentonce more as the annotation leaves their pod templates — same accepted CI restart as stage 1.This completes the woodpecker migration. Remaining seed apps after this:
paperless,immich,authentik(all have dedicated app KSes → the clean fold pattern).🤖 Automated review — model
claude-haiku-4-5-20251001(complexity: trivial), commit80098afd8d5fb7a9ef7ffbf571abcfdc741eac06.Summary
This PR completes stage 3 of the woodpecker seed→dedicated Kustomization migration by removing the transient
commonAnnotations: prune: disabledguard fromkubernetes/apps/woodpecker/kustomization.yaml. The dedicatedwoodpeckerKS now fully owns these objects, and stage 2 verified the ownership handoff completed without conflicts or pruning incidents.🔴 Blocking
None identified.
🟡 Suggestions
None. The change is minimal and well-documented.
🟢 Nits
None.
Tests
This is a Kubernetes configuration change with no test coverage expected. The PR relies on stage 2's verification that the ownership transfer succeeded (no pruning,
RESTARTS=0, no conflicts). The risk is low because:kustomize.toolkit.fluxcd.io/prune: disabledannotations in their yaml — verified ✓kubernetes/clusters/homelab/woodpecker.yamlhasprune: trueand will now control pruning of the app objectskubernetes/apps/kustomization.yamlwith an explanatory commentExpected behavior: woodpecker-server and agent pod restart once (acknowledged trade-off due to annotation removal from pod templates).
Recommendation
Looks reasonable — no blocking issues; the change correctly completes the migration after stage 2 verification.