# v0.9.2 timing supplement 20261113, version 1

This separately versioned supplement is linked to immutable DataFlowBench
v0.9.2 commit `86092336d8f9ca32fe9e2c4042c2dced76c1feb1`. It retains a partial
timing campaign; it does not update the frozen release or certify a performance
improvement. The measurement boundaries and quantiles follow
[the latency contract](latency-tier.md), with the prospective continuous-execution
amendment in [the campaign plan](../reports/timing/v0.9.2/20261113-01/plan.json).

## Execution and qualification

The scheduled launch was 02:00 Africa/Johannesburg on 13 November. Initial
qualification waited for at least five minutes with at least 90% aggregate CPU
idle. The first analyzer dispatched at 05:22:16 local time. Following David's
instruction, “Don’t interrupt the experiment once it’s going,” the serial queue
continued while retaining CPU activity and observation failures as telemetry.
No later quiet-window qualification or original A24 inter-adapter settling
qualification is claimed. All observations remain candidate evidence, and none
is certified uncontended. Sampled PID/start identities also leave descendant
containment unproven. No unrelated workload was stopped.

All 21 staged cold groups completed by 05:39. A mistakenly configured Bifrost
PHP overhead arm was rejected before policy analysis or a timed repeat; its
record remains in campaign `20261113-01`. A separately preregistered,
source-reviewed [continuation](../reports/timing/v0.9.2/20261113-02/README.md)
corrected the arm to the existing A24 Python definition and ran the still
unstarted Infer C arm. Both completed by 05:47:22. It inherited the initial
admission, charged prior execution against the original total budget, and
repeated no cold group. No genuine analyzer failure was retried.

The durable runner was rebuilt from exact release-tag inputs and has its own
prospectively pinned digest; it is not byte-identical to the lost original
runner. Build receipts, executable hashes, tool/runtime inventories, population,
fixture identity, query/model/configuration inputs, source projection and
resource limits are bound in the plans and retained preparation receipts.
Bifrost is the pinned 0.15.1 build `90d820b9ee3b1bcca9e3dd2a049b1b51dc854b69`;
Infer is the pinned 1.3.0 runtime. Setup and builds occurred outside timing.

## Cold observations

There are **1,170 report rows**, including **1,085 retained per-case timing
sidecars** and **85 unsupported rows without timing**. Every candidate report's
case membership, outcome, configuration hash, fixture revision and analyzer
identity match its hash-verified frozen v0.9.2 published report. These checks
found no identity or outcome changes. Each cold runner's own report validation
also passed. This agreement does not add semantic support or change correctness
scores: timed outcomes include 338 inconclusive, 393 not-reached and 354 reached.

Values below are milliseconds. Each case has one cold invocation; the
distribution is across cases within that slice, not repeated estimates of a
single case. `n` counts valid timing sidecars regardless of outcome. Whole
invocation time sums the adapter-declared phases (Bifrost total; Infer capture
plus analyze). Report `duration_ms` is not used. Quantiles interpolate linearly
at `p*(n-1)`; all quantiles and per-case values are retained in the reconciliation.
No overhead is subtracted and no cross-adapter ranking or cross-release speedup
claim is made. Unsupported rows are absent timings, never zero-cost analysis.

| Slice | Rows | Timed n | Median ms | p90 ms |
| --- | ---: | ---: | ---: | ---: |
| Bifrost C kernel | 58 | 58 | 598 | 631.1 |
| Bifrost C++ kernel | 68 | 68 | 608.5 | 634.3 |
| Bifrost C# kernel | 70 | 70 | 613 | 635.1 |
| Bifrost Go kernel | 70 | 70 | 724.5 | 758.4 |
| Bifrost Java kernel | 70 | 70 | 1380.5 | 1405.5 |
| Bifrost Java modeling | 24 | 8 | 1396.5 | 3449.5 |
| Bifrost Java native | 12 | 0 | — | — |
| Bifrost JavaScript kernel | 70 | 70 | 610 | 631 |
| Bifrost JavaScript modeling | 24 | 8 | 612 | 733.6 |
| Bifrost JavaScript native | 12 | 0 | — | — |
| Bifrost Kotlin kernel | 70 | 70 | 1462.5 | 1568.5 |
| Bifrost PHP kernel | 70 | 70 | 611 | 634.2 |
| Bifrost Python kernel | 70 | 70 | 605 | 625.2 |
| Bifrost Python modeling | 24 | 8 | 608 | 737.4 |
| Bifrost Python native | 12 | 0 | — | — |
| Bifrost Ruby kernel | 70 | 70 | 602.5 | 621.1 |
| Bifrost Rust kernel | 64 | 64 | 679 | 722.6 |
| Bifrost smoke (mixed languages) | 118 | 117 | 629 | 1405 |
| Bifrost TypeScript kernel | 70 | 70 | 613 | 630.1 |
| Infer C kernel | 56 | 56 | 263 | 281 |
| Infer C++ kernel | 68 | 68 | 268 | 1627.2 |

## Separately labelled invocation-overhead estimates

These are three fixed cold invocations of A24's trivial no-flow fixture,
reported as the complete min/max range. They are upper-bound estimates of
start-up and warm-up, including the fixture's own analysis, not measured warm
marginal costs. They remain subject to the environmental limitations above.

| Adapter and fixture | Three repeats, ms | Estimated range, ms |
| --- | --- | --- |
| Bifrost Python | 805, 565, 562 | 562–805 |
| Infer C | 245, 260, 260 | 245–260 |

## Missing coverage and retained evidence

Of 84 planned cold groups, **63 remain blocked** by exact runtime closure or
launcher/provenance limitations; they did not run. Only Bifrost and Infer have
new cold observations. Bifrost Scala is among the blocked groups. Joern and
Semgrep warm marginal measurements remain blocked, as do the other six
analyzers' overhead entries. There is no completed equivalent-warm measurement
and no complete eight-analyzer publication gate.

[Reconciliation summary](../reports/timing/v0.9.2/20261113-02/reconciliation-v1/summary.json)
contains distributions, outcomes, identity comparisons and qualification flags.
[Per-case observations](../reports/timing/v0.9.2/20261113-02/reconciliation-v1/cases.json)
bind each sidecar by SHA-256. The evidence manifest binds every selected output,
including the rejected PHP arm's fixture/environment record. All original
attempts and source outputs are preserved.

The `20261113-02/evidence-v1` lossless bundle retains selected raw output roots,
reports, sidecars, all parent/continuation host telemetry, plans, preparation
receipts and this supplement. `retention-v1.json` records the verified delivery
inventory. Use the repository procedure to verify or restore into a new
directory; restored paths carry `snapshot/` before their original repo-relative
path. Never restore over existing evidence:

```sh
python3 -B scripts/evidence_bundle.py check reports/timing/v0.9.2/20261113-02/evidence-v1
python3 -B scripts/evidence_bundle.py check reports/timing/v0.9.2/20261113-02/evidence-v1 --restore /private/tmp/v092-timing-restore-new
```

Delivery integrity does not upgrade benchmark qualification. Frozen release,
tag, correctness reports and earlier raw attempts remain unchanged.
