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.dllloadsALBCore.dllalb-config.jsonis the live config and must not be silently overwritten by the loaderalb-config.default.jsonis the shipped template/default file
Place alb-config.json in the same plugin folder as ALB.dll and
ALBCore.dll.
Current config version support
The current ALB runtime supports:
configFormatVersion: 2configFormatVersion: 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 |
|---|---|---|---|
configFormatVersion |
int | required in practice | Config schema version. Use 3 for new configs. |
openAutomatically |
bool | true |
Opens the ALB window when the config is loaded. |
logging |
bool | false |
Enables ALB runtime text logging. |
scratchpadRunwayOverride |
bool | false |
Enables scratchpad runway override parsing for assignedRunwayOverride. |
timeSyncBeacons |
bool | false |
Enables time-sync beacon support. |
timelineSort |
string | targetFixEta |
Default timeline sort mode. Accepted values include target / tfe and landing / lde / lnd. |
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. |
holdEatWriteOnStartup |
bool | false |
Startup state for local HLW, applied only during the initial config load. |
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. |
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. |
housekeeping |
object | defaults below | Startup housekeeping settings for ALB logs and backend recording folders. |
soundMute |
object | all false |
Startup mute state for ALB sounds. |
layout |
object | defaults below | EAT display precision/suffix formatting settings. |
backendSeqSync |
object | defaults below | Backend sequence synchronization transport mode and TX-budget settings. |
backendPeerHealth |
object | defaults below | Passive backend peer update-cycle health monitoring and warning thresholds. |
glEatCombiDisplay |
object | defaults below | Optional display mapping for the combined glEatCombi field. |
timelines |
object | required | Timeline definitions. |
tagLayouts |
object | required | Tag layout definitions. |
tmaAreas |
array | optional | TMA polygon definitions. |
airports |
object | optional | Airport-specific fallback circles, runway metadata, and advanced airport tuning. |
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->ARetaModeOnStartup->ESholdEatWriteOnStartup->false
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 |
|---|---|---|---|---|
enabled |
bool | true |
n/a | Enables runtime housekeeping. |
textLogRetentionDays |
int | 14 |
1-365 |
Retention period for ALB text log families. |
textLogMaxFilesPerFamily |
int | 20 |
5-500 |
Max number of files kept per text-log family. |
backendRecordingRetentionDays |
int | 14 |
1-365 |
Retention period for backend recording material. |
backendRecordingMaxFolderMb |
int | 500 |
50-10000 |
Max size for backend recording folder before pruning. |
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. |
missed |
bool | false |
Mutes missed-approach/go-around related sounds. |
ar.all |
bool | false |
Mutes all arrival-rate related sounds. |
ar.unselected |
bool | false |
Mutes arrival-rate sounds for unselected/non-focused contexts. |
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 |
|---|---|---|---|---|
EatDisplayPrecisionSec |
int | 60 |
15 or 60 |
Display precision for EAT-style time presentation. |
EatDisplayRecalcPeriodSec |
int | 0 |
0-600 |
Display regeneration throttle. 0 means automatic. |
EatDisplayIntervalChars |
string[] | ["","a","b","c","d"] |
up to 5 one-character strings | Suffix characters used by HHMMx / HH:MMx formats. |
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:00to00:07.5-> no suffix00:07.5to00:22.5->a00:22.5to00:37.5->b00:37.5to00:52.5->c00:52.5to01:00->d
Recalc throttle
EatDisplayRecalcPeriodSec controls how often display strings are regenerated.
0= automatic- automatic means
15seconds when precision is15 - automatic means
1second when precision is60
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:
normalthrottledhorizonsuspend
Fallback behavior:
- missing
modefalls back tonormal - malformed or unknown
modefalls back tonormal
| Property | Type | Default | Accepted range or values | Description |
|---|---|---|---|---|
mode |
string | normal |
normal, throttled, horizon, suspend |
Backend seqsync transport mode. normal is immediate in steady state. |
txMaxSet2PerSecond |
int | 10 |
1-200 |
Per-second budget for queued canonical SET2 transmission. Used by throttled, horizon, suspend recovery, and temporary normal recovery drain. |
txMaxSet2PerPoll |
int | 10 |
1-200 |
Per-poll budget for queued canonical SET2 transmission. Used by the same queued or recovery paths as above. |
txQueueMaxAgeSec |
int | 30 |
1-600 |
Queue age budget for backend seqsync queue handling. |
authorityLeadMinutes |
int | 10 |
1-60 |
Horizon relevance window in minutes. Used by horizon to distinguish near-horizon traffic from far-floating traffic. |
Operational notes:
normalis immediate in steady statethrottled,horizon,suspend, and temporary recovery drain use the TX queue budgetshorizonmay suppress far-floating canonical candidates while keeping operationally relevant or uncertain aircraft canonicalsuspendsuppresses normal canonicalSET2TX, but operationalDELremains allowed and bounded- returning from
throttledorhorizontonormaluses temporary bounded recovery drain until inherited queue backlog is empty
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 |
|---|---|---|---|---|
enabled |
bool | true |
n/a | Enables passive backend peer health monitoring. |
warnAverageMs |
int | 333 |
100-5000 |
Average cycle threshold above which ALB starts treating a peer cycle window as slow. |
recoverAverageMs |
int | 200 |
50-warnAverageMs |
Average cycle threshold below which ALB may treat the peer as recovered. |
windowSec |
int | 30 |
10-300 |
Measurement window length in seconds. |
consecutiveWarnWindows |
int | 3 |
1-10 |
Number of bad windows required before warning. |
consecutiveRecoverWindows |
int | 2 |
1-10 |
Number of good windows required before recovery. |
repeatWarnCooldownSec |
int | 60 |
30-600 |
Cooldown before repeat warnings may be sent again. |
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 statuscan 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,
"holdXSec": 120,
"holdGtXState": "Eat",
"holdLeXState": "Countdown",
"afterPassYMinutes": 2,
"afterPassFirstYState": "DeltaAtPassage",
"afterPassAfterYState": "Blank"
}
Accepted state values are case-insensitive and normalized. Common values:
GainLooseorGLEatCountdownorCDDeltaAtPassageorDeltaSwitchGainLooseEatBlank
| Property | Type | Description |
|---|---|---|
unknownState |
string | Display when arrival state is unknown. |
unsequencedState |
string | Display when aircraft is unsequenced. |
sequenced1State |
string | Display for sequenced state 1. |
sequenced2State |
string | Display for sequenced state 2. |
frozen1State |
string | Display for frozen state 1. |
frozen2State |
string | Display for frozen state 2. |
switchPeriodSec |
int | Cycling period for SwitchGainLooseEat. Values below 1 are clamped to 1. |
holdXSec |
int | Hold threshold in seconds. Values below 0 are clamped to 0. |
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. |
afterPassYMinutes |
int | After-passage window length in minutes. Values below 0 are clamped to 0. |
afterPassFirstYState |
string | Display in the first Y minutes after passage. |
afterPassAfterYState |
string | Display after the first Y minutes after passage. |
Operational notes:
holdXSecandholdGtXStateseed 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 toEat holdLeXStateis the inside-threshold display and is normally kept asCountdown- unsupported
holdGtXStatevalues are normalized toBlank
The hold-display button uses compact labels such as:
2 EAT2 GL2 SW2 ---
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 |
|---|---|---|---|
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. |
tagLayout |
string | none | Tag layout id to use. Must exist in tagLayouts. |
viaFixes |
string[] | [] |
Optional via-fix lanes. The placeholder "-----" can be used as a visual separator. |
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. |
destinationAirports |
string[] | [] |
Optional destination ICAO filter. If non-empty, only matching destinations are included. |
runways |
string[] | [] |
Optional runways relevant for this timeline. |
defaultTimeSpan |
uint | 30 |
Initial visible timeline span in minutes. |
forceSingleTimeline |
bool | false |
Forces a single timeline even when two target fixes are configured. |
viaFixColors |
string[] | palette | Optional custom RGB colors for real via-fix lanes. |
Notes on ArrivalScenarios
- Operational note:
ArrivalScenariosis retained for compatibility and history. Scenarios are no longer part of the recommended normal ALB workflow. Current operation should normally useEAT:LTlanding-timeline monitoring and correction instead of scenario switching. - 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:
- legacy array format
- 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. |
timelineLayout |
string | runtime default | Layout hint. Accepted values include runway and feeder. |
timelineSort |
string | runtime default | Optional per-layout sort mode. |
items |
array | required | Ordered list of tag items. |
Tag Item Properties
| Property | Type | Default | Description |
|---|---|---|---|
source |
string | "" |
Source field to render. |
width |
uint | 1 |
Reserved character width. |
rightAligned |
bool | false |
Right-aligns the rendered value. |
isViaFixIndicator |
bool | false |
Colors the field using the via-fix lane color. |
defaultValue |
string | "" |
Fallback/default value, especially for static. |
format |
string | "" |
Optional time formatting override for time-backed sources. |
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:
estimatedLandingTimeestimatedLandingTimeEsestimatedLandingTimeSsoestimatedLandingTimeAlbplannedLandingTimeplannedLandingTimeEsplannedLandingTimeSsoplannedLandingTimeAlbunderlyingEATunderlyingEAThmsunderlyingEATEsunderlyingEATAlbviaFixETOviaFixETOhmstimelineAnchortimelineAnchorHms
Tag Item Sources
Below are the common operational and advanced layout sources used by the current runtime.
| Source | Meaning |
|---|---|
static |
Static text from defaultValue. |
callsign |
Aircraft callsign. |
ATCShort |
Tracking controller short id. |
ATCLong |
Tracking controller long id. |
assignedRunway |
Assigned landing runway. |
assignedRunwayOverride |
Scratchpad-based runway override. |
assignedStar |
Assigned STAR. |
aircraftType |
ICAO aircraft type. |
aircraftWtc |
Wake turbulence category. |
minutesBehindPreceedingRounded |
Spacing behind the preceding aircraft in rounded minutes. |
timeBehindPreceeding |
Spacing behind the preceding aircraft in mm:ss. |
remainingDistance |
Remaining distance to target fix in NM. |
remainingDistance1d |
Remaining distance with one decimal place. |
distanceGapNmToPrevious |
NM spacing/gap to the previous aircraft. |
viaFixDistNmToGo |
Remaining NM to the via-fix. |
viaACToViaFixSec |
Seconds from aircraft to via-fix. |
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. |
estimatedLandingTime |
Active estimated landing time. |
estimatedLandingTimeEs |
ES landing ETA branch. |
estimatedLandingTimeSso / estimatedLandingTimeAlb |
SSO/ALB landing ETA branch. |
plannedLandingTime |
Active planned landing time. |
plannedLandingTimeEs |
ES planned landing time. |
plannedLandingTimeSso / plannedLandingTimeAlb |
SSO/ALB planned landing time. |
underlyingEAT |
Active underlying EAT display value. |
underlyingEAThms |
Underlying EAT with seconds. |
underlyingEATEs |
ES-side underlying EAT branch. |
underlyingEATAlb / underlyingEATSso |
SSO/ALB-side underlying EAT branch. |
glEatCombi |
Combined gain/lose and EAT field. |
viaFixLooseGain |
Via-fix gain/lose display. |
landingLooseGain |
Landing/threshold-based gain/lose display. |
viaFix |
Via-fix lane. |
viaFixETE |
Estimated time enroute to via-fix. |
viaFixETO |
Estimated time over via-fix. |
viaFixETOhms |
Estimated time over via-fix with seconds. |
viaFixSeqIndexCurrent |
Current per-via-fix sequence index. |
viaFixSeqIndexFixed |
Fixed per-via-fix sequence index. |
landingSeqIndexCurrent |
Current landing sequence index. |
landingSeqIndexFixed |
Fixed landing sequence index. |
targetFix |
Active target fix for the aircraft. |
targetFixEta |
Estimated time over target fix. |
targetFixATCTime |
Estimated time over target fix including delay logic. |
timelineAnchor / timelineAnchorHms |
Active timeline anchor time used for ordering/display. |
timelineAnchorSource |
Source of the timeline anchor. |
etaSource |
Current ETA branch/source identifier. |
holdingFix |
Holding fix if available. |
holdingEAT |
Hold-related EAT text. |
holdingEATm |
Manual-hold-EAT marker. |
holdPhase |
Holding phase indicator. |
FlightPhase |
Determined flight phase. |
ArrivalState |
Determined arrival state. |
inboundGrouping |
Current inbound grouping bucket. |
arrivalSeqNo |
Raw arrival sequence number. |
arrivalSeqMin |
Minimum airborne arrival sequence number. |
arrivalSeqMax |
Maximum assigned arrival sequence number. |
arrivalSeqDisp |
Display sequence number. |
arrivalSeqFrontier |
Sequencing frontier marker. |
obsNote3 |
3-character observation/note abbreviation. |
bookingStatus |
Backend booking/event-slot status text. |
acno |
Internal aircraft ordinal number. |
isPastViaFix |
Y/N flag for via-fix passage. |
groundSpeed |
Ground speed. |
groundSpeed10 |
Ground speed in tens. |
altitude |
Altitude/flight level display. |
transitionAltitude |
Transition altitude. |
scratchPad |
Scratchpad text. |
directRouting |
Direct-to or next-route-fix display. |
cadFinalAlt |
Controller-assigned final altitude. |
cadTempAlt |
Controller-assigned temporary altitude. Special values 1 and 2 display as cINS and cVIS. |
cadAssignedHeading |
Controller-assigned heading. |
cadAssignedSpeedMach |
Controller-assigned speed (K...) or Mach (M...). |
cadAssignedRate |
Controller-assigned rate. |
cadGroundState |
Controller-assigned ground state. |
cadClearanceFlag |
Clearance flag (CLR). |
cadScratchpad |
CAD scratchpad mirror. |
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 |
|---|---|---|
id |
string | Optional human-readable identifier. |
airport |
string | v3 single-airport form. |
airports |
string[] | Alternate multi-airport form. |
runways |
string[] | Runways this polygon applies to. |
poly |
{lat,lon}[] |
Required polygon points. |
center |
object | Legacy fallback circle form. |
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 |
|---|---|---|
tmaFallback |
object | Optional fallback circle using center plus radiusNm. |
runways |
object | Runway metadata keyed by runway id, e.g. "04L": {"elevFt": 17}. |
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 |
|---|---|---|---|---|
unknownCategory |
string | M |
L, M, H, J |
Fallback WTC category used when an aircraft WTC is missing, blank, or unrecognized. |
expectedRateWindowMinutes |
int | 30 |
5-120 |
Future canonical-PLT window used for the Expected LR forecast. |
behindSec |
object | built-in matrix | complete L/M/H/J matrix of integer seconds |
Minimum spacing behind the leader. |
inFrontSec |
object | built-in matrix | complete L/M/H/J matrix of integer seconds |
Minimum space required in front of the follower. |
All matrix values are seconds.
Valid WTC categories are:
LMHJ
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:
unknownCategorymust be a valid WTC category or the airport keeps the built-in default fallback ofMexpectedRateWindowMinutesmust be an integer from5through120- each matrix must be a complete
L/M/H/Jobject-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:
- the current via-fix timing anchor or EVTO
- the configured orange distance
- 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 NMTMA segment - any remaining higher-distance segment before that
The baseline bucket assumptions are roughly:
- higher segment: about
250 KIASnearFL100 - TMA segment: about
180 KIAS - final
10 NM: about145 KIAS
ALB then converts those IAS assumptions into approximate TAS and time. In the generic fallback model that is roughly:
250 KIAS-> about290 KTAS180 KIAS-> about185 KTAS145 KIAS-> about149 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.
Practical tuning guidance
- treat
viafix_track_nm_orangeas airport-specific planning calibration, not as a cosmetic display tweak - if the value is too short,
ELT-ALBand ALB-based landing planning become too early - if the value is too long,
ELT-ALBand 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
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 |
|---|---|---|
enabled |
bool | Enables this advanced airport-specific threshold. |
baseDistanceNm |
number | Base distance used in threshold derivation. |
extraDistanceNm |
number | Additional buffer distance. |
extraBufferIasKt |
number | IAS used to estimate the extra buffer conversion to time. |
extraBufferAltFt |
number | Altitude used with IAS for buffer time estimation. |
Common Ignored or Legacy Keys
Unknown keys are ignored by the current loader.
In real configs you may commonly see keys like these:
timelineSort-offglEatCombiDisplay-offviaFixColors-safeaimingPointFtArrivalScenarios-ssoBackupArrivalScenarios-ssoBackup2
Important:
- only the exact key
glEatCombiDisplayis read - only the exact key
timelineSortis read - only the exact key
ArrivalScenariosis read viaFixColors-safeandaimingPointFtare not read by the current loader