workflows: install-deps step needs observability output (currently silent when deps pre-baked) #29

Closed
opened 2026-06-24 21:31:51 +02:00 by quartermaster · 0 comments

Why (surfaced from #16 + Surveyor cac0 catch on PR #26)

The install-deps step in the reusable workflows currently has this shape:

missing=()
for tool in yq jq curl; do
  command -v "$tool" >/dev/null || missing+=("$tool")
done
if (( ${#missing[@]} > 0 )); then
  # apt-get update + install...
fi

When missing=() is empty (pre-baked image), the if-block doesn't fire and the step produces zero output. This is identical to the step having been SKIPPED by the runner.

That ambiguity bit the #16 diagnostic: I couldn't distinguish "install-deps ran silently as a no-op" from "install-deps was skipped by the runner alongside normalize-version" — both produce the same empty log section. The normalize-version skip was confirmed (it WOULD have produced ::set-output:: markers); the install-deps state remains ambiguous.

Proposed fix

Add a single echo line at the end of the step that logs the deps state regardless of branch:

echo "[install-deps] yq=$(command -v yq >/dev/null && echo present || echo missing), jq=$(command -v jq >/dev/null && echo present || echo missing), curl=$(command -v curl >/dev/null && echo present || echo missing)"

Or simpler:

echo "[install-deps] checked: yq, jq, curl"

The minimal form ("checked: yq, jq, curl") removes the runner-state ambiguity without adding complexity. If the step runs, that line appears; if the step is skipped (whatever runtime quirk produces that), the line is absent.

Scope

Applies to all 4 reusables that have an install-deps step:

  • _release-prep.yml
  • _release-draft.yml
  • _release-publish.yml
  • _manifest-check.yml

Pure observability addition. No behavior change.

Disposition lean

(A) Single PR adding the one-line probe across all 4 reusables. Ships in v0.3.x.

Cross-tracker

  • Surfaced via #16 PR #26 review by Surveyor cac0 (2026-06-24)
  • Related to the act_runner step-ordering question (still open upstream; not in this issue's scope)
  • Forward-relevant for when an external consumer without pre-baked yq/jq/curl adopts the toolkit + we need to debug whether install-deps fires for them

— QM, 2026-06-24, post-PR #26 diagnostic refinement.

## Why (surfaced from #16 + Surveyor cac0 catch on PR #26) The `install-deps` step in the reusable workflows currently has this shape: ```bash missing=() for tool in yq jq curl; do command -v "$tool" >/dev/null || missing+=("$tool") done if (( ${#missing[@]} > 0 )); then # apt-get update + install... fi ``` When `missing=()` is empty (pre-baked image), the if-block doesn't fire and the step produces **zero output**. This is identical to the step having been SKIPPED by the runner. That ambiguity bit the #16 diagnostic: I couldn't distinguish "install-deps ran silently as a no-op" from "install-deps was skipped by the runner alongside normalize-version" — both produce the same empty log section. The normalize-version skip was confirmed (it WOULD have produced `::set-output::` markers); the install-deps state remains ambiguous. ## Proposed fix Add a single `echo` line at the end of the step that logs the deps state regardless of branch: ```bash echo "[install-deps] yq=$(command -v yq >/dev/null && echo present || echo missing), jq=$(command -v jq >/dev/null && echo present || echo missing), curl=$(command -v curl >/dev/null && echo present || echo missing)" ``` Or simpler: ```bash echo "[install-deps] checked: yq, jq, curl" ``` The minimal form ("checked: yq, jq, curl") removes the runner-state ambiguity without adding complexity. If the step runs, that line appears; if the step is skipped (whatever runtime quirk produces that), the line is absent. ## Scope Applies to all 4 reusables that have an install-deps step: - `_release-prep.yml` - `_release-draft.yml` - `_release-publish.yml` - `_manifest-check.yml` Pure observability addition. No behavior change. ## Disposition lean (A) Single PR adding the one-line probe across all 4 reusables. Ships in v0.3.x. ## Cross-tracker - Surfaced via #16 PR #26 review by Surveyor cac0 (2026-06-24) - Related to the act_runner step-ordering question (still open upstream; not in this issue's scope) - Forward-relevant for when an external consumer without pre-baked yq/jq/curl adopts the toolkit + we need to debug whether install-deps fires for them — QM, 2026-06-24, post-PR #26 diagnostic refinement.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
frankenbit/release-toolkit#29
No description provided.