Commit Graph
1 Commits
Author SHA1 Message Date
a4af0285fd fix(#1692): parallelize loadObservers + loadPackets in /packets init() (#1693)
## Summary

Fixes #1692 — `public/packets.js::init()` serialized `loadObservers()`
and `loadPackets()`, blocking `/api/packets` behind `/api/observers`. On
loaded CI runners the cumulative wait pushed first-row render to 25–40s,
which is the root cause of the persistent #1662 slideover flake and a
real operator-felt latency on slow links.

## Fix (Option B — `Promise.all`)

```js
// before
await loadObservers();
loadPackets();

// after
await Promise.all([loadObservers(), loadPackets()]);
```

Option B chosen over fire-and-forget (Option A) because `renderLeft()`
synchronously iterates `observers` to build the observer-filter dropdown
(`for (const o of observers)` at packets.js:1636). With Option A the
menu would render empty on first paint and not refresh until the next
user-triggered render. Promise.all preserves the existing render
contract while halving worst-case latency — the two fetches now run in
parallel and the slower one gates `renderLeft()`.

## TDD

- **RED `c7184188`** — `test-issue-1692-packets-init-parallel-e2e.js`
stubs `/api/observers` with a 4s delay via `page.route()`, asserts first
`tr[data-hash]` < 3000ms. Fails on serial init (blocked at 4s).
- **GREEN `903020c5`** — init refactor + wire test into
`.github/workflows/deploy.yml` deploy job.

## Out of scope (separate PR per #1692 acceptance #2/#3)

The 30s row-wait timeout and 3-iter flake-gate in
`test-slideover-1056-e2e.js` + `deploy.yml` were stop-gaps for the
underlying serialization. They stay in this PR — they should be reverted
in a follow-up after operators confirm the latency fix holds in
production.

## Preflight

`bash ~/.openclaw/skills/pr-preflight/scripts/run-all.sh origin/master`
→ all gates pass (PII, branch scope, red commit, CSS vars, LIKE-on-JSON,
sync/async migration, XSS).

## Browser verification

Local headless chromium on this sandbox crashes on the heavy `/packets`
page (small `/dev/shm`, ARM constraints documented in AGENTS.md). Test
is gated on CI runner where the harness runs.

---------

Co-authored-by: CoreScope Bot <bot@corescope.local>
Co-authored-by: clawbot <clawbot@users.noreply.github.com>
Co-authored-by: Kpa-clawbot <bot@kpa-clawbot>
2026-06-12 16:23:08 -07:00