From 19915f52c56df5e4c7a238ee3e7e85a1b4b99b2f Mon Sep 17 00:00:00 2001 From: Jake Tiller Date: Thu, 13 Aug 2026 19:22:11 -0400 Subject: [PATCH] Pin byte identity on checkout with .gitattributes Most checks here compare a working-tree file against a digest recorded from the committed bytes: the data-sync baselines, the release manifests, the ledger event hashes, and the header baseline in verify-atlas-runtime.js. On a default Windows clone (core.autocrlf=true) Git rewrites line endings on checkout, so those bytes no longer match. verify-atlas-runtime.js then fails with "global header baseline missing" before it reaches any real defect. That reads as a repository defect and is not one. Unsetting text on every path disables end-of-line conversion in both directions, so a checkout reproduces the committed bytes on every platform. No stored blob is rewritten, so every digest already published against this history stays valid. text=auto eol=lf was deliberately not used: it normalizes on check-in, which can rewrite a stored blob and invalidate a published digest. Co-Authored-By: Claude Opus 5 --- .gitattributes | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..b663d2f --- /dev/null +++ b/.gitattributes @@ -0,0 +1,21 @@ +# Byte identity is the floor here. +# +# Most checks in this repository compare a working-tree file against a digest +# recorded from the committed bytes: the data-sync baselines, the release +# manifests, the ledger event hashes, and the header baseline in +# governance/harnesses/verify-atlas-runtime.js. Any end-of-line rewriting on +# checkout breaks that comparison before a check can reach a real defect. On a +# default Windows clone (core.autocrlf=true) the runtime check fails with +# "global header baseline missing" for exactly this reason, which reads as a +# repository defect and is not one. +# +# Unsetting `text` on every path disables end-of-line conversion in both +# directions. A checkout reproduces the committed bytes on every platform, and +# a commit stores what the working tree holds. No stored blob is rewritten by +# this file, so every digest already published against this history stays +# valid. +# +# Do not replace this with `text=auto eol=lf`. That normalizes on check-in, +# which can rewrite a stored blob and invalidate a published digest. + +* -text