Marker interface: an infrastructure module that OPTS IN to the LeanShell navigation.
Ui5Infrastructure modules are platform plumbing. In the SDK's navigation
policy they are hidden from the shell nav by default — most infrastructure
(an auth/login flow, diagnostics) has no user destination. An infrastructure
module that DOES expose a navigable app (e.g. the Partners console) declares
this marker to appear. NavigationBuilder checks it only in combination with
Ui5Infrastructure:
if ($module instanceof Ui5Infrastructure && !($module instanceof ShowInNavigation)) { continue; // infra, not opted in → not in the rail }
The two markers are kept independent (this one does NOT extend Ui5Infrastructure)
so the "only for infra" rule stays a NavigationBuilder policy, not a type
constraint: on a non-infra business module this marker is simply a harmless no-op
(business-module visibility is a product decision — they always appear). Core stays
neutral: it describes that infrastructure may expose navigation targets; this SDK
marker is where the "hidden unless opted in" policy lives.
This interface has no methods by design — implementing it is an explicit opt-in.
Two boundaries to know:
Opt-in trap (infra only). A future SDK infrastructure module with a navigable app that forgets this marker silently vanishes from the rail. The surface is infra-only and the failure is self-diagnosing (app missing → marker missing); infrastructure-hidden-by-default is the intended default.
Unreachable to Core-only modules. This is an SDK type, so a Core-only
module (e.g. AuthModule, which is deliberately SDK-free) cannot implement it
and can never appear in the SDK LeanShell nav. Fine today — the only Core-only
infra module is Auth, which we want hidden. If a Core-only infra module ever
needs to be navigable in an SDK host, this flag must graduate to Core.