= 2.59.12.49 =
* Exclude every UltraCache-owned table and UltraCache-owned option row from Media Library replacement database discovery, planning, preview, apply, verification, and rollback.
* Add an apply-time internal-state guard so a plan created by an earlier version cannot write UltraCache operational records; existing internal plan rows are classified as excluded instead of failed.
* Add Continue Replacement recovery for failed metadata, database, Theme CSS, and post-replacement Flush All phases while preserving every completed change.
* Add Restart Database Replacement for database-phase failures, rebuilding only unresolved database references from the current database while preserving switched attachment metadata and successful content replacements.
* Run Flush All after Media Library replacement completes and report the attachment, site-content, internal-exclusion, and clean-slate cache-reset result in the completion message.

= 2.59.12.48 =
* Show homepage HTML warm completion with the canonical warmed URL and the actual HTML, Varnish-variant, and LiteSpeed pipeline stages instead of a static success sentence.
* Show homepage HTML + CSS bundle warm completion through the same stage formatter used by menu and full-site warm-up, including CSS and the verified Varnish variant count.
* Reuse the same result-driven homepage summary when a shared/homepage CSS bundle is prepared before a broader manual warm job; no warm runtime behavior is changed.

= 2.59.12.47 =
* Make Flush All a clean warm/Varnish queue generation boundary by deleting every prior pending, retrying, processing, completed, skipped, and terminal row instead of preserving invalidation and refill work.
* Clear foreground and cron ownership, bump the warm generation, unschedule old ticks, and wait for the authoritative cron worker lease to finish before deleting the old queue.
* Hold a purge mutation barrier that blocks new page-cache and generated-CSS write locks and drains existing write/build locks before the cache directory is removed.
* Start external cache clearing and the optional warm-after-flush plan only after the purge mutation barrier is released, so any resulting queue rows belong exclusively to the new generation.
* Fail Flush All when the clean-slate queue reset cannot be committed instead of reporting success with stale queue work still present.

= 2.59.12.46 =
* Allow the authenticated HTML-variant diagnostic warm pipeline to ignore only the `DONOTCACHEPAGE` flag inherited from the current UltraCache admin/REST request while preserving all public URL eligibility, exclusion, WooCommerce, and cacheability checks.
* Revise the HTML-variant capability contract so the self-blocked 2.59.12.45 observation is invalidated and cannot remain authoritative before a fresh Test Varnish run.
* Present an incomplete upstream warm/refill observation as `Observation incomplete` with its concrete stored reason instead of collapsing it into `Not supported · 0 of N`.

= 2.59.12.45 =
* Retry only transient DNS, transport, timeout, throttling, and server failures during public Varnish HTML-variant refill while stopping immediately on successful or terminal HTTP responses.
* Remove the stale `cache-write-failed` classification from successful HTML warm results and propagate the actual failed Varnish bucket, HTTP/error code, retryability, and bounded attempt history through the warm pipeline and queue result.
* Keep HTML-variant capability observation inconclusive when the canonical warm/refill path cannot reach the per-bucket proof stage instead of converting an upstream refill failure into a false variant-unsupported result.
* Pass the explicit warmed page URL, source, and Accept bucket into the final media rewrite so cron, CLI, stale, and warm workers can queue missing AVIF/WebP files and associate them with the correct page.
* Scope missing-media discovery limits per warmed page and continue affected-page registration when a missing optimized lookup is memoized or already queued elsewhere in the same worker.
* Rewrite local upload background images emitted by page builders inside inline CSS `<style>` blocks through the same validated AVIF/WebP lookup and on-demand generation path used by image markup and style attributes.

= 2.59.12.44 =
* Separate Varnish capability observation from control transport: create and verify canaries through the canonical public WordPress route while sending PURGE or BAN only to the configured control endpoint.
* Restore HTTP exact-invalidation discovery for control-only listeners such as the Hetzner endpoint without requiring those listeners to serve ordinary frontend GET requests.
* Preserve independent Exact PURGE and Exact BAN behavior probes and derive broader capability tests from the method verified during the current run.
* Preserve terminal topology outcomes such as entire-host `not-applicable` instead of reclassifying them through generic supported/unsupported aggregation.
* Persist endpoint, basic-test, HTML-variant, ESI, and aggregate capability diagnostics in existing revisioned UltraCache state records, with one-time migration from superseded diagnostic options.
* Invalidate the incorrect 2.59.12.43 capability proofs through revised capability fingerprints so they cannot authorize runtime behavior before a fresh Test Varnish run.
* Keep capability-probe operations isolated from production recent-operation reporting and require a specific reason for every non-executed or inconclusive capability result.

= 2.59.12.43 =
* Independently behavior-test HTTP Exact PURGE and Exact BAN on every configured endpoint instead of limiting probes from the configured method or adapter classification.
* Derive the common production hard-invalidation method from current endpoint proofs and use the same verified method for targeted, HTML-only, and entire-host runtime operations.
* Probe Batch BAN, HTML-only flush, entire-host flush, soft purge, stale refresh, and origin revalidation independently without executing known-URL or TTL production fallbacks.
* Persist explicit per-endpoint capability states, reason codes, messages, applicability, conclusiveness, timestamps, and proof expiry in the existing UltraCache state table.
* Distinguish supported, not supported, not applicable, observation incomplete, configuration changed, proof expired, and not tested outcomes; every untested UI result includes its specific persisted reason.
* Migrate the legacy endpoint capability option into the existing UltraCache state record and remove the legacy option after successful persistence; no transient state is added.

= 2.59.12.42 =
* Make Automatic Varnish site flushing choose from the observed static-object route and verified production capabilities instead of preferring HTML-only flush unconditionally.
* Select verified entire-host flush when public static objects pass through Varnish, and select verified HTML-only flush when public static objects bypass Varnish.
* Report a verified HTML-only operation as degraded when static ownership is inconclusive or static objects pass through Varnish without verified entire-host invalidation.
* Display the actual site runtime strategy in the Varnish summary: HTML-only flush, entire-host flush, known site pages, or automatic expiry.
* Preserve the existing capability persistence, production transports, VCL contracts, and explicit manual scope behavior.

= 2.59.12.41 =
* Use one bounded post-invalidation observation contract for exact invalidation, batch BAN, HTML-only flush, entire-host flush, and static preservation proofs.
* Retry transient public DNS/HTTP observation failures while still requiring two successful responses that match the expected canary generation or exact written artifact.
* Fail immediately on any successful stale or mismatched observation so retries cannot manufacture a capability the production runtime does not support.
* Report exhausted transport-only observations as `observation-incomplete` instead of incorrectly classifying the server capability as unsupported.
* Preserve the existing production planner, control operations, capability tables, and persistent diagnostic contracts without adding transient state.

= 2.59.12.40 =
* Preserve the complete Varnish basic-test contract instead of truncating associative payloads by key count, recursion budget, insertion order, or string length.
* Persist the full ESI capability proof and endpoint/test evidence through the existing sanitization contract.
* Add an independent contract-bound HTML variant capability record and use it as the authoritative public-path registry source.
* Restore the HTML variant capability into the basic diagnostic response from its dedicated record and remove the redundant capability-list slice.
