Summary
hpc status <id> on an array job or a heterogeneous job reports the accounting fields of the first parent row only. The polling path fixed in #10 already aggregates across rows, so hpc submit --wait correctly waits until every task is terminal — but the new detail path added in #5 has no equivalent treatment.
Reproduction
For an array job whose tasks finish with mixed outcomes (e.g. one OOM, two COMPLETED), the user sees:
Job 12345_0: COMPLETED
ExitCode: 0:0
Elapsed: 00:01:23
MaxRSS: 1024K
ReqMem: 16Gn
…with no indication that another task was OUT_OF_MEMORY. Same shape for hetjob leaders: only the first component's accounting is rendered.
Proposal
Render either:
- one block per task / het component (probably gated by an opt-in flag to avoid noise on large arrays), with the parent row identified by the canonical
JobID (e.g. 12345_0, 12345_1 for array tasks; 12345+0, 12345+1 for het components), or
- an aggregate summary line (e.g.
3 tasks: 2 COMPLETED, 1 OUT_OF_MEMORY) with per-task drill-down on demand.
The exact UX shape is part of this issue.
Out of scope
Summary
hpc status <id>on an array job or a heterogeneous job reports the accounting fields of the first parent row only. The polling path fixed in #10 already aggregates across rows, sohpc submit --waitcorrectly waits until every task is terminal — but the new detail path added in #5 has no equivalent treatment.Reproduction
For an array job whose tasks finish with mixed outcomes (e.g. one OOM, two COMPLETED), the user sees:
…with no indication that another task was OUT_OF_MEMORY. Same shape for
hetjobleaders: only the first component's accounting is rendered.Proposal
Render either:
JobID(e.g.12345_0,12345_1for array tasks;12345+0,12345+1for het components), or3 tasks: 2 COMPLETED, 1 OUT_OF_MEMORY) with per-task drill-down on demand.The exact UX shape is part of this issue.
Out of scope
wait_for_jobpath (already handled in fix(scheduler): aggregate Slurm sacct rows for array job wait #10).