92a67ef6

By: Michael Lynch <git@mtlynch.io>

Consolidate media service tests into table-driven tests

Merge the three near-identical publish tests (image, animated image,
video) into one TestServicePublishesMedia table that selects the publish
method per row via a method expression. Drop error-path rows that
repeated identical shared logic across media types: all three publish
methods funnel into the same unexported publish() and
classifyProcessingError(), so each error path now has one row (plus the
video-specific too-long translation).

Merge the three Delete tests into one TestServiceDelete table covering
file-variant deletion per media type, not-found error translation, and
the no-purge-on-file-deletion-failure guarantee. The store-sentinel
leak check now runs as a general assertion on every row.

Also simplify mockProcessor to a single processErr field and remove its
calledProcess* fields, which no test asserted.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
configuredevShellx86_64-linuxbackendbackend-devcheck-bashcheck-frontendcheck-go-formattingcheck-go-test-packagescheck-trailing-newlinecheck-trailing-whitespacedeploy-to-flydiagramdocker-imagee2e-testsgo-testsimport-from-tinybeansjs-testslint-sqllittle-momentslittle-moments-devx86_64-linux