From 2c88ad3efb00c2288b19ef7365c785069c7e79e2 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 2 Sep 2026 14:58:20 -0400 Subject: [PATCH] ci: report the raw and normalised trigger values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The refresh dispatch on run 5265 went green with every step skipped: the main-only guard did not fire, checkout took dev, and the reuse step read IS_REFRESH as false. So both workflow-level expressions evaluated false while the identical accessor works for force_build, which compares its value in the shell rather than in an expression. That is a guess until it is measured, and the failure is silent by construction — a refresh that evaluates false behaves exactly like an ordinary push and reports success. This prints the raw input beside the normalised value in the step that already exists to say what a run derived, so the two disagreeing is visible rather than inferred. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01TTjbZZ6JirCMSaJzQV1RhA --- .forgejo/workflows/build.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index aa49ad5..cb3a60b 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -491,8 +491,18 @@ jobs: # the PREVIOUS XPI while the freshly signed one is orphaned (#3156). # * dev and main derive the same values for the same source. - name: Report the derived artifact version + env: + # Diagnostic for the trigger normalisation. `refresh` is reported RAW + # as well as normalised, because the two disagreeing is the whole + # failure mode: a dispatch input whose type does not compare the way + # the expression assumes evaluates to false silently, and the only + # symptom is a refresh that quietly behaves like an ordinary push. + RAW_REFRESH: ${{ github.event.inputs.refresh }} + RAW_FORCE: ${{ github.event.inputs.force_build }} run: | set -u + echo "trigger: event=$GITHUB_EVENT_NAME IS_REFRESH='${IS_REFRESH:-}' BUILD_REF='${BUILD_REF:-}'" + echo "trigger: raw inputs refresh='${RAW_REFRESH:-}' force_build='${RAW_FORCE:-}'" A=web V=$(sh scripts/artifacts.sh version "$A" 2>&1 || echo UNAVAILABLE) R=$(sh scripts/artifacts.sh revision "$A" 2>&1 || echo UNAVAILABLE) @@ -1127,8 +1137,18 @@ jobs: # the PREVIOUS XPI while the freshly signed one is orphaned (#3156). # * dev and main derive the same values for the same source. - name: Report the derived artifact version + env: + # Diagnostic for the trigger normalisation. `refresh` is reported RAW + # as well as normalised, because the two disagreeing is the whole + # failure mode: a dispatch input whose type does not compare the way + # the expression assumes evaluates to false silently, and the only + # symptom is a refresh that quietly behaves like an ordinary push. + RAW_REFRESH: ${{ github.event.inputs.refresh }} + RAW_FORCE: ${{ github.event.inputs.force_build }} run: | set -u + echo "trigger: event=$GITHUB_EVENT_NAME IS_REFRESH='${IS_REFRESH:-}' BUILD_REF='${BUILD_REF:-}'" + echo "trigger: raw inputs refresh='${RAW_REFRESH:-}' force_build='${RAW_FORCE:-}'" A=ml V=$(sh scripts/artifacts.sh version "$A" 2>&1 || echo UNAVAILABLE) R=$(sh scripts/artifacts.sh revision "$A" 2>&1 || echo UNAVAILABLE) @@ -1617,8 +1637,18 @@ jobs: # the PREVIOUS XPI while the freshly signed one is orphaned (#3156). # * dev and main derive the same values for the same source. - name: Report the derived artifact version + env: + # Diagnostic for the trigger normalisation. `refresh` is reported RAW + # as well as normalised, because the two disagreeing is the whole + # failure mode: a dispatch input whose type does not compare the way + # the expression assumes evaluates to false silently, and the only + # symptom is a refresh that quietly behaves like an ordinary push. + RAW_REFRESH: ${{ github.event.inputs.refresh }} + RAW_FORCE: ${{ github.event.inputs.force_build }} run: | set -u + echo "trigger: event=$GITHUB_EVENT_NAME IS_REFRESH='${IS_REFRESH:-}' BUILD_REF='${BUILD_REF:-}'" + echo "trigger: raw inputs refresh='${RAW_REFRESH:-}' force_build='${RAW_FORCE:-}'" A=agent V=$(sh scripts/artifacts.sh version "$A" 2>&1 || echo UNAVAILABLE) R=$(sh scripts/artifacts.sh revision "$A" 2>&1 || echo UNAVAILABLE)