Skip to content

feat: write on a connection what it carries - #40

Merged
endrix merged 1 commit into
feat/producer-declared-render-hooksfrom
claude/edge-carried-labels
Sep 4, 2026
Merged

endrix merged 1 commit into
feat/producer-declared-render-hooksfrom
claude/edge-carried-labels

Conversation

@endrix

@endrix endrix commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Stacked on #37, which adds the role/width pass-through this draws. Review that first.

A dataflow diagram's edges are not interchangeable. One may carry far more than the next, or something of an entirely different kind. Drawn identically, the only way to tell them apart is to click each one and read the property panel — fine for checking a suspicion, useless for forming one.

What is drawn

meta.label is text the producer formatted; meta.width is a number in whatever unit the producer counts in. They describe the same thing at different resolutions.

Both reach the model, because both are true and a property panel may want either. The view draws exactly one, preferring the label — two captions on one line would add no information. That split is deliberate: what is true belongs on the model, what to show is a question for the view.

Text is shown verbatim, for the same reason a port's type is. The platform re-deriving it from anything structural would drift from how the producer's own language writes it, and differ between products.

Placement

Above the line, and higher again when a badge is present. The queue-size badge and the open button already occupy the midpoint, and a caption landing on one makes both unreadable.

The halo is paint-order: stroke fill rather than a filled pill. Every edge stating a width gets one of these, so a pill would end up weighing as much as the edges themselves; a halo costs nothing where the text crosses empty space and only appears where it would otherwise be illegible against a line or a box.

Compatibility

Inert for a producer that states neither key. Full platform suite passes, 4/4 neutrality gates, build succeeds. Five new tests.

@endrix
endrix force-pushed the feat/producer-declared-render-hooks branch from b5b61b2 to 7e9d234 Compare September 3, 2026 18:50
A dataflow diagram's edges are not interchangeable. One may carry a 32-bit
value and the next a single bit; one may be a token-carrying channel and its
neighbour a plain signal. Drawn identically, the only way to tell them apart is
to click each one and read the property panel — which is fine for checking a
suspicion and useless for forming one.

`meta.label` is text the producer formatted, `meta.width` a bit count, and they
describe the same thing at different resolutions. Both reach the model, because
both are true and a property panel may want either; the view draws exactly one,
preferring the label. Two captions on one line would add no information.

Formatted by the producer and shown verbatim, for the same reason a port's type
is: the platform re-deriving it from anything structural would drift from how
the language actually writes it, and differ between products.

Drawn above the line, and higher again when a badge is already there, since the
queue depth and the open button occupy the midpoint and a caption landing on
one makes both unreadable. The halo is `paint-order` rather than a filled pill:
every edge that states a width gets one of these, so a pill would end up
weighing as much as the edges do, whereas a halo costs nothing over empty space
and only shows up where the text would otherwise be illegible against a line or
a box.

Inert for a producer that states neither.
@endrix
endrix force-pushed the claude/edge-carried-labels branch from 385cce4 to 0d513b9 Compare September 3, 2026 18:51
@endrix
endrix merged commit 3db7393 into feat/producer-declared-render-hooks Sep 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant