Experiment benchmarks alpha phase1 native run 01 - kmosoti/FabricO11y GitHub Wiki
Historical report imported 2026-10-10 from
docs/experiments/benchmarks/alpha-phase1-native-run-01.md. Original SHA-256:92032e38d81798a158dd4d04842a7e8858c23e26f4ab98f8b9f4bb28c3c14186. Measurements and outcomes retain their stated revisions. Links and local environment labels are normalized;$FABRIC_DATAis the mounted experiment drive. See evidence policy.
Phase-1 native node: local qualification run 01
Status: these three local native trials passed on 2026-09-27 on the exact binaries hashed below. Cross-family review then found four phase-1 defects. Focused repairs postdate these measurements, so this run is retained as pre-repair evidence and final phase-1 acceptance is pending re-review. It is not an ACK, freshness, server, fleet or installation result.
Registered method and environment
The protocol fixed three seeds, 15 s warmup plus 120 s measured, 2 offered newline logs/s, exactly 512 body bytes alternating repetitive and seeded high-entropy text, and a 15 s metric interval. Trials ran sequentially through the owned bounded runner with 180 s, 300 MiB and 1 MiB per-invocation duration/live-data/evidence limits. Its polling limit is not a filesystem quota. The native writer checks its 1 MiB source cap before each append. All three runner invocations exited 0, reported passed=true, no stop reason, no leftover descendant and an inner command exit 0. No trial hit a budget.
Environment: Debian GNU/Linux 13.5, WSL2 Linux 6.18.33.2-microsoft-standard-WSL2, x86_64, target filesystem reported as ext2/ext3, 12 visible logical CPUs, Rust/Cargo 1.98.0, Python 3.13.5. No four-CPU server restriction or deployed systemd resource limit was exercised. Build command CARGO_HOME=$PWD/target/alpha-cargo cargo build --offline --locked --release --bins --example alpha_native_dump exited 0. The measured binaries' SHA-256 values were:
| Artifact | SHA-256 |
|---|---|
target/release/fabric-node |
193b1676e4d403216476487e870e2f8f5b71af200c5f8180250e4c9e2313ef7a |
target/release/fabricctl |
9da07efb06991e8bbbf0075ca6b3efd3b48af88455a2f098fe82ffb711986658 |
target/release/examples/alpha_native_dump |
f660cf3a73fee5ec5d37e6c9c1a8c5058270e2eedbfca2e570bc74146b13c883 |
tools/alpha/native_phase1.py |
b503193fd3b8b930bcf33223af6032d3ce47fce1e4fe6b22f396b705826463e8 |
For each N=1,2,3, the exact command was:
python3 -B tools/alpha/runner.py --out "target/alpha-native-qualified-seed${N}" --duration-s 180 --disk-bytes 314572800 --max-output-bytes 1048576 -- python3 -B "$PWD/tools/alpha/native_phase1.py" --seed "0xA11FA00${N}" --node-bin "$PWD/target/release/fabric-node" --ctl-bin "$PWD/target/release/fabricctl" --dump-bin "$PWD/target/release/examples/alpha_native_dump"
The compact raw summaries and runner results (local evidence omitted from stage) preserve invocation IDs, source hashes, command arguments, exits and sampled resource peaks. Earlier preliminary trials used a prior binary and, for seed 1, a script without inline exact replay; they are not this qualifying result and remain ignored under target/alpha-implementation/native-seed*.log. The historical phase-0 FOL2 run 06 was not rerun.
Results
Each source offered 270 lines (30 warmup, 240 measured) and 138,510 source bytes. The node committed 270 log records with zero gaps, and the independent dump of persisted OTLP log bodies matched the source SHA-256 exactly, including after node restart. This host emitted 75 metric points per 15 s sample, 750 across ten samples in warmup and measurement; this differs from the fleet fixture's fixed 32 points. A post-restart collect added one more metric batch and no duplicate log record.
| Seed | Source and replay SHA-256 | Offered/committed logs | Native CPU ticks converted to s | Node VmHWM KiB | Restart ms | Runner sampled peak live bytes |
|---|---|---|---|---|---|---|
0xA11FA001 |
fc552e040f7383381e2a45b6be7ff039d197d8a4b740e7bf1406f9ebcc6a6cfa |
270/270 | 0.01 | 2716 | 19.458 | 418096 |
0xA11FA002 |
4cf543085ebf11e3807c2b3fc40ceee206560054300013938fd6f62260b6e056 |
270/270 | 0.00 | 2560 | 21.442 | 418100 |
0xA11FA003 |
88e24ee87a58a2e4c13651efd9ec594b6fd404ecfdae84ac1860b8ce96d08244 |
270/270 | 0.00 | 2748 | 17.503 | 418100 |
The CPU counter was sampled at elapsed 15.000 s and 135.115–135.119 s, so its window includes up to 0.119 s of drain after the nominal 120 s measurement. Linux clock ticks resolve only 0.01 s here; 0.00 means fewer than one observed tick, not zero CPU. VmHWM is the native node's kernel high-water RSS; the runner's separate 24 MiB approximate tagged-descendant RSS includes the Python generator and is not the node gate. The highest native VmHWM was 2748 KiB, below the registered 64 MiB gate.
Each trial had 268,865 OTLP payload bytes and 270,452 committed journal bytes before restart. From the same post-restart snapshot, 275,287 OTLP payload bytes and 277,057 live spool bytes, including the 28-byte identity, give spool amplification 1.006430. End-of-trial all-live owned data before the small summary was 416,432 bytes, including source log, spool, config and node output. The runner's separately sampled peak, up to 418,100 bytes, includes transient and evidence files. Per-run retained evidence was 1,639–1,641 bytes; all three disposable roots occupied about 1.4 MiB before safe cleanup. Maximum source schedule lag was 0.700 ms. Log collection currently follows the 15 s metric loop, so this run does not establish the later ≤5 s observation-to-query freshness gate.
Correctness controls and limits
CARGO_HOME=$PWD/target/alpha-cargo cargo test --offline --locked --all-features exited 0: 3 library tests, 2 alpha journal, 4 alpha log-reader, 6 alpha node and the unchanged 25 legacy integration tests passed. The phase-1 tests exercise CPU/disk counter starts and resets across restart and boot change, denied host/log reads and recovery, rotation, truncation, incomplete lines, oversized skip across restart, spool full with unknown coverage, framing corruption, plausible interrupted tail, and injected reported failures after data sync, marker sync and pre-clear directory sync. The journal writer quarantines on each fault, leaves the recovery witness and refuses reopen. The copied independent journal oracle exited 0 with six API cases, ten selected corruptions and 72 length-matrix mutations; framing evidence records the original failing counterexample and the mechanical API adapter. The independent log probe's valid, oversized and FIFO cases each exited 0; reader evidence preserves the original failures. python3 -B tools/alpha/test_runner.py exited 0 (18 tests) and python3 -B tools/alpha/test_workload.py exited 0 (5 tests), including phase-0 budget and source negative controls.
The tested sync seam injects a reported error after successful syscall return; it checks quarantine and retained recovery authority, not actual failing media. Successful sync_all/filesystem semantics and an independently retained source are required. No sudden power-loss test was run. The local line reader cannot detect a truncate-and-regrow past its prior offset between samples. Read-only inspection hides counts while a recovery marker exists; it is not a network durability receipt. Fleet throughput, ACKs, query latency, outage drain and systemd packaging remain later-phase gates.