diff --git a/CONTEXT.md b/CONTEXT.md index 1f53110..b07e5ba 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -43,6 +43,13 @@ Readers: Progress, Favourite, Lifecycle bucket. Facts about the Series itself be to the Series, not here. _Avoid_: entry, item, record, subscription +**Orphan Series**: +A Series no Reader bookmarks. Removing a Bookmark never removes the Series, so the row +outlives every relationship to it: nothing reads it, no Poll visits it, and it still owns +a Cover. A state of the Series, not a Lifecycle bucket — it says how many Readers hold it, +never anything about a Reader. +_Avoid_: dangling, unused, dead series, stale + **Library**: One of the two halves of the collection — manga or novel — selected by a Bookmark's `kind`. The web UI and the userscripts each address exactly one Library at a time. @@ -76,6 +83,33 @@ asked. Every Site has exactly one and no Lane can slow, block or borrow from ano a Reader never has one and never influences one. _Avoid_: worker, queue, scheduler, batch, wave +**Lane Pass**: +One sweep of a Poll Lane over the Series due on its Site: what it found waiting, how many it +read, and whether it declined to work at all. A fact about the Lane rather than about any +Series — a pass that read nothing is still a pass, and one that declined carries the reason it +declined, since a Lane resting and a Lane stuck look identical from a count alone. Its record +outlives the process that made it: "the poller has done nothing for six hours" is only +answerable by something written down. +_Avoid_: run, cycle, tick, batch, poll history + +**Forced Poll**: +A Poll the owner asks for by hand instead of waiting for the Series's turn. It jumps its +Lane's queue and ignores every waiting rule — the rest between Polls, a Sighting standing +in for a check, a Series only finished Readers hold — but never overrules a Site that is +refusing us, the Lane's spacing between fetches, or a Series with no page to fetch. Asked +for by marking the Series, never by commanding the poller, so it happens on the Lane's +next pass rather than at the moment of asking. +It also takes whatever Cover the Site publishes today: asking for one is asking to accept the +page as it now stands, so it is the only read after Acquisition that can replace a Cover. +_Avoid_: manual poll, refresh, retry, force refresh + +**Paused Lane**: +A Poll Lane the owner has stopped for a bounded time. It makes no Polls until the pause +expires, so its Series stay due and unstamped exactly as they do when a Site cannot be +reached. Every pause carries an expiry — a Lane cannot be stopped indefinitely — and it +outlives a restart, being a fact about the Site rather than about the running process. +_Avoid_: disabled, off, stopped, suspended, kill switch (that is the deploy-time switch) + **Sighting**: What a Reader's browser happened to see of a Series's Latest Chapter while that Reader was on the page. It reports the same fact as a Poll but carries none of its authority: @@ -88,9 +122,9 @@ _Avoid_: client report, user poll, observation, claim The single read of a Series page made the moment the Series first exists, giving it both its Latest Chapter and its Cover without waiting for the Lane's pace. Distinct from a Poll in the two ways that matter: a Reader is present — it is triggered by -their first Bookmark of that Series — and it is the only read that establishes a -Cover rather than refreshing facts. It happens once in a Series's life; every later -read of the same page is a Poll. +their first Bookmark of that Series — and it establishes a Cover rather than refreshing +facts, which no Poll does unless the owner forces one. It happens once in a Series's +life; every later read of the same page is a Poll. _Avoid_: initial poll, first fetch, prefetch, warm-up **New Chapter**: