Skill update round trip / roundtrip (false, macos-latest, copy, 1.5.17) (push) Canceled after 0s
Skill update round trip / roundtrip (false, macos-latest, symlink, 1.5.17) (push) Canceled after 0s
Skill update round trip / roundtrip (false, ubuntu-latest, copy, 1.5.17) (push) Canceled after 0s
Skill update round trip / roundtrip (false, ubuntu-latest, symlink, 1.5.17) (push) Canceled after 0s
Skill update round trip / roundtrip (false, ubuntu-latest, symlink, latest) (push) Canceled after 0s
Skill update round trip / roundtrip (false, windows-latest, copy, 1.5.17) (push) Canceled after 0s
Skill update round trip / roundtrip (false, windows-latest, symlink, 1.5.17) (push) Canceled after 0s
Skill update round trip / roundtrip (true, macos-latest, copy, 1.5.17) (push) Canceled after 0s
Skill update round trip / roundtrip (true, macos-latest, symlink, 1.5.17) (push) Canceled after 0s
Skill update round trip / roundtrip (true, ubuntu-latest, copy, 1.5.17) (push) Canceled after 0s
Skill update round trip / roundtrip (true, ubuntu-latest, symlink, 1.5.17) (push) Canceled after 0s
Skill update round trip / roundtrip (true, windows-latest, copy, 1.5.17) (push) Canceled after 0s
Skill update round trip / roundtrip (true, windows-latest, symlink, 1.5.17) (push) Canceled after 0s
20 lines
897 B
JavaScript
20 lines
897 B
JavaScript
/** Resolve the one tab introduced by the harness. Ambiguity would make the
|
|
* post-crash input oracle capable of targeting an unrelated restored tab. */
|
|
export function selectCreatedTabId(beforeTabIds, afterTabIds) {
|
|
const before = new Set(beforeTabIds)
|
|
const created = afterTabIds.filter((tabId) => !before.has(tabId))
|
|
if (created.length !== 1) {
|
|
throw new Error(`expected exactly one created terminal tab, found ${created.length}`)
|
|
}
|
|
return created[0]
|
|
}
|
|
|
|
/** The canary rejects a respawned shell; the PID additionally proves that input
|
|
* reached the exact survivor whose liveness was checked during the crash. */
|
|
export function reattachSentinelMatches(raw, expectedCanary, expectedShellPid) {
|
|
const [pidPart, canaryPart, extraPart] = raw.trim().split('|')
|
|
return (
|
|
extraPart === undefined && canaryPart === expectedCanary && Number(pidPart) === expectedShellPid
|
|
)
|
|
}
|