# description
Per-service ingress posture + egress allowlist. The single source of truth that gen_netcfg.py compiles into AllowedEgress (Go), ALLOWED_EGRESS (Python), and netcfg.json for the Terraform perimeter module.

# properties.managed.description
Managed data-plane dependencies (Memorystore, etc.) that aren't Billy services but whose firewall posture we care about.

# properties.infra.description
Static infrastructure CIDR ranges (not per-service hostname egress) the Pulumi perimeter VPC firewall must allow. Projected into netcfg.json so perimeter.ts reads one source.

# properties.infra.properties.google_private_api_cidrs.description
private.googleapis.com VIP ranges allowed by the perimeter VPC firewall's google-apis rule.

# properties.infra.properties.webrtc_media.description
WebRTC media plane for the self-hosted LiveKit SFU. Hostname egress rows only ever resolve to tcp:443 (signaling); RTP rides a UDP port range and an ICE-TCP fallback port on the SFU's own address, which the CIDR+port GCP firewall can only express here.

# properties.infra.properties.webrtc_media.properties.dest_cidrs.description
SFU addresses that terminate the media plane.

# properties.infra.properties.webrtc_media.properties.udp_ports.description
RTP port range, matching the SFU's rtc.port_range_start/end.

# properties.infra.properties.webrtc_media.properties.tcp_ports.description
ICE-TCP fallback port, matching the SFU's rtc.tcp_port.

# $defs.service.properties.egress_open_web.description
Grants the service an SSRF-guarded open-web content plane: any public-internet http/https host passes the runtime egress gate when (and only when) the dial rides an open-web-marked client AND the destination resolves to a public address. Enumerated `egress` rows stay the contract for the service plane (LLM providers, vendors, sidecars); this grant covers the user-content fetch plane (research reads) that cannot be enumerated. Runtime enforcement: core.foundation.io.net.egress.check(open_web=True); metered under the sentinel host 'open-web'.