# CAKRA · RNO Configuration Package

Version 1 · 03 October 2026 · Technical handover guide / Panduan serah-terima teknis

## Purpose / Tujuan

One JSON file fills the editable VDT scenario, RF/antenna settings, thresholds, route and optional terrain/building inputs. Import is local to the browser, with a review and explicit Apply step. It does not run a prediction, charge credits, or save the file to a server. Save and Run remain separate actions.

Satu file JSON mengisi skenario editable VDT, RF/antena, threshold, rute dan input terrain/bangunan opsional. Impor diproses lokal di browser, diperiksa sebelum Terapkan. Tidak menjalankan prediksi, memakai kredit atau menyimpan file ke server. Simpan dan Run tetap terpisah.

## Trial workflow / Alur percobaan

1. Download `cakra-rno-config-v1.json`. It is explicitly SYNTHETIC, not operator inventory, a licensed spectrum assignment or calibrated field data.
2. VDT → Import configuration / Impor konfigurasi → select the JSON.
3. Review project revision, sectors, RAT, bandwidth/numerology, power, antenna, route and environment; open Complete validated input for all fields.
4. Cancel leaves the current configuration unchanged. Apply replaces editable inputs and clears their current result; the archived completed Run is retained.
5. Inspect RF preflight. Run follows the existing credit gate; do not mistake the free route preview for a prediction.
6. Export/save the scenario separately. Native scenario JSON excludes terrain/building geometry; preserve the original RNO package to repeat its complete environment. The current site/scenario fields can be reviewed in the Run manifest.

Example content: six co-located sectors (3 LTE 1800 MHz/20 MHz; 3 NR 3500 MHz/100 MHz, μ=1), 20 time-stamped route vertices, one synthetic building and a 3×3 synthetic DEM. The `height_source: survey` flag exercises that code path only; no real survey is implied. `project.synthetic: true` makes the warning visible.

## Contract / Struktur

`format: cakra-rno-config`, `schemaVersion: 1`. Unknown configuration fields are rejected rather than silently ignored. All numbers are JSON numbers with a decimal point: `43`, not `"43 dBm"`. Coordinates are WGS84 longitude/latitude in degrees; latitude is −85…85, longitude −180…180. Times need an explicit ISO timezone (`Z` or `+07:00`). Keep schema keys in English in either UI language.

The `units` object must match the example exactly. There is no automatic conversion from watts, kHz, radians, EIRP or per-RB reference power.

| Group | Required input and meaning / Input dan arti |
|---|---|
| project | preparedBy, revision, publishedAt; optional notes and synthetic flag. Record the source/change owner. |
| scenario | schemaVersion=4, id, name, savedAt, sites, radiusKm (0.5…30), sampleCount (20…5000), thresholds, settings, environment. |
| sites | 1…50 uniquely identified sectors. id/name, lat/lon, azimuth, heightM, gainDbi, txPowerDbm, freqMHz, radioTech, clutterClass and all antenna fields from the example are explicit. |
| radioTech | `lte` or `nr`. LTE channel BW supports 1.4/3/5/10/15/20 MHz. NR requires numerology μ=0/1/2 and a supported FR1 bandwidth combination. μ=1/100 MHz is the example. Unsupported combinations fail validation. |
| txPowerDbm | Conducted total carrier transmit power before antenna gain/feeder loss. Not EIRP, SS-RSRP, per-RE power or a sector sum. Do not enter those values without conversion and engineering review. |
| gainDbi / feederLossDb | Antenna peak gain (dBi) and positive feeder loss (dB). Gain is not dBd. No implicit power correction is inferred from a vendor antenna file. |
| antenna angles | Azimuth from north clockwise; electrical and mechanical tilt are separate degrees. Horizontal/vertical beamwidth, front-to-back and polarization slant remain explicit. |
| heightM | Antenna height above local ground, not altitude above sea level. Terrain elevations use metres above the chosen common vertical datum. |
| settings | Copy all keys from the example. Propagation model, receiver height/gain/loss/NF, calibration, shadow seed/sigma, planning margin, share, implementation loss, capacity assumptions and mobility timers are explicit. Units are encoded by suffix M/Db/Ms/Pct, as documented below. |
| thresholds | excellentRsrp > serviceableRsrp > weakRsrp (dBm). Handover margin (dB) and dwell-sample legacy metadata are distinct from the elapsed-time TTT used by the current engine. |
| routeCoordinates | Optional 2…5000 vertices `{lat,lon}`. Either omit elapsedMs on every vertex (existing speed-derived clock), or provide all times starting at 0 and strictly increasing. The imported route overrides the initial geolocation/auto-loop preview; no device location is written into this package. |
| environment.options | enabled, useEstimatedHeights; optional penetrationEnabled/model, indoorDepthM, defaultMaterial and materialLossesDb. If obstacles are enabled, buildingGeoJson must be embedded and cover the study. |
| attachments.terrainCsv | Optional CSV string with `lat,lon,elevation_m` header and complete regular rectangular grid. No duplicate coordinates, blanks, irregular spacing or text-unit values. 4…250,000 points; elevation −500…9000 m. The sample DEM is fictitious. |
| attachments.buildingGeoJson | Optional GeoJSON FeatureCollection, closed Polygon/MultiPolygon rings, bbox [west,south,east,north] asserting full study coverage, metadata/source/attribution/date, heightM/minHeightM/height_source and optional material/ground_elevation_m. Keep the licence/source. Invalid/unmodelled features fail the package import. |

Parameter guide: resourceSharePct is percent (1…100); overheadFraction is a fraction (0…0.4); calibrationOffsetDb is signed dB; planningMarginDb and implementationLossDb are positive dB; routeSpeedKmh is km/h; TTT, filter, measurement-gap and ping-pong timers are milliseconds. Shadow sigma 0 disables a simulated shadow realization; a nonzero sigma/seed is an assumption, not measured accuracy. `clutterClass` accepts dense-urban, urban, suburban, rural or open. Native vendor antenna patterns may be embedded in `site.antennaPattern`; they must already use the supported validated numeric pattern schema.

## Limits / Batasan

Maximum package size: 10 MB. JSON and supported native CAKRA scenario JSON only. Arbitrary vendor PDF/Word/Excel datasheets are **not** automatically interpreted; map their fields to this contract first so units and semantics cannot be guessed. This release does not add an OCR/LLM upload service, FR2 beam management, full scheduler/core/backhaul simulation or regulatory certification. RF equations and the existing Run/credit system are unchanged.

The implemented LTE/NR tables and propagation models are bounded subsets. Refer to the app's technical basis (3GPP TS 38.101-1 FR1 bandwidth/numerology, TS 36.104 LTE and TR 38.901 UMa/UMi/O2I) and validate equipment/band authorization separately. This is not blanket 3GPP/IEEE compliance. An RNO engineer must review manufacturer semantics, model domain, calibration and missing neighbors before using a result in a network change.

Maximum package size 10 MB. Hanya JSON kontrak CAKRA dan JSON skenario native yang didukung. Datasheet PDF/Word/Excel vendor belum dipahami otomatis; petakan field ke kontrak terlebih dahulu agar unit tidak ditebak. Persamaan RF dan gate Run/kredit tidak diubah. Hasil memerlukan review engineer, kalibrasi dan validasi lapangan; bukan sertifikasi 3GPP/IEEE.
