fix(ci): mythos-auto plumbing — slug ordering, unzip install#164
Merged
Conversation
PR #163 was the first end-to-end test of mythos-auto.yml (added in #162). It surfaced three plumbing issues: 1. The action's `oven-sh/setup-bun` step requires `unzip`, which is not installed by default on the rust-cpu runners. Without it the action's bun-based post-step entrypoints exit 127, and the whole scan-step exits failure before emitting structured output. 2. The `Slugify file path for artifact name` step sat AFTER the discover step with no `if: always()`. When discover failed, the slug step was skipped, leaving `steps.slug.outputs.slug` empty. Downstream `if: always()` steps then wrote `mythos-out/.json` (no slug) and `upload-artifact` complained "No files were found with the provided path: mythos-out/.json". 3. The `Save structured output as artifact` step embedded `${{ steps.slug.outputs.slug }}` in the run-block via direct interpolation. Silently substituting an empty slug into a file path is a footgun even if the slug step had run — better to read slug from an env var and fail loudly on empty. Fixes: - Slugify step moves BEFORE the discover step, so it always runs (no `if: always()` needed because both detect+slug are the precondition for everything below). - New `Install unzip (required by setup-bun)` step, best-effort apt install mirroring the action's own subprocess-isolation install pattern. `continue-on-error: true` so non-Debian runners don't break the workflow. - `Save structured output as artifact` reads slug from env (`SLUG`) rather than `${{ }}` interpolation; explicitly errors out if SLUG is empty rather than silently writing to a malformed path. - `upload-artifact` step gains an extra `steps.slug.outputs.slug != ''` guard so it never tries to upload with an empty name. The placeholder-FINDING fallback (the part that surfaced these issues by writing "discover step failed before emitting structured output" into the aggregate comment) is intentional and stays — it guarantees the gate blocks on workflow failure rather than silently passing. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
LS-N verification gate
Approved Failed LS entries(none) Missing regression tests
Updated automatically by |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three plumbing fixes for
mythos-auto.yml, all surfaced by PR #163's first end-to-end run. None of these affect Mythos discover semantics — they all live in the workflow scaffolding around the action.What broke on PR #163
Three discrete bugs cascaded:
unzipmissing on rust-cpu runnersoven-sh/setup-bunfails → claude-code-action's bun-based entrypoints exit 127if: always()and ran AFTER discoversteps.slug.outputs.slugemptymythos-out/.jsonpathFixes
if: always()needed — slug + discover share the same precondition.Install unzip (required by setup-bun)stepcontinue-on-error: true. Mirrors the action's own subprocess-isolation install pattern. Non-Debian runners log a warning and proceed.${{ }}interpolation into env varSLUG. Explicit[ -z "$SLUG" ]check writes a::error::log instead of silently producingmythos-out/.json.steps.slug.outputs.slug != ''The placeholder-FINDING fallback that surfaced these issues (writes
"discover step failed before emitting structured output"whenRESULT_JSONis empty) is intentional and stays — it's what makes the gate block on workflow failures rather than silently passing.Test plan
.github/workflows/mythos-auto.yml— not a Tier-5 file, so the auto-runner's detect job will setany=falseand the scan job will skip cleanly). To exercise the matrix path end-to-end we need the next Tier-5 PR.Sequencing
This is PR #164 in the post-v0.8.1 cycle:
🤖 Generated with Claude Code