This is an automated email from the ASF dual-hosted git repository.

adheipsingh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid-operator.git


The following commit(s) were added to refs/heads/master by this push:
     new 1075589  Update AGENTS.md (#14)
1075589 is described below

commit 107558984d6d6d281f1443e16f170207d529e85e
Author: Razin Bouzar <[email protected]>
AuthorDate: Sun Apr 12 21:01:58 2026 -0700

    Update AGENTS.md (#14)
---
 AGENTS.md | 129 +++++++++++++++++++++-----------------------------------------
 1 file changed, 43 insertions(+), 86 deletions(-)

diff --git a/AGENTS.md b/AGENTS.md
index 04ec54c..9b38de7 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -17,109 +17,66 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-# Druid Operator — Agent Guide
+# Druid Operator Agent Guide
 
-This document provides guidance for AI agents working on the druid-operator 
codebase. It is a Go-based Kubernetes operator for [Apache 
Druid](https://druid.apache.org/), built with [Kubebuilder 
v3](https://book.kubebuilder.io/).
+Operational guidance for AI agents working in the druid-operator repository.
 
 ## Project Structure
 
 | Path | Purpose |
 |------|---------|
-| `apis/druid/v1alpha1/` | CRD type definitions (`Druid`, `DruidIngestion`). 
Edit here to change the API. |
+| `apis/druid/v1alpha1/` | API types for `Druid` and `DruidIngestion`. |
 | `controllers/druid/` | Reconciler logic for the `Druid` custom resource. |
 | `controllers/ingestion/` | Reconciler logic for the `DruidIngestion` custom 
resource. |
-| `pkg/druidapi/` | Client for the Druid HTTP API. |
-| `pkg/http/` | Shared HTTP utilities. |
-| `pkg/util/` | General-purpose utilities. |
-| `chart/` | Helm chart for deploying the operator. CRDs live under 
`chart/crds/` and are **generated** — do not edit them by hand. |
-| `config/` | Kustomize manifests for CRDs, RBAC, manager, samples, and 
related deployment config. Only `config/crd/bases/` and `config/rbac/role.yaml` 
are generated — do not edit those by hand. |
-| `e2e/` | End-to-end tests. Requires a [kind](https://kind.sigs.k8s.io/) 
cluster. |
-| `docs/` | Documentation, including API specifications generated from Go 
types. |
-| `hack/` | Boilerplate and tooling scripts. |
-
-## Code Standards
-
-- All source files must include the Apache 2.0 license header. This is audited 
by `make rat` in CI. New files without a header will fail the check.
-- `zz_generated.deepcopy.go` is auto-generated by `controller-gen`. Never edit 
it manually — run `make generate` instead.
-- CRD YAML files under `config/crd/bases/` and `chart/crds/` have their Apache 
header prepended automatically by `make manifests`. Do not add the header 
manually to these files.
-- Follow standard Go conventions. Run `make fmt` and `make vet` before 
committing.
+| `pkg/` | Shared libraries such as the Druid API client, HTTP helpers, and 
utilities. |
+| `config/` | Kustomize config for CRDs, RBAC, manager, samples, and 
deployment manifests. |
+| `chart/` | Helm chart for the operator, including generated CRDs under 
`chart/crds/`. |
+| `e2e/` | End-to-end test scripts and manifests. |
+| `docs/` | Project docs, including generated API reference docs. |
+| `hack/` | Boilerplate, templates, and tooling support files. |
 
-## Key Make Targets
-
-Run `make help` to see all available targets with descriptions.
-
-### After editing `*_types.go` (API changes)
-
-These two commands **must** be run together whenever the CRD types change:
-
-```shell
-make manifests   # Regenerate CRDs, RBAC role, and webhook config
-make generate    # Regenerate DeepCopy methods (zz_generated.deepcopy.go)
-```
-
-### Formatting and linting
-
-```shell
-make fmt         # Run go fmt
-make vet         # Run go vet
-```
-
-### Testing
+## Working Rules
 
-```shell
-make test        # Unit tests using envtest (no real cluster required)
-make e2e         # End-to-end tests (requires kind cluster — see below)
-```
+- Hand-written source, docs, and config files generally need the Apache 2.0 
header.
+- Do not infer header requirements from file extension alone. `make rat` 
excludes some paths, including shell scripts, `zz_generated.*.go`, `PROJECT`, 
`.asf.yaml`, and some binary or checksum artifacts.
+- Never hand-edit generated files. Regenerate them with the owning Make target.
+- Follow standard Go conventions. Run `make fmt` and `make vet` when 
validating code changes.
 
-### License audit
+## Generated Artifacts
 
-```shell
-make rat         # Apache RAT license header check
-```
+- After editing `*_types.go`, run both `make manifests` and `make generate`.
+- `apis/druid/v1alpha1/zz_generated.deepcopy.go` is generated by `make 
generate`.
+- `config/crd/bases/*.yaml` and `config/rbac/role.yaml` are generated by `make 
manifests`.
+- `chart/crds/*.yaml` is generated output and must not be edited by hand.
+- `make manifests` prepends Apache headers to the generated YAML files it 
owns. Do not add those headers manually.
 
-### Documentation
-
-```shell
-make api-docs    # Regenerate docs/api_specifications/druid.md from Go types
-```
-
-### Building
-
-```shell
-make build                 # Compile the manager binary to bin/manager
-make docker-build          # Build the operator Docker image
-```
-
-## Running Locally with kind
-
-```shell
-make kind                      # Bootstrap a local kind cluster
-make install                   # Install CRDs into the cluster
-make run                       # Run the operator from your host (no image 
build needed)
-```
-
-For E2E tests, the full flow is:
+## Key Make Targets
 
-```shell
-make kind
-make e2e
-```
+- `make help`: list available targets.
+- `make test`: runs `manifests`, `generate`, `fmt`, `vet`, envtest setup, and 
`go test ./...`.
+- `make build`: lighter local compile path, but still runs `manifests`, 
`generate`, `fmt`, and `vet` first.
+- `make docker-build`: heavyweight verification plus image build because it 
depends on `make test`.
+- `make kind`: bootstrap a local kind cluster.
+- `make e2e`: run end-to-end tests; assumes a working kind cluster.
+- `make api-docs`: regenerate `docs/api_specifications/druid.md` after CRD API 
changes.
+- `make rat`: run the Apache RAT license audit.
 
-## Before Submitting a PR
+## Before Sending a PR
 
-1. Run `make manifests generate` if you touched any `*_types.go` file.
+1. If you changed `*_types.go`, run `make manifests` and `make generate`.
 2. Run `make fmt vet`.
-3. Run `make test` — all unit tests must pass.
-4. Run `make rat` — all files must have the Apache license header.
-5. If you changed the CRD API, run `make api-docs` to update 
`docs/api_specifications/druid.md`.
-6. Verify the checklist in `.github/pull_request_template.md`:
-   - Tested on a real Kubernetes cluster.
-   - Backward compatibility verified (or breaking changes noted).
-   - Documentation updated for new or modified behavior.
+3. Run `make test`.
+4. Run `make rat`.
+5. If you changed the CRD API, run `make api-docs`.
+6. Check `.github/pull_request_template.md` and ensure the change:
+   - was tested on a real Kubernetes cluster when applicable,
+   - considered backward compatibility or called out breaking changes,
+   - adds comments explaining the "why" where intent is not obvious,
+   - updates docs for new or changed behavior.
 
 ## Common Pitfalls
 
-- **Stale generated files**: Editing `*_types.go` without running `make 
manifests generate` will cause the CRDs and DeepCopy methods to drift from the 
types. CI will catch this but it is easy to miss locally.
-- **Missing license headers**: Any new file (`.go`, `.yaml`, etc.) needs an 
Apache 2.0 header. Check `hack/boilerplate.go.txt` for the Go header template.
-- **E2E without kind**: `make e2e` assumes a kind cluster is running and 
configured. Running it without one will fail immediately.
-- **Hand-editing generated YAMLs**: Changes to `config/crd/bases/*.yaml`, 
`chart/crds/*.yaml`, or `config/rbac/role.yaml` will be overwritten by the next 
`make manifests` run.
+- Editing `*_types.go` without regenerating manifests and DeepCopy code.
+- Hand-editing generated YAML under `config/crd/bases/`, 
`config/rbac/role.yaml`, or `chart/crds/`.
+- Adding license headers mechanically to excluded or generated files.
+- Treating `make docker-build` as a cheap local smoke test.
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to