Axiomancer
Changelog

May 6, 2026

Per-port water density, live course-anomaly detection, restored POI collection, and APRS backfills across Overwatch and Locus.

May 6, 2026OverwatchFeature

Per-port water density ingestion for hydrostatic cargo estimates

The water density adjustment in cargo validation now runs on real, port-specific surface measurements instead of a global default. A new monthly ingestion seeds one density reading per port from a tiered NOAA chain: real-time temperature and salinity from NOAA CO-OPS stations for US ports with co-located gauges (currently New Orleans and Houston), NOAA World Ocean Atlas 2023 annual surface climatology via NCEI ERDDAP for all other ports globally, and published per-country climatological constants as a final fallback when both NOAA endpoints are unreachable. Density is computed from temperature and salinity using the UNESCO-80 seawater equation of state at surface pressure and stored per port at H3 resolution 8 along with its source identifier, so hydrostatic cargo estimates remain reproducible against the exact density value that was used at the time. The job runs on the 1st of each month at 03:30 UTC, with rows older than 90 days pruned automatically. Hydrostatic-equipped vessels arriving at brackish or low-salinity ports — Rotterdam, the Elbe, the Mississippi delta — should see the largest accuracy gains; deep-saltwater ports were already close to the previous default. No action is required on your part. The full source chain and tier table are documented under cargo validation methodology.

May 6, 2026LocusFix

POI collection back on a 6-hourly schedule

The collect-pois and collect-pois-premium ingestion crons that populate poi_snapshots had been pinned to a once-a-year schedule, which caused the Nearby POIs rail in the Explorer, the GET /api/pois endpoint, and the POI counts in GET /api/enrich and the discovery and intelligence endpoints to gradually drift up to 35+ days stale. Both crons now run at 00:00, 06:00, 12:00, and 18:00 UTC daily, matching the rest of the Locus collector slot rotation. POI inventory freshness on the data freshness table returns to its documented <7 days window, and the Explorer's POI accordion will reflect new openings and closures within hours rather than months. No action is required on your part — backfill of the gap window is in progress.

May 6, 2026LocusCodexUpdate

APRS backfills scheduled for three zero-coverage tables

The three Locus catalog tables still showing 0% APRS envelope coverage on the envelope coverage dashboarduscis_h1b_employers, usda_nass_county_crops, and muckrock_foia_requests — now have nightly backfill jobs scheduled in the 03:30–03:40 UTC low-traffic window. The backfill functions themselves were already in production; today's change wires them into pg_cron so they actually run. Coverage on these tables will climb toward 100% over the next several nightly cycles, after which they'll join the rest of the Locus catalog in the aprs.civic, aprs.commodity, and aprs.permits profile rosters with full envelope-driven joinability and incremental sync. No action is required on your part; the dashboard is the canonical place to watch progress.

May 6, 2026LocusUpdate

Mobile, SEO, security, and analytics polish on Locus

locus.axiomancer.io received the same professionalization pass Overwatch and Axiomancer landed yesterday — a stricter Content-Security-Policy, Strict-Transport-Security with preload, and a Permissions-Policy that disables camera, microphone, geolocation, and FLoC by default; refreshed alt text and tap-target sizing on the marketing surface (mobile links and the Get Access button now meet the 44 px minimum); a PWA manifest with branded icon and theme color so the site installs cleanly on mobile home screens; and analytics gating that suppresses PostHog session recording outside of production and on /admin and /settings routes. The Locus marketing pages also now declare neighborhood analytics and demographic data as additional keywords for discovery. No user-facing behavior changes for authenticated workflows — the Explorer, dashboard, and API surface are unchanged.

May 6, 2026OverwatchFix

Course-alteration anomaly detection now live in production

The course-alteration anomaly detector — first announced in the April 26–May 2 weekly recap and integrated into the unified alerts inbox on May 16 — was wired into the wrong worker entry point and had been silently skipped on every position update since launch. The detector is now invoked from the production ingest worker, and course_alteration events are flowing into axiom_events for the first time.

Behavior matches what was already documented:

  • Fires when an underway vessel deviates 45° or more from its rolling 6-hour mean heading
  • Suppresses detections within 10 km of any port zone, so legitimate maneuvering near port doesn't generate noise
  • Ignores stationary vessels (≤ 0.5 kt)
  • Per-vessel 6-hour deduplication window, so a single sustained turn produces one event rather than a flood

Detected counts are also reported on the worker's cockpit heartbeat as course_alterations_detected, so the /workers view in the cockpit can confirm the detector is healthy at a glance. The companion worker_inactive self-monitor shipped on May 9 will now resolve as events resume landing, and the Ghost Vessels reverse-COLREGS inference cron — which depends on course_alteration as its input signal — has live data to reason over for the first time. No action is required on your part. If you previously subscribed a watchlist or your full fleet to the Course alteration alert-rule template, those rules will start dispatching as events arrive.

On this page