pub fn set_candidate_status(
fs: &impl Fs,
paths: &StorePaths,
clock: &impl Clock,
doc_id: &str,
cand_id: &str,
new_status: CandidateStatus,
) -> Result<CandidateEntry, SessionError>Expand description
Transition a candidate’s lifecycle status by appending a superseding entry
(same id/page_id/snapshot_hash, new status + fresh timestamp). The
scratch index stays append-only and auditable; list_scratch resolves the
latest status per id via last-write-wins.
Returns SessionError if cand_id does not match any known candidate.