Repository navigation
Conversation
A default install had no resources, so the executor was BestEffort and its sandboxes could claim memory the node didn't have. requests equal limits on the executor and on the enable-forwarding init container, so the pod is Guaranteed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The executor's built-in 20 sessions of 2048 MiB need 40 GiB, far past the 2Gi pod. A chart ConfigMap sets EXECUTOR_MAX_SESSIONS=1 and EXECUTOR_SANDBOX_MEMORY=1536 ahead of the user's Secret in envFrom, so a key in the Secret still overrides it, and a checksum annotation rolls the pod when the defaults change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A default install gave the api no resources, so it was BestEffort and could take whatever the node had. A new api.resources key defaults to requests equal to limits; the api has no init containers, so the pod is Guaranteed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#513) The README still told readers to give the executor a 41Gi limit for 20 sessions and warned about a BestEffort pod. It now says what the chart defaults to (one 1536 MiB run per 2 CPU / 2Gi Guaranteed executor, the same for the api), that more runs at once come from executor.replicas, how to give a heavy module more memory, and that a run beyond the free executors waits up to 10 minutes, plan or apply, before it fails. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Verified on Docker Desktop (#513): all three checks passHeads: #515 Setup:
1. Both pods Guaranteed, one 1536 MiB session: pass
2. A real 11-resource hashicorp/aws 6.x plan completes: pass
3. A second plan waits for the executor, then completes: pass
Everything is torn down: namespace, ingress-nginx, CoreDNS rewrite, the — Rahul (engineering) |
ingress-nginx was retired in March 2026. The install example now takes a placeholder IngressClass, the prerequisites say any controller that serves a standard Ingress works and not to start on ingress-nginx, and the evaluation harness line names Traefik. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The README's ingress example no longer names a controller (5ce0244, a new commit on top):
Verified with the harness end to end on Docker Desktop. The checkout was a local merge of this branch, #510 (now on Traefik) and #515, and was not pushed. Teardown, setup, — Rahul (engineering) |
Closes #513.
Stacks on #512 → #509 → #508 → #507 → #506. Base is #512's branch; GitHub retargets it as the stack merges.
Depends on #515 (the plan waits 10 minutes for an executor, off main). Without it, a plan that finds the one session busy still fails after a minute, which is what the README now says it doesn't do.
Behaviour change
enable-forwardinginit container gets fixed equal resources, so the pod isGuaranteed. A chart ConfigMap setsEXECUTOR_MAX_SESSIONS=1andEXECUTOR_SANDBOX_MEMORY=1536, listed before the user's Secret inenvFrom, so a key in the Secret still overrides it. Achecksum/configannotation rolls the executor when those defaults change.api.resourceskey, default requests = limits = 2 CPU / 2Gi (Guaranteed).executor.replicas, how to give a heavy module more memory (memory ≥ sessions × sandbox memory + 512Mi, requests and limits together), and that a run beyond the free executors waits up to 10 minutes, plan or apply, then fails. The Docker Desktop section says the harness runs the defaults.Configuration impact
A default install now reserves 4 CPU / 4 GiB for api + executor and runs one run at a time. Anyone who set only
executor.resources.limits.memorykeeps the 2Gi request and gets aBurstablepod; set requests and limits together.api.resourcesbecomes part of the chart's values contract once published. No migration.Validation
helm lint --strict deploy/helm/openplan -f deploy/helm/openplan/ci/values.yaml(Helm v4.1.1, CI's pin): 1 chart linted, 0 failed.Guaranteed, a real AWS plan completes, a second plan waits past 60 s then completes) follows as a comment here once feat: a plan waits 10 minutes for an executor, like an apply (#513) #515's api image is built.🤖 Generated with Claude Code