A processor turns one verified path into another path: unpacking an
archive, or preparing a package-specific layout. It carries an id so the
processed result gets its own cache slot and its own provenance, rather
than being confused with the raw artefact it came from.
Examples
unzipper <- processor("unzip", function(input, output_dir) {
utils::unzip(input, exdir = output_dir)
output_dir
})