# Claim C2 Ring Measurement Closure — 2026-08-02

This bundle supplements the earlier
[Claim C2 Ring Measurement Evidence](measure-20260802.md) with the cold-ring,
calibrated-throughput, and matched-scheduler measurement shapes that bundle
left open. Five foreground `make test-measure` runs used clean source commit
`ec5b115e290639e049a91521755d589cfdd97b8c` and pinned QEMU to host logical
CPU 0:

```sh
CAPOS_MEASURE_QEMU_TASKSET_CPUS=0 \
  CAPOS_MEASURE_ARTIFACT_DIR=target/paper-c2-measure-20260802-scope-final2/run-N \
  make test-measure
```

The run interval was 2026-08-02 18:40:05–18:43:53 UTC. QEMU 8.2.2 used KVM,
one `qemu64` guest vCPU, and 256 MiB guest RAM. The KVM host exposed eight
logical CPUs, four cores, two threads per core, and an Intel Xeon 2.80 GHz
CPU. Pinning constrained QEMU's affinity but did not isolate CPU 0 from other
host work. [host.txt](measure-20260802-c2-closure/host.txt) retains the host
envelope.

Each `make` invocation rebuilt `capos-measure.iso`; consequently, the five
invocation records have distinct ISO SHA-256 values even though all name the
same clean source commit. Each record also retains the resolved QEMU command
and QEMU version.

| Run | Invocation | Kernel serial | Terminal |
| ---: | --- | --- | --- |
| 1 | [run-1](measure-20260802-c2-closure/run-1-invocation.txt) | [run-1](measure-20260802-c2-closure/run-1-kernel.txt) | [run-1](measure-20260802-c2-closure/run-1-terminal.txt) |
| 2 | [run-2](measure-20260802-c2-closure/run-2-invocation.txt) | [run-2](measure-20260802-c2-closure/run-2-kernel.txt) | [run-2](measure-20260802-c2-closure/run-2-terminal.txt) |
| 3 | [run-3](measure-20260802-c2-closure/run-3-invocation.txt) | [run-3](measure-20260802-c2-closure/run-3-kernel.txt) | [run-3](measure-20260802-c2-closure/run-3-terminal.txt) |
| 4 | [run-4](measure-20260802-c2-closure/run-4-invocation.txt) | [run-4](measure-20260802-c2-closure/run-4-kernel.txt) | [run-4](measure-20260802-c2-closure/run-4-terminal.txt) |
| 5 | [run-5](measure-20260802-c2-closure/run-5-invocation.txt) | [run-5](measure-20260802-c2-closure/run-5-kernel.txt) | [run-5](measure-20260802-c2-closure/run-5-terminal.txt) |

## Extracted observations

| Run | Cold first NOP round trip cycles | Warmed batched NOP cycles | 4,096-SQE interval ns | SQEs/s | Direct endpoint cycles | Ordinary endpoint cycles | Direct select cycles | Ordinary select cycles |
| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 1 | 316,695 | 33,479 | 89,783,588 | 45,620 | 7,790,392 | 7,890,846 | 392,298 | 401,057 |
| 2 | 283,201 | 5,109,718 | 129,925,345 | 31,525 | 7,847,071 | 7,875,923 | 398,835 | 397,588 |
| 3 | 257,818 | 5,106,773 | 66,057,872 | 62,006 | 7,906,140 | 7,965,534 | 398,631 | 395,194 |
| 4 | 264,702 | 33,129 | 115,600,327 | 35,432 | 7,850,075 | 7,977,183 | 393,844 | 400,807 |
| 5 | 252,247 | 33,379 | 60,053,834 | 68,205 | 7,877,704 | 7,952,024 | 401,448 | 393,861 |
| **Median** | **264,702** | **33,479** | **89,783,588** | **45,620** | **7,850,075** | **7,952,024** | **398,631** | **397,588** |
| **Range** | **252,247–316,695** | **33,129–5,109,718** | **60,053,834–129,925,345** | **31,525–68,205** | **7,790,392–7,906,140** | **7,875,923–7,977,183** | **392,298–401,448** | **393,861–401,057** |

The cold record is the process's first NOP publication, `cap_enter`, and CQE
consumption interval. The warmed record remains the prior eight-SQE batched
per-SQE average, including the same publication/entry/consumption boundary.
The comparison therefore captures first-use and batching effects together; it
does not isolate a syscall instruction or attribute the delta to one internal
kernel operation. Runs 2 and 3 contain multi-million-cycle warmed outliers;
run 1 contains a same-scale outlier in the unrelated `null_small` window while
its warmed NOP result remains near 33,000 cycles. This one-outlier-per-run
pattern in three of five runs is consistent with a host or hypervisor
scheduling stall landing in whichever measurement window was active. The
warmed range retains the observations rather than excluding them post hoc, but
the upper bound is not evidence of warmed-path variance by itself.

The throughput record brackets exactly 4,096 NOP SQEs in 256 full 16-entry
ring batches with the kernel's calibrated monotonic clock. It starts before
the first tagged NOP's validation and ends after the final tagged NOP's CQE is
posted. The reported rate is `4,096 * 1,000,000,000 / elapsed_ns`. It is a
fixed-workload dispatch interval rather than a maximum kernel throughput rate.
The broad 31,525–68,205 SQE/s observed range is retained rather than smoothed
away.

The endpoint record leaves eight warm-up calls on the normal path, then
alternates the same blocked receiver across 64 measured calls: 32 direct
handoffs and 32 ordinary WFQ selections. The user-side columns measure CALL
submission through receiver observation. The kernel columns measure ready to
actual scheduler selection. Every run observed 32 direct selections; the
ordinary path observed 31 or 32 selections because a non-direct receiver can
resume from its mid-block ownership window without another WFQ choice. The
five runs do not show a stable scheduler-selection advantage for either path;
the evidence supplies the matched comparison, not a speedup claim.

The existing mixed endpoint line remains available for compatibility. Its
median was 7,913,629 cycles with a 7,840,619–7,935,837 observed range. The
schema-dispatch median in this bundle was 3,360 cycles with a 3,048–4,221
range, 19% below the original bundle's 4,173-cycle median and 4,015–6,081
range. The closure image adds the cold and fixed-throughput work before the
boot-global summary, so the shift cannot be attributed to the schema path
alone and is retained as an observer/workload configuration effect. The
capability-slot record remained 80 bytes in every run.

## Evidence boundary

This bundle closes the three measurement-shape gaps recorded by the earlier
bundle:

- A first-entry NOP round trip now exists alongside the unchanged warmed,
  batched NOP line.
- A fixed SQE count now has a kernel-calibrated elapsed interval and an emitted
  operations-per-second result.
- The same endpoint receiver workload now has separately reported direct and
  ordinary-scheduler intervals at both the end-to-end and ready-to-selection
  boundaries.

These are nested-QEMU/KVM observations from one 228-second collection window.
Host affinity is not isolation, guest TSC behavior is virtualized, and the
measure image retains other debug instrumentation. The ranges characterize
only these five runs; they are not reproducibility bounds, hardware results,
maximum-throughput results, or production-performance claims.

The serial logs retain QEMU's CRLF output. SHA-256 digests below are for their
LF-normalized contents:

```text
7d829b9e97bf9601ef2ce9d220528cd175b588a7db219a1856faf9c4573aefe4  run-1-kernel.txt
0f2324999b8c9a2475c5671650e9cc89b92ed7db75bdc938b02d7bcd2d341856  run-2-kernel.txt
3bc4ad65c803f49f64aa9bebfa2a3ac2d17a11affcbaed21c205ef780f87e7ef  run-3-kernel.txt
b4ac8481f7278a67655febec405ede76edc0d21139fda39cd3d02e9a2ed84d89  run-4-kernel.txt
00bbdceb12f57ab40d1609bf2916cdda7f158b29fb0ce7dbc8a12c1cba0a4513  run-5-kernel.txt
```

The terminal files contain only QEMU's unsupported-SVM-feature warning.
`tools/qemu-measure-smoke.sh` verified every run's required output and clean
proof termination.
