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 registeredupright 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.