Phase 6 of the #391 migration — deliberately deferred until Apple removes xcresulttool --legacy, because the cross-backend differential (#450) only proves parity while both backends run, and it should keep running as long as it can.
Trigger: the toolchain-drift workflow (#392/#442) files/updates its drift issue when xcrun xcresulttool version stops reporting the legacy commands format version marker. That alarm is the signal to do this work — not before.
Scope when it fires:
- Remove the XCResultKit dependency from Package.swift / Package.resolved.
- Delete
Sources/XCTestHTMLReportCore/Classes/ResultReading/Legacy/ wholesale (LegacyResultReader + ResultFile, the only XCResultKit importers).
- Retire
DifferentialTests, KnownLossMasker, and the allow-list (their job is done); keep the modern-leg tests as the only suite.
- Simplify
ResultBackend: legacy becomes a clear error, auto = modern.
- The spec notes the failure-row hoist rule (R8) and legacy-shaped scaffold constraints become deletable at this point; the redesign may restore native nesting if it wants (see the spec's Task 12 execution rules).
- Drop the forced-modern CI leg (redundant once modern is the only backend).
No milestone on purpose — this lands on Apple's schedule, not ours. Refs #391, #450, #392.
Phase 6 of the #391 migration — deliberately deferred until Apple removes
xcresulttool --legacy, because the cross-backend differential (#450) only proves parity while both backends run, and it should keep running as long as it can.Trigger: the toolchain-drift workflow (#392/#442) files/updates its drift issue when
xcrun xcresulttool versionstops reporting thelegacy commands format versionmarker. That alarm is the signal to do this work — not before.Scope when it fires:
Sources/XCTestHTMLReportCore/Classes/ResultReading/Legacy/wholesale (LegacyResultReader + ResultFile, the only XCResultKit importers).DifferentialTests,KnownLossMasker, and the allow-list (their job is done); keep the modern-leg tests as the only suite.ResultBackend:legacybecomes a clear error,auto=modern.No milestone on purpose — this lands on Apple's schedule, not ours. Refs #391, #450, #392.