Skip to content

fix(OPENFRAM-002): CU-86akbhhau bootstrap.Service is an exported empty struct with no constructor-injected dependencies, diverging from ClusterService pattern used elsewhere #117

fix(OPENFRAM-002): CU-86akbhhau bootstrap.Service is an exported empty struct with no constructor-injected dependencies, diverging from ClusterService pattern used elsewhere

fix(OPENFRAM-002): CU-86akbhhau bootstrap.Service is an exported empty struct with no constructor-injected dependencies, diverging from ClusterService pattern used elsewhere #117

Workflow file for this run

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