digraph room_layers { rankdir=TB fontname="Helvetica" node [fontname="Helvetica" fontsize=10 style=filled shape=record] edge [fontname="Helvetica" fontsize=9] label="Room Layers — init wizard" labelloc=t fontsize=14 l0 [class="accent" label="{Layer 0 | Config + Data | config.json · data/*.json}"] l1 [label="{Layer 1 | Docker | soleprint/docker-compose.yml · .env}"] l2 [label="{Layer 2 | Managed App | docker-compose.yml · Dockerfiles · .env}"] l3 [label="{Layer 3 | Link | link/main.py · adapters/ · Dockerfile}"] l4 [label="{Layer 4 | Scripts | ctrl/start.sh · stop.sh · status.sh · logs.sh}"] l5 [label="{Layer 5 | Systems | tester/environments.json · tests/}"] l6 [label="{Layer 6 | Nginx | nginx/local.conf · docker-compose.nginx.yml}"] l0 -> l1 [label="required"] l1 -> l2 [label="if managed"] l2 -> l3 [label="optional"] l1 -> l4 [label="optional"] l4 -> l5 [label="optional"] l5 -> l6 [label="if frontend"] // Annotations note_req [class="accent" label="every room" shape=plaintext fontsize=9] note_req -> l0 [style=invis] }