Rulvar API reference / @rulvar/core / AdaptiveEvents
Type Alias: AdaptiveEvents
type AdaptiveEvents =
| {
applied: number;
dropped: number;
entryRef: number;
planHash: string;
revisionUnitsRemaining: number;
type: "plan:revised";
}
| {
logicalTaskId: string;
nodeId: string;
type: "node:parked";
}
| {
logicalTaskId: string;
nodeId: string;
type: "node:cancelled";
}
| {
donorRef: number;
logicalTaskId: string;
nodeId: string;
reclaimedUsd: number;
type: "node:linked";
}
| {
coversToOrdinal: number;
digestSeq: number;
planHash: string;
renderSize: number;
type: "orchestrator:woke";
}
| {
atCap: boolean;
capUsd?: number;
finalizeReserveUsd?: number;
orchestratorCapUsd?: number;
orchestratorShare?: number;
orchestratorSpentUsd?: number;
runCeilingUsd?: number;
runSpentUsd?: number;
softWarning?: boolean;
spentUsd?: number;
type: "orchestrator:budget";
}
| {
childStatusCounts: Record<string, number>;
completion: "complete" | "partial" | "rejected";
minSpawnedChildren?: number;
spawnedChildren?: number;
type: "orchestrator:acceptance";
verdict: "accepted" | "rejected";
}
| {
costToDateUsd: number;
entryRef: number;
kind: "scope_bigger" | "scope_different" | "blocked_with_evidence";
logicalTaskId: string;
type: "escalation:raised";
}
| {
by: ResolutionBy;
countsAgainstLimit: boolean;
decision: "retry" | "decompose" | "cancel" | "accept";
entryRef: number;
type: "escalation:decided";
}
| {
agentType: string;
entryRef: number;
logicalTaskId?: string;
reserveUsd?: number;
spawnUnitsAfter?: number;
type: "spawn:admitted";
verdict: "admit" | "reuse_full" | "admit_graft";
}
| {
agentType: string;
code: string;
entryRef?: number;
logicalTaskId?: string;
type: "spawn:rejected";
}
| {
generation: string;
type: "admission:lease-lost";
unitId: string;
}
| {
entryRef: number;
gate: "mechanical" | "judge" | "spot-check";
logicalTaskId: string;
rung: number;
type: "verify:failed";
}
| {
entryRef: number;
op: | "brief_set"
| "fact_add"
| "fact_supersede"
| "lesson_add"
| "observation_add";
type: "ledger:op";
}
| {
logicalTaskId: string;
stallStreak: number;
type: "stall:detected";
}
| {
limit: number;
oscillationCount: number;
spawnKeyHash: string;
type: "guard:oscillation";
}
| {
by: ResolutionBy;
entryRef: number;
targetRef: number;
type: "resolution:applied";
}
| {
entryRef: number;
reason: "already_resolved" | "target_abandoned";
supersededBy: number;
targetRef: number;
type: "resolution:superseded";
}
| {
counter: string;
entryRef: number;
phi: number;
remaining: number;
type: "termination:debit";
}
| {
code: string;
counter: string;
entryRef: number;
type: "termination:denied";
}
| {
field: string;
frozenValue: Json;
liveValue: Json;
type: "termination:config-drift";
}
| {
code: "HASH_VERSION_TOO_OLD" | "HASH_VERSION_TOO_NEW";
found: number;
type: "journal:compat";
window: [number, number];
};Defined in: packages/core/src/l0/events.ts:619
Adaptive orchestration, resolutions, and accounting: emitted only by runs where the corresponding machinery is active (applicability per mode: https://docs.rulvar.com/guide/adaptive-orchestration). The types land as one closed catalog with M7-T03; emitters arrive with their tasks.
Union Members
Type Literal
{
applied: number;
dropped: number;
entryRef: number;
planHash: string;
revisionUnitsRemaining: number;
type: "plan:revised";
}Type Literal
{
logicalTaskId: string;
nodeId: string;
type: "node:parked";
}Type Literal
{
logicalTaskId: string;
nodeId: string;
type: "node:cancelled";
}Type Literal
{
donorRef: number;
logicalTaskId: string;
nodeId: string;
reclaimedUsd: number;
type: "node:linked";
}Type Literal
{
coversToOrdinal: number;
digestSeq: number;
planHash: string;
renderSize: number;
type: "orchestrator:woke";
}Type Literal
{
atCap: boolean;
capUsd?: number;
finalizeReserveUsd?: number;
orchestratorCapUsd?: number;
orchestratorShare?: number;
orchestratorSpentUsd?: number;
runCeilingUsd?: number;
runSpentUsd?: number;
softWarning?: boolean;
spentUsd?: number;
type: "orchestrator:budget";
}| Name | Type | Description | Defined in |
|---|---|---|---|
atCap | boolean | - | packages/core/src/l0/events.ts:652 |
capUsd? | number | - | packages/core/src/l0/events.ts:654 |
finalizeReserveUsd? | number | - | packages/core/src/l0/events.ts:655 |
orchestratorCapUsd? | number | - | packages/core/src/l0/events.ts:659 |
orchestratorShare? | number | - | packages/core/src/l0/events.ts:660 |
orchestratorSpentUsd? | number | - | packages/core/src/l0/events.ts:658 |
runCeilingUsd? | number | - | packages/core/src/l0/events.ts:657 |
runSpentUsd? | number | - | packages/core/src/l0/events.ts:656 |
softWarning? | boolean | - | packages/core/src/l0/events.ts:661 |
spentUsd? | number | - | packages/core/src/l0/events.ts:653 |
type | "orchestrator:budget" | Two emitted shapes share the discriminant: the cap-freeze form carries { atCap: true, spentUsd, capUsd, finalizeReserveUsd }, and the per-wake digest form carries atCap plus the passive WakeBudgetBlock fields (runSpentUsd .. softWarning). | packages/core/src/l0/events.ts:651 |
Type Literal
{
childStatusCounts: Record<string, number>;
completion: "complete" | "partial" | "rejected";
minSpawnedChildren?: number;
spawnedChildren?: number;
type: "orchestrator:acceptance";
verdict: "accepted" | "rejected";
}The acceptance verdict as its own event (RV1906): the four-role benchmark's primary run showed a root agent:end with status ok followed by a run:end error, semantically consistent (the loop finished; the policy rejected the roster) but self-explanatory to nobody tailing the stream. The verdict now speaks between them, fresh and on the resume roll-forward alike, carrying the policy facts of the ONE journaled acceptance decision.
Type Literal
{
costToDateUsd: number;
entryRef: number;
kind: "scope_bigger" | "scope_different" | "blocked_with_evidence";
logicalTaskId: string;
type: "escalation:raised";
}Type Literal
{
by: ResolutionBy;
countsAgainstLimit: boolean;
decision: "retry" | "decompose" | "cancel" | "accept";
entryRef: number;
type: "escalation:decided";
}Type Literal
{
agentType: string;
entryRef: number;
logicalTaskId?: string;
reserveUsd?: number;
spawnUnitsAfter?: number;
type: "spawn:admitted";
verdict: "admit" | "reuse_full" | "admit_graft";
}| Name | Type | Description | Defined in |
|---|---|---|---|
agentType | string | - | packages/core/src/l0/events.ts:704 |
entryRef | number | The journaled admission decision entry, or, on direct ctx.agent budget admissions (RV4806), the dispatch entry itself: no decision entry exists on that path. | packages/core/src/l0/events.ts:701 |
logicalTaskId? | string | Absent on direct ctx.agent budget admissions (RV4806): no lineage layer minted a logical task id for a plain dispatch. | packages/core/src/l0/events.ts:709 |
reserveUsd? | number | The COMMITTED reserve of this admission in USD, the allowance clamped number the settle releases (RV4801); present on the admissions that commit one (direct ctx.agent dispatches and ctx.workflow children, RV4806). | packages/core/src/l0/events.ts:724 |
spawnUnitsAfter? | number | Spawn-unit balance after the budget-layer debit. Present on budget-layer admissions (the orchestrator spawn tools and ctx.workflow children); absent on lineage-layer admissions (ctx.agent roots), whose spawn-unit debit rides the dispatch itself (v1.22.0 review P2-5). | packages/core/src/l0/events.ts:717 |
type | "spawn:admitted" | - | packages/core/src/l0/events.ts:695 |
verdict | "admit" | "reuse_full" | "admit_graft" | The admitting arms of the unified AdmitVerdict union. | packages/core/src/l0/events.ts:703 |
Type Literal
{
agentType: string;
code: string;
entryRef?: number;
logicalTaskId?: string;
type: "spawn:rejected";
}| Name | Type | Description | Defined in |
|---|---|---|---|
agentType | string | - | packages/core/src/l0/events.ts:735 |
code | string | - | packages/core/src/l0/events.ts:734 |
entryRef? | number | The journaled admission decision entry; absent for the pre-admission config gates (orchestrate maxSpawns), which reject before anything is journaled. | packages/core/src/l0/events.ts:733 |
logicalTaskId? | string | - | packages/core/src/l0/events.ts:736 |
type | "spawn:rejected" | - | packages/core/src/l0/events.ts:727 |
Type Literal
{
generation: string;
type: "admission:lease-lost";
unitId: string;
}| Name | Type | Description | Defined in |
|---|---|---|---|
generation | string | - | packages/core/src/l0/events.ts:751 |
type | "admission:lease-lost" | The durable admission lease of this run expired under a live holder (RV4804): a renew failed and the scheduler's own answer no longer says granted, so the reserved capacity may be re-granted to another run while this one is alive. Announced once per run, never fatal: the wire-level quota still gates every dispatch and the settle release stays idempotent. Environmental telemetry, exactly like the rest of admission: nothing of it is journaled. | packages/core/src/l0/events.ts:749 |
unitId | string | - | packages/core/src/l0/events.ts:750 |
Type Literal
{
entryRef: number;
gate: "mechanical" | "judge" | "spot-check";
logicalTaskId: string;
rung: number;
type: "verify:failed";
}Type Literal
{
entryRef: number;
op: | "brief_set"
| "fact_add"
| "fact_supersede"
| "lesson_add"
| "observation_add";
type: "ledger:op";
}Type Literal
{
logicalTaskId: string;
stallStreak: number;
type: "stall:detected";
}Type Literal
{
limit: number;
oscillationCount: number;
spawnKeyHash: string;
type: "guard:oscillation";
}Type Literal
{
by: ResolutionBy;
entryRef: number;
targetRef: number;
type: "resolution:applied";
}Type Literal
{
entryRef: number;
reason: "already_resolved" | "target_abandoned";
supersededBy: number;
targetRef: number;
type: "resolution:superseded";
}Type Literal
{
counter: string;
entryRef: number;
phi: number;
remaining: number;
type: "termination:debit";
}Type Literal
{
code: string;
counter: string;
entryRef: number;
type: "termination:denied";
}Type Literal
{
field: string;
frozenValue: Json;
liveValue: Json;
type: "termination:config-drift";
}Type Literal
{
code: "HASH_VERSION_TOO_OLD" | "HASH_VERSION_TOO_NEW";
found: number;
type: "journal:compat";
window: [number, number];
}| Name | Type | Description | Defined in |
|---|---|---|---|
code | "HASH_VERSION_TOO_OLD" | "HASH_VERSION_TOO_NEW" | - | packages/core/src/l0/events.ts:786 |
found | number | - | packages/core/src/l0/events.ts:787 |
type | "journal:compat" | Declared for hosts; not emitted today. The compatibility scan runs strictly before a run's event stream exists, so the refusal travels only as the typed JournalCompatibilityError (which carries the same fields). | packages/core/src/l0/events.ts:785 |
window | [number, number] | - | packages/core/src/l0/events.ts:788 |