pub fn void(
vault_path: &Path,
pp: &Passphrase,
target_ref: &str,
now: OffsetDateTime,
) -> Result<EventId, CliError>Expand description
FR8: void a revocable decision. Voiding a non-revocable / effective-allocation target raises
decision_conflicts in the projection (no effect) — the CLI only appends; the engine adjudicates.
When the voided decision is a LotSelection, also clears that disposal’s optimize_attestation
row ATOMICALLY (same in-memory DB, one session.save()). This closes the revocation-completeness
edge: without the clear, a post-void re-run where the FIFO default equals the optimum
(proposed==current, D ∈ unchanged) could mislabel D as AttestedRecording from a stale row
the user never attested in this context. Non-LotSelection decisions are unaffected (the
optimize_attestation table has no row to clear — the delete is a no-op).