Operator overview¶
Operators are the composable stages of an RSIHub generation. Their names in
this reference are identical to the keys used under operators: in
evolve.yaml.
select
→ rollout
→ trace_analyzer
→ meta_agent
→ validate
→ novelty
→ canonical evaluation
→ gate
→ record
→ reflect
Optional stages are skipped when their configuration block is absent. Canonical evaluation is framework-owned and is not an operator.
| Operator | Required | Responsibility |
|---|---|---|
select |
yes | choose valid parent generations |
rollout |
yes | produce training behavior and execution evidence |
trace_analyzer |
no | transform rollout cases into bounded mutation feedback |
meta_agent |
yes | edit the candidate inside the declared surface |
validate |
no | run method-specific checks before canonical evaluation |
novelty |
no | reject candidate edits that duplicate prior work |
gate |
yes | decide whether a canonical evaluation is parent-eligible |
record |
yes | attach method-specific evidence to the archive |
reflect |
no | derive reusable insights from verified history |
Active and available implementations¶
After initialization:
operators/<name>.py active implementation
library/<name>/*.py available alternatives
operators/README.md generated active/alternative summary
Inspect the active configuration with:
Each operator block may select a variant or an explicit script, but not
both. Recipe-local variants take precedence over the shared library:
Custom implementations¶
Start from library/<name>/_skeleton.py and implement the matching interface in
evolve.frozen.interfaces. Put a recipe-local implementation at:
Then select it by filename stem:
Operators execute as subprocesses. They should write diagnostics beneath their generation run directory and return the typed result for their interface. They must not write evaluator truth, generation tags, or archive outcomes directly.