Results
Every JSON object of a results file (ngraph/schemas/results.json) and what each
field means, generated from the result declarations. How NetGraph
computes explains the numbers. They come
in five kinds:
- Bandwidth units: every
*_units field and the native amounts, integers in
units of the run's resolution q (the units report holds q); units × q is the
physical amount.
- Physical amounts: inputs, question offers and designs,
NetworkStats
capacities and split_bound.capacity in the units report, as declared.
- Ratios: delivery ratios, alpha, shares and caps, with no unit.
- Routing costs: path costs, tunnel costs and their sums, which never take
q.
total_cost is cost × bandwidth units, so total_cost × q is cost × physical
bandwidth.
- Hardware money and power: capex and watts.
Counts are plain integers. An exact fraction is written
{"numerator": n, "denominator": d}. A missing key and a null value differ: each
field says when it is absent and when it is null. The analysis's outputs.details
selects which detail fields appear (Output
selection). T1 is a distributed_te model; T2 is a
centralized_te model with a tunnel_count.
Placement totals and the run's metadata and units_report use the same field
names in Python and JSON. In placement and capacity rows with a native result,
that object and its plan, by_source and by_tunnel entries use the engine's
field names. There a bandwidth amount drops _units and a drop count ends in
_drops: delivered is delivered_units, source_drops is source_drop_units.
Edges and nodes are ids (PreparedTopology.edge_refs names each edge), so
edge_drops lists (edge, units) pairs, whose sum is edge_drop_units, and per-edge
outputs are vectors in edge order; an unlimited request or design is infinite where
JSON writes null with request_kind or design_kind "unlimited". For placement
rows and capacity rows with a native result, kind is JSON only; a placement row's
reference_shortfall_units (reference_request_units minus result.delivered) is
also JSON only. A step's
question is its typed query in Python, written in normalized form here (Results
and export). Losses: Demands: how traffic
enters; the worst failure case:
Failures: patterns, cases and
states.
AlphaSourceJSON
| Field |
Type |
Description |
kind |
"query" | "msd_step" |
query (the query's own alpha) or msd_step. |
step |
string or null |
The step that supplies alpha. Null when the query gives its own alpha. |
AnalysisJSON
One of: CapacityAnalysisJSON or PlacementAnalysisJSON or SensitivityAnalysisJSON or PathAnalysisJSON or MSDAnalysisJSON or TunnelCountAnalysisJSON.
| Field |
Type |
Description |
workers |
integer |
The effective number of workers. |
sampling |
SamplingMetadataJSON or null |
The failure sampling metadata. Null when the analysis draws no failures. |
BuildGraphParametersJSON
| Field |
Type |
Description |
add_reverse |
boolean |
Whether the exported graph has a reverse edge per link. |
BuildGraphQuestionJSON
| Field |
Type |
Description |
kind |
"build_graph" |
The record kind, a fixed tag. |
parameters |
BuildGraphParametersJSON |
The step's parameters. |
BuildGraphResultJSON
| Field |
Type |
Description |
kind |
"build_graph" |
The record kind, a fixed tag. |
add_reverse |
boolean |
Whether the exported graph has a reverse edge per link. |
node_count |
integer |
Nodes in the exported graph. |
edge_count |
integer |
Edges in the exported graph (two per link with add_reverse). |
graph |
object |
The node-link JSON of the network. |
CapacityAnalysisJSON
| Field |
Type |
Description |
kind |
"capacity" |
The record kind, a fixed tag. |
metadata |
AnalysisMetadataJSON |
Run or analysis metadata. |
outputs |
OutputSelectionJSON |
The output selection that applies to the rows. |
question |
"lossless_bound" | "fixed_offer_delivery" | "first_hop_experiment" |
The question this step or analysis asked. |
offer_source |
"unlimited" | "explicit" | "design" | "first_hop" |
Where the offer comes from: unlimited, explicit, the design demand, or the first hop. |
cases |
list of CapacityCaseJSON |
The baseline case first, then each distinct failure pattern. |
query |
CapacityQueryJSON |
The analysis's typed query (a workflow step records it as the step's question instead). Absent when the analysis is a workflow step's result. |
CapacityCaseJSON
CapacityQueryJSON
| Field |
Type |
Description |
kind |
"capacity" |
The record kind, a fixed tag. |
source |
SelectorJSON |
The source selector. |
target |
SelectorJSON |
The target selector. |
mode |
"combine" | "pairwise" |
How sources and targets pair: combine or pairwise. |
model |
ModelJSON |
The routing model and admission of the question. |
offer |
number or null |
The physical offer. Null when no offer is set. |
design_demand |
number or null |
The physical design volume of tunnels. Null when no design volume is set. |
failures |
FailureRequestJSON or null |
The failure request. Null when the question is the baseline only. |
CapacityRowJSON
| Field |
Type |
Description |
kind |
"capacity" |
The record kind, a fixed tag. |
id |
string |
The row's stable identifier within its analysis. |
endpoints |
EndpointsJSON |
The physical source and destination node names of the row. |
result |
NativePlacementJSON |
The native placement result. |
pool |
PoolMetadataJSON or null |
The TE ingress pool the row's sources share. Null when the sources share no pool. |
cost_distribution |
CostReportJSON |
The requested cost report. Absent when the report was not requested or is not derivable. |
unavailable_outputs |
UnavailableOutputsJSON |
Requested outputs that the model cannot provide, with the reason. Absent when every requested output is provided. |
CapacityStateJSON
| Field |
Type |
Description |
rows |
list of CapacityRowJSON or SelfPairJSON |
The analysis rows, one per demand or endpoint pair. |
totals |
null |
Always null: capacity rows have no totals (each is its own question). |
CapacityStatesJSON
| Field |
Type |
Description |
converged |
CapacityStateJSON |
The capacity question on the case's network. |
CostCeilingJSON
| Field |
Type |
Description |
kind |
"absolute" | "stretch" |
absolute or stretch. |
absolute |
integer or null |
The inclusive absolute cost ceiling. Null when the ceiling is a stretch. |
stretch |
FractionJSON or null |
The inclusive stretch over the shortest cost (a fraction). Null when the ceiling is absolute. |
CostPowerParametersJSON
| Field |
Type |
Description |
include_disabled |
boolean |
Whether disabled nodes and links are counted. |
aggregation_level |
integer |
The deepest hierarchy level reported. |
CostPowerQuestionJSON
| Field |
Type |
Description |
kind |
"cost_power" |
The record kind, a fixed tag. |
parameters |
CostPowerParametersJSON |
The step's parameters. |
CostPowerResultJSON
| Field |
Type |
Description |
kind |
"cost_power" |
The record kind, a fixed tag. |
include_disabled |
boolean |
Whether disabled nodes and links are counted. |
aggregation_level |
integer |
The deepest hierarchy level reported. |
levels |
list of HardwareLevelJSON |
Hardware totals per hierarchy depth. |
CostReportJSON
One of: DeliveredByPathCostJSON or MarginalCurveJSON.
CostUnavailableReasonJSON
One of: "mixed_cost_dag" | "unsupported_model" | "controller_table".
CustomQuestionJSON
| Field |
Type |
Description |
kind |
"custom" |
The record kind, a fixed tag. |
parameters |
object |
The custom step's own JSON parameters. |
DeadCapJSON
| Field |
Type |
Description |
destination |
string |
The destination node name. |
router |
string |
The router node name. |
forwarding_group |
string |
The forwarding group (tree) name. |
group |
integer |
The root group's index in the tree. |
cap |
FractionJSON |
The group's fixed cap: its share of the router's traffic (a fraction). |
DeclaredSourceWeightJSON
| Field |
Type |
Description |
source |
string |
The physical source node's name. Absent when the weight is on a pool's head. |
pool_id |
string |
The TE ingress pool whose private head carries the weight (as PoolHeadJSON names it). Absent when the weight is on a physical source. |
weight |
integer |
Its declared weight (positive integer). |
DeliveredByPathCostJSON
| Field |
Type |
Description |
kind |
"delivered_by_path_cost" |
The record kind, a fixed tag. |
cost_domain |
"physical_network" | "analysis_graph" |
physical_network, or analysis_graph when costs include the pool attachment's 1. |
bins |
list of PathCostBinJSON |
Delivered units per path cost, in ascending cost. |
DemandQuestionJSON
| Field |
Type |
Description |
source |
SelectorJSON |
The source selector. |
target |
SelectorJSON |
The target selector. |
priority |
integer |
The demand's priority (lower places first). |
id |
string |
The declared demand's identifier. |
model |
ModelJSON |
The routing model and admission of the question. |
physical_volume |
number |
The declared volume in physical units. |
mode |
"combine" | "pairwise" |
How sources and targets pair: combine or pairwise. |
group_mode |
"flatten" | "per_group" | "group_pairwise" |
How selector groups expand: flatten, per_group or group_pairwise. |
DirectedLinkJSON
| Field |
Type |
Description |
link |
string |
The physical link identifier. |
direction |
"forward" | "reverse" |
The direction of the physical link: forward (source to target) or reverse. |
DiscardedShareJSON
| Field |
Type |
Description |
label |
string |
The discarded expansion leaf. |
units |
integer |
Its discarded units. |
reason |
"self_pair" | "filtered" | "empty_selection" |
Why it was discarded: an empty selection, or an entirely excluded declaration (a self pair or identical group labels). If a declaration is excluded for both reasons, the first exclusion in canonical group and node order supplies its reason. |
DomainQuestionJSON
One of: BuildGraphQuestionJSON or NetworkStatsQuestionJSON or CostPowerQuestionJSON.
DomainResultJSON
One of: BuildGraphResultJSON or NetworkStatsResultJSON or CostPowerResultJSON.
EdgeAmountJSON
| Field |
Type |
Description |
edge |
DirectedLinkJSON |
The directed physical link. |
units |
integer |
The amount (integer units of q). |
EdgeWeightJSON
EndpointsJSON
| Field |
Type |
Description |
sources |
list of string |
Source node names, sorted. |
destinations |
list of string |
Destination node names, sorted. |
ExactAlphaJSON
| Field |
Type |
Description |
value |
number |
Alpha as a binary64 value. |
numerator |
integer |
Alpha's exact numerator. |
denominator |
integer |
Alpha's exact denominator. |
ExpansionAccountingJSON
| Field |
Type |
Description |
base_id |
string |
The declared demand's identifier, before expansion. |
declared_units |
integer |
The declared demand's units: its scaled total, converted to units once. |
resolved_units |
integer |
Units split among eligible leaves, after excluding self and same-label group pairs. |
discarded_units |
integer |
Units of its discarded leaves. |
discards |
list of DiscardedShareJSON |
Empty-selection shares, or the whole declaration when all pairs are excluded, with their reasons. |
FailureCaseJSON
| Field |
Type |
Description |
id |
string |
The case identifier: baseline, or failure-NNNNNN in draw order. |
kind |
"baseline" | "failure" |
baseline or failure. |
pattern |
FailurePatternJSON |
The failure pattern: the failed nodes and links. |
occurrences |
integer |
How many draws produced this pattern. |
trace |
FailureTraceJSON |
The first draw's trace of this pattern. Absent when failure traces are not requested, or no draw produced the pattern. |
FailurePatternJSON
| Field |
Type |
Description |
excluded_nodes |
list of string |
Failed nodes, sorted. |
excluded_links |
list of string |
Failed links (both directions), sorted. |
FailureRequestJSON
| Field |
Type |
Description |
policy_name |
string or null |
The named failure policy. Null when the policy is inline. |
inline_policy |
object or null |
An inline failure policy. Null when the policy is named. |
iterations |
integer |
The number of failure draws. |
seed |
integer or null |
The draws' base seed. Null when the draws are unseeded. |
failure_trace |
boolean |
Whether the first draw of each pattern records its trace. |
FailureSelectionJSON
| Field |
Type |
Description |
rule_index |
integer |
The rule's index in its mode. |
scope |
"node" | "link" | "risk_group" |
What the rule selects: node, link or risk_group. |
selected |
list of string |
The selected entities. |
FailureTraceJSON
| Field |
Type |
Description |
draw_index |
integer |
The draw that first produced the pattern. |
mode_index |
integer or null |
The mode drawn. Null when the policy has no modes. |
mode_attrs |
object |
The drawn mode's attributes. |
selections |
list of FailureSelectionJSON |
What each rule selected. |
expanded_nodes |
list of string |
Nodes the selections expand to. |
expanded_links |
list of string |
Links the selections expand to. |
ForwardingFailureJSON
| Field |
Type |
Description |
kind |
"loss_iteration" |
The record kind, a fixed tag. |
message |
string |
The native error text. |
FractionJSON
| Field |
Type |
Description |
numerator |
integer |
The fraction's numerator. |
denominator |
integer |
The fraction's denominator (positive). |
HardwareLevelJSON
| Field |
Type |
Description |
level |
integer |
The hierarchy depth of the rows. |
rows |
list of HardwareRowJSON |
One row per hierarchy path at this depth. |
HardwareRowJSON
| Field |
Type |
Description |
path |
string |
The hierarchy path of the row (empty for the root level). |
platform_capex |
number |
Platform cost of the path's nodes. |
platform_power_watts |
number |
Platform power of the path's nodes, in watts. |
optics_capex |
number |
Optic cost of the path's link ends. |
optics_power_watts |
number |
Optic power of the path's link ends, in watts. |
capex_total |
number |
Platform and optic cost. |
power_total_watts |
number |
Platform and optic power, in watts. |
HeadDesignJSON
| Field |
Type |
Description |
head |
SourceJSON |
The tunnel head: a node name, or the pool head of a TE ingress pool. |
units |
integer |
The head's share of the design volume (integer units of q). |
| Field |
Type |
Description |
kind |
"input" |
The record kind, a fixed tag. |
label |
string |
The input or constraint label: where the value is declared. |
q_upper_bound |
FractionJSON |
The largest q at which rounding this input is guaranteed within the precision: 2 times the precision times the input (rounding moves it half a unit at most). |
met |
boolean |
Whether the chosen q meets it. |
JSONValue
One of: null or boolean or integer or number or string or list of JSONValue or object.
MSDAnalysisJSON
| Field |
Type |
Description |
kind |
"msd" |
The record kind, a fixed tag. |
metadata |
AnalysisMetadataJSON |
Run or analysis metadata. |
outputs |
OutputSelectionJSON |
The output selection of the best and probe rows. |
alpha_feasible |
ExactAlphaJSON or null |
The largest tested feasible alpha. Null when no tested alpha was feasible. |
best_probe_index |
integer or null |
The history index of the probe at alpha_feasible. Null when no tested alpha was feasible. |
monotone_proven |
boolean |
Whether feasibility (every demand fits) is proven downward closed in alpha for this question class: an alpha below a feasible one is feasible, so the search's bracket is sound. Delivery itself need not be monotone in alpha. |
proof |
MSDProofJSON |
What makes feasibility downward closed in alpha (every alpha below a feasible one is feasible). Values: fixed_program (every demand forwards a program that does not change with alpha); single_controller (one centralized-TE demand without a tunnel count, or one optimized shortest-paths demand with a static route choice, alone in its set); nothing_offered (the set offers no traffic); unproved (no proof: the search is a heuristic). |
upper_certificate |
UpperCertificateJSON or null |
A proved bracket around the largest feasible alpha. Null when no bracket is proved. |
search_status |
MSDStatusJSON |
How the search ended. Values: feasible (the gap between a feasible and an infeasible alpha closed to alpha_tolerance); limit (a feasible alpha was found, but the search reached alpha_max or an iteration limit); none_feasible (no tested alpha was feasible); range (a probe's scaled volumes left the native range, and the search stopped there); stagnation (the next bracketing value equals the current alpha, or a bisection midpoint rounds to a bracket endpoint); trivial (the set offers no traffic and one probe at alpha_max succeeded). |
stop_reason |
MSDStopReasonJSON |
Why the search stopped. Values: tolerance (the gap closed to alpha_tolerance); alpha_bound (the search reached alpha_min or alpha_max); bracket_limit (max_bracket_iters ran out before a feasible and an infeasible alpha were found); bisect_limit (max_bisect_iters ran out before the gap closed); offer_range (a probe left the native range); representable_limit (the next bracketing value equals the current alpha, or a bisection midpoint rounds to a bracket endpoint); nothing_offered (the set offers no traffic); unit_resolution (no feasible alpha: each tested alpha either rounds some positive volume to zero units or does not fit). |
history |
list of MSDProbeJSON |
Every probe in the order tested. |
best_rows |
list of PlacementRowJSON or null |
The rows at alpha_feasible. Null when no tested alpha was feasible. |
best_accounting |
list of ExpansionAccountingJSON or null |
The accounting at alpha_feasible. Null when no tested alpha was feasible. |
probe_rows |
list of ProbeRowsJSON |
Rows of every probe. Absent when probe rows are not requested. |
query |
MSDQueryJSON |
The analysis's typed query (a workflow step records it as the step's question instead). Absent when the analysis is a workflow step's result. |
controller |
list of TableReportJSON |
The WCMP controller's tables of this demand set. Absent when no WCMP controller programs the set. |
MSDProbeJSON
| Field |
Type |
Description |
index |
integer |
The probe's position in the search history (0 first). |
alpha |
ExactAlphaJSON |
The probe's exact alpha. |
outcome |
"feasible" | "infeasible" | "below_resolution" | "range" |
feasible, infeasible, below_resolution (rounds to zero) or range (out of native range). |
totals |
PlacementTotalsJSON or null |
The probe's totals. Null when the probe was out of range. |
range_refusal |
RangeRefusalJSON or null |
Why the probe was out of range. Null when the probe was in range. |
MSDProofJSON
One of: "fixed_program" | "single_controller" | "nothing_offered" | "unproved".
MSDQueryJSON
| Field |
Type |
Description |
kind |
"msd" |
The record kind, a fixed tag. |
demand_set |
string |
The demand set's name. |
demands |
list of DemandQuestionJSON |
The declared demands of the set, as they were asked. |
alpha_start |
number |
The first alpha probed. |
growth_factor |
number |
The factor between bracket probes. |
alpha_min |
number |
The smallest alpha searched. |
alpha_max |
number |
The largest alpha searched. |
alpha_tolerance |
number |
The absolute width of the final alpha bracket at which bisection stops. |
max_bracket_iters |
integer |
The largest number of bracket probes. |
max_bisect_iters |
integer |
The largest number of bisection probes. |
export_probe_rows |
boolean |
Whether every probe's rows are exported. |
MSDStatusJSON
One of: "feasible" | "none_feasible" | "range" | "stagnation" | "limit" | "trivial".
MSDStopReasonJSON
One of: "tolerance" | "alpha_bound" | "bracket_limit" | "bisect_limit" | "offer_range" | "representable_limit" | "nothing_offered" | "unit_resolution".
MarginalCostBinJSON
| Field |
Type |
Description |
marginal_cost |
integer |
The increase of the minimum total cost per additional unit. |
units |
integer |
The units delivered at that marginal cost. |
MarginalCurveJSON
| Field |
Type |
Description |
kind |
"marginal_curve" |
The record kind, a fixed tag. |
cost_domain |
"physical_network" | "analysis_graph" |
physical_network, or analysis_graph when costs include the pool attachment's 1. |
bins |
list of MarginalCostBinJSON |
The native marginal cost curve: each piece's marginal cost and units, in ascending cost. |
MemberWeightJSON
| Field |
Type |
Description |
edge |
DirectedLinkJSON |
The member: a directed link leaving the router. |
weight |
integer |
Its integer weight (0 included). |
ModelJSON
| Field |
Type |
Description |
routing |
"shortest_paths" | "distributed_te" | "centralized_te" | "pinned" |
The routing model. |
admission |
"lossless" | "lossy" |
lossless (admit the largest total whose splits fit, and refuse the rest before it enters) or lossy (send the whole offer; what does not fit is lost at the sources or on the links). |
allocation |
"equal" | "weighted" | "optimized" or null |
How a router splits over its members: equal, weighted or optimized. Null when it does not apply to the model. |
source_allocation |
"equal" | "optimized" | "weighted" or null |
How sources share the demand: equal, weighted or optimized. Null when it does not apply to the model. |
source_weights |
list of DeclaredSourceWeightJSON or null |
Weighted sources (CentralizedTE without tunnels): the question's declared weights, each graph node with a nonzero weight in node order (a zero weight receives nothing; all zero gives an empty list); a TE ingress pool's private head is named by its pool. Null when the sources are not weighted. |
weight_basis |
"capacity" | "explicit" | "residual_snapshot" or null |
What weighted splits are proportional to. Null when it does not apply to the model. |
edge_weights |
list of EdgeWeightJSON or null |
Explicit edge weights. Null when the model has none. |
tie_break |
"fewer_hops" | "higher_capacity" | "higher_available_capacity" | "higher_headroom" or null |
How equal-cost choices are ordered (ShortestPaths and T1). Null when the model is another one, or the WCMP controller programs the demand. |
multipath |
boolean or null |
ShortestPaths: whether every equal-cost walk is used (false: one canonical path). Null when the model is not ShortestPaths, or the WCMP controller programs the demand. |
parallel_edges |
boolean or null |
ShortestPaths and T1: whether every parallel link is used (false: one per node pair). Null when the model is neither, or the WCMP controller programs the demand. |
tunnel_count |
TunnelCountJSON or null |
The tunnel count per head. Null when the model has no tunnels. |
prefer_headroom |
boolean or null |
CentralizedTE: whether T2, after minimizing total tunnel cost, minimizes the plan's headroom penalty, based on occupied fractions of link capacity. Null when the model is not CentralizedTE. |
cost_ceiling |
CostCeilingJSON or null |
The tunnels' cost ceiling. Null when there is none. |
min_unreserved_bandwidth_units |
integer or null |
T1: a setup-search filter (integer units of q): a tunnel's search uses a link only when its unreserved capacity is at least both the tunnel's request and this minimum; nothing is kept free. Null when the model is not T1. |
route_names |
list of string or null |
The named routes of a pinned model. Null when the model is not pinned by named routes. |
controller |
"next_hop" | "group" | "all_routers" or null |
The WCMP controller scope that programs the demand. Null when no controller programs it. |
supplied_support |
boolean |
Whether a CentralizedTE model was given its own support DAG. |
supplied_program |
boolean |
Whether a pinned model was given a native program (its routes are not exported). |
NamedPathJSON
| Field |
Type |
Description |
source |
string |
The path's source node. |
destination |
string |
The path's destination node. |
cost |
integer |
The path's cost. |
hops |
list of list of DirectedLinkJSON |
The path's hops in order; each hop lists the parallel directed links it may use. |
NativeOutputsJSON
| Field |
Type |
Description |
edge_flows |
boolean |
Request each row's per-link flows. |
residual |
boolean |
Request each row's per-link residual capacity. |
edge_reservations |
boolean |
Request each row's per-link tunnel holds. |
saturated_boundary_edges |
boolean |
Request each row's saturated boundary links. |
min_cut |
boolean |
Request the minimum cut where it is defined. |
NativePlacementJSON
| Field |
Type |
Description |
request_kind |
"finite" | "unlimited" |
Whether the request is finite or unlimited. |
requested_units |
integer or null |
The request (integer units of q). Null when the request is unlimited. |
offered_units |
integer or null |
Lossy: the units sent into the network. Null when admission is lossless. |
delivered_units |
integer |
The units delivered to the destinations. |
unadmitted_units |
integer or null |
Lossless: the request minus the delivery; lossy: 0. Null when the request is unlimited. |
source_drop_units |
integer |
Lossy: units lost at sources without a usable route; 0 when lossless. |
edge_drop_units |
integer |
Lossy: units dropped on physical links and TE ingress pool attachments, in all; 0 when lossless. |
termination |
"complete" | "no_route" | "exhausted" | "no_active_weight" |
The native call's outcome. Values: complete (the offer is 0, admitted in full when lossless, or forwarded in full when lossy, its losses included); no_route (a positive offer and no source with a route); no_active_weight (the program has routes, but none of positive weight can send anything); exhausted (lossless and less than the offer admitted, or an unlimited offer). |
total_cost |
integer or null |
The controllers only (CentralizedTE without tunnels, ShortestPaths with optimized allocation): the exact sum over links of cost times carried units. Null when the model is another one (T1, T2, pinned, other ShortestPaths). |
call_delivered_units |
integer |
The units this call delivered. Absent when details are not requested. |
call_undelivered_units |
integer or null |
The request minus this call's delivery. Null when the request is unlimited. Absent when details are not requested. |
delivery_delta_units |
integer |
The delivery after the call minus before it. Absent when details are not requested. |
call_edge_drops |
list of EdgeAmountJSON |
This call's drops on physical links. Absent when details are not requested. |
call_source_drop_units |
integer |
This call's offered units lost at sources without a usable route. Absent when details are not requested. |
admitted_units |
integer |
Lossless: the units carried; lossy: the units offered. Absent when details are not requested. |
edge_drops |
list of EdgeAmountJSON |
Drops on physical links, by directed link. Absent when details are not requested. |
by_source |
list of SourceFlowJSON |
One row per source, in source order (zero rows included). Absent when details are not requested. |
by_tunnel |
list of TunnelFlowJSON |
One row per tunnel of the program, in entry order. Absent when details are not requested. |
plan |
TunnelPlanJSON or null |
T1 and T2: the tunnel plan after the call. Null when the model is not T1 or T2. Absent when details are not requested, and in a tunnel-count row's result (the row records the plan). |
edge_flows |
list of EdgeAmountJSON |
The units each directed physical link carries. Absent when it was not requested. |
residual |
list of EdgeAmountJSON |
Each directed physical link's residual capacity (integer units of q): after this row, or, in simultaneous placement, the one final residual every row shares. Absent when it was not requested. |
edge_reservations |
list of EdgeAmountJSON |
Each directed physical link's tunnel holds (integer units of q). Absent when it was not requested. |
saturated_boundary_edges |
list of DirectedLinkJSON |
The saturated links at the sources' reachable boundary. Absent when it was not requested. |
min_cut |
list of DirectedLinkJSON or null |
The minimum cut closest to the sources, where one is defined (unrestricted optimized CentralizedTE at its maximum). Null when no cut is defined. Absent when it was not requested. |
synthetic_ingress |
SyntheticProjectionJSON |
Amounts on the private pool attachments (the synthetic ingress edges). Absent when the row has no TE ingress pool, or no native output is requested and details record no attachment drops. |
NetworkStatsParametersJSON
| Field |
Type |
Description |
include_disabled |
boolean |
Whether disabled nodes and links are counted. |
excluded_nodes |
list of string |
Nodes left out of the statistics. |
excluded_links |
list of string |
Links left out of the statistics. |
NetworkStatsQuestionJSON
| Field |
Type |
Description |
kind |
"network_stats" |
The record kind, a fixed tag. |
parameters |
NetworkStatsParametersJSON |
The step's parameters. |
NetworkStatsResultJSON
| Field |
Type |
Description |
kind |
"network_stats" |
The record kind, a fixed tag. |
node_count |
integer |
Nodes counted. |
link_count |
integer |
Links counted. |
total_capacity |
number |
The sum of link capacities. |
mean_capacity |
number |
The mean link capacity. |
median_capacity |
number |
The median link capacity. |
min_capacity |
number |
The smallest link capacity. |
max_capacity |
number |
The largest link capacity. |
mean_cost |
number |
The mean link cost. |
median_cost |
number |
The median link cost. |
min_cost |
integer |
The smallest link cost. |
max_cost |
integer |
The largest link cost. |
mean_degree |
number |
The mean node degree. |
median_degree |
number |
The median node degree. |
min_degree |
number |
The smallest node degree. |
max_degree |
number |
The largest node degree. |
OutputSelectionJSON
| Field |
Type |
Description |
native |
NativeOutputsJSON |
The native output flags. |
cost_distribution |
boolean |
Whether cost reports are exported. |
details |
boolean |
Whether native per-source, per-tunnel, plan and call fields are exported. |
PathAnalysisJSON
| Field |
Type |
Description |
kind |
"paths" |
The record kind, a fixed tag. |
metadata |
AnalysisMetadataJSON |
Run or analysis metadata. |
algorithm |
"spf" | "ksp" |
The path search: spf (shortest paths) or ksp (k shortest paths). |
mode |
"combine" | "pairwise" |
How sources and targets pair: combine or pairwise. |
costs_only |
boolean |
Only path costs, without the paths. |
rows |
list of PathRowJSON |
The analysis rows, one per demand or endpoint pair. |
query |
PathQueryJSON |
The analysis's typed query (a workflow step records it as the step's question instead). Absent when the analysis is a workflow step's result. |
PathCostBinJSON
| Field |
Type |
Description |
cost |
integer |
The path cost (analysis graph for a pool). |
physical_path_cost |
integer |
The path cost without the pool attachment. |
delivered_units |
integer |
The units delivered over paths of this cost. |
PathQueryJSON
| Field |
Type |
Description |
kind |
"paths" |
The record kind, a fixed tag. |
source |
SelectorJSON |
The source selector. |
target |
SelectorJSON |
The target selector. |
mode |
"combine" | "pairwise" |
How sources and targets pair: combine or pairwise. |
algorithm |
"spf" | "ksp" |
The path search: spf (shortest paths) or ksp (k shortest paths). |
costs_only |
boolean |
Only path costs, without the paths. |
max_paths |
integer or null |
The largest number of paths per row. Null when every path is kept. |
split_parallel_edges |
boolean or null |
SPF: whether each parallel link is its own path. Null when the algorithm is KSP. |
k |
integer or null |
KSP: the number of shortest paths. Null when the algorithm is SPF. |
cost_ceiling |
CostCeilingJSON or null |
KSP: the cost ceiling. Null when there is none or the algorithm is SPF. |
tie_break |
"fewer_hops" | "higher_capacity" | "higher_available_capacity" | "higher_headroom" |
How equal-cost choices are ordered. |
multipath |
boolean or null |
SPF: whether every equal-cost walk is used. Null when the algorithm is KSP. |
parallel_edges |
boolean |
Whether every parallel link is used (false: one per node pair). |
excluded_nodes |
list of string or PoolNodeJSON |
Nodes excluded from the question: physical nodes by name, a TE ingress pool's private head by its pool. |
excluded_edges |
list of DirectedLinkJSON or SyntheticIngressJSON |
Directed links excluded from the question. |
residual_units |
list of integer or null |
The supplied residual capacities the search used (SPF or KSP), one per edge of the prepared graph in edge order (pool attachments included; integer units of q). Null when no residual vector is supplied. |
min_residual |
integer or null |
SPF: when residual_units is supplied, a link is usable only when that residual is at least this many units; without the vector there is no residual filter (KSP's supplied vector uses a minimum of one unit). Null when the algorithm is KSP. |
PathRowJSON
| Field |
Type |
Description |
id |
string |
The row's stable identifier within its analysis. |
endpoints |
EndpointsJSON |
The physical source and destination node names of the row. |
kind |
"paths" | "self" |
paths, or self for a source equal to its target. |
cost |
integer or null |
The shortest cost of the row. Null when the destination is unreachable. |
paths |
list of NamedPathJSON |
The paths of this row. Absent when the query is costs-only. |
PlacementAnalysisJSON
| Field |
Type |
Description |
kind |
"placement" |
The record kind, a fixed tag. |
metadata |
AnalysisMetadataJSON |
Run or analysis metadata. |
outputs |
OutputSelectionJSON |
The output selection that applies to the rows. |
alpha |
ExactAlphaJSON |
The exact scaling of the declared demands. |
accounting |
list of ExpansionAccountingJSON |
Each declared demand's units: declared, resolved and discarded. |
cases |
list of PlacementCaseJSON |
The baseline case first, then each distinct failure pattern. |
query |
PlacementQueryJSON |
The analysis's typed query (a workflow step records it as the step's question instead). Absent when the analysis is a workflow step's result. |
controller |
list of TableReportJSON |
The WCMP controller's tables of this demand set. Absent when no WCMP controller programs the set. |
PlacementCaseJSON
PlacementQueryJSON
| Field |
Type |
Description |
kind |
"placement" |
The record kind, a fixed tag. |
demand_set |
string |
The demand set's name. |
demands |
list of DemandQuestionJSON |
The declared demands of the set, as they were asked. |
alpha |
ExactAlphaJSON |
The exact scaling of the declared demands. |
alpha_source |
AlphaSourceJSON |
Where alpha comes from: the query, or an MSD step. |
failures |
FailureRequestJSON or null |
The failure request. Null when the question is the baseline only. |
states |
list of "converged" | "stale" | "repair" |
One entry per requested failure state. |
interaction |
"ordered" | "simultaneous" |
ordered (priority order) or simultaneous (one lossy fixed-program forwarding). |
PlacementRowJSON
| Field |
Type |
Description |
kind |
"placement" |
The record kind, a fixed tag. |
id |
string |
The row's stable identifier within its analysis. |
base_id |
string |
The declared demand's identifier, before expansion. |
endpoints |
EndpointsJSON |
The physical source and destination node names of the row. |
reference_request_units |
integer |
The scaled declared request (integer units of q), the denominator of the delivery ratio. |
reference_shortfall_units |
integer |
The reference request minus the delivery (integer units of q). |
result |
NativePlacementJSON |
The native placement result. |
pool |
PoolMetadataJSON or null |
The TE ingress pool the row's sources share. Null when the sources share no pool. |
cost_distribution |
CostReportJSON |
The requested cost report. Absent when the report was not requested or is not derivable. |
unavailable_outputs |
UnavailableOutputsJSON |
Requested outputs that the model cannot provide, with the reason. Absent when every requested output is provided. |
PlacementStateJSON
| Field |
Type |
Description |
rows |
list of PlacementRowJSON |
The analysis rows, one per demand or endpoint pair. |
totals |
PlacementTotalsJSON or null |
Exact totals over the state's rows. Null when the state's forwarding calculation cycled or reached its round limit (see failure). |
failure |
ForwardingFailureJSON |
The state's bounded lossy forwarding calculation cycled or reached its round limit. This does not prove that no stable answer exists. Absent when the forwarding calculation finished. |
dead_caps |
list of DeadCapJSON |
Declared root groups with no live member in this case, with their fixed caps. Absent when the WCMP controller's scope is not group, and in the stale state. |
PlacementStatesJSON
| Field |
Type |
Description |
converged |
PlacementStateJSON |
The demands computed again on the failed network. Absent when the query does not ask this state. |
stale |
PlacementStateJSON |
The no-failure programs forwarded unchanged on the failed network. Absent when the query does not ask this state. |
repair |
PlacementStateJSON |
The no-failure programs over their surviving routes. Absent when the query does not ask this state. |
PlacementTotalsJSON
| Field |
Type |
Description |
reference_request_units |
integer |
The scaled declared requests over the rows (integer units of q). |
delivered_units |
integer |
Units delivered over the rows. |
unadmitted_units |
integer |
Lossless units not admitted over the rows. |
source_drop_units |
integer |
Lossy units lost at sources over the rows. |
edge_drop_units |
integer |
Lossy units dropped on physical links and TE ingress pool attachments over the rows. |
reference_shortfall_units |
integer |
The reference request minus the delivery (integer units of q). |
delivery_ratio |
FractionJSON |
Delivered over the reference request (a fraction; 1 for no request). |
feasible |
boolean |
Whether every row delivered its whole reference request, without loss. |
PoolHeadJSON
| Field |
Type |
Description |
pool_id |
string |
The pool's identifier. |
physical_sources |
list of string |
The physical sources behind the pool head. |
| Field |
Type |
Description |
head |
PoolHeadJSON |
The pool head and its physical sources. |
offer_limit_units |
integer |
The prepared lossy offer budget of the pool (integer units of q). |
synthetic_ingress_cost |
1 |
The cost of each pool attachment (1). |
PoolNodeJSON
| Field |
Type |
Description |
pool_id |
string |
The pool's identifier (as PoolHeadJSON names it). |
PreparationScopeJSON
| Field |
Type |
Description |
workflow_steps |
list of string |
The workflow steps prepared. |
workflow_demand_sets |
list of string |
The demand sets the workflow names. |
library_demand_sets |
list of string |
The demand sets the library caller named. |
ProbeRowsJSON
| Field |
Type |
Description |
index |
integer |
The probe's history index. |
rows |
list of PlacementRowJSON |
The probe's rows. |
ProgrammedRouterJSON
| Field |
Type |
Description |
router |
string |
The programmed router. |
members |
list of MemberWeightJSON |
Its members with their integer weights. |
RangeConstraintJSON
| Field |
Type |
Description |
kind |
"capacity_sum" | "cost_sum" | "amount" |
What is bounded: a capacity sum, a cost sum, or one amount. |
label |
string |
The input or constraint label: where the value is declared. |
tested_q |
number |
The q tested. |
units_value |
integer |
The value at that q (integer units of q). |
exclusive_limit |
integer |
The exclusive native limit (2^62). |
met |
boolean |
Whether the value is below the limit. |
RangeRefusalJSON
| Field |
Type |
Description |
label |
string |
The input or constraint label: where the value is declared. |
reason |
"scaled_nonfinite" | "native_units_range" |
scaled_nonfinite or native_units_range. |
message |
string |
The refusal text. |
binary64_hex |
string or null |
The refused binary64 value in hexadecimal. Null when the refused amount is not a binary64 value. |
RunJSON
| Field |
Type |
Description |
metadata |
RunMetadataJSON |
The run's metadata: versions and the seed. |
steps |
list of StepResultJSON |
The workflow steps in declaration order. |
units_report |
UnitsReportJSON |
The units report of the preparation: q, its input/count bounds and range sums. |
| Field |
Type |
Description |
schema_version |
"1.0" |
The results schema version. |
netgraph_version |
string |
The installed ngraph package version. |
core_version |
string |
The netgraph-core version. |
core_extension_sha256 |
string |
The SHA-256 of the loaded native extension. |
python_version |
string |
The Python version. |
seed |
integer or null |
The scenario seed. Null when the scenario sets no seed. |
| Field |
Type |
Description |
random_rule_algorithm |
"per_entity_bernoulli" |
The random-rule algorithm: one Bernoulli trial per entity. |
rng |
"random.Random" |
The random number generator. |
python_version |
string |
The Python version that drew. |
seed |
integer or null |
The base seed. Null when the draws are unseeded. |
seed_source |
"query" | "step" | "scenario" | "policy" | "unseeded" |
Where the base seed comes from. |
draw_seed_rule |
"base_plus_draw_index" |
Draw i uses the base seed plus i. |
entity_order |
"sorted_identifier" |
Entities are drawn in sorted identifier order. |
rule_order |
"declaration" |
Rules are applied in declaration order. |
iterations |
integer |
The number of draws. |
SelectorJSON
| Field |
Type |
Description |
path |
string or null |
The path pattern (a regular expression matched at the start of node names). Null when every node is selected. |
group_by |
string or null |
A node attribute that groups the selection. Null when there is none. |
match |
object or null |
Attribute conditions that filter the selection. Null when there are none. |
active_only |
boolean or null |
Whether disabled nodes are left out. Null when the caller's default applies. |
SelfPairJSON
| Field |
Type |
Description |
kind |
"self" |
The record kind, a fixed tag. |
id |
string |
The row's stable identifier within its analysis. |
node |
string |
The node that is both source and target. |
capacity_units |
0 |
Always 0: a node's capacity to itself is not a question. |
SensitivityAnalysisJSON
| Field |
Type |
Description |
kind |
"sensitivity" |
The record kind, a fixed tag. |
metadata |
AnalysisMetadataJSON |
Run or analysis metadata. |
outputs |
OutputSelectionJSON |
The output selection that applies to the rows. |
endpoints |
EndpointsJSON |
The physical source and destination node names of the row. |
question |
"lossless_bound" | "fixed_offer_delivery" |
The question this step or analysis asked. |
offer_source |
"unlimited" | "explicit" | "design" |
Where the offer comes from: unlimited, explicit or the design demand. |
baseline |
NativePlacementJSON |
The native result without deletions. |
entries |
list of SensitivityEntryJSON |
Each directed link whose deletion changes delivery, with the reduction. |
query |
SensitivityQueryJSON |
The analysis's typed query (a workflow step records it as the step's question instead). Absent when the analysis is a workflow step's result. |
SensitivityEntryJSON
| Field |
Type |
Description |
edge |
DirectedLinkJSON |
The directed physical link. |
delivery_reduction_units |
integer |
Baseline delivery minus the delivery without this link (negative: deleting it helps). |
SensitivityQueryJSON
| Field |
Type |
Description |
kind |
"sensitivity" |
The record kind, a fixed tag. |
source |
SelectorJSON |
The source selector. |
target |
SelectorJSON |
The target selector. |
model |
ModelJSON |
The routing model and admission of the question. |
offer |
number or null |
The physical offer. Null when no offer is set. |
design_demand |
number or null |
The physical design volume of tunnels. Null when no design volume is set. |
excluded_nodes |
list of string or PoolNodeJSON |
Nodes excluded from the question: physical nodes by name, a TE ingress pool's private head by its pool. |
excluded_edges |
list of DirectedLinkJSON or SyntheticIngressJSON |
Directed links excluded from the question. |
SourceFlowJSON
| Field |
Type |
Description |
source |
SourceJSON |
The source: a node name, or the pool head of a TE ingress pool. |
offered_units |
integer or null |
Lossy: the units this source sent. Null when admission is lossless. |
admitted_units |
integer |
Lossless: the units it delivers; lossy: offered. |
delivered_units |
integer |
The units this source delivers. |
source_drop_units |
integer |
Lossy: units lost at sources without a usable route; 0 when lossless. |
total_edge_drop_units |
integer |
Lossy: this source's units dropped on physical links and TE ingress pool attachments; 0 when lossless. |
SourceJSON
One of: string or PoolHeadJSON.
SourceWeightJSON
| Field |
Type |
Description |
source |
string |
The source node. |
nominal_physical |
FractionJSON |
Its share of declared physical volumes toward the destination (a fraction, before alpha). |
weight |
integer |
Its integer source weight. |
SplitCountConstraintJSON
| Field |
Type |
Description |
kind |
"split_count" |
The record kind, a fixed tag. |
capacity_label |
string |
The first smallest positive link capacity in link insertion order. |
capacity |
number |
The smallest positive physical link capacity, including disabled links. |
nodes |
integer |
The physical network's node count, including disabled nodes. |
directed_links |
integer |
Twice the physical link count, including disabled links and excluding pool attachments. |
group |
string or null |
The demand set or workflow. that sets the count; the floor wins ties. Null when the floor sets the count. |
demands |
integer |
Lossless shared equal-split leaves in the winning group, or zero for the floor. |
tunnels |
integer |
Heads times declared tunnels per head in the winning group, or zero for the floor. |
count |
FractionJSON |
The maximum of the floor L/4 + 2 and max(k, 1) times that floor plus t over prepared groups. |
q_upper_bound |
FractionJSON |
The split-count upper bound on q: precision times the smallest positive capacity divided by the count. |
met |
boolean |
Whether the prepared q meets this bound; the delivery theorem has additional premises. |
StandaloneAnalysisJSON
| Field |
Type |
Description |
metadata |
RunMetadataJSON |
The export's metadata: versions. |
analysis |
AnalysisJSON (with query) |
The exported analysis. |
units_report |
UnitsReportJSON |
The units report of the preparation: q, its input/count bounds and range sums. |
StepQuestionJSON
One of: CapacityQueryJSON or PlacementQueryJSON or SensitivityQueryJSON or PathQueryJSON or MSDQueryJSON or TunnelCountQueryJSON or DomainQuestionJSON or CustomQuestionJSON.
StepResultJSON
| Field |
Type |
Description |
name |
string |
The workflow step's name. |
step_type |
string |
The step's class name. |
execution_order |
integer |
The step's position in the run (0 first). |
scenario_seed |
integer or null |
The scenario seed. Null when the scenario sets no seed. |
step_seed |
integer or null |
The step's effective seed. Null when the step has no effective seed. |
seed_source |
"explicit-step" | "scenario-derived" | "none" |
Where the step's seed comes from. |
result |
AnalysisJSON or DomainResultJSON or JSONValue |
The step's exported result. Null when a custom step returns no result, or its registered exporter writes null. |
question |
StepQuestionJSON |
The question the step asked. |
SyntheticAmountJSON
| Field |
Type |
Description |
edge |
SyntheticIngressJSON |
The pool attachment: its pool and source. |
units |
integer |
The amount (integer units of q). |
SyntheticIngressJSON
| Field |
Type |
Description |
pool_id |
string |
The pool's identifier. |
source |
string |
The physical source this attachment feeds. |
SyntheticProjectionJSON
| Field |
Type |
Description |
call_edge_drops |
list of SyntheticAmountJSON |
This call's drops on pool attachments. Absent when details are not requested. |
edge_drops |
list of SyntheticAmountJSON |
Drops on pool attachments. Absent when details are not requested. |
edge_flows |
list of SyntheticAmountJSON |
The units each pool attachment carries. Absent when it was not requested. |
residual |
list of SyntheticAmountJSON |
Each pool attachment's residual capacity (integer units of q): after this row, or, in simultaneous placement, the one final residual every row shares. Absent when it was not requested. |
edge_reservations |
list of SyntheticAmountJSON |
Each pool attachment's holds (integer units of q). Absent when it was not requested. |
saturated_boundary_edges |
list of SyntheticIngressJSON |
The saturated pool attachments at the boundary. Absent when it was not requested. |
min_cut |
list of SyntheticIngressJSON or null |
The pool attachments in the minimum cut. Null when no cut is defined. Absent when it was not requested. |
TableReportJSON
| Field |
Type |
Description |
destination |
string |
The destination of the table. |
programmed |
list of ProgrammedRouterJSON |
The routers the controller programs, with their member weights. |
source_weights |
list of SourceWeightJSON or null |
all_routers: each source's share of declared physical volumes and its weight. Null when the scope is not all_routers. |
TunnelCountAnalysisJSON
| Field |
Type |
Description |
kind |
"tunnel_counts" |
The record kind, a fixed tag. |
metadata |
AnalysisMetadataJSON |
Run or analysis metadata. |
outputs |
OutputSelectionJSON |
The output selection that applies to the rows. |
rows |
list of TunnelCountRowJSON |
One row per demand and tunnel count. |
query |
TunnelCountQueryJSON |
The analysis's typed query (a workflow step records it as the step's question instead). Absent when the analysis is a workflow step's result. |
TunnelCountJSON
| Field |
Type |
Description |
per_head |
integer |
Tunnels per head. |
up_to |
boolean |
Whether the count is a limit: every head gets one common count up to it, the smallest whose program carries the live heads' design shares (if none does, the count with the largest live-share score, then the smallest). |
TunnelCountQueryJSON
| Field |
Type |
Description |
kind |
"tunnel_counts" |
The record kind, a fixed tag. |
demand_set |
string |
The demand set's name. |
demands |
list of DemandQuestionJSON |
The declared demands of the set, as they were asked. |
counts |
list of integer |
The tunnel counts asked, one row each per demand. |
up_to |
integer or null |
The up-to limit asked. Null when there is none. |
design_demand |
number |
The physical design volume of every demand. |
offer |
number |
The physical offer of every demand. |
excluded_nodes |
list of string or PoolNodeJSON |
Nodes excluded from the question: physical nodes by name, a TE ingress pool's private head by its pool. |
excluded_edges |
list of DirectedLinkJSON or SyntheticIngressJSON |
Directed links excluded from the question. |
TunnelCountRowJSON
| Field |
Type |
Description |
id |
string |
The row's stable identifier within its analysis. |
base_id |
string |
The declared demand's identifier, before expansion. |
endpoints |
EndpointsJSON |
The physical source and destination node names of the row. |
count |
integer |
The tunnels per head of this row (an up-to row: its limit). |
up_to |
boolean |
Whether this row is the up-to row. |
pool |
PoolMetadataJSON or null |
The TE ingress pool the row's sources share. Null when the sources share no pool. |
lossless_at_design_units |
integer |
The lossless delivery at the design volume: min(design, the plan's lossless maximum). |
physical_tunnel_cost |
integer |
For a TE ingress pool: the total tunnel cost without the pool attachments; else the total tunnel cost. |
plan |
TunnelPlanJSON |
The tunnel plan after the call. |
result |
NativePlacementJSON (without plan) |
The native placement result. |
TunnelFlowJSON
| Field |
Type |
Description |
entry_id |
integer |
The tunnel's entry identifier in the program. |
head |
SourceJSON |
The tunnel head: a node name, or the pool head of a TE ingress pool. |
status |
"up" | "insufficient_bandwidth" | "cost_ceiling_exceeded" | "failed" | "blackholed" |
The tunnel's status in this forwarding. Values: up (set up and available for forwarding; it may carry zero units); insufficient_bandwidth (down: no path had enough unreserved bandwidth); cost_ceiling_exceeded (down: the cheapest path with enough bandwidth costs more than the cost ceiling); failed (repair state: a failure touches the tunnel, so its route is removed); blackholed (stale state: the tunnel stays up but its path reaches a failed node or link, where its traffic is dropped). |
assigned_units |
integer |
The units assigned to the tunnel (lossy: sent to it; lossless: carried). |
delivered_units |
integer |
The units this tunnel delivers. |
total_edge_drop_units |
integer |
Lossy: this tunnel's units dropped on physical links and TE ingress pool attachments; 0 when lossless. |
TunnelPlanJSON
| Field |
Type |
Description |
tunnels_per_head |
integer |
Tunnels per head (an up-to count: the chosen count). |
design_kind |
"finite" | "unlimited" |
Whether the design volume is finite or unlimited. |
design_demand_units |
integer or null |
The design volume D (integer units of q). Null when the design is unlimited. |
design_by_head |
list of HeadDesignJSON |
Each head's share of the design volume. |
total_reserved_bandwidth_units |
integer |
The holds of the up tunnels (integer units of q). |
heads_with_capacity |
list of SourceJSON or null |
T2: the live heads, those that reach a destination over links with at least one free unit (this policy's own traffic released). Null when the plan is T1's. |
insufficient_resolution |
boolean or null |
T2: live heads exist but no whole unit per tunnel fits. Null when the plan is T1's. |
max_fractional_bandwidth_per_tunnel |
FractionJSON or null |
T2: the exact fluid optimum per tunnel (a fraction). Null when the plan is T1's. |
max_bandwidth_per_tunnel_units |
integer or null |
T2: the largest common whole-unit tunnel size U. Null when the plan is T1's. |
planned_bandwidth_per_tunnel_units |
integer or null |
T2: every tunnel's planned bandwidth u. Null when the plan is T1's. |
total_planned_bandwidth_units |
integer or null |
T2: the planned bandwidth over all tunnels. Null when the plan is T1's. |
total_tunnel_cost |
integer or null |
T2: the sum of link cost times tunnel count over the links (exact). Null when the plan is T1's. |
headroom_penalty |
integer or null |
T2 with prefer_headroom: the headroom penalty of the plan. Null when the plan is T1's or prefer_headroom is off. |
max_lossless_offer_units |
integer or null |
T2: the program's lossless maximum offer F. Null when the plan is T1's. |
UnavailableOutputsJSON
| Field |
Type |
Description |
cost_distribution |
CostUnavailableReasonJSON |
Why the cost report is not derivable for this row. Absent when it is derivable or was not requested. |
UnitsReportJSON
| Field |
Type |
Description |
q |
number |
The bandwidth unit: one unit is q in physical terms. |
exponent |
integer |
q as a power of two: q = 2^exponent. |
mode |
"auto" | "manual" |
auto (chosen from static bounds) or manual (declared). |
precision |
number |
The target input/count budget, greater than zero and at most 0.5. |
target_met |
boolean |
Whether both present input/count bounds hold at q; this does not certify arbitrary analysis answers. |
input_convention |
"promoted_binary64_half_up" |
Physical inputs round half-up from their binary64 value. |
display_convention |
"units_authoritative_binary64_display" |
Units are authoritative; physical values are binary64 displays. |
scope |
PreparationScopeJSON |
What the preparation covered. |
limited_by |
"input" | "split_count" | "range" | "resolution_floor" | "declared" | "unbounded" |
Which bound selected q; input wins an equal input/split bound. |
achieved_precision |
FractionJSON or null |
The maximum of q/(2v_min) and qcount/c_min over present denominators; an input/count budget, not a general answer guarantee. Null when there is no positive input or capacity. |
input_bound |
InputConstraintJSON or null |
The smallest positive input's bound, with ties in preparation insertion order. Null when there is no positive prepared bandwidth input. |
split_bound |
SplitCountConstraintJSON or null |
The prepared split-count bound, subject to the documented delivery theorem's premises. Null when there is no positive link capacity. |
range_limit |
RangeConstraintJSON or null |
The range failure at the next finer q when range forced a coarser unit. Null when limited_by is not range. |
augmented_capacity_sum_units |
integer |
The graph's capacity sum with pool attachments (integer units of q). |
augmented_cost_sum |
integer |
The graph's cost sum with pool attachments. |
weight_approximations |
list of WeightApproximationJSON |
Controller weights apportioned because they reached 2^62. |
UpperCertificateJSON
| Field |
Type |
Description |
proof |
"fixed_program" | "single_controller" |
What proves the bracket. |
lower |
ExactAlphaJSON |
The feasible lower alpha. |
upper |
ExactAlphaJSON |
The infeasible upper alpha. |
lower_probe_index |
integer |
The history index of the lower probe. |
upper_probe_index |
integer |
The history index of the upper probe. |
WeightApproximationJSON
| Field |
Type |
Description |
kind |
"weight_approximation" |
The record kind, a fixed tag. |
label |
string |
The router (controller...router.) or all_routers source (controller...source.) whose weights were apportioned. |
max_relative_error |
FractionJSON |
The largest relative error of the apportioned weights (a fraction). |