Skip to content

DAG Diagrams

Every Ripperoni run is an authored dagonizer DAG. These diagrams are generated directly from the committed *.dag.jsonld documents and plugin DAGs by docs/.vitepress/scripts/render-dags.mjs (via the framework's MermaidRenderer), so they always reflect exactly what ripperoni run dispatches.

These node shapes are the same across every diagram (the renderer assigns one shape per placement type):

ShapePlacementMeaning
[ name ] rectangleSingleNodeone node runs once
[/ name /] trapezoidScatterNodefan-out — one child run per source item
[[ name ]] subroutineEmbeddedDAGNodeinvokes a nested DAG
(( name )) double circleTerminal (completed)successful end state
> name ] flagTerminal (failed)failure end state
( name ) stadiumPhaseNodea pre/post lifecycle hook

Placements bound to a worker container are tinted blue.

Hover a diagram for its D-pad (zoom · pan · centre · fit), scroll to zoom, drag to pan, or hit ⛶ expand for a fullscreen explore view (esc to close).

Orchestration — aonprd:crawl

The top-level run: embed crawl:discover to populate the URL list, then scatter the per-page DAG aonprd:page over it on the worker container.

The native cyclic crawl: init-frontier → fetch-and-extract → dedupe-and-enqueue with a back-edge that loops until the frontier is exhausted or the budget is hit.

Per-page chain — aonprd:page

The unit of work for one detail page: fetch HTML, parse via the embedded aonprd:parse sub-DAG, write JSON.

Example: docs scraper — docs:parse

Example: wiki docs — wiki-docs:parse

Full parse taxonomy — aonprd:parse

The complete AONPRD parse DAG — every concept's capability chain compiled from the taxonomy (191 placements). Large by design; zoom or pan to explore.

D&D 5e parse taxonomy — dnd5e:parse

The D&D 5e parse DAG compiled from the shared taxonomy compiler (src/taxonomy/). Content-classified: dnd5e:taxonomy-route inspects the page body to dispatch to the matching concept chain; unrecognised pages route to dnd5e:unknown-end.

Released under the MIT License.