--- id: EXPO-2 family: GR-EXPO level: core profiles: [storage-api] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-expo/expo-2 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # EXPO-2 — An instance override decides exposure; otherwise the default does *GR-EXPO (Part I) · level: core · profiles: storage-api · added in 1.0* ## The rule > **Normative.** This is the rule. > > 1. A port is exposed on a node instance when the instance's direction-scoped overrides in `data.config.ports` contain an entry for that port carrying an `exposed` key: that key's value is the answer. > > 2. Where there is no such entry, or the entry carries no `exposed` key, the port's default exposure decides (`exposedByDefault`, CFG-2). ## What it means Being named in the direction-scoped overrides is not, by itself, an override. An entry for a port can exist there for reasons that have nothing to do with exposure, so the only thing that flips a port away from its default is that entry carrying an `exposed` key. A port named but silent on `exposed` reads exactly as a port not named at all. ## Example The port `value` defaults exposed; `error` defaults hidden (EXPO-4). Three override shapes for `value` land on two different answers. ```json title="An override entry with an explicit exposed: false" verdict="hidden" { "id": "value", "exposed": false } ``` ```json title="An override entry with an explicit exposed: true, on a port that defaults hidden" verdict="exposed" { "id": "error", "exposed": true } ``` ```json title="An entry naming value, but with no exposed key at all" verdict="exposed" { "id": "value" } ``` The third entry names the same port as the first, and still resolves to the default: naming a port is not deciding about it. ## Related rules - Names: CFG-2, EXPO-1, EXPO-3, EXPO-4 - Referenced by: EXPO-1, EXPO-3, EXPO-4, EXPO-13, EXPO-15 --- Rule identifiers are permanent and are never renumbered. This specification carries no implementation status: each implementation publishes its own standing against these rules. Licensed CC BY 4.0.