Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Skip to content vxedge docs GitHub

Facts registry

This file is the single registry of published facts: measured numbers, verdicts, phase states, the parity ledger and what has been delivered. The website (vxedge.dev) builds every number and state it shows from this file and nothing else. The GitHub READMEs and RESULTS.md quote it.

Each measured value is copied from a frozen summary in vxperiments/results/. Those summaries record the input manifest's sha256. This file does not replace them; it is the one place they are quoted from. RESULTS.md explains the numbers: what each hypothesis tests and the caveat that matters most.

To change a fact: edit it here first, in the same change as the summary or state that moved. Then run python3 scripts/facts.py check from this repo. The website picks the change up on its next build. Its CI fails if the vendored copy is stale, or if a page shows a number that is not registered here.

Format. Every table whose first column is Key is machine-read by scripts/facts.py. A table with a Value column holds one fact per row. Any other keyed table is a row table: each cell becomes <key>.<column>, where the column name is the first word of its header, lowercased (p99 µs (IQR) → p99). Keys are lowercase and never change meaning once published. A fact that is retired is deleted, not renamed.

State words are fixed. For deliveries: measured (frozen, reproduced results), live (works today, no frozen number), building (partly landed), planned (specified, not built). For the parity ledger: real (the production software or kernel path itself), emulated (real software on modelled hardware), planned, caveat (works, with a stated limit on what it can tell you).

1 · Project

KeyValueSource
project.namevxedge—
project.version0.2.0CITATION.cff
project.released2026-10-13CITATION.cff
project.stagepre-releasepre-1.0: the manifest schema and vxAPI may change between minor versions; published results are frozen (VERSIONING.md)
project.statusPhases 1–2 complete, phase 3 in progressROADMAP.md
project.phase3ROADMAP.md
project.licence_codeApache-2.0LICENSE
project.licence_docsCC BY 4.0LICENSE-DOCS
project.hypotheses4ARCHITECTURE.md §2
project.hypotheses_hold4§2 below
project.reproduced4§2 below: each verdict re-reached by an independent second campaign
project.repos9README.md: docs and eight code repositories
project.mcp_spec2026-07-28vxmcp targets this MCP specification revision

Phases

KeyPhaseGateState
phase.1Slicing core, API-firstReproducible H1/H3/H4 numbersdone
phase.2Real slices and workloadsH2: S-NSSAI vs static VLANdone
phase.3Production SDV alignmentvxedge vehicle up boots a full vehicle end to endin progress
phase.4Hardware in the loopJetson / DRIVE / BlueField / V2X radiospecified
phase.5Remote and multi-usernone yetbacklog

Tracks

KeyTrackStatus
track.mM — SysML v2 model governanceM0–M3 closed; M4 waits on a GPU host
track.cC — containerizationcomplete through C3.2
track.pP — vxparts unificationcomplete

2 · Results

The tables under each hypothesis heading (H1–H4) and under Other completed experiments are measurements. The website paints those values, and only those, in its measured-value colour. The method, parameters and verdicts are not measurements and are not painted.

Method and parameters

The same method for every campaign, and the parameters each hypothesis was tested with. These are configuration, not measurements.

KeyValueSource
method.reps5 repsper arm or load point
method.rate1000 ppsprobe rate
method.duration60 sper point
method.probes60 000 probesper point
method.warmup10 sdiscarded before probing
method.campaign_time~35 minfull exp-001 campaign on an idle host, GETTING-STARTED.md
h1.max_load600 mbitH1: highest offered infotainment load
h1.uplink500 mbitH1: root rate of the shared uplink, exp-001-ws/main.yaml
h1.overload1.2×H1: max load ÷ uplink
h1.loads5 loadsH1, H2: load levels swept
h1.threshold2.0×H1: pass threshold for p99 at max load ÷ p99 idle
h2.tolerance1.1×H2: S-NSSAI p99 growth may exceed VLAN growth by at most this factor
h3.arms6 armsH3: packaging arms compared
h3.probes1.8M probesH3: probes across all archives
h4.artifact5 MBH4: artifact size, delivered back to back
h4.arms2 armsH4: baseline and OTA burst

Verdicts

KeyHypothesisExperimentVerdictManifest sha256Archives
h.1Isolation: VLAN + tc reservations keep ADAS p99 near baseline under infotainment loadexp-001holds2666fbf561ae…25 archives
h.2Real S-NSSAI slicing vs static VLAN mappingexp-010holds4fa24418b7a1…25 archives
h.3Virtual-ECU packaging affects zone-to-compute latencyexp-002bholds625840eeeb0c…30 archives
h.4Co-located OTA does not compromise the ADAS sliceexp-003holds1efebdef615f…10 archives

H1 — isolation (exp-001)

KeyValueSource
h1.p99_max81.9 µsADAS p99 at the highest load
h1.p99_idle89.6 µsADAS p99 at zero load
h1.ratio0.91×p99 at max load ÷ p99 idle
h1.loss0.0 %packet loss at every load level

Per load level. Latency in µs with the IQR across repetitions in brackets. Source: exp-001-summary.md.

Keyload (mbit)p50 µs (IQR)p95 µs (IQR)p99 µs (IQR)loss %
h1.load.0049.9 (0.8)71.4 (6.7)89.6 (6.4)0.0
h1.load.10010051.1 (3.0)72.0 (6.1)87.5 (7.0)0.0
h1.load.25025049.8 (1.9)70.1 (3.3)84.5 (4.7)0.0
h1.load.40040050.6 (1.3)72.3 (3.1)85.2 (4.2)0.0
h1.load.60060051.4 (1.8)69.2 (2.8)81.9 (5.0)0.0

H2 — real slicing vs static mapping (exp-010)

KeyValueSource
h2.ratio_snssai0.95×S-NSSAI p99 growth, idle → max load
h2.ratio_vlan0.91×VLAN p99 growth over the same sweep (exp-001)
h2.floor317–337 µsS-NSSAI p99 across all loads: software UPF and GTP-U

Per load level, S-NSSAI path. Source: exp-010-summary.md.

Keyload (mbit)p50 µs (IQR)p95 µs (IQR)p99 µs (IQR)loss %
h2.load.00269.3 (7.3)305.2 (11.5)335.1 (14.1)0.0
h2.load.100100254.1 (3.6)299.5 (2.6)324.1 (6.9)0.0
h2.load.250250261.6 (4.0)313.1 (4.7)336.6 (12.7)0.0
h2.load.400400260.9 (1.9)294.7 (7.4)318.7 (23.0)0.0
h2.load.600600260.7 (4.7)293.4 (5.9)317.2 (10.8)0.0

H3 — virtualization choice (exp-002b)

KeyValueSource
h3.transport−26.0 µsΔp50, virtio MMIO → PCI (microvm-pci vs microvm-mmio)
h3.transport_iqr2.2 µsIQR of that comparison
h3.management−17.3 µsΔp50, libvirt vs raw QEMU (libvirt-q35 vs q35-pci)
h3.management_iqr2.0 µsIQR of that comparison
h3.vhost−9.5 µsΔp50, vhost-net on vs off (q35-vhost vs q35-pci)
h3.vhost_iqr2.5 µsIQR of that comparison
h3.machine−0.3 µsΔp50, q35 vs microvm (q35-pci vs microvm-pci): no measurable effect

Per packaging arm. CPU and RSS are means across repetitions. Source: exp-002b-summary.md.

Keyarmp50 µs (IQR)p99 µs (IQR)CPU %RSS MB
h3.arm.containercontainer54.6 (1.3)94.4 (2.8)4.37.3
h3.arm.libvirt-q35libvirt-q3570.3 (1.6)117.6 (2.4)8.2166.2
h3.arm.q35-vhostq35-vhost78.1 (2.5)122.9 (4.4)9.1150.6
h3.arm.q35-pciq35-pci87.6 (2.0)138.6 (2.6)11.3150.9
h3.arm.microvm-pcimicrovm-pci87.9 (2.2)138.2 (3.2)11.4150.2
h3.arm.microvm-mmiomicrovm-mmio113.9 (2.0)165.0 (6.3)15.0146.4

H4 — OTA co-location (exp-003)

KeyValueSource
h4.p50_baseline52.2 µsADAS p50 without OTA
h4.p50_ota51.9 µsADAS p50 during the OTA burst
h4.delta−0.3 µsdifference of the two
h4.iqr6.0 µsbaseline IQR, the one-sided threshold
h4.deliveries361 deliveriessigned deliveries per repetition (median)
h4.failed0failed deliveries
h4.loss0.0 %packet loss in both arms
h4.repro_inside0 of 6metric/arm pairs of the same-day second campaign inside the first campaign's IQR; the verdict held

Per arm. Source: exp-003-summary.md.

Keyarmp50 µs (IQR)p95 µs (IQR)p99 µs (IQR)OTA deliveries ok/fail
h4.arm.baselinebaseline52.2 (6.0)80.7 (4.9)97.7 (5.6)n/a
h4.arm.ota-burstota-burst51.9 (1.7)79.9 (6.3)93.1 (5.5)361 / 0

Other completed experiments

KeyValueSource
exp005.confirmed20 of 20exp-005: cold-start first-packet effect, repetitions confirming it
exp014.verdictholdsexp-014: star vs daisy-chained zones, hop-count effect

3 · Deliveries

Parity ledger

How close each part of the virtual vehicle is to production today, and what closes the gap (p3, p4: the phase that does).

KeyPartTodayStateCloses the gap
parity.networkNetwork pathLinux kernel: OVS or bridge, tc HTB per slice, VXLAN, WireGuardrealBlueField offload · p4
parity.core5G coreOpen5GS with real S-NSSAI PDU sessionsreal—
parity.radio5G radioUERANSIM gNB and UE in softwareemulatedAerial RAN · p4
parity.zonesZone ECUsReal guest OS under container, microVM or KVMemulatedQNX SDP 8 · p3
parity.harnessHarnessPer-link rate, delay, jitter, loss; 100BASE-T1 length and weightemulatedTSN 802.1Qbv · p3
parity.mcuMCU firmwareUnmodified firmware on register-level modelsplannedRenode · p3
parity.sensorsSensorsWorld streams carried as slice trafficplannedCARLA · p3
parity.computeCentral computeAutoware and ROS 2 in containersplannedDRIVE AGX · p4
parity.timingTimingUserspace timestamps on a shared hostcaveatKernel timestamps · open

Use cases

KeyUse caseStateEvidence
case.isolationSlice isolationmeasuredH1, H2
case.topologyZonal topology studiesmeasuredexp-014, exp-005
case.packagingECU packaging and fidelitymeasuredH3
case.otaOTA beside safety workloadsmeasuredH4
case.agentsAgent-operated experimentsbuildingvxmcp, vxmodels
case.autonomyAutonomy closed loopplannedexp-011
case.signalsSignals and diagnosticsbuildingphase 3
case.reproduceReproduce anythingliveevery archive

Agent path

How a generated experiment reaches the bench.

KeyStepState
gate.proposePropose a SysML v2 modellive
gate.typecheckGate 1: model type checklive
gate.validateGate 2: vxedge manifest validate --jsonlive
gate.confirmMulti-round-trip confirmation before a state changeplanned
gate.runIdempotent up, streamed as a job, auditedlive
gate.archiveEvidence archived with digestslive

vxmcp tools

KeyToolServiceState
mcp.statusexperiment_statusExperimentServicelive
mcp.listzone / compute listZoneService · ComputeServiceplanned
mcp.watchjob watch · eventsJobService · EventServiceplanned
mcp.resultsresults summaryresults archiveplanned
mcp.mutateup · down · traffic upbehind confirmationplanned

Other deliveries

KeyValueSource
retarget.validatelivean experiment retargets to another vehicle by id and validates
vehicle.uplivethe vehicle verbs (up, down, status) on a bare vehicle: gateway and zones (verified 2026-10-13, one-zone vehicle). The phase-3 gate, a full vehicle end to end, is not claimed
retarget.fleetplannedtwo vehicles at once (fleet layer, PROVISIONING.md)
paper.1in preparationphase-1 dataset (H1/H3/H4) for arXiv, ROADMAP.md
Cite this page

Djaafri, F. (2026). vxedge: Facts registry. Documentation, version 0.2.0, commit 33ede87. https://vxedge.dev/docs/FACTS.html

@misc{djaafrivxedgefacts2026,
  author = {Djaafri, Fouzi},
  title  = {vxedge: Facts registry},
  year   = {2026},
  url    = {https://vxedge.dev/docs/FACTS.html},
  note   = {Documentation, version 0.2.0, source commit 33ede87}
}