chess-publisher v1.03.95 — 2026-08-30

TRF16 / TRF26 import-export interoperability point-fix

- Fixed TRF16 detection: record 182 is no longer treated as TRF26-only because current Swiss-Manager TRF16 files also contain 182.
- Import Tournament now preserves imported final ranks while the imported pairing/result snapshot remains unchanged. Any later result edit still invalidates rank reuse and recalculates standings normally.
- Import Tournament now preserves imported record 132 round dates for untouched TRF round-trips.
- Import Tournament now preserves original W/D/L played-but-unrated result codes and F/U/H/Z administrative bye semantics until the corresponding result is edited.
- Import Tournament now imports and validates TRF26 record 162 scoring, including PAB P=1.0 / 0.5 / 0.0; unsupported non-standard W/D/L scoring remains rejected.
- TRF16 remains a legacy format without record 162. Non-default PAB values continue to produce an explicit export warning rather than writing a non-standard 162 record.

QA / regression
- Real Swiss-Manager TRF26 reference: 47 players × 7 rounds — import/export PASS.
- Real Swiss-Manager TRF16 reference: 47 players × 7 rounds — import/export PASS.
- 15/15 focused TRF interoperability tests PASS after fix.
- 8/8 extended stress tests PASS, including 185 players × 9 rounds.
- 60-case dual-format fuzz = 120 TRF16/TRF26 import→export round-trips PASS.
- Mixed PAB / 1 BYE / 1/2 BYE / 0 BYE / forfeits PASS.
- Generic TRF26 Starting List (185 players, no round history) export/import PASS.
- Automatic TRF backup preserves a newly generated round with pending results PASS.
- UTF-8 BOM/LF import compatibility PASS; exported rating TRF remains CRLF without BOM.
- Malformed opponent reciprocity and duplicate Pairing No. are rejected.

Protected core
- Gacrux 1.9.57 binary unchanged.
- Swiss pairing / Gacrux pairing path unchanged.
- BBP independent checker path unchanged.
- Tie-Break calculation/checker logic unchanged.
- Chess-Results logic unchanged.
