Skip to content

follow-ups after #169: analytics warm-up retry, drawer close-button contrast, IATA oldest test, RX fitToObserver race #172

Description

@dborup

Summary

Leftovers after PR #169 (merged as 2c7fbd6c), which fixed items 1–4 of #150. Item 5 of #150 was not in scope, and the independent review of #169 found three small P3 gaps. None is a regression from #169. Line numbers refer to master 2c7fbd6c.

Relates to #150, #169.

1. Analytics warm-up window vs. frontend retry (item 5 of #150)

Since #145, the RF/Topology/Channels endpoints answer 503 until the whole background load has finished, capped by the 60 s force-open. The frontend only retries for about 30 s, so on a slow startup a user can see the error state before the data is ready.

  • Fix: keep retrying until the server stops answering 503, honouring Retry-After. Alternatively, show a "still loading" state instead of an error.
  • Test: a delayed background load longer than 30 s. The page must end up showing data, not an error.

2. Drawer close button contrast in some customizer presets (P3)

#169 moved .nav-drawer-header onto --nav-bg2. The title (--nav-text) now passes everywhere, at 6.39:1 or better. The close button uses --nav-text-muted (public/nav-drawer.css ~94/127), and in four presets from customize-v2.js it stays below 4.5:1 against --nav-bg2:

Preset Contrast
forest / light 3.38
forest / dark 4.05
sunset / dark 3.03
mono / dark 3.67

All other preset/theme combinations measure 4.95 or more. The same palette weakness already exists in the navbar.

  • Fix: give the close button --nav-text, or adjust the four presets' muted colour.
  • Test: extend the contrast step in test-nav-drawer-1064-e2e.js to iterate over the presets, and require 4.5:1 for both the title and the close button.

3. IATA drop throttle: oldest refresh after a sweep is untested (P3)

In cmd/ingestor/iata_drop_warn.go (~105), removing t.oldest = oldest after the sweep leaves every IATA test green. The cost is performance only: a full table scan on each drop instead of an amortised one. Correctness is not affected.

4. RX Coverage: fitToObserver is not sequence-guarded (P3, pre-existing)

fitToObserver() (public/rx-coverage.js ~237) fetches and then calls fitBounds. #169's request sequence does not guard it, so if you switch days, or probably the observer or "All", while that fetch is in flight, the stale response still moves the map. This is the same class of bug as item 3 of #150.

Acceptance criteria

  • Each item has a test that fails on master 2c7fbd6c and passes with the fix.
  • Colours come from CSS variables only, with no hardcoded hex outside :root.
  • Fork guards in deploy.yml are unchanged: 9 × github.repository == 'Kpa-clawbot/CoreScope'.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions