--- id: MAN-14 family: GR-MAN level: extended profiles: [storage-api] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-man/man-14 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # MAN-14 — Strictness polices the caller, never the stored manifest *GR-MAN (Part I) · level: extended · profiles: storage-api · added in 1.0* A caller can fix the key they sent. They cannot fix a manifest entry someone else stored, so failing their launch over it helps nobody. ## The rule > **Normative.** This is the rule. > > 1. A malformed manifest entry (one missing a `name`, a `node_id` or a `port`, or carrying an empty one) is dropped with a warning while resolving launch inputs, including where undeclared caller keys are refused. > > 2. Strictness applies to what the caller supplied, not to what the workflow stored. ## What it means MAN-13 refuses a caller for sending a key the manifest never declared, and it is tempting to read strictness as one blanket setting: reject anything the resolution step cannot make sense of. This rule draws the line strictness is not allowed to cross. A malformed manifest entry — one an author (or an earlier version of the workflow) left with a missing or empty `name`, `node_id` or `port` — is not the caller's mistake, and refusing the caller's launch over it fixes nothing: the caller cannot edit a manifest they do not own. So a launch that is otherwise as strict as it gets still drops a broken entry with a warning and keeps resolving everything else, exactly as a lenient resolution would. ## Example The workflow's manifest entry for `message` names a node, `deleted.1`, no longer in the graph. ```json title="A value sent for a declared input whose target node is gone" verdict="dropped" { "message": "hello" } ``` The same happens when an entry's `node_id` or `port` is empty outright: ```json title="Values sent for two entries with an empty node id and an empty port" verdict="dropped" { "a": 1, "b": 2 } ``` Neither launch is refused; both drop the broken entry's value and resolve whatever else the manifest can still make sense of. ## Related rules - Names: MAN-8, MAN-13 - Referenced by: MAN-8, MAN-13 --- 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.