--- id: EXPO-7 family: GR-EXPO level: extended profiles: [storage-api] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-expo/expo-7 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # EXPO-7 — Published schemas carry the flag only where the default is hidden *GR-EXPO (Part I) · level: extended · profiles: storage-api · added in 1.0* ## The rule > **Normative.** This is the rule. > > 1. Where a node type's stored default exposure for a port is false, the schema it publishes carries `x-exposed-by-default: false`. > > 2. Where it is anything else, the key is absent from the published schema rather than present and true. > > 3. A processor's own value for the key is overwritten either way, so the published schema states the node type's decision and only where it diverges from the exposed default (CFG-2). ## What it means What a node type publishes states only its own decision, and only where that decision diverges from the default. A processor's own schema for the same port is never consulted at publication time and never survives into what ships — even where the node type's stored value agrees with the processor, or contradicts it outright, the published schema is built from the stored value alone. ## Example ```json title="The node type's stored default exposure for the port: false" verdict="hidden" { "connectable": true, "exposed_by_default": false } ``` ```json title="What that publishes" verdict="materialized" { "x-exposed-by-default": false } ``` Where the node type's own stored value is anything else — unset, or an explicit `true` even against a processor schema that itself declares `x-exposed-by-default: false` for that port — the published schema carries no such key at all. A processor's own value for the key never reaches what publishes; only the node type's stored word does. ## Related rules - Names: CFG-2, EXPO-5, EXPO-6 - Referenced by: EXPO-5, EXPO-6 --- 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.