Changelog
User-visible additions, changes, fixes, and release milestones generated from the canonical project changelog.
All notable changes to A.T.O.M are recorded here. The project follows Semantic Versioning and this file follows Keep a Changelog.
Unreleased
0.8.0 - 2026-09-19
Added
- Add opt-in
deterministic_pareto_archive_search_v1for bounded priority-independent Pareto candidate discovery, exact evaluated-state archiving, post-discovery priority reranking, deterministic discovery/ranking fingerprints, and Concept 5C audit artifacts; legacy and Concept 5B search policies remain available. - Add opt-in
deterministic_multistart_coordinate_v1network search with until-stable coordinate descent, deterministic starts, request-scoped memoization, evaluated-state archive/Pareto metadata, explicit budgets, and Concept 5B audit artifacts while preserving the legacy default. - Add Concept 4F.3A.5 diagnostic terrain-clearance primitive with radio-minus-terrain endpoint/sign/no-data/datum/interpolation contracts, NASADEM/FABDEM 432-path regression artifacts, and no canonical RF coupling.
- Add Concept 4F.1 deterministic height-aware
urban_short_rangecenterline obstruction with explicit OSM/levels/fallback provenance, conservative unknown-height NLOS, terrain-status metadata, multipart logical-building handling, shared ray/surface/interference/optimizer/building-entry integration, canonical audit evidence, and API/docs contracts. - Add Concept 4F.2
p526-single-edge-v1diffraction diagnostics with independent P.526-16 reference fixtures, known-height obstruction ledgers, deterministic roof-edge selection, canonical UMa comparison, Fresnel separation, restrained Path Profile UI, and no network/optimizer/surface/interference/building-entry coupling. - Add Concept 4F.3A spatial-evidence foundations with explicit DTM/DSM and vertical-datum semantics, windowed GeoTIFF sampling, terrain path evidence, robust building-base/roof ledgers, source-independent external-height matching, conflict/precedence policies, deterministic fingerprints, Ankara readiness artifacts, diagnostic-only inspector routes, and no canonical RF coupling.
- Add Concept 4F.3A.1 bounded Ankara external-height acquisition and matching pilot with exact Microsoft GlobalMLBuildingFootprints tile selection, raw checksums, input QA, normalized sidecar output, deterministic STRtree matching, source-agreement audits, diagnostic impact, reproducibility, and an honest NO-GO for numeric promotion when the active tiles contain no positive heights.
- Add Concept 4F.3A.2 diagnostic-only GlobalBuildingAtlas GBA.Height Ankara acquisition with official index/tile checksums, CC BY-NC license gate, windowed raster sampling, deterministic extraction policy, height agreement and precedence audits, 432-path/P.526/P.1411/reflection readiness evidence, canonical-invariance ledger, and a measured NO-GO for 4F.3B numeric comparison.
- Add Concept 4F.3A.3 Ankara ground-elevation evidence pilot with NASADEM primary-source audits, FABDEM research-only comparison, HGT/GeoTIFF sampling fixtures, exact tile checksums, robust perimeter building-base diagnostics, 432-path terrain profiles, explicit EGM96/EGM2008 datum gating, readiness artifacts, and no canonical RF coupling.
- Add Concept 4F.3A.4 read-only terrain-clearance and vertical-datum validation with frozen 4F.3A.3 evidence, corrected signed-clearance diagnostics, endpoint/height/spacing/interpolation/no-data audits, EGM96-to-EGM2008 frame reconciliation, local-control and building-base evidence, representative profiles, canonical-invariance records, and a gated 4F.3B NO-GO decision.
- Add Concept 4G.1 explicit conducted-power/EIRP semantics, absolute TX gain versus relative antenna-pattern attenuation, shared antenna evaluation, scalar RX gain and deterministic polarization-loss terms, a bounded 3GPP single-element reference preset, signed link-budget diagnostics, and compatibility regression evidence without adding array, beamforming, noise, or stochastic polarization behavior.
- Add Concept 4G.2 deterministic receiver noise and sensitivity
foundation with manual compatibility mode, opt-in
kTB-based per-cell thresholds, strict link margin and usable-reach semantics, explicit bandwidth provenance, separate building/interference behavior, UI/API/report contracts, and canonical comparison evidence without adding PHY, MCS, throughput, or UE-conformance behavior. - Add Concept 4H.1 inspectable interference and radio-quality bookkeeping with raw received-carrier power, explicit serving selection, exact co-channel eligibility, linear desired/interference/noise ledgers, planning RSRP/RSRQ/SINR semantics, outage reasons, scenario fingerprints, API/report/UI diagnostics, and canonical compatibility evidence without coupling radio KPIs into optimization.
- Add Concept 4H.2 optional interference-aware optimization with a fixed candidate-independent radio-quality domain, denominator-complete serviceability fraction, stable utility, Pareto/reranking/explainability/report/UI integration, explicit finite-horizon and policy metadata, 2.6 GHz support, 140 GHz unavailability, canonical disabled-mode invariance, and deterministic enabled-mode evidence without hard radio constraints, MCS, scheduler, or traffic simulation.
- Add Concept 4I.1 read-only 140 GHz/sub-THz applicability audit with
exact
research_sub_thzbaseline, clause-level ITU/3GPP reference ledger, independent atmospheric/material/diffraction fixtures, measurement transferability assessment, double-counting rules, and a gated 4I.2 roadmap without changing production RF behavior. - Add Concept 4I.2A opt-in
sub_thz_atmospheric_reference_v1with explicit P.525-5 FSPL, P.676-13 gas, P.838-3 rain, local-fog P.840-9 sensitivity, auditable ledgers, controlled fixtures, isolated API/UI workflow, and no canonical RF coupling. - Add Concept 4I.2B isolated ITU-R P.1411-13 Table 4 candidates with strict applicability gates, provenance, 140 GHz envelopes, median-only statistics, side-by-side comparison boundaries, diagnostics UI, API/docs contracts, and Ankara readiness artifacts.
- Add Concept 4I.3 isolated measurement-evidence validation with versioned campaign/quantity/calibration provenance, applicability-first P.525/atmospheric/P.1411/reference adapters, censored and directional-basis handling, common-sample metrics, constant-bias-only diagnostics, deterministic spatial/site/campaign holdouts, metadata-only external evidence, synthetic controls, readiness gates, API/docs artifacts, and a restrained RF Diagnostics UI without canonical RF coupling.
- Add Concept 4I.4 isolated P.2040-4 material/facade reference evaluation with strict Table 3 ranges, explicit electrical-property provenance, complex TE/TM slab coefficients, internal reflections, stable power ledgers, controlled fixtures, separate 80 dB comparison, optional material-characterization adapter, API/UI/docs contracts, and no canonical RF coupling.
- Add Concept 4I.5A read-only 140 GHz specular-reflection geometry and composition audit with sourced image-method spreading, P.2040 interface/slab composition rules, direction-aware antenna and TE/TM requirements, finite facade/height/roughness/visibility gates, Ankara readiness counts, controlled derivations, and an isolated 4I.5B reference-only contract without production RF coupling.
- Add Concept 4I.5B isolated
single_bounce_specular_reflection_reference_v1with explicit image-source geometry, finite-facade and vertical gates, TE/TM P.2040 interface/slab coefficients, roughness/Fresnel/far-field evidence, independent two-leg visibility, one-path P.525 spreading, reflected-path link-budget diagnostics, API/UI/docs contracts, and controlled 140 GHz invariance fixtures without canonical or network coupling.
0.7.0 - 2026-09-17
Added
- Add Concept 4E building-entry analysis for deterministic 2.6/28 GHz service estimates immediately inside representative facades, with standard-derived low/high O2I scenarios, material-data auditing, one batched API request, RF-aware caching, and restrained Analyze/report surfaces.
Changed
- Replace network optimization's arbitrary raw weighted score with stable 0–1 objective utilities, normalized importance priorities, a 0–100 composite score, raw metric preservation, contribution breakdowns, and preference-ranked feasible Pareto solutions.
- Scope demand and residential normalization to a deterministic
selected-cell radius-union domain, report unavailable objectives as N/A
with effective weights, and present the legacy
coverageobjective as propagation reach. - Add lazy per-cell Pareto explanations that compare a selected solution with a single baseline-reverted counterfactual in the same target domain, preserving raw metric deltas, direction-aware interpretation, feasibility evidence, and priority-only score re-ranking.
- Redesign generated Markdown/HTML planning reports around network scope, authoritative recommendations, baseline/Pareto evidence, evaluated cell explanations, conditional interference summaries, and concise report-only maps.
- Clarify report priorities as relative 0–100 values, distinguish unconfigured hard constraints, humanize optimization-domain labels, and omit universally unavailable PCI columns.
- Add map-first RF display controls for received-power surfaces, scoped/hidden propagation rays, and independent selected-cell focus without launching new RF work.
Fixed
- Keep six-cell network selections unique, visible, and capped across map, area, restore, recommendation, and undo flows.
- Restore automatic GitHub Pages deployment from the current static
documentation so changelog updates on
mainreach the published site.
0.6.0 - 2026-08-02
Added
- Add a unified map key, visible local-save status, and recoverable deletion controls.
Changed
- Reorganize the frontend into four labeled workflow stages with contextual tool navigation and run actions, stronger text contrast, and clearer focus states.
- Standardize RF unit and unavailable-value formatting, replace side-stripe status treatments, and align drawer, layer, and result transitions to one reduced-motion-safe timing system.
Fixed
- Keep drawer headers and tool tabs fixed while long tool bodies scroll, preventing active-tab borders from being clipped by the content boundary.
- Keep every workspace destination reachable in a single mobile navigation row without pushing tools below the viewport.
- Pin documentation generation to Pandoc 3.10 so CI reproduces the committed reference pages exactly.
- Copy every Core Lab adapter Go source into the container build so lifecycle helpers are linked into the release image.
0.5.0 - 2026-07-31
Added
- Add an inspectable 2.5D point-to-point path profiler with optional COG/GeoTIFF terrain, building heights, LOS/Fresnel classification, single knife-edge diffraction, material-aware penetration, environmental sensitivity terms, uncertainty ranges, and an interactive vertical cross section.
- Add asynchronous batch experiment matrices with cancellation, deterministic dataset/model fingerprints, bounded caching, a headless CLI, progress UI, scenario tables, and Pareto evidence.
- Add configurable network objectives, weights, hard constraints, feasibility evidence, and non-dominated azimuth solutions while keeping unsupported tilt, power, candidate-site, cost, fiber, and permitting inputs explicit.
- Add spatially blocked five-fold calibration validation, spatial-diversity rejection, per-cell/per-band and distance/obstruction residual summaries, robust outlier flags, uncertainty quantiles, confidence intervals, and campaign provenance/expiration support.
- Add regular-grid analytical coverage surfaces, marching-square isolines, opacity and display-threshold controls, plus GeoTIFF, contour GeoJSON, and CSV exports.
- Add OGC API Features-style, viewport-bounded building queries with pagination and GeoJSON/CSV representations so clients need not transfer the full building dataset.
- Add a persistent cell Inventory workspace with manual map placement, dragging, duplication, deletion, bounded CSV/GeoJSON import, search, validation, and independent per-cell RF profiles across propagation, network, interference, recommendation, measurement, and report workflows.
- Add Dataset Pack Studio for arbitrary-region source inspection, geometry repair, reprojection/cropping, schema-v2 manifests, hashes, provenance/licenses/confidence, QA evidence, and optional terrain, clutter, building-height, and material layers.
- Add a local installed-dataset catalog and atomic manifest-ID switching that retains the active immutable pack on validation failure, with optional administration-key protection.
Security
- Upgrade
brace-expansionto 5.0.8, require Go 1.26.5 for both services, and align container builder tags with the patched toolchain. - Reject measurement CSV files above 2 MiB before reading them into browser memory while retaining the independent 5,000-sample limit.
- Add weekly npm dependency updates, a high-severity frontend advisory
gate, and matching
govulncheckcoverage for the Core Lab adapter. - Require constant-time API-key authorization for Core Lab scenario mutation at both the public backend route and the private adapter hop.
- Run the Core Lab adapter as a non-root user with a read-only filesystem, no Linux capabilities, no privilege escalation, and no host-published port.
- Bound imported project files to 16 MiB and deeply validate scenario counts, nesting, collection sizes, strings, and nested snapshot types before persistence.
- Limit recommendation search polygons to 256 coordinates before candidate point-in-polygon evaluation.
- Add restrictive browser security headers, HTTPS-aware HSTS, and an opt-in transport requirement for deployments behind a TLS gateway.
- Keep adapter response bodies, dataset filesystem paths, and detailed load failures in server logs instead of returning them to API clients.
- Reject unknown or trailing JSON input across backend RF routes and Core Lab scenario mutation without exposing parser diagnostics.
- Bound frontend JSON response parsing to 32 MiB using both
Content-Lengthchecks and streaming byte accounting. - Stream building GeoJSON features into the spatial index instead of retaining the full encoded file and decoded collection together, with explicit manifest, tower, and building file ceilings.
- Resolve dataset file symlinks before containment checks so manifests cannot escape the configured dataset directory.
Removed
- Remove duplicate root copies of propagation screenshots and keep the documentation asset paths canonical.
Changed
- Upgrade project files and dataset manifests to schema v2 with backward-compatible v1 import/loading migrations.
- Include resolved per-cell RF profiles and dataset QA/provenance in reproducibility outputs and planning reports.
- Extract frontend workspace formatting/state helpers and backend RF/segment geometry math from the application and simulation monoliths into focused, tested modules.
- Refresh Open5GS reachability outside the adapter cache mutex, serve stale probe state during refresh, and treat HTTP client/server failures as disconnected.
- Remove redundant RF convenience APIs that created background contexts and silently discarded computation errors.
- Drain in-flight backend and Core Lab adapter requests on interrupt or termination signals with a bounded graceful-shutdown window.
- Consolidate report escaping, numeric/Markdown formatting, and printable table construction behind one tested utility.
Fixed
- Keep focused-drawer actions in normal layout flow so the propagation optimizer cannot overlap the vertical path-profile panel.
0.4.0 - 2026-07-30
Security
- Pin container base images by digest, lock Python dependencies and hashes, review pull-request dependency changes, scan production images, and publish release SBOM and provenance attestations.
- Upgrade backend and adapter builds to Go 1.26, frontend and CI builds to Node.js 24 LTS, and runtime containers to Alpine 3.24 so maintained toolchains provide current security fixes.
- Protect the full building-dataset response with strong ETag caching,
conditional
304responses, separate global and per-client transfer budgets, and optional origin API-key authentication. - Bound segmented simulations to 25,000 estimated and actual GeoJSON features, reject oversized ray/radius combinations before allocation, and cancel parallel ray workers if building splits exhaust the shared feature budget.
- Pin every external GitHub Action to an immutable commit SHA, stop checkout from persisting release credentials, and enforce pinned workflow dependencies in CI.
- Upgrade
golang.org/x/netto v0.57.0 and its security-sensitive transitive modules, addgovulncheckto backend CI, and enable weekly Go module updates.
Fixed
- Serialize browser workspace commits, arbitrate IndexedDB and fallback copies by persistence revision, and reserve local storage for failed primary writes instead of duplicating every payload.
- Store recommendation details once in the canonical response array and reference them from GeoJSON features by stable feature ID, including compaction of legacy scenario artifacts.
- Generate backend, Core Lab adapter, and frontend scenario/RF policy bindings from one canonical source, and share one tower input type across RF endpoints.
0.3.0 - 2026-07-26
Fixed
- Compute sector propagation and coverage gaps from one shared ray-profile pass instead of launching duplicate frontend requests.
- Remove the tracked OSMnx response cache and exclude regenerated pipeline caches from Git and Docker build contexts.
- Protect expensive RF routes with per-client concurrency and request budgets, optional API-key authentication, computation deadlines, and deep-loop cancellation.
0.2.0 - 2026-07-24
Added
- Add keyboard-accessible full-site search to the static documentation website.
- Publish the canonical project changelog as a searchable documentation page.
Removed
- Remove the academic report PDF and its documentation-only source and build assets.
Fixed
- Bound Core Lab cluster identifiers and scenario bodies to prevent topology, session, and event fan-out exhaustion.
- Bound RF tower identifiers to prevent small measurement and interference requests from amplifying into multi-gigabyte JSON responses.
- Persist the saved scenario a user opens, and detach the draft from that baseline when its planning inputs change.
- Prevent stale map layers from being stored with changed inputs or input-only recommendation scenarios.
- Assign new nested scenario IDs when projects are duplicated or imported so cache entries cannot collide.
- Restore the local-storage backup when IndexedDB is available but does not contain a workspace record.
- Mirror successful workspace saves to local storage so the fallback does not silently age behind IndexedDB.
- Compare dataset hash maps independently of JSON object key order.
- Score candidate recommendations from the active optimized per-cell azimuths instead of reverting to the global baseline azimuth.
- Invalidate old RF and residual layers when applying a measurement-derived calibration offset.
- Include dataset hashes in calibration compatibility checks so changed dataset content invalidates an old profile.
- Preserve per-cell azimuths through network evaluation, optimization, saved scenarios, and recommendation application.
- Align the Markdown documentation entry point with the maintained static docs hub, current version, and model limitations.
Changed
- Establish a canonical
VERSIONfile, automated version checks, release-note generation, and tag-driven GitHub Releases. - Publish the
latestcontainer tag only for stable releases, never prerelease tags.
0.1.0 - 2026-07-17
Added
- Deterministic sector, network, optimization, interference, recommendation, and measurement-validation workflows.
- Focused map workspace with projects, saved scenarios, comparison, reports, dataset metadata, and optional 5G Core communication paths.
- Go API resource controls, validated dataset packs, OpenAPI documentation, responsive browser tests, and multi-architecture container publishing.