Make _constant a field of type calculation with:
as it's calculated expression. Then even a newly created record will have a value in this field. I don't see a need for a relationship that uses more than this for the match fields:
table::obsolete ≠ system::_constant
I tried this approach but no success. See the attached image.
As you can see when there is an existing record the list works. However, for a new record I get a blank list.
The image also shows the relationship and the DDL definition. If I select "Include all values" rather than "Include only related values.." then I get everything even the obsolete groups
Yes that makes sense. If, however, you entered data first into one of the other fields, the value list should be able to show the conditional value list.
As an alternative, you want to use "option 1" in the following tutorial on conditional value lists. This method can be used without any relationship and without using include only related values in the value list setup.