flowpactworkflow contracts
Rules

FP803 · breaking-interface-change

A change breaks the locked contract: an input became required, an input/secret/output was removed, or a type changed.

CodeNameCategoryDefault severity
FP803breaking-interface-changeContracts🔴 error

Why it matters

Callers written against the locked interface will fail (unknown or missing input) or silently read empty outputs. In large pipelines those callers may live in other repositories or rarely-run branches.

How to fix

Update every caller first (flowpact lists the known consumers), then regenerate the contract. If the change is intended, flowpact generate records it and the diff makes the break explicit in review.

Example

# contract: input "channel" optional
on:
  workflow_call:
    inputs:
      channel: { type: string, required: true }   # now required

Configure

Change the severity (or turn the rule off) in .github/flowpact/flowpact.config.yml, by code or by name:

.github/flowpact/flowpact.config.yml
rules:
  FP803: off
  # or: breaking-interface-change: error

Explain it in the terminal:

flowpact explain FP803

On this page