Restore always-modules' default — #3225 orphaned it onto the new input and startup-failed every caller - #3226
Merged
Conversation
…tup_failure My #3225 inserted `superseded-image-assemblies:` between `always-modules:`'s `required: false` and its `default: ''`. The orphaned line attached to the new input, which already declared its own — so the file carried a duplicate `default` key, and `always-modules` silently lost its default. GitHub refuses the whole workflow: MeshWeaver.Plugins#1268's run 33777768374 concluded `failure` with ZERO jobs and ZERO contexts — a startup_failure, which renders as an ordinary red and names nothing. 🚨 Why the change's own verification could not catch it: I validated with `yaml.safe_load`, and PyYAML accepts duplicate mapping keys, silently keeping the last. So the check I ran could not fail on this defect — the same "a verification that cannot fail is not a verification" shape the change itself was about. `actionlint` catches it in one line and is what proved this fix: node-repo-module-pack.yml:289:9: key "default" is duplicated in input of workflow_call event. previously defined at line:288,col:9 [syntax-check] Swept every workflow in the repo with actionlint: no other duplicate-key finding. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G4xPnGYEbdu8AVvR5jytyj
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The change corrects a confirmed YAML duplicate-key workflow-call input defect with a minimal, targeted fix and no remaining issues found in the edited block.
Pull request overview
Fixes a reusable workflow YAML syntax regression where always-modules lost its default: '' due to a duplicated default key introduced by inserting superseded-image-assemblies between required and default. This restores the prior input contract so consuming repos no longer hit a GitHub Actions workflow “startup_failure” (zero jobs/contexts).
Changes:
- Restores
always-modulesinputdefault: ''. - Removes the duplicated
default: ''line sosuperseded-image-assemblieshas exactly onedefault.
File summaries
| File | Description |
|---|---|
| .github/workflows/node-repo-module-pack.yml | Fixes duplicated YAML key and restores always-modules default to prevent reusable workflow startup failures. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Contributor
Contributor
Contributor
Contributor
Contributor
Contributor
Contributor
This was referenced Sep 3, 2026
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.
What broke
#3225 inserted the
superseded-image-assemblies:input betweenalways-modules:'srequired: falseand itsdefault: ''. The orphaneddefaultline attached itself to the newinput — which already declared its own — so the file carried a duplicate
defaultkey, andalways-modulessilently lost its default.GitHub refuses the entire workflow. MeshWeaver.Plugins#1268's run
33777768374 concluded
failurewith zero jobs and zero contexts — astartup_failure, which renders as an ordinaryred and names nothing. Its previous head ran 29 jobs, which is how the change was isolated.
🚨 Why #3225's own verification could not catch it
I validated the lane with
yaml.safe_load. PyYAML accepts duplicate mapping keys and silentlykeeps the last, so the parse succeeded, the input's spec read back correctly, and the "required
inputs unchanged" assertion passed. The check I ran could not fail on this defect — the exact
"a verification step that cannot fail is not a verification step" shape #3225 was itself written
about. Two hours of cataloguing that pattern did not stop me writing it.
actionlintfinds it in one line:Swept every workflow in the repo with actionlint: no other duplicate-key finding.
The fix
Restore
default: ''toalways-modulesand drop the duplicate fromsuperseded-image-assemblies. One line net. Both inputs verified after the change:actionlintclean on the file and repo-wide.Follow-up worth having, not done here
check-workflow-timeouts.pyand friends run in CI, but nothing runsactionlint. A lane defect thatGitHub only reports as a job-less red on a consuming repo is expensive to attribute — it took a
before/after job-count comparison across two repos to find this one. Adding actionlint to the
workflow-validation step would have caught it at the source, in the PR that introduced it. Filing
separately rather than widening this fix.
Pairs-with: none — restores the previous behaviour of an input; no public surface.
No What's New — internal CI fix.