Skip to content

conformance: per-surface lint architecture (editorconfig action + VS Code lint tasks)#401

Merged
ptr727 merged 5 commits into
developfrom
feature/lint-architecture
Jul 11, 2026
Merged

conformance: per-surface lint architecture (editorconfig action + VS Code lint tasks)#401
ptr727 merged 5 commits into
developfrom
feature/lint-architecture

Conversation

@ptr727

@ptr727 ptr727 commented Jul 11, 2026

Copy link
Copy Markdown
Owner

Converges Utilities onto the fleet lint architecture (ProjectTemplate #276). Utilities was already closest — CI on action wrappers, hook language-only — so this is the last two gaps:

  • validate-task.yml: editorconfig-checker runs via docker run mstruebing/editorconfig-checker:latest (the doc linters run as pinned action wrappers; editorconfig-checker's action is install-only, so Docker runs it in one step).
  • .vscode/tasks.json: add the Lint group (editorconfig, actionlint, markdownlint, cspell via Docker :latest, plus a "Lint: All") — the on-demand local doc-lint surface the repo was missing.
  • .husky/pre-commit: add the language-only comment and the if guard (matches the fleet snippet; an absent dotnet exits 0 instead of aborting the commit).

cspell CI scope (README + HISTORY) left as-is. All linters pass locally.

🤖 Generated with Claude Code

- validate-task.yml: editorconfig-checker runs via its action wrapper (pinned),
  so all four CI linters are pinned actions.
- .vscode/tasks.json: add the Lint group (full doc-lint set via Docker :latest),
  the on-demand local surface the repo was missing.
- .husky/pre-commit: add the language-only comment and the if guard, matching the
  fleet snippet (an if block instead of a bare command so an absent dotnet exits 0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 11, 2026 03:40
@codecov

codecov Bot commented Jul 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.89%. Comparing base (3909a89) to head (cff4ce1).

Additional details and impacted files
@@           Coverage Diff            @@
##           develop     #401   +/-   ##
========================================
  Coverage    66.89%   66.89%           
========================================
  Files           13       13           
  Lines         1160     1160           
  Branches       108      108           
========================================
  Hits           776      776           
  Misses         338      338           
  Partials        46       46           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Utilities’ lint surfaces to match the fleet “per-surface” model by shifting EditorConfig line-ending checks to a pinned GitHub Action in CI, adding on-demand VS Code lint tasks for docs/workflows, and making the pre-commit hook language-only and non-blocking when dotnet is absent.

Changes:

  • Switch CI EditorConfig line-ending checking from a docker run invocation to editorconfig-checker/action-editorconfig-checker.
  • Add VS Code “Lint” tasks for line endings, workflows, Markdown, spelling, plus a “Lint: All” aggregator.
  • Update Husky pre-commit hook to document “language-only” behavior and guard dotnet husky run behind a dotnet presence check.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
.vscode/tasks.json Adds Docker-based lint tasks (line endings, actionlint, markdownlint, cspell) and a combined “Lint: All”.
.husky/pre-commit Makes pre-commit hook language-only and no-op when dotnet is missing.
.github/workflows/validate-task.yml Replaces EditorConfig docker lint with the action-based approach.

Comment thread .github/workflows/validate-task.yml Outdated
Comment thread .vscode/tasks.json Outdated
Comment thread .husky/pre-commit
Spell-checking targets user-facing docs only; the governance docs are hub-vetted
and tech-heavy. Keeps the local task consistent with the CI cspell scope.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 11, 2026 03:52

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

Comment thread .vscode/tasks.json
Comment thread .vscode/tasks.json
Comment thread .vscode/tasks.json
Comment thread .vscode/tasks.json
Comment thread .husky/pre-commit
editorconfig-checker/action-editorconfig-checker only installs the CLI (its own
example adds a separate run step), so 'uses:' alone never ran the check and CI
passed without validating line endings. Revert to the Docker invocation, which
runs the check in one step (and matches the VS Code Lint task).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 11, 2026 03:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/validate-task.yml
Local Docker linters and the VS Code Lint tasks run :latest; CI runs
markdownlint/cspell/actionlint as pinned action wrappers and editorconfig-checker
via Docker :latest. Replaces the stale 'pinned to validate-task.yml versions' note.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 11, 2026 04:09

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

.github/workflows/validate-task.yml:86

  • The PR title/description claims editorconfig-checker was moved to an action wrapper, but this workflow is still running editorconfig-checker via docker run ... mstruebing/editorconfig-checker:latest. Either update the PR metadata to reflect the Docker-based approach, or change this step to use the intended action-based implementation so the code matches the stated purpose.
      - name: Check line endings step
        run: docker run --rm -v "$PWD":/check --workdir /check mstruebing/editorconfig-checker:latest

The cspell image entrypoint is cspell, so 'cspell README.md HISTORY.md' passes
'cspell' as a file glob. The image runs without it, matching the VS Code task.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 11, 2026 04:16

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.

Comment thread .github/workflows/validate-task.yml
Comment thread .github/workflows/validate-task.yml
Comment thread .vscode/tasks.json
@ptr727 ptr727 merged commit bb6f262 into develop Jul 11, 2026
12 checks passed
@ptr727 ptr727 deleted the feature/lint-architecture branch July 11, 2026 04:22
ptr727 added a commit that referenced this pull request Jul 12, 2026
…ays (#404)

Forward promotion of the accumulated conformance work (#401/#402/#403).
No release: this is a human merge, so the publish plan gates to
publish=false. No library source (`Utilities/**`) changed.
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.

2 participants