Skip to content

Call the shared CTTIR workflows - #3

Merged
r-heller merged 5 commits into
mainfrom
feat/shared-workflows
Aug 21, 2026
Merged

r-heller merged 5 commits into
mainfrom
feat/shared-workflows

Conversation

@r-heller

Copy link
Copy Markdown
Collaborator

Pilot for the shared-workflow rollout (CTTIR/.github#2). hexmakR was chosen because it is green and measured 0 house-linter findings, so anything that goes red here is the shared workflow's fault rather than pre-existing debt.

119 lines of copied YAML → 3 caller stubs.

What comes with the shared versions:

  • R-CMD-check gains an oldrel-3 job, so the R version DESCRIPTION claims to support is actually built, and passes --as-cran.
  • test-coverage computes its gate with covr and an explicit exit instead of delegating to Codecov, with an absolute floor of 90% — the old config used target: auto, threshold: 1%, which compares only to the base commit and permits unlimited decay in 1% steps.
  • lint is new, and blocking here because the count is already zero.

⚠️ Pinned to @feat/org-infrastructure so it can be validated before that PR merges. Merge CTTIR/.github#2 first, then change the three refs to @main — three one-word edits.

If this goes green, the remaining rollout is file creation and whole-file replacement across the other repos, which is the only kind of scripted change CONTRIBUTING.md permits.

rh added 4 commits August 21, 2026 20:33
Replaces 119 lines of copied YAML with three caller stubs. Behaviour
changes that come with the shared versions:

* R-CMD-check gains an oldrel-3 job, so the R version DESCRIPTION claims
  to support is actually built, and passes --as-cran.
* test-coverage computes its gate with covr and an explicit exit rather
  than delegating to Codecov, with an absolute floor of 90% instead of
  target: auto plus a 1% threshold that permitted unlimited decay.
* lint is new. hexmakR measured 0 house-linter findings on 2026-08-21,
  so it blocks from the start rather than shipping report-only.

Pinned to the feature branch until CTTIR/.github#2 merges, then @main.
The reusable lint workflow checks out CTTIR/.github for its linter
definitions and defaults that checkout to main, which does not yet carry
config/lint-cttir.R. Pin both to the same branch until it merges.
I set blocking: true on the claim that hexmakR measured zero house-linter
findings. That was wrong - hexmakR was never in the measured set, and I
had conflated it with themakR, which is the package with zero.

Measured properly, hexmakR has 15: 14 stop()/warning() calls that should
be cli::cli_abort()/cli_warn(), and one multi-entry globalVariables().
Local and CI counts agree exactly.
@r-heller

Copy link
Copy Markdown
Collaborator Author

Correction: hexmakR has 15 house-linter findings, not 0.

I opened this PR saying hexmakR measured zero and set blocking: true on that basis. hexmakR was never in the set I measured — I conflated it with themakR, which is the package with zero. Switched to blocking: false.

Actual findings: 14 stop()/warning() calls that should be cli::cli_abort()/cli_warn() (in R/export.R and R/hex_canvas.R), plus one multi-entry utils::globalVariables() in R/hex_canvas.R:6. Local and CI counts agree exactly, which is a useful check that the shared workflow reproduces a local run.

What the pilot established, which was its purpose:

Caller-stub pattern works — 119 lines of YAML → 3 stubs
R-CMD-check incl. new oldrel-3 pass on all 6 platforms
Coverage gate computed in-workflow pass at floor 90
lint runs, reports real findings, correctly non-blocking

Two design bugs it caught, both now fixed in CTTIR/.github#2:

  1. The reusable workflow cannot discover its own ref, so the shared-config checkout always resolved to main — a branch-pinned caller failed outright. Added a config-ref input.
  2. The workflow ran lintr's full default style set alongside the house rules, producing 624 findings on hexmakR — 534 of them infix_spaces. Restyling the estate is a separate decision from holding its vocabulary, and mixing them buries the signal. Defaults are now opt-in via with-defaults: true.

CTTIR/.github#2 has merged, so the reusable workflows and the linter
config are on main. config-ref is no longer needed - it defaults to main.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant