I tend to use "skip" state to mean "this test is not applicable", and any downstream dependencies to propagate skip (manually in the test itself).

The ask:
A new state COMPLETED/NOT_APPLICABLE
1) a logpro rule (expect:not-applicable ... )
2) when a test is examined to run, if any of its dependencies are COMPLETED/NOT_APPLICABLE, treat that dependency as a PASS

This allows a regression where
1) inputs are not trusted.  If the input is broken, and the design intent is that if the input is invalid, this test is not a fail, just merely not applicable, this can be implemented by a logpro rule.
2) a flow is immature.  If an input is not ready, and the design intent is that the run passes even if some tests' input is invalid, this can be implemented by a logpro rule.