Skip to content

feat: site layer — site.yaml schema, Config.push_site, shipped site/ral.yaml - #207

Merged
Jammy2211 merged 1 commit into
mainfrom
feature/hpc-campaign-p1-status-record
Oct 29, 2026
Merged

Jammy2211 merged 1 commit into
mainfrom
feature/hpc-campaign-p1-status-record

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

Summary

hpc-campaign phase 1 (#206). Adds a site layer: a site.yaml describing one HPC site (partitions, node sizes, limits, energy constants), loaded with Config.push_site(name). It is the input later phases use to lint Slurm requests and estimate carbon.

  • schema: partitions with gpu_only, cores_per_node, mem_per_node_mb, max_time, max_array_size, tdp_w_per_cpu, cpu_is_thread, gpu_model, gpu_tdp_w; site-wide pue (range), grid_region, ci_basis, energy_accounting. Any value may be plain, {value: ...} or a {low, high[, central]} range, and may carry unverified: true
  • Site.cpu_partitions / Site.check_cpu_job keep CPU-only jobs off gpu_only partitions
  • Config.push_site(name): a config-dir site/<name>.yaml overrides the shipped autonerves/site/<name>.yaml; the result is kept on Config.site
  • shipped autonerves/site/ral.yaml: ral CPU partition and gpu (gpu_only: true, A100), encoding the 2026-09-30 rule that CPU jobs never go on RAL gpu; every unconfirmed constant marked unverified (PUE 1.14–1.45, 2.8–4.4 W/CPU, A100 250–400 W)
  • Nerves imports nothing from autofit (tested)

Independent of the PyAutoFit phase 1 PR; can merge in any order.

API Changes

Additive. New autonerves.site_config module and Config.push_site(name) / Config.site. Ships site/ral.yaml as package data (pyproject.toml).
See full details below.

Test Plan

  • test_autonerves/test_site_config.py (new): schema validation, ranges and unverified, push_site("ral") loads the shipped file with gpu marked gpu_only, config-dir override, CPU job rejected on a gpu_only partition, no autofit import
  • Full test_autonerves suite: 280 passed
  • Smoke (with the PyAutoFit phase 1 branch): pyauto-heart smoke autofit autolens_test on the phase 1 worktree (PyAutoFit + PyAutoNerves + autofit_workspace branches together): 47 passed, 0 failed
Full API Changes (for automation & release notes)

Added

  • autonerves.site_config — site schema, validation, Site, Site.cpu_partitions, Site.check_cpu_job
  • Config.push_site(name), Config.site
  • package data autonerves/site/ral.yaml

Migration

  • None.

Refs #206

🤖 Generated with Claude Code

…al.yaml

hpc-campaign phase 1 (#206).

- autonerves/site_config.py: site.yaml schema (partitions with gpu_only,
  cores_per_node, mem_per_node_mb, max_time, max_array_size, tdp_w_per_cpu,
  cpu_is_thread, gpu_model, gpu_tdp_w; pue as a range; grid_region; ci_basis;
  energy_accounting) + validation. Any value may be plain, {value: ...} or a
  {low, high[, central]} range and may carry `unverified: true`.
  Site.cpu_partitions / Site.check_cpu_job keep CPU-only jobs off gpu_only
  partitions.
- Config.push_site(name): config-dir site/<name>.yaml overrides the shipped
  autonerves/site/<name>.yaml; result kept on Config.site.
- autonerves/site/ral.yaml (package data): `ral` CPU partition and `gpu`
  (gpu_only: true, A100) encoding the 2026-09-30 rule; every unconfirmed
  constant unverified (PUE 1.14-1.45, TDP 2.8-4.4 W/CPU, A100 250-400 W).
- Nerves imports nothing from autofit (tested).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016nhQ8N4RdvbZz9cstLYtNF
@Jammy2211 Jammy2211 added the pending-release PR queued for the next release build label Oct 29, 2026
@Jammy2211
Jammy2211 merged commit 651e0ce into main Oct 29, 2026
3 checks passed
@Jammy2211
Jammy2211 deleted the feature/hpc-campaign-p1-status-record branch October 29, 2026 21:24
@pyautolabs-bot pyautolabs-bot Bot removed the pending-release PR queued for the next release build label Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant