Rulvar API reference / @rulvar/rulvar / CriticalPath
Interface: CriticalPath
Defined in: packages/core/dist/index.d.ts
The critical-path summary of one run (RV-211): the plan's post-fan-in gate ("synthesis takes at most 40% of wall time with four settled workers") computed as a pure fold over the same vocabulary, no heuristics beyond the role tags. Post-fan-in is the interval from the LAST settled non-coordination agent (any span whose primary role is neither 'orchestrate' nor 'synthesize') to run:end; the synthesis wall is the summed span wall of 'synthesize' spans. Wall numbers are LIVE fidelity: a replayed stream re-stamps emission times, so its intervals are degenerate, exactly like phase durations. Absent pieces (no run:end, no worker spans) leave the corresponding fields undefined rather than guessed at.
Properties
| Property | Type | Description | Defined in |
|---|---|---|---|
citationJudgeMs | number | Completed 'synthesize' spans that are the citation entailment audit judge (labels CITATION_JUDGE_LABEL and its suffixed variants), summed (RV4206). Until this bucket existed the audit judge folded into finalCompositionMs on BOTH surfaces: the sixth comparison run's 368889 ms "composition" was 214870 ms of composition plus 154019 ms of this judge, compositionSpans then counted the judge as a second composition (the legible signature of a repair round on a run that had none), and lastCandidateMs stretched to the judge's end while the candidate had settled 154 seconds earlier. | packages/core/dist/index.d.ts |
citationJudgeSpans | number | Completed citation-judge synthesize spans, counted (RV4206). | packages/core/dist/index.d.ts |
compositionSpans | number | Completed composition-side synthesize spans, counted (RV3404): two compositions on one run is the legible signature of the bounded repair round (RV3307), and a count survives where milliseconds invite guessing. | packages/core/dist/index.d.ts |
draftJudgeMs | number | The stage split of semanticJudgeMs (RV3404): the draft pass dispatches under the exact CLAIM_JUDGE_LABEL and every suffixed variant is a post draft pass (today the final pass and the repair round's re-judge, both -final, RV2509/RV3307). Always the exact partition: draftJudgeMs + finalJudgeMs equals semanticJudgeMs. | packages/core/dist/index.d.ts |
finalCompositionMs | number | Completed 'synthesize' spans that ARE final composition, summed (RV1604; classified through synthesizeSpanClassOf since RV4206): the engine's own composition labels plus every unlabelled span (composition was the only unlabelled engine dispatch before RV2901 named it). A span whose label this classifier does not know lands in unclassifiedSynthesisMs instead of here: the sixth comparison run read 368889 ms of "final composition" of which 154019 ms was the citation judge. | packages/core/dist/index.d.ts |
finalJudgeMs | number | The post draft half of the split; see draftJudgeMs. | packages/core/dist/index.d.ts |
firstCandidateMs? | number | run:start to the FIRST completed composition-side synthesize span's end (RV3605): when a candidate deliverable first existed. The third comparison run held a mechanically accepted candidate from its 103rd journal seq onward and lost typed 25 minutes later; nothing on any surface said when the latent document materialized, and the judge had to dig spans by hand. Absent without a run:start or a completed composition span, and live fidelity like every wall figure here. | packages/core/dist/index.d.ts |
hostRejectedSpans | number | Settled spans whose invocation was aborted by the host's finish rejection (RV3702): the hostRejected stamps counted. The count is unconditional (the stamp is self contained, no labelling condition applies) and zero when none: on the third comparison run's shape it reads 1, the round's composition, telling the host rejection apart from a provider death at the cut level. | packages/core/dist/index.d.ts |
judgeSpans | number | Completed judge-side synthesize spans, counted (RV3404). | packages/core/dist/index.d.ts |
lastCandidateMs? | number | run:start to the LAST completed composition-side span's end (RV3605). On a run whose terminal carries deliverableAccepted: true this is when the accepted composition settled, the time to accepted deliverable; on a failed run it is when the last LOSING candidate settled, so pair it with the acceptance verdict and never read it as a win on an error terminal (the comparison rule the third experiment wrote down). | packages/core/dist/index.d.ts |
postFanIn? | PostFanInBreakdown | The RV710 decomposition of the window; present with postFanInMs. | packages/core/dist/index.d.ts |
postFanInMs? | number | Last non-coordination agent:end to run:end; absent without both. | packages/core/dist/index.d.ts |
postFanInShare? | number | postFanInMs / runWallMs when both are defined and the wall is > 0. | packages/core/dist/index.d.ts |
runWallMs? | number | run:start to run:end; absent while the run is open. | packages/core/dist/index.d.ts |
semanticJudgeMs | number | Completed 'synthesize' spans that are the claim-consistency judge (agent:start label CLAIM_JUDGE_LABEL), its extract phase included, summed (RV1604). | packages/core/dist/index.d.ts |
synthesisMs | number | Summed wall of completed 'synthesize' spans (0 when none). Since RV4206 this is exactly finalCompositionMs + semanticJudgeMs + citationJudgeMs + unclassifiedSynthesisMs, kept whole for existing consumers: the name predates the judges riding the same role, and the eighteenth comparison benchmark read a 54-second synthesisMs as a second final composition when the run had SKIPPED synthesis and the bucket was entirely the judge and its extract. Read the split fields. | packages/core/dist/index.d.ts |
synthesisShare? | number | synthesisMs / runWallMs under the same conditions. | packages/core/dist/index.d.ts |
unclassifiedSynthesisMs | number | Completed 'synthesize' spans whose label names NEITHER a judge nor a composition (RV4206): a vocabulary member this classifier does not know. Nonzero means the split beside it is a floor, and saying so is the whole point: an unknown synthesize label used to fold silently into finalCompositionMs, which is exactly how the citation judge hid there for four releases. | packages/core/dist/index.d.ts |
unclassifiedSynthesisSpans | number | Completed unclassified synthesize spans, counted; nonzero flags the split as a floor. | packages/core/dist/index.d.ts |
workerSpans | number | Settled non-coordination agent spans that anchored the fan-in. | packages/core/dist/index.d.ts |