You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Order the LF Conversion Before Carrying Files Into a CRLF-Default Repository - #2322
Settles #2290 in one change, covering every constraint recorded on the issue.
Convert first. A repository still on the old CRLF default lands its line-ending conversion before anything else is carried, as its own merged pull request, which carries its own .editorconfig and .gitattributes. This step is added to:
RESYNC.md section 3 and STANDUP.md section 1A
the resync-a-repo and standup-a-repo skills, which restate the apply order themselves.
Each of these points at the one trigger in docs/eol-lf-rollout.md. Once the conversion merges, the remaining work is based on develop, and a resync re-measures.
docs/eol-lf-rollout.md "Per-Repo Conversion" is now an ordered procedure:
The trigger is read on the base branch: a missing config file, a missing LF default, or an unpinned i/crlf file in the index.
Merge, not overwrite. Both config files take the hub's defaults merged in, keeping the repository's own attributes and sections.
Vendor pins go in before renormalizing, as a .gitattributes and .editorconfig pair, with globs for both letter cases.
Renormalize in its own commit, verified with the staged diff. Only --renormalize or a first add normalizes a file.
A fresh detached worktree comes before editorconfig-checker, since --renormalize changes only the index.
Isolation. The pull request holds only the renormalization and its two config files, so a squash-only develop keeps it isolated.
The rest of the rollout doc:
"What Changed" no longer describes the old * -text file, and it credits the .gitattributes default to its later pull request.
A hub pull request ticks a box once the conversion reaches main.
The checklist is updated from main as read on 2026-10-03. Each repository's .editorconfig and .gitattributes were read, and its committed bytes were scanned for CRLF text outside a -text pin. EspDinIoT, DevKitCIoT, AudioCleaner and HolidayLights stay unchecked, each with what it still lacks.
references/line-endings.md. The byte-preserve recipe now sets insert_final_newline = unset, because under false editorconfig-checker reports "no final newline expected" for every file that ends in a newline (tested). The reference and the .gitattributes comment now say text=auto byte-preserves only what Git detects as binary, and that normalization happens on a first add or a renormalize.
…ository
RESYNC.md section 3, STANDUP.md section 1A, and the resync-a-repo and
standup-a-repo skills now land a line-ending conversion first, as its own
pull request, for a repository docs/eol-lf-rollout.md says needs one. That
pull request carries its own .editorconfig and .gitattributes ahead of the
instruction set.
docs/eol-lf-rollout.md states the trigger once and rewrites "Per-Repo
Conversion" as an ordered procedure:
- merge the hub's defaults into both config files rather than overwriting them
- pin text-shaped vendor files as a .gitattributes and .editorconfig pair,
with both-case globs, before renormalizing
- name what normalizes
- keep the pull request to the renormalization and its two config files, so a
squash-only develop leaves it isolated.
"What Changed" no longer describes the old * -text file. The tick rule says a
hub pull request checks a box after the conversion merges, and the checklist is
updated from each repository's default branch as read on 2026-10-03.
The byte-preserve recipe in references/line-endings.md sets
insert_final_newline = unset rather than false, since editorconfig-checker
refuses a final newline under false. It and the .gitattributes comment now say
text=auto byte-preserves only what Git detects as binary.
Fixes#2290
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…verted
The conversion trigger now reads both config files on main and develop and
lists an unpinned CRLF file in the index, since a carried .gitattributes alone
leaves committed CRLF blobs in place. The verification step reads the staged
diff, a fresh checkout precedes editorconfig-checker because --renormalize
changes only the index, and What Changed credits the later .gitattributes
change. RESYNC.md, STANDUP.md, and both skills base the remaining work on
develop once the conversion merges, and the line-endings reference and the
.gitattributes comment say normalization happens on a first add or a
renormalize, not on a plain re-add.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The trigger reads the branch work is based on, develop where a repo keeps one,
so a conversion merged there releases the resync and standup gate, and the box
is ticked once the conversion reaches main. The fresh checkout is a detached
worktree, since the branch is already checked out, and the staged-stat check
covers only the -text and binary pins, since a CRLF-pinned file is
renormalized too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The reason will be displayed to describe this comment to others. Learn more.
Copilot review overview
🟡 Changes recommended
Unresolved workflow and rollout-documentation issues affect conversion-branch isolation, staging safety, configuration precedence, and empty-repository handling.
A surviving * -text, as the last matching line, leaves --renormalize with
nothing to do, so step 1 replaces both old fleet defaults. The squash note now
says the commit boundaries are for review before merge, with the pull
request's file scope as the isolation that survives the squash.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A later match overrides a property an earlier one set in both files, so step 1
now orders the hub defaults first, then the CRLF pins, the repository's own
attributes and the vendor pins, and states the override per property rather
than per line. The staged-stat check covers every -text or binary pin.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Step 1 kept every path pin, which would keep the old fleet's redundant *.sh,
uv.lock, Dockerfile, and by-path LF pins that What Changed and the
line-endings reference say are dropped. It now removes them and keeps only
the repository's own path pins.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Handle missing CRLF configuration in the operational exception
docs/eol-lf-rollout.md:39
[P1] Handle missing config in the CRLF operational exception. The trigger above treats a missing .editorconfig or .gitattributes as requiring work, but this exception then skips the conversion and gives no alternative procedure. That leaves a lineEndings: crlf operational repo without the required config pair, contrary to the line-endings policy's requirement that both files exist and carry the app's CRLF defaults. Add a separate CRLF-config setup path or narrow the exception to repos whose pair is already present.
The trigger treats a missing .editorconfig or .gitattributes as needing the
conversion, which the operational CRLF exception then skips. It now says such
a repo still carries both files, set up per the line-endings reference's
operational section rather than through this procedure.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The LF overrides for scripts a CRLF operational repo runs on POSIX live in the
line-endings reference's scripts section, not its operational one, so the
sentence cites both and sits after the paragraph's Vantage-Config note.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Answering Copilot's review-body finding "[P1] Handle missing config in the CRLF operational exception" (docs/eol-lf-rollout.md:39): fixed in 6e704f6 and 45c513f. The operational lineEndings: crlf exception now says such a repo still carries both files, with the CRLF defaults from references/line-endings.md "Operational (config) repos" and the LF overrides from its "Scripts and extensionless executables" for scripts it runs on POSIX. A missing file is added that way rather than through the conversion procedure.
…tions, and a Guard Wait Bound (#2326)
## Summary
Promotes `develop` to `main` with three pull requests, each already
reviewed and merged into `develop`:
- [#2117](#2117) denies a
signal-0 `timeout` as a wait bound in the `gh-write-guard` hook. It
comes from the unattended `auto-1634` lane.
- [#2322](#2322) orders
the LF conversion before carrying files into a CRLF-default repository:
- in `RESYNC.md`, `STANDUP.md`, and the `resync-a-repo` and
`standup-a-repo` skills
- as an ordered "Per-Repo Conversion" procedure in
`docs/eol-lf-rollout.md`
- with a corrected byte-preserve recipe in the line-endings reference
(`insert_final_newline = unset`).
- [#2324](#2324) records
KiCadLibrary's hub workflow adoptions now that its `main` carries them,
and deletes the stale registry driftNote.
Closes#2290Closes#1634
🤖 Generated with [Claude Code](https://claude.com/claude-code)
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
commentsPermits the comment lines the pull request adds or edits, which the prose gate otherwise refuses
2 participants
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.
Summary
Settles #2290 in one change, covering every constraint recorded on the issue.
Convert first. A repository still on the old CRLF default lands its line-ending conversion before anything else is carried, as its own merged pull request, which carries its own
.editorconfigand.gitattributes. This step is added to:RESYNC.mdsection 3 andSTANDUP.mdsection 1Aresync-a-repoandstandup-a-reposkills, which restate the apply order themselves.Each of these points at the one trigger in
docs/eol-lf-rollout.md. Once the conversion merges, the remaining work is based ondevelop, and a resync re-measures.docs/eol-lf-rollout.md"Per-Repo Conversion" is now an ordered procedure:i/crlffile in the index..gitattributesand.editorconfigpair, with globs for both letter cases.--renormalizeor a first add normalizes a file.editorconfig-checker, since--renormalizechanges only the index.developkeeps it isolated.The rest of the rollout doc:
* -textfile, and it credits the.gitattributesdefault to its later pull request.main.mainas read on 2026-10-03. Each repository's.editorconfigand.gitattributeswere read, and its committed bytes were scanned for CRLF text outside a-textpin. EspDinIoT, DevKitCIoT, AudioCleaner and HolidayLights stay unchecked, each with what it still lacks.references/line-endings.md. The byte-preserve recipe now setsinsert_final_newline = unset, because underfalseeditorconfig-checker reports "no final newline expected" for every file that ends in a newline (tested). The reference and the.gitattributescomment now saytext=autobyte-preserves only what Git detects as binary, and that normalization happens on a first add or a renormalize.Fixes #2290
Verification
.gitattributescomment lines, which need thecommentslabel.spec/validate.py,build_dist.py --check, and markdownlint are clean.ba8d1afdandfd92f434, and the final round found nothing.🤖 Generated with Claude Code