ArticleWorkflow Workflow

5 places 7 transitions

Places & Transitions

new Set
Article row created, not yet fetched
  • fetch needs_review
    Fetch the _contents_ of the URL. Might be cached (RFC 9111 HTTP cache + ScrapeService dedup).
needs_review Set
Fetched (or re-fetched); metadata awaiting confirm/block. Landing here auto-checks for a failed fetch.
  • fetch needs_review
    Fetch the _contents_ of the URL. Might be cached (RFC 9111 HTTP cache + ScrapeService dedup).
  • approve_meta confirmed
    Confirm that the metadata is publishable
  • extract_meta needs_review
    Auto-dispatched via TRANSITION_FETCH's next: cascade once it completes.
  • _fetch_fail fetch_failed
    Guarded, sync reaction to TRANSITION_FETCH -- triggered automatically via PLACE_NEEDS_REVIEW's next: cascade, not called directly.
  • block blocked
    Block this article from appearing
fetch_failed Set
Fetch failed with a non-200 status and no source date to salvage it
blocked Set
Blocked from appearing (login pages, individually excluded urls, etc.)
confirmed Set
Metadata confirmed as publishable
  • fetch needs_review
    Fetch the _contents_ of the URL. Might be cached (RFC 9111 HTTP cache + ScrapeService dedup).
digraph workflow {
  ratio="compress" rankdir="TB" width="0.5" ranksep="0.2"
  node [fontsize="9" fontname="Arial" color="#333333" fillcolor="lightblue" fixedsize="false" width="0.5" shape="ellipse"];
  edge [fontsize="9" fontname="Arial" color="#333333" arrowhead="normal" arrowsize="0.5" shape="box"];

  place_new [label="new", shape=doublecircle style="filled" color="#FF0000" tooltip="Article row created, not yet fetched"];
  place_needs_review [label="needs_review", shape=ellipse tooltip="Fetched (or re-fetched); metadata awaiting confirm/block. Landing here auto-checks for a failed fetch."];
  place_fetch_failed [label="fetch_failed", shape=ellipse tooltip="Fetch failed with a non-200 status and no source date to salvage it"];
  place_blocked [label="blocked", shape=ellipse tooltip="Blocked from appearing (login pages, individually excluded urls, etc.)"];
  place_confirmed [label="confirmed", shape=ellipse tooltip="Metadata confirmed as publishable"];
  place_new -> place_needs_review [label="fetch" style="dotted" tooltip="Fetch the _contents_ of the URL. Might be cached (RFC 9111 HTTP cache + ScrapeService dedup)."];
  place_needs_review -> place_needs_review [label="fetch" style="dotted" tooltip="Fetch the _contents_ of the URL. Might be cached (RFC 9111 HTTP cache + ScrapeService dedup)."];
  place_needs_review -> place_confirmed [label="approve_meta" style="dotted" tooltip="Confirm that the metadata is publishable"];
  place_needs_review -> place_needs_review [label="extract_meta" style="dotted" tooltip="Auto-dispatched via TRANSITION_FETCH\'s next: cascade once it completes."];
  place_needs_review -> place_fetch_failed [label="_fetch_fail" style="dotted" tooltip="Guarded, sync reaction to TRANSITION_FETCH -- triggered automatically via PLACE_NEEDS_REVIEW\'s next: cascade, not called directly."];
  place_needs_review -> place_blocked [label="block" style="dotted" tooltip="Block this article from appearing"];
  place_confirmed -> place_needs_review [label="fetch" style="dotted" tooltip="Fetch the _contents_ of the URL. Might be cached (RFC 9111 HTTP cache + ScrapeService dedup)."];
}