# AWP I0 Kubernetes execution substrate

`execution-base.yaml` creates the bounded control/execution namespaces, the control-plane workspace ServiceAccount, namespace-scoped RBAC, resource quota/defaults, and a namespace-wide default-deny NetworkPolicy.

`runtimeclass-gvisor.yaml` registers the `gvisor` RuntimeClass with handler `runsc`. Applying this object does **not** install gVisor on a node; the K3s/containerd nodes must already expose a compatible `runsc` runtime handler. Lane C live proof must verify that rather than inferring compatibility from the RuntimeClass object alone.

Workspace Pods are created by `@awp/provider-workspace-kubernetes`. They receive their own ServiceAccount with token automount disabled and a per-workspace NetworkPolicy. Persistent PVCs are intentionally retained past compute destruction until checkpoint collection is explicitly confirmed.

## Apply

Run only against the intended AWP cluster:

```bash
kubectl apply -f infra/k8s/execution-base.yaml
kubectl apply -f infra/k8s/runtimeclass-gvisor.yaml
```

Then run the preflight/live evidence scripts under `tools/preflight/**`.

## Trust boundary

The namespace Role can manage only workspace Pod/PVC/Service/ServiceAccount/NetworkPolicy resources in `awp-workspaces`. It has no Secret, Node, Namespace, ClusterRole, CRD, exec, impersonation or cluster-admin authority. RuntimeClass creation itself is a cluster-bootstrap operation and is separate from normal workspace execution authority.
