Full ProxySpec/ProxyStatus/Proxy types per the plan: PlacementSpec,
CloudInitSpec, EndpointSpec, HealthCheckSpec, SecretKeySelector, all
defaults, and 7 CEL XValidation rules enforcing mode/provider
immutability, provider/endpoint required-iff-Managed/External, and
cloud-init exactly-one-of inline/secretRef.
Applies the four corrections identified during planning that would
otherwise be silent bugs: MaxLeases as *int32 (so an explicit 0 survives
Go round-trips instead of re-defaulting to 5), HealthCheck's
default={} marker (so nested defaults apply even when the field is
omitted entirely), MinLength=1 on Provider/CloudInit.Inline (so the CEL
has() checks stay simple), and listType=map on Conditions.
Adds pure helpers (EffectivePort, EffectiveHost, HealthCheckOrDefault,
MaxLeasesOrDefault) with table-driven tests, for use by the health
engine, discovery API, and spec-hash computation in later steps.
Patches the scaffolded placeholder controller test's resource literal to
a schema-valid spec so it survives the new CRD validation — the test
itself is rewritten wholesale in Step 4 alongside the real reconciler.
Regenerated deepcopy and the CRD; make test green (envtest confirmed all
7 CEL rules enforced by a real apiserver).
Co-Authored-By: Claude <noreply@anthropic.com>
57 lines
3.2 KiB
JSON
57 lines
3.2 KiB
JSON
{
|
|
"permissions": {
|
|
"allow": [
|
|
"Bash(go version *)",
|
|
"Bash(go mod *)",
|
|
"Read(//Users/jan.novak/.claude/skills/go-project-bootstrap/references/**)",
|
|
"Bash(ls -la /Users/jan.novak/.claude/skills/go-project-bootstrap/assets/ /Users/jan.novak/.claude/skills/go-project-bootstrap/assets/commands/ /Users/jan.novak/.claude/skills/go-project-bootstrap/assets/agents/ 2>&1)",
|
|
"Read(//Users/jan.novak/.claude/skills/go-project-bootstrap/assets/**)",
|
|
"Read(//Users/jan.novak/.claude/skills/go-project-bootstrap/assets/agents/**)",
|
|
"Read(//Users/jan.novak/.claude/skills/go-project-bootstrap/assets/commands/**)",
|
|
"Bash(mkdir -p /Users/jan.novak/srv/go/egress-proxies-operator/docs/plans && touch /Users/jan.novak/srv/go/egress-proxies-operator/docs/plans/.gitkeep && mkdir -p /Users/jan.novak/srv/go/egress-proxies-operator/.claude/commands /Users/jan.novak/srv/go/egress-proxies-operator/.claude/agents && ls -la /Users/jan.novak/srv/go/egress-proxies-operator)",
|
|
"Bash(git status)",
|
|
"Bash(git status:*)",
|
|
"Bash(git diff:*)",
|
|
"Bash(git log:*)",
|
|
"Bash(git branch:*)",
|
|
"Bash(git add:*)",
|
|
"Bash(git checkout:*)",
|
|
"Bash(git pull:*)",
|
|
"Bash(git fetch:*)",
|
|
"Bash(date:*)",
|
|
"Read(//tmp/**)",
|
|
"Read(//private/tmp/**)",
|
|
"Bash(go build:*)",
|
|
"Bash(go test:*)",
|
|
"Bash(go vet:*)",
|
|
"Bash(go mod:*)",
|
|
"Bash(go run:*)",
|
|
"Bash(go version:*)",
|
|
"Bash(go get:*)",
|
|
"Bash(golangci-lint run:*)",
|
|
"Bash(golangci-lint --version)",
|
|
"Bash(gofumpt:*)",
|
|
"Bash(tea pr create:*)",
|
|
"Bash(curl -sL https://go.dev/dl/?mode=json)",
|
|
"Bash(find / -iname \"docs-conventions.md\" -maxdepth 6)",
|
|
"Read(//Users/jan.novak/.claude/**)",
|
|
"Read(//Users/jan.novak/.claude/skills/**)",
|
|
"Bash(mkdir -p docs/plans && date \"+%Y-%m-%d-%H%M\")",
|
|
"Bash(go install *)",
|
|
"Bash(go env *)",
|
|
"Bash(git rm *)",
|
|
"Bash(mkdir -p /Users/jan.novak/srv/go/egress-proxies-operator/docs/plans-executions)",
|
|
"Bash(cd /Users/jan.novak/srv/go/egress-proxies-operator *)",
|
|
"Bash(echo \"build: $?\")",
|
|
"Bash(echo \"vet: $?\")",
|
|
"Bash(perl -i -pe 's{^\\\\t\\\\t\\\\t\\\\t\\\\t// TODO\\\\\\(user\\\\\\): Specify other spec details if needed\\\\.\\\\n}{\\\\t\\\\t\\\\t\\\\t\\\\t// A minimal, schema-valid spec so this placeholder test survives the\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t// CEL/CRD validation added in Step 1. Rewritten wholesale in Step 4\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t// alongside the real reconciler and envtest suite.\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tSpec: crawlv1alpha1.ProxySpec{\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tMode: crawlv1alpha1.ModeExternal,\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tEndpoint: &crawlv1alpha1.EndpointSpec{Host: \"10.0.0.1\"},\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t},\\\\n}' internal/controller/proxy_controller_test.go)"
|
|
],
|
|
"additionalDirectories": [
|
|
"/Users/jan.novak/srv/go/egress-proxies-operator/.claude",
|
|
"/Users/jan.novak/srv/go/egress-proxies-operator/docs/plans",
|
|
"/Users/jan.novak/srv/go/egress-proxies-operator/docs",
|
|
"/Users/jan.novak/srv/go/egress-proxies-operator/docs/prompts"
|
|
]
|
|
}
|
|
}
|