Dependency Automation
BoardReadyOps uses Renovate as the single source of truth for routine version-update pull requests.
Execution
.github/workflows/renovate.ymlvalidatesrenovate.jsonon pull requests and changes tomain. Validation runs the official Renovate image by immutable digest, with the repository mounted read-only and container networking disabled, so validation cannot drift through dynamically resolvedpnpm dlxtransitives.- The pinned Renovate runner executes at 06:17 Europe/Istanbul on weekdays and can also be started manually.
- The runner is explicitly scoped to
oaslananka/boardreadyops; repository autodiscovery and onboarding are disabled. - The workflow uses the
GH_AUTH_TOKENrepository secret. That credential must belong to a dedicated automation identity with the minimum repository permissions required to create branches, pull requests, labels, and issues. - Post-upgrade command execution is restricted through
RENOVATE_ALLOWED_COMMANDSto the exactcorepack pnpm run renovate:post-upgradeentry point. That repository-controlled script creates an isolated temporary pnpm store for the dependency install, native rebuild,NOTICErefresh, and committeddist/rebuild, then removes the store. This prevents shared-runner pnpm store metadata from breakingpnpm licenses listwhile keeping Renovate unable to execute arbitrary post-upgrade commands. - Renovate itself never runs on a pull-request event, so untrusted pull-request code cannot obtain the automation token.
Policy
- Renovate owns npm workspace updates, GitHub Actions updates, Dockerfile updates, and Docker Compose updates.
- Generated output, dependency trees, and test fixtures are ignored.
- Dependency branches regenerate
NOTICEand the committeddist/bundles through the allowlisted post-upgrade task, so license inventory and shipped CLI/Action bundle changes remain visible and reviewable in the pull request. - GitHub repository security alerts and security update PRs remain enabled in repository security settings.
- Major upgrades require Dependency Dashboard approval and manual review.
- Core runtime and GitHub integration dependencies use exact manifest versions so unrelated lockfile refreshes cannot advance them implicitly; their updates, plus GitHub Actions, Dockerfile, and Docker Compose updates, require manual review.
- Low-risk development dependency and
@types/*minor/patch updates wait at least seven days, receive theautomergelabel, and may be squash-merged by Mergify after all required checks pass. - TypeScript compiler updates wait at least seven days and always require manual review.
- GitHub Actions and container references remain digest-pinned.
Files
renovate.jsoncontrols project-specific Renovate behavior..github/workflows/renovate.ymlvalidates and runs the pinned self-hosted Renovate release..mergify.ymlis the post-CI merge authority.tests/unit/scripts/security-automation-config.test.tsprevents accidental weakening of the automation contract.- Version-update PR configuration must not be duplicated in another dependency updater.
Last verification
- On July 20, 2026, Renovate
43.272.4completed a full dry-run under Node.js24.18.0. - The repository reported
activated,enabled, andonboarded, and Renovate discovered 269 dependencies across npm, GitHub Actions, Dockerfiles, and Docker Compose. - After the workflow reached
main, manual workflow run29767533207completed bothrenovate / validateandrenovate / runsuccessfully. - The authenticated run created Dependency Dashboard issue
#196and populated pending-approval, awaiting-schedule, status-check, abandoned-dependency, and detected-dependency sections. - No update branches or pull requests were created outside the configured schedule or approval policy.
Operations
- Confirm the
renovate / validatejob passes after configuration changes. - Run the workflow manually after first installation or credential rotation.
- Confirm that the
Dependency Dashboardissue exists and that the workflow can create or update Renovate branches. - Rotate
GH_AUTH_TOKENimmediately if its owner or permissions change unexpectedly.