Repository navigation
✨ Add optional Slurm launch validation - #2601
flowerthrower wants to merge 20 commits into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
59dff77 to
95b6201
Compare
e8ac561 to
143be0c
Compare
Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com>
Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com>
Qualify earlier validation evidence after rebasing onto main. Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com>
143be0c to
4f5edee
Compare
Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
🤖 *AI text below* 🤖 Include the checker build-path correction and focused CLI coverage in the launch-validation stack. Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
🤖 *AI text below* 🤖 Treat a changed task environment as a cache miss. Reuse the existing bounded checker so ordinary MPI ranks and task-specific provider inputs can launch independently. Keep cached results for matching inputs. Extend the real Slurm fixture with PMI2 success, failure, and timeout coverage, and update the existing configuration-variation assertion. Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
burgholzer
left a comment
There was a problem hiding this comment.
🤖 AI text below 🤖
Early design feedback on 7d035f87: recommend making the supported context explicit—one provider configuration per node/job step, with the runtime, catalogue, and credentials established before validation and consistent across that step's tasks. This is a deliberate scope reduction from the current per-task configuration support.
That contract allows one shared bounded result per node/step and removes environment fingerprinting and fallback checks. Ordinary MPI rank metadata should not multiply provider queries. Preserve job identity, explicit job-environment passing, node-safe rejection, deadlines, cancellation, and child cleanup.
With the production changes described inline, remove test/slurm/validation_environment.cpp and its build/license plumbing, the task-specific configuration scenario, and the artificial 128 KiB rejection scenario. Keep two-node/four-task MPI success, failure, and timeout tests, expecting two checker calls. Also keep distinct batch/nested-step results, effective configuration, no payload on failure, license release, node health, and descendant cleanup. The source-inspection estimate is about 140–160 fewer production/fixture lines; no patch has been applied.
The 22 lightweight runner tests passed at this head. A compiled probe using the exact validation header confirmed that two otherwise identical task environments invoke the checker once, but changing only PMI_RANK causes two invocations. The full Slurm cluster was not rerun during this review.
Use the site-established job environment directly and share only the checker result. Remove per-task snapshots and their test plugin while retaining bounded supervision, MPI, failure, cancellation, and cleanup coverage. Assisted-by: OpenAI Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
🤖 *AI text below* 🤖 Carry the checker test configuration into the dependent Slurm validation branch. Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
🤖 *AI text below* 🤖 Carry the updated checker stack and provider-wheel guard into launch validation. Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
burgholzer
left a comment
There was a problem hiding this comment.
🤖 AI text below 🤖
Re-reviewed 28935230. Both earlier requests are addressed: shared state now represents one result per node/step, and the guide explicitly requires the provider runtime/catalogue/credentials to exist before the hook. Keep the bounded wait, process groups, parent-death handling, and cleanup before reaping.
Focused compiled probes using the current header passed: eight callers with different PMI_RANK values produced one checker invocation; killing the winning task caused a waiting caller to fail within the bounded deadline. The lightweight runner suite passed 22/22, and current hosted Slurm checks pass; no full cluster was rerun locally.
Two follow-ups are inline: make the cancellation test independent of its own timeout, and merge the two validation-success allocations into the stronger MPI case. The former is a test-oracle gap, not evidence of broken production cancellation.
Optional documentation wording: use “The checker accepts” instead of “The checker still accepts”, and make “leave automatic validation disabled” explicitly administrator-facing. A job author cannot disable a site-wide validate= setting; this needs clarification, not a new option.
🤖 *AI text below* 🤖 Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
🤖 *AI text below* 🤖 Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
🤖 *AI text below* 🤖 Keep the checker and batch time limits beyond the cancellation observation window. Fold MPI success into the existing identity and environment assertions, and clarify who disables site validation. Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
🤖 *AI text below* 🤖 Keep the launch-validation layer on the updated shared fixture and QDMI checker without changing its behavior. Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
🤖 *AI text below* 🤖 Keep the validation stack on the verified checker build configuration. Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
🤖 *AI text below* 🤖 Propagate the current Core documentation policy through the PR stack. Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
🤖 *AI text below* 🤖 Keep the validation stack on the checker tested with the current driver lifetime. Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com> Assisted-by: GPT 5.6 via Codex
🤖 *AI text below* 🤖 Propagate the documentation correction through the launch-validation stack without changing runtime behavior. Assisted-by: GPT-6 via Codex Signed-off-by: flowerthrower <flowerthrower@users.noreply.github.com>
Use the updated checker and shared fixture. Remove the duplicate launch without validation, and link the checker catalogue requirement. Assisted-by: GPT-6 via Codex
|
🤖 AI text below 🤖 Superseded by the consolidated implementation in #2599 ( |
🤖 AI text below 🤖
Description
Extend Core's shared SPANK component to run the QDMI checker as the job user with the effective job environment after configuration injection. Validation remains disabled unless an administrator supplies the checker path. Provider code stays outside Slurm daemons.
Each node runs one check per job step and shares its result across tasks. The checker uses Slurm's borrowed job environment directly. A failed check blocks tasks on that node; waits and child-process cleanup remain bounded.
Automatic validation requires the same site-established provider runtime, catalogue, and credentials for all tasks on each node, configured before the hook. For environments activated later in a batch script, the guide shows an explicit checker invocation after setup. This is a readiness snapshot, not a reservation, authorization, or atomic launch guarantee across nodes.
Fixes #2313. Stacked on #2600 and depends on #2599.
Validation
Codex assisted implementation, validation, and this description. Human review and acceptance are pending.
Checklist
If PR contains AI-assisted content:
🤖 *AI text below* 🤖(titles are exempt).