Skip to content

Choose a reward

A run's reward is configuration, selected in the experiment document's reward: section or the adapter's reward_spec argument. What to write depends on which of three situations you are in.

Your environment scores itself (Tier 1). Write nothing — omit the reward: section entirely. That absence is meaningful: the environment's own reward is used, and asking for a composed reward without naming one is an error, never a fallback.

You are on a MORPHEUS world. Pick one of the four shipped specifications by name:

reward: {spec: paper}

paper is the appendix's stated formula, experiment the one the published training runs optimised, eval8 the online evaluation's, verification_progress the standalone pass-fraction signal. They differ — which is canonical is unresolved — so match the specification to what you are reproducing. A world can also declare its own reward, which MorpheusEnv adopts when you name none.

You are composing your own. Components you wrote and registered — upright is built in tutorial L3, which also derives the ceiling from the same file that scores the run:

reward:
  spec:
    name: balance
    components:
      - {type: upright, weight: 1.0, clip: [0.0, 1.0]}
      - {type: effort, weight: 0.2}

Weights and clips are per-component and per-specification, so one component can count for more in one experiment than another without being rewritten; the document schema has every field.

Check it engages. A specification whose components can read nothing from your environment's step records scores zero forever — the engine warns once when that is about to happen, and skyfall-crl conformance --reward yourmod:Component checks a component's declared reads name real fields. Do not reuse a shipped specification off MORPHEUS; all four read its operational records.