ArticleWorkflow Workflow
5 places
7 transitions
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)."];
}