# Web Sessions V1 Preparation list rows expose independent `editing_state` and `delivery_state`. A local draft action saves one new ready revision on the same preparation and then creates its delivery; a local ready revision is delivered directly. Pending, acknowledged and remote-unknown preparations never create a second delivery. The action is disabled while its request is running and every state has visible text in addition to color. Successful delivery admission immediately starts the configured common sync orchestrator. If transport is unavailable, the durable pending delivery remains retryable; the preparation is not reverted or recreated. When completed history contains the delivery's exact `execution_session_id`, the preparation leaves the active list while all preparation revisions, entries and delivery provenance remain stored. Program completion continues to derive from the Core `execution_state`, never from list disappearance. The Sessions route implements four distinct views: - Preparation: manual preparations and immutable AI proposals; - Resume: lifecycle-backed execution drafts, continued only on Android; - History: completed sessions, including explicit unknown end times. - Programs: durable desktop planning definitions, import and explicit manual preparation creation. Manual preparation supports a title, session type, optional calendar date, note, catalogue selection, duplicate occurrences, keyboard reordering, equipment/load semantics and profile-compatible targets. Draft saves may remain incomplete. Marking ready validates executable content; preparing for Android then creates a distinct immutable delivery and reserved execution identity. Every view has one stable descending presentation order. Preparation merges manual preparations and proposals by valid planned civil date, then factual `sort_timestamp`, then kind and stable identity. Undated or invalidly dated items remain visible after valid dates. Resume uses the execution-draft recency timestamp supplied by Core, and History uses the real start instant; both use stable identity to break exact ties. Search and filters operate on the complete paged result and reapply the same order. Late results from an older view or query cannot replace the current list. Web presentation defaults to French civil dates (`DD/MM/YYYY`) and 24-hour times. A local **Display settings** dialog can select ISO dates. The versioned preference is stored atomically with private permissions in `$XDG_CONFIG_HOME/trainlog/web/preferences-v1.json`, falling back to `$HOME/.config`; it is neither business data nor synchronized state. Missing or invalid storage uses the French default, and invalid storage is reported. Civil `YYYY-MM-DD` values are validated and never timezone-shifted. Zoned timestamps preserve their instant and are presented in the browser timezone; the original machine value remains in API data and `