Skip to content
This repository was archived by the owner on Aug 5, 2026. It is now read-only.

feat: reconcile on plumbing v1.10.0 + no-strip ApplyNamespace + pending grace - #17

Merged
braghettos merged 1 commit into
mainfrom
feat/plumbing-v1.10-migration
Jul 9, 2026
Merged

feat: reconcile on plumbing v1.10.0 + no-strip ApplyNamespace + pending grace#17
braghettos merged 1 commit into
mainfrom
feat/plumbing-v1.10-migration

Conversation

@braghettos

Copy link
Copy Markdown
Collaborator

What

Migrates the cdc onto plumbing's main line (v1.10.0) + unstructured-runtime v1.3.1, retiring the divergent v1.7.x plumbing pin, and bundles two controller-side no-churn fixes.

Dependency migration

  • plumbing v1.7.15 → v1.10.0 (main line): fork-free apply-if-changed reconcile with semantic change-detection.
  • unstructured-runtime v1.3.0 → v1.3.1: drops the plumbing/slogs/pretty test dependency that had forced the old pin (go mod tidy now clean).

Fixes

  • ApplyNamespace (rbac installer): on an existing namespace, read-modify-write the live object (merge labels/annotations, no-op if unchanged) instead of a blind full-PUT of a bare object. The blind PUT stripped the postrenderer's krateo.io/composition-* labels off a Helm-owned namespace (the portal's demo-system), which helm re-added every reconcile — one revision per cycle. Regression test added.
  • Pending-operation grace (composition Observe): roll back a pending release only after a grace period (default 5m, COMPOSITION_CONTROLLER_PENDING_GRACE), not on sight — a large composition's upgrade legitimately stays pending briefly; roll-back-on-sight thrashed Upgrade↔Rollback on the 319-resource portal.

Test

go build/vet/go mod tidy clean against the real tags; TestApplyNamespace_PreservesForeignLabels + composition tests green (envtest). The bundle was proven flat on the installer-test cluster (demo-system revisions stopped climbing).

🤖 Generated with Claude Code

…ng grace

Migrate onto plumbing's main line (v1.10.0) and unstructured-runtime v1.3.1,
retiring the divergent v1.7.x plumbing pin. v1.10.0 brings the fork-free
apply-if-changed reconcile with semantic change-detection; v1.3.1 drops the
plumbing/slogs/pretty test dependency that had forced the old pin.

Two controller-side fixes bundled:

- ApplyNamespace (rbac installer): on an existing namespace, read-modify-write
  the live object (merge our labels/annotations, no-op if unchanged) instead of
  a blind full-PUT of a bare object. The blind PUT stripped foreign labels such
  as the postrenderer's krateo.io/composition-* set off a Helm-owned namespace
  (the portal's demo-system), which helm then re-added every reconcile -- one
  helm revision per cycle, forever. Regression test added.

- Pending-operation grace (composition Observe): a release in a pending status
  is rolled back only after a grace period (default 5m,
  COMPOSITION_CONTROLLER_PENDING_GRACE), not on sight. A large composition's
  upgrade legitimately stays pending for tens of seconds; roll-back-on-sight
  thrashed Upgrade<->Rollback on the 319-resource portal composition.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FzZJtQ4bEMHuK4CvF6eBuL
@braghettos
braghettos merged commit fcd2ff9 into main Jul 9, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant