65 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 92313665f5 fix(gitops-engine): the predicted-live fixtures kept the pre-rename manager
serverSideDiff finds the field set the CD controller owns by looking its manager
up by name. The live YAML fixtures were renamed to cd-controller; the
predicted-live JSON beside them still said argocd-controller, and the diff reads
both. Every server-side-diff case that asks "which fields are mine" failed with
"no managed fields found for manager: cd-controller" — not because the logic is
wrong, but because the two halves of the same fixture disagreed about who
applied it.

Seven JSON fixtures now name the same manager as the YAML they pair with.

pkg/diff goes green; the full gitops-engine module is 12/12.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 22:20:12 -07:00
zeekayandHanzo Dev 1ab6e799c1 cd: the module is github.com/hanzoai/cd, where it is actually hosted
go.mod still declared `module github.com/hanzoai/deploy` after the repo was
renamed. A Go module path is not cosmetic — it is the resolvable location. So
`go get github.com/hanzoai/cd` could not work, and anything importing this
module had to spell a name that no longer exists at that address. The build log
of v3.6.0 is where it surfaced: the compiler was still emitting
github.com/hanzoai/deploy/cmd/cd/commands.

3541 import paths across 690 .go, 19 .proto, 4 .yaml, 3 .sh, 2 .mod, Procfile
and Makefile. Plus the 62 ghcr.io/hanzoai/deploy image references, moved to
ghcr.io/hanzoai/cd to match hanzo.yml's build target — a distinct string from
the module path, replaced separately so neither could clobber the other.

go mod tidy clean, CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ./... clean.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 21:16:24 -07:00
zeekayandHanzo Dev 446e343a3d cd: annotations are cd.hanzo.ai, API group is apps.hanzo.ai
Two corrections on top of the naming pass, both found by checking the live
cluster rather than the source.

The rename had silently changed the user-facing annotation key from
argocd.argoproj.io/sync-wave to cd.argoproj.io/sync-wave — 63 live
Applications carry the old key, so deploying that would have ignored every
sync-wave and broken fleet deploy ordering. The key is now cd.hanzo.ai/*,
and universe 575650286 moves the ApplicationSet template that stamps it, so
the controller regenerates all 63 consistently.

The API group in code said argoproj.io/v1alpha1 in 157 places while the
cluster has served apps.hanzo.ai/v1alpha1 since 2026-07-23 (the CRDs are
applications.apps.hanzo.ai). Code now matches what is actually served.

The legacy applications.argoproj.io/app-name label had ZERO live users, so it
went with the rest. foo.argoproj.io test fixtures became foo.example.com —
arbitrary test domains should not carry a vendor name.

go build ./... exit 0.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 16:32:14 -07:00
zeekayandHanzo Dev 84ee9fa0ce cd: kill the argo naming — binaries, packages, identifiers
Every command is cd-*: cd, cd-server, cd-repo-server,
cd-application-controller, cd-applicationset-controller, cd-cmp-server,
cd-commit-server, cd-dex, cd-git-ask-pass, cd-k8s-auth, cd-notification.
util/argo is util/cd; util/notification/argocd is util/notification/cd.

Preserved deliberately: github.com/argoproj/argocd-example-apps is an
EXTERNAL repo used as an e2e fixture, and notifications-engine + pkg/v2 are
real dependencies. Renaming a URL we do not own would break the tests.

Two bugs I made and caught, both from a careless sed:
- s/argo/cd/g turned 'argocd' into 'cdcd' in two directory names
- renaming the package declaration left every call site saying argo.X

go build ./... exit 0.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 16:00:25 -07:00
15d87b3e72 refactor(cd): hard-fork - rename CRD API group argoproj.io -> deploy.hanzo.ai (#1)
* feat(api): hard-fork CRD API group argoproj.io -> deploy.hanzo.ai

Hanzo CD hard-fork, phase 1.1. Single source of truth is
pkg/apis/application/register.go's Group constant (Application/AppProject/
ApplicationSet all derive their FullName from it); every other Go call-site
that hardcoded the literal group string is updated to match: the 3 generated
informer GVRs, the app-of-apps nested-Application detector in types.go, the
resource-tree Application-kind cache populator, the 3 NotFound error
constructors in server/application, and the applicationset-controller's
leader-election Lease name/ID (kept in lockstep across Go source + RBAC
resourceNames, or leader election would get RBAC-denied on startup).

CRD YAMLs (application/appproject/applicationset) and every RBAC apiGroups
rule that actually governs our 3 CRDs are repointed to deploy.hanzo.ai, across
both manifests/base/* (namespaced Roles) and manifests/cluster-rbac/* (cluster
scope). Two adjacent things that share the "argoproj.io" string but are NOT
ours are deliberately left untouched: gitops-engine's health-check dispatch
for Argo Workflows' `Workflow` kind, and argocd-server-clusterrole's second
apiGroups block granting read on Argo Workflows' `workflows` resource — both
belong to a separate, unrelated Argoproj-family project we are not forking.

Also untouched, per explicit scope: annotation/label keys (argocd.argoproj.io/*)
and finalizers (*.argoproj.io) that track already-applied live resources, and
argocd-cm.yaml's resource.customizations.ignoreResourceUpdates keys (a narrow
app-of-apps diffing nicety, not build- or RBAC-relevant).

CGO_ENABLED=0 go build ./... verified green.

* ci: wire canonical hanzo.yml + cicd.yml (Hanzo CD image build)

Phase 1.3. Follows the same one-way pattern every hanzo/lux/zoo repo uses:
hanzo.yml declares the image (root Dockerfile -> ghcr.io/hanzoai/deploy) and a
fast go-build sanity test (the multi-stage Dockerfile build is the slow, real
gate); cicd.yml is the ~10-line trigger shim importing hanzoai/ci's reusable
build workflow on the arc pool, secrets from KMS only.

No `deploy:` block yet, matching the hanzoai/cms build-only-first-cutover
pattern: this repo's own live hanzo-cd namespace runs the whole Hanzo fleet's
GitOps, so the prod image/CRD swap is a deliberate separate action (see the
[HELD] universe PR), never an automatic rollout on merge. Every PR/push still
builds and pushes an immutable ghcr.io/hanzoai/deploy:sha-<7>-amd64 image.

* feat(ui): rebrand Argo CD -> Hanzo CD (title, favicon, logo, sidebar)

Phase 1.2. User-facing "Argo CD"/"ArgoCD" text replaced with "Hanzo CD"
across the login page, help modal, settings screens, version-info panel,
sync-options warning, fullscreen-logs title, app.tsx page titles, and
index.html's <title>/noscript text (dropped the now-wrong upstream CLI
doc link rather than invent a hanzo.ai URL that doesn't exist).

Logo/favicon assets replaced with the canonical Hanzo mark (never
hand-drawn, copied from ~/work/hanzo/logo/dist): the two real usages of
Argo's logo collapse onto one Hanzo glyph (mono + white variants) at the
same 5 call sites (login icon + footer, login.scss $logoPath/
$logoNegativePath, sidebar text-logo), preserving the existing CSS
invert() filters so both the light login panel and dark sidebar still
render correctly. Old argologo.svg/argo_o.svg/argo.png deleted (no
longer referenced). favicon-{16x16,32x32}.png added at
ui/src/assets/favicon/ (index.html's links to that path were previously
dead - the directory didn't exist in this checkout). package.json name
argo-cd-ui -> hanzo-cd-ui.

Left alone, deliberately: the two Kubernetes resource-kind icon sets
under ui/src/assets/images/resources/ (unrelated to branding), and
upstream doc/project links (argoproj.io, argo-cd.readthedocs.io) since
we have no equivalent hanzo.ai docs to point to yet - except the login
footer logo's outbound link, which now points to hanzo.ai instead of
argoproj.io (a Hanzo-branded mark linking to the upstream project it
was forked from read as an obvious leftover).

* feat(module): rename Go module github.com/argoproj/argo-cd/v3 -> github.com/hanzoai/deploy

Phase 2. No version suffix on the new path (org policy: never publish our
own Go modules above v1.x.x / with a v2+ suffix) — this fork starts a fresh
v0/v1 module identity rather than carrying the v3 the upstream fork point
had reached.

Mechanical, symmetric rewrite: 704 .go files (import statements only; two
disjoint substitutions applied specific-first so the nested gitops-engine
module path never double-matches), plus go.mod (module line, the
gitops-engine require+replace pair, version reset to v0.0.0-... since a
suffix-less path can't carry a v3 semver), gitops-engine/go.mod, Makefile
(ldflags PACKAGE + 2 TEST_MODULE filters), .golangci.yaml, .goreleaser.yaml,
.mockery.yaml (+ gitops-engine's), Procfile, the codegen/proto generation
scripts (hack/generate-proto.sh, update-codegen.sh, update-openapi.sh), and
20 .proto files' go_package options. Also one OpenTelemetry tracer name
string in gitops-engine/pkg/sync/sync_context.go (a cosmestic label, not an
import, but worth keeping consistent).

CGO_ENABLED=0 go build ./... verified green for both the root module and
the nested gitops-engine module; go vet clean on both; go mod tidy run
(network available) to reconcile go.sum, dependency set unchanged.

Left alone, deliberately: doc-only mentions (docs/snyk/*.html scan reports,
gitops-engine/README.md), a comment-only reference in
.github/workflows/release.yaml, and one Renovate bot config line — none are
build- or codegen-load-bearing. Also left alone: comments citing upstream
GitHub issue URLs (github.com/argoproj/argo-cd/issues/NNNNN) and a handful
of test fixtures using "https://github.com/argoproj/argo-cd.git" as a
representative example repo URL — both are accurate historical/test-data
references, not stale self-references.

---------

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-19 11:27:06 -07:00
Blake PetterssonandGitHub 6ed56700fb feat(otel): add spans with configurable sampling (#28396)
Signed-off-by: Blake Pettersson <[email protected]>
2026-07-13 19:51:52 +02:00
rumsteadandGitHub 32da51eb6b ci(gitops-engine): support tagged releases for gitops-engine (#27740)
Signed-off-by: rumstead <[email protected]>
2026-07-08 15:26:50 +00:00
Michael CrenshawandGitHub 888a81d643 test: fix flake in cluster cache test (#28618)
Signed-off-by: Michael Crenshaw <[email protected]>
2026-07-07 21:49:24 +00:00
dudineaandGitHub 8957d92d63 fix: fix failure on Sync of resources that do not fit into last-applied-configuration (#28421) (#28440)
Signed-off-by: Eugene Doudine <[email protected]>
2026-06-30 14:02:25 -07:00
Papapetrou PatroklosandGitHub 6c8da08b21 fix: fixes cluster cache tests flakiness (#28407)
Signed-off-by: Patroklos Papapetrou <[email protected]>
2026-06-24 10:37:14 -04:00
Blake PetterssonandGitHub 8abc8a9699 chore: propagate contexts (#28353)
Signed-off-by: Blake Pettersson <[email protected]>
2026-06-22 14:44:08 -04:00
Michael CrenshawandGitHub cf07dc5ba0 fix(gitops-engine): race condition on empty-uid backfill (#28343)
Signed-off-by: Michael Crenshaw <[email protected]>
2026-06-19 04:33:15 -10:00
Alexandre GaudreaultandGitHub 69b1d29f12 fix: deleted resource are incorrectly shown in UI (#28322)
Signed-off-by: Alexandre Gaudreault <[email protected]>
2026-06-18 10:28:08 -04:00
Zach AllerandGitHub d48717f5ed fix: Watch APIServices like we do CRDs (#28289)
Signed-off-by: Zach Aller <[email protected]>
2026-06-17 15:39:29 +00:00
Blake PetterssonandGitHub 7f99a543a5 chore: use test contexts throughout (#28314)
Signed-off-by: Blake Pettersson <[email protected]>
2026-06-17 11:34:29 -04:00
Bisman SinghandGitHub 75dd41888b fix: resolve HPA v2/v1 conversion error in structured merge diff (#27809)
Signed-off-by: Bisman-Singh <[email protected]>
2026-06-16 11:21:42 +03:00
argoproj-renovate[bot]GitHubargoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com>reggie-k
fbdef6e6b9 chore(deps): update module github.com/vektra/mockery/v3 to v3.7.1 (#28270)
Signed-off-by: renovate[bot] <renovate[bot]@users.noreply.github.com>
Signed-off-by: reggie-k <[email protected]>
Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com>
Co-authored-by: reggie-k <[email protected]>
2026-06-15 10:16:04 +03:00
Andrii KorotkovandGitHub 6752e8097e fix: Update checkPermissions to not exit the namespace loop after the first namespace regardless (#23855) (#24735)
Signed-off-by: Andrii Korotkov <[email protected]>
2026-06-14 14:26:19 +02:00
Lohit KolluriandGitHub 679cee550c test: Add t.Parallel() to util/app tests (#28177)
Signed-off-by: Lohit Kolluri <[email protected]>
2026-06-10 16:37:18 -04:00
dudineaandGitHub fd0270af35 chore(deps): bump go-client to v0.36.1, controller-runtime to v0.24.1 (#27804) (#27955)
Signed-off-by: Eugene Doudine <[email protected]>
2026-06-09 11:34:06 -04:00
Mike NgandGitHub 6952b7c91a feat: Add ProvideClusterInfo and Config fields to ExecProviderConfig (#24282) (#27976)
Signed-off-by: Mike Ng <[email protected]>
2026-05-28 12:17:37 -04:00
Pierre GuinoiseauandGitHub b5d67573db fix(gitops-engine): fix nil pointer dereference error in removeWebookMutation() (#27749)
Signed-off-by: Pierre Guinoiseau <[email protected]>
2026-05-27 22:08:38 +02:00
Alexandre GaudreaultandGitHub 9b29c609fd refactor(ssd): use same applier for ssd and ssa (#27624)
Signed-off-by: Alexandre Gaudreault <[email protected]>
2026-05-19 13:48:07 -04:00
Shawn StrattonandGitHub 6eb7bf5251 chore(gitops-engine): drop dead autoscaling/v2beta1 and v2beta2 references (#27887)
Signed-off-by: Shawn Stratton <[email protected]>
2026-05-18 12:44:41 +03:00
Rick BrouwerandGitHub 93ed6a43b1 fix(health): add missing HPA degraded states for metric failures (#26274)
Signed-off-by: Rick Brouwer <[email protected]>
2026-05-15 08:17:27 +02:00
Alexandre GaudreaultandGitHub 5f79c9a8bf fix(ssa): do not run auth reconcile with SSA (#26175) (#27601)
Signed-off-by: Alexandre Gaudreault <[email protected]>
2026-05-14 10:13:09 -04:00
Papapetrou PatroklosandGitHub 37cc6141a7 feat: surface root cause in sync failure message and cache discovery errors (#27750)
Signed-off-by: Patroklos Papapetrou <[email protected]>
2026-05-13 09:25:20 +03:00
Peter JiangandGitHub 094ca372f2 Merge commit from fork
Signed-off-by: Peter Jiang <[email protected]>
2026-05-12 14:37:36 -04:00
Alexandre GaudreaultandGitHub 39d8dcda39 fix(ssd): regression causing diff to error on new objects (#27679) (#27703)
Signed-off-by: Alexandre Gaudreault <[email protected]>
2026-05-07 14:55:12 +00:00
6de1ebc0b6 chore(gitops-engine): migrate to mockery (#27696)
Signed-off-by: Blake Pettersson <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <[email protected]>
2026-05-05 13:02:34 -04:00
1af817eefc fix(gitops-engine): apply HideSecretData to server-side diff results for Secrets (#27598)
Signed-off-by: downfa11 <[email protected]>
Signed-off-by: Peter Jiang <[email protected]>
Signed-off-by: Peter Jiang <[email protected]>
Co-authored-by: downfa11 <[email protected]>
2026-04-30 18:26:06 -04:00
Peter JiangandGitHub 150ba61226 fix: remove resourceVersion from ssd (#27406)
Signed-off-by: Peter Jiang <[email protected]>
2026-04-20 13:27:41 -04:00
Jonathan OgilvieandGitHub f1254aa42e fix: improve perf: switch parentUIDToChildren to map of sets, remove cache rebuild (#26863) (#26864)
Signed-off-by: Jonathan Ogilvie <[email protected]>
Signed-off-by: Jonathan Ogilvie <[email protected]>
2026-03-27 09:17:36 -04:00
Nolan EmirotandGitHub 93e7f36085 chore: fix bad indentation (#26989)
Signed-off-by: emirot <[email protected]>
2026-03-24 18:58:21 -04:00
cabaaf8779 fix: stack overflow when processing circular ownerrefs in resource graph (#26783) (#26790)
Signed-off-by: Jonathan Ogilvie <[email protected]>
Signed-off-by: Jonathan Ogilvie <[email protected]>
Co-authored-by: Copilot <[email protected]>
2026-03-17 12:03:23 -04:00
b62ab37a26 feat(appset): add concurrency when managing applications (#26642)
Signed-off-by: rumstead <[email protected]>
Signed-off-by: Alexandre Gaudreault <[email protected]>
Co-authored-by: Alexandre Gaudreault <[email protected]>
2026-03-17 15:04:11 +00:00
Christopher CocoandGitHub 3fcc1348d6 fix(test): make fail message better for TestAuthReconcileWithMissingNamespace (#26856)
Signed-off-by: Christopher Coco <[email protected]>
2026-03-16 03:13:40 -10:00
Arthur Outhenin-ChalandreandGitHub 30f35b5ad4 feat: add Prune and Delete as application level sync option (#23370)
Signed-off-by: Arthur Outhenin-Chalandre <[email protected]>
2026-03-13 13:50:34 -04:00
Papapetrou PatroklosandGitHub c61ac28e82 fix: fixes the already exists error when syncing apps with replace (#26791)
Signed-off-by: Patroklos Papapetrou <[email protected]>
2026-03-12 12:14:08 +02:00
21e562a635 fix: health check doesn't detect resource deletion during sync operation (#26286)
Signed-off-by: Christopher Coco <[email protected]>
Co-authored-by: Alexandre Gaudreault <[email protected]>
2026-03-11 21:14:30 +00:00
Papapetrou PatroklosandGitHub 993c183092 fix: ensure compatibility of kubeversion.version with what helm reeturns (#26469)
Signed-off-by: Patroklos Papapetrou <[email protected]>
2026-03-01 11:40:15 +02:00
d4b845c68a fix: multi-level cross-namespace hierarchy traversal for cluster-scoped intermediates (#26408, #24379) (#26410)
Signed-off-by: Jonathan Ogilvie <[email protected]>
Signed-off-by: Jonathan Ogilvie <[email protected]>
Co-authored-by: Alexandre Gaudreault <[email protected]>
2026-02-27 08:07:06 -05:00
Peter JiangandGitHub 6306ba3019 fix: use csapgrade to patch managedFields for client-side apply migration (#26289)
Signed-off-by: Peter Jiang <[email protected]>
2026-02-19 09:00:42 +02:00
Christopher CocoandGitHub b0c7db1b6a fix: skip namespace check on cluster scoped rbac resources for auth reconcile (#26403)
Signed-off-by: Christopher Coco <[email protected]>
2026-02-18 10:55:54 -05:00
Arthur Outhenin-ChalandreandGitHub c9efd7a444 fix(engine): correctly set prune confirmation message in setRunningPhase (#25915)
Signed-off-by: Arthur Outhenin-Chalandre <[email protected]>
2026-02-17 09:58:49 -05:00
Leonardo Luz AlmeidaandGitHub 3795f840c3 chore: fix gitops-engine mod name so it can be referenced by external repos (#26407)
Signed-off-by: Leonardo Luz Almeida <[email protected]>
2026-02-12 09:29:40 -05:00
Alexandre GaudreaultandGitHub 51dd087c92 fix: consider Replace/Force sync option on live resource annotations (#26110)
Signed-off-by: Alexandre Gaudreault <[email protected]>
2026-01-22 17:19:45 -05:00
Aditya RajandGitHub 1c32338b21 fix: resolve flaky TestSync_SyncWaveHookError test (#26080)
Signed-off-by: Aditya Raj <[email protected]>
2026-01-21 09:19:39 +02:00
b6b92609fd fix(hooks): always remove finalizers (#23226) (#25916)
Signed-off-by: Alexandre Gaudreault <[email protected]>
Co-authored-by: Leonardo Luz Almeida <[email protected]>
2026-01-19 16:42:03 +00:00
e37afcc8a2 chore: add tests to validate ConfigMap/Secret key removal in server-side diff (#25216)
Signed-off-by: Pedro Ribeiro <[email protected]>
Co-authored-by: Pedro Ribeiro <[email protected]>
Co-authored-by: Leonardo Luz Almeida <[email protected]>
2026-01-15 16:53:13 -05:00