Readme

START — Software Transient Array Radio Telescope

Executive Summary

START — Software Transient Array Radio Telescope Published 2026-10-03 UTC at https://sol.system42.one/start. The browser fetches real TART observations through /api/start.

START — Software Transient Array Radio Telescope

Published 2026-10-03 UTC at https://sol.system42.one/start.

Implementation and scope

The browser fetches real TART observations through /api/start. No synthetic observations or local fixture fallback are used in production. Ten stations are listed from the official OpenAPI server registry inspected on publication day. Availability varies independently of registry membership. Bangladesh is the initial selection because it returned current data during verification; Ghana, Kenya, and Rhodes also responded.

Static UI: /home/david/random/www/start/{index.html,style.css,app.js}.
Relay: /home/david/random/bin/start_api.py.
Service: sol-start-api.service, enabled in the user systemd manager, loopback port 8926.
Routing: existing bin/Caddyfile.pkd_share; exact /start serves the page, /start/ redirects, /api/start/ strips the prefix and forwards to the relay. Root crawler spine and Sol Start menu link to START.

The relay allows fixed station codes and fixed upstream GET endpoints only. No arbitrary URL forwarding, telescope settings, credentials, account creation, or external writes. Metadata fetches run concurrently; each response is capped at 2 MB, with connect/read timeouts and redirects disabled. One response per station is shared in memory for 30 seconds, including errors. No continuous polling happens without viewers; active visible browser tabs poll every 60 seconds. Cache is ephemeral. Browser JSON downloads provide explicit durable snapshots with observation timestamp, retrieval time, upstream URL, raw visibility record, positions, info, calibration, and metadata errors.

The current visual preview supports station gain/phase correction and timestamp-matched object markers. See the object-observation update below. The original 2026-10-03 launch used an uncalibrated, geographically unvalidated preview; that original method has been superseded. Raw matrices remain available.

Freshness uses observation vs relay retrieval time plus browser elapsed time, avoiding dependence on a visitor's wall clock. Five minutes is the UI freshness threshold; future timestamps beyond 30 seconds and missing/invalid timestamps are not fresh. Failed updates retain the last observation visibly marked unavailable. Changing station clears the previous frame and all pair hover values.

Operations

  • Restart relay: systemctl --user restart sol-start-api.service
  • Inspect: journalctl --user -u sol-start-api.service -n 30 --no-pager
  • Health: curl https://sol.system42.one/api/start/health
  • Registry: curl https://sol.system42.one/api/start/stations
  • Observation: curl https://sol.system42.one/api/start/observation/bd-iub
  • UI state checks: node /home/david/random/docs/start/checks/check-state.cjs
  • Browser: https://sol.system42.one/start or local origin http://127.0.0.1:8888/start

Refresh the fixed registry against https://api.elec.ac.nz/docs/openapi.json when deployments change. Do not label listed stations as online without receiving their observations. Mauritius and several other sites timed out during initial checks.

Rollback: restore the pre-edit Caddy config from /home/david/start-work/Caddyfile.before, validate and reload Caddy, disable the relay, and remove only the START menu/index entries if retiring the page. Complete pre-edit snapshot 20261003T044551Z reports 5137 items and missing_sources: []; restore root /home/david/backups/sol37-runtime. Retain new files for provenance rather than deleting them as part of routine rollback.

Verification

  • Caddy validation, Python compilation, JavaScript syntax: passed.
  • Public HTTPS page and observation API: HTTP 200; live response had 276 baselines and all metadata endpoints succeeded.
  • Real browser through local origin: fresh observation, rendered Fourier preview and matrix, phase selection, pause control, Ghana station switch, Mauritius timeout with empty plots, and recovery selection verified.
  • Download button produced /home/david/Downloads/start-bd-iub-2026-10-03T05-02-40-502488Z.json; parsed and verified 276 rows, station, timestamps, positions, gain metadata, and source attribution.
  • At 390 px viewport, DOM measured document and body width 375 px (scrollbar accounted for); no page horizontal overflow. Archive table scrolls within its container.
  • State regression script covers fresh, stale, malformed timestamp, and failed-refresh retention without labeling retained data fresh.
  • Unknown station returns 404. Relay health and Caddy service active.
  • The in-app browser encountered QUIC/navigation errors on the public host during testing. Public HTTPS was verified with HTTP requests; interactive verification used the same files and relay through the local origin. No TLS/security settings were weakened.

Sources and access corrections

TART: https://tart.elec.ac.nz/ and https://api.elec.ac.nz/docs/.
NRAO: https://science.nrao.edu/observing/policies/docs/manuals/users-policy/referencemanual-all-pages permits unauthenticated non-proprietary data access. Do not say all NRAO downloads require an account. ALMA identities/proprietary access can be separate.
LOFAR: https://science.astron.nl/telescopes/lofar/access-to-lofar-data/lofar-data-archive/ distinguishes public metadata from staging/downloading with LTA privileges.
SARAO: https://archive.sarao.ac.za/docs/Group_Management_Guide.pdf documents project group permission requirements.
CASDA: https://astroquery.readthedocs.io/en/latest/casda/casda.html requires OPAL authentication to stage data, but documents unauthenticated retrieval of staged download URLs.

Final backup coverage

Post-deployment runtime snapshot 20261003T050517Z: 5148 items, missing_sources: []. This snapshot contains START web assets but the backup's fixed source list does not include the new relay script and service unit. A separate verified restore bundle covers those new dependencies plus the UI, runbook, active Caddy config, and pre-edit Caddy config:
/mnt/sol-data/archives/start/start-20261003T0506Z.tar.gz.
Restore only reviewed paths from this bundle; validate Caddy before any reload. Avoid replacing unrelated subsequent site changes.

Object-observation update — 2026-10-03

User-requested prominent targets: Orion Nebula (M42) and the Sun. Additional common targets: Moon, Jupiter, Saturn, Crab Nebula, Andromeda Galaxy, Cassiopeia A, Cygnus A, Centaurus A. Satellites remain available through category selection. /start#objects links directly to the object desk.

New backend module bin/start_objects.py uses installed Astropy 6.1.7, fixed SIMBAD ICRS positions, and builtin solar-system ephemerides. Telescope location and visibility timestamp are mandatory; missing coordinates never default to an invented observing site. Atmospheric refraction is disabled. IERS auto-download is disabled; dates outside bundled Earth-rotation coverage use Astropy's degraded transformation, reported in JSON warnings and the UI. Suitable for the preview's low angular resolution; not precision astrometry.

objects_for adds common positions and the external TART satellite catalogue at the exact observation timestamp. A satellite catalogue failure does not remove common celestial targets or prevent real visibility display. Object source references are included per target. TART's placeholder Sun range and model flux fields are deliberately not shown as observations.

www/start/science.js implements the shared numerical functions. The new synthesis convention uses Re[V exp(-i k (ri-rj).s)], with s=(sin(az)cos(el), cos(az)cos(el), sin(el)) in ENU. This corrects the initial exploratory image's inverse-phase convention and establishes north-up/east-right plotting. It matches TART's analytic simulated visibility convention. Station alignment still depends on upstream geometry.

Station gain/phase correction is V gi gj exp(-i(phi_i-phi_j)). Zero-gain antennas and explicitly flagged baselines are excluded. Invalid gain metadata produces labeled raw mode. This does not certify calibration freshness or produce flux-calibrated images. The display labels the actual number of baselines used separately from raw baselines received.

www/start/objects.js provides favourite buttons, search, category and horizon filters, selectable position overlays, selected-direction magnification, and a normalized signed directional-response trace. Normalization is the sum of visibility magnitudes, yielding -1..+1; it is not Jy, SNR, detection probability, or isolated source flux. No measurement is made below the horizon. The sky may contain strong satellite/RFI/sidelobe contributions at a celestial direction.

Trace samples are actual distinct visibility timestamps, not interpolation or simulation. Each station/target/calibration/geometry configuration has a separate bounded trace (120 samples, up to 20 histories in the current tab). CSV includes timestamp, station, target, mode, elevation, azimuth, normalized response, mean response, and baseline count. Reloading closes the in-memory observing session; export first.

Validation:
- Analytic point-source tests verify synthesis phase sign, ENU cardinal projection, inverse gain/phase correction, flagged/zero-gain exclusion, raw fallback, missing geometry, below-horizon suppression.
- Backend test verifies the common catalogue survives satellite API failure and missing location returns no fabricated positions.
- Existing freshness/failure-retention tests still pass.
- Browser verified Sun from Bangladesh (~62 degrees elevation), Orion below Bangladesh's horizon (no sample), Orion above Ghana's horizon (~73 degrees) with real response, raw/corrected mode changes, and above-horizon filtering.
- Browser-exported start-ghana-orion-trace.csv parsed with 7 distinct real frames, from 05:37:04 to 05:43:17 UTC on 2026-10-03.
- 390 px responsive viewport: body/document both 375 px, no horizontal overflow.
- Public page and API verified over HTTPS/IPv4. This workstation's unconstrained connection attempts can time out; browser testing uses the local origin as before.

Tests:
node /home/david/random/docs/start/checks/check-science.cjs
node /home/david/random/docs/start/checks/check-state.cjs
python3 /home/david/random/docs/start/checks/check-objects.py

Coordinate provenance: live SIMBAD TAP query on 2026-10-03, archived in simbad-coordinates.json. Formula references:
https://github.com/tmolteno/TART/blob/master/software/python_modules/tart/tart/simulation/antennas.py
https://github.com/tmolteno/TART/blob/master/software/python_modules/tart/tart/imaging/calibration.py
https://tart.elec.ac.nz/catalog/openapi.json

Pre-update runtime snapshot 20261003T051529Z, missing_sources empty; explicit full START bundle /mnt/sol-data/archives/start/start-before-objects-20261003T051720Z.tar.gz also covers backend and service files. Final object-capable restore bundle: /mnt/sol-data/archives/start/start-with-objects-20261003.tar.gz. These explicit bundles cover new files outside the runtime backup's fixed source list.

Visual observatory redesign — 2026-10-03

START now opens on the radio reconstruction and physical array, with Observe / Inspect / Data / Export navigation. The existing relay, station registry, visibility acquisition, math helper, predicted-target calculation, target traces, raw matrix and educational content are retained. No backend service restart or route change was needed.

Working visual path

Provider / observation / renderer boundaries

www/start/model.js owns the provider registry, TART acquisition adapter, normalization and capability flags. It preserves originalData unchanged while rejecting invalid or duplicate rows from the rendering view. Reversed baseline order is canonicalized with complex conjugation. radioView() is a compatibility adapter so the tested radio math and object tools do not require a rewrite. The renderer registry dispatches the normalized observation to observatory.js; the network payload is not read directly by that visual renderer.

www/start/observation-types.d.ts documents the common metadata, arbitrary instrument elements, independently identifiable layers, and distinct radio / optical / photon-event / GW / catalogue payloads. Geometry can describe other instruments through element type, coordinates, labels, receiver association, state, orientation, band and metadata. The TART adapter's instrument geometry is actual supplied data. The SOL local provider has no adapter or measurements: no coherent house array or local observatory hardware is claimed.

Future provider definitions carry not-integrated status and null/unknown access and product capabilities. They are research entry points, not live connectors, account requirements or assertions that all products are public. No frontend credentials exist. New adapters should query metadata first, use previews/cutouts/tiles, bound product size, and defer large raw downloads to explicit requests/server-side processing. The current bounded relay/cache and visibility-driven 60-second refresh are unchanged.

Composite and Event views are explicitly schematic capability explanations. assessComposite() rejects fewer than two distinct observation IDs, missing celestial WCS, unvalidated reprojection, or mismatched registered frames. It is an eligibility gate, not a coordinate registration implementation. Current TART images fail eligibility. No images are falsely aligned, no synthetic timeline is displayed, and no non-radio observations are claimed. An eventual event adapter must supply actual event epochs, uncertainties, localization products and evidence-qualified associations; a GW localization remains probability, not image brightness.

Export and retention

Raw snapshot JSON exports the preserved original upstream response plus processing context. Observation-package JSON additionally retains normalized geometry, products, capabilities, layer display settings, source identifiers and original data. Existing target CSV remains unchanged. Export metadata distinguishes measured products from the derived visualization and does not claim a celestial WCS.

Verification and deployment evidence

Final runtime snapshot: 20261003T064547Z, 5161 items, missing_sources: []. Complete START final bundle: /mnt/sol-data/archives/start/start-visual-final-20261003T0647.tar.gz. Public asset equality results are saved in visual-work/public-verification.json.