the short answer
Ask Jev for separate atomic semantic judgments, normalize only genuinely comparable values, and combine them with explicit code-owned weights. Keep hard vetoes and authorization outside the weighted average, define missing-value behavior, and retain every raw distribution. Fit weights and action thresholds on outcomes; do not treat a composite as a calibrated probability unless that claim is tested separately.
- Model role
- Produce atomic typed judgments
- Code role
- Normalize, weight, veto and act
- Audit requirement
- Retain raw components and versions
- Main danger
- Averages hide severe failures
- Calibration
- Composite needs its own outcome validation
Composite Scoring Is Application Logic
A workflow may care about task completion, answer grounding, policy compliance and user impact. One broad “quality” prompt hides which dimension failed and makes remediation difficult. TypeSafe’s composite-scoring pattern instead asks atomic questions and combines their outputs in ordinary code.
The formula is a product policy, not a Jev primitive. It expresses tradeoffs and must be reviewable independently from the model. Version weights, transformations, vetoes and thresholds just as you version the questions and state projection.
Define What the Composite Represents Before Writing a Formula
A number cannot be validated until its claim is named. “Quality score” often mixes a descriptive index, a prediction and a policy decision. Write the target population, outcome, time horizon and downstream action first. If no real-world event corresponds to the number, do not label it confidence or probability.
Keep measurement separate from preference. Jev components estimate bounded semantic propositions or ordered rubrics; weights express how the product trades those dimensions. Changing a weight is a policy change even when every model output remains identical.
| Composite purpose | Target event | Appropriate interpretation |
|---|---|---|
| Release quality index | None; ranks builds against a product rubric | Policy index, not a probability |
| Probability of task success | Observed task success under a fixed definition | Predictive probability only after calibration |
| Review priority | Relative urgency for a constrained queue | Ranking score validated with queue outcomes |
| Runtime allow decision | Cost-sensitive safe-action event | Decision rule with explicit vetoes and error costs |
A Transparent Weighted Calculation
This formula is illustrative, not a recommended universal weighting. Completion and grounding receive more weight because the hypothetical product owners assigned them higher cost. A policy violation bypasses the average: excellent clarity must not cancel a serious compliance signal.
components = {
"completion": completion_noul, # 0..1
"grounding": grounding_noul, # 0..1
"clarity": clarity_score / 2, # rubric levels 0..2 normalized
}
weights = {"completion": 0.45, "grounding": 0.40, "clarity": 0.15}
if policy_violation_noul >= POLICY_REVIEW_THRESHOLD:
decision = "review" # veto: never averaged away
else:
composite = sum(weights[k] * components[k] for k in weights)
decision = band_for(composite)
Design Components That Are Atomic and Non-Duplicative
Each component should have its own evidence boundary, label rubric and reason to change an action. Correlated components are not automatically invalid, but weights no longer represent independent contributions. Inspect correlation, disagreement and slice errors before claiming that adding dimensions adds information.
Run an ablation: compare the full composite with each component alone and with each component removed. If a component never changes ranking or action on held-out data, it adds latency and maintenance without measured value. The evaluate-the-evaluator guide supplies component validity gates.
| Bad component set | Problem | Better decomposition |
|---|---|---|
| Correctness, factuality, grounding | Overlapping signals count one failure several times | Claim correctness and supplied-evidence support |
| Quality, helpfulness, satisfaction | Undefined broad constructs share hidden causes | Task completion, instruction fit and observed user outcome |
| Safety plus authorization | Probabilistic judgment can obscure an exact denial | Semantic risk signal plus separate deterministic authorization |
| Overall score plus sub-scores | Overall score leaks the intended aggregate back into inputs | Only independently interpretable dimensions |
Normalization Creates Assumptions
A Noul already lies between zero and one, but its probability is tied to one event. A three-level Score with values 0, 1 and 2 can be divided by two, yet that assumes the ordinal level spacing is useful for this formula. Choice confidence measures concentration and should not be inserted as though it were probability of correctness.
Document directionality, scale and missingness for every component. If one dimension is unavailable, decide whether to fail the composite, renormalize remaining weights, impute conservatively or route to review. Each choice changes the meaning of the score.
Do Not Combine Values Merely Because They Fit Between Zero and One
The confidence-versus-probability guide explains why concentration cannot stand in for correctness. The Score-versus-Choice guide explains why an ordered expected value and a categorical distribution answer different questions. Preserve these meanings through normalization.
| Value | What it represents | Composite warning |
|---|---|---|
| Noul probability | Probability assigned to one stated proposition | Different Nouls may target different events and base rates |
| Choice candidate probability | Relative mass among supplied candidates | Not a universal correctness or fit probability |
| Choice confidence | Concentration of the candidate distribution | Ambiguity is not the same as failure |
| Normalized Score | Expected position on caller-defined ordered labels | Spacing between labels is an application assumption |
| Missing component | No valid measurement | Not zero, neutral or average by default |
Do Not Average Away Hard Constraints
Weighted sums are compensatory: a high value in one component can offset a low value in another. That is appropriate only when the product genuinely accepts that trade. Use conjunctions, minimums or vetoes when one failure is independently unacceptable.
| Signal | Composite treatment |
|---|---|
| Exact authorization failure | Deterministic deny before model scoring |
| High-consequence policy condition | Separate veto or mandatory review |
| Missing required evidence | Unscorable/review, not a neutral numeric value |
| Ordinary quality dimension | Candidate for a measured weighted component |
| Transport failure | Explicit outage path, never zero-fill silently |
Make Missingness a Branch in the Decision Graph
This application pseudocode makes the order visible: exact constraints, evidence sufficiency, semantic vetoes, completeness and only then a compensatory score. A model timeout, truncated state and genuinely inapplicable criterion are different missingness mechanisms and may require different actions.
Renormalizing remaining weights changes the construct. A response scored only on clarity and style is not a lower-information version of completion-plus-grounding quality; it is a different score. If renormalization is allowed, version and validate each missingness pattern separately.
def decide(measurements):
if measurements.authorization == "deny":
return "deny"
if measurements.required_evidence_missing:
return "review"
if measurements.semantic_veto >= VETO_THRESHOLD:
return "review"
available = required_components(measurements)
if not available.complete:
return "unscorable"
value = weighted_sum(available.normalized)
return action_band(value)Compare the Weighted Sum with Simpler Decision Rules
A learned combiner is not automatically more objective. It encodes the labels, sampling process and loss function supplied to it, and it can exploit spurious correlations between components. Start with an interpretable baseline and adopt a learned layer only when held-out outcomes show a practically meaningful improvement.
Sculley et al. describe how entanglement and hidden consumers create technical debt in ML systems. Composite evaluators have the same risk: one convenient aggregate can spread into dashboards, alerts and release gates until its original assumptions are invisible. Track every consumer and version the semantic contract.
| Rule | Useful when | Main tradeoff |
|---|---|---|
| Weighted sum | Dimensions are genuinely compensatory | Weights and scale assumptions can hide weak components |
| Minimum component | The weakest required dimension limits acceptability | Sensitive to noisy component estimates |
| Logical conjunction | Every requirement must pass | Coverage can collapse as criteria accumulate |
| Veto plus weighted sum | A few failures are non-negotiable; others trade off | More branches to calibrate and monitor |
| Learned meta-model | Enough representative labels exist for interactions | Adds training, leakage, calibration and drift complexity |
Fit and Validate the Complete Decision Rule
A composite value is not automatically calibrated merely because its inputs are. Test its reliability against the outcome it claims to predict. Report raw component errors and the cases where the formula changes the action. Follow Jev calibration and thresholds.
- Define the downstream outcome and error-cost objective.
- Evaluate each atomic question for validity, calibration and slice behavior.
- Choose weights on development/calibration data with constraints set by domain owners.
- Compare the composite with simple baselines, including the best single component.
- Lock weights and thresholds, then report on untouched data and shadow traffic.
Evaluate the Score at Three Levels
Use grouped development, calibration and test partitions. Tune questions and candidate components on development data, fit transformations and action bands on calibration data, then evaluate the locked pipeline once on test. The dataset guide covers leakage boundaries; the benchmark protocol covers paired uncertainty.
Report monotonicity checks and counterfactuals. Improving grounding while holding everything else fixed should not lower an intended quality index. Triggering a veto should never be cancelled by another component. These properties can be unit-tested even before statistical validation.
| Level | Question | Evidence |
|---|---|---|
| Component | Does each Jev question measure its stated construct? | Blind labels, calibration and slice errors |
| Formula | Does the aggregation improve the intended outcome? | Ablations, baseline comparison and paired holdout results |
| Decision policy | Does thresholding create acceptable errors and workload? | Risk-coverage curve, review volume and downstream cost |
Store the Ingredients, Recipe and Result
Without components, an aggregate regression cannot be diagnosed and a new formula cannot be replayed. Preserve immutable inputs or governed references, then compute candidate recipes offline before changing production.
- Raw typed answers and full distributions.
- Resolved model, provider, state and question versions per component.
- Normalization transform, weight set, veto and missing-value policy versions.
- Composite value, selected action and threshold band.
- Override, reviewer decision and eventual outcome.
Monitor Components Before the Aggregate
A stable average can hide opposing movement: grounding may fall while clarity rises enough to offset it. Track each component’s availability, distribution, calibration, action-band contribution and slice errors alongside the composite. Alert on veto rate and missingness separately because their operational effects are discontinuous.
When a model, question, projection, transform, weight or threshold changes, replay the same frozen cases and attribute movement by layer. The drift-monitoring guide defines the production event; regression testing defines promotion and rollback evidence.
FAQ
Can Jev calculate the composite score?
Keep the arithmetic in code. Jev 1.13 is not a calculator; it should produce the bounded semantic components.
Are composite scores calibrated probabilities?
Not automatically. The weighted output is a policy score unless it is independently calibrated and validated against a defined event.
Should every component have the same weight?
Only if the domain’s error costs justify it. Compare with simple baselines and document why each weight exists.
What happens when one component is missing?
Define this before deployment: fail, review, conservatively impute or explicitly renormalize. Never silently treat missing as zero.
Sources
Checked against the sources below on September 22, 2026. Model versions, prices and limits change.
- TypeSafe AI pattern: Composite scoring
- TypeSafe AI docs: How to build with System One
- TypeSafe AI docs: Primitives
- TypeSafe AI docs: Jev 1.13 jaggedness
- TypeSafe AI docs: Confidence
- Sculley et al.: Hidden Technical Debt in Machine Learning Systems