Conditionals/groups can definitely be used - you could also combine that with the Buildkite agent’s outcome functionality to check on the outcome of step1 (either will be passed/hard_failed/soft_failed) to then determine what your pipeline does post the check (dynamic upload/more steps etc).
The outcome is not very desirable because I have to get down to the command level for every single step and add that
Group conditional is a good route for me. Can I make my initial step define an ENV var (based on a full build being required or not) and then use that in the if attribute of the next group?
Its that dynamic upload in the recommendation that holds power in the conditional: you could further upload more groups/different pipelines based on outcomes, which then you could repeat this for various pipelines and such