fix(OPENFRAM-002): CU-86akbhhau bootstrap.Service is an exported empty struct with no constructor-injected dependencies, diverging from ClusterService pattern used elsewhere #117
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
| name: PR Title | |
| # semantic-release (.releaserc.yml) derives release versions from Conventional | |
| # Commits, and this repo squash-merges PRs — so the PR TITLE becomes the commit | |
| # subject that semantic-release analyzes on main. A free-form title silently | |
| # contributes nothing to any release; this lint makes the format a merge gate. | |
| # Format: type(scope)?: subject — e.g. "fix(k3d): tolerate KUBECONFIG lists", | |
| # "feat!: drop v1 config" (the ! marks a breaking change → major bump). | |
| on: | |
| pull_request: | |
| types: [opened, edited, reopened, synchronize] | |
| permissions: {} | |
| jobs: | |
| lint-title: | |
| name: Conventional PR title | |
| runs-on: ubuntu-latest | |
| # Pinned Node toolchain instead of whatever the runner ships. | |
| container: node:24-slim | |
| steps: | |
| - name: Lint PR title as a conventional commit | |
| env: | |
| # Via env, never inline interpolation: a PR title is untrusted input. | |
| TITLE: ${{ github.event.pull_request.title }} | |
| run: | | |
| # A local install, not `npx --package`: commitlint resolves --extends | |
| # from the CURRENT DIRECTORY, while npx puts the packages into its | |
| # ephemeral cache — the config was unresolvable from cwd | |
| # (MODULE_NOT_FOUND). No checkout needed; node_modules lands in the | |
| # empty workspace. | |
| npm install --no-save --no-audit --no-fund \ | |
| @commitlint/cli@19 @commitlint/config-conventional@19 | |
| printf '%s\n' "$TITLE" | npx --no-install \ | |
| commitlint --extends @commitlint/config-conventional --verbose |