Repository navigation
Description
BLOCKED — do not implement yet. Adding
windows-latesttoday turns CI red on every push (#1803: the failing set moves 7–9 run to run at the same commit). A matrix everyone ignores is worse than no matrix, because it manufactures the coverage illusion this work exists to remove. Sequence: resolve #1803 → triage the failing set → fix or explicitly quarantine each → then add the row and keep it green from day one.
The ask
.github/workflows/squad-ci.yml runs ubuntu-latest only. The single Windows matrix in the repo is squad-agents-ai-ci.yml, a .NET job that does not run the TypeScript suite. So no Windows signal exists for the main test suite.
Why this is worth doing — five instances from one night
This is filed as a list rather than a principle because the list is the argument. Each of these is a defect CI structurally could not see, and — the part that matters — each was found inside the remedy for the previous one.
| # | Defect | Where it hid |
|---|---|---|
| 1 | #1770 — repo-health reporters crashed on any finding message containing a backtick | The gate that catches unsafe git operations crashed precisely when it found one. A crashed reporter is indistinguishable from a clean run. |
| 2 | #1786 — the test fixture for the backtick fix triggered the backtick bug in CI | The fixture quoted a denylisted git command; the scanner wrapped it in backticks; the base-branch reporter died with the exact production error. |
| 3 | #1788 — a CRLF shebang made check-changeset-drift.test.ts load 0 of 8 tests |
Dead since #1481 (2026-07-19). Green on Linux the whole time. Then check-shebang-eol.mjs — the lint written to catch this — reproduced the bug on its first run, because it was authored with CRLF. |
| 4 | #1804 — *.js text eol=lf, added in #1790, created CRLF-blob churn in 2 files |
The gate shipped in the same PR reported passed: all 45 shebanged files are pinned to LF, exit 0, while app.js and rss.xml.js churned. The rule and its blind spot landed together. |
| 5 | #1805 — widening that gate from 45 → ~1800 files blew Windows' 32767-char command-line limit | A Windows-only crash of the gate itself, introduced inside the fix for a Windows-only defect. Invisible on Linux, where the same argv is fine. |
Every one was found by a human working on a Windows box. Not one was caught by CI, and #3 in particular sat green for a month.
The specific shape CI misses
EOL defects come in two mirror-image forms with an identical git status symptom, opposite causes, and opposite remedies — and the wrong remedy is silent in both directions:
| blob | worktree | remedy | wrong remedy does | |
|---|---|---|---|---|
.mjs (#1788) |
CRLF ❌ | LF | git add --renormalize |
re-checkout: nothing |
.snap (#1790) |
LF | CRLF ❌ | rewrite worktree as LF | --renormalize: stages nothing, appears to succeed |
That second row is the dangerous one: the obvious repair returns success while changing nothing. Linux never reaches either state.
Scope when unblocked
- Add
windows-latestto thetestjob matrix insquad-ci.yml. - Every failure triaged as fix or explicit quarantine with a linked issue — never a blanket skip.
- Treat "environmental" classifications with suspicion.
check-changeset-drift.test.tssat in that bucket and was nothing of the kind — it was a dead gate (check-changeset-drift.test.ts silently runs zero tests on Windows (shebang + CRLF) #1788). Assume the rest are similarly unexamined until each is individually re-derived.
Blocked by #1803. Related: #1770, #1786, #1788, #1793, #1804, #1805.
Activity
github-actions commentedon Aug 21, 2026
📋 Assigned to Booster (CI/CD Engineer)
Issue: #1806 — Add windows-latest to the squad-ci test matrix (BLOCKED on #1803)
Booster will pick this up in the next Copilot session.
github-actions commentedon Sep 10, 2026
🔄 Ralph — Auto-Triage
Assigned to: Flight
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 10, 2026
🔄 Ralph — Auto-Triage
Assigned to: Flight
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 11, 2026
🔄 Ralph — Auto-Triage
Assigned to: Flight
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 11, 2026
🔄 Ralph — Auto-Triage
Assigned to: Flight
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 11, 2026
🔄 Ralph — Auto-Triage
Assigned to: Flight
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 13, 2026
🔄 Ralph — Auto-Triage
Assigned to: architect
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 24, 2026
📋 Assigned to release-engineer (Release Engineer)
Issue: #1806 — Add windows-latest to the squad-ci test matrix (BLOCKED on #1803)
release-engineer will pick this up in the next Copilot session.