beta.27's in-plugin pipeline relied on sharp's withoutEnlargement
clamping to handle oversize widths, but the clamped outputs were
content-identical to the source-width variant. Vite content-hashes
those identically and emits ONE physical file under one of the names,
leaving the asset map with URL keys for the deduped widths that point
at non-existent files.
The reconcile orchestrator now reads source dimensions before
rendering and skips outputs whose requested width exceeds source.width.
useResponsiveImage's natural fallback to the bare `img/{name}.{ext}`
URL (which exists because originals live in the flat dir) covers
tiny-source cases where no width fits.
Cache-up-to-date check now compares against manifest.variants (what was
actually generated) instead of planner.outputs (everything requested),
preventing re-render thrash on tiny sources.
Bumps to 1.0.0-beta.28.
Tests: 586 passing (3 new for the skip / fulfillable-widths / no-thrash
behaviors).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>