dfR/tmux-queue.R
tmuxReconcileQueueWithDF.RdexperimentTmux() materialises the queue from df only when queue_path
does not yet exist; an existing queue is authoritative, so a resumed run keeps
its DONE/RUNNING state instead of restarting finished work. That rule is
right, but it used to be applied silently: a caller who had carefully rebuilt
df – new scenarios added, finished ones dropped – would watch the previous
queue run instead, with nothing to distinguish that from success. The only
way to act on the new df was to notice, and delete or rename the file.
This keeps the rule and makes it visible, and adds the middle option that was
missing: take the existing queue and the rows df adds.
Rows are compared on the non-meta_cols, non-list columns – the scenario
fields. List columns (.modules, .times) are payload, not identity.
tmuxReconcileQueueWithDF(
df,
queue_path,
onExistingQueue = c("resume", "append", "rebuild")
)data.frame of runs, as passed to experimentTmux().
Character path to the queue .rds.
What to do when queue_path already exists:
"resume" (default) – keep the existing queue; warn if df holds rows it
does not, naming them and saying how to act on them;
"append" – add those rows as PENDING, leaving existing rows and their
status untouched;
"rebuild" – discard the existing queue and start again from df.
Invisibly, queue_path.