Skip to content

fix(validation-cases): skip standalone candidate resolve in chain mode - #143

Merged
majinghe merged 1 commit into
mainfrom
fix/validation-cases-chain-resolve-gate
Nov 5, 2026
Merged

majinghe merged 1 commit into
mainfrom
fix/validation-cases-chain-resolve-gate

Conversation

@majinghe

@majinghe majinghe commented Nov 5, 2026

Copy link
Copy Markdown
Collaborator

Problem

In a reusable workflow, github.event_name is inherited from the caller's event. When a chain is dispatched via workflow_dispatch (manual run with build_run_id, or any future caller), the validation-cases lane sees github.event_name == 'workflow_dispatch' even though inputs.chain_manifest is set.

That makes the standalone-only Resolve nightly candidate step run right after Bind functional candidate. The chain had already exported a partial schema-2 env (PACKAGE_SHA256 set by functional_chain_evidence.py consume, SOURCE_SHA/SOURCE_REF/WORKFLOW_SHA/PACKAGE_URL missing), so manual_manifest() took the full-candidate branch and aborted:

ValueError: manual schema 2 replay requires the full candidate, including build run and attempt

The job went red in ~9s without executing a single case (run 41948811406, validation-cases / validation-cases).

Fix

Gate the resolver on inputs.chain_manifest == '' as well, mirroring the Bind step's note about event-name inheritance:

  • chain mode (chain_manifest set): resolver is skipped, Bind functional candidate has already written candidate.json
  • standalone workflow_dispatch: unchanged (resolver runs exactly as before)
  • repository_dispatch / schedule chains: unchanged (the gate was already false there)

This is the same reusable-workflow gotcha fixed on the Bind side in #134; the resolver side was missed.

The caller workflow_dispatch event leaks through workflow_call, so a
manually dispatched chain also satisfies
github.event_name == 'workflow_dispatch'. The standalone-only
"Resolve nightly candidate" step then ran after Bind and died in
manual_manifest() on the half-set chain env (PACKAGE_SHA256 present,
SOURCE_SHA and friends missing):

  ValueError: manual schema 2 replay requires the full candidate,
  including build run and attempt

Run 41948811406 went red in ~9s without executing a single case.
Gate the resolver on inputs.chain_manifest == '' too, mirroring the
Bind step: in chain mode Bind already writes candidate.json.
@majinghe
majinghe merged commit f1d75e4 into main Nov 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant