docs: remove stale references to ActorTemplate as a Kubernetes CRD - #1404
Draft
Youssuf Elshall (yelshall) wants to merge 1 commit into
Draft
docs: remove stale references to ActorTemplate as a Kubernetes CRD#1404Youssuf Elshall (yelshall) wants to merge 1 commit into
Youssuf Elshall (yelshall) wants to merge 1 commit into
Conversation
Youssuf Elshall (yelshall)
force-pushed
the
docs/actortemplate-post-crd-cleanup
branch
from
September 2, 2026 18:17
b1018ef to
2d166d5
Compare
The ActorTemplate CRD was deleted when its resources moved to the
substrate gRPC API and the control-plane store (created and managed
with kubectl-ate, persisted in PostgreSQL). Several documents still
described ActorTemplate as a Kubernetes CRD, or described
namespace/RBAC relationships that no longer exist:
- architecture.md: the resource-model section, the persona
description, the governance rationale, and the UML class diagram
all placed ActorTemplate in kube-apiserver as a CRD. The diagram
also showed a "workerPoolRef" relation that does not exist; pool
selection is a label-based workerSelector match, and an Actor
references its template with the actor_template ref.
- glossary.md: ActorTemplate was listed under "Resources (declarative,
Kubernetes CRDs)", and the Atespace entry contrasted atespaces with
"the namespace an ActorTemplate lives in" (templates now live in
atespaces; WorkerPools live in namespaces).
- api-guide.md: the Best Practices section required ActorTemplate and
WorkerPool to share a namespace or RBAC; placement is actually by
sandboxClass and workerSelector labels. The ActorTemplate section
also kept CRD-era spec.-prefixed field paths ("ActorTemplateSpec",
"spec.volumes", "spec.resources") even though the protojson
manifest has top-level fields, and typed workerSelector as
*LabelSelector where the proto type is Selector.
- csi-volumes.md: same stale spec.-prefixed field paths, which
contradicted the top-level fields shown in its own YAML examples.
- api-style-guide.md: cited actor_template_name as an immutable field
example; the field is actor_template, and it is mutable - the
actor's immutable example is source_snapshot_tag.
- code-layout.md: described cmd/atecontroller as the controller for
WorkerPool/ActorTemplate; it now reconciles WorkerPools and
network/egress resources only.
- code comments: template_reconciler.go's goldenSnapshotWarmupFor
said it "mirrors the CRD controller's function of the same name;
keep both in sync" - the CRD controller was deleted, so that
instruction referenced nonexistent code. The claude-code-multiplex
demo UI comment labeled ActorTemplates as k8s CRDs, and
benchmarking/workloads/deploy.sh used a spec.-prefixed field path
in a comment (the protojson manifest is top-level).
- README.md: demo blurbs referenced "CRD routing" and templates
"across three namespaces"; routing goes through the Substrate
router, and the multi-template demo places templates in different
atespaces.
Youssuf Elshall (yelshall)
force-pushed
the
docs/actortemplate-post-crd-cleanup
branch
from
September 2, 2026 18:21
2d166d5 to
1b34a49
Compare
Collaborator
|
I see this PR is still in draft state, is this ready for review? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Now that the ActorTemplate CRD has been deleted and its resources moved to the substrate gRPC API and the control-plane store (created/managed with
kubectl-ate, persisted in PostgreSQL), several documents still describe ActorTemplate as a Kubernetes CRD, or describe namespace/RBAC relationships that no longer exist. This sweeps the docs for those stale references.Fixes #368 (docs side).
Stale references found and fixed
docs/architecture.md
kube-apiserverwith a<<CRD>>stereotype, and drew aActorTemplate "1" --> "1" WorkerPool : workerPoolRefrelation that does not exist in the API. ActorTemplate is now a<<record>>inate-api-server; pool selection is a label-basedworkerSelectormatch, and an Actor references its template via theactor_templateref (verified againstpkg/proto/ateapipb/ateapi.proto).docs/glossary.md
kubectl ate create actor-templateand stored in the control-plane database.ActorTemplatelives in" — ActorTemplates now live in atespaces; it is WorkerPools that live in Kubernetes namespaces.docs/api-guide.md
ActorTemplateandWorkerPoolare in the same namespace or have appropriate RBAC permissions to reference each other" — no longer meaningful. Replaced with a "Placement" bullet reflecting the actual model:sandboxClassmatch plusworkerSelectorlabel matching, not namespace/RBAC.spec.-prefixed field paths: the heading "Specification (ActorTemplateSpec)" (no such type exists — the protojson manifest has top-level fields, seedemos/counter/counter-template.yaml.tmpl), "Sandbox Right-Sizing (spec.resources)" plus its inbound anchor links, andspec.volumes/spec.resources.limits.*references in the SystemInfo and per-container limits sections. All de-prefixed; anchors updated.workerSelectorwas also typed*LabelSelectorwhere the proto type isSelector, and "viakubectl-ate create actor" used the tool name as a command (nowkubectl ate create actor).docs/api-style-guide.md
actor_template_nameas an example immutable field; the Actor message's actual field is theactor_templateref, and it is mutable (+k8s:mutableinpkg/proto/ateapipb/ateapi.proto— actors may be re-pointed to a new template). The immutable example issource_snapshot_tag(+k8s:immutable).spec.-prefixed field paths ("spec.volumes", "spec.containers[].volumeMounts[]") in the ActorTemplate volume-configuration steps — which contradicted the top-levelvolumes:/volumeMounts:fields shown in the YAML examples directly below them.docs/dev/code-layout.md
cmd/atecontrollerwas described as the "Kubernetes controller for WorkerPool/ActorTemplate"; its controllers are now WorkerPool, NetworkPolicy, and egress MITM trust (verified againstcmd/atecontroller/internal/controllers/).README.md
Stale references in code comments (also fixed)
cmd/ateapi/internal/controlapi/template_reconciler.go:354—goldenSnapshotWarmupFor's comment said it "Mirrors the CRD controller's function of the same name; keep both in sync." The CRD controller was deleted in the cutover, so the "keep both in sync" instruction referenced nonexistent code; dropped the sentence.demos/claude-code-multiplex/ui/server.go:400— comment labeled "ActorTemplates / WorkerPools (k8s CRDs)"; only WorkerPool is a CRD. Now "ActorTemplate / WorkerPool resources".benchmarking/workloads/deploy.sh:47— comment used the CRD-eraspec.resources.limits.memorypath; the protojson manifest is top-level. (The script's actual commands already usekubectl ate create/get actor-template— only the comment was stale.)Known leftover not addressed here (code change, not docs): the
ateletmetrics code names its OTel template-atespace fieldtemplateNamespace(cmd/atelet/metrics.go:77et al., fed fromreq.GetActorTemplateAtespace()intoateattr.TemplateAtespaceKey) — a CRD-era name holding an atespace. A mechanical rename (templateNamespace→templateAtespace, ~21 occurrences across 6 files) would fix it; happy to do that as a follow-up PR if wanted.What was checked and found current (no change needed)
docs/api-guide.mdActorTemplate example (protojson-shaped,kubectl ate create actor-template), WorkerPool/SandboxConfig CRD examples, and the gRPC API section — all already reflect the cutover.docs/observability.md—ate.template.atespacelabels andate.workerpool.namespace(WorkerPool is still namespaced) are correct.docs/threat-model.mdT-07/T-08 — "attacker who can create ActorTemplates" threats apply equally at the API layer.docs/authentication.md,docs/roadmap.md,AGENTS.md,CLAUDE.md— no ActorTemplate-CRD references.Notes for reviewers
worker_selector,actor_template); the surrounding prose uses the spec-style names (workerSelector) as the rest of the docs do.docs/authentication.md.docs/assets/threat-model-diagram.svg— it predates the cutover but only depicts threat flows, not the resource model.