Repository navigation
Description
🤖 Generated by the Daily AI Engineer (Codex instance)
Evidence
At cde05878304d77df263679ca17653dc25ff7573b, actionlint reports four findings in .github/workflows/bootstrap.yaml:
vars.GITHUB_APP_CLIENT_IDuses the reservedGITHUB_prefix.- The three generated-secret assignments mask
opensslfailures behindexport(SC2155).
The bootstrap contract also requires secrets.GITHUB_APP_CLIENT_SECRET. GitHub forbids the GITHUB_ prefix for both configuration variables and Actions secrets, so neither documented SSO credential can be created as named.
GitHub resolves unset vars and secrets references to empty strings. The workflow then writes those empty values into both local and production bootstrap payloads, leaving Dex without usable GitHub connector credentials.
A Bash negative control replacing openssl with a command that exits 7 still continued under set -euo pipefail and produced three zero-length secret values, confirming that the current export VAR="$(openssl ...)" form fails open.
The Bootstrap workflow has no recorded runs, so this is static analysis plus an executed negative control rather than an observed live failure. No matching report exists among the repository's issues or pull requests.
Impact
A new template consumer cannot configure bootstrap as documented. Dispatch may proceed with empty SSO credentials, potentially provisioning infrastructure before authentication fails and leaving a partial or unusable platform.
Expected behavior
Bootstrap accepts valid, documented SSO credential names and stops before rendering, encryption, commit-back, or provisioning whenever a required credential or generated secret is missing.
Acceptance criteria
- Replace both user-facing SSO names with non-reserved names consistently across the workflow and documentation.
- Validate every required bootstrap variable and secret as non-empty before mutating files or provisioning infrastructure.
- Generate each internal secret in a separate assignment before export so an
opensslfailure terminates the step. - Add negative controls proving a missing SSO credential and a failed secret generator both stop before cluster creation.
- Make all workflows actionlint-clean and add regression coverage for reserved variable and secret names; actionlint alone does not catch the invalid secret name.
- Keep the rendered Kubernetes keys
github_app_client_idandgithub_app_client_secretunchanged.
Rough size: S.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Effort
Projects
- StatusShow more project fields✅ Done
Activity
chore: agent-claim #87 nonce=cd52ce55829c1b78b27f590e461c13d3
devantler commentedon Oct 11, 2026
Verification, 2026-10-11: reached
Linted the bootstrap workflow as it is on
maintoday. All four findings this issue listed are gone: the sign-in app's client ID and secret now use names GitHub accepts (SSO_GITHUB_APP_CLIENT_ID,SSO_GITHUB_APP_CLIENT_SECRET), and no generated secret hides a failed command behindexportany more.Two notes:
queue: maxunderconcurrency). It was not part of this issue, and I have not checked whether that is a real problem or only an older linter that does not know the key.Outcome: kept. Moving the card to Done.