flybrain/services/flysim/crates/fly-session/tests
dev 45621903be session: name the two ways a durable wait ends without an acknowledgment
Review follow-up on the checkpoint store.

A dropped reply channel and an expired caller budget were both reported as
ReplyLost. They are different facts -- the first means the write is over and its
outcome did not reach here, the second means the save is still going -- so they are
now separate outcomes, and the durable wait has its own budget rather than borrowing
the one that bounds a call to a participant. Both still leave durable metadata where
it was, and for both the resolution asks the store about the same checkpoint.

The writer's two bounds refuse at different moments and the comment claimed
otherwise: the outstanding-capture bound is taken before a capture is requested, and
the byte budget cannot be, because a capture's size is not known until it exists. The
byte check, the decision and the change to the byte total are now one critical
section, the peak is sampled after a superseded job's bytes are gone, and the writer's
own bookkeeping is over a type that holds only the outcomes a writer can produce.

The manifest's coordinator.eventWatermarks is {lastSourceStep, issued}; the fixture
illustrated {lastEventId, lastOrdinal}, and the illustration is what changed, because
an event id is derived from the epoch and cannot be compared across the restore that
gives the session a new one.

checkpoint-envelope-v1 section 3 also now says, under the same dated amendment, that
a required-manifest-field change must bump envelopeVersion once production files
exist: contractDigest is taken over the schema set and does not cover this manifest,
so the envelope version is the only thing that can carry such a change.
2026-09-22 18:45:51 +00:00
..
common session: parallel processes, a launcher and the fault behaviour 2026-09-22 14:33:25 +00:00
failures.rs session: resolve uncertain calls, and measure each mode in its own process 2026-09-22 15:41:42 +00:00
media.rs session: an unknown launch option is an error, not a no-op 2026-09-22 16:28:59 +00:00
processes.rs session: name the two ways a durable wait ends without an acknowledgment 2026-09-22 18:45:51 +00:00
session.rs Merge main: the per-fly processes, the launcher and the thread budgets 2026-09-22 16:07:30 +00:00
state.rs session: name the two ways a durable wait ends without an acknowledgment 2026-09-22 18:45:51 +00:00