The pass remembers when a Site called a work completed #169

Closed
opened 2026-08-22 17:39:59 +07:00 by sulthan · 1 comment
Owner

Parent

Part of #137.

What to build

One column on the Series row holding when the last successful read saw the Site's completed value; zero means the last successful read did not see it. Decay is therefore free — every successful read rewrites the answer, so a Series that resumes stops being hinted with no expiry rule and a stale hint cannot survive one Poll.

Acceptance criteria

  • A migration adds the column, epoch-ms, defaulting to zero.
  • The write is its own statement in the pass, after the read. It cannot ride the check stamp (written before the fetch) or the chapter setter (skipped on the unchanged-number path), and it cannot share the failure write (that one fires on a failure; this is learned from a success).
  • The column joins the due query's projection so the statement fires only when the answer would change — an ordinary Poll of an ongoing Series writes nothing.
  • A refused or unreachable Poll leaves the previous value alone: a challenge is not evidence about the work.
  • No text column holding a normalised status word, and no re-deriving on read — the admin surface never fetches.
  • Poller tests cover the transition-only write, the no-op on an ongoing Series' ordinary Poll, and the refused Poll leaving the column unchanged.
  • Rollout note in the PR: every Series reads zero until re-polled — an hour for the four plain-TLS Sites, indefinitely for the two browser-gated ones while the sidecar is asleep.

Blocked by

  • #168 — All six Sites' completed marker, read by their adapters
## Parent Part of #137. ## What to build One column on the Series row holding when the last successful read saw the Site's completed value; zero means the last successful read did not see it. Decay is therefore free — every successful read rewrites the answer, so a Series that resumes stops being hinted with no expiry rule and a stale hint cannot survive one Poll. ## Acceptance criteria - [ ] A migration adds the column, epoch-ms, defaulting to zero. - [ ] The write is its own statement in the pass, after the read. It cannot ride the check stamp (written *before* the fetch) or the chapter setter (skipped on the unchanged-number path), and it cannot share the failure write (that one fires on a failure; this is learned from a success). - [ ] The column joins the due query's projection so the statement fires **only when the answer would change** — an ordinary Poll of an ongoing Series writes nothing. - [ ] A refused or unreachable Poll leaves the previous value alone: a challenge is not evidence about the work. - [ ] No text column holding a normalised status word, and no re-deriving on read — the admin surface never fetches. - [ ] Poller tests cover the transition-only write, the no-op on an ongoing Series' ordinary Poll, and the refused Poll leaving the column unchanged. - [ ] Rollout note in the PR: every Series reads zero until re-polled — an hour for the four plain-TLS Sites, indefinitely for the two browser-gated ones while the sidecar is asleep. ## Blocked by - #168 — All six Sites' completed marker, read by their adapters
sulthan added the ready-for-agent label 2026-08-22 17:39:59 +07:00
sulthan self-assigned this 2026-08-22 18:30:47 +07:00
Author
Owner

Landed on spec-137 (merge 5a32943). site_completed_at column: written only on the zero/non-zero transition inside checkOne after the read, riding neither the check stamp nor the chapter setter; refused/unreachable leave it untouched; a completed page with an unchanged chapter number still writes. Two-axis review: spec pass, standards pass (2 nits fixed: migration comment rot, variable naming). PR rollout note: every Series reads zero until re-polled — an hour for the four plain-TLS Sites, indefinitely for the two browser-gated ones while the sidecar is asleep. Full backend suite green post-merge. Commits: b517858, 86da478.

Landed on spec-137 (merge 5a32943). site_completed_at column: written only on the zero/non-zero transition inside checkOne after the read, riding neither the check stamp nor the chapter setter; refused/unreachable leave it untouched; a completed page with an unchanged chapter number still writes. Two-axis review: spec pass, standards pass (2 nits fixed: migration comment rot, variable naming). PR rollout note: every Series reads zero until re-polled — an hour for the four plain-TLS Sites, indefinitely for the two browser-gated ones while the sidecar is asleep. Full backend suite green post-merge. Commits: b517858, 86da478.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sulthan/mangaBookmark#169