[E29-S03] core.image end to end #114

Open
opened 2026-08-27 00:03:24 +00:00 by kpcto · 0 comments
Owner

Parent epic: [E29] Media pipeline (#55)

Intent

Ship the core.image block end to end so an article with an image renders a responsive picture without any client hydration.

Acceptance criteria

  • Render an article image as a responsive <picture> carrying width and height
  • Lazy-load images that fall below the first viewport
  • Pass the zero-hydration fitness test with no client-side hydration bundle

Explicitly out of scope

  • Upload validation (E29-S01) and derivative generation (E29-S02) are upstream of this story
  • Video rendering is covered by core.video in E29-S04

Test plan

  • Render an article with an image and assert a responsive picture with width and height
  • Run the zero-hydration fitness test and assert no hydration bundle is emitted

Rollback note

  • Roll back the block renderer; content records are unchanged

Owning stream

platform

Risk quadrant

agent-full

> Parent epic: [E29] Media pipeline (#55) ## Intent Ship the `core.image` block end to end so an article with an image renders a responsive picture without any client hydration. ## Acceptance criteria - Render an article image as a responsive `<picture>` carrying `width` and `height` - Lazy-load images that fall below the first viewport - Pass the zero-hydration fitness test with no client-side hydration bundle ## Explicitly out of scope - Upload validation (E29-S01) and derivative generation (E29-S02) are upstream of this story - Video rendering is covered by `core.video` in E29-S04 ## Test plan - Render an article with an image and assert a responsive picture with width and height - Run the zero-hydration fitness test and assert no hydration bundle is emitted ## Rollback note - Roll back the block renderer; content records are unchanged ### Owning stream platform ### Risk quadrant agent-full
kpcto added this to the Sprint M milestone 2026-08-27 00:03:24 +00:00
kpcto added the
kind
story
status
proposed
labels 2026-08-27 00:03:24 +00:00
Sign in to join this conversation.