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).
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.
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.
Scoped recall request. The host owns retrieval; the kernel validates this deterministic wire and
caps top_k through the canonical operation memory policy.
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.
How much to trust PromptMeasurement.input_tokens when deciding whether to compress. Kept
separate from MeasurementSource — the reason a number exists and how much a caller should
lean on it are different questions (a LocalExact cl100k count for an Anthropic request is
still nontrivially uncertain, but it is not a bare guess either).
Where a token count came from — never just a bare u32, so a caller can tell “the provider’s
own count API said so” apart from “we guessed.” The provenance remains part of the reserved
contract, but no runtime currently persists or consumes this fact.
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).