A server that is gone is a different condition from a server that is slow, and it
has a recovery the core can drive on its own rather than making the client poll.
What this produces
The state the core reports when the server is unreachable, distinct from every
slow state.
What is still available: everything cached, marked with its age, so that a client
can show a real library that says plainly it is not current.
The recovery. The core retries on its own schedule, bounded, and reports when the
server answers again, so the client does not have to poll or ask a person to pull
to refresh.
What a write attempted while the server is gone does, which is the queue in #47.
Done when
A test takes the fake server away and proves cached content is still served
with its age, proves the unreachable state is distinct from every slow state,
and proves the core reports recovery by itself when the server returns. Blocked
on #7, #43, and #102 for the clock the wait before a recovery attempt is
measured against.
A server that is gone is a different condition from a server that is slow, and it
has a recovery the core can drive on its own rather than making the client poll.
What this produces
The state the core reports when the server is unreachable, distinct from every
slow state.
What is still available: everything cached, marked with its age, so that a client
can show a real library that says plainly it is not current.
The recovery. The core retries on its own schedule, bounded, and reports when the
server answers again, so the client does not have to poll or ask a person to pull
to refresh.
What a write attempted while the server is gone does, which is the queue in #47.
Done when
A test takes the fake server away and proves cached content is still served
with its age, proves the unreachable state is distinct from every slow state,
and proves the core reports recovery by itself when the server returns. Blocked
on #7, #43, and #102 for the clock the wait before a recovery attempt is
measured against.