08f20c65f3
Atomic Lua-driven snapshot mutation for the burst-buffer entry hash. Returns one of three result codes per Q3: - applied_to_snapshot: entry was QUEUED + not materialised; the drainer will see the patched payload on its next pop. - not_found: no entry hash for this runId. - busy: entry is DRAINING / FAILED / materialised — the caller wait-and-bounces through PG (helper lands in B5). Four patch types: - append_tags: union-merges into payload.tags, dedupes against existing values. - set_metadata: replaces metadata + metadataType (last-write-wins). - set_delay: replaces payload.delayUntil. - mark_cancelled: stamps cancelledAt + cancelReason; the drainer bifurcation in Q4 reads these on next pop. 10 new tests cover: not_found, all four patch types (success + absent-field handling), each busy state (DRAINING, FAILED, materialised), and per-runId atomicity under 50-way concurrent appends.