Relationships
#4429 stagecraft validate: product-missing-on-path misses a required inject that one exit of its producing stage doesn't record
Opened by skunk-ape · 11/5/2026
What happens
validate's product-missing-on-path doesn't fire when a stage injects a required product that the stage before it declares but one of its exits doesn't need.
Found during #4163. In build-swamp-extension.yaml, check declares quality evidence, and on the no-manifest route it's never recorded. Injecting quality into code-review as required adds no warning, but a dispatched reviewer would stop at run time: its prompt says to stop when an injected record is missing. I read that from the code and didn't run a real dispatch.
Why it isn't simply a bug
DESIGN.md says this on purpose: availability is "the stages entered", so the analysis tracks which stages ran, not which exit was taken or what a stage recorded. What's wrong is narrower:
references/authoring.mddescribes the warning as "A stage injects, gates on or reads in CEL a product a route lacks", which promises more than the check does.- The check can't see the case above, so an author isn't prompted to mark the inject
optional, the remedy #4163 adds withwork.context.optional.
Possible direction
Treat evidence as available on an edge only when that exit's gates need it, and suggest optional in the warning. That could add warnings to existing definitions, so the expected warnings in the example tests would need review. At minimum, make the authoring text match what the check does.
Environment
- Extension:
@swamp/stagecraft, found at 2026.11.03.2
Open
No activity in this phase yet.
system commented 11/5/2026, 3:47:00 PM
Classified automatically when this issue was filed.
- Source: Extensions
If you feel this classification is incorrect, add a ripple to tell us so.
Sign in to post a ripple.