resource-control/docs/evidence/2026-10-21-node-allocation-review/2026-10-21-node-budget.md
tegwick 3d9b1bd080 Consume Vergabe target replay into node allocation budget; finish T02
Fill the Vergabe slot from railiance-apps 1af6d82 (RAPPS-WP-0014-T04): keep
60m request and 1000m/1Gi limits, raise memory request 256Mi->512Mi next wave,
keep apps-pg at 100m for incremental pilot DB demand. Regenerated budget:
serialized CPU +90m / memory +165Mi; all-concurrent CPU -390m / memory -347Mi.
T03 stays in progress pending wave-1/wave-2 receiving tasks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 8340@bnt-lap001
Assistant-Session: 2e192b3d-b3e8-4403-94d4-d55a2c8b476c
2026-10-21 08:40:36 +02:00

18 KiB

Per-workload allocation proposals — 2026-10-21 (generated)

Generated by build_review.py from 2026-10-21-node-budget.json. Review inputs for owners, not applied changes. CPU rule: max(floor, p95x1.5, peakx0.5) rounded up to 5m; floors 50m/pod databases, 10m/pod critical path, 5m/pod other; change only if |delta|>=15m or request is zero. Memory rule: request = 7d p95 working set x1.15 rounded to 16Mi when |delta|>=64Mi; limits unchanged (requests only affect placement/eviction ranking).

Namespace/workload Pods CPU req→prop (m) CPU lim p95/peak 7d (m) Mem req→prop (Mi) Mem p95/peak (Mi) Throttle Action Owner Receiving record
activity-core/activity-core 10 100→100 1000* 62.8/132.5 256→944 811/1011 0.0 keep + memory up activity-core needs receiving task in activity-core
argocd/argocd-application-controller 1 50→30 1000 19.0/35.5 256→432 366/438 0.005 decrease + memory up railiance-enablement needs receiving task in railiance-enablement
argocd/argocd-repo-server 1 25→10 1000 0.9/4.9 128→128 63/73 0.0 decrease railiance-enablement needs receiving task in railiance-enablement
audit-core/audit-core 1 50→10 500 1.5/12.2 64→64 26/27 0.001 decrease audit-core needs receiving task in audit-core
canned-prompts/canned-prompts 1 25→5 500 2.5/6.6 96→96 63/65 0.0 decrease canned-prompts needs receiving task in canned-prompts
cert-manager/cainjector 1 0→10 0* 1.1/2.8 0→96 71/94 None increase + memory up railiance-cluster needs receiving task in railiance-cluster
cert-manager/cert-manager 1 0→10 0* 1.4/3.5 0→80 56/90 None increase + memory up railiance-cluster needs receiving task in railiance-cluster
cert-manager/webhook 1 0→10 0* 0.4/0.9 0→0 29/57 None increase railiance-cluster needs receiving task in railiance-cluster
cnpg-system/cloudnative-pg 1 100→50 100 2.5/4.4 100→100 72/86 0.005 decrease rapp-postgres needs receiving task in rapp-postgres
core-hub/rapp-core-hub 3 200→60 2500 39.2/63.5 896→288 247/292 0.002 decrease + memory down core-hub needs receiving task in core-hub
coulomb/ihp-railiance-probe 1 50→0 200 0.0/0.0 128→128 0/0 None retire/scale-to-zero (owner decision) ihp-railiance-probe (unconfirmed; namespace owner unknown) needs receiving task in ihp-railiance-probe
coulomb-social/coulomb-social 1 100→15 1000 0.4/24.6 256→176 146/146 0.0 decrease + memory down coulomb-social needs receiving task in coulomb-social
databases/forgejo-db 1 200→105 1000 68.8/160.9 512→288 249/286 0.07 decrease + memory down rapp-postgres needs receiving task in rapp-postgres
databases/net-kingdom-pg 1 100→50 1000 10.3/48.0 256→256 229/497 0.001 decrease rapp-postgres needs receiving task in rapp-postgres
databases/platform-pg 1 100→50 1000 13.0/68.7 256→192 160/264 0.001 decrease + memory down rapp-postgres needs receiving task in rapp-postgres
databases/platform-pg-2 1 100→50 1000 12.0/62.3 256→256 199/268 0.001 decrease rapp-postgres needs receiving task in rapp-postgres
databases/state-hub-db 1 0→70 0* 36.7/133.2 0→416 349/359 None increase + memory up state-hub needs receiving task in state-hub
email-connect/email-connect 1 25→5 250 0.3/0.8 64→64 13/13 0.001 decrease email-connect needs receiving task in email-connect
external-secrets/external-secrets 1 0→10 0* 4.1/5.5 0→64 51/53 None increase + memory up railiance-platform needs receiving task in railiance-platform
external-secrets/external-secrets-cert-controller 1 0→10 0* 1.0/1.5 0→64 42/51 None increase + memory up railiance-platform needs receiving task in railiance-platform
external-secrets/external-secrets-webhook 1 0→10 0* 0.5/0.6 0→80 63/112 None increase + memory up railiance-platform needs receiving task in railiance-platform
flex-auth/flex-auth 9 145→45 2700 2.2/18.6 288→176 140/191 0.002 decrease + memory down flex-auth (no local checkout) needs receiving task in flex-auth
forgejo/forgejo-runner 1 0→125 0* 13.1/243.2 0→496 428/734 None increase + memory up railiance-forge needs receiving task in railiance-forge
forgejo/gitea 1 100→200 0* 133.2/376.7 128→1104 956/1005 None increase + memory up railiance-forge needs receiving task in railiance-forge
issue-core/issue-core 1 50→5 500 2.0/3.4 128→48 41/51 0.0 decrease + memory down issue-core needs receiving task in issue-core
knative-serving/knative-serving 4 140→40 3500 7.2/9.9 360→176 146/211 0 decrease + memory down rail-knative needs receiving task in rail-knative
knative-serving/net-kourier-controller 1 30→10 1000 0.8/1.6 200→64 53/80 0 decrease + memory down rail-knative needs receiving task in rail-knative
kourier-system/3scale-kourier-gateway 1 50→10 1000 3.6/3.8 200→48 29/33 0 decrease + memory down rail-knative needs receiving task in rail-knative
kube-system/coredns-7bdb54f89 1 100→50 0* 7.8/10.3 70→70 35/77 None decrease railiance-cluster needs receiving task in railiance-cluster
kube-system/local-path-provisioner 1 0→10 0* 0.1/0.3 0→0 22/24 None increase railiance-cluster needs receiving task in railiance-cluster
kube-system/metrics-server-786d997795 1 100→10 0* 4.9/5.1 70→70 47/48 None decrease railiance-cluster needs receiving task in railiance-cluster
kube-system/traefik 1 0→10 0* 3.8/16.0 0→80 69/149 None increase + memory up railiance-cluster needs receiving task in railiance-cluster
mas/mas-mx 1 20→5 0* 0.6/3.6 64→64 43/48 None decrease mail-address-semantics needs receiving task in mail-address-semantics
mfa/net-kingdom-sso-mfa 1 110→20 1000 12.2/23.1 384→272 226/226 0.049 decrease + memory down net-kingdom needs receiving task in net-kingdom
openbao/railiance-platform 1 25→10 200 0.2/0.5 32→32 5/5 0.0 decrease railiance-platform needs receiving task in railiance-platform
playwright/rapp-playwright 1 100→65 1000 41.5/62.7 256→336 285/437 0.238 decrease + review CPU limit (throttled) + memory up railiance-platform needs receiving task in railiance-platform
rapp-qonto/rapp-qonto-audit-collector 1 20→5 200 0.4/3.5 32→32 14/14 0.0 decrease rapp-qonto needs receiving task in rapp-qonto
rapp-qonto-egress/qonto-egress-proxy 1 20→5 200 0.4/0.4 64→192 162/190 0 decrease + memory up rapp-qonto needs receiving task in rapp-qonto
rein-aharness/rein-aharness 1 25→5 500 0.0/0.0 64→64 0/0 0 decrease rein-aharness needs receiving task in rein-aharness
reuse/reuse-surface 2 110→10 550 2.1/10.2 288→80 56/57 0.0 decrease + memory down reuse-surface needs receiving task in reuse-surface
sbom-nexus/sbom-nexus 1 25→10 500 3.8/5.8 64→64 80/80 0.0 decrease sbom-nexus needs receiving task in sbom-nexus
sso/net-kingdom-sso-mfa 4 150→40 1150 22.4/34.5 256→176 140/179 0.537 decrease + review CPU limit (throttled) + memory down net-kingdom needs receiving task in net-kingdom
state-hub/railiance-apps 2 260→390 1500 258.5/975.0 640→640 744/798 0.0 increase state-hub needs receiving task in state-hub
target-revenue/target-revenue 1 50→5 1000 2.5/2.6 256→64 52/71 0 decrease + memory down target-revenue needs receiving task in target-revenue
target-revenue/target-revenue-pg 1 0→50 0* 7.6/9.2 0→80 56/63 None increase + memory up target-revenue needs receiving task in target-revenue
telemetry/alertmanager 1 25→5 250* 0.7/0.8 64→64 39/57 0 decrease rapp-telemetry needs receiving task in rapp-telemetry
telemetry/grafana 1 70→35 700 12.5/61.0 192→512 436/520 0.007 decrease + memory up rapp-telemetry needs receiving task in rapp-telemetry
telemetry/kube-state-metrics 1 25→5 250 2.7/4.5 64→64 34/64 0.0 decrease rapp-telemetry needs receiving task in rapp-telemetry
telemetry/prometheus 1 100→205 1000* 134.5/192.4 512→1152 992/1089 0.002 increase + memory up rapp-telemetry needs receiving task in rapp-telemetry
telemetry/rapp-telemetry 1 25→5 500 2.6/4.4 128→48 30/38 0.0 decrease + memory down rapp-telemetry needs receiving task in rapp-telemetry
tenant-engine/tenant-engine 1 25→5 300 2.4/2.6 48→48 53/68 0.0 decrease tenant-engine needs receiving task in tenant-engine
user-engine/user-engine 1 50→5 500 0.4/4.2 64→64 56/57 0.0 decrease user-engine needs receiving task in user-engine
user-engine/user-engine-pg 1 100→50 1000 7.5/9.7 256→96 78/103 0.0 decrease + memory down user-engine needs receiving task in user-engine
vergabe-demo-company/vergabe-teilnahme 1 60→60 1000 0.5/20.3 256→512 172/172 0.0 keep CPU (replay-backed) + memory up railiance-apps needs receiving task in railiance-apps
activity-core/actcore-temporal-ui-tls-2-1888679036-1756117428 1 10→10 100 0.0/0.1 64→64 13/18 0 keep activity-core —
approval-engine/approval-engine 1 10→10 500 0.7/16.3 64→64 30/31 0.0 keep approval-engine —
argocd/argocd-applicationset-controller 1 10→10 250 0.7/1.0 64→64 84/113 0 keep railiance-enablement —
argocd/argocd-redis 1 10→10 200 5.0/5.1 32→32 6/27 0 keep railiance-enablement —
bao-notice/bao-notice 1 5→5 100 0.0/0.1 16→16 4/4 0 keep railiance-platform —
databases/apps-pg 1 100→100 1000 8.0/55.6 256→256 89/116 0.0 keep rapp-postgres —
informed-decision/informed-decision 1 5→5 500 1.2/23.2 64→64 39/47 0.0 keep informed-decision —
kube-system/svclb-mas-smtp-d86db2b1 1 0→0 0* 0.0/0.0 0→0 0/2 None keep railiance-cluster —
kube-system/svclb-traefik-0c8aecaf 1 0→0 0* 0.0/0.0 0→0 1/2 None keep railiance-cluster —
mas/mas-statute 1 5→5 0* 0.3/0.5 32→32 10/10 None keep mail-address-semantics —
openbao/openbao 1 100→100 500 13.1/181.3 256→256 177/399 0.0 keep railiance-platform —
policy-nexus/policy-nexus 1 10→10 100 0.1/0.4 32→32 11/11 0.0 keep policy-nexus —
state-hub/state-hub 1 5→5 100 2.0/6.1 24→24 26/26 0.001 keep state-hub —

* = at least one container has no CPU limit.

Rationale for non-keep rows

  • activity-core/activity-core: Within rule tolerance; keep. Memory p95 811Mi vs 256Mi request; one container without CPU limit.
  • argocd/argocd-application-controller: Rule p95x1.5 / peakx0.5 / floor.
  • argocd/argocd-repo-server: Rule p95x1.5 / peakx0.5 / floor.
  • audit-core/audit-core: Rule p95x1.5 / peakx0.5 / floor.
  • canned-prompts/canned-prompts: Rule p95x1.5 / peakx0.5 / floor.
  • cert-manager/cainjector: Rule p95x1.5 / peakx0.5 / floor.
  • cert-manager/cert-manager: Rule p95x1.5 / peakx0.5 / floor.
  • cert-manager/webhook: Rule p95x1.5 / peakx0.5 / floor.
  • cnpg-system/cloudnative-pg: Rule p95x1.5 / peakx0.5 / floor.
  • core-hub/rapp-core-hub: Rule p95x1.5 / peakx0.5 / floor. Production hub.coulomb.social: verify startup and rollout before lowering.
  • coulomb/ihp-railiance-probe: ImagePullBackOff 21d from legacy registry 92.205.130.254; 50m reserved, 0 usage, two more stale pods. Scale to zero/retire only by owner decision.
  • coulomb-social/coulomb-social: Rule p95x1.5 / peakx0.5 / floor.
  • databases/forgejo-db: Rule p95x1.5 / peakx0.5 / floor.
  • databases/net-kingdom-pg: Rule p95x1.5 / peakx0.5 / floor.
  • databases/platform-pg: Rule p95x1.5 / peakx0.5 / floor.
  • databases/platform-pg-2: Rule p95x1.5 / peakx0.5 / floor.
  • databases/state-hub-db: Rule p95x1.5 / peakx0.5 / floor. Zero-request CNPG cluster, source state-hub/deploy/railiance/platform/state-hub-db-cluster.yaml; memory p95 349Mi.
  • email-connect/email-connect: Rule p95x1.5 / peakx0.5 / floor.
  • external-secrets/external-secrets: Rule p95x1.5 / peakx0.5 / floor.
  • external-secrets/external-secrets-cert-controller: Rule p95x1.5 / peakx0.5 / floor.
  • external-secrets/external-secrets-webhook: Rule p95x1.5 / peakx0.5 / floor.
  • flex-auth/flex-auth: Rule p95x1.5 / peakx0.5 / floor.
  • forgejo/forgejo-runner: Rule p95x1.5 / peakx0.5 / floor. Zero request, dind unbounded. Admit one concurrent job: request ~125m/512Mi, dind limit ~1500m/2Gi; job bursts above the request are the build reserve.
  • forgejo/gitea: Rule p95x1.5 / peakx0.5 / floor. Main container has no requests/limits (100m effective comes from the init container); memory p95 956Mi vs 128Mi. Add memory request ~1Gi and limit ~1.5Gi.
  • issue-core/issue-core: Rule p95x1.5 / peakx0.5 / floor.
  • knative-serving/knative-serving: Rule p95x1.5 / peakx0.5 / floor. Requests already reduced by RAIL-KNATIVE-WP-0002 (finished); the open risk is HPA maxReplicas (see budget).
  • knative-serving/net-kourier-controller: Rule p95x1.5 / peakx0.5 / floor.
  • kourier-system/3scale-kourier-gateway: Rule p95x1.5 / peakx0.5 / floor.
  • kube-system/coredns-7bdb54f89: DNS for every workload: floor 50m regardless of p95 7.8m.
  • kube-system/local-path-provisioner: Rule p95x1.5 / peakx0.5 / floor.
  • kube-system/metrics-server-786d997795: Rule p95x1.5 / peakx0.5 / floor.
  • kube-system/traefik: Rule p95x1.5 / peakx0.5 / floor.
  • mas/mas-mx: Rule p95x1.5 / peakx0.5 / floor.
  • mfa/net-kingdom-sso-mfa: Rule p95x1.5 / peakx0.5 / floor.
  • openbao/railiance-platform: Rule p95x1.5 / peakx0.5 / floor.
  • playwright/rapp-playwright: Rule p95x1.5 / peakx0.5 / floor. 23.8% throttled; RPF-WP-0056 covers admission, not sizing.
  • rapp-qonto/rapp-qonto-audit-collector: Rule p95x1.5 / peakx0.5 / floor.
  • rapp-qonto-egress/qonto-egress-proxy: Rule p95x1.5 / peakx0.5 / floor.
  • rein-aharness/rein-aharness: Rule p95x1.5 / peakx0.5 / floor. 0m/0Mi recorded over 7d; confirm the service is meant to run.
  • reuse/reuse-surface: Rule p95x1.5 / peakx0.5 / floor.
  • sbom-nexus/sbom-nexus: Rule p95x1.5 / peakx0.5 / floor.
  • sso/net-kingdom-sso-mfa: Rule p95x1.5 / peakx0.5 / floor. 53.7% of CFS periods throttled: review the CPU limit on the login path, independent of the request.
  • state-hub/railiance-apps: API p95 258m at 250m request = p95x1.5; the 975m peak is release/migration bursts carried by the surge reserve. Preflight models API surge 100m but live API pod requests 250m.
  • target-revenue/target-revenue: Rule p95x1.5 / peakx0.5 / floor.
  • target-revenue/target-revenue-pg: Rule p95x1.5 / peakx0.5 / floor. Zero-request CNPG cluster, source target-revenue/k8s/railiance/cnpg-cluster.yaml.
  • telemetry/alertmanager: Rule p95x1.5 / peakx0.5 / floor.
  • telemetry/grafana: Rule p95x1.5 / peakx0.5 / floor. Memory p95 436Mi vs 192Mi request; 3 restarts in 7d (cause not verified).
  • telemetry/kube-state-metrics: Rule p95x1.5 / peakx0.5 / floor.
  • telemetry/prometheus: Rule p95x1.5 / peakx0.5 / floor. Memory p95 992Mi vs 512Mi request. Forgejo request recording rule still returns no series.
  • telemetry/rapp-telemetry: Rule p95x1.5 / peakx0.5 / floor.
  • tenant-engine/tenant-engine: Rule p95x1.5 / peakx0.5 / floor.
  • user-engine/user-engine: Rule p95x1.5 / peakx0.5 / floor.
  • user-engine/user-engine-pg: Rule p95x1.5 / peakx0.5 / floor.
  • vergabe-demo-company/vergabe-teilnahme: Target replay (RAPPS-WP-0014-T04, railiance-apps 1af6d82): keep 60m request and 1000m/1Gi limits; 0 errors, ordinary p95 0.192s under 36% throttling at ~25 req/s; loaded working set 320-480MiB exceeds the 256Mi request -> 512Mi.

Missing receiving tasks by owner repo

  • activity-core (1): activity-core/activity-core
  • audit-core (1): audit-core/audit-core
  • canned-prompts (1): canned-prompts/canned-prompts
  • core-hub (1): core-hub/rapp-core-hub
  • coulomb-social (1): coulomb-social/coulomb-social
  • email-connect (1): email-connect/email-connect
  • flex-auth (1): flex-auth/flex-auth
  • ihp-railiance-probe (1): coulomb/ihp-railiance-probe
  • issue-core (1): issue-core/issue-core
  • mail-address-semantics (1): mas/mas-mx
  • net-kingdom (2): mfa/net-kingdom-sso-mfa, sso/net-kingdom-sso-mfa
  • rail-knative (3): knative-serving/knative-serving, knative-serving/net-kourier-controller, kourier-system/3scale-kourier-gateway
  • railiance-apps (1): vergabe-demo-company/vergabe-teilnahme
  • railiance-cluster (7): cert-manager/cainjector, cert-manager/cert-manager, cert-manager/webhook, kube-system/coredns-7bdb54f89, kube-system/local-path-provisioner, kube-system/metrics-server-786d997795, kube-system/traefik
  • railiance-enablement (2): argocd/argocd-application-controller, argocd/argocd-repo-server
  • railiance-forge (2): forgejo/forgejo-runner, forgejo/gitea
  • railiance-platform (5): external-secrets/external-secrets, external-secrets/external-secrets-cert-controller, external-secrets/external-secrets-webhook, openbao/railiance-platform, playwright/rapp-playwright
  • rapp-postgres (5): cnpg-system/cloudnative-pg, databases/forgejo-db, databases/net-kingdom-pg, databases/platform-pg, databases/platform-pg-2
  • rapp-qonto (2): rapp-qonto/rapp-qonto-audit-collector, rapp-qonto-egress/qonto-egress-proxy
  • rapp-telemetry (5): telemetry/alertmanager, telemetry/grafana, telemetry/kube-state-metrics, telemetry/prometheus, telemetry/rapp-telemetry
  • rein-aharness (1): rein-aharness/rein-aharness
  • reuse-surface (1): reuse/reuse-surface
  • sbom-nexus (1): sbom-nexus/sbom-nexus
  • state-hub (2): databases/state-hub-db, state-hub/railiance-apps
  • target-revenue (2): target-revenue/target-revenue, target-revenue/target-revenue-pg
  • tenant-engine (1): tenant-engine/tenant-engine
  • user-engine (2): user-engine/user-engine, user-engine/user-engine-pg