Extend line-ending governance to pattern files and catalog snippets - #251
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR completes the repository's line-ending governance by clarifying which file classes must be LF vs CRLF, extending .editorconfig to cover workflow snippet files, and updating the spec assertion to reflect the workflow-YAML LF/CI enforcement.
Changes:
- Clarifies in
AGENTS.mdthat non-executed pattern/config files like.dockerignore/.gitignoreremain CRLF when the consumer tolerates trailing\r. - Pins
catalog/snippets/workflows/*.{yml,yaml}to LF in.editorconfigand converts the catalog workflow snippet files accordingly. - Updates the
spec/project-types.jsonrecurring EOL assertion to include workflow YAML LF enforcement viaeditorconfig-checker.
Reviewed changes
Copilot reviewed 3 out of 14 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| spec/project-types.json | Updates the recurring EOL governance assertion to include workflow YAML LF enforcement in CI. |
| AGENTS.md | Clarifies that tolerated pattern/config files stay CRLF; distinguishes Dockerfile as LF-required. |
| .editorconfig | Adds an LF pin for catalog workflow snippet YAML to match real workflow LF requirements. |
| catalog/snippets/workflows/run-periodic-codegen-pull-request.yml | Converted to LF so copied workflow snippets land compliant. |
| catalog/snippets/workflows/run-codegen-pull-request-task.yml | Converted to LF so copied workflow snippets land compliant. |
| catalog/snippets/workflows/publish-docker-readme-task.yml | Converted to LF so copied workflow snippets land compliant. |
| catalog/snippets/workflows/get-version-task.yml | Converted to LF so copied workflow snippets land compliant. |
| catalog/snippets/workflows/check-upstream-version-task.yml | Converted to LF so copied workflow snippets land compliant. |
| catalog/snippets/workflows/build-release-task.yml | Converted to LF so copied workflow snippets land compliant. |
| catalog/snippets/workflows/build-pypilibrary-task.yml | Converted to LF so copied workflow snippets land compliant. |
| catalog/snippets/workflows/build-nugetlibrary-task.yml | Converted to LF so copied workflow snippets land compliant. |
| catalog/snippets/workflows/build-executable-task.yml | Converted to LF so copied workflow snippets land compliant. |
| catalog/snippets/workflows/build-docker-task.yml | Converted to LF so copied workflow snippets land compliant. |
| catalog/snippets/workflows/build-datebadge-task.yml | Converted to LF so copied workflow snippets land compliant. |
Encode that non-executed pattern files stay CRLF: `.dockerignore` and `.gitignore` are consumed by Linux tools, but their parsers strip a trailing CR, so only an interpreted Dockerfile (a CR breaks RUN heredocs and line continuations) is LF (AGENTS.md). Pin the catalog snippet workflows to LF in `.editorconfig` and convert them, so a copied snippet lands compliant with the workflow-YAML-LF rule instead of needing conversion. Note the workflow-YAML LF pin in the spec's `recurring.eol` assertion, which #250 left listing only the shell, Dockerfile, and shebang-`.py` pins. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ptr727
force-pushed
the
feature/eol-pattern-files-and-snippets
branch
from
July 7, 2026 01:45
766b9f6 to
29e8d5e
Compare
Merged
ptr727
added a commit
that referenced
this pull request
Jul 7, 2026
Two-phase promotion of the accumulated governance work on `develop` to `main`. Carries #244-#251: - #244 Foundational Principles (the model's governing *why*) - #245 Replace the mypy ban with a strong-typing policy - #246 aiopurpleair + homeassistant-purpleair audit reports - #247 Catalog the 14 backlog repos; add the `eda` type and `releaseTrigger: none` - #248 Branch-conditional Docker platforms (multi-arch main, amd64 elsewhere) - #249 Retire the both-branch matrix for symmetric single-branch self-release - #250 Declare workflow YAML as LF and validate line endings in CI - #251 Extend line-ending governance to pattern files and catalog snippets All commits were reviewed and CI-green on their individual develop PRs.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three line-ending governance completions:
.dockerignore/.gitignoreparsers strip a trailing CR, so only an interpreted Dockerfile is LF. (Corrects a misclassification from the fleet rollout where.dockerignorewas wrongly LF-pinned.).editorconfig— pincatalog/snippets/workflows/*.{yml,yaml}to LF and convert the 11 snippets, so a copied snippet lands compliant with the workflow-YAML-LF rule.recurring.eol— add the workflow-YAML LF pin to the assertion (Declare workflow YAML as LF and validate line endings in CI #250 left it listing only the older pins).EOL-preserving;
git diff --ignore-cr-at-eolshows only these three content changes plus the snippet conversions. ec, jq, validate.py, markdownlint, cspell all clean locally.