convey/activities: adopt wave 0 error primitives for day loadData (wave 1)
Migrate loadData to apiJson(...) with array shape validation, upgrade the first-paint loading scaffold to the shared surface-state loading markup, and route failures through replaceLoading('timelineView', errorCard(...)). Valid empty arrays still render the legitimate empty-day copy instead of an error state.
Co-authored-by: OpenAI Codex <codex@openai.com>