IR-20261112: alert on sandbox work-volume fill, cap GOCACHE (NOT FOR LANDING) #963
Open
pi-landing
wants to merge 1 commit from
plane/IR-20261112-sbxdisk into live
pull from: plane/IR-20261112-sbxdisk
merge into: Homelab:live
Homelab:main
Homelab:live
Homelab:sso/zitadel-guest-users
Homelab:sso/argocd-readonly-groups
Homelab:lr-20261111-025/amendment-4
Homelab:ld/IR-20261112-phase1guard
Homelab:ld/IR-20261112-kimipool
Homelab:lr-20261111-017-a24
Homelab:plane/IR-20261112-relayalert
Homelab:lr-20261111-025/seat-template
Homelab:plane/IR-20261112-mgmtdns
Homelab:plane/IR-20261112-r10-openbao-loki
Homelab:plane/f-r2-d6-sbx-reviewer-out
Homelab:plane/R39-forgejo-access-log-sink
Homelab:plane/R39-forgejo-access-log-auth
Homelab:plane/IR-20261111-extdel-v2
Homelab:plane/f-r2-d6-gits-reviewer-removal
Homelab:plane/R39-forgejo-access-log
Homelab:plane/R1-localbin
Homelab:plane/IR-20261111-r25offdisk
Homelab:plane/IR-20261112-runners8
Homelab:plane/EXTDEL-4918-forgejo-ext
Homelab:plane/IR-20261112-npmcache
Homelab:lr-20261111-016-launchcap
Homelab:plane/IR-20261111-runners10
Homelab:plane/IR-20261111-c8brief
Homelab:IR-20261111-runnercap
Homelab:plane/IR-20261111-baohelper
Homelab:plane/IR-20261111-gitsemu
Homelab:plane/IR-20261111-runnerlock
Homelab:plane/IR-20261111-c8grants
Homelab:lr-20261111-017-n9
Homelab:lr-20261111-025/seatpost
Homelab:ld/LR-20261111-024-seat-ban
Homelab:lr-20261111-017-seatlookup
Homelab:spec-014-skill-sync
Homelab:ld-spec-009/relay-fixforward
Homelab:ld/spec-016-launch-cap
Homelab:ld-spec-009/relay-a3
Homelab:plane/LR-20261111-018-seat-posting
Homelab:plane/LR-20261111-012-sbx-lab-transcripts
Homelab:spec-010-fit2
Homelab:ld-spec-009/relay
Homelab:plane/HOMELAB-C3C-epic-supervisor
Homelab:plane/dircfg-c3b-work-pointer
Homelab:plane/HOMELAB-2479-sbx-ffmpeg
Homelab:plane/dircfg-c5-epic-supervisor
Homelab:plane/dircfg-c4-opening
Homelab:plane/dircfg-c3-work-md
Homelab:plane/dircfg-c2-brief-metodo
Homelab:plane/dircfg-c6-sbx-sendrast-skills
Homelab:plane/HOMELAB-2479-zitadel-display-name
Homelab:plane/dircfg-c1-director-gitinit
Homelab:plane/HOMELAB-2479-sbx-sendrast-9gi
Homelab:plane/HOMELAB-2479-invite-list-reader
Homelab:plane/HOMELAB-2479-sbx-lab-wk02-affinity
Homelab:plane/HOMELAB-2479-wk02-sbx-lab-limit
Homelab:plane/HOMELAB-2479-zitadel-user-drift
Homelab:plane/HOMELAB-2479-zitadel-h2c
Homelab:spec-008-b-sbxlab-pin
Homelab:spec-008-a-sbxfleet-base-bump
Homelab:spec-007-ld-implement-skill
Homelab:archive/plane/HOMELAB-2658-omniroute-containment-wip-20261110
Homelab:archive/plane/HOMELAB-2446-wk01-requests-wip-20261110
Homelab:plane/HOMELAB-2479-gits-fixture-vendor
Homelab:ld-spec-004
Homelab:plane/HOMELAB-2479-plane-smtp-chart
Homelab:ld-spec-003
Homelab:plane/HOMELAB-2479-aaron-site-zitadel
Homelab:plane/HOMELAB-2479-runner-requests
Homelab:plane/ld-stopnow-gits-pin
Homelab:plane/ld-stopnow-alias-retire
Homelab:plane/HOMELAB-2479-sbx-gits-probe-tmp
Homelab:plane/HOMELAB-2479-gits-toolcache
Homelab:plane/ld-stopnow-sbxlab-pin
Homelab:plane/ld-stopnow-sbxfleet-base2
Homelab:plane/ld-stopnow-sbxfleet-base
Homelab:plane/ld-stopnow-item2-skill-rule
Homelab:plane/HOMELAB-88-cm-ssa-syncopt
Homelab:plane/HOMELAB-88-sandbox-telemetry
Homelab:plane/HOMELAB-88-sbx-gits-16g
Homelab:plane/HOMELAB-88-whisper-cuda
Homelab:plane/HOMELAB-2479-secretscan-fixture-allowlist
Homelab:plane/HOMELAB-2479-registry-backup
Homelab:plane/HOMELAB-2682-sandbox-init-tmpfix
Homelab:plane/HOMELAB-2479-fix-port-gate
Homelab:plane/HOMELAB-2479-emulator-gate
Homelab:plane/HOMELAB-2479-fixture-resync
Homelab:plane/HOMELAB-2682-forgejo-ext-pin-cd50fbc6
Homelab:plane/HOMELAB-2479-openbao-raft-verify
Homelab:plane/HOMELAB-2682-forgejo-ext-pin-96437d4a
Homelab:plane/HOMELAB-2479-moore-disk-alert
Homelab:plane/HOMELAB-2479-harbor-pin-secrets
Homelab:plane/HOMELAB-2682-relief-threshold-p1
Homelab:archive/plane/HOMELAB-2682-relief-threshold-20261109
Homelab:plane/HOMELAB-2682-relief-threshold
Homelab:plane/HOMELAB-2682-sbx-gits-seed-pin
Homelab:plane/HOMELAB-2479-ci-trim
Homelab:plane/HOMELAB-2682-ok0
Homelab:plane/HOMELAB-2479-liveness-window-120s
Homelab:plane/HOMELAB-2682-seed-bump
Homelab:plane/HOMELAB-2682-transcripts
Homelab:plane/HOMELAB-2682-pin-bump
Homelab:plane/HOMELAB-2682-declaration
Homelab:plane/HOMELAB-2682-gradle-daemon-gen
Homelab:plane/HOMELAB-2682-tools-pin
Homelab:plane/HOMELAB-2479-harbor-db-backup
Homelab:plane/HOMELAB-2682-suite-relpath
Homelab:plane/HOMELAB-2682-revert-859-delivery
Homelab:plane/HOMELAB-2479-volume-floor
Homelab:plane/HOMELAB-2682-check-anchor
Homelab:dev/cockpit
Homelab:plane/HOMELAB-2479-nic-roster
Homelab:plane/HOMELAB-2479-nic-roster-rehome
Homelab:ld-1/truth-fixes
Homelab:ld-1/remove-open-chat
Homelab:ld-1/gate-cut
Homelab:plane/HOMELAB-2479-nic-critical
Homelab:plane/HOMELAB-2479-startup-probe
Homelab:ld-1/dev-route-1
Homelab:plane/HOMELAB-2479-factory-token
Homelab:plane/HOMELAB-2682-evidence-fixes
Homelab:ld-1/gate-dev-route
Homelab:plane/HOMELAB-2479-sbx-resources
Homelab:plane/HOMELAB-2479-factory-pr-series
Homelab:plane/HOMELAB-2682-preclean-optout
Homelab:plane/HOMELAB-2479-measurement
Homelab:plane/sbx-gits-resources-20261105
Homelab:plane/sbx-lab-resources-20261105
Homelab:plane/HOMELAB-2682-emu-proof
Homelab:plane/HOMELAB-2682-sbxgits-pin
Homelab:plane/HOMELAB-2682-ssh-image
Homelab:archive/plane/HOMELAB-2694-sandbox-mem-page-20261110
Homelab:plane/HOMELAB-2694-sandbox-mem-page
Homelab:plane/HOMELAB-2537-jvm-proof-mode
Homelab:plane/HOMELAB-2694-sbx-lab-memory
Homelab:plane/HOMELAB-2694-psi-memory-alert
Homelab:plane/HOMELAB-2682-lab-env
Homelab:plane/HOMELAB-2694-sandbox-oom-alerts
Homelab:plane/HOMELAB-2682-quote-rule
Homelab:plane/HOMELAB-2481-sandbox-log-reader
Homelab:plane/HOMELAB-2682-sbx-lab-ext
Homelab:plane/HOMELAB-2688-longhorn-alerts
Homelab:plane/HOMELAB-2682-sbx-lab-idents
Homelab:plane/HOMELAB-2682-ct-skills
Homelab:plane/GITS-492-tablet-build-delivery
Homelab:epic/ld-1
Homelab:plane/HOMELAB-2680-sandbox-redact
Homelab:plane/HOMELAB-2683-sbx-lab-pin
Homelab:plane/HOMELAB-2685-outage-alerts
Homelab:plane/HOMELAB-2683-gcc-sbx-lab
Homelab:plane/HOMELAB-2658-omniroute-containment
Homelab:plane/HOMELAB-2440-sbx-lab-cpu
Homelab:plane/HOMELAB-2673-ci-pending-paging
Homelab:plane/HOMELAB-2675-sbx-gits-alerts
Homelab:plane/HOMELAB-2440-sbx-lab-request
Homelab:plane/HOMELAB-2445-sbx-lab-offpve
Homelab:plane/HOMELAB-2445-wk06-requests
Homelab:plane/HOMELAB-2658-liveness
Homelab:plane/HOMELAB-2655-sbx-sendrast-pin-54c78dd
Homelab:plane/HOMELAB-2655-sbx-sendrast-t7
Homelab:plane/HOMELAB-2626-h9-voz-sandbox
Homelab:plane/HOMELAB-2636-android-emu-b
Homelab:plane/GITS-401-drain-envelope
Homelab:plane/HOMELAB-2492-volume-attach-alerts
Homelab:plane/HOMELAB-2626-h8e-skill-hipervisor
Homelab:plane/HOMELAB-2488-io-psi-alerts
Homelab:plane/HOMELAB-2626-h8d-skills-pi
Homelab:plane/HOMELAB-2626-h8c-skills-pi-pulido
Homelab:plane/HOMELAB-2626-h8b-skills-pi-fixes
Homelab:plane/HOMELAB-2489-longhorn-tgtd-alerts
Homelab:plane/HOMELAB-2626-h8-skills-pi
Homelab:plane/HOMELAB-2618-h3-checklist
Homelab:plane/HOMELAB-2547-sbx-sendrast-pin7
Homelab:plane/HOMELAB-2618-h7-sbx-sendrast-kubectl
Homelab:plane/HOMELAB-2618-h6-sbx-lab-viewer
Homelab:plane/HOMELAB-2547-sbx-sendrast-pin6
Homelab:plane/HOMELAB-2614-etcd-leader-alert
Homelab:plane/HOMELAB-2547-sbx-sendrast-r59
Homelab:plane/HOMELAB-2618-h4-ci-reader
Homelab:plane/HOMELAB-2618-h2v3-sbx-sendrast
Homelab:plane/HOMELAB-2546-sbx-sendrast-pin5
Homelab:plane/HOMELAB-2547-sbx-sendrast-pidir
Homelab:plane/HOMELAB-2547-sbx-sendrast-pooldir
Homelab:plane/HOMELAB-2618-h5c-bump
Homelab:plane/HOMELAB-2547-sbx-sendrast-credhelper
Homelab:plane/HOMELAB-2618-h1fix-kustomize
Homelab:plane/HOMELAB-2618-h5-sbx-fleet
Homelab:plane/HOMELAB-2618-h1-fuente-unica
Homelab:plane/HOMELAB-2618-h2-sendrast
Homelab:plane/HOMELAB-2547-sbx-sendrast-rbac
Homelab:plane/HOMELAB-2618-h0-ondelete
Homelab:plane/HOMELAB-2446-wk01-requests
Homelab:plane/HOMELAB-2570-idle-liveness
Homelab:plane/HOMELAB-2511-step-alert
Homelab:plane/HOMELAB-2546-sbx-sendrast-pin4
Homelab:plane/HOMELAB-2546-sbx-sendrast-health2
Homelab:plane/HOMELAB-2546-sbx-sendrast-pin3
Homelab:plane/HOMELAB-2546-sbx-sendrast-health
Homelab:plane/HOMELAB-2546-sbx-sendrast-gotoolchain
Homelab:plane/HOMELAB-2546-sbx-sendrast-pin2
Homelab:plane/HOMELAB-2546-sbx-sendrast-r43
Homelab:plane/HOMELAB-2445-descheduler-repause
Homelab:plane/HOMELAB-2546-sbx-sendrast-psa
Homelab:plane/HOMELAB-2537-sbx-gits-post-humo
Homelab:plane/HOMELAB-2546-sbx-sendrast-wk03
Homelab:plane/HOMELAB-2537-sbx-gits-fix-perm
Homelab:plane/HOMELAB-2546-sbx-sendrast-pin
Homelab:plane/HOMELAB-2546-sbx-sendrast-platform
Homelab:plane/HOMELAB-2546-sbx-sendrast
Homelab:plane/HOMELAB-2537-sbx-gits
Homelab:plane/HOMELAB-2481-dind-gc-tightening
Homelab:archive/plane/HOMELAB-2481-node-local-dind-20261110
Homelab:plane/HOMELAB-2481-node-local-dind
Homelab:plane/HOMELAB-2535-sbx-lab-gitops
Homelab:plane/HOMELAB-2483-volume-usage-alert
Homelab:plane/HOMELAB-2482-slice-B-prepare
Homelab:plane/HOMELAB-2482-slice-C-ephemeral-ceilings
Homelab:plane/HOMELAB-2483-retention
Homelab:plane/HOMELAB-2483-alerts
Homelab:plane/GITS-395-emulator-adb-v2
Homelab:plane/GITS-395-emulator-adb
Homelab:plane/HOMELAB-2472-dor-newtest
Homelab:plane/GITS-403-emu-env-drift
Homelab:plane/HOMELAB-2467-gitleaks-scan
Homelab:plane/GITS-401-dind-digest
Homelab:plane/GITS-371-android-emu-prestop-command
Homelab:plane/GITS-371-android-emu-dind-drain
Homelab:plane/GITS-371-android-emu-shutdown-grace
Homelab:plane/HOMELAB-2196-speed-batch
Homelab:plane/HOMELAB-2442-android-ci-raise
Homelab:plane/HOMELAB-2442-runner-pool
Homelab:plane/HOMELAB-2442-mem-rightsize
Homelab:plane/HOMELAB-2443-ldpush-memory
Homelab:plane/HOMELAB-2444-fpr
Homelab:plane/GITS-364-emu-drift-fix
Homelab:plane/GITS-362-release-upload-mount
Homelab:plane/HOMELAB-2432-alerts
Homelab:plane/HOMELAB-1945-landing-step
Homelab:plane/HOMELAB-2421-dashboard
Homelab:plane/HOMELAB-2417-baseline
Homelab:plane/HOMELAB-2418-runners
Homelab:plane/HOMELAB-2415-budget-kill-scope
Homelab:plane/GITS-33-e0r-t3-android-release-lane
Homelab:plane/HOMELAB-2412-pernode-cap
Homelab:plane/GITS-281-android-ci-pin
Homelab:plane/HOMELAB-2407-gate-creation-exempt
Homelab:plane/GITS-281-android-ci-image-emulator
Homelab:plane/HOMELAB-2406-panel-artifact
Homelab:plane/GITS-22-e0-t13
Homelab:plane/HOMELAB-2402-node-keys
Homelab:plane/GITS-21-e0-t12
Homelab:plane/GITS-19-e0-t10
Homelab:plane/GITS-18-e0-t9
Homelab:plane/HOMELAB-1941-b13-slice2
Homelab:plane/HOMELAB-2400-active-rows
Homelab:plane/HOMELAB-2395-trim-manage-key
Homelab:plane/HOMELAB-1944-panel-gateway
Homelab:plane/HOMELAB-2392-diff-fetch
Homelab:plane/HOMELAB-1940-caps-accounting
Homelab:plane/HOMELAB-2390-diff-git
Homelab:plane/HOMELAB-1944-panel-runtime
Homelab:plane/HOMELAB-2329-gate-decision
Homelab:plane/HOMELAB-2381-claim-retry
Homelab:plane/record-sql-test-fix
Homelab:plane/HOMELAB-2373-tailscale-1.104.4
Homelab:plane/HOMELAB-2357-resume-inflight
Homelab:plane/HOMELAB-2372-fail-closed
Homelab:plane/HOMELAB-2278-freshness
Homelab:plane/HOMELAB-2356-runtime-verdicts
Homelab:plane/HOMELAB-2281-objectlock
Homelab:plane/HOMELAB-2340-pane-loss
Homelab:plane/HOMELAB-1943-frozen-charters
Homelab:plane/HOMELAB-2348-replay-refusal
Homelab:plane/HOMELAB-1944-review-panel
Homelab:plane/HOMELAB-2341-reauthorize-anchor
Homelab:plane/HOMELAB-1942-workflow-knobs
Homelab:plane/HOMELAB-2327-signing-dispatch
Homelab:plane/HOMELAB-2280-pacing
Homelab:plane/HOMELAB-2195-f9-dor
Homelab:plane/HOMELAB-2249-orphan-alert
Homelab:plane/HOMELAB-2311-runbook
Homelab:plane/HOMELAB-2302-argocd-reader
Homelab:plane/HOMELAB-2273-etcd-snapshot-b2
Homelab:plane/HOMELAB-2298-eso-repo-password
Homelab:plane/HOMELAB-2274-raft-b2
Homelab:plane/HOMELAB-2249-alerts
Homelab:plane/HOMELAB-2258-xhost-sc
Homelab:plane/HOMELAB-2259-strict-local
Homelab:plane/HOMELAB-2195-f4-workflow-id
Homelab:plane/HOMELAB-2260-node-labels
Homelab:plane/HOMELAB-2257-zone-labels
Homelab:plane/HOMELAB-2195-b2-drain-rule
Homelab:plane/HOMELAB-2195-b3-records
Homelab:plane/HOMELAB-2195-b5-fragility
Homelab:plane/HOMELAB-2195-b1-dor-pickup
Homelab:plane/HOMELAB-1939-bumpupdate
Homelab:plane/HOMELAB-1939-mergedecode
Homelab:plane/HOMELAB-1939-agentwait
Homelab:plane/HOMELAB-2240-lane
Homelab:plane/HOMELAB-2246-runner-1rep
Homelab:plane/HOMELAB-1980-b11-pane-hold
Homelab:plane/HOMELAB-2235-argocd-memory
Homelab:plane/HOMELAB-2232-proxmox-module
Homelab:plane/HOMELAB-gitops-atlantis
Homelab:plane/HOMELAB-2210-docker-config-seed2
Homelab:plane/HOMELAB-2210-runner-pin
Homelab:plane/HOMELAB-2210-runner-buildx
Homelab:plane/HOMELAB-1932-ld-runners
Homelab:plane/HOMELAB-2200-snapshot-retain
Homelab:plane/HOMELAB-2199-cnpg-backup-stale
Homelab:plane/HOMELAB-2201-runner-gc
Homelab:plane/HOMELAB-1926-plane-rabbitmq-resources
Homelab:plane/HOMELAB-1905-cnpg-ha-docs
Homelab:plane/HOMELAB-1906-cronjob-ttl-rules
Homelab:plane/HOMELAB-1904-longhorn-fixes
Homelab:plane/HOMELAB-1908-annotation-fix
Homelab:plane/HOMELAB-1904-cnpg-ha-rules
Homelab:plane/HOMELAB-1904-recyclarr-netpol
Homelab:plane/HOMELAB-1904-cpu-rightsize
Homelab:plane/HOMELAB-1893-alertintake-plane-storm
Homelab:plane/HOMELAB-1878-retention
Homelab:epic/LD4
Homelab:plane/HOMELAB-1885-cockpit-e2e
Homelab:plane/HOMELAB-1727-skillhealth
Homelab:plane/HOMELAB-1728-signals
Homelab:plane/HOMELAB-1731-fitness
Homelab:plane/HOMELAB-1859-gateway
Homelab:plane/HOMELAB-1847-oncall
Homelab:plane/HOMELAB-1690-l7
Homelab:plane/HOMELAB-1850-tempo
Homelab:plane/HOMELAB-1850-attribution
Homelab:plane/HOMELAB-1686-meetings
Homelab:epic/LD3
Homelab:plane/HOMELAB-1684-derived-state
Homelab:plane/HOMELAB-1871-oidc-entrypoint-fix
Homelab:plane/HOMELAB-1871-oidc-sync
Homelab:plane/HOMELAB-1865-atlantis-leg
Homelab:plane/HOMELAB-1730-readiness
Homelab:plane/HOMELAB-1681b-image-dispatch
Homelab:plane/HOMELAB-1682-gates-backend
Homelab:plane/HOMELAB-1848-alert-audit
Homelab:plane/HOMELAB-1729-planfresh
Homelab:plane/HOMELAB-1848-contract-demo
Homelab:plane/HOMELAB-1854-longhorn-guard
Homelab:plane/HOMELAB-1685-intake
Homelab:plane/HOMELAB-1688-routines
Homelab:plane/HOMELAB-1687-el-director
Homelab:plane/HOMELAB-1827-prepull
Homelab:plane/HOMELAB-1827-livez
Homelab:plane/HOMELAB-1835-alert-rule
Homelab:plane/HOMELAB-1831-plane-vendor
Homelab:plane/HOMELAB-1746-es-newt-next
Homelab:plane/HOMELAB-1841-kubeprism
Homelab:plane/HOMELAB-1825-sandbox-pullsecrets
Homelab:plane/HOMELAB-1828-outline-minio
Homelab:plane/HOMELAB-1828-cnpg-alert
Homelab:plane/HOMELAB-1711-compile-before-claim
Homelab:plane/HOMELAB-1711-image-smoke
Homelab:epic/ld2
Homelab:plane/HOMELAB-1711-dispatcher-deploy
Homelab:plane/HOMELAB-1711-sweep-heart
Homelab:plane/HOMELAB-1824-omni-liveness
Homelab:plane/HOMELAB-1746-idp-redirect
Homelab:plane/HOMELAB-1711-sweep-control
Homelab:plane/HOMELAB-1711-raceprobe
Homelab:plane/HOMELAB-1711-dispatcher-image
Homelab:plane/HOMELAB-1720-identity
Homelab:plane/HOMELAB-1678-bashguard-fix
Homelab:plane/HOMELAB-1746-pangolin-oidc
Homelab:plane/HOMELAB-1680-custodian
Homelab:plane/HOMELAB-1678-scheduler
Homelab:plane/HOMELAB-1676-sentinel
Homelab:plane/HOMELAB-1677-rcbridge
Homelab:plane/HOMELAB-1796-teardown
Homelab:plane/HOMELAB-1794-spawn
Homelab:plane/HOMELAB-1797-claims
Homelab:plane/HOMELAB-1808-1809-fixes
Homelab:plane/HOMELAB-1791-sandbox-init
Homelab:plane/HOMELAB-1795-watch
Homelab:plane/HOMELAB-1798-compiler
Homelab:plane/HOMELAB-1674-claude-image
Homelab:plane/HOMELAB-1672-job-contract
Homelab:plane/HOMELAB-1698-meet-ai-namespace
Homelab:plane/HOMELAB-1635-cp01-pins
Homelab:plane/HOMELAB-1585-argocd-repo-creds
Homelab:plane/HOMELAB-1766-gateway-alerts
Homelab:epic/LD1
Homelab:plane/HOMELAB-1735-env-fix
Homelab:plane/HOMELAB-1735-harbor-robot
Homelab:plane/HOMELAB-1666-agent-sandbox
Homelab:plane/HOMELAB-1665-pi-image
Homelab:archive/epic/LD0-20261109
Homelab:plane/HOMELAB-1634-dind-harbor-auth
Homelab:plane/HOMELAB-1634-runner-cleanup
Homelab:plane/HOMELAB-1634-review-followups
Homelab:homelab/HOMELAB-1630-runner-resources
Homelab:plane/HOMELAB-1621-cpu-barchart
Homelab:plane/HOMELAB-1619-mgmt-vm-dashboard
Homelab:plane/HOMELAB-1598-oidc
Homelab:plane/HOMELAB-1574-plane-image-bump
Homelab:plane/HOMELAB-1535-outline-prestop
Homelab:plane/HOMELAB-1535-outline-ha
Homelab:plane/HOMELAB-1534-reviewer-fetch-auth
Homelab:plane/HOMELAB-1518-longhorn-rule-fix
Homelab:plane/HOMELAB-1527-tempo-pipeline
Homelab:plane/HOMELAB-1526-mqttx-web
Homelab:plane/HOMELAB-1511-prowlarr-qbit
No reviewers
Labels
No labels
operator-review
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
Homelab/infra-core!963
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "plane/IR-20261112-sbxdisk"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
NOT FOR LANDING
Build-only PR (
Lab-Run: IR-20261112-sbxdisk). f1 one-look first, then a clean seat pair + El Director's GO. Nothing here was applied to the cluster and no pod was touched.The incident this answers
sbx-lab-0's 60 GiworkPVC (work-sbx-lab-0, classlonghorn-fleet-work) reached 100 % at 2026-11-12T12:38Z and writes failed. A live orchestration session lost its scratch, its builds and its git worktrees in one step, and no alarm told anyone — the session found it itself. The same day the volume was measured climbing again at ~7 G/h, from scratch directories. This PR makes that condition loud and removes one of its unbounded residents from the volume.1. PrometheusRule
sandbox-work-volume-alerts(namespacemonitoring)One selector, two legs:
for:SandboxWorkVolumeFilling> 0.8010mwarningalert-intake(non-paging)SandboxWorkVolumeFillingCritical> 0.9210mwarningalert-intake(non-paging)Both carry the repo's full
ld_*disposition contract (ld_owner,ld_action,ld_frequency,ld_disposition,ld_silence_policy,ld_review_after,ld_note).Routing, why
warningon both. The route tree (live Alertmanagerconfig.original, recorded inrules/sbx-gits-alerts.yaml): the matcher-less first child isreceiver: alert-intakewithcontinue: true, so every alert reaches the non-paging ledger;pi-alert-receiver(the paging webhook → pi-signal-bridge → Signal) is reached only byseverity="critical"and the named disk-pressure routes. Per the inbox routing, a sandbox scratch fill stays on the non-paging tier, so the second leg carries its urgency in the name (…Critical) and not in the severity. Flipping either tocriticalis a one-line change in the rule and needs no route edit.The selector is namespace-scoped on purpose — a per-PVC list goes stale when a sandbox is added, and a stale list is silent, which is the exact failure this closes.
The selector is not vacuous — measured, read-only, 13:56Z
/api/v1/nodes/<node>/proxy/stats/summary(the same kubelet series these rules evaluate) pluskubectl get pvc -Amatch five claims today:work-sbx-lab-0(60Gi)ld-record-1pgdata (10Gi)ld-record-1pg-wal (10Gi)ld-record-2pgdata (10Gi)ld-record-2pg-wal (10Gi)Both legs are silent on today's healthy state. (For the record: the 74 % figure in the ticket brief is not what the live series said at 13:56Z — the volume measured 51.5 % then, so something freed space in between; the rule does not depend on either number.)
Stated blind spot:
sbx-gitsandsbx-sendrastmountworkas a node hostPath (/var/mnt/u-longhorn/sbx-gits/work). A hostPath has nokubelet_volume_statsseries at all, so this rule cannot see it. That is said in the rule file's header too, not just here; the hostPath's resident that could be capped (GOCACHE) is capped by this same PR, and the rest is node-level rule territory.Honesty note on ordering
PersistentVolumeFillingUp(> 75 %for15m, warning) already covers these volumes and fires first on a slow fill. This file is not a threshold improvement: it adds the sandbox scope, the name, the disposition contract and the 0.92 leg. That sentence is in the rule's owndescriptionas well, so nobody reads it later as a better alarm.2. GOCACHE cap — decision and trade-offs
GOCACHEmoves from/home/ld/work/go/cache(on the volume that filled) to/home/ld/go-cache, a newemptyDirwithsizeLimit: 8Gi insbx-lab, 4Gi insbx-gits.GOMODCACHEis deliberately untouched in both and stays at/home/ld/work/go/pkg/mod(small, mostly read-only per build, and expensive to re-download).Why
sizeLimitand not a pre-startgo clean -cacheat N GB:sizeLimitbinds continuously. Exceeding it evicts this one pod — loud, immediate, and self-healing: the restarted pod starts with an empty cache. A pre-startgo cleanfires only at a pod start, so a sandbox that runs for days between restarts (both pods areOnDelete;sbx-labis restarted only with the supervisor) can fill the volume between restarts and never run the clean at all. The cap has to bind between restarts, which is exactly what a pre-start check cannot do.go buildafterwards is cold. That is the right thing to lose — it is a cache; the git work tree survives on the PVC, and the module cache (the part that costs network) stays.sbx-lab'ssandboxmounts becometmp 8Gi + go-cache 8Gi + herdr-sock 64Mi = 16.06Giagainst its 20Gi limit, so the volume caps still bind before the container limit.sbx-gits'ssandboxbecomes8 + 4 + 0.06 = 12.06Giagainst a 10Gi limit — which is why it gets 4Gi and not 8Gi: the cache alone (4Gi) and/tmpalone (8.06Gi) can each never reach the limit, only their sum can, and both are bounded. Raising that container limit was the alternative and is rejected: 10Gi was chosen so the volume cap binds first, and the node has ~31 GiB free for the pod's whole ceiling.prepare-workinsbx-gitsstill creates$DST/go/cache(empty, now unused) because the epic suite's check[15]pins that exactinstall -dline as its proof thatgo/pkgis handed to1000:1000. Removing the name would turn a real check red for a cosmetic tidy.3. promtool evidence (promtool v3.4.0, the version the cluster runs)
The test file asserts firing decisions, not existence:
0.81→SandboxWorkVolumeFillingfires,…Criticalsilent, and it is still silent at 5m (sofor: 10mis proven to be 10m);0.79→ both silent;0.93→…Criticalfires (and so does the 0.80 leg);0.91→ only the 0.80 leg fires (one point of margin, pinned on which side each leg sits);63090503680B,0.810used) → fires;ld-fleetrecord volume is reached by the same selector;media(outsidesbx-.*|ld-fleet) → silent, so the selector's scope is asserted too.Annotations are copied from the rule by a generator, because promtool compares annotations for equality and a hand-retyped copy drifts into asserting formatting.
4. Which statefulsets change
core/manifests/apps/sbx-lab/statefulset.yaml—GOCACHEvalue, thego-cachemount, thego-cachevolume (sizeLimit: 8Gi), plus the in-file comments that used to say GOCACHE lives on the PVC.core/manifests/apps/sbx-gits/statefulset.yaml— same three,sizeLimit: 4Gi.core/manifests/monitoring/rules/sandbox-work-volume-alerts.yaml(new) +rule-tests/sandbox-work-volume.test.yaml(new).scripts/gits-sbx-epic-test.sh— the two literals this branch's delta is pinned by:p1_lab_sts_bad's allowed-addition allowlist gainsgo-cache//home/ld/go-cache, andSBX_GITS_DIFF_SETis re-measured toM statefulset.yaml. Nothing is loosened: the allowlist is still an allowlist and its mutation legs still bite.Both statefulsets are
updateStrategy: OnDelete, so this template change restarts nothing; GOCACHE and the new volume take effect at each pod's next recreate.5. Not folded into EXTDEL v2 (#958)
#958 is open (two commits, head
0c72e058, NOT FOR LANDING) and its landing gate pins that head for a seat pair plus a recreate choreography with 4a and homelab-33. Folding this in would move its head (voiding its seats), give one PR twoLab-Runids, and force a re-measure of the same allowed-change sets it pins (T7[diff],17[R159](d)) — while touching the same two files. So: its own PR.CI
Run ids are reported as comments on this PR as they land.
Lab-Run: IR-20261112-sbxdisk
sbx-lab-0's 60Gi `work` PVC (longhorn-fleet-work, claim work-sbx-lab-0) reached 100% at 2026-11-12T12:38Z and WRITES FAILED: a live orchestration session lost its scratch, its builds and its git worktrees, and no alarm told anyone. The same day it was measured climbing again at ~7 G/h from scratch directories. This commit makes that condition loud and takes one of its unbounded residents off the volume. 1. PrometheusRule `sandbox-work-volume-alerts` (namespace monitoring), two legs, one selector: kubelet_volume_stats_used_bytes{namespace=~"sbx-.*|ld-fleet"} / kubelet_volume_stats_capacity_bytes{namespace=~"sbx-.*|ld-fleet"} * SandboxWorkVolumeFilling > 0.80 for 10m, severity warning * SandboxWorkVolumeFillingCritical > 0.92 for 10m, severity warning (the NAME carries the urgency; the severity deliberately does not, because the operator's inbox routing keeps a sandbox scratch fill on the non-paging `alert-intake` tier. A warning also never reaches `pi-alert-receiver`, which only `severity="critical"` and the named disk-pressure routes do.) The selector is namespace-scoped on purpose: a per-PVC list goes stale when a sandbox is added, and a stale list is silent -- the exact failure this closes. It matches FIVE claims today (read-only, 13:56Z): sbx-lab/work-sbx-lab-0 at 51.5% (32 506 445 824 / 63 090 503 680) and the four ld-fleet record volumes at 2.8-5.8%, so it is not vacuous and it is silent on today's healthy state. sbx-gits and sbx-sendrast mount `work` as a node hostPath, which has no kubelet_volume_stats series at all; that blind spot is stated in the file's header rather than papered over. Both rules carry the repo's full ld_* disposition contract (owner/action/frequency/disposition/silence/review/note). HONESTY NOTE: PersistentVolumeFillingUp (>75%, 15m, warning) already covers these volumes and fires FIRST on a slow fill. This file is not a threshold improvement; it adds the sandbox scope, the name, the disposition and the 0.92 leg. Said in the rule's own description too, so nobody reads it later as a better alarm. 2. GOCACHE off the shared volume onto a capped emptyDir, in BOTH sandboxes. /home/ld/work/go/cache -> /home/ld/go-cache (volume `go-cache`): sizeLimit 8Gi in sbx-lab, 4Gi in sbx-gits. CHOSEN: emptyDir + sizeLimit, NOT a pre-start `go clean -cache` at N GB. * A sizeLimit binds CONTINUOUSLY; exceeding it evicts THIS pod -- loud, immediate and self-healing, and the restarted pod starts with an empty cache. A pre-start clean only ever fires at a pod START, so a sandbox that runs for days between restarts (sbx-lab is OnDelete and is only restarted with the supervisor) can fill the volume between restarts and never run the clean at all. * Cost: the build cache does not survive a recreate, so the first `go build` afterwards is cold. That is the right thing to lose -- it is a cache; the git work tree lives on the PVC, and the module cache is what actually costs network time to rebuild. * Ephemeral-storage arithmetic, measured against the containers' own limits: sbx-lab `sandbox` mounts become tmp 8Gi + go-cache 8Gi + herdr-sock 64Mi = 16.06Gi against its 20Gi limit, so the volume caps still bind before the container limit. sbx-gits `sandbox` is 8+4+0.06 = 12.06Gi against a 10Gi limit: the cache alone (4Gi) and /tmp alone (8.06Gi) can each never reach it, only their sum can, and sbx-gits is capped at 4Gi rather than 8Gi for exactly that reason. Raising that container limit was the alternative and is rejected: 10Gi was chosen so the volume cap binds first, and the node has 31 GiB free for the pod's whole ceiling. GOMODCACHE IS DELIBERATELY UNTOUCHED in both sandboxes and stays on the work volume (/home/ld/work/go/pkg/mod): it is small, mostly read-only per build and expensive to re-download. 3. promtool unit tests (rule-tests/sandbox-work-volume.test.yaml), run with promtool v3.4.0 -- the version the cluster runs: * 0.81 fires the 0.80 leg, does NOT fire the 0.92 leg, and is still silent at 5m (so `for: 10m` is proven to be 10m); * 0.79 is silent on both legs; * 0.93 fires the 0.92 leg; * 0.91 fires only the 0.80 leg; * the real capacity of the volume that filled (63090503680 B, 0.810) fires; * an ld-fleet record volume is reached by the same selector; * a 99% volume in a namespace OUTSIDE sbx-.*|ld-fleet stays silent, so the selector's scope is asserted, not just described. `promtool check rules` -> SUCCESS: 2 rules found. `promtool test rules` -> SUCCESS. The whole rule-tests suite (rule-tests/promtool-test.sh) is green. NOT FOLDED INTO EXTDEL v2 (infra-core #958): that PR is open, two commits, NOT FOR LANDING, and its landing gate pins a head (`0c72e058`) for a seat pair plus a recreate choreography with 4a and homelab-33. Adding commits there would move its head (voiding its seats), give one PR two Lab-Run ids, and force a re-measure of the allowed-change sets it pins (T7[diff], 17[R159](d)); this change touches the same two files. So it is its own PR. This branch still changes exactly `M statefulset.yaml` under core/manifests/apps/sbx-gits, which is what T7[diff] permits. Both statefulsets are OnDelete: this changes the template and restarts NOTHING. GOCACHE takes effect at each pod's next recreate, and so does the new volume. No pod was touched, no cluster write was made by this commit. 4. The repo's own epic suite (scripts/gits-sbx-epic-test.sh) is updated where this branch's delta is the thing it pins, and nowhere else: * p1_lab_sts_bad's allowed-addition literals gain `go-cache` and /home/ld/go-cache (the same one-place allowlist every wave that adds a volume extends; the check stays an allowlist, not a blanket "it changed"); * SBX_GITS_DIFF_SET is RE-MEASURED for this branch to `M statefulset.yaml` (the previous literal was the measured delta of a branch already in live). MEASURED: this branch 16 of 701 checks fail; a clean origin/live worktree fails the SAME 16 of 700 (diff of the two FAIL lists is empty, and it is reported as 16 pre-existing environment failures, not as green CI). The new checks here are green: H8[8][sbx-gits] PASS, H8[8][sbx-gits][mut] baseline PASS, 10b[R99][sbx-sendrast] PASS, T7[diff] PASS with its red mutation PASS. NOT FOR LANDING: f1 one-look, then a seat pair + GO. Lab-Run: IR-20261112-sbxdiskView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.