When a workflow stage can legitimately have missing data, treat the missing artifact as an explicit, validated state—not as an absent file/implicit default.
Apply this in two ways:
1) Declare optional inputs explicitly (so tooling can’t miss the leak)
2) On any “skip/jump” path, still write the required record as an explicit empty fact
Minimal pattern
Example (stage metadata intent)
# consuming stage
consumes:
- artifact: decision-pack
required: false # optional, but explicitly declared
- artifact: intent-statement
required: true
<!-- skip path: still create the artifact -->
# source-inventory.md
sources:
- type: none
note: "Recorded during skip-ahead; questionnaire did not run."
Outcome: downstream stages never rely on silent nulls (missing artifacts, non-written placeholders, or prose-only fallbacks) and null/unknown states are either explicitly represented or validated away.