let create
    ?id ?name ?metadata
    ?(depends_on=[]) ?(on_failure_activate=[]) ?(on_success_activate=[])
    ?(make=Build_process.nop)
    ?condition ?(equivalence=`Same_active_condition) ?(tags=[])
    () = 
  let history = `Passive (State.make_log ()) in
  let id = Option.value id ~default:(Unique_id.create ()) in
  { id; name = Option.value name ~default:id; metadata; tags; 
    log = []; depends_on; make; condition; history; equivalence;
    on_failure_activate; on_success_activate; }