Two new filters: failing, and the subset nothing stands behind #166

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

Parent

Part of #137.

What to build

The owner gets a worklist. One filter lists Series failing for over twelve hours; a second narrows it to those whose Latest Chapter came from a Reader and that no Poll has confirmed — numbers nothing stands behind. A Series failing for one hour is in neither list: one bad fetch is not a fault to correct.

Acceptance criteria

  • The admin read model left-joins the failure table and its row type gains the outcome word and the failing-since stamp; nothing new is projected from the Series row.
  • failing requires the joined row, a Latest Chapter that exists, and an age past the existing owner window — reuse that constant, add no new figure.
  • failing is disjoint from never-once-succeeded: a Series with no chapter ever captured is in that filter and never in this one.
  • failing deliberately carries no finished guard, unlike the four predicates guarded in #159 — those are computed from ticking clocks and lie about a retired row; this one is computed from stored outcomes, which simply stop arriving. A comment keeps the contrast.
  • unverified is the Reader-attributed subset of the same test.
  • Both join the filter vocabulary with their own aggregate counts and the zero-renders-unlinked rule unchanged; one-filter-at-a-time select behaviour unchanged.
  • No stored column for the unverified pair — the join computes it free.
  • Store tests cover both predicates, the disjointness, the under-twelve-hours case in neither filter, a finished Series still appearing in failing, the cascade, and the single-statement orphan delete.

Blocked by

  • #165 — poll_failures: the row is the failure state
## Parent Part of #137. ## What to build The owner gets a worklist. One filter lists Series failing for over twelve hours; a second narrows it to those whose Latest Chapter came from a Reader and that no Poll has confirmed — numbers nothing stands behind. A Series failing for one hour is in neither list: one bad fetch is not a fault to correct. ## Acceptance criteria - [ ] The admin read model left-joins the failure table and its row type gains the outcome word and the failing-since stamp; nothing new is projected from the Series row. - [ ] `failing` requires the joined row, a Latest Chapter that exists, and an age past the existing owner window — reuse that constant, add no new figure. - [ ] `failing` is disjoint from never-once-succeeded: a Series with no chapter ever captured is in that filter and never in this one. - [ ] `failing` deliberately carries **no** finished guard, unlike the four predicates guarded in #159 — those are computed from ticking clocks and lie about a retired row; this one is computed from stored outcomes, which simply stop arriving. A comment keeps the contrast. - [ ] `unverified` is the Reader-attributed subset of the same test. - [ ] Both join the filter vocabulary with their own aggregate counts and the zero-renders-unlinked rule unchanged; one-filter-at-a-time select behaviour unchanged. - [ ] No stored column for the `unverified` pair — the join computes it free. - [ ] Store tests cover both predicates, the disjointness, the under-twelve-hours case in neither filter, a finished Series still appearing in `failing`, the cascade, and the single-statement orphan delete. ## Blocked by - #165 — poll_failures: the row is the failure state
sulthan added the ready-for-agent label 2026-08-22 17:39:57 +07:00
sulthan self-assigned this 2026-08-22 23:30:52 +07:00
Author
Owner

Landed on spec-137 at 3d74609. Two new admin filters: failing (>12h standing failure with a Latest Chapter, no finished guard) and unverified (Reader-attributed subset). Store predicate + projection (admin.go), filter vocabulary in admin_series.go, no migration/stored column. Tests: TestAdminFailingAndUnverifiedFilters, TestAdminFailureProjection, TestOverviewFailingAndUnverifiedFigures — all green. Review: spec clean, one stale-comment fix (a560fc7); duplicated-clause smell declined (brief-specified predicate form).

Landed on spec-137 at 3d74609. Two new admin filters: failing (>12h standing failure with a Latest Chapter, no finished guard) and unverified (Reader-attributed subset). Store predicate + projection (admin.go), filter vocabulary in admin_series.go, no migration/stored column. Tests: TestAdminFailingAndUnverifiedFilters, TestAdminFailureProjection, TestOverviewFailingAndUnverifiedFigures — all green. Review: spec clean, one stale-comment fix (a560fc7); duplicated-clause smell declined (brief-specified predicate form).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sulthan/mangaBookmark#166