npm test cannot pass on main at 19213e1. The second gate fails before any test runs:
$ cd archify && npm ci && npm test
> archify@2.13.0 check:validators
> node scripts/generate-validators.mjs --check
# ok
> archify@2.13.0 check:release-identity
> node ../scripts/check-release-identity.mjs
release identity: README_EN.md must remain byte-identical to README.md.
npm test is check:validators && check:release-identity && node test/golden.mjs && node ../scripts/run-tests.mjs, so this halts the whole suite at step two.
Cause
Commit 19213e1 ("docs: remove attribution section") removed the 4-line Attribution section from README.md and README_ZH.md, but not from README_EN.md:
$ git show --stat 19213e1
README.md | 4 ----
README_ZH.md | 4 ----
2 files changed, 8 deletions(-)
$ diff README.md README_EN.md
275a276,279
> ## Attribution
>
> Archify is a fork and rewrite of [Cocoon-AI/architecture-diagram-generator](https://github.com/Cocoon-AI/architecture-diagram-generator) v1.0. The original visual language remains credited to Cocoon AI; Archify 2.x adds themes, exports, typed renderers, validation, accessibility, interaction, and a unified CLI. Both projects use the MIT License.
>
Expected vs actual
- Expected:
npm test runs the suite on a clean checkout of main.
- Actual: it exits at
check:release-identity.
Fix
Remove the same four lines from README_EN.md.
Environment
- Archify
main at 19213e1, version 2.13.0
- Node.js v24.13.0
- Reproduced on a clean LF clone, so this is not a line-endings artifact.
Unrelated but adjacent: LF assumptions break the suite on Windows checkouts
Mentioning here rather than opening a second issue — say the word and I'll split it out.
On a Windows checkout with core.autocrlf=true (git's default there), 5 further tests fail on unmodified main that pass on an LF checkout, because they assert against LF directly. For example test/skill-metadata.test.mjs:10:
const frontmatter = skill.match(/^---\n([\s\S]*?)\n---/);
That cannot match ---\r\n, so the test reports "SKILL.md must start with YAML frontmatter" against a file whose frontmatter is fine.
A .gitattributes containing * text=auto eol=lf would pin the working tree to LF and make the suite behave identically on every platform. CI covers Node 18/20/22/24, but presumably only on Linux, so this is invisible there.
npm testcannot pass onmainat19213e1. The second gate fails before any test runs:npm testischeck:validators && check:release-identity && node test/golden.mjs && node ../scripts/run-tests.mjs, so this halts the whole suite at step two.Cause
Commit
19213e1("docs: remove attribution section") removed the 4-line Attribution section fromREADME.mdandREADME_ZH.md, but not fromREADME_EN.md:Expected vs actual
npm testruns the suite on a clean checkout ofmain.check:release-identity.Fix
Remove the same four lines from
README_EN.md.Environment
mainat19213e1, version 2.13.0Unrelated but adjacent: LF assumptions break the suite on Windows checkouts
Mentioning here rather than opening a second issue — say the word and I'll split it out.
On a Windows checkout with
core.autocrlf=true(git's default there), 5 further tests fail on unmodifiedmainthat pass on an LF checkout, because they assert against LF directly. For exampletest/skill-metadata.test.mjs:10:That cannot match
---\r\n, so the test reports "SKILL.md must start with YAML frontmatter" against a file whose frontmatter is fine.A
.gitattributescontaining* text=auto eol=lfwould pin the working tree to LF and make the suite behave identically on every platform. CI covers Node 18/20/22/24, but presumably only on Linux, so this is invisible there.