Live Compatibility
Flux.spot is the canonical current-state card surface. This page preserves the historical Flux Live wording for operators following older links.
Spot cards are intended to be small, copyable context objects:
- Card definition: scope, group, kind, title, and point address space.
- Snapshot: current values, units, quality, stale state, and read time.
Copy Context
The top-left card marker copies card context:
- First click: compact Markdown table for quick handoff.
- Second click: LLM export with card identity, address space, snapshot, JSON, and docs link.
See spot-card-context.md. The older live-card-context.md page remains as a compatibility explanation.
Runtime Freshness Contract
Flux.spot does not bind the browser directly to Ignition tags. A Spot page reads cached Flux rows:
Flux.serve worker -> Flux.opt sampler -> LatestTagValue + TagSample -> Flux.spot cards
Current reality:
- Spot cards and the dashboard Overall banner read
LatestTagValuerows. - Stale means no fresh
LatestTagValue.read_atexists inside the stale threshold, even if the last quality wasGood. - The dashboard stale recovery button performs one consolidated Fluxy block read for the selected stale tags.
- The Fluxolot proof path has a dedicated sampler service,
fluxolot-live-sampler, started byflux start. - The general interface-health sampler contract is still incomplete: the service exists as
flux_sampling_worker, but dashboard health should not depend on manual page refreshes or per-request reads.
Target contract:
Flux.servesupervises a required sampler when interface runtime tags exist.Flux.optowns due-tag selection, hot/warm/cold planning, demand leases, and block reads.Flux.spotowns freshness semantics and presentation of cached values.Flux.webmay HTMX-poll a small cached-health fragment, but browser polling must not perform Ignition reads.
Hot, Warm, And Cold Reads
Flux has the model pieces for a tiered read contract:
RuntimeDemandmarks currently visible or requested tags as hot.OptimizationLeaserecords short-lived explicit demand.RefreshLanestores hot/warm/cold intervals and limits.RuntimeSchedulerConfigstores scheduler defaults and balancer settings.
Current gap: RefreshLane is configurable from the dashboard, but it is not yet the full scheduler used by flux_sampling_worker. Treat hot/warm/cold lanes as target contract until the sampler uses them directly.
Operator Checks
When Spot shows Good and Stale, check sampler liveness before blaming the card:
flux status
flux doctor
flux logs
For Fluxolot specifically, the sampler command is:
uv run python web/Flux/manage.py flux_sampling_worker --profile fluxolot-fishtank
If the sampler is stale or absent, page reloads may only reveal old cached state. The fix is to restore the worker path, not to add browser-driven Ignition IO.