Skip to content

monad.ai


monad.ai / WeightHealth

Type Alias: WeightHealth

WeightHealth = object

Defined in: kernel/adaptiveWeights.ts:51

Runtime health signals for the adaptive learning loop.

These are diagnostic, not prescriptive — they surface conditions that warrant attention, not automatic corrections. All four can be false simultaneously on a healthy, well-calibrated system.

Properties

deadScorer

deadScorer: string | null

Defined in: kernel/adaptiveWeights.ts:74

Name of a scorer whose weight has dropped near the WEIGHT_MIN floor.

A dead scorer is effectively not participating in selection. If the scorer encodes a signal that should matter (e.g., latency for a latency-sensitive workload), the learning loop may have over-penalized it from early failures. Consider raising its per-claim _weight_<name> override to inject a floor above WEIGHT_MIN.

null if no scorer is near the floor.


dominantScorer

dominantScorer: string | null

Defined in: kernel/adaptiveWeights.ts:62

Name of a scorer that has captured more than 70% of total weight.

A dominant scorer means the other signals are largely ignored. This may be correct (e.g., resonance is genuinely the best predictor) or a sign of overfitting to a narrow workload. Inspect the scorer delta table in the offline analyzer to distinguish the two.

null if no scorer exceeds the threshold.


noLearning

noLearning: boolean

Defined in: kernel/adaptiveWeights.ts:93

True when 10 or more updates have been applied but no weight has moved more than 0.002 from its default.

Possible causes: all requests are going to name-selector monads (no mesh-claim decisions), zero-contribution breakdowns (scorer values are all zero), or the bridge is not calling correlateOutcome. Check that MONAD_DEBUG_WEIGHTS=1 shows updates after forwarded requests.


oscillation

oscillation: boolean

Defined in: kernel/adaptiveWeights.ts:83

True when the recent reward signal alternates sign frequently.

Computed over the last 10 rewards: if more than 40% of consecutive pairs change sign, the learning loop is receiving contradictory signal. Common causes: two claimants with similar scores and opposite reliability profiles, or an exploration rate that is too high for the current mesh size.