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 edge — db.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.
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
unionGraphalready 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 byfrom→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 noapp→dbedge —db.endpointresolved 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):
environmentmaps, emitting them as edges (with the consuming attr asviaAttr).This is a known limit of diagramming intent: logical links hidden in config strings aren't in the graph.
Related: #49, #3.