{"numTotalTestSuites":136,"numPassedTestSuites":136,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":273,"numPassedTests":273,"numFailedTests":0,"numPendingTests":0,"numTodoTests":0,"snapshot":{"added":0,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0,"didUpdate":false},"startTime":1785768604583,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["AbandonedPlansTable"],"fullName":"AbandonedPlansTable renders honest metadata and restores a row","status":"passed","title":"renders honest metadata and restores a row","duration":226.59144300000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AbandonedPlansTable"],"fullName":"AbandonedPlansTable links the exact soft-delete empty state back to plans","status":"passed","title":"links the exact soft-delete empty state back to plans","duration":8.403153999999859,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768611592,"endTime":1785768611826.403,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/AbandonedPlansTable.test.tsx"},{"assertionResults":[{"ancestorTitles":["ActionsMenu"],"fullName":"ActionsMenu opens with Enter, cycles focus with arrows, selects, and renders a divider","status":"passed","title":"opens with Enter, cycles focus with arrows, selects, and renders a divider","duration":235.8054850000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ActionsMenu"],"fullName":"ActionsMenu closes on Escape and outside pointer interaction","status":"passed","title":"closes on Escape and outside pointer interaction","duration":34.91133999999988,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768610179,"endTime":1785768610449.9114,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/ActionsMenu.test.tsx"},{"assertionResults":[{"ancestorTitles":["AgentComposer"],"fullName":"AgentComposer disables sending while in flight and clears text on success","status":"passed","title":"disables sending while in flight and clears text on success","duration":248.22749799999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AgentComposer"],"fullName":"AgentComposer surfaces send errors inline and preserves the message","status":"passed","title":"surfaces send errors inline and preserves the message","duration":30.079287000000022,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768608550,"endTime":1785768608829.0793,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/AgentComposer.test.tsx"},{"assertionResults":[{"ancestorTitles":["AgentFeed"],"fullName":"AgentFeed sorts turn cards chronologically","status":"passed","title":"sorts turn cards chronologically","duration":49.490604000000076,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AgentFeed"],"fullName":"AgentFeed marks an unfinished live turn as in progress","status":"passed","title":"marks an unfinished live turn as in progress","duration":7.444013000000041,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AgentFeed"],"fullName":"AgentFeed renders an ended banner for historical activity","status":"passed","title":"renders an ended banner for historical activity","duration":9.769954999999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AgentFeed"],"fullName":"AgentFeed labels absent raw event detail without inventing a harness version gap","status":"passed","title":"labels absent raw event detail without inventing a harness version gap","duration":192.16492100000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AgentFeed"],"fullName":"AgentFeed renders hostile authoritative payload as text","status":"passed","title":"renders hostile authoritative payload as text","duration":17.48033200000009,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768608826,"endTime":1785768609102.4802,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/AgentFeed.test.tsx"},{"assertionResults":[{"ancestorTitles":["AgentMetaSidebar"],"fullName":"AgentMetaSidebar renders recorded metadata, the A9 gap, and no cost line","status":"passed","title":"renders recorded metadata, the A9 gap, and no cost line","duration":206.3228590000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768612953,"endTime":1785768613159.3228,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/AgentMetaSidebar.test.tsx"},{"assertionResults":[{"ancestorTitles":["AgentModeToggle"],"fullName":"AgentModeToggle switches between live and historical views","status":"passed","title":"switches between live and historical views","duration":182.0820510000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AgentModeToggle"],"fullName":"AgentModeToggle disables live mode for an ended attempt","status":"passed","title":"disables live mode for an ended attempt","duration":19.177472999999964,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768613939,"endTime":1785768614140.1775,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/AgentModeToggle.test.tsx"},{"assertionResults":[{"ancestorTitles":["AgentStatusBar"],"fullName":"AgentStatusBar queues restart for five seconds and supports undo or commit","status":"passed","title":"queues restart for five seconds and supports undo or commit","duration":193.78851699999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AgentStatusBar"],"fullName":"AgentStatusBar labels unsupported controls from explicit capability state","status":"passed","title":"labels unsupported controls from explicit capability state","duration":27.41996499999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AgentStatusBar"],"fullName":"AgentStatusBar queues an enabled kill behind confirmation undo","status":"passed","title":"queues an enabled kill behind confirmation undo","duration":13.748800999999958,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768609791,"endTime":1785768610025.7488,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/AgentStatusBar.test.tsx"},{"assertionResults":[{"ancestorTitles":["AmplificationSpark"],"fullName":"AmplificationSpark renders the newest ten gates in input order and caps the ring","status":"passed","title":"renders the newest ten gates in input order and caps the ring","duration":229.54738699999984,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AmplificationSpark"],"fullName":"AmplificationSpark renders paired compute and wall bars for every visible run","status":"passed","title":"renders paired compute and wall bars for every visible run","duration":11.370893000000024,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AmplificationSpark"],"fullName":"AmplificationSpark renders the median multiplier","status":"passed","title":"renders the median multiplier","duration":14.28064600000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AmplificationSpark"],"fullName":"AmplificationSpark excludes zero and invalid compute denominators from the median","status":"passed","title":"excludes zero and invalid compute denominators from the median","duration":11.455167999999958,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AmplificationSpark"],"fullName":"AmplificationSpark renders an honest warm-up gap for complete empty history","status":"passed","title":"renders an honest warm-up gap for complete empty history","duration":18.166651,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AmplificationSpark"],"fullName":"AmplificationSpark renders restart warm-up without claiming persisted history","status":"passed","title":"renders restart warm-up without claiming persisted history","duration":7.7553049999999075,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AmplificationSpark"],"fullName":"AmplificationSpark renders incomplete history as a gap even when returned samples exist","status":"passed","title":"renders incomplete history as a gap even when returned samples exist","duration":9.257445999999845,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768607079,"endTime":1785768607381.2573,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/AmplificationSpark.test.tsx"},{"assertionResults":[{"ancestorTitles":["AttentionPanel"],"fullName":"AttentionPanel renders three shared-grid attention rows","status":"passed","title":"renders three shared-grid attention rows","duration":183.34278499999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AttentionPanel"],"fullName":"AttentionPanel renders neutral empty state","status":"passed","title":"renders neutral empty state","duration":3.942019000000073,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AttentionPanel"],"fullName":"AttentionPanel renders agent actions as real links","status":"passed","title":"renders agent actions as real links","duration":25.649749999999813,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["AttentionPanel"],"fullName":"AttentionPanel makes every row span the panel grid tracks","status":"passed","title":"makes every row span the panel grid tracks","duration":15.03768500000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768612635,"endTime":1785768612863.0376,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/AttentionPanel.test.tsx"},{"assertionResults":[{"ancestorTitles":["BotTable"],"fullName":"BotTable renders one row per bot with its metrics","status":"passed","title":"renders one row per bot with its metrics","duration":57.10371299999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["BotTable"],"fullName":"BotTable shows a dash for null metrics on a down bot","status":"passed","title":"shows a dash for null metrics on a down bot","duration":11.842500999999857,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["BotTable"],"fullName":"BotTable renders the exact column headers","status":"passed","title":"renders the exact column headers","duration":16.11537999999996,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768614123,"endTime":1785768614208.1155,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/BotTable.test.tsx"},{"assertionResults":[{"ancestorTitles":["CiCoverageBanner"],"fullName":"CiCoverageBanner renders headline, action, and tooltip detail","status":"passed","title":"renders headline, action, and tooltip detail","duration":41.38106300000004,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768616470,"endTime":1785768616511.381,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/CiCoverageBanner.test.tsx"},{"assertionResults":[{"ancestorTitles":["ClusterQueue"],"fullName":"ClusterQueue renders tickets and wedge row","status":"passed","title":"renders tickets and wedge row","duration":60.50913700000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768615325,"endTime":1785768615385.509,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/ClusterQueue.test.tsx"},{"assertionResults":[{"ancestorTitles":["CriterionRow"],"fullName":"CriterionRow renders id, text, and the verdict badge","status":"passed","title":"renders id, text, and the verdict badge","duration":38.323204999999916,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CriterionRow"],"fullName":"CriterionRow renders an em dash when reachedAt is null","status":"passed","title":"renders an em dash when reachedAt is null","duration":4.254629000000023,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CriterionRow"],"fullName":"CriterionRow renders an em dash when reachedAt is omitted","status":"passed","title":"renders an em dash when reachedAt is omitted","duration":3.3585599999998976,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CriterionRow"],"fullName":"CriterionRow renders the reachedAt date string when present","status":"passed","title":"renders the reachedAt date string when present","duration":3.3979730000000927,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CriterionRow"],"fullName":"CriterionRow renders an evidence subline when evidence is present","status":"passed","title":"renders an evidence subline when evidence is present","duration":3.662861000000021,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CriterionRow"],"fullName":"CriterionRow renders no subline when evidence is absent","status":"passed","title":"renders no subline when evidence is absent","duration":2.4264539999999215,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768615293,"endTime":1785768615348.4265,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/CriterionRow.test.tsx"},{"assertionResults":[{"ancestorTitles":["DataCoveragePanel"],"fullName":"DataCoveragePanel renders every gap and its linked spec reference","status":"passed","title":"renders every gap and its linked spec reference","duration":184.42179099999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768611160,"endTime":1785768611344.4219,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/DataCoveragePanel.test.tsx"},{"assertionResults":[{"ancestorTitles":["DecisionDialog"],"fullName":"DecisionDialog holds abort for five seconds and commits exactly once on expiry","status":"passed","title":"holds abort for five seconds and commits exactly once on expiry","duration":208.2153569999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DecisionDialog"],"fullName":"DecisionDialog undoes abort without sending a decision","status":"passed","title":"undoes abort without sending a decision","duration":29.58953900000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DecisionDialog"],"fullName":"DecisionDialog decides non-abort options immediately","status":"passed","title":"decides non-abort options immediately","duration":23.565077999999858,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DecisionDialog"],"fullName":"DecisionDialog labels detail fields missing from the harness","status":"passed","title":"labels detail fields missing from the harness","duration":8.056076000000076,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768607203,"endTime":1785768607472.0562,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/DecisionDialog.test.tsx"},{"assertionResults":[{"ancestorTitles":["DecisionRow"],"fullName":"DecisionRow renders collapsed row chrome from the mockup","status":"passed","title":"renders collapsed row chrome from the mockup","duration":213.935469,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DecisionRow"],"fullName":"DecisionRow toggles expanded detail when the title row is clicked","status":"passed","title":"toggles expanded detail when the title row is clicked","duration":34.369974000000184,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DecisionRow"],"fullName":"DecisionRow shows expanded sections and fires option / free-text callbacks","status":"passed","title":"shows expanded sections and fires option / free-text callbacks","duration":43.703555999999935,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DecisionRow"],"fullName":"DecisionRow marks old waiting age and preserves free text in the error state","status":"passed","title":"marks old waiting age and preserves free text in the error state","duration":7.90335099999993,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768608835,"endTime":1785768609135.9033,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/DecisionRow.test.tsx"},{"assertionResults":[{"ancestorTitles":["DeckTable"],"fullName":"DeckTable derives header and responsive row cells from one column definition","status":"passed","title":"derives header and responsive row cells from one column definition","duration":228.68956900000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DeckTable"],"fullName":"DeckTable uses SortableHeaderCell for consistent aria-sort and direction changes","status":"passed","title":"uses SortableHeaderCell for consistent aria-sort and direction changes","duration":19.1320189999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768609865,"endTime":1785768610113.132,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/DeckTable.test.tsx"},{"assertionResults":[{"ancestorTitles":["DeckTooltip"],"fullName":"DeckTooltip renders bold and muted lines for a hovered target","status":"passed","title":"renders bold and muted lines for a hovered target","duration":187.74341000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DeckTooltip"],"fullName":"DeckTooltip repositions inside the viewport near the right edge","status":"passed","title":"repositions inside the viewport near the right edge","duration":14.48368800000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DeckTooltip"],"fullName":"DeckTooltip hides when the pointer leaves the target","status":"passed","title":"hides when the pointer leaves the target","duration":9.93759,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768610097,"endTime":1785768610309.9375,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/DeckTooltip.test.tsx"},{"assertionResults":[{"ancestorTitles":["DistanceToDone"],"fullName":"DistanceToDone renders verified counts, cells, ETA, fix-loop share, and truth note","status":"passed","title":"renders verified counts, cells, ETA, fix-loop share, and truth note","duration":172.50762999999984,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DistanceToDone"],"fullName":"DistanceToDone renders labeled gaps without metric numbers when ETA and fix-loop data are absent","status":"passed","title":"renders labeled gaps without metric numbers when ETA and fix-loop data are absent","duration":6.023946000000024,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768612853,"endTime":1785768613031.024,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/DistanceToDone.test.tsx"},{"assertionResults":[{"ancestorTitles":["FilterInput"],"fullName":"FilterInput forwards text changes and exposes a clear affordance only when populated","status":"passed","title":"forwards text changes and exposes a clear affordance only when populated","duration":197.224291,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768611554,"endTime":1785768611751.2244,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/FilterInput.test.tsx"},{"assertionResults":[{"ancestorTitles":["HostLogsModal"],"fullName":"HostLogsModal renders log lines in a monospace scrollable body","status":"passed","title":"renders log lines in a monospace scrollable body","duration":31.10889800000018,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["HostLogsModal"],"fullName":"HostLogsModal shows loading, empty, and error states honestly","status":"passed","title":"shows loading, empty, and error states honestly","duration":147.54425200000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["HostLogsModal"],"fullName":"HostLogsModal invokes onClose and onRefresh","status":"passed","title":"invokes onClose and onRefresh","duration":41.131304,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768609892,"endTime":1785768610111.1313,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/HostLogsModal.test.tsx"},{"assertionResults":[{"ancestorTitles":["IconButton"],"fullName":"IconButton exposes its label, tooltip, hit target, and fixed 16px icon slot","status":"passed","title":"exposes its label, tooltip, hit target, and fixed 16px icon slot","duration":186.63113899999985,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768614011,"endTime":1785768614197.631,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/IconButton.test.tsx"},{"assertionResults":[{"ancestorTitles":["IdleTimer"],"fullName":"IdleTimer renders the A10 gap without starting a fake clock","status":"passed","title":"renders the A10 gap without starting a fake clock","duration":35.58372199999985,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["IdleTimer"],"fullName":"IdleTimer renders Working at its threshold boundary","status":"passed","title":"renders Working at its threshold boundary","duration":5.580150000000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["IdleTimer"],"fullName":"IdleTimer renders No progress at its threshold boundary","status":"passed","title":"renders No progress at its threshold boundary","duration":3.663375999999971,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["IdleTimer"],"fullName":"IdleTimer renders Watchdog recovering at its threshold boundary","status":"passed","title":"renders Watchdog recovering at its threshold boundary","duration":2.844376000000011,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["IdleTimer"],"fullName":"IdleTimer renders Ended at its threshold boundary","status":"passed","title":"renders Ended at its threshold boundary","duration":4.7443020000000615,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["IdleTimer"],"fullName":"IdleTimer ticks once per second when watchdog data is present","status":"passed","title":"ticks once per second when watchdog data is present","duration":4.924646000000166,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768615341,"endTime":1785768615398.9246,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/IdleTimer.test.tsx"},{"assertionResults":[{"ancestorTitles":["InboxItem"],"fullName":"InboxItem renders title, subtitle, and both actions","status":"passed","title":"renders title, subtitle, and both actions","duration":178.75799800000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["InboxItem"],"fullName":"InboxItem fires the action callback for the clicked button","status":"passed","title":"fires the action callback for the clicked button","duration":22.98819400000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["InboxItem"],"fullName":"InboxItem maps dot=red to bg-danger","status":"passed","title":"maps dot=red to bg-danger","duration":3.6803070000000844,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["InboxItem"],"fullName":"InboxItem maps dot=amber to bg-warning","status":"passed","title":"maps dot=amber to bg-warning","duration":3.5065470000001824,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["InboxItem"],"fullName":"InboxItem maps dot=blue to bg-accent","status":"passed","title":"maps dot=blue to bg-accent","duration":4.114388999999846,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768612513,"endTime":1785768612726.1145,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/InboxItem.test.tsx"},{"assertionResults":[{"ancestorTitles":["KpiTile"],"fullName":"KpiTile formats a *Ms tile value as a duration","status":"passed","title":"formats a *Ms tile value as a duration","duration":34.326983000000155,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["KpiTile"],"fullName":"KpiTile renders a non-Ms tile value as a plain number","status":"passed","title":"renders a non-Ms tile value as a plain number","duration":23.165848000000096,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["KpiTile"],"fullName":"KpiTile renders every real tile from the forensics fixture without crashing","status":"passed","title":"renders every real tile from the forensics fixture without crashing","duration":19.90977299999986,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768615158,"endTime":1785768615234.9097,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/KpiTile.test.tsx"},{"assertionResults":[{"ancestorTitles":["KvPanel"],"fullName":"KvPanel renders every row label and value","status":"passed","title":"renders every row label and value","duration":46.222958999999946,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["KvPanel"],"fullName":"KvPanel applies the err intent color to a failing row","status":"passed","title":"applies the err intent color to a failing row","duration":6.054682000000184,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["KvPanel"],"fullName":"KvPanel defaults to neutral color when intent is omitted","status":"passed","title":"defaults to neutral color when intent is omitted","duration":4.424901000000091,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768615396,"endTime":1785768615453.4248,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/KvPanel.test.tsx"},{"assertionResults":[{"ancestorTitles":["LaneBar"],"fullName":"LaneBar maps every returned job to one segment without hook-order violations","status":"passed","title":"maps every returned job to one segment without hook-order violations","duration":30.29927100000009,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LaneBar"],"fullName":"LaneBar stripes only the infra-classified job when jobs are complete","status":"passed","title":"stripes only the infra-classified job when jobs are complete","duration":11.723750999999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LaneBar"],"fullName":"LaneBar keeps returned lanes visible under jobs incomplete and suppresses striping","status":"passed","title":"keeps returned lanes visible under jobs incomplete and suppresses striping","duration":8.714371000000028,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LaneBar"],"fullName":"LaneBar renders a named empty lane state","status":"passed","title":"renders a named empty lane state","duration":4.810639000000037,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768616324,"endTime":1785768616379.8105,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/LaneBar.test.tsx"},{"assertionResults":[{"ancestorTitles":["LaneSegment"],"fullName":"LaneSegment attaches exactly one tooltip target with job name and duration","status":"passed","title":"attaches exactly one tooltip target with job name and duration","duration":32.13981599999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LaneSegment"],"fullName":"LaneSegment uses the semantic success lane color","status":"passed","title":"uses the semantic success lane color","duration":3.499368000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LaneSegment"],"fullName":"LaneSegment uses the semantic failure lane color","status":"passed","title":"uses the semantic failure lane color","duration":2.842384999999922,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LaneSegment"],"fullName":"LaneSegment uses the semantic running lane color","status":"passed","title":"uses the semantic running lane color","duration":3.4161119999998846,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LaneSegment"],"fullName":"LaneSegment uses the semantic queued lane color","status":"passed","title":"uses the semantic queued lane color","duration":2.564352999999983,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LaneSegment"],"fullName":"LaneSegment suppresses infra striping when jobs are incomplete","status":"passed","title":"suppresses infra striping when jobs are incomplete","duration":3.8639129999999113,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768614259,"endTime":1785768614307.864,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/LaneSegment.test.tsx"},{"assertionResults":[{"ancestorTitles":["LimitMeter"],"fullName":"LimitMeter renders percent and cap ETA for a warn-tier account","status":"passed","title":"renders percent and cap ETA for a warn-tier account","duration":44.56011000000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LimitMeter"],"fullName":"LimitMeter renders percent only when there is no cap ETA","status":"passed","title":"renders percent only when there is no cap ETA","duration":5.885508999999956,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LimitMeter"],"fullName":"LimitMeter uses the warning fill above warnAt","status":"passed","title":"uses the warning fill above warnAt","duration":5.061390000000074,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LimitMeter"],"fullName":"LimitMeter uses the success fill below warnAt","status":"passed","title":"uses the success fill below warnAt","duration":5.041619999999966,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LimitMeter"],"fullName":"LimitMeter renders a dash when percent is null","status":"passed","title":"renders a dash when percent is null","duration":5.780799999999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768614151,"endTime":1785768614217.7808,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/LimitMeter.test.tsx"},{"assertionResults":[{"ancestorTitles":["LiveDuration"],"fullName":"LiveDuration ticks elapsed time once per minute and clears its interval","status":"passed","title":"ticks elapsed time once per minute and clears its interval","duration":48.255089,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["LiveDuration"],"fullName":"LiveDuration renders an honest coverage gap when start time is unavailable","status":"passed","title":"renders an honest coverage gap when start time is unavailable","duration":3.823904000000084,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768616425,"endTime":1785768616477.824,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/LiveDuration.test.tsx"},{"assertionResults":[{"ancestorTitles":["MachineCard"],"fullName":"MachineCard renders host name, load, and capability probes","status":"passed","title":"renders host name, load, and capability probes","duration":260.761352,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["MachineCard"],"fullName":"MachineCard renders enrolling state for a joining host","status":"passed","title":"renders enrolling state for a joining host","duration":7.823949000000084,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["MachineCard"],"fullName":"MachineCard marks workstation spill state","status":"passed","title":"marks workstation spill state","duration":6.024938999999904,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768607502,"endTime":1785768607777.025,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/MachineCard.test.tsx"},{"assertionResults":[{"ancestorTitles":["MachineDetailModal"],"fullName":"MachineDetailModal shows per-core load, memory, network, and disk for a healthy host","status":"passed","title":"shows per-core load, memory, network, and disk for a healthy host","duration":63.47127499999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["MachineDetailModal"],"fullName":"MachineDetailModal shows critical temperature banner only when pkg >= crit","status":"passed","title":"shows critical temperature banner only when pkg >= crit","duration":20.848508000000038,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["MachineDetailModal"],"fullName":"MachineDetailModal invokes onAction for enabled offload buttons","status":"passed","title":"invokes onAction for enabled offload buttons","duration":129.6964049999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["MachineDetailModal"],"fullName":"MachineDetailModal disables host-scoped actions without a machine and blocks while pending","status":"passed","title":"disables host-scoped actions without a machine and blocks while pending","duration":39.484059000000116,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["MachineDetailModal"],"fullName":"MachineDetailModal enables host-logs without treating it as host-scoped offload","status":"passed","title":"enables host-logs without treating it as host-scoped offload","duration":16.864972999999964,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["MachineDetailModal"],"fullName":"MachineDetailModal renders accessible action errors adjacent to the action group","status":"passed","title":"renders accessible action errors adjacent to the action group","duration":12.007389000000103,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768605812,"endTime":1785768606095.0073,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/MachineDetailModal.test.tsx"},{"assertionResults":[{"ancestorTitles":["MapCanvas"],"fullName":"MapCanvas renders nodes, inspector for the selected node, and SVG edges","status":"passed","title":"renders nodes, inspector for the selected node, and SVG edges","duration":187.45923900000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["MapCanvas"],"fullName":"MapCanvas switches inspector content when another node is selected","status":"passed","title":"switches inspector content when another node is selected","duration":28.46168899999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768608887,"endTime":1785768609102.4617,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/MapCanvas.test.tsx"},{"assertionResults":[{"ancestorTitles":["MapNode"],"fullName":"MapNode renders title, chips, and pulse state","status":"passed","title":"renders title, chips, and pulse state","duration":46.708642000000054,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["MapNode"],"fullName":"MapNode calls onSelect with the node id when clicked","status":"passed","title":"calls onSelect with the node id when clicked","duration":121.54737699999987,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768612858,"endTime":1785768613026.5474,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/MapNode.test.tsx"},{"assertionResults":[{"ancestorTitles":["OffloadControl"],"fullName":"OffloadControl renders state machine, kv rows, probes, and selected host label","status":"passed","title":"renders state machine, kv rows, probes, and selected host label","duration":211.354875,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["OffloadControl"],"fullName":"OffloadControl disables host-scoped actions until a host is selected","status":"passed","title":"disables host-scoped actions until a host is selected","duration":26.655471000000034,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["OffloadControl"],"fullName":"OffloadControl invokes onAction and blocks duplicate submission while pending","status":"passed","title":"invokes onAction and blocks duplicate submission while pending","duration":34.20673000000011,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["OffloadControl"],"fullName":"OffloadControl disables quarantine when required command is absent and surfaces action errors","status":"passed","title":"disables quarantine when required command is absent and surfaces action errors","duration":11.577608000000055,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768608545,"endTime":1785768608829.5776,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/OffloadControl.test.tsx"},{"assertionResults":[{"ancestorTitles":["PhaseBars"],"fullName":"PhaseBars renders all six bucket labels from the real attribution payload","status":"passed","title":"renders all six bucket labels from the real attribution payload","duration":56.993093000000044,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PhaseBars"],"fullName":"PhaseBars sorts rows by totalMs descending, with the largest bucket at 100% bar width","status":"passed","title":"sorts rows by totalMs descending, with the largest bucket at 100% bar width","duration":130.25300600000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PhaseBars"],"fullName":"PhaseBars shows duration and share-of-total percent for each bucket","status":"passed","title":"shows duration and share-of-total percent for each bucket","duration":10.25870400000008,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768612843,"endTime":1785768613040.2588,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/PhaseBars.test.tsx"},{"assertionResults":[{"ancestorTitles":["PlanRunListRow"],"fullName":"PlanRunListRow renders verified run chips and absolute-time tooltip data","status":"passed","title":"renders verified run chips and absolute-time tooltip data","duration":191.2572929999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanRunListRow"],"fullName":"PlanRunListRow omits absent sequence and zero active-agent values","status":"passed","title":"omits absent sequence and zero active-agent values","duration":6.802212999999938,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanRunListRow"],"fullName":"PlanRunListRow selects from the row button while Open remains navigation","status":"passed","title":"selects from the row button while Open remains navigation","duration":25.793183,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanRunListRow"],"fullName":"PlanRunListRow omits the timestamp instead of crashing when updatedAtMs is not finite","status":"passed","title":"omits the timestamp instead of crashing when updatedAtMs is not finite","duration":6.374201999999968,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768608803,"endTime":1785768609033.3743,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/PlanRunListRow.test.tsx"},{"assertionResults":[{"ancestorTitles":["PlanTable"],"fullName":"PlanTable shares one width-aware column source and toggles text sort with aria-sort","status":"passed","title":"shares one width-aware column source and toggles text sort with aria-sort","duration":337.2320440000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanTable"],"fullName":"PlanTable keeps missing dates last in both directions","status":"passed","title":"keeps missing dates last in both directions","duration":80.19149599999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanTable"],"fullName":"PlanTable sorts runs needing attention above failed runs without hiding failed actions","status":"passed","title":"sorts runs needing attention above failed runs without hiding failed actions","duration":50.31858700000021,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanTable"],"fullName":"PlanTable shows active running plans before failed plans by default","status":"passed","title":"shows active running plans before failed plans by default","duration":12.690066999999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768605845,"endTime":1785768606325.6902,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/PlanTable.test.tsx"},{"assertionResults":[{"ancestorTitles":["PlanTableRow"],"fullName":"PlanTableRow opens from row click while Open remains navigation","status":"passed","title":"opens from row click while Open remains navigation","duration":247.89421800000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanTableRow"],"fullName":"PlanTableRow shows running duration only for running rows","status":"passed","title":"shows running duration only for running rows","duration":8.751951999999847,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanTableRow"],"fullName":"PlanTableRow shows a collapsed-attempts badge only when a plan has relaunches","status":"passed","title":"shows a collapsed-attempts badge only when a plan has relaunches","duration":6.842433999999912,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanTableRow"],"fullName":"PlanTableRow renders no attempts badge for a single-launch plan","status":"passed","title":"renders no attempts badge for a single-launch plan","duration":5.744514999999865,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanTableRow"],"fullName":"PlanTableRow omits the duplicate Open run action and fires abandon from the trash control","status":"passed","title":"omits the duplicate Open run action and fires abandon from the trash control","duration":29.507573999999977,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanTableRow"],"fullName":"PlanTableRow uses the shared failed category for row actions","status":"passed","title":"uses the shared failed category for row actions","duration":18.587037999999893,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanTableRow"],"fullName":"PlanTableRow does not expose failed actions when needs-you is the rendered category","status":"passed","title":"does not expose failed actions when needs-you is the rendered category","duration":5.10125099999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanTableRow"],"fullName":"PlanTableRow disables unresolved harness actions with the pinned gap tooltip","status":"passed","title":"disables unresolved harness actions with the pinned gap tooltip","duration":20.43172299999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PlanTableRow"],"fullName":"PlanTableRow folds more than two actions into a menu with abandon last","status":"passed","title":"folds more than two actions into a menu with abandon last","duration":45.34119399999986,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768607309,"endTime":1785768607697.3413,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/PlanTableRow.test.tsx"},{"assertionResults":[{"ancestorTitles":["PrQueueTable"],"fullName":"PrQueueTable sorts by age descending by default and toggles deterministically","status":"passed","title":"sorts by age descending by default and toggles deterministically","duration":245.650801,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PrQueueTable"],"fullName":"PrQueueTable renders a Repo column for all scope and omits it for single-repo scope","status":"passed","title":"renders a Repo column for all scope and omits it for single-repo scope","duration":163.70174500000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PrQueueTable"],"fullName":"PrQueueTable expands checks independently for duplicate PR numbers across repositories","status":"passed","title":"expands checks independently for duplicate PR numbers across repositories","duration":35.846841999999924,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PrQueueTable"],"fullName":"PrQueueTable renders conflict, train membership, stale, and unknown states honestly","status":"passed","title":"renders conflict, train membership, stale, and unknown states honestly","duration":14.23775599999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PrQueueTable"],"fullName":"PrQueueTable keeps returned checks visible but suppresses passing rollups when checks are incomplete","status":"passed","title":"keeps returned checks visible but suppresses passing rollups when checks are incomplete","duration":27.69431799999984,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PrQueueTable"],"fullName":"PrQueueTable renders complete failed, pending, and passing check rollups","status":"passed","title":"renders complete failed, pending, and passing check rollups","duration":19.25717399999985,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PrQueueTable"],"fullName":"PrQueueTable labels every incomplete repository while retaining its rows","status":"passed","title":"labels every incomplete repository while retaining its rows","duration":18.67453300000011,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PrQueueTable"],"fullName":"PrQueueTable resets expansion and sorts deterministically when a PR head OID changes","status":"passed","title":"resets expansion and sorts deterministically when a PR head OID changes","duration":42.20455600000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PrQueueTable"],"fullName":"PrQueueTable distinguishes complete empty scope from incomplete empty scope","status":"passed","title":"distinguishes complete empty scope from incomplete empty scope","duration":2.881505999999945,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768605823,"endTime":1785768606393.8816,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/PrQueueTable.test.tsx"},{"assertionResults":[{"ancestorTitles":["ProjectGroupRow"],"fullName":"ProjectGroupRow renders non-zero metrics, severity stripe, activity, and expanded children","status":"passed","title":"renders non-zero metrics, severity stripe, activity, and expanded children","duration":237.62699799999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ProjectGroupRow"],"fullName":"ProjectGroupRow omits zero chips, handles missing activity, and toggles","status":"passed","title":"omits zero chips, handles missing activity, and toggles","duration":26.253621000000066,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768611264,"endTime":1785768611528.2537,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/ProjectGroupRow.test.tsx"},{"assertionResults":[{"ancestorTitles":["RateLimitDialog"],"fullName":"RateLimitDialog renders a healthy wrapper as read-only","status":"passed","title":"renders a healthy wrapper as read-only","duration":36.21676000000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RateLimitDialog"],"fullName":"RateLimitDialog renders limited scope and resolves wait, retry, and switch payloads","status":"passed","title":"renders limited scope and resolves wait, retry, and switch payloads","duration":244.791745,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768605771,"endTime":1785768606051.7917,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/RateLimitDialog.test.tsx"},{"assertionResults":[{"ancestorTitles":["RemoteJobsTable"],"fullName":"RemoteJobsTable renders job rows with stage and rc","status":"passed","title":"renders job rows with stage and rc","duration":53.492184999999836,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768616441,"endTime":1785768616494.4922,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/RemoteJobsTable.test.tsx"},{"assertionResults":[{"ancestorTitles":["RepoCiStrip"],"fullName":"RepoCiStrip selects All by default and scopes it to null","status":"passed","title":"selects All by default and scopes it to null","duration":223.174843,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RepoCiStrip"],"fullName":"RepoCiStrip marks and scopes only the exact selected repository","status":"passed","title":"marks and scopes only the exact selected repository","duration":52.47404000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RepoCiStrip"],"fullName":"RepoCiStrip renders All first and preserves repository input order","status":"passed","title":"renders All first and preserves repository input order","duration":12.290054000000055,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RepoCiStrip"],"fullName":"RepoCiStrip renders a named gap state for an empty repository list","status":"passed","title":"renders a named gap state for an empty repository list","duration":10.931887999999844,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768607130,"endTime":1785768607428.932,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/RepoCiStrip.test.tsx"},{"assertionResults":[{"ancestorTitles":["RepoCiTile"],"fullName":"RepoCiTile renders real metrics and scopes to its repository","status":"passed","title":"renders real metrics and scopes to its repository","duration":167.29199599999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RepoCiTile"],"fullName":"RepoCiTile does not mark the 30-minute boundary as act-red","status":"passed","title":"does not mark the 30-minute boundary as act-red","duration":4.900628000000097,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RepoCiTile"],"fullName":"RepoCiTile renders the prsComplete gap independently","status":"passed","title":"renders the prsComplete gap independently","duration":4.754292000000078,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RepoCiTile"],"fullName":"RepoCiTile renders the queueComplete gap independently","status":"passed","title":"renders the queueComplete gap independently","duration":5.081150999999863,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RepoCiTile"],"fullName":"RepoCiTile renders the refsComplete gap independently","status":"passed","title":"renders the refsComplete gap independently","duration":6.521189000000049,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RepoCiTile"],"fullName":"RepoCiTile renders the trainRunsComplete gap independently","status":"passed","title":"renders the trainRunsComplete gap independently","duration":3.765716999999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RepoCiTile"],"fullName":"RepoCiTile suppresses operator warnings when poll rotation serves cached data","status":"passed","title":"suppresses operator warnings when poll rotation serves cached data","duration":3.8727830000000267,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RepoCiTile"],"fullName":"RepoCiTile preserves simultaneous completeness gaps with actionable copy","status":"passed","title":"preserves simultaneous completeness gaps with actionable copy","duration":12.07493599999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RepoCiTile"],"fullName":"RepoCiTile renders labeled gaps for unknown metrics instead of zeroes","status":"passed","title":"renders labeled gaps for unknown metrics instead of zeroes","duration":11.556706000000077,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768607502,"endTime":1785768607722.5566,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/RepoCiTile.test.tsx"},{"assertionResults":[{"ancestorTitles":["RunCommandBar"],"fullName":"RunCommandBar disables unsupported controls with an explicit capability reason","status":"passed","title":"disables unsupported controls with an explicit capability reason","duration":219.97400599999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunCommandBar"],"fullName":"RunCommandBar invokes supported pause and kill controls","status":"passed","title":"invokes supported pause and kill controls","duration":36.49569199999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunCommandBar"],"fullName":"RunCommandBar cancels a pending kill confirmation with Escape","status":"passed","title":"cancels a pending kill confirmation with Escape","duration":19.671738000000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunCommandBar"],"fullName":"RunCommandBar omits a missing update timestamp without fabricating a value","status":"passed","title":"omits a missing update timestamp without fabricating a value","duration":4.762312999999949,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768611255,"endTime":1785768611535.7622,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/RunCommandBar.test.tsx"},{"assertionResults":[{"ancestorTitles":["RunLanes"],"fullName":"RunLanes renders a landed X/Y summary for a done run","status":"passed","title":"renders a landed X/Y summary for a done run","duration":51.49838799999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunLanes"],"fullName":"RunLanes renders a crashed outcome in the danger color with a cap marker","status":"passed","title":"renders a crashed outcome in the danger color with a cap marker","duration":12.110552999999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunLanes"],"fullName":"RunLanes attributes each segment to its own run by time range, not to every run","status":"passed","title":"attributes each segment to its own run by time range, not to every run","duration":7.120402999999897,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768615220,"endTime":1785768615291.1204,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/RunLanes.test.tsx"},{"assertionResults":[{"ancestorTitles":["RunTable"],"fullName":"RunTable renders one row per run with every real payload field","status":"passed","title":"renders one row per run with every real payload field","duration":54.62242400000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunTable"],"fullName":"RunTable colors the status dot green for done and red for crash","status":"passed","title":"colors the status dot green for done and red for crash","duration":8.854890999999952,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunTable"],"fullName":"RunTable renders the exact column headers","status":"passed","title":"renders the exact column headers","duration":23.059795000000122,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768614154,"endTime":1785768614240.0598,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/RunTable.test.tsx"},{"assertionResults":[{"ancestorTitles":["RunnerFleetStrip"],"fullName":"RunnerFleetStrip renders runner registration scope when provided","status":"passed","title":"renders runner registration scope when provided","duration":38.464227000000164,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunnerFleetStrip"],"fullName":"RunnerFleetStrip renders a busy runner current job and repository","status":"passed","title":"renders a busy runner current job and repository","duration":150.9640280000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunnerFleetStrip"],"fullName":"RunnerFleetStrip renders an idle runner without a current assignment","status":"passed","title":"renders an idle runner without a current assignment","duration":17.709963000000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunnerFleetStrip"],"fullName":"RunnerFleetStrip renders explicit unknown and suppresses unverified current assignment values","status":"passed","title":"renders explicit unknown and suppresses unverified current assignment values","duration":19.383309000000054,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunnerFleetStrip"],"fullName":"RunnerFleetStrip shows aggregate occupancy and head-of-line saturation for a non-empty all-busy online fleet","status":"passed","title":"shows aggregate occupancy and head-of-line saturation for a non-empty all-busy online fleet","duration":16.428834999999935,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunnerFleetStrip"],"fullName":"RunnerFleetStrip does not show saturation at the exact fifteen-minute threshold","status":"passed","title":"does not show saturation at the exact fifteen-minute threshold","duration":5.133346999999958,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunnerFleetStrip"],"fullName":"RunnerFleetStrip labels incomplete runner data, hides aggregate occupancy, and suppresses saturation","status":"passed","title":"labels incomplete runner data, hides aggregate occupancy, and suppresses saturation","duration":7.661282000000028,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunnerFleetStrip"],"fullName":"RunnerFleetStrip renders a complete empty fleet without saturation","status":"passed","title":"renders a complete empty fleet without saturation","duration":3.2484150000000227,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["RunnerFleetStrip"],"fullName":"RunnerFleetStrip never renders saturation for an all-offline fleet with an old queue","status":"passed","title":"never renders saturation for an all-offline fleet with an old queue","duration":5.390102999999954,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768607479,"endTime":1785768607743.3901,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/RunnerFleetStrip.test.tsx"},{"assertionResults":[{"ancestorTitles":["ScoreCard"],"fullName":"ScoreCard renders value/max and an up trend","status":"passed","title":"renders value/max and an up trend","duration":43.45104900000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ScoreCard"],"fullName":"ScoreCard sizes the progress bar fill to value/max","status":"passed","title":"sizes the progress bar fill to value/max","duration":5.86280899999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ScoreCard"],"fullName":"ScoreCard renders a flat trend in the danger color","status":"passed","title":"renders a flat trend in the danger color","duration":4.7180419999999685,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ScoreCard"],"fullName":"ScoreCard honors a custom bar color class","status":"passed","title":"honors a custom bar color class","duration":4.745728999999983,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768615347,"endTime":1785768615405.7458,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/ScoreCard.test.tsx"},{"assertionResults":[{"ancestorTitles":["SectionCard"],"fullName":"SectionCard renders the title and children","status":"passed","title":"renders the title and children","duration":35.43287800000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["SectionCard"],"fullName":"SectionCard renders a link action when href is given","status":"passed","title":"renders a link action when href is given","duration":143.64546999999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["SectionCard"],"fullName":"SectionCard renders a button action and fires onClick when no href is given","status":"passed","title":"renders a button action and fires onClick when no href is given","duration":26.5409709999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["SectionCard"],"fullName":"SectionCard renders a titleBadge inline with the title","status":"passed","title":"renders a titleBadge inline with the title","duration":4.873731999999791,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768610232,"endTime":1785768610441.8738,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/SectionCard.test.tsx"},{"assertionResults":[{"ancestorTitles":["SectionHeading"],"fullName":"SectionHeading renders the title and subtitle","status":"passed","title":"renders the title and subtitle","duration":34.58999999999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["SectionHeading"],"fullName":"SectionHeading renders a link action when href is given","status":"passed","title":"renders a link action when href is given","duration":144.56600900000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["SectionHeading"],"fullName":"SectionHeading renders a button action and fires onClick when no href is given","status":"passed","title":"renders a button action and fires onClick when no href is given","duration":22.553398000000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["SectionHeading"],"fullName":"SectionHeading renders a titleBadge inline with the title","status":"passed","title":"renders a titleBadge inline with the title","duration":4.1310869999999795,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768612619,"endTime":1785768612825.131,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/SectionHeading.test.tsx"},{"assertionResults":[{"ancestorTitles":["SegmentDetailDrawer"],"fullName":"SegmentDetailDrawer renders when, who, note, evidence, and the agent link","status":"passed","title":"renders when, who, note, evidence, and the agent link","duration":190.51257799999985,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768613853,"endTime":1785768614043.5127,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/SegmentDetailDrawer.test.tsx"},{"assertionResults":[{"ancestorTitles":["SettingsTable"],"fullName":"SettingsTable renders aligned settings columns without pills","status":"passed","title":"renders aligned settings columns without pills","duration":207.98631699999987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["SettingsTable"],"fullName":"SettingsTable expands all five layers inline and saves a run override","status":"passed","title":"expands all five layers inline and saves a run override","duration":94.19200799999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["SettingsTable"],"fullName":"SettingsTable renders immutable layers without inputs","status":"passed","title":"renders immutable layers without inputs","duration":30.456673999999794,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["SettingsTable"],"fullName":"SettingsTable renders the B5 gap state","status":"passed","title":"renders the B5 gap state","duration":2.4740110000000186,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768605807,"endTime":1785768606142.474,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/SettingsTable.test.tsx"},{"assertionResults":[{"ancestorTitles":["StaleBadge"],"fullName":"StaleBadge renders nothing when the adapter status is not stale","status":"passed","title":"renders nothing when the adapter status is not stale","duration":15.480027000000064,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["StaleBadge"],"fullName":"StaleBadge renders a stale pill with the age since lastSuccess when stale","status":"passed","title":"renders a stale pill with the age since lastSuccess when stale","duration":19.02447600000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["StaleBadge"],"fullName":"StaleBadge renders bare \"stale\" when lastSuccess is unknown","status":"passed","title":"renders bare \"stale\" when lastSuccess is unknown","duration":3.2803019999998924,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768616520,"endTime":1785768616557.2803,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/StaleBadge.test.tsx"},{"assertionResults":[{"ancestorTitles":["StatusChip"],"fullName":"StatusChip uses one category mapping for status labels and styling","status":"passed","title":"uses one category mapping for status labels and styling","duration":28.062440999999808,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768616563,"endTime":1785768616591.0625,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/StatusChip.test.tsx"},{"assertionResults":[{"ancestorTitles":["SwimlaneTrace"],"fullName":"SwimlaneTrace positions segments and the NOW playhead on the shared absolute clock","status":"passed","title":"positions segments and the NOW playhead on the shared absolute clock","duration":51.43204800000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["SwimlaneTrace"],"fullName":"SwimlaneTrace constrains a condition band to its declared lanes","status":"passed","title":"constrains a condition band to its declared lanes","duration":22.25502400000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["SwimlaneTrace"],"fullName":"SwimlaneTrace reports zoom and segment interactions","status":"passed","title":"reports zoom and segment interactions","duration":172.1950740000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768611464,"endTime":1785768611710.195,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/SwimlaneTrace.test.tsx"},{"assertionResults":[{"ancestorTitles":["TrainCard"],"fullName":"TrainCard builds member links exclusively from the train repository","status":"passed","title":"builds member links exclusively from the train repository","duration":181.19110699999987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard reruns a complete failed gate with exact string mutation args","status":"passed","title":"reruns a complete failed gate with exact string mutation args","duration":40.01257399999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard cancels a complete gating gate","status":"passed","title":"cancels a complete gating gate","duration":13.9710120000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard cancels a complete rerunning gate","status":"passed","title":"cancels a complete rerunning gate","duration":13.638716000000159,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard opens a valid GitHub pull URL without invoking a mutation","status":"passed","title":"opens a valid GitHub pull URL without invoking a mutation","duration":18.580514999999878,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard omits Open for invalid URL http://github.com/alexcodeplace/multideal/pull/901","status":"passed","title":"omits Open for invalid URL http://github.com/alexcodeplace/multideal/pull/901","duration":18.636528,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard omits Open for invalid URL https://user:secret@github.com/alexcodeplace/multideal/pull/901","status":"passed","title":"omits Open for invalid URL https://user:secret@github.com/alexcodeplace/multideal/pull/901","duration":6.543381999999838,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard omits Open for invalid URL https://github.example/alexcodeplace/multideal/pull/901","status":"passed","title":"omits Open for invalid URL https://github.example/alexcodeplace/multideal/pull/901","duration":5.458339999999907,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard omits Open for invalid URL not a URL","status":"passed","title":"omits Open for invalid URL not a URL","duration":5.5637239999998656,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard renders the refsComplete gap and suppresses every action","status":"passed","title":"renders the refsComplete gap and suppresses every action","duration":4.293981000000031,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard renders the prsComplete gap and suppresses every action","status":"passed","title":"renders the prsComplete gap and suppresses every action","duration":3.303263999999899,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard renders the trainRunsComplete gap and suppresses every action","status":"passed","title":"renders the trainRunsComplete gap and suppresses every action","duration":3.255247000000054,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard renders the trainsComplete gap and suppresses every action","status":"passed","title":"renders the trainsComplete gap and suppresses every action","duration":3.874309999999923,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard uses completeness precedence over a stale state gap","status":"passed","title":"uses completeness precedence over a stale state gap","duration":4.529891000000134,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard renders nullable state gap and deterministic blocking line","status":"passed","title":"renders nullable state gap and deterministic blocking line","duration":13.271231999999827,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard keeps incomplete jobs visible but suppresses blocking, classification, striping, and recommendation claims","status":"passed","title":"keeps incomplete jobs visible but suppresses blocking, classification, striping, and recommendation claims","duration":15.400413000000071,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard does not recommend an eligible rerun without exact infra classification","status":"passed","title":"does not recommend an eligible rerun without exact infra classification","duration":9.07481800000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard labels null complete-job classification as unknown","status":"passed","title":"labels null complete-job classification as unknown","duration":4.735597999999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainCard"],"fullName":"TrainCard renders actions independently from one another","status":"passed","title":"renders actions independently from one another","duration":8.653573999999935,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768605825,"endTime":1785768606199.6536,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/TrainCard.test.tsx"},{"assertionResults":[{"ancestorTitles":["TrainRail"],"fullName":"TrainRail uses the canonical total order and excludes merged trains","status":"passed","title":"uses the canonical total order and excludes merged trains","duration":39.50341800000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainRail"],"fullName":"TrainRail uses repo ascending only after all train keys tie","status":"passed","title":"uses repo ascending only after all train keys tie","duration":5.099332000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainRail"],"fullName":"TrainRail renders each scoped repository completeness gap even with returned trains","status":"passed","title":"renders each scoped repository completeness gap even with returned trains","duration":24.235595999999987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainRail"],"fullName":"TrainRail never renders the complete empty state for a zero-return truncated-ref repository","status":"passed","title":"never renders the complete empty state for a zero-return truncated-ref repository","duration":3.081073999999944,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainRail"],"fullName":"TrainRail renders the exact complete empty state","status":"passed","title":"renders the exact complete empty state","duration":2.026149999999916,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainRail"],"fullName":"TrainRail renders exactly one tooltip layer per rail composition","status":"passed","title":"renders exactly one tooltip layer per rail composition","duration":5.967771999999968,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["TrainRail"],"fullName":"TrainRail keeps duplicate PR numbers scoped to each train repo for links and mutations","status":"passed","title":"keeps duplicate PR numbers scoped to each train repo for links and mutations","duration":156.54568800000015,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768608443,"endTime":1785768608679.5457,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/TrainRail.test.tsx"},{"assertionResults":[{"ancestorTitles":["UndoToast"],"fullName":"UndoToast dismisses a plain toast after 3.4 seconds","status":"passed","title":"dismisses a plain toast after 3.4 seconds","duration":41.372703,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UndoToast"],"fullName":"UndoToast ticks the countdown and commits only on expiry","status":"passed","title":"ticks the countdown and commits only on expiry","duration":131.63386600000013,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UndoToast"],"fullName":"UndoToast dismisses and restores through undo without committing","status":"passed","title":"dismisses and restores through undo without committing","duration":11.870016000000078,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UndoToast"],"fullName":"UndoToast commits a pending action before replacing it","status":"passed","title":"commits a pending action before replacing it","duration":4.7380829999999605,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UndoToast"],"fullName":"UndoToast enforces the five-second minimum","status":"passed","title":"enforces the five-second minimum","duration":9.148703000000069,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768611519,"endTime":1785768611718.1487,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/UndoToast.test.tsx"},{"assertionResults":[{"ancestorTitles":["VerdictBadge"],"fullName":"VerdictBadge renders the uppercased label for a verdict","status":"passed","title":"renders the uppercased label for a verdict","duration":30.478054000000157,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["VerdictBadge"],"fullName":"VerdictBadge carries the danger token class for a broken verdict","status":"passed","title":"carries the danger token class for a broken verdict","duration":3.328670000000102,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["VerdictBadge"],"fullName":"VerdictBadge distinguishes works from broken by color class","status":"passed","title":"distinguishes works from broken by color class","duration":4.0539309999999205,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768616494,"endTime":1785768616532.054,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/VerdictBadge.test.tsx"},{"assertionResults":[{"ancestorTitles":["WrapperCapacity"],"fullName":"WrapperCapacity renders healthy wrappers and opens the selected wrapper","status":"passed","title":"renders healthy wrappers and opens the selected wrapper","duration":171.07729700000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["WrapperCapacity"],"fullName":"WrapperCapacity renders and ticks a real limited-wrapper countdown","status":"passed","title":"renders and ticks a real limited-wrapper countdown","duration":18.7692669999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["WrapperCapacity"],"fullName":"WrapperCapacity renders no countdown when B7 data is unavailable","status":"passed","title":"renders no countdown when B7 data is unavailable","duration":16.195645000000013,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768610245,"endTime":1785768610450.1956,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/WrapperCapacity.test.tsx"},{"assertionResults":[{"ancestorTitles":["ci-coverage"],"fullName":"ci-coverage suppresses operator warnings for poll-budget rotation","status":"passed","title":"suppresses operator warnings for poll-budget rotation","duration":3.4728390000000218,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ci-coverage"],"fullName":"ci-coverage does not surface run-history coverage gaps","status":"passed","title":"does not surface run-history coverage gaps","duration":0.7434009999999489,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ci-coverage"],"fullName":"ci-coverage prioritizes train ref gaps before PR gaps","status":"passed","title":"prioritizes train ref gaps before PR gaps","duration":0.40761699999995926,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768617465,"endTime":1785768617469.7434,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/ci-coverage.test.ts"},{"assertionResults":[{"ancestorTitles":["formatRelativeTime"],"fullName":"formatRelativeTime formats just now","status":"passed","title":"formats just now","duration":2.323980000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["formatRelativeTime"],"fullName":"formatRelativeTime formats minutes","status":"passed","title":"formats minutes","duration":0.3026520000000801,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["formatRelativeTime"],"fullName":"formatRelativeTime formats hours","status":"passed","title":"formats hours","duration":0.17210599999998522,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["formatRelativeTime"],"fullName":"formatRelativeTime formats days","status":"passed","title":"formats days","duration":0.2319800000000214,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["formatRelativeTime"],"fullName":"formatRelativeTime formats future minutes","status":"passed","title":"formats future minutes","duration":0.26892799999995987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["formatRelativeTime"],"fullName":"formatRelativeTime formats future hours","status":"passed","title":"formats future hours","duration":0.24032799999997678,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["formatRelativeTime"],"fullName":"formatRelativeTime formats future days","status":"passed","title":"formats future days","duration":0.1456790000000865,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["compareOptional"],"fullName":"compareOptional sorts missing values last in both directions","status":"passed","title":"sorts missing values last in both directions","duration":0.3149949999999535,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768617477,"endTime":1785768617481.315,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/format.test.ts"},{"assertionResults":[{"ancestorTitles":["assignProjectColor"],"fullName":"assignProjectColor assigns 12 distinct hues on the first rotation, each a wheel-unique hue","status":"passed","title":"assigns 12 distinct hues on the first rotation, each a wheel-unique hue","duration":2.438387999999918,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["assignProjectColor"],"fullName":"assignProjectColor keeps consecutively-assigned hues at least 2 wheel steps apart","status":"passed","title":"keeps consecutively-assigned hues at least 2 wheel steps apart","duration":0.7932540000000472,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["assignProjectColor"],"fullName":"assignProjectColor shifts lightness/chroma on the second rotation by >= 20 ΔE vs the same hue in rotation 0","status":"passed","title":"shifts lightness/chroma on the second rotation by >= 20 ΔE vs the same hue in rotation 0","duration":1.329409999999939,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["assignProjectColor"],"fullName":"assignProjectColor uses a manual override from collector config passthrough instead of the wheel","status":"passed","title":"uses a manual override from collector config passthrough instead of the wheel","duration":0.8630019999999377,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["assignProjectColors"],"fullName":"assignProjectColors assigns colors positionally, honoring per-id overrides","status":"passed","title":"assigns colors positionally, honoring per-id overrides","duration":0.416561999999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768617369,"endTime":1785768617375.4165,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/project-colors.test.ts"},{"assertionResults":[{"ancestorTitles":["resolveActionForFailClass"],"fullName":"resolveActionForFailClass maps wrapper-engine-down to its honest action","status":"passed","title":"maps wrapper-engine-down to its honest action","duration":3.123034999999959,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["resolveActionForFailClass"],"fullName":"resolveActionForFailClass maps gate-failed to its honest action","status":"passed","title":"maps gate-failed to its honest action","duration":0.3590510000000222,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["resolveActionForFailClass"],"fullName":"resolveActionForFailClass maps review-failed to its honest action","status":"passed","title":"maps review-failed to its honest action","duration":0.268338999999969,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["resolveActionForFailClass"],"fullName":"resolveActionForFailClass maps provider-quota to its honest action","status":"passed","title":"maps provider-quota to its honest action","duration":0.27701200000001336,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["resolveActionForFailClass"],"fullName":"resolveActionForFailClass maps unknown-class to its honest action","status":"passed","title":"maps unknown-class to its honest action","duration":0.2712789999999359,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["resolveActionForFailClass"],"fullName":"resolveActionForFailClass maps undefined to its honest action","status":"passed","title":"maps undefined to its honest action","duration":0.2025269999999182,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["resolveActionForFailClass"],"fullName":"resolveActionForFailClass never maps non-wrapper failures to retry","status":"passed","title":"never maps non-wrapper failures to retry","duration":0.671903000000043,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768617468,"endTime":1785768617473.6719,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/resolve-action.test.ts"},{"assertionResults":[{"ancestorTitles":["useSseStream"],"fullName":"useSseStream stays idle and never fetches when url is null","status":"passed","title":"stays idle and never fetches when url is null","duration":13.228251999999884,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["useSseStream"],"fullName":"useSseStream parses split multiline events and ignores heartbeat comments","status":"passed","title":"parses split multiline events and ignores heartbeat comments","duration":58.440597000000025,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["useSseStream"],"fullName":"useSseStream parses multiple frames delivered in one chunk","status":"passed","title":"parses multiple frames delivered in one chunk","duration":53.95932999999991,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["useSseStream"],"fullName":"useSseStream terminates malformed data frames before later events or reconnects","status":"passed","title":"terminates malformed data frames before later events or reconnects","duration":76.29865300000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["useSseStream"],"fullName":"useSseStream resumes from the last delivered opaque ID and suppresses replayed events","status":"passed","title":"resumes from the last delivered opaque ID and suppresses replayed events","duration":55.45656000000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["useSseStream"],"fullName":"useSseStream reconnects after the exact fixture frame closes and resumes its opaque cursor","status":"passed","title":"reconnects after the exact fixture frame closes and resumes its opaque cursor","duration":61.33910700000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["useSseStream"],"fullName":"useSseStream reconnects after the stream ends, until unmounted","status":"passed","title":"reconnects after the stream ends, until unmounted","duration":73.32489699999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["useSseStream"],"fullName":"useSseStream does not reconnect after consumer closes the stream with url null","status":"passed","title":"does not reconnect after consumer closes the stream with url null","duration":23.647422000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["useSseStream"],"fullName":"useSseStream closes an oversized delimiter-free frame without reconnecting","status":"passed","title":"closes an oversized delimiter-free frame without reconnecting","duration":78.44945999999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["useSseStream"],"fullName":"useSseStream accepts a frame exactly at the byte bound","status":"passed","title":"accepts a frame exactly at the byte bound","duration":56.16793699999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["useSseStream"],"fullName":"useSseStream closes an oversized delimited frame before parsing or delivery","status":"passed","title":"closes an oversized delimited frame before parsing or delivery","duration":72.65145299999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["useSseStream"],"fullName":"useSseStream aborts the in-flight request on unmount","status":"passed","title":"aborts the in-flight request on unmount","duration":1.0925029999998515,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785768605771,"endTime":1785768606396.0925,"status":"passed","message":"","name":"/home/user/builds/od-fix3-5eb4a7a1014f/packages/deck-ui/src/useSseStream.test.ts"}]}