Expand description
Dynamic questions (spec 019): a separate, explicitly invoked class for
one bounded proposition, classify or rubric question over
caller-selected structured context.
Three documents live here: the request, rustev.dynamic-question/1; a
backend’s opt-in declaration, rustev.dynamic-capability/1, distinct
from its registered-plan descriptor; and the outcome,
rustev.dynamic-outcome/1. None of them is a plan document, and no type
here converts into a plan value, a backend output or a judgment (spec
019, 3.1).
Every caller-controlled byte (question, labels, levels, context) is untrusted data. Nothing here interprets it; a type only bounds it.
The request and the capability are checked against their structural
bounds when parsed (DynamicQuestion::check_bounds,
DynamicCapability::check_bounds); the bounded scan runs first, so an
oversized document is refused before typed deserialization allocates
anything. Cross-field rules (which labels an operation takes, which
output kinds it allows, the abstention posture) are the core’s request
validation.
Structs§
- Bounds
Error - Why a document is outside its structural bounds. The message names the member and the bound; it never echoes caller bytes beyond 64 characters.
- Context
Field - One named context field (3.2).
provenanceandsourcestate who asserted the value; they do not make it true or trusted (3.3). - Dynamic
Attempt - The one dispatched attempt (3.5).
- Dynamic
Capability - A backend’s opt-in dynamic capability,
rustev.dynamic-capability/1(3.4), distinct from its registered-plan descriptor:classifythere never implies dynamic classification here. - Dynamic
Identity - The canonical request identity’s preimage (3.4): everything that can
change what a backend computes for a question. The request id, deadline,
cost cap and abstention policy are deliberately absent; they bound or
judge the computation, they do not define it. Its digest, tagged with
schema::DYNAMIC_QUESTION, is theDynamicRequestId. - Dynamic
Lineage - What a proposal was computed from (3.6).
- Dynamic
Operation Support - What a backend declares for one dynamic operation.
- Dynamic
Outcome - A dynamic outcome,
rustev.dynamic-outcome/1(3.6): evidence of what Rustev observed for one request, bounded byRECORD_V1. It is not proof that the context was true, the backend was correct, privacy options were honored, or an action was permitted. - Dynamic
Projection - The bytes a dynamic backend receives (3.3): the request’s data fields as canonical JSON, every value a length-delimited, escaped JSON string or scalar under a fixed member name. An adapter maps these members through its versioned template; no member names a system, developer, tool, function, role, header, endpoint, model or artifact field, so no caller value can enter one. Context provenance, the scope and the bounds stay with Rustev.
- Dynamic
Proposal - A dynamic proposal (3.6): always
model-derived, with the request and backend output in its lineage. Never a grant, never a plan value. - Dynamic
Question - A dynamic question,
rustev.dynamic-question/1(3.2). - Dynamic
Timing - Monotonic milliseconds from the start of the request.
- Label
Mass - One label’s or level’s mass, in declared order.
- Projected
Field - One context field as projected: its name and value only.
- Task
Family - A task family and its version, selected from a host allowlist (3.2).
- Template
Ref - A structured template, identified by its producer (3.3, 3.4): the versioned mapping from request fields to the provider’s request, with fixed control instructions no caller value can enter.
Enums§
- Abstention
Decision - How the abstention policy was applied (3.5). Exact processing over model-derived masses; the thresholds are not calibration claims.
- Abstention
Policy - How a request’s result may be accepted (3.5). Thresholds exist only when the required result is a distribution; label-only acceptance exists only when the request permits it explicitly. Neither is a calibration claim.
- Abstention
Rule - The abstention rule that refused a distribution.
- Context
Value - A scalar or text context value in canonical form (3.2). Decimals are strings, so a request holds no binary floating-point number.
- Dynamic
Answer - What was proposed (3.6). A label is only a label; a distribution is uncalibrated mass, not a calibrated probability; an ordinal distribution is mass over ordered levels, not an interval score.
- Dynamic
Operation - The three dynamic operations (3.2). Their names are R-05’s;
rank,generateandextractare not dynamic operations in version 1. - Dynamic
Output Kind - The output kind a request requires (3.2):
labelfor any operation,distributionforpropositionandclassify,ordinal_distributionforrubric. A distribution is never a calibrated probability, and an ordinal distribution is never an interval score (3.6). - Dynamic
Raw - The raw output or failure (3.6).
- Dynamic
RawOutput - What a dynamic backend returned, before validation (3.3). Material that
is not a label or a distribution (a tool call, instructions, a schema, a
URL to fetch, an action) is carried as
unrecognized, recorded as invalid output and never executed. - Dynamic
Refusal - Why a request was refused before dispatch (3.4, 3.5).
- Dynamic
Result - A proposal or a named unresolved outcome (3.5, 3.6).
- Dynamic
Unresolved - A named unresolved outcome (3.5). No neutral score, first label, majority label, empty distribution or provider confidence replaces it.
- Dynamic
Validation - Exact validation of the raw output (3.3, 3.6). Exact processing: it never relabels the proposal exact-derived.
- Hidden
State - Whether output-affecting state exists that the request does not carry
(3.4). Declared
presentmakes the backend ineligible for qualification. - Response
Shape - The shape of response material that is not an answer (3.3).
Constants§
- MAX_
CANONICAL_ BYTES - The most canonical bytes of a whole request (3.2).
- MAX_
CAPABILITY_ ENTRIES - The most task families, privacy options or operations a capability lists.
- MAX_
CLASSIFY_ LABELS - The most labels of
classify(3.2). - MAX_
CONTEXT_ FIELDS - The most context fields (3.2).
- MAX_
CONTEXT_ VALUE_ BYTES - The most context value bytes, summed over every field (3.2).
- MAX_
DETAIL_ BYTES - The most bytes of free text Rustev writes into an outcome (a detail or a response excerpt), cut at a character boundary.
- MAX_
LABEL_ BYTES - The most bytes of one label or level (3.2).
- MAX_
META_ BYTES - The most bytes of bounded metadata: the request id, a context field’s source and source revision.
- MAX_
NAME_ BYTES - The most bytes of a name: a context field, a task family name or version, a template name or version, a preprocessing policy, a privacy option, a backend id.
- MAX_
QUESTION_ BYTES - The most bytes of the question (3.2).
- MAX_
RUBRIC_ LEVELS - The most levels of
rubric(3.2). - MIN_
LABELS - The fewest labels or levels of
classifyandrubric(3.2). - PROPOSITION_
LABELS - The fixed ordered labels of
proposition(3.2).