We hold that an operator should require Oxide Support to authorize skipping a job in a sequence of jobs in the session. That's why job-skip is an authorized action signed by Oxide Support.
Unfortunately, the current implementation has a hole: you can abort a job by (known) job ID prior to submitting it, which will pre-emptively abort the job. The effect: the job is skipped, and it was not required to get a signature from Oxide Support. This undermines the guarantee that signed jobs hash-chain onto one another such that the sequence of started jobs on any sled is a prefix of the hash-chain of jobs.
I think we should fix this so that aborting a not-yet-known job is a no-op.
Technically, this does not close the hole entirely because there's still a race where if other jobs are queued, you can abort the job before it runs... but this will always stand if we want the operator to be able to abort jobs without a signature from Oxide, and we have ruled that this is desirable. Perhaps worth briefly revisiting to ensure we stand by that.
We hold that an operator should require Oxide Support to authorize skipping a job in a sequence of jobs in the session. That's why job-skip is an authorized action signed by Oxide Support.
Unfortunately, the current implementation has a hole: you can abort a job by (known) job ID prior to submitting it, which will pre-emptively abort the job. The effect: the job is skipped, and it was not required to get a signature from Oxide Support. This undermines the guarantee that signed jobs hash-chain onto one another such that the sequence of started jobs on any sled is a prefix of the hash-chain of jobs.
I think we should fix this so that aborting a not-yet-known job is a no-op.
Technically, this does not close the hole entirely because there's still a race where if other jobs are queued, you can abort the job before it runs... but this will always stand if we want the operator to be able to abort jobs without a signature from Oxide, and we have ruled that this is desirable. Perhaps worth briefly revisiting to ensure we stand by that.