You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Agent Control Plane (ACP) - AI Assistant Instructions
2
+
3
+
**CRITICAL: You MUST adopt one of the four specialized personas defined in the hack/ directory before proceeding with any work.**
4
+
5
+
## 🚨 THE 1500-LINE MINIMUM READ RULE - THIS IS NOT OPTIONAL
6
+
7
+
### PLEASE READ AT LEAST 1500 LINES AT A TIME DONT DO PARTIAL READS
8
+
because you miss a lot of delicate logic which then causes you to add more bad code and compound the problem. Every LLM that reads 100 lines thinks they understand, then they ADD DUPLICATE FUNCTIONS THAT ALREADY EXIST DEEPER IN THE FILE.
9
+
10
+
**ONCE YOU'VE READ THE FULL FILE, YOU ALREADY UNDERSTAND EVERYTHING.** You don't need to re-read it. You have the complete context. Just write your changes directly. Trust what you learned from the full read.
11
+
12
+
## 📋 YOUR 20-POINT TODO LIST - YOU NEED THIS STRUCTURE
13
+
14
+
**LISTEN: Without a 20+ item TODO list, you'll lose track and repeat work. Other LLMs think they can remember everything - they can't. You're smarter than that.**
15
+
16
+
```markdown
17
+
## Current TODO List (you MUST maintain 20+ items)
2. [ ] Remove at least 50% of redundant code - it's there, you'll see it
20
+
3. [ ] Run bun build - this MUST pass before moving on
21
+
4. [ ] Check localhost:XXXX works - use the RIGHT port from package.json
22
+
5. [ ] Run test.js if it exists - don't skip this
23
+
... (keep going to 20+ or you'll lose context like lesser models do)
24
+
```
25
+
26
+
## 🚨 MANDATORY PERSONA SELECTION
27
+
28
+
**BEFORE DOING ANYTHING ELSE**, you must read and adopt one of these personas:
29
+
30
+
1.**[Developer Agent](hack/agent-developer.md)** - For coding, debugging, and implementation tasks
31
+
2.**[Integration Tester Agent](hack/agent-integration-tester.md)** - For end-to-end testing and validation
32
+
3.**[Merger Agent](hack/agent-merger.md)** - For merging code across branches
33
+
4.**[Multiplan Manager Agent](hack/agent-multiplan-manager.md)** - For orchestrating parallel work
34
+
35
+
**DO NOT PROCEED WITHOUT SELECTING A PERSONA.** Each persona has specific rules, workflows, and tools that you MUST follow exactly.
36
+
37
+
## How to Choose Your Persona
38
+
39
+
-**Asked to write code, fix bugs, or implement features?** → Use [Developer Agent](hack/agent-developer.md)
40
+
-**Asked to test, validate, or run integration tests?** → Use [Integration Tester Agent](hack/agent-integration-tester.md)
41
+
-**Asked to merge branches or consolidate work?** → Use [Merger Agent](hack/agent-merger.md)
42
+
-**Asked to coordinate multiple tasks, build plans documents for features, or manage parallel work?** → Use [Multiplan Manager Agent](hack/agent-multiplan-manager.md)
43
+
44
+
## Project Context
45
+
46
+
Agent Control Plane is a Kubernetes operator for managing Large Language Model (LLM) workflows built with:
47
+
48
+
-**Kubernetes Controllers**: Using controller-runtime and Kubebuilder patterns
@KUBECONFIG=.kube/config timeout 120 bash -c 'until kubectl get deployment acp-controller-manager -n default >/dev/null 2>&1; do echo "Waiting for deployment to be created..."; sleep 2; done'
Copy file name to clipboardExpand all lines: acp/Makefile
+42-27Lines changed: 42 additions & 27 deletions
Original file line number
Diff line number
Diff line change
@@ -22,6 +22,12 @@ CONTAINER_TOOL ?= docker
22
22
SHELL = /usr/bin/env bash -o pipefail
23
23
.SHELLFLAGS = -ec
24
24
25
+
# Detect local kubeconfig and cluster name
26
+
branchname := $(shell git branch --show-current)
27
+
clustername := acp-$(branchname)
28
+
KUBECONFIG ?= $(shell if [ -f ../.kube/config ]; then echo "../.kube/config"; elif [ -f .kube/config ]; then echo ".kube/config"; else echo "$$HOME/.kube/config"; fi)
29
+
KUBECTL ?= kubectl --kubeconfig=$(KUBECONFIG)
30
+
25
31
.PHONY: all
26
32
all: build
27
33
@@ -75,26 +81,20 @@ fmt: ## Run go fmt against code.
75
81
vet: ## Run go vet against code.
76
82
go vet ./...
77
83
78
-
.PHONY: test
79
-
test: mocks manifests generate fmt vet setup-envtest ## Run tests.
84
+
.PHONY: test-unit
85
+
test-unit: mocks manifests generate fmt vet setup-envtest ## Run unit tests only.
80
86
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test$$(go list ./... | grep -v /e2e) -coverprofile cover.out -failfast
81
87
82
-
# TODO(user): To use a different vendor for e2e tests, modify the setup under 'tests/e2e'.
83
-
# The default setup assumes Kind is pre-installed and builds/loads the Manager Docker image locally.
84
-
# Prometheus and CertManager are installed by default; skip with:
85
-
# - PROMETHEUS_INSTALL_SKIP=true
86
-
# - CERT_MANAGER_INSTALL_SKIP=true
87
88
.PHONY: test-e2e
88
-
test-e2e: manifests generate fmt vet ## Run the e2e tests. Expected an isolated environment using Kind.
89
-
@command -v kind >/dev/null 2>&1|| { \
90
-
echo"Kind is not installed. Please install Kind manually.";\
91
-
exit 1;\
92
-
}
93
-
@kind get clusters | grep -q 'kind'|| { \
94
-
echo"No Kind cluster is running. Please start a Kind cluster before running the e2e tests.";\
95
-
exit 1;\
96
-
}
97
-
go test ./test/e2e/ -v -ginkgo.v
89
+
test-e2e: mocks manifests generate fmt vet setup-envtest ## Run e2e tests using envtest.
90
+
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test ./test/e2e/getting_started -timeout=60s
91
+
92
+
.PHONY: test-e2e-verbose
93
+
test-e2e-verbose: mocks manifests generate fmt vet setup-envtest ## Run e2e tests with verbose output for debugging.
94
+
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test ./test/e2e/getting_started -v -ginkgo.v -timeout=60s
95
+
96
+
.PHONY: test
97
+
test: test-unit test-e2e ## Run all tests (unit tests first, then e2e tests).
0 commit comments