mirror of
https://github.com/norandom/OpenUltraSAST.git
synced 2026-10-17 12:09:27 +00:00
plane(1.5): placement probe -- Substrate places by any free worker, not by fit
ops/ax/probe-placement.sh scales ousast-pool to one worker, applies probe-pool (1 x 2 CPU / 3Gi, the already-built ateom-gvisor image, no ko build), runs one model-free repo-facts Task requesting 2560Mi (limit 3Gi) and one requesting 256Mi, records `kubectl ate get workers -o json` after each resume, and removes everything it created. Live on kind: both actors landed on the 1536Mi ousast-pool worker (status.allocated.actors=1 there, 0 on probe-pool) -> placement: any. design.md section 4 records the outcome and the fallback group 5 must take (an engine atespace with engine-pool as its only pool if Substrate scopes pools by atespace; else a plain Kubernetes Job on k3s). Evidence under benchmarks/measurements/2026-10-02-k8s-01-profile/probe/. Gates (tree identical to 1.4 in src/ and tests/; ops/ gains the probe script, which the literal scan covers): pytest 2010 passed, 42 skipped, exit 0; ruff check 0; ruff format 0; mypy 0. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01EmM1j46qgKMh3zqD1QMwEo
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
8099b29deb
commit
86ec237483
@@ -0,0 +1,16 @@
|
||||
apiVersion: ax.io/v1alpha1
|
||||
kind: Workspace
|
||||
metadata: {name: ousast-probe-big-ws, atespace: default}
|
||||
spec:
|
||||
files:
|
||||
- {path: "hello.py", content: "def hello():\n return greet()\n"}
|
||||
---
|
||||
apiVersion: ax.io/v1alpha1
|
||||
kind: Task
|
||||
metadata: {name: ousast-probe-big, atespace: default}
|
||||
spec:
|
||||
image: "localhost:5001/ousast-runner@sha256:412db0a1504af8f1b23a395af8d1dcbd152c1bb6d16594f2b733067163a31884"
|
||||
command: ["repo-facts"]
|
||||
env: [{name: OUSAST_OUTPUT_DIR, value: "/workspace/.ousast-out/probe"}]
|
||||
resources: {requests: {cpu: "250m", memory: "2560Mi"}, limits: {cpu: "1", memory: "3Gi"}}
|
||||
workspaces: [{name: ousast-probe-big-ws, path: "/workspace"}]
|
||||
@@ -0,0 +1,16 @@
|
||||
apiVersion: ax.io/v1alpha1
|
||||
kind: Workspace
|
||||
metadata: {name: ousast-probe-small-ws, atespace: default}
|
||||
spec:
|
||||
files:
|
||||
- {path: "hello.py", content: "def hello():\n return greet()\n"}
|
||||
---
|
||||
apiVersion: ax.io/v1alpha1
|
||||
kind: Task
|
||||
metadata: {name: ousast-probe-small, atespace: default}
|
||||
spec:
|
||||
image: "localhost:5001/ousast-runner@sha256:412db0a1504af8f1b23a395af8d1dcbd152c1bb6d16594f2b733067163a31884"
|
||||
command: ["repo-facts"]
|
||||
env: [{name: OUSAST_OUTPUT_DIR, value: "/workspace/.ousast-out/probe"}]
|
||||
resources: {requests: {cpu: "250m", memory: "256Mi"}, limits: {cpu: "1", memory: "512Mi"}}
|
||||
workspaces: [{name: ousast-probe-small-ws, path: "/workspace"}]
|
||||
@@ -0,0 +1,26 @@
|
||||
# Warm gVisor workers for ax tasks (Agent Substrate WorkerPool), rendered by ops/ax/up.sh (and by
|
||||
# ops/ax/probe-placement.sh for the placement probe) from the profile's pool: POOL_NAME, POOL_REPLICAS, POOL_CPU,
|
||||
# POOL_MEMORY (ops/k8s/profiles/<profile>.toml, [pools.default]) and WORKER_IMAGE (ko:// for a build, or a
|
||||
# digest-pinned reference of a built worker image). ax's per-task ActorTemplates set no workerSelector, so every
|
||||
# pool of the matching sandbox class is eligible. An actor occupies a whole worker. Replaced by the renderer of
|
||||
# plane-on-kubernetes task 6.1 (ops/k8s/base/workerpool-*.yaml.tmpl).
|
||||
apiVersion: ate.dev/v1alpha1
|
||||
kind: WorkerPool
|
||||
metadata:
|
||||
name: probe-pool
|
||||
namespace: ax-system
|
||||
labels:
|
||||
workload: ousast
|
||||
spec:
|
||||
replicas: 1
|
||||
workerImage: localhost:5001/ateom-gvisor-715889664656de67e44382a8d6ab981d@sha256:220f1cf13ea485b73a2e4270fa544901a18ae826d8f22bd54d42761944a41c5c
|
||||
template:
|
||||
nodeSelector:
|
||||
ate.dev/substrate-version: "4f9c293"
|
||||
resources:
|
||||
limits:
|
||||
cpu: "2"
|
||||
memory: 3Gi
|
||||
requests:
|
||||
cpu: 250m
|
||||
memory: 3Gi
|
||||
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"workers": [
|
||||
{
|
||||
"ip": "10.244.0.22",
|
||||
"labels": {
|
||||
"workload": "ousast"
|
||||
},
|
||||
"metadata": {
|
||||
"createTime": "2026-09-29T16:32:08.594663703Z",
|
||||
"name": "769f7d8b-142a-4ed5-b896-08d6a04bedb6",
|
||||
"uid": "152cf7c0-3f4d-4634-88c5-9fe501bb403e",
|
||||
"updateTime": "2026-10-02T05:24:59.069304031Z",
|
||||
"version": "1758"
|
||||
},
|
||||
"nodeName": "ousast-control-plane",
|
||||
"sandboxClass": "gvisor",
|
||||
"status": {
|
||||
"capacity": {
|
||||
"actors": 1000,
|
||||
"resources": {
|
||||
"limits": [
|
||||
{
|
||||
"name": "cpu",
|
||||
"quantity": "1"
|
||||
},
|
||||
{
|
||||
"name": "memory",
|
||||
"quantity": "1536Mi"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"state": "WORKER_STATE_ACTIVE"
|
||||
},
|
||||
"workerNamespace": "ax-system",
|
||||
"workerPod": "ousast-pool-6656b55f5b-9wbrw",
|
||||
"workerPodUid": "769f7d8b-142a-4ed5-b896-08d6a04bedb6",
|
||||
"workerPool": "ousast-pool"
|
||||
},
|
||||
{
|
||||
"ip": "10.244.0.28",
|
||||
"labels": {
|
||||
"workload": "ousast"
|
||||
},
|
||||
"metadata": {
|
||||
"createTime": "2026-10-02T18:29:30.486026311Z",
|
||||
"name": "1407a421-7dcf-4ad7-b999-70a4624bf890",
|
||||
"uid": "2d496d7a-4f32-459d-9b92-256a2c5b4800",
|
||||
"updateTime": "2026-10-02T18:29:30.551668391Z",
|
||||
"version": "2"
|
||||
},
|
||||
"nodeName": "ousast-control-plane",
|
||||
"sandboxClass": "gvisor",
|
||||
"status": {
|
||||
"capacity": {
|
||||
"actors": 1000,
|
||||
"resources": {
|
||||
"limits": [
|
||||
{
|
||||
"name": "cpu",
|
||||
"quantity": "2"
|
||||
},
|
||||
{
|
||||
"name": "memory",
|
||||
"quantity": "3Gi"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"state": "WORKER_STATE_ACTIVE"
|
||||
},
|
||||
"workerNamespace": "ax-system",
|
||||
"workerPod": "probe-pool-5dffd74bdc-dqlww",
|
||||
"workerPodUid": "1407a421-7dcf-4ad7-b999-70a4624bf890",
|
||||
"workerPool": "probe-pool"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"workers": [
|
||||
{
|
||||
"ip": "10.244.0.22",
|
||||
"labels": {
|
||||
"workload": "ousast"
|
||||
},
|
||||
"metadata": {
|
||||
"createTime": "2026-09-29T16:32:08.594663703Z",
|
||||
"name": "769f7d8b-142a-4ed5-b896-08d6a04bedb6",
|
||||
"uid": "152cf7c0-3f4d-4634-88c5-9fe501bb403e",
|
||||
"updateTime": "2026-10-02T18:29:45.281958347Z",
|
||||
"version": "1761"
|
||||
},
|
||||
"nodeName": "ousast-control-plane",
|
||||
"sandboxClass": "gvisor",
|
||||
"status": {
|
||||
"allocated": {
|
||||
"actors": 1
|
||||
},
|
||||
"capacity": {
|
||||
"actors": 1000,
|
||||
"resources": {
|
||||
"limits": [
|
||||
{
|
||||
"name": "cpu",
|
||||
"quantity": "1"
|
||||
},
|
||||
{
|
||||
"name": "memory",
|
||||
"quantity": "1536Mi"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"state": "WORKER_STATE_ACTIVE"
|
||||
},
|
||||
"workerNamespace": "ax-system",
|
||||
"workerPod": "ousast-pool-6656b55f5b-9wbrw",
|
||||
"workerPodUid": "769f7d8b-142a-4ed5-b896-08d6a04bedb6",
|
||||
"workerPool": "ousast-pool"
|
||||
},
|
||||
{
|
||||
"ip": "10.244.0.28",
|
||||
"labels": {
|
||||
"workload": "ousast"
|
||||
},
|
||||
"metadata": {
|
||||
"createTime": "2026-10-02T18:29:30.486026311Z",
|
||||
"name": "1407a421-7dcf-4ad7-b999-70a4624bf890",
|
||||
"uid": "2d496d7a-4f32-459d-9b92-256a2c5b4800",
|
||||
"updateTime": "2026-10-02T18:29:30.551668391Z",
|
||||
"version": "2"
|
||||
},
|
||||
"nodeName": "ousast-control-plane",
|
||||
"sandboxClass": "gvisor",
|
||||
"status": {
|
||||
"capacity": {
|
||||
"actors": 1000,
|
||||
"resources": {
|
||||
"limits": [
|
||||
{
|
||||
"name": "cpu",
|
||||
"quantity": "2"
|
||||
},
|
||||
{
|
||||
"name": "memory",
|
||||
"quantity": "3Gi"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"state": "WORKER_STATE_ACTIVE"
|
||||
},
|
||||
"workerNamespace": "ax-system",
|
||||
"workerPod": "probe-pool-5dffd74bdc-dqlww",
|
||||
"workerPodUid": "1407a421-7dcf-4ad7-b999-70a4624bf890",
|
||||
"workerPool": "probe-pool"
|
||||
}
|
||||
]
|
||||
}
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"workers": [
|
||||
{
|
||||
"ip": "10.244.0.22",
|
||||
"labels": {
|
||||
"workload": "ousast"
|
||||
},
|
||||
"metadata": {
|
||||
"createTime": "2026-09-29T16:32:08.594663703Z",
|
||||
"name": "769f7d8b-142a-4ed5-b896-08d6a04bedb6",
|
||||
"uid": "152cf7c0-3f4d-4634-88c5-9fe501bb403e",
|
||||
"updateTime": "2026-10-02T18:29:53.001457323Z",
|
||||
"version": "1763"
|
||||
},
|
||||
"nodeName": "ousast-control-plane",
|
||||
"sandboxClass": "gvisor",
|
||||
"status": {
|
||||
"allocated": {
|
||||
"actors": 1
|
||||
},
|
||||
"capacity": {
|
||||
"actors": 1000,
|
||||
"resources": {
|
||||
"limits": [
|
||||
{
|
||||
"name": "cpu",
|
||||
"quantity": "1"
|
||||
},
|
||||
{
|
||||
"name": "memory",
|
||||
"quantity": "1536Mi"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"state": "WORKER_STATE_ACTIVE"
|
||||
},
|
||||
"workerNamespace": "ax-system",
|
||||
"workerPod": "ousast-pool-6656b55f5b-9wbrw",
|
||||
"workerPodUid": "769f7d8b-142a-4ed5-b896-08d6a04bedb6",
|
||||
"workerPool": "ousast-pool"
|
||||
},
|
||||
{
|
||||
"ip": "10.244.0.28",
|
||||
"labels": {
|
||||
"workload": "ousast"
|
||||
},
|
||||
"metadata": {
|
||||
"createTime": "2026-10-02T18:29:30.486026311Z",
|
||||
"name": "1407a421-7dcf-4ad7-b999-70a4624bf890",
|
||||
"uid": "2d496d7a-4f32-459d-9b92-256a2c5b4800",
|
||||
"updateTime": "2026-10-02T18:30:04.825058843Z",
|
||||
"version": "4"
|
||||
},
|
||||
"nodeName": "ousast-control-plane",
|
||||
"sandboxClass": "gvisor",
|
||||
"status": {
|
||||
"capacity": {
|
||||
"actors": 1000,
|
||||
"resources": {
|
||||
"limits": [
|
||||
{
|
||||
"name": "cpu",
|
||||
"quantity": "2"
|
||||
},
|
||||
{
|
||||
"name": "memory",
|
||||
"quantity": "3Gi"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"state": "WORKER_STATE_ACTIVE"
|
||||
},
|
||||
"workerNamespace": "ax-system",
|
||||
"workerPod": "probe-pool-5dffd74bdc-dqlww",
|
||||
"workerPodUid": "1407a421-7dcf-4ad7-b999-70a4624bf890",
|
||||
"workerPool": "probe-pool"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user