RAIL-BS-WP-0014: residual millicores count scheduled pods only. state_hub_preflight_observation matches the STATE-WP-0091 fixture shape. Assistant: grok Assistant-Session: 01a09dc1-b21e-77e1-919e-fcad2f82b267
42 lines
1.5 KiB
Markdown
42 lines
1.5 KiB
Markdown
---
|
|
id: RAIL-BS-WP-0014
|
|
type: workplan
|
|
title: "Keep node remaining CPU honest for State Hub surge and pending demand"
|
|
domain: financials
|
|
repo: railiance-cluster
|
|
status: finished
|
|
owner: codex
|
|
topic_slug: railiance
|
|
origin: residual
|
|
origin_ref: STATE-WP-0091
|
|
created: "2026-09-14"
|
|
updated: "2026-09-14"
|
|
related: [RCLUSTER-WP-0014, STATE-WP-0091, CUST-WP-0071]
|
|
state_hub_workstream_id: "d89863aa-dc89-5a9d-be00-4f558a16d70b"
|
|
---
|
|
|
|
Residual from STATE-WP-0091. State Hub now refuses promotion when remaining
|
|
CPU cannot cover its 100m API surge, and when unrelated pending pods would
|
|
eat the 5m sliver above 105m. Cluster observation must keep publishing
|
|
allocatable, allocated, **and pending-unrelated** demand. 105m remaining is
|
|
not capacity admission for factory or other zero-request workloads.
|
|
|
|
## Include pending pods in capacity observations
|
|
|
|
```task
|
|
id: RAIL-BS-WP-0014-T01
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "d90c384e-8a99-550f-b8b8-6314c073f2dc"
|
|
```
|
|
|
|
Extend `tools/observe_cluster_resources.py` / `make cluster-observe` so the
|
|
published observation names pending unscheduled pods and their requests.
|
|
State Hub's preflight already consumes that shape. Do not treat residual
|
|
millicores as a scheduling guarantee.
|
|
|
|
**Done 2026-09-14.** `build_observation` names pending unscheduled pods, uses
|
|
effective pod requests (init vs containers), and emits
|
|
`state_hub_preflight_observation` in the STATE-WP-0091 fixture shape.
|
|
Residual CPU counts scheduled pods only. `not_a_scheduling_guarantee` is
|
|
explicit. Unit test covers a 50m pending pod that does not inflate remaining.
|