Skip to content

Config File Reference

This page documents the public and advanced-user configuration surface for alb-config.json.

A sample file is available here: alb-config.json

Overview

alb-config.json is the live operational ALB config.

Important packaging facts:

  • EuroScope should load ALB.dll
  • ALB.dll loads ALBCore.dll
  • alb-config.json is the live config and must not be silently overwritten by the loader
  • alb-config.default.json is the shipped template/default file

Place alb-config.json in the same plugin folder as ALB.dll and ALBCore.dll.

After changing config, apply it with .alb reload or the [Reload config] entry in the Timelines menu. A successful reload now preserves the active runtime session more cleanly than older builds, including current policy selections such as EAT, ETA, and HLW, while also trying to keep the current timeline zoom. If a restored active timeline still depends on a configured legacy default AR or scenario baseline, reload reapplies that configured baseline instead of leaving the active AR state undefined. Reload does not auto-open the ALB window again if it is currently closed.

Current config version support

The current ALB runtime supports:

  • configFormatVersion: 2
  • configFormatVersion: 3

For new configs, use:

"configFormatVersion": 3

Encoding note

The plugin uses the EuroScope font, which is based on ANSI/Windows-1252.

If you use special symbols in static tag fields, save the JSON file using ANSI encoding.

Scope of this page

This page documents the operational and advanced-user config surface.

A live config file may also contain additional developer-only keys used for internal validation workflows. Those are intentionally not described on the public documentation site.

Disabling blocks with -off / _off

When loading timelines and tagLayouts, any key ending with -off or _off (case-insensitive) is skipped.

Examples:

  • "EKCH 04L/04R-SI_off"
  • "Expanded-off"

This disable pattern does not apply globally to all config keys. For many top-level settings, the runtime reads only the exact expected key name.

Top-Level Options

Property Type Default Description
aircraftLastSeenSweepMinutes int 2 How often ALB sweeps persisted aircraft state for expiry. Applied only if greater than 0.
aircraftOfflineResetMinutes int 5 Threshold after which unseen aircraft have persisted sequencing/state cleared. Applied only if greater than 0.
airports object optional Airport-specific fallback circles, runway metadata, and advanced airport tuning.
backendPeerHealth object defaults below Passive backend peer update-cycle health monitoring and warning thresholds.
backendSeqSync object defaults below Backend sequence synchronization transport mode and TX-budget settings.
configFormatVersion int required in practice Config schema version. Use 3 for new configs.
defaultTimeline string absent Optional exact configured timeline identifier to select when no prior active timeline can be restored.
eatModeOnStartup string AR Startup EAT mode, applied only during the initial config load. Accepted values are AR, TF, and LT case-insensitively.
etaModeOnStartup string ES Startup ETA source, applied only during the initial config load. Accepted values are ES and ALB case-insensitively.
glEatCombiDisplay object defaults below Optional display mapping for the combined glEatCombi field.
holdEatLockWindowMinutes int 5 Hold/EAT lock window in minutes. Applied only if greater than 0.
holdEatRecentChangeMinutes int 2 Recent-change window for hold/EAT logic in minutes. Applied only if greater than 0.
holdEatWriteOnStartup bool false Startup state for local HLW, applied only during the initial config load.
housekeeping object defaults below Startup housekeeping settings for ALB logs and backend recording folders.
layout object defaults below EAT display precision/suffix formatting settings.
logging bool false Enables ALB runtime text logging.
openAutomatically bool true Opens the ALB window on the initial config load. It does not re-open the window on later config reloads.
scratchpadRunwayOverride bool false Enables scratchpad runway override parsing for assignedRunwayOverride.
soundMute object all false Startup mute state for ALB sounds.
startupShowStatistics bool true Initial ALBCore startup presentation: show the statistics and arrival-planning block.
startupShowTimeline bool true Initial ALBCore startup presentation: show the timeline area.
tagLayouts object required Tag layout definitions.
timeSyncBeacons bool false Enables time-sync beacon support.
timelineSort string targetFixEta Default timeline sort mode. Accepted values include target / tfe and landing / lde / lnd.
timelines object required Timeline definitions.
tmaAreas array optional TMA polygon definitions.

Startup-only policy keys

eatModeOnStartup, etaModeOnStartup, and holdEatWriteOnStartup are read only during the initial config load.

That means:

  • they are useful for your preferred startup baseline
  • they do not force the runtime back to those values on every Reload config
  • missing or invalid values fall back independently to safe defaults

Current independent fallbacks are:

  • eatModeOnStartup -> AR
  • etaModeOnStartup -> ES
  • holdEatWriteOnStartup -> false

Startup timeline and presentation

These top-level settings affect local startup selection and presentation. They do not change FMR authority, planning policy, or shared traffic state.

{
  "defaultTimeline": "EKCH-SI",
  "startupShowTimeline": true,
  "startupShowStatistics": true
}
Key Type Default Meaning
defaultTimeline string absent Exact configured timeline identifier to select only when ALB cannot restore a prior active timeline. It is not an ICAO, runway, or layout name.
startupShowTimeline bool true Shows the timeline on the first successful ALBCore startup config load.
startupShowStatistics bool true Shows the statistics block on the first successful ALBCore startup config load.

startupShowTimeline and startupShowStatistics are consumed once at initial startup. After that, the local TL and STAT buttons own the presentation for the controller session, including after a window close/reopen or .alb reload. Missing or invalid values safely behave as true.

defaultTimeline is considered only when no previous active timeline can be restored. A valid existing selection, including a surviving partial multi-timeline selection, takes precedence. Apply any config change with .alb reload or restart ALB.

Housekeeping

housekeeping controls startup cleanup of ALB runtime files.

Example:

"housekeeping": {
  "enabled": true,
  "textLogRetentionDays": 16,
  "textLogMaxFilesPerFamily": 20,
  "backendRecordingRetentionDays": 16,
  "backendRecordingMaxFolderMb": 500
}
Property Type Default Accepted range Description
backendRecordingMaxFolderMb int 500 50-10000 Max size for backend recording folder before pruning.
backendRecordingRetentionDays int 14 1-365 Retention period for backend recording material.
enabled bool true n/a Enables runtime housekeeping.
textLogMaxFilesPerFamily int 20 5-500 Max number of files kept per text-log family.
textLogRetentionDays int 14 1-365 Retention period for ALB text log families.

If values are invalid, the runtime falls back to defaults and logs a warning. Out-of-range integers are clamped.

Sound Mute

soundMute sets the startup mute state for ALB audio categories.

Example:

"soundMute": {
  "all": false,
  "missed": false,
  "ar": {
    "all": false,
    "unselected": false
  }
}
Property Type Default Description
all bool false Mutes all ALB sounds.
ar.all bool false Mutes all arrival-rate related sounds.
ar.unselected bool false Mutes arrival-rate sounds for unselected/non-focused contexts.
missed bool false Mutes missed-approach/go-around related sounds.

Layout

layout controls how EAT-style times are displayed in the timeline.

Example:

"layout": {
  "EatDisplayPrecisionSec": 15,
  "EatDisplayRecalcPeriodSec": 15,
  "EatDisplayIntervalChars": ["", "a", "b", "c", "d"]
}
Property Type Default Accepted values Description
EatDisplayIntervalChars string[] ["","a","b","c","d"] up to 5 one-character strings Suffix characters used by HHMMx / HH:MMx formats.
EatDisplayPrecisionSec int 60 15 or 60 Display precision for EAT-style time presentation.
EatDisplayRecalcPeriodSec int 0 0-600 Display regeneration throttle. 0 means automatic.

Precision and suffix behavior

If EatDisplayPrecisionSec is 60, ALB displays normal minute precision.

If EatDisplayPrecisionSec is 15, ALB uses five second-bucket suffix slots across each minute. With the default suffix characters this behaves roughly as:

  • 00:00 to 00:07.5 -> no suffix
  • 00:07.5 to 00:22.5 -> a
  • 00:22.5 to 00:37.5 -> b
  • 00:37.5 to 00:52.5 -> c
  • 00:52.5 to 01:00 -> d

Recalc throttle

EatDisplayRecalcPeriodSec controls how often display strings are regenerated.

  • 0 = automatic
  • automatic means 15 seconds when precision is 15
  • automatic means 1 second when precision is 60

Backend SeqSync

backendSeqSync controls backend sequence synchronization load-management.

This block affects how ALB sends canonical backend sequence state to peers. It does not change FMR ownership, EAT:AR versus EAT:LT, scratchpad fallback, or the local sequencing algorithms themselves.

Example:

"backendSeqSync": {
  "mode": "normal",
  "txMaxSet2PerSecond": 10,
  "txMaxSet2PerPoll": 10,
  "txQueueMaxAgeSec": 30,
  "authorityLeadMinutes": 10
}

Accepted mode values:

  • normal
  • throttled
  • horizon
  • suspend

Fallback behavior:

  • missing mode falls back to normal
  • malformed or unknown mode falls back to normal
Property Type Default Accepted range or values Description
authorityLeadMinutes int 10 1-60 Horizon relevance window in minutes. Used by horizon to distinguish near-horizon traffic from far-floating traffic.
mode string normal normal, throttled, horizon, suspend Backend seqsync transport mode. In normal, operational transitions stay immediate while estimate-only canonical refreshes may be shaped automatically.
txMaxSet2PerPoll int 10 1-200 Per-poll budget for queued canonical SET2 transmission. Used by the same queued or recovery paths as above.
txMaxSet2PerSecond int 10 1-200 Per-second budget for queued canonical SET2 transmission. Used by throttled, horizon, suspend recovery, and temporary normal recovery drain.
txQueueMaxAgeSec int 30 1-600 Queue age budget for backend seqsync queue handling.

Operational notes:

  • normal keeps operational transitions immediate, but estimate-only canonical refreshes may be shaped automatically
  • throttled, horizon, suspend, and temporary recovery drain use the TX queue budgets
  • horizon may suppress far-floating canonical candidates while keeping operationally relevant or uncertain aircraft canonical
  • suspend suppresses normal canonical SET2 TX, but operational DEL remains allowed and bounded
  • returning from throttled or horizon to normal uses temporary bounded recovery drain until inherited queue backlog is empty
  • there is no separate config key or runtime command just for the normal-mode estimate shaping; it is part of current normal
  • edit this block in alb-config.json when you want different startup or default transport behavior, then apply it with .alb reload or by restarting ALB
  • use .alb seqsync normal, .alb seqsync throttled, .alb seqsync horizon, or .alb seqsync suspend when you want to change the live runtime mode immediately without editing config
  • use .alb seqsync status to inspect the current live mode and queue picture

Backend Peer Health

backendPeerHealth controls passive backend peer update-cycle health monitoring.

This is an advanced diagnostic block. It does not change FMR ownership or canonical seqsync rules. It helps the FMR detect when a peer appears slow to apply shared backend updates and surfaces backend-only warn or recover events.

Example:

"backendPeerHealth": {
  "enabled": true,
  "warnAverageMs": 333,
  "recoverAverageMs": 200,
  "windowSec": 30,
  "consecutiveWarnWindows": 3,
  "consecutiveRecoverWindows": 2,
  "repeatWarnCooldownSec": 60
}
Property Type Default Accepted range Description
consecutiveRecoverWindows int 2 1-10 Number of good windows required before recovery.
consecutiveWarnWindows int 3 1-10 Number of bad windows required before warning.
enabled bool true n/a Enables passive backend peer health monitoring.
recoverAverageMs int 200 50-warnAverageMs Average cycle threshold below which ALB may treat the peer as recovered.
repeatWarnCooldownSec int 60 30-600 Cooldown before repeat warnings may be sent again.
warnAverageMs int 333 100-5000 Average cycle threshold above which ALB starts treating a peer cycle window as slow.
windowSec int 30 10-300 Measurement window length in seconds.

Operational notes:

  • these warnings are passive monitoring, not transport control
  • warnings are backend-only and intended to help the FMR notice slow peer update cycles
  • .alb seqsync status can show peer-health summary fields when this monitoring is enabled

glEatCombiDisplay

This block controls what the glEatCombi field shows depending on arrival state, hold state, and recent passage timing.

Example:

"glEatCombiDisplay": {
  "unknownState": "SwitchGainLooseEat",
  "unsequencedState": "SwitchGainLooseEat",
  "sequenced1State": "GainLoose",
  "sequenced2State": "Eat",
  "frozen1State": "Countdown",
  "frozen2State": "Countdown",
  "switchPeriodSec": 2,
  "gainLooseEmptyText": "",
  "holdXSec": 120,
  "holdGtXState": "Eat",
  "holdLeXState": "Countdown",
  "afterPassYMinutes": 2,
  "afterPassFirstYState": "DeltaAtPassage",
  "afterPassAfterYState": "Blank"
}

Accepted state values are case-insensitive and normalized. Common values:

  • GainLoose or GL
  • Eat
  • Countdown or CD
  • DeltaAtPassage or Delta
  • SwitchGainLooseEat
  • Blank
Property Type Description
afterPassAfterYState string Display after the first Y minutes after passage.
afterPassFirstYState string Display in the first Y minutes after passage.
afterPassYMinutes int After-passage window length in minutes. Values below 0 are clamped to 0.
frozen1State string Display for frozen state 1.
frozen2State string Display for frozen state 2.
gainLooseEmptyText string Optional trimmed placeholder used only when GainLoose is the selected display state but the actual Gain/Lose value is empty.
holdGtXState string Display while in hold and remaining time is greater than X.
holdLeXState string Display while in hold and remaining time is less than or equal to X.
holdXSec int Hold threshold in seconds. Values below 0 are clamped to 0.
sequenced1State string Display for sequenced state 1.
sequenced2State string Display for sequenced state 2.
switchPeriodSec int Cycling period for SwitchGainLooseEat. Values below 1 are clamped to 1.
unknownState string Display when arrival state is unknown.
unsequencedState string Display when aircraft is unsequenced.

Operational notes:

  • gainLooseEmptyText is optional and is only used when glEatCombi is in a Gain/Lose-based state and the real Gain/Lose text is empty
  • if gainLooseEmptyText is blank or omitted, ALB keeps the older behavior and simply shows nothing in that case
  • this placeholder does not replace normal EAT, PLT, countdown, or post-passage behavior
  • holdXSec and holdGtXState seed the local runtime hold-display control on startup and on a successful config reload
  • the top-row hold-display button then lets each client adjust that threshold and pre-threshold hold display locally at runtime
  • the normal hold-display button cycle is Eat -> GainLoose -> SwitchGainLooseEat -> Blank -> back to Eat
  • holdLeXState is the inside-threshold display and is normally kept as Countdown
  • unsupported holdGtXState values are normalized to Blank

The hold-display button uses compact labels such as:

  • 2 EAT
  • 2 GL
  • 2 SW
  • 2 ---

The number is the minutes before EAT where ALB switches to countdown. The suffix shows what glEatCombi displays while the aircraft is still farther out than that threshold.

Timelines

timelines maps a timeline id to a timeline definition.

Property Type Default Description
ArrivalScenarios object {} Optional legacy scenario-name to integer-array mapping. Retained for compatibility/history; not recommended as the normal operating method. Arrays must match the number of non-placeholder via-fixes.
defaultTimeSpan uint 30 Initial visible timeline span in minutes.
destinationAirports string[] [] Optional destination ICAO filter. If non-empty, only matching destinations are included. Active-timeline destination coverage also controls whether glEatCombi can appear for that traffic.
forceSingleTimeline bool false Forces a single timeline even when two target fixes are configured.
runways string[] [] Optional runways relevant for this timeline.
tagLayout string none Tag layout id to use. Must exist in tagLayouts.
targetFixes string[] required Aircraft expected to pass one of these fixes are shown in the timeline. Exactly two fixes create a dual timeline unless forceSingleTimeline is true.
viaFixColors string[] palette Optional custom RGB colors for real via-fix lanes.
viaFixes string[] [] Optional via-fix lanes. The placeholder "-----" can be used as a visual separator.

Notes on ArrivalScenarios

  • Operational note: ArrivalScenarios is retained for compatibility and history. Scenarios are no longer part of the recommended normal ALB workflow. Current operation should normally use EAT:LT landing-timeline monitoring and correction instead of scenario switching.
  • On successful config reload, if a restored active timeline still depends on a configured legacy default scenario, ALB reapplies that configured baseline so the retained AR picture does not come back undefined.
  • The loader reads the key exactly named ArrivalScenarios
  • alternate scenario blocks under other names are ignored
  • placeholder via-fixes such as "-----" do not consume scenario values
  • JSON order is preserved for scenario display menus

Tag Layouts

tagLayouts maps a layout id to a layout definition.

Two formats are supported:

  1. legacy array format
  2. object format with metadata plus items

Recommended format:

"Maestro-Feeder": {
  "hideDeselectedViaFixes": true,
  "timelineLayout": "Feeder",
  "timelineSort": "targetFixEta",
  "items": [
    { "source": "callsign", "width": 8 }
  ]
}

Layout properties

Property Type Default Description
hideDeselectedViaFixes bool false If true, aircraft in deselected via-fix lanes are hidden from the timeline.
items array required Ordered list of tag items.
timelineLayout string runtime default Layout hint. Accepted values include runway and feeder.
timelineSort string runtime default Optional per-layout sort mode.

Tag Item Properties

Property Type Default Description
defaultValue string "" Fallback/default value, especially for static.
format string "" Optional time formatting override for time-backed sources.
isViaFixIndicator bool false Colors the field using the via-fix lane color.
rightAligned bool false Right-aligns the rendered value.
source string "" Source field to render.
width uint 1 Reserved character width.

format strings for time values

Supported format values are:

Format Width Meaning
HHMM 4 UTC time as 2359
HH:MM 5 UTC time as 23:59
HHMMSS 6 UTC time as 235959
HH:MM:SS 8 UTC time as 23:59:59
HHMMx 5 HHMM plus optional EAT precision suffix
HH:MMx 6 HH:MM plus optional EAT precision suffix

If a recognized format is present, ALB infers the effective field width from the format, so the explicit width value is no longer the controlling width.

Common time-capable sources for format

These sources can use a format string:

  • estimatedLandingTime
  • estimatedLandingTimeAlb
  • estimatedLandingTimeEs
  • estimatedLandingTimeSso
  • plannedLandingTime
  • plannedLandingTimeAlb
  • plannedLandingTimeEs
  • plannedLandingTimeSso
  • timelineAnchor
  • timelineAnchorHms
  • underlyingEAT
  • underlyingEATAlb
  • underlyingEATEs
  • underlyingEAThms
  • viaFixETO
  • viaFixETOhms

Tag Item Sources

Below are the common operational and advanced layout sources used by the current runtime.

Source Meaning
acno Internal aircraft ordinal number.
aircraftType ICAO aircraft type.
aircraftWtc Wake turbulence category.
altitude Altitude/flight level display.
arrivalSeqDisp Display sequence number.
arrivalSeqFrontier Sequencing frontier marker.
arrivalSeqMax Maximum assigned arrival sequence number.
arrivalSeqMin Minimum airborne arrival sequence number.
arrivalSeqNo Raw arrival sequence number.
ArrivalState Determined arrival state.
assignedRunway Assigned landing runway.
assignedRunwayOverride Scratchpad-based runway override.
assignedStar Assigned STAR.
ATCLong Tracking controller long id.
ATCShort Tracking controller short id.
bookingStatus Backend booking/event-slot status text.
cadAssignedHeading Controller-assigned heading.
cadAssignedRate Controller-assigned rate.
cadAssignedSpeedMach Controller-assigned speed (K...) or Mach (M...).
cadClearanceFlag Clearance flag (CLR).
cadFinalAlt Controller-assigned final altitude.
cadGroundState Controller-assigned ground state.
cadScratchpad CAD scratchpad mirror.
cadTempAlt Controller-assigned temporary altitude. Special values 1 and 2 display as cINS and cVIS.
callsign Aircraft callsign.
directRouting Direct-to or next-route-fix display. Explicit Direct-To takes precedence; otherwise the fallback shows the aircraft's current semantic next route fix.
distanceGapNmToPrevious NM spacing/gap to the previous aircraft.
estimatedLandingTime Active estimated landing time.
estimatedLandingTimeAlb / estimatedLandingTimeSso SSO/ALB landing ETA branch.
estimatedLandingTimeEs ES landing ETA branch.
etaSource Current ETA branch/source identifier.
FlightPhase Determined flight phase.
glEatCombi Combined gain/lose and EAT field. For radar-tag/Combi use, ALB now leaves it blank unless the aircraft destination belongs to a currently active timeline.
groundSpeed Ground speed.
groundSpeed10 Ground speed in tens.
holdPhase Holding phase indicator.
holdingEAT Hold-related EAT text.
holdingEATm Manual-hold-EAT marker.
holdingFix Holding fix if available.
inboundGrouping Current inbound grouping bucket.
isPastViaFix Y/N flag for via-fix passage.
landingLooseGain Landing/threshold-based gain/lose display.
landingSeqIndexCurrent Current landing sequence index.
landingSeqIndexFixed Fixed landing sequence index.
minutesBehindPreceedingRounded Spacing behind the preceding aircraft in rounded minutes.
obsNote3 3-character observation/note abbreviation.
plannedLandingTime Active planned landing time.
plannedLandingTimeAlb / plannedLandingTimeSso SSO/ALB planned landing time.
plannedLandingTimeEs ES planned landing time.
remainingDistance Remaining distance to target fix in NM.
remainingDistance1d Remaining distance with one decimal place.
scratchPad Scratchpad text.
static Static text from defaultValue.
targetFix Active target fix for the aircraft.
targetFixATCTime Estimated time over target fix including delay logic.
targetFixEta Estimated time over target fix.
timeBehindPreceeding Spacing behind the preceding aircraft in mm:ss.
timelineAnchor / timelineAnchorHms Active timeline anchor time used for ordering/display.
timelineAnchorSource Source of the timeline anchor.
transitionAltitude Transition altitude.
underlyingEAT Active underlying EAT display value.
underlyingEATAlb / underlyingEATSso SSO/ALB-side underlying EAT branch.
underlyingEATEs ES-side underlying EAT branch.
underlyingEAThms Underlying EAT with seconds.
viaACToViaFixSec Seconds from aircraft to via-fix.
viaFix Via-fix lane.
viaFixDistNmToGo Remaining NM to the via-fix.
viaFixETE Estimated time enroute to via-fix.
viaFixETO Estimated time over via-fix.
viaFixETOhms Estimated time over via-fix with seconds.
viaFixLooseGain Via-fix gain/lose display.
viaFixSeqIndexCurrent Current per-via-fix sequence index.
viaFixSeqIndexFixed Fixed per-via-fix sequence index.
viaFixToLandingSec Planned seconds from via-fix to landing.
viaFixToLandingSecEs ES-based via-fix-to-landing seconds.
viaFixToLandingSecSso SSO/ALB-based via-fix-to-landing seconds.

If a source string is unknown to the runtime, it typically renders blank.

TMA Areas

tmaAreas is an array of polygon definitions used for TMA matching.

Property Type Description
airport string v3 single-airport form.
airports string[] Alternate multi-airport form.
center object Legacy fallback circle form.
id string Optional human-readable identifier.
poly {lat,lon}[] Required polygon points.
runways string[] Runways this polygon applies to.

Matching summary:

  • the timeline airport comes from destinationAirports[0]
  • the first matching area with airport and runway overlap is used
  • if no polygon matches, v3 config can fall back to airports.<ICAO>.tmaFallback

Airports

airports maps airport ICAO to airport-specific metadata.

Common airport properties

Property Type Description
runways object Runway metadata keyed by runway id, e.g. "04L": {"elevFt": 17}.
tmaFallback object Optional fallback circle using center plus radiusNm.

tmaFallback

Example:

"tmaFallback": {
  "center": { "lat": 55.64336491, "lon": 12.24763954 },
  "radiusNm": 29
}

runways

Example:

"runways": {
  "04L": { "elevFt": 17 },
  "04R": { "elevFt": 17 }
}

Advanced airport options

These are used by the current runtime and are valid advanced config.

eat_lt_spacing

Airport-specific WTC-aware landing-spacing and Expected LR settings for EAT:LT.

This block is optional. If it is missing, ALB uses complete built-in defaults. Existing configs therefore remain valid, and no config-format version increase was required for this feature.

Example:

"eat_lt_spacing": {
  "unknownCategory": "M",
  "expectedRateWindowMinutes": 30,
  "behindSec": {
    "L": { "L": 30,  "M": 30,  "H": 30,  "J": 30 },
    "M": { "L": 60,  "M": 60,  "H": 60,  "J": 60 },
    "H": { "L": 120, "M": 120, "H": 120, "J": 120 },
    "J": { "L": 180, "M": 180, "H": 180, "J": 180 }
  },
  "inFrontSec": {
    "L": { "L": 120, "M": 120, "H": 120, "J": 120 },
    "M": { "L": 60,  "M": 60,  "H": 60,  "J": 60 },
    "H": { "L": 60,  "M": 60,  "H": 60,  "J": 60 },
    "J": { "L": 60,  "M": 60,  "H": 60,  "J": 60 }
  }
}
Property Type Default Accepted values or range Description
behindSec object built-in matrix complete L/M/H/J matrix of integer seconds Minimum spacing behind the leader.
expectedRateWindowMinutes int 30 5-120 Future canonical-PLT window used for the Expected LR forecast.
inFrontSec object built-in matrix complete L/M/H/J matrix of integer seconds Minimum space required in front of the follower.
unknownCategory string M L, M, H, J Fallback WTC category used when an aircraft WTC is missing, blank, or unrecognized.

All matrix values are seconds.

Valid WTC categories are:

  • L
  • M
  • H
  • J

Matrix orientation matters:

  • behindSec[row leader][column follower]
  • inFrontSec[row follower][column leader]

Built-in default matrices:

Default behindSec

Leader \ follower L M H J
L 30 30 30 30
M 60 60 60 60
H 120 120 120 120
J 180 180 180 180

Default inFrontSec

Follower \ leader L M H J
L 120 120 120 120
M 60 60 60 60
H 60 60 60 60
J 60 60 60 60

Validation behavior:

  • unknownCategory must be a valid WTC category or the airport keeps the built-in default fallback of M
  • expectedRateWindowMinutes must be an integer from 5 through 120
  • each matrix must be a complete L/M/H/J object-of-objects
  • each matrix value must be a finite non-negative integer number of seconds
  • malformed or incomplete matrix definitions are rejected as a whole rather than partly applied

Operational notes:

  • config overrides are optional
  • a complete valid airport matrix can override the built-in defaults
  • unknown WTC uses the configured airport fallback category
  • Expected LR remains a local read-only forecast based on canonical future PLTs

viafix_track_nm_orange

Maps STAR name to configured track miles for ALB's orange timing model.

Orange timing is ALB's route or STAR-based timing estimate from the via-fix or holding-fix area toward touchdown. The value gives ALB a configured distance basis when it builds the corrected ALB estimate branch (ELT-ALB or ETA:ALB) before terminal or post-via live estimates become the better source.

This is advanced airport tuning. Wrong values can make ELT-ALB, EAT planning, and landing-timeline scheduling too early or too late.

Example:

"viafix_track_nm_orange": {
  "TESPI4C": 84.8,
  "TUDLO4C": 93.0
}

Rules:

  • values must be numeric
  • values must be greater than 0
  • values must be less than 500

How ALB uses these values:

  • ALB first tries an exact STAR-name match for the aircraft's assigned or persisted STAR
  • if there is no exact STAR match, ALB may fall back by via-fix and use the largest configured orange distance among STARs that map to that same via-fix
  • the configured value represents track miles from the via-fix or holding-area side of the arrival toward touchdown

Orange timing model behind ELT-ALB

Before the aircraft is deep into terminal or post-via handling, ALB can build its own landing estimate branch from:

  1. the current via-fix timing anchor or EVTO
  2. the configured orange distance
  3. a descent-speed model that converts track miles into seconds

The generic baseline model splits the orange distance into three buckets:

  • final 10 NM
  • the preceding 20 NM TMA segment
  • any remaining higher-distance segment before that

The baseline bucket assumptions are roughly:

  • higher segment: about 250 KIAS near FL100
  • TMA segment: about 180 KIAS
  • final 10 NM: about 145 KIAS

ALB then converts those IAS assumptions into approximate TAS and time. In the generic fallback model that is roughly:

  • 250 KIAS -> about 290 KTAS
  • 180 KIAS -> about 185 KTAS
  • 145 KIAS -> about 149 KTAS

Aircraft-aware refinement, wind, and clamping

When aircraft performance data is available, ALB can refine the orange timing using the flight plan's descent-speed information instead of only the generic jet baseline.

The current aircraft-aware model generally uses:

  • a higher descent speed around the aircraft's filed level
  • a lower descent speed around 6000 ft
  • a final descent speed around 3000 ft
  • wake-category-aware bounds so the final segment does not become unrealistic

When upper-wind data is available, ALB also lets that wind influence the orange timing by adjusting the approximate ground speed along the route.

To avoid an unrealistically optimistic ALB branch, the orange result is also bounded against the live ES branch. In practice that means ELT-ALB is not allowed to run too far ahead of the live EuroScope-based landing estimate.

Current timing guards also reject a grossly implausible near-via route ETO before it is allowed to cascade into the ALB branch. In that situation ALB can fall back to the live ES branch or retain a still-trusted prior ALB branch until the timing evidence becomes credible again.

Practical tuning guidance

  • treat viafix_track_nm_orange as airport-specific planning calibration, not as a cosmetic display tweak
  • if the value is too short, ELT-ALB and ALB-based landing planning become too early
  • if the value is too long, ELT-ALB and ALB-based landing planning become too late
  • once the aircraft is terminal or post-via, ALB should stop relying on orange distance timing and follow the live ES branch where appropriate
  • close to the via-fix, a route timing jump that is physically implausible may now be rejected instead of being propagated into the ALB branch

For a more operational explanation, see ICAO / Airport Setups. For the behavior boundary between ELT-ES and ELT-ALB, see Sequencing Model.

eat_lt_sequence_lock

Airport-specific lock threshold tuning for EAT/LT sequence behavior.

Example:

"eat_lt_sequence_lock": {
  "enabled": true,
  "baseDistanceNm": 115.0,
  "extraDistanceNm": 10.0,
  "extraBufferIasKt": 280.0,
  "extraBufferAltFt": 15000.0
}
Property Type Description
baseDistanceNm number Base distance used in threshold derivation.
enabled bool Enables this advanced airport-specific threshold.
extraBufferAltFt number Altitude used with IAS for buffer time estimation.
extraBufferIasKt number IAS used to estimate the extra buffer conversion to time.
extraDistanceNm number Additional buffer distance.

Common Ignored or Legacy Keys

Unknown keys are ignored by the current loader.

In real configs you may commonly see keys like these:

  • timelineSort-off
  • glEatCombiDisplay-off
  • viaFixColors-safe
  • aimingPointFt
  • ArrivalScenarios-ssoBackup
  • ArrivalScenarios-ssoBackup2

Important:

  • only the exact key glEatCombiDisplay is read
  • only the exact key timelineSort is read
  • only the exact key ArrivalScenarios is read
  • viaFixColors-safe and aimingPointFt are not read by the current loader