Skip to content

diff: ghost changed/removed edges + surface config-string dependencies #52

Description

@lex00

Context

The composite-tier diff (#49) classifies and paints nodes (added/removed/changed/same) and renders the union so removed nodes ghost. Two gaps remain on the edge / dependency side.

1. Edge diff status

unionGraph already carries removed edges, but the renderer doesn't style edges by diff status — a removed or added edge draws like any other line. Classify edges (added/removed/same by from→to[→viaAttr]) and paint them (removed = red dashed/ghost, added = green) the way nodes are.

2. Config-string dependencies aren't graph edges

A real dependency expressed only as a config string never becomes a ref, so it's invisible at every tier and in the diff. Concretely: FargateAlb({ environment: { DB_HOST: db.endpoint } }) produced no app→db edgedb.endpoint resolved to a value, not a tracked ref. So "the app now talks to the DB" doesn't surface.

Options to explore (likely needs chant-side support):

  • chant tracks AttrRefs even when embedded in string values / environment maps, emitting them as edges (with the consuming attr as viaAttr).
  • or pinhole heuristically scans attr values for resolved refs — fragile, probably wrong place.

This is a known limit of diagramming intent: logical links hidden in config strings aren't in the graph.

Related: #49, #3.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions