Compatibility Engine
The Compatibility Engine is the constraint-aware view over the registry and compiler. It does not merely list options. It explains which choices remain valid after the current selection.
The CLI and static Navigator App share the same exported compatibility metadata. In UI data this lives under state_engine with schema version navigator_state_engine_v1. The browser uses that payload to recompute option status, disabled reasons, compatibility messages, and YAML preview output while the researcher edits a path.
Current Rule Families
Current selection |
Effect |
|---|---|
|
Keeps tree generators: |
|
Keeps linear estimators such as |
|
Same tree-model restriction as the legacy single |
|
Same linear-estimator restriction as the legacy single |
|
Requires the current raw-panel importance runtime. |
Layer 7 detail axes |
|
|
Keeps |
|
Recommends direction tests such as |
|
Recommends density/interval calibration tests on the |
|
Current runtime uses the univariate target-history sequence route. Full multivariate |
registered custom |
Enabled in the current Python process after |
|
Requires |
|
Requires the same FRED-SD raw-panel direct route and enables the adapter payload for registered custom models, |
|
Requires an explicit |
|
Adds sidecar artifact files; the CSV prediction table remains the stable baseline artifact. |
|
Saves manifest, run summary, predictions, and forecast payload files only; Layer 4 metrics/reports and Layer 6/7 artifacts are not materialized. |
|
Adds Layer 4 metrics, comparison, and evaluation-summary artifacts but skips full-bundle data/model/tuning/inference/importance sidecars. |
|
Disabled in the current runtime because per-target/per-horizon/hierarchical result-object readers are not implemented. |
|
Treats regime handling as post-forecast evaluation filtering unless a future training-time regime gate is opened. |
|
Enabled for |
HAC/bootstrap dependence correction |
Attached to HAC/bootstrap-compatible Layer 6 choices across legacy |
Why Disabled Branches Matter
Disabled branches are not documentation warnings. They are part of the route contract.
Examples:
importance_method=tree_shap
model_family=ridge -> disabled: tree_shap requires a tree model
importance_shap=tree_shap
model_family=ridge -> disabled: tree_shap requires a tree model
forecast_object=quantile
model_family=ridge -> disabled: quantile currently requires model_family=quantile_linear
feature_builder=raw_feature_panel
forecast_type=iterated
exogenous_x_path_policy=unavailable -> disabled for executable raw-panel iterated runs
fred_sd_mixed_frequency_representation=mixed_frequency_model_adapter
feature_builder=target_lag_features -> disabled: FRED-SD adapter payloads require raw_feature_panel
model_family=my_custom_model in YAML
callable not registered in Python process -> disabled at compile/run: custom model name is unknown
Operational Versus Named-Gated
The docs distinguish values that exist in the grammar from values that are executable.
Status |
Interpretation |
|---|---|
|
Current runtime can execute the value. |
|
Current runtime executes a named narrow slice. |
|
Value is named but not wired to an executable runtime. |
|
Future design value. |
|
Requires a registered external callable/plugin. |
|
Contract has a name, but the runtime gate is closed. |
Optional Backends
Optional backends are not loaded during navigation:
optunais loaded only for bayesian tuning;xgboost,lightgbm, andcatboostare loaded only when their model family is selected.
This keeps the documentation/navigation path light while preserving the larger method surface.