Re-export the kernel’s Criterion so callers don’t need to import from deepstrike_core.
A single evaluation criterion with optional weight and required flag.
Sliding-window state feeding EntropySample. Owned by the state machine; fed at the
completed-turn boundary (ToolResults) and by rollback(). Deliberately NOT part of
the turn checkpoint: a rollback must not launder the disorder it just evidenced —
the same reasoning as the RepeatFuse streak.
Opt-in threshold watch over the per-turn entropy score (③). When the score crosses
threshold the kernel emits an EntropyAlert observation — at most once per crossing
(hysteresis re-arm) and never more often than cooldown_turns. With notify_model
the alert is also routed through the kernel’s own signal dispatch as a
Heartbeat/AlertRuntimeSignal, so the model
sees a durable [SIGNAL] directive at the next boundary. Default OFF: the primary
consumer is the host supervisor, which can inject a task-aware note itself — an
unconditional self-nudge risks a feedback loop (the note churns context → more entropy).
A pairwise judge assignment carried to the SDK on a tournament judge’s WorkflowSpawnInfo:
the two entrant agent ids whose produced outputs are to be compared. The SDK maps each id back
to that entrant’s candidate and asks the judge which is better.
Opt-in resource limits. An unset field imposes no limit; an unset ResourceQuota (the default,
when [crate::scheduler::state_machine::LoopStateMachine::set_resource_quota] is never called)
preserves the pre-M2 behavior of unconditional Allow for spawn / memory syscalls.
Enough to run one spawned workflow node, carried to the SDK in the WorkflowBatchSpawned
observation. Role/isolation/inheritance are canonical snake_case strings (serde names) so the
host SDK can rebuild an agent run spec — the kernel generates these specs internally, so this
is how the goal reaches the SDK that actually executes the node.
The generate→evaluate quality gate as a workflow: a Loopworker node (the task, re-run up
to max_iters, stopping early on a loop_continue=false self-signal) followed by a Verifyeval node that scores the worker’s output against the goal/criteria and emits a structured
verdict (crate::harness::verdict_output_schema as its output_schema).