The other three conditions the rule selects #172

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

Parent

Part of #137.

What to build

Three more faults reach the owner, each once per episode, each at the same twelve-hour window and each judged by the same rule.

Acceptance criteria

  • no-browser-route: a Site with no browser route refusing for over twelve hours — the read path maps a 403 with the mitigation header and an interstitial body to a held challenge on the plain-TLS path too, so this is a refusal plus the durable Lane refusal. This is the comix event of 2026-08-12 and the repair is a deploy.
  • A browser-backed Site's refusal sends nothing: that is an ordinary challenge that did not clear, and a Site setting its own pace is not a fault.
  • sidecar-down: no browser Lane has reached the sidecar for over twelve hours. This is not a stall and cannot be found by the stall test — the pass returns early both when a sibling Lane lost Chrome and when no fetcher exists, and both are recorded as skip values.
  • One dead sidecar sends exactly one message across all browser Lanes: the suppression row's Site holds the empty string, so the first Lane to notice writes the row and the others find it present and stay quiet. The row's own presence is the lock — which is why this state is its own table and not columns on the per-Site Lane row, where an empty Site name has no meaning. Rejected: naming one Lane the reporter, since that Lane's pass may be the skipped one.
  • adapter-broken: more than half of one Site's Series hold an old no-chapter failure row. A layout change produces exactly that outcome; one such Series is a bad row, most of a Site is a broken adapter. This is the one fault on the whole map no other signal names.
  • Expressed as a share, not a count, so a four-Series Site and a two-hundred-Series Site both fire; it does not fire at exactly half.
  • A single failing Series sends nothing — the filter is the tool, and one Site change makes hundreds of rows. Nor does an ageing forced Poll or a gated cover host.
  • No second transport and no second colour: all four are faults, so one colour, and ember stays forbidden.
  • Tests: each condition fires once while it holds and again after it lifts and returns; the browser-Site refusal and the single failing Series send nothing; the share fires on a four-Series Site and not at exactly half; one dead sidecar across three browser Lanes sends exactly one message.

Blocked by

  • #171 — Outbound owner notification, and the stall it exists for
  • #166 — Two new filters: failing, and the subset nothing stands behind
## Parent Part of #137. ## What to build Three more faults reach the owner, each once per episode, each at the same twelve-hour window and each judged by the same rule. ## Acceptance criteria - [ ] `no-browser-route`: a Site with **no** browser route refusing for over twelve hours — the read path maps a 403 with the mitigation header and an interstitial body to a held challenge on the plain-TLS path too, so this is a refusal plus the durable Lane refusal. This is the comix event of 2026-08-12 and the repair is a deploy. - [ ] A browser-backed Site's refusal sends **nothing**: that is an ordinary challenge that did not clear, and a Site setting its own pace is not a fault. - [ ] `sidecar-down`: no browser Lane has reached the sidecar for over twelve hours. This is not a stall and cannot be found by the stall test — the pass returns early both when a sibling Lane lost Chrome and when no fetcher exists, and both are recorded as skip values. - [ ] One dead sidecar sends exactly one message across all browser Lanes: the suppression row's Site holds the **empty string**, so the first Lane to notice writes the row and the others find it present and stay quiet. The row's own presence is the lock — which is why this state is its own table and not columns on the per-Site Lane row, where an empty Site name has no meaning. Rejected: naming one Lane the reporter, since that Lane's pass may be the skipped one. - [ ] `adapter-broken`: more than **half** of one Site's Series hold an old no-chapter failure row. A layout change produces exactly that outcome; one such Series is a bad row, most of a Site is a broken adapter. This is the one fault on the whole map no other signal names. - [ ] Expressed as a **share, not a count**, so a four-Series Site and a two-hundred-Series Site both fire; it does not fire at exactly half. - [ ] A single failing Series sends nothing — the filter is the tool, and one Site change makes hundreds of rows. Nor does an ageing forced Poll or a gated cover host. - [ ] No second transport and no second colour: all four are faults, so one colour, and ember stays forbidden. - [ ] Tests: each condition fires once while it holds and again after it lifts and returns; the browser-Site refusal and the single failing Series send nothing; the share fires on a four-Series Site and not at exactly half; one dead sidecar across three browser Lanes sends exactly one message. ## Blocked by - #171 — Outbound owner notification, and the stall it exists for - #166 — Two new filters: failing, and the subset nothing stands behind
sulthan added the ready-for-agent label 2026-08-22 17:40:01 +07:00
sulthan self-assigned this 2026-08-23 00:16:32 +07:00
Author
Owner

Merged a7bbeb50e5 into spec-137. Three fault conditions added on the existing #171 seam: no-browser-route (plain-TLS Site refusing >12h, browser-backed excluded), sidecar-down (all browser Lanes skip-stalled, one message via empty-Site suppression row), adapter-broken (>50% of a Site's Series with an old no-chapter row, strict share not count). Two review-round fixes: sidecar-down age floored at the window when never reached, and the empty-Site clear scoped to sidecar-down only. go test ./... green (full suite). cr-spec: clean, one minor scope note fixed. cr-standards: PASS, 4 judgement calls documented and declined.

Merged a7bbeb50e5ba7e5a2c30b2059cb3066242f84bcd into spec-137. Three fault conditions added on the existing #171 seam: no-browser-route (plain-TLS Site refusing >12h, browser-backed excluded), sidecar-down (all browser Lanes skip-stalled, one message via empty-Site suppression row), adapter-broken (>50% of a Site's Series with an old no-chapter row, strict share not count). Two review-round fixes: sidecar-down age floored at the window when never reached, and the empty-Site clear scoped to sidecar-down only. go test ./... green (full suite). cr-spec: clean, one minor scope note fixed. cr-standards: PASS, 4 judgement calls documented and declined.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sulthan/mangaBookmark#172