The SVG renderer combines authored location geometry with deterministic presentation-only object placement.

Location sources

The renderer first uses simulation.world.layout.locations. If that array is absent or empty, it uses snapshot locations.

For each location, snapshot values can augment authored values. The renderer sorts the resulting locations by ID.

Location bounds

The renderer reads width and height from shape. It falls back to coordinates, then to calculated defaults.

It reads x from shape.x, then coordinates.x. It reads vertical position from shape.y, then coordinates.z.

Locations without coordinates enter a four-column automatic grid. world.layout.meta.pixels_per_unit influences default dimensions and defaults to 20.

Object placement

Objects use their resolved location field. The renderer sorts object IDs and places members in a calculated grid inside each location.

Placement uses margins, gaps, and a maximum glyph size. It does not write positions back to the snapshot.

Unplaced objects

The renderer treats an unmatched object location as unplaced. It lists the object in the __unplaced__ SVG group.

The unplaced section preserves visibility without inventing a semantic location.

Layout options

Callers can set output width, height, padding, default location dimensions, and location gap. Invalid numeric values fall back to renderer defaults.

These options change only the presentation. They do not alter locations, object membership, or the authoritative run.