What each panel shows

Edges passing each metric
Number of candidate parent→child edges left by each test, one bar group per block pair (0->1, 1->2, 2->3), on a logarithmic y-axis. The five stages are applied independently to the same candidate set and do not nest, so the bars are not a funnel: improves recon and survives freq are the lenient filters, PMI > 0 and pass S_res the strict ones. Both strict stages are present for 0->1, 1->2, 2->3.
Share passing each metric
The same four tests as a percentage of each pair's own candidate set. Pairs differ in size by orders of magnitude, so a share is what places them on one axis; a count would not.
Out-degree CCDF
One curve per block pair over 471 parents in total. A point reads P(a parent has at least x children), both axes logarithmic. The unit is a parent, not an edge.
Frequency-survival distribution
One value per testable candidate edge (7,202 in total): its reverse coverage computed on low- and mid-frequency tokens only, divided by its reverse coverage on all tokens. The dashed line is FREQ_SURVIVAL_MIN = 0.5, the cutoff below which an edge is recorded as frequency-driven. Bars are counts of edges.
Sibling-redundancy distribution
Mean pairwise Jaccard overlap between the children of one parent, one value per scored parent (281 in total). The dashed line is SIBLING_REDUNDANCY_FLAG = 0.5. Computed over whole-corpus co-firing, so it is confounded by how often each child fires at all; the parent-conditioned version is in second_pass.json.
Superparents
One marker per parent flagged as a superparent (7 across all block pairs). x is the fraction of the child block that parent has edges to, y is the fraction of tokens it fires on. The flag is out-degree alone, at SUPERPARENT_OUTDEG_FRAC = 30% of the child block; the firing rate is plotted, not gated on. Hover gives the feature index and its label.