v0.297.0: burn-down round 2 — 24 small rows (R-591 R-568 R-567 R-363 R-547 R-10 R-552 R-251 R-104 R-619 R-362 R-675 R-256 R-257 R-240 R-365 R-425 R-565 R-564 R-603 R-454 R-208 R-457-swept) + the banner countdown and deepCopyStack twins; MinAgent 0.131.0
gates / gates (push) Failing after 50s
gates / gates (push) Failing after 50s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -2,6 +2,7 @@ package web
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sort"
|
||||
"strconv"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -137,8 +138,16 @@ func (s *Server) diskHealthRows(ctx context.Context) []DiskHealthRow {
|
||||
}
|
||||
s.diskHealth.mu.Unlock()
|
||||
|
||||
// R-568: the agent's response order is not stable between calls, so the card used to swap its
|
||||
// rows between visits. Order by the durable identity (diskKey) — the same key the persisted
|
||||
// state uses — so "the second disk" is the same disk on every visit. Stable, so two entries for
|
||||
// one physical disk keep their relative order. Pinned by TestDiskHealthRows_OrderIsStable.
|
||||
disks := make([]agentapi.DiskInfo, len(resp.Disks))
|
||||
copy(disks, resp.Disks)
|
||||
sort.SliceStable(disks, func(i, j int) bool { return diskKey(disks[i]) < diskKey(disks[j]) })
|
||||
|
||||
var rows []DiskHealthRow
|
||||
for _, d := range resp.Disks {
|
||||
for _, d := range disks {
|
||||
if !isPhysicalDisk(d) {
|
||||
continue
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user