--- id: R4.f family: GR-VAL level: extended profiles: [storage-api, editor-client] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-val/r4-f specification: FlowDrop Workflow Specification 1.0 licence: CC BY 4.0 --- # R4.f — A bound entry whose declared lane differs from its port's lane warns *GR-VAL (Part I) · level: extended · profiles: storage-api, editor-client · added in 1.0* The entry's declared schema is the contract; the binding only says where the value goes. When the two disagree the author is told, but the workflow still saves, because the interface might have been declared before the wiring caught up. ## The rule > **Normative.** This is the rule. > > 1. Where a workflow exposure entry is bound and declares a `schema`, and the lane its schema derives (MAN-21) differs from the lane of the port it binds, validation MUST yield a non-blocking warning `R4_LANE_MISMATCH` at `schema.{side}.{index}`, naming both lanes. > > 2. The workflow MUST stay valid, and the entry's declared schema MUST remain its contract (MAN-5). ## Why Recorded under [OPEN-25](https://flowdrop.io/spec/rulings/open-25), [OPEN-27](https://flowdrop.io/spec/rulings/open-27). ## Related rules - Names: R4.d, MAN-21 --- 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.