Fix: clone-tag-only device strip (unblocks iPad cell) + classify_replay halt test#1081
Merged
Merged
Conversation
…sify_replay halt test Fast-follow to the #1080 SoD notes (both non-blocking; QA approved #1080 as-is). 1. strip_device_suffix now strips ONLY the (pool-N)/(fleet-N) CoreSimulator clone tag, preserving a MODEL parenthetical. The previous "strip last paren" conflated `iPad Pro (12.9-inch)` with `iPad Pro`, so a base `iPad Pro (12.9-inch)` recording would NOT normalize against a fleet `iPad Pro (12.9-inch) (pool-3)` sim → the C-ipad-26 cell would spuriously FAIL every state-dependent journey. Clone-tag-only matching fixes that and stays FAIL-safe (an unrecognized suffix is left intact → real mismatch, never a false-pass). iPhone normalization is unchanged. 2. Added a classify_replay test for `halt_reason` set with `ok=True` (a mid-run marks-count-drift halt) — exercises the `or halt_reason` clause independently of the ok=False path; must still FAIL even with some steps executed. 52 unit tests (was 49); 3 new (iPad strip, iPad normalize-on-fleet + different- model-None, classify halt-with-ok-true). **Not done:** the durable upstream fix is still simdrive normalizing the clone suffix in replay()'s own contract check (flagged, not blocking) — this is the campaign's runner-side fix. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
🧪 Unit Test Results📊 View Full Interactive Report ✅ ALL TESTS PASSED7205 tests | 7096 passed | 0 failed | 109 skipped | ⏱️ 16m 57s | 📊 98.5% | 📈 47.6% coverage Tests by Class — 826 classes (click to expand)
📊 Testing Coverage BreakdownUnit Test Line Coverage (testable surfaces): 47.6% Total coverage incl. UI/lifecycle: 45.8% (18 files excluded from testable denominator — see
🔗 Interactive HTML Report | CI Run Details 📦 Downloadable Artifacts
|
mauricecarrier7
added a commit
that referenced
this pull request
Jun 12, 2026
…ished, not a fixed pump) (#1082) CarPlayAudiobookBridgePresenterMigrationTests.testCarPlayBridge_dismissBookOnPhone_doesNotKillSession drove presenter.hasActiveSession via the session's async playbackStatePublisher (delivered on a .receive(on: DispatchQueue.main) sink) then asserted the precondition SYNCHRONOUSLY behind a fixed RunLoop.main.run(until: +0.01) pump. Under CI main-queue congestion 10ms is insufficient → the precondition intermittently red'd (coin-flipped #1079/#1081 CI re-runs; fail/fail/pass in-process fingerprint). Replace the fixed timer with an event-driven wait: subscribe to the @published $hasActiveSession.first(where: { $0 }) BEFORE send, then wait(for:[exp], timeout: 5.0). Fulfills on actual propagation (sub-15ms), deterministic. Verified deterministically RED with no-wait (2 failures) and GREEN across -test-iterations 3 after the fix. Test-only; zero production change. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fast-follow to the two non-blocking SoD notes on #1080 (merged).
1.
strip_device_suffixstrips only the(pool-N)/(fleet-N)clone tag, preserving model parens. The prior "strip last paren" conflatediPad Pro (12.9-inch)withiPad Pro, so a baseiPad Pro (12.9-inch)recording would not normalize against a fleetiPad Pro (12.9-inch) (pool-3)sim — the C-ipad-26 cell would spuriously FAIL every state-dependent journey. Clone-tag-only matching fixes it and stays FAIL-safe (unrecognized suffix → left intact → real mismatch, never a false-pass). iPhone behavior unchanged.2.
classify_replaytest forhalt_reasonset withok=True— isolates theor halt_reasonclause from theok=Falsepath; a mid-run halt with some steps executed must still FAIL.52 unit tests (3 new). bash -n clean.
🤖 Generated with Claude Code