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.