Every conflicted hunk resolves onto the swarm-nfs side, because on all six files it is the strict superset: it carries the display-name codec (utils/roles/display.py) the CI role selections now encode through, and the sequencing glyph move from910748ec4. svc-net-tor holds no unique content on any of them -- runs.py even had non-conflicted hunks already calling `codec`, so keeping its side would have left a NameError. The lint fallout is settled in the same commit, as4afc9b770did for the previous merge: the shell-or-true lint lives on svc-net-tor (c505ce746) and swarm-nfs brings two unmarked `|| true` sites with it. Both get a nocheck reason rather than a rewrite, because neither swallows anything -- the slaptest call is the measured exception ofc4bbbba93and has_cn_config decides right below it, and the dockerd restart is followed by an is-active poll that fatals. In both the exit code was never the authority. make quality green end to end. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Workflow Input Resolution 🔎
Shell helpers that derive structured inputs and outputs for GitHub Actions jobs from repository state.
Scope 📋
This directory contains pure resolvers that read repository state (git history, role metadata, version tags, input environment variables) and emit resolved values either via $GITHUB_OUTPUT or stdout. Resolvers MUST be idempotent and MUST NOT mutate repository or registry state beyond writing to $GITHUB_OUTPUT. The covered concerns are distro selection for push CI, diff-driven app whitelist resolution, the 🧩 Subset label dispatch (pr_affected_roles.sh, which picks between the PR-body subset and the diff resolver), release-tag parsing, app discovery for the deploy matrix, and change detection that gates the update pipeline.
For the workflow catalog that consumes these outputs see workflows.md. For the diff-driven whitelist contract see the "Diff-driven app selection" section in pipeline.md.