Repository navigation
merge-train: read device failure records as written; a device failure is a devices problem, not a driver error (#91) - #205
Merged
Conversation
…l), strict otherwise; a device failure is a judge-devices problem with a count per case and its first details, not a driver error (#91)
…s; MQ-PREF is MQ-R2 and waits for MQ-R1 runtime and PNT1
… Chrome-proven outline geometry; a1 web, a2 native, unstacked)
…grew 1 MiB: spawnSync git ENOBUFS failed the landing proof)
Commands: pnpm regen
Commands: pnpm regen
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.
The bug (#91's landing): the driver failed #91 at stage
errorwith "packages/parity/out/device-failures-ios.json has an entry that is not { lane, case, dpr, node, kind }".The validator in
parseDeviceEvidence(scripts/merge-train-lib.ts) requirednodeto be a string. Butdevice-lanes.tswritesnode: nullfor a failure of a whole case, such as a device record or a missing dump. #91's iOS host timed out, givingdevice-recordfailures withcase "-"andnode null. So the run's own failures threw, and the driver reported a driver error instead of judging them.What changed:
parseDeviceEvidencenow accepts exactly the written shape,{ lane, case, dpr, node: string | null, kind, detail: string }. It stays strict about everything else: a wrong type or an unknown key throws, naming the entry's index and contents. Both committed master files (ios 57, android 86 entries) match the shape.deviceRunProblemsreports a failing lane readably:scripts/land.tsjudgeDevices: if the run's own records can't be read, that is now ajudge-devicesfailure with the reason, not a driver error. Master's records stay a driver error.What passed:
pnpm typecheckpassed.vitest run merge-train landpassed (123 tests)./tmp/dragon-land/packages/parity/out/device-failures-ios.json, plus INL1a 5/5 (C2): lowering inline boxes and <br>s, native runtime emit, 7 inline fixtures and lanes #91'sdevice-recordentry, rebuilt from its run log. Its detail, "the host did not finish: timed out after 1896 s waiting for the iOS host to finish", is verbatim. The tests cover:🤖 Generated with Claude Code