Skip to content

fix: read sample paths with CRLF line endings - #75

Merged
steipete merged 1 commit into
mainfrom
fix/tsv-line-endings
Sep 16, 2026
Merged

steipete merged 1 commit into
mainfrom
fix/tsv-line-endings

Conversation

@steipete

Copy link
Copy Markdown
Contributor

What Problem This Solves

Fixes channel imports, surface imports, and RSS backfills failing with ENOENT when their sample-paths TSV uses Windows CRLF line endings.

User Impact

Operators can import LF or CRLF sample lists, including blank lines, optional columns, and filenames containing spaces.

Why This Change Was Made

The readers split only at LF, leaving a carriage return attached to the last path in each record. All four TSV readers now recognize CRLF record boundaries without trimming path content.

Evidence

  • Synthetic CLI regressions passed all seven LF cases and failed all seven CRLF cases before the fix; all 14 now pass.
  • Tests exercise one-column and full-column channel/surface lists, performance-event sidecars, RSS backfills, blank lines, and filenames with leading/trailing spaces. Backfill assertions verify RTT and copied records remain intact.
  • npm test: 220 tests passed. npm run check, per-file syntax checks, and actionlint -color=false passed.
  • Proof uses the actual Node CLI against synthetic artifacts, without live channel credentials.

@steipete
steipete merged commit 77b0e9d into main Sep 16, 2026
7 checks passed
@steipete

Copy link
Copy Markdown
Contributor Author

Merged as 77b0e9d.

Validation: npm test passed all 220 tests; npm run check, individual syntax checks for all 63 scripts, and actionlint -color=false passed locally. Before the repair, the seven synthetic LF CLI cases passed and all seven corresponding CRLF cases failed with missing-path errors. All 14 pass after the fix, including whitespace-preserving paths, optional columns, blank lines, performance sidecars, and RSS backfill integrity. Independent review found no actionable P0–P2 findings.

Exact PR head 3745c0a passed CI, CodeQL, and Main Surface RTT, including real loopback Gateway RPC and mocked browser/Gateway measurements and imports. No retries were needed. The CRLF regression proof itself uses synthetic artifacts through the actual Node CLIs.

@steipete
steipete deleted the fix/tsv-line-endings branch September 16, 2026 04:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant