fix(review round 1): daemon PAT-header auth, job pruning, session-split batches, streaming tars, seed cleanup, ping/pong, byte caps, branch switch, slug --, ctx cancel, Init:true, pagination, latest/before events; web newest-window history + load-older, offline busy gate, staleness guards, memo store, auth probe, scroll key, focus-visible, draft restore, poll dedup; 106+181 tests, coverage 96.2%/95.1%+

This commit is contained in:
Raphael Westphal
2026-08-18 18:49:52 +02:00
parent 64e45e1a82
commit 6aac763563
25 changed files with 2564 additions and 959 deletions
+54
View File
@@ -85,6 +85,9 @@ func TestStoreCorruptRows(t *testing.T) {
if _, err := store.EventsAfter("s1", 0, 10); err == nil {
t.Fatal("EventsAfter with text seq must scan-error")
}
if _, err := store.EventsLatest("s1", 10); err == nil {
t.Fatal("EventsLatest with text seq must scan-error")
}
}
func TestStoreAppendEventDefaultPayload(t *testing.T) {
@@ -100,3 +103,54 @@ func TestStoreAppendEventDefaultPayload(t *testing.T) {
t.Fatalf("payload = %q, want {}", events[0].Payload)
}
}
func seedEvents(t *testing.T, store *Store, sessionID string, seqs ...int64) {
t.Helper()
for _, seq := range seqs {
if err := store.AppendEvent(Event{SessionID: sessionID, Seq: seq, TS: seq, Type: evAgentSettled, Payload: []byte(`{}`)}); err != nil {
t.Fatalf("append %d: %v", seq, err)
}
}
}
func TestStoreEventsLatestAndBefore(t *testing.T) {
store := openTestStore(t)
seedEvents(t, store, "s1", 1, 2, 3, 4, 5)
latest, err := store.EventsLatest("s1", 3)
if err != nil {
t.Fatalf("EventsLatest: %v", err)
}
if len(latest) != 3 {
t.Fatalf("latest = %d events, want 3", len(latest))
}
for i, want := range []int64{3, 4, 5} {
if latest[i].Seq != want {
t.Fatalf("latest[%d].Seq = %d, want %d (newest window, ascending)", i, latest[i].Seq, want)
}
}
before, err := store.EventsBefore("s1", 4, 2)
if err != nil {
t.Fatalf("EventsBefore: %v", err)
}
if len(before) != 2 {
t.Fatalf("before = %d events, want 2", len(before))
}
for i, want := range []int64{2, 3} {
if before[i].Seq != want {
t.Fatalf("before[%d].Seq = %d, want %d (newest below 4, ascending)", i, before[i].Seq, want)
}
}
// windows past the boundaries degrade cleanly
if all, _ := store.EventsLatest("s1", 100); len(all) != 5 {
t.Fatalf("latest over count = %d, want 5", len(all))
}
if none, _ := store.EventsBefore("s1", 1, 10); len(none) != 0 {
t.Fatalf("before 1 = %d events, want 0", len(none))
}
if missing, _ := store.EventsLatest("nope", 10); len(missing) != 0 {
t.Fatalf("latest unknown session = %d events, want 0", len(missing))
}
}