Run
run evidence
- run
- app
- catalogue status live
- scenario
One streamed request sent by the collector directly to the runtime Finboard ships, on loopback, with a synthetic prompt and the runtime's default system prompt. It exercises the runtime the app ships; it does not exercise Finboard's prompt assembly, capabilities or narration.
- capture mode
- captured at
- model
- qwen2.5:14b measured
- quantization
- Q4_K_M inferred
- parameters
- 14.770033664 B inferred
- architecture
- qwen2 measured
- licence
- apache-2.0 measured
- model digest
- sha256:7cdf5a0187d5c58cc5d369b255592f7841d1c4696d45a8c8a9489440385b22f6 measured
- runtime
- Ollama measured
- runtime version
- 0.30.11 measured
- engine
- llama.cpp b9781 (ggml Metal) inferred
- backend
- metal inferred
- chip
- Apple M5 Pro measured
- memory
- 24 GB measured
- OS
- macOS 26.6.2 measured
- run context
- 16 384 measured
- trained context
- 32 768 measured
- Quality absent — a lab Performance capture carries no Quality payload
- Performance
- Security absent — a lab Performance capture runs no confinement probe
- Operability absent — no Operability payload schema yet
text retained
- sanitizer
- sanitizer version
- record digest
experiments/public/finboard/20261022T064227Z-finboard-runtime-direct/bundle.json
- measured
- timing correlation
- inferred
- unknown
run evidence
The request
The work
Model behind the passes
qwen2.5:14b measured Q4_K_M inferred
What was captured
/
One streamed request sent by the collector directly to the runtime Finboard ships, on loopback, with a synthetic prompt and the runtime's default system prompt. It exercises the runtime the app ships; it does not exercise Finboard's prompt assembly, capabilities or narration.
Request timing
first token 448.82 ms measured generation done 2602.1 ms measured
Performance lenses
This is a guide through the recorded stack, not a measurement. Its arrows show the conceptual path a request takes; they do not assert a measured dependency or a timing join, and the moving dot shows direction, never speed. Every value in a step is read from the bundle with its label; open a step for its lens.
L0 Request
Request timing
The first token separates the wait to begin from the time spent generating. The timeline below uses the request clock; runtime counters and trace timings remain distinct.
| segment | from | to | duration |
|---|---|---|---|
| hand-off to the runner | 0 ms measured | 253.615 ms timing correlation | endpoints only |
| runner's first encode → first token | 253.615 ms timing correlation | 448.82 ms measured | 195.2 ms inferred first_token − runner_first_commit |
| first token → generation done | 448.82 ms measured | 2602.1 ms measured | 2153 ms inferred generation_done − first_token |
prefill rate over the uncached prompt 119.4 tok/s inferred (prompt tokens − cached prefix tokens) ÷ prompt eval seconds
clock join
- alignment residual
- 2.612 ms timing correlation
- decode clusters on the trace
- 57 timing correlation
- generated tokens by the runtime
- 58 timing correlation
- token-count agreement
- agrees (Δ = 0) inferred
trace_clusters = runtime_generated_tokens − 1
Request metrics & cache source
counters, as reported by the runtime
prompt_eval_s | 0.192672 s measured |
|---|---|
eval_s | 2.154999 s measured |
load_s | 0.18716275 s measured |
total_s | 2.550246292 s measured |
done_reason | stop measured |
How to read this lens
The request as the application saw it, on the request clock, whose origin is the request's start — so the first token's time is the time to first token. The bar splits the request into the hand-off to the runner, the runner's first encode to the first token, and the first token to the end of generation; a segment the bundle has no duration for shows its endpoints only. The prompt token counter is reported by the runtime and includes the cached prefix tokens served from the cache.
L1 Phases
Prefill and decode passes
Each column is a pass. Select one to carry it into the GPU timeline. Chunk-arrival ticks use the request clock; the alignment details explain the join.
How to read this lens
The rhythm of the passes: one prefill pass, then one decode pass per generated token, each drawn to its period. The streamed chunks sit on the request clock beneath them, and the clock join says how the trace clock was aligned to the request clock.
L2 Model anatomy
Read the model from its recorded tensors: the structure, projection dimensions and weight storage. Select a layer in the byte stack to explore its runtime block, or a tensor to inspect its evidence.
How to read this lens
Where one token's bytes are: each layer's weight tensors, by their size in the model file. The structure, the projection widths and the stack are drawings; every value they draw is shown with its label beside them, in their hover text, and in the tensor byte map and its source table, which hold the totals and the byte shares. The byte shares are shares of the model file, never shares of kernel time.
L3 Transformer block
Follow attention and the feed-forward network through one decoder layer. Select an operation group to inspect its recorded nodes, tensor shapes and kernels.
outside every block
962absent — outside every block963absent — outside every block
How to read this lens
One layer's nodes in execution order, by op family, each with its kernel and, where it reads a weight tensor, that tensor's shape and type from the model file. Nodes that belong to no layer are listed on their own, with the bundle's reason.
The schematic is drawn only when the layer's recorded operations match a decoder block's pattern, read from each node's operation and the weight tensor it reads; a layer that does not match shows its recorded nodes instead. Each node card is one recorded node in encode order, its edge marking its family: a matrix multiplication, a normalization, or another operation.
L4 Runtime graph
Runtime graph nodes
Filter the graph by layer, operation, kernel or provenance. A node's kernel mapping may be inferred even when its name and operation were measured.
the runtime's own node index at the first subgraph boundary
| node | name | fused | runtime index |
|---|---|---|---|
94 | norm-4 measured | 2 measured | 0 inferred Σ max(1, fused) over the subgraph's earlier nodes |
95 | ffn_gate-4 measured | 0 measured | 2 inferred Σ max(1, fused) over the subgraph's earlier nodes |
96 | ffn_up-4 measured | 0 measured | 3 inferred Σ max(1, fused) over the subgraph's earlier nodes |
nodes carrying a measured kernel 0 of 964 inferred nodes with a measured kernel, of pass_nodes
How to read this lens
Every node of the runtime graph and the kernel it maps to, with the label of that mapping. The runtime numbers its nodes inside each subgraph, counting fused ops; the page derives that index from the bundle's own node list.
L5 Kernels
Shader interval counts
Bars compare recorded shader-interval counts. They do not represent kernel duration or time share. Select a kernel to see its candidate nodes and intervals.
How to read this lens
The kernels the trace recorded, with the number of intervals the instrument counted for each over the whole run, and the graph nodes each kernel joins. A kernel no node names is reported as unjoined. The timeline is sparse, so the page shows no kernel share and no per-kernel sum.
L6 GPU timeline
CPU and GPU timeline
Select an encode interval, GPU segment or shader tick to inspect its associated evidence. Hatched regions are unrecorded shader time; missing GPU intervals keep their stated reason.
How to read this lens
The selected pass's command buffers: each one's CPU encode and its GPU execution, segment by segment, with the shader rows the timeline recorded drawn inside the buffer that holds them. The GPU time the timeline did not record is marked as not recorded.
The machine view
Derived from the bundle, beneath the lenses: the weight bytes one decode token streams, the mean decode period, and the effective weight bandwidth the two imply. Bytes are in decimal units, a gigabyte being a thousand million bytes. The page carries no published bandwidth of the hardware and no operation rate; the bundle carries neither.
- 6405.549 ms measured · 4288.454 ms measured → 37.81 ms inferred
(t0 of the last decode pass − t0 of the first) ÷ (decode passes − 1) - 7.905509376 GB measured · 0.6386688 GB measured → 8.544 GB inferred
blocks + output weight bytes - 226.0 GB/s inferred
DV-9 ÷ DV-3 - 6.1710336 GB measured · 7.905509376 GB measured → 78.06 % FFN inferred
ffn ÷ blocks; attention ÷ blocks (bytes of the model file) - 1.732509696 GB measured · 7.905509376 GB measured → 21.92 % attention inferred
ffn ÷ blocks; attention ÷ blocks (bytes of the model file) - 8.982142976 GB measured · 0.43794432 GB measured · 0.6386688 GB measured → 0.00002048 GB inferred
total bytes − (embed + Σ layer bytes + output)
Not measured by this instrument
This instrument records no hardware counters, no launch geometry, no per-dispatch timing and no kernel shares, so none appears on the page, as a value or as an absence. This is a statement about every lab capture on this instrument, not an entry of the run's absent list. What it does record is sparse: the shader timeline's coverage of the token under test and of the run is shown below. The reference capture's graph is the decode pass's and its prefill pass recorded no shader row, so no prefill-versus-decode kernel comparison is drawn.
- coverage of the token under test 9.290 % inferred
Σ shader-row durations ÷ Σ GPU time over the pass's compute buffers - coverage of the run 7.556 % inferred
Σ shader-row durations ÷ Σ compute-buffer GPU time, over the passes carrying a row· passes carrying a row 12 of 58 passes inferredΣ shader-row durations ÷ Σ compute-buffer GPU time, over the passes carrying a row
The traversal
method
The traversal climbs from one interval on the GPU timeline through its token, its command buffer, its node set, its kernel and its candidate nodes, to their tensors, components and layers, and descends again from a component to the kernels and intervals it ran. Every hop reads a relation the bundle stores and carries that relation's own label. A terminal is a hop the bundle answers by ending the chain; a gap is a hop it does not supply. The table is the token under test, one row per interval.
| interval | H1 token | H2 buffer | H3 node set | H4 kernel | H5 candidates | H8 layers | H7 components | verdict |
|---|---|---|---|---|---|---|---|---|
enc(49,0) | 48 timing correlation | 0x234d5d883 measured | 0…93 inferred | each node's kernel inferred | 94 inferred | 0…4 inferred |
| resolved |
enc(49,1) | 48 timing correlation | 0x234d5d885 measured | 94…963 inferred | each node's kernel inferred | 870 inferred | 4…47 inferred outside every block · |
| resolved |
enc(49,2) | 48 timing correlation | 0x234d5d887 measured | blit — the logits copy; no graph nodes measured | resolved | ||||
gpu(49,0,0) | 48 timing correlation | the buffer's own record measured | 0…93 inferred | each node's kernel inferred | 94 inferred | 0…4 inferred |
| resolved |
gpu(49,1,0) | 48 timing correlation | the buffer's own record measured | 94…963 inferred | each node's kernel inferred | 870 inferred | 4…47 inferred outside every block · |
| resolved |
gpu(49,1,1) | 48 timing correlation | the buffer's own record measured | 94…963 inferred | each node's kernel inferred | 870 inferred | 4…47 inferred outside every block · |
| resolved |
gpu(49,1,2) | 48 timing correlation | the buffer's own record measured | 94…963 inferred | each node's kernel inferred | 870 inferred | 4…47 inferred outside every block · |
| resolved |
gpu(49,2,0) | 48 timing correlation | the buffer's own record measured | blit — the logits copy; no graph nodes measured | resolved | ||||
row(49,0) | 48 timing correlation | through its node set | 0…93 inferred | kernel_swiglu_f32 measured | 4 inferred | 0…3 inferred |
| resolved |
row(49,1) | 48 timing correlation | through its node set | 0…93 inferred | kernel_mul_mv_q6_K_f32 measured | 9 inferred | 0…4 inferred |
| resolved |
row(49,2) | 48 timing correlation | through its node set | 0…93 inferred | kernel_rms_norm_mul_f32_4 measured | 9 inferred | 0…4 inferred |
| resolved |
row(49,3) | 48 timing correlation | through its node set | 0…93 inferred | kernel_rope_neox_f32 measured | 10 inferred | 0…4 inferred |
| resolved |
row(49,4) | 48 timing correlation | through its node set | 0…93 inferred | kernel_set_rows_f16_i64 measured | 10 inferred | 0…4 inferred |
| resolved |
row(49,5) | 48 timing correlation | through its node set | 0…93 inferred | kernel_flash_attn_ext_vec_f16_dk128_dv128 measured | 5 inferred | 0…4 inferred |
| resolved |
row(49,6) | 48 timing correlation | through its node set | 0…93 inferred | kernel_flash_attn_ext_vec_reduce measured | 94 inferred unjoined — no node of the graph names this kernel | 0…4 inferred |
| resolved |
row(49,7) | 48 timing correlation | through its node set | 0…93 inferred | kernel_mul_mv_q4_K_f32 measured | 23 inferred | 0…4 inferred |
| resolved |
row(49,8) | 48 timing correlation | through its node set | 0…93 inferred | kernel_bin_fuse_f32_f32_f32_4 measured | 24 inferred | 0…4 inferred |
| resolved |
row(49,9) | 48 timing correlation | through its node set | 94…963 inferred | kernel_mul_mv_q6_K_f32 measured | 40 inferred | 4…47 inferred outside every block · |
| resolved |
row(49,10) | 48 timing correlation | through its node set | 94…963 inferred | kernel_swiglu_f32 measured | 44 inferred | 4…47 inferred |
| resolved |
row(49,11) | 48 timing correlation | through its node set | 94…963 inferred | kernel_rope_neox_f32 measured | 86 inferred | 5…47 inferred |
| resolved |
row(49,12) | 48 timing correlation | through its node set | 94…963 inferred | kernel_set_rows_f16_i64 measured | 86 inferred | 5…47 inferred |
| resolved |
row(49,13) | 48 timing correlation | through its node set | 94…963 inferred | kernel_flash_attn_ext_vec_f16_dk128_dv128 measured | 43 inferred | 5…47 inferred |
| resolved |
row(49,14) | 48 timing correlation | through its node set | 94…963 inferred | kernel_flash_attn_ext_vec_reduce measured | 870 inferred unjoined — no node of the graph names this kernel | 4…47 inferred outside every block · |
| resolved |
row(49,15) | 48 timing correlation | through its node set | 94…963 inferred | kernel_bin_fuse_f32_f32_f32_4 measured | 216 inferred | 4…47 inferred |
| resolved |
row(49,16) | 48 timing correlation | through its node set | 94…963 inferred | kernel_rms_norm_mul_f32_4 measured | 88 inferred | 4…47 inferred outside every block · |
| resolved |
row(49,17) | 48 timing correlation | through its node set | 94…963 inferred | kernel_mul_mv_q4_K_f32 measured | 265 inferred | 4…47 inferred |
| resolved |
row(49,18) | 48 timing correlation | through its node set | 94…963 inferred | kernel_rope_neox_f32 measured | 86 inferred | 5…47 inferred |
| resolved |
row(49,19) | 48 timing correlation | through its node set | 94…963 inferred | kernel_set_rows_f16_i64 measured | 86 inferred | 5…47 inferred |
| resolved |
row(49,20) | 48 timing correlation | through its node set | 94…963 inferred | kernel_flash_attn_ext_vec_f16_dk128_dv128 measured | 43 inferred | 5…47 inferred |
| resolved |
row(49,21) | 48 timing correlation | through its node set | 94…963 inferred | kernel_flash_attn_ext_vec_reduce measured | 870 inferred unjoined — no node of the graph names this kernel | 4…47 inferred outside every block · |
| resolved |
row(49,22) | 48 timing correlation | through its node set | 94…963 inferred | kernel_get_rows_f32 measured | 2 inferred | 47 inferred |
| resolved |
row(49,23) | 48 timing correlation | through its node set | 94…963 inferred | kernel_mul_mv_q4_K_f32 measured | 265 inferred | 4…47 inferred |
| resolved |
row(49,24) | 48 timing correlation | through its node set | 94…963 inferred | kernel_swiglu_f32 measured | 44 inferred | 4…47 inferred |
| resolved |
row(49,25) | 48 timing correlation | through its node set | 94…963 inferred | kernel_bin_fuse_f32_f32_f32_4 measured | 216 inferred | 4…47 inferred |
| resolved |
row(49,26) | 48 timing correlation | through its node set | 94…963 inferred | kernel_rms_norm_mul_f32_4 measured | 88 inferred | 4…47 inferred outside every block · |
| resolved |
row(49,27) | 48 timing correlation | through its node set | 94…963 inferred | kernel_mul_mv_q6_K_f32 measured | 40 inferred | 4…47 inferred outside every block · |
| resolved |
The token passes when every interval of its pass resolves: no hop of any chain, for any candidate, is a gap.
the token passes · 58 of 58 passes of the run resolve every interval
run evidence
What this run does not carry
· 61
Everything this run could not measure, with the bundle's own reason. Entries that share a reason and a pointer pattern are grouped; open a group for its full list of pointers. The same reasons appear again in the lens where each value would have been.
/dimensions/quality · 1
- absent — a lab Performance capture carries no Quality payload
/dimensions/security · 1
- absent — a lab Performance capture runs no confinement probe
/dimensions/operability · 1
- absent — no Operability payload schema yet
/dimensions/performance/graph/nodes/*/placement · 2
- absent — outside every block
- absent — outside every block
/dimensions/performance/run/passes/*/bufs/*/gpu_start_ms · 56
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
- absent — the instrument recorded no GPU interval
This run was captured in user mode: the app recorded the request as it saw it, and the trace levels beneath it — phases, model anatomy, transformer block, runtime graph, kernels and GPU timeline — are absent by depth, each with the bundle's reason.
This is a guide through the recorded stack, not a measurement. Its arrows show the conceptual path a request takes; they do not assert a measured dependency or a timing join, and the moving dot shows direction, never speed. Every value in a step is read from the bundle with its label; open a step for its lens.
No scenario description is included with this page for this capture. Its identity and measurements are shown from the selected bundle.
Everything this run could not measure, with the bundle's own reason. Entries that share a reason and a pointer pattern are grouped; open a group for its full list of pointers. The same reasons appear again in the lens where each value would have been.
Request timing
The first token separates the wait to begin from the time spent generating. The timeline below uses the request clock; runtime counters and trace timings remain distinct.
The request as the application saw it, on the request clock, whose origin is the request's start — so the first token's time is the time to first token. The bar splits the request into the hand-off to the runner, the runner's first encode to the first token, and the first token to the end of generation; a segment the bundle has no duration for shows its endpoints only. The prompt token counter is reported by the runtime and includes the cached prefix tokens served from the cache.
Prefill and decode passes
Each column is a pass. Select one to carry it into the GPU timeline. Chunk-arrival ticks use the request clock; the alignment details explain the join.
The rhythm of the passes: one prefill pass, then one decode pass per generated token, each drawn to its period. The streamed chunks sit on the request clock beneath them, and the clock join says how the trace clock was aligned to the request clock.
Read the model from its recorded tensors: the structure, projection dimensions and weight storage. Select a layer in the byte stack to explore its runtime block, or a tensor to inspect its evidence.
- The arrows explain the structure. They are conceptual connections, not captured dependency edges.
- The output dimension of each recorded projection tensor, drawn on the same scale.
- Select a decoder block to open its runtime nodes. Each width follows that layer's recorded bytes, including differences in quantization.
Where one token's bytes are: each layer's weight tensors, by their size in the model file. The structure, the projection widths and the stack are drawings; every value they draw is shown with its label beside them, in their hover text, and in the tensor byte map and its source table, which hold the totals and the byte shares. The byte shares are shares of the model file, never shares of kernel time.
Follow attention and the feed-forward network through one decoder layer. Select an operation group to inspect its recorded nodes, tensor shapes and kernels.
- Each box groups recorded nodes. The connections are schematic: this bundle records the encode order, not dependency edges, and a group does not imply that the runtime fused its operations.
- Select a box to list its recorded nodes in the inspector below, each with its kernel mapping and its own provenance. Tensor dimensions describe stored weight tensors.
- These nodes are kept apart because the schematic does not establish their connections.
One layer's nodes in execution order, by op family, each with its kernel and, where it reads a weight tensor, that tensor's shape and type from the model file. Nodes that belong to no layer are listed on their own, with the bundle's reason.
The schematic is drawn only when the layer's recorded operations match a decoder block's pattern, read from each node's operation and the weight tensor it reads; a layer that does not match shows its recorded nodes instead. Each node card is one recorded node in encode order, its edge marking its family: a matrix multiplication, a normalization, or another operation.
Runtime graph nodes
Filter the graph by layer, operation, kernel or provenance. A node's kernel mapping may be inferred even when its name and operation were measured.
Every node of the runtime graph and the kernel it maps to, with the label of that mapping. The runtime numbers its nodes inside each subgraph, counting fused ops; the page derives that index from the bundle's own node list.
Shader interval counts
Bars compare recorded shader-interval counts. They do not represent kernel duration or time share. Select a kernel to see its candidate nodes and intervals.
The kernels the trace recorded, with the number of intervals the instrument counted for each over the whole run, and the graph nodes each kernel joins. A kernel no node names is reported as unjoined. The timeline is sparse, so the page shows no kernel share and no per-kernel sum.
CPU and GPU timeline
Select an encode interval, GPU segment or shader tick to inspect its associated evidence. Hatched regions are unrecorded shader time; missing GPU intervals keep their stated reason.
The selected pass's command buffers: each one's CPU encode and its GPU execution, segment by segment, with the shader rows the timeline recorded drawn inside the buffer that holds them. The GPU time the timeline did not record is marked as not recorded.
- Projection widths do not identify the number of attention heads or the width of each head. Those values are not explicit in this bundle.
- Attention and FFN are subtotals within the decoder blocks. These are stored tensor bytes; CPU and GPU residency and the KV-cache allocation are not supplied here.
- Only the selected bundle supplies this view. Tokenizer details and the vocabulary size are unavailable here; no external model file is opened.
A proportional stack needs a recorded byte count for the token embedding, every decoder layer and the output head. These bytes are missing, so no stack is drawn; the recorded values remain in the source table.
The listed components add up to more than the recorded model total, so the bytes in no listed component are negative. The stack scales the listed components only.
This layer's recorded operations do not match the decoder block's pattern, so no schematic is drawn. Its recorded nodes follow in encode order, each with its kernel and the tensor it reads.
Derived from the bundle, beneath the lenses: the weight bytes one decode token streams, the mean decode period, and the effective weight bandwidth the two imply. Bytes are in decimal units, a gigabyte being a thousand million bytes. The page carries no published bandwidth of the hardware and no operation rate; the bundle carries neither.
This instrument records no hardware counters, no launch geometry, no per-dispatch timing and no kernel shares, so none appears on the page, as a value or as an absence. This is a statement about every lab capture on this instrument, not an entry of the run's absent list. What it does record is sparse: the shader timeline's coverage of the token under test and of the run is shown below. The reference capture's graph is the decode pass's and its prefill pass recorded no shader row, so no prefill-versus-decode kernel comparison is drawn.
The traversal climbs from one interval on the GPU timeline through its token, its command buffer, its node set, its kernel and its candidate nodes, to their tensors, components and layers, and descends again from a component to the kernels and intervals it ran. Every hop reads a relation the bundle stores and carries that relation's own label. A terminal is a hop the bundle answers by ending the chain; a gap is a hop it does not supply. The table is the token under test, one row per interval.
The token passes when every interval of its pass resolves: no hop of any chain, for any candidate, is a gap.
The trace's count of decode passes disagrees with the runtime's token count: some passes may be misclassified as prefill or decode (spec 03 §5.1). The disagreement is stated, never repaired.
The last pass has no period to divide by, so its GPU busy share is not shown.
Not applicable — the trace levels are absent (capture_mode = user). This is neither a pass nor a gap.
This verdict was computed by the page's script from the bundle loaded from a file, not by the generator from a committed run.
One streamed request sent by the collector directly to the runtime Finboard ships, on loopback, with a synthetic prompt and the runtime's default system prompt. It exercises the runtime the app ships; it does not exercise Finboard's prompt assembly, capabilities or narration.
run evidence
The work
What was captured
/
Request timing
first token generation done
Performance lenses
This is a guide through the recorded stack, not a measurement. Its arrows show the conceptual path a request takes; they do not assert a measured dependency or a timing join, and the moving dot shows direction, never speed. Every value in a step is read from the bundle with its label; open a step for its lens.