Spawn Graph Notation

Spawn Graph Notation

The representation of a graph of processes and pipe halves (or files) that sits between ShellSubset's parse trees and the future module, called Proc::Spawner here; asked for in your message of 2026-11-01 (03:55). It continues the page “Run Graph API”, whose marks stay valid. Nothing below is written yet, except R2 and the script that drew the pictures.

Words used throughout. The executor: ShellSpawn, the module that runs parse trees through posix_spawn (claude/pspawn-design.md). A process and an end: the two kinds of node (N1). An edge: one fd of one process, connected to one end (N3). Forgetting an end: the parent closes its own copy (N2). Keep: N4. The shell layer: N3.

How to read the pictures: a box is a process, with its fd numbers in small cells, fds it reads on the left and fds it writes on the right; an fd a child inherits unchanged from Perl (its fd 0 is Perl's fd 0) is left out. Two circles w and r in a dashed frame are the halves of one pipe. A page shape is a file; “Perl's fd N” is a fd of the parent itself. Borders and colors show states (N9).

✓ Go: do it as planned. ✗ No-go: don’t; do what “If No-go” says. ◆ Discuss strategy first: settle the approach first; holds back only the items that depend on it. ? Explain first: a show-stopper; I explain before doing anything else. ? Explain later: I explain after doing the rest. Unmarked: not done this round, left for later; it is not a rejection. A note that settles an item (picks an option, states the rule, or says the plan is right) counts as Go even without the button. My answers carry a tag: No reply needed, Your turn (I asked you something), or Answered, Claude hasn’t read it yet. The “Your turn” filter shows the items waiting for you.
What Go means

Loading marks…

Filters