strategic-posture) surfaces theater-level military posture assessments — the cached “seed” view of each theater blended in real time with live military-vessel movements so the rendered posture reflects today’s deployments, not yesterday’s.
What the panel shows
A vertical list of theater posture cards. Each card includes the theater name, the current posture summary, and click-through affordances: selecting a theater fires an optional location-click callback so the host can zoom the map to its coordinates. The panel’s internal loading UX is notable: it tracks elapsed time with asetInterval while waiting for the posture + vessels fetch to resolve, so the reader gets a visible progress signal on slow runs. When the seed is stale, the panel sets a stale indicator (isStale) so the card surface can flag it.
Under the hood the panel:
- Loads cached posture via
fetchCachedTheaterPosture(). - Fetches current military vessels via
fetchMilitaryVessels(). - Recomputes posture on-the-fly with
recalcPostureWithVessels()so the displayed summary is a fresh surge estimate, not just the cached value.
strategic-posture; canonical component is src/components/StrategicPosturePanel.ts. Title resolves from i18n (panels.strategicPosture); config sets 'AI Strategic Posture' at src/config/panels.ts:23.
How you reach it
- Cmd+K: type posture or strategic.
- Availability by variant: registered and enabled by default in the full/geopolitical variant only. Free on the web; on desktop the variant registration spreads
{ premium: 'enhanced' as const }into the config so the panel becomes enhanced-gated on the desktop build. Source:'strategic-posture'entry inFULL_PANELSatsrc/config/panels.ts:23(nopremiumset; desktop variants elsewhere layer on enhanced gating per the_desktop &&pattern).
Data sources
- Cached posture: seed-level theater posture summaries, read via
@/services/cached-theater-posture. - Military vessels: live positions via
@/services/military-vessels(the same feed that drives the military map layer). - Surge recalculation:
recalcPostureWithVessels()in@/services/military-surgeblends cached baseline with today’s vessel positions to produce the displayedTheaterPostureSummary.
Refresh cadence
The panel is not on a polling timer — it fetches on mount and re-renders on relevant external triggers. The underlying posture seed refreshes on the military cron; live vessel positions refresh with the AIS relay.Tier & gating
Free on web; enhanced on desktop. Registered withoutpremium in the full-variant FULL_PANELS entry (src/config/panels.ts:23), so the web build doesn’t gate it. The desktop build layers on premium: 'enhanced' in other variant contexts — this is why the panel appears free on web but behind an upgrade CTA on the desktop app.
API reference
- Military service — backing feeds for theater posture + vessels.
- Related: Military Tracking — the map-layer view of the same underlying dataset.
