Exactly what every field means, how devices must emit, and how receivers should interpret it.
2.4 Field definitions (normative)
These definitions make Shunyaya Symbolic Mathematical Temperature (SSMT) predictable. Every receiver, auditor, downstream AI, or safety system should interpret these fields the same way.
We’ll walk through each block in the manifest:
version- Spec version string, for example
"1.1". - Purpose: lets you know which SSMT ruleset this manifest follows.
- Spec version string, for example
compliance_level"S1"→ onlye_T."S2"→ adds phase dial and hysteresis memory (a_phase, Q_phase)."S3"→ adds bounded fleet dial (a_T), pooling, gating hooks.- You must be honest. Don’t claim
"S3"if you’re only emittinge_T.
lens"log"|"linear"|"beta"|"kBT"|"hybrid"|"qlog"|"smooth_hybrid".- One lens per stream/study/mission. No silent switching.
anchorsblockT_ref(K): required. This is the zero point wheree_T = 0.DeltaT(K): only iflens == "linear". Must satisfyDeltaT > 0.E_unit(J/mol): only iflens == "kBT". Must satisfyE_unit > 0.c_T > 0: required only if you emita_T. This controls how sharp the bounded dial responds to e_T.tau > 0(K): only iflens == "hybrid"orlens == "smooth_hybrid".alpha > 0: only iflens == "qlog"(or qlog-style near-zero form).- Optional
T_ref_policy:"fixed","seasonal","diurnal", or"rolling-<window>".- If you are not strictly fixed at one baseline (for example, you track human comfort that shifts day/night), you must say so.
- You still cannot silently change policy mid-run.
guardsblockclamp_a_epsin(0, 1e-3], default1e-6.- This is the clamp for any bounded dial like
a_Tora_phase, enforcing|a| <= 1 - clamp_a_eps.
- This is the clamp for any bounded dial like
eps_win(0, 1], default1e-12.- Guard in pooling math so denominators never go to zero.
- Only needed if you do pooling / averaging across sensors.
eps_TK > 0, default1e-6.- Kelvin floor after conversion. Keeps math stable near 0 K.
T_valid_range_K = [T_min, T_max], with0 < T_min < T_max.- Declares the physical/safe range expected for that deployment.
- Used to set health flags and
oor(“out of range”) later.
phase_block(optional)T_m_list: list of pivots representing material or safety thresholds.- Each pivot is
{ tag, T_m, DeltaT_m > 0, c_m > 0 }. - Example tags:
"water_freeze","hull_warp","skin_burn".
- Each pivot is
rhoin(0,1)- Memory factor for hysteresis (
Q_phase). Higher → slower to flip state.
- Memory factor for hysteresis (
k_side > 0- Controls how sharp
p_sideflips across the pivot.
- Controls how sharp
- If you don’t provide
T_m_list, you are not emitting a phase dial. That’s allowed. That’s S1.
pooling(optional)weight_rule:"equal","inv_var", or"health".- This declares how you weight multiple dials (like
a_Tfrom many sensors) before doing rapidity pooling. - Critical for fleets, arrays, or multi-sensor fusion — auditors need to know how you aggregate.
health_flagsenable_range_ok(true/false)enable_sensor_ok(true/false)enable_drift(true/false)- You’re telling downstream consumers which health flags to expect in payloads.
- If you turn these on, you’re committing to emit them.
validation(optional)dataset_ref,test_vectors_ref: where your comparison data lives.metrics: named thresholds like{ E_hot: 0.8, Phi_freeze: 0.10 }.- This is how you prove that your alerting choices weren’t magic.
- It’s also how Shunyaya Symbolic Mathematical Temperature (SSMT) builds credibility over time (regulators, QA, safety boards).
privacy(optional){ mode: "P0"|"P1"|"P2", step?, b?, eps? }- This declares any quantization/noise policy if you’re trying to hide exact Kelvin.
- If it’s not declared here, you should not claim privacy later.
gate(optional){ enabled, lane, w, L, kappa, mu, rho_g, theta_g }- This is your declared environmental gate (env-gate) recipe.
- If you say “we throttle chemistry when it’s unsafe,” this block is where you prove you’re not improvising per incident.
laneexpresses how you combinea_T,Q_phase, and/ora_phaseto form risk.theta_gis the published policy threshold.
outputs- Explicit booleans like:
emit_e_T: trueemit_a_T: falseemit_a_phase: trueemit_Q_phase: true
- You’re telling the world which symbolic channels you actually put on the wire.
- This prevents downstream confusion like “why is a_T missing on this site?”
- Explicit booleans like:
notes- Free text.
- Store intent, deployment context, safety rationale.
- Do not put PII here.
Summary: after reading a manifest, a downstream system should be able to:
- Recompute e_T from Kelvin.
- Interpret a_phase and Q_phase near critical pivots.
- Understand what
range_okandsensor_okmean. - Know exactly what was emitted and why.
2.5 Emitted payload (normative keys)
Devices must emit stable keys that match the manifest. Human dashboards can still show °C/°F for comfort or regulatory forms, but that is display-only. Machine logic consumes the symbolic fields.
Here is the canonical SSMT payload:
{
"timestamp_utc": "2025-09-24T12:00:00Z",
"e_T": 0.0331,
"a_T": -0.12, // optional, only if emit_a_T == true
"a_phase": -0.31, // optional, single pivot form
"a_phase_fused": 0.42, // optional, multi-pivot form
"Q_phase": 0.31, // optional, hysteresis memory in [0,1]
"T_m_tag": "water_freeze", // optional if single pivot
"T_m_tag_list": ["water_freeze","hull_warp"], // optional if fused
"manifest_id": "SSMT-CITY-2025-09-001",
"health": {
"range_ok": true,
"sensor_ok": true,
"drift": false
},
"oor": false, // or "below_min" or "above_max"
"uncertainty": {
"e_T_std": 0.004,
"a_T_std": 0.02,
"method": "delta"
}
}
Normative expectations:
timestamp_utcmust be ISO-8601 UTC withZ. No local time.manifest_idmust correspond to a published manifest. No orphan streams.e_Tmust always be present.health.range_okmust always be present.- If you emit a phase dial:
- Use either
a_phase(single pivot) ORa_phase_fused(multi-pivot), not both. - If
a_phaseis present, include a singleT_m_tag. - If
a_phase_fusedis present, includeT_m_tag_list(non-empty).
- Use either
Q_phaseis optional but becomes important in freeze / melt / warp edges. It tells you if you’ve been “effectively unsafe” for long enough to care.oor(“out of range”):falsemeans you’re insideT_valid_range_K."below_min"or"above_max"tells you how you violated it.
uncertaintyis optional. If you include it, you must say how you computed those std-like numbers.
MQTT-friendly minimal (Lite / S1 style) example:
{
"timestamp_utc": "2025-09-24T12:00:00Z",
"e_T": 0.0331,
"a_phase": -0.12,
"Q_phase": 0.31,
"manifest_id": "SSMT-CITY-2025-09-001",
"health": { "range_ok": true, "sensor_ok": true, "drift": false },
"oor": false
}
Guidance:
- Keep MQTT payloads pure ASCII JSON.
- Do NOT inject raw “°C” or “°F” into the machine payload. If a dashboard wants to show “21.4 °C,” that belongs in display/UI code, not in the core stream.
2.6 Validity and domain-violation semantics (must)
This section explains how to behave when the world gets ugly: broken sensors, Kelvin going out of range, or math that’s not defined.
- Out-of-range Kelvin
- You publish
T_valid_range_K = [T_min, T_max]in the manifest. - At runtime:
if T_K < T_min or T_K > T_max: health.range_ok := false oor := "below_min" or "above_max" T_K_eff := clamp(T_K, T_min, T_max) e_T_eff := encode_eT(T_K_eff, ...) - You continue computing symbols using
T_K_effonly to maintain numeric stability. - You do NOT “pretend it’s fine.” You mark it as out-of-range.
- You publish
- Lens domain violations
Some lenses are not valid for bad inputs:log/beta: requireT_K > 0ANDT_ref > 0.linear: requiresDeltaT > 0.kBT: requiresE_unit > 0.qlog: requiresT_ref > 0andalpha > 0.- If you violate these guards:
- set
health.sensor_ok := false. - You are telling downstream systems: “do not trust this reading as physically meaningful.”
- set
- Kelvin floor
- After converting to Kelvin from °C/°F/K, you must apply the floor:
T_K := max(T_K, eps_TK) eps_TKis declared inguards.- Purpose: keep math from blowing up near 0 K and keep contrasts well-behaved.
- After converting to Kelvin from °C/°F/K, you must apply the floor:
- No silent coercion of decision thresholds
- Clamping to
T_K_effis for numeric stability and continuity ofe_T. - It does NOT mean you’re allowed to say “everything is normal.”
- Consumers must still look at
range_ok,sensor_ok,drift, andoor.
- Clamping to
Why this matters:
- You get reproducibility. Anyone replaying this data later can see exactly when a sensor wandered off the rails and how you handled it.
- You get auditability. You can defend why an alert did or didn’t fire, without saying “the code panicked, so we fudged it.”
Where we are now
By the end of 2.6, we’ve locked down three things:
- The meaning of every manifest field (2.4).
- The exact JSON each device must emit (2.5).
- The mandatory safety behavior when readings go weird (2.6).
This is the heart of compliance. It’s how Shunyaya Symbolic Mathematical Temperature (SSMT) becomes acceptable to legal, operations, ML, reliability, and regulators — all from the same surface.
Navigation
Previous: SSMT – Field-Level Contract for Each Stream (2.0–2.3)
Next: SSMT – Profiles and Upgrade Path (2.7–2.9)
Directory of Pages
SSMT – Table of Contents