End-to-end test harness for the SpaceOS pipeline

docs: add README.md for 18 packages missing documentation

Add READMEs for: ocaml-fdir, ocaml-initramfs, ocaml-jailhouse,
ocaml-linkedin, ocaml-openamp, ocaml-pid1, ocaml-rpmsg, ocaml-sbom,
ocaml-slack, ocaml-vz, ocaml-zephyr, space, space-block, space-ground,
space-net, space-sim, space-test, space-wire.

+50
+50
README.md
··· 1 + # space-test 2 + 3 + SpaceOS end-to-end test harness. 4 + 5 + `space-test` validates the full SpaceOS pipeline in a single automated run: 6 + build artifacts from configuration, boot VMs headless, verify that IPC frames 7 + flow through the relay, and assert clean shutdown. It exits 0 when all 8 + assertions pass and 1 otherwise. 9 + 10 + The test sequence is: 11 + 12 + 1. **Build** -- load `build.yml` (or defaults), compile kernel and initramfs 13 + artifacts via `Space.Build` 14 + 2. **Run headless** -- boot VMs using `Space.Run`, wait for IPC frames to flow 15 + through the relay up to a configurable target count and timeout 16 + 3. **Assert frames** -- verify at least N frames were relayed 17 + 4. **Assert shutdown** -- verify the session exited cleanly (exit code 0) 18 + 19 + ## Installation 20 + 21 + ``` 22 + opam install space-test 23 + ``` 24 + 25 + ## Usage 26 + 27 + ``` 28 + # Run with defaults (10 frames, 60s timeout) 29 + space-test 30 + 31 + # Custom thresholds 32 + space-test --frames 50 --timeout 120 33 + 34 + # Override build/run configs and kernel 35 + space-test --build build.yml --run run.yml --kernel /path/to/vmlinuz 36 + ``` 37 + 38 + ### Exit codes 39 + 40 + - `0` -- all assertions passed 41 + - `1` -- one or more assertions failed 42 + 43 + ## API 44 + 45 + - **`E2e`** -- library module with pure test logic: 46 + - `config` -- test configuration (build/run file paths, kernel override, 47 + min frames, timeout) 48 + - `step_result` -- `Pass of string | Fail of string` 49 + - `check_frames` / `check_exit_code` -- assertion helpers 50 + - `report` -- prints a summary and returns the exit code