1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# Live proof
Date: 2026-11-04
Hosted gateway: `https://k8s.socialweb.computer`
Cluster: `knotless-poc` (hosted tenant k3s)
Kubeconfig: obtained with `scripts/tenant-kubeconfig.sh`, which drives
`socialweb-computer-kcp/scripts/oauth-signin.ts` with
`~/.aliceoa_bsky_social_source`. The credential file and session cookie
were not printed or committed.
## Run
```bash
scripts/live-proof.sh
```
The Job's pod became Ready, the checkout and steps streamed in, four
steps ran, `/outputs/ran.txt` streamed back, and the Job was deleted.
Result:
```json
{
"name": "knotless-poc",
"job": "knotless-poc",
"namespace": "default",
"pod": "knotless-poc-ldht6",
"status": "success",
"steps": [
{"name": "date", "status": "success", "exitCode": 0, "durationMs": 450, "timedOut": false},
{"name": "hostname", "status": "success", "exitCode": 0, "durationMs": 350, "timedOut": false},
{"name": "files", "status": "success", "exitCode": 0, "durationMs": 401, "timedOut": false},
{"name": "outputs", "status": "success", "exitCode": 0, "durationMs": 400, "timedOut": false}
],
"log": "~/.tmp/knotless-runner-k8s/run.log",
"outputs": "~/.tmp/knotless-runner-k8s/outputs",
"jobDeleted": true,
"dryRun": false,
"error": null
}
```
The pod hostname in the `hostname` step matched the pod name, and
`/work/steps.tsv` was present after the tar upload. The output file
contained:
```text
ran at Wed Nov 4 06:37:37 UTC 2026
```
## Node
A node appeared while the Job's pod was Pending/Running:
```text
node/2wjeqtgx-knotless-poc-node1 Ready <none> 12s v1.36.4+k3s1
```
The Job was deleted after the run. The tenant's scale hold then returned
the cluster to zero nodes, confirmed with `kubectl get nodes`:
```text
tenant nodes: 0
```
`scripts/tenant-kubeconfig.sh` with `DELETE=1` deletes the cluster
itself.
## What this proves
- The client-certificate kubeconfig from the hosted gateway works for
`kubectl apply`, `wait`, `get`, `exec` and `delete`.
- A Pending Job pod drives the tenant node autoscaler.
- Tar over `kubectl exec -i` moves the checkout in and outputs out.
- Steps share one pod, so later steps see earlier steps' changes.
- A single log carries step output and exit statuses.
- The result shape has the fields a `dev.knotless.check` needs.