SlurmBackend.launch: populate expected_artifacts declaration (SLURM finalize/confirm unusable without it)
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Problem
SlurmBackend.launch never stuffs the expected_artifacts declaration onto handle.extra under EXPECTED_ARTIFACTS_HANDLE_KEY (zero non-docstring references in src/explore_persona_space/backends/slurm.py), so dispatch_issue.py finalize on ANY SLURM run FAILs confirm_artifacts with "missing declaration" regardless of what the workload produced — the mechanical artifact gate is structurally unusable on the free lanes. Found live during #588 (2026-06-11): the nibi custom-workload smoke completed cleanly (HF upload PASS, phases observed) but could not be finalize-confirmed. GCP populates the declaration at launch (gcp.py expected_artifacts_declaration, ~426-479); SLURM needs the analogous wiring with lane-appropriate paths (scratch-side sentinel path; same HF data-repo + git path shapes; attempt id slurm-${SLURM_JOB_ID} per the #588 EPS_* export convention).
Deliverables
SlurmBackend.launchbuilds + attaches the declaration (mirrorgcp.py's shape; sentinel path = the[phase=done]-adjacent sentinel the sbatch terminal block writes, or add one if the sbatch doesn't write a file sentinel today — investigate first).SlurmBackend.fetch_resultspulls whatever the declaration's sentinel check reads (rsync_pull already exists).- Unit tests: declaration present on the handle post-launch; confirm_artifacts consumes it (mocked IO).
- Verify against #588's evidence shape:
issue588_slurm-15956499/raw_completions/on the HF data repo would have PASSed.
Out of scope
- The GCP lane (working as of #588).
- Router/lane-order changes.