Rulvar API reference / @rulvar/core / PreflightOrchestratorSpec
Interface: PreflightOrchestratorSpec
Defined in: packages/core/src/engine/preflight.ts:122
The OrchestrateOptions slice the estimator consumes.
Properties
| Property | Type | Description | Defined in |
|---|---|---|---|
acceptance? | { acceptPartialChildren?: boolean; acceptValidatedTerminalOutputOnLimit?: boolean; childPolicy?: | "all-ok" | { minSuccessful: number; }; minSpawnedChildren?: number; } | The OrchestrateAcceptance slice the estimator judges (RV305): declaring it lets preflight relate capped children to the salvage arms. Absent, the salvage findings stay silent, exactly like every other undeclared input. | packages/core/src/engine/preflight.ts:148 |
acceptance.acceptPartialChildren? | boolean | - | packages/core/src/engine/preflight.ts:150 |
acceptance.acceptValidatedTerminalOutputOnLimit? | boolean | - | packages/core/src/engine/preflight.ts:151 |
acceptance.childPolicy? | | "all-ok" | { minSuccessful: number; } | - | packages/core/src/engine/preflight.ts:149 |
acceptance.minSpawnedChildren? | number | Mirrors OrchestrateAcceptance.minSpawnedChildren (RV1901, the four-role benchmark's primary defect): declaring it lets the admission projection judge whether the declared wave can seat the roster the acceptance policy demands, instead of green- lighting a wave the settle verdict is bound to reject. | packages/core/src/engine/preflight.ts:159 |
budget? | OrchestratorBudgetSpec | - | packages/core/src/engine/preflight.ts:123 |
ceilingHeadroomSeverity? | "error" | "warning" | What a breached headroom floor emits (RV3310). The default 'warning' keeps RV3208's behavior byte for byte: advisory, and a host that only throws on errors sails past it. 'error' makes the breach blocking for exactly such hosts: the 2026-08-12 comparison harness threw on error findings only, its 2 percent floor held against a 2.857 percent headroom, and the assurance answer to "this plan is too thin to survive drift" must be refusal before the first wire, not a line in a report nobody gates on. Meaningful only beside a positive minCeilingHeadroomShare. | packages/core/src/engine/preflight.ts:305 |
citationAudit? | { judge?: { estCost?: number; }; onFound?: "repair" | "report" | "fail"; } | The citation entailment audit's admission slice (RV4004), exactly OrchestrateCitationAudit's judge estimate and posture: the audit judge pays one pass (two under its own armed round, which also arms the round composition term and one more claim rejudge when a claim pass is declared past the draft), and the acceptanceReserve block prices it with the SAME shared formula the runtime gate holds. Absent keeps every figure byte identical. | packages/core/src/engine/preflight.ts:251 |
citationAudit.judge? | { estCost?: number; } | - | packages/core/src/engine/preflight.ts:252 |
citationAudit.judge.estCost? | number | - | packages/core/src/engine/preflight.ts:252 |
citationAudit.onFound? | "repair" | "report" | "fail" | - | packages/core/src/engine/preflight.ts:253 |
claimConsistency? | { judge?: { estCost?: number; }; onFound?: "repair" | "report" | "carry" | "fail"; stage?: "draft" | "final" | "both"; } | The claim-consistency judge's admission estimate (RV2106), exactly OrchestrateClaimConsistency.judge.estCost: the post-fan-in judge admits against the ORCHESTRATOR account, whose working room past the held synthesis reserve the coordination loop's own turns spend from first. Declaring the estimate lets the estimator judge that room statically (orchestrator-working-room); absent, the finding stays silent, exactly like every other undeclared input. | packages/core/src/engine/preflight.ts:205 |
claimConsistency.judge? | { estCost?: number; } | - | packages/core/src/engine/preflight.ts:206 |
claimConsistency.judge.estCost? | number | - | packages/core/src/engine/preflight.ts:206 |
claimConsistency.onFound? | "repair" | "report" | "carry" | "fail" | Mirrors OrchestrateClaimConsistency.onFound (RV3402). Declaring 'repair' prices the bounded post judge round (RV3307) into the static arithmetic: the working room adds one more judge pass and one more composition (priced at the declared budget.synthesisReserveUsd, the host's own estimate of one composition), and the tail spawn count adds the round's two invocations. The 2026-08-12 comparison shape motivates the polarity: a ceiling sized to the exact plan converts a triggered repair into the typed decline, and preflight should say so before the first wire, not the journal after the last. Pairings orchestrate() refuses at intake (repair at the draft stage, repair without a synthesis, carry at the final stage, RV3301) surface as error findings: the run would refuse to start. This static arithmetic has a runtime twin (RV3701): at the moment a round actually dispatches, the engine holds the money of the round's second judge pass (this same judge.estCost first, else the run's own observed post draft judge price) until that pass admits, so the declared estimate is not only judged before the run but enforced inside it. The mechanical leg has the same twin (RV3802): the one repair turn the round's finish contract can grant is held as finishValidation.estRepairCostUsd (else the run's observed last mechanical repair price) beside the verdict money, released to the round's finish loop at its first verdict; the runtime enforcement of the repairTurnReserve turn grant's price. | packages/core/src/engine/preflight.ts:233 |
claimConsistency.stage? | "draft" | "final" | "both" | Mirrors OrchestrateClaimConsistency.stage (RV3402): 'both' dispatches the judge twice at worst, and the working room and tail spawn arithmetic price passes, not declarations. Absent keeps the historical one pass reading byte for byte. | packages/core/src/engine/preflight.ts:240 |
estInputTokens? | number | The prompt-size stand-in for the UNCAPPED orchestrator's priced admission estimate (the goal prompt the runtime would countTokens). A CAPPED orchestrator ignores it: its admission estimate is the shared exact-fill hint (effectiveCap minus the committed finalize carve-out), exactly the live dispatch. | packages/core/src/engine/preflight.ts:135 |
extension? | boolean | Whether the orchestration runs under a plan extension (PlanRunner): only extension runs commit the finalize reserve against the run root, so only they subtract it from spawn-admission headroom. | packages/core/src/engine/preflight.ts:141 |
headroomTurns? | number | The reserve-line-headroom threshold in coordination turn floors (RV2201; previously hardwired to 2): the finding warns when the admitted wave's steady state sits closer to the reserve line than this many coordination turn floors. Raise it for waves whose children routinely overrun their declared estimates; 0 silences the finding entirely. Default 2. | packages/core/src/engine/preflight.ts:282 |
limits? | UsageLimits | The orchestrator agent's own limits, exactly OrchestrateOptions.limits. | packages/core/src/engine/preflight.ts:127 |
maxSemanticRepairRounds? | number | Mirrors OrchestrateOptions.maxSemanticRepairRounds (RV4705): the scoped semantic reserve inside the pool. Declared beside a total pool it shrinks the mechanical allowance the findings judge; greater than the total mirrors the intake ConfigError as an error finding, because the run would refuse to start. | packages/core/src/engine/preflight.ts:273 |
maxSpawns? | number | The per-orchestrate spawn cap, exactly OrchestrateOptions.maxSpawns. | packages/core/src/engine/preflight.ts:125 |
maxTotalRepairRounds? | number | Mirrors OrchestrateOptions.maxTotalRepairRounds (RV4406): the one run-wide pool every provider-dispatching repair grant consumes from. Declaring it lets the estimator judge the pool against the armed semantic round and the mechanical grants that share it (RV4705): the eighth comparison rerun's mechanical composition repair drained a one-token pool before the judges ruled, and the armed round was refused over 38 standing findings; preflight said nothing. Absent keeps the report and findings byte identical. | packages/core/src/engine/preflight.ts:265 |
minCeilingHeadroomShare? | number | The ceiling-headroom-thin threshold as a fraction of the ceiling (RV3208, the 2026-08-11 experiment's admission cliff: a $7.00 ceiling over a $6.80 required minimum left 2.86 percent headroom, and a small pricing or context drift would have refused the whole workflow at admission). The finding warns when ceilingHeadroomShare sits below this fraction. A number in [0, 1]; 0 (the default) keeps the finding silent, so declared configs are byte identical until a host opts in. | packages/core/src/engine/preflight.ts:293 |
synthesis? | { context?: "full" | "digests"; estCost?: number; estInputTokens?: number; exposeChildResultTools?: boolean; limits?: UsageLimits; model?: ModelSpec; } | The separate synthesis invocation (RV-211), when the orchestration configures one (the v1.71 experiment review: the run ceiling used to stop at the coordination loop, undercounting the synthesis turns). limits mirrors OrchestrateSynthesis.limits exactly (absent = the DEFAULT_SYNTHESIS_MAX_TURNS invocation), model mirrors its model override (absent = defaults.routing.synthesize), and estInputTokens is the prompt-size stand-in for the derived synthesis prompt. When finishValidation.repairTurnReserve is declared, the reserve folds into THIS invocation's projected turns, because the validators bind the synthesis finish. | packages/core/src/engine/preflight.ts:173 |
synthesis.context? | "full" | "digests" | Mirrors OrchestrateSynthesis.context; default 'digests'. | packages/core/src/engine/preflight.ts:194 |
synthesis.estCost? | number | Mirrors OrchestrateSynthesis.estCost (RV4001): the declared price of one composition, the armed repair round's second invocation among them. The acceptanceReserve block prices the round's composition at exactly this figure, the same term the RV3907 runtime gate holds, so declaring it here is what makes the preflight verdict and the boot verdict one number. | packages/core/src/engine/preflight.ts:185 |
synthesis.estInputTokens? | number | - | packages/core/src/engine/preflight.ts:176 |
synthesis.exposeChildResultTools? | boolean | Mirrors OrchestrateSynthesis.exposeChildResultTools (the v1.74 experiment review, P0.2): declaring it lets the evidence asymmetry check see that the synthesis model can page the full child outputs the validators judge against. | packages/core/src/engine/preflight.ts:192 |
synthesis.limits? | UsageLimits | - | packages/core/src/engine/preflight.ts:175 |
synthesis.model? | ModelSpec | - | packages/core/src/engine/preflight.ts:174 |