Skip to content

Latest commit

 

History

History
64 lines (53 loc) · 6.52 KB

File metadata and controls

64 lines (53 loc) · 6.52 KB

EoS — Feature Maturity

§25 of the platform architecture document requires every significant feature to carry a maturity state with the evidence that state demands. This file records them for eos.

Measured on 29 Aug 2026 against this branch. Every row below cites a command that was run, or says plainly that it was not.

States and the evidence each requires (§25)

State Definition Required evidence
Planned Design intent; not yet available Roadmap / issue / design spec
Experimental Working prototype; API/behaviour may change Tests + known limitations
Implemented Feature exists and is usable Code + functional tests
Validated Verified on named targets/use cases Test reports / CI / hardware matrix / benchmarks
Certified Formally certified to a named standard Certificate / audit reference

Unknown appears below where evidence was not collected. It is not a §25 state — it is an admission of an unmeasured claim, and should be driven to zero.

Repository-level

Overall Experimental
Host evidence CMake 4.2.3 / GCC 15.2.0; ctest 28/28 pass
Cross evidence toolchains/arm-cortex-m4.cmake builds 23 static libraries; artifacts report architecture: armv7e-m. Footprint 15.8 KB flash, 26 KB RAM (arm-none-eabi-size -t)
Blocking Implemented No board-level or on-hardware evidence. Nothing has been observed to boot.

Subsystem detail

Subsystem Builds as State Evidence / gap
Kernel (task, sync, ipc, multicore, heap) libeos_kernel.a Experimental Builds host and Cortex-M4; test_kernel passes. Mutex priority inheritance is transitive and recomputed from an invariant. No preemption or latency measurement.
HAL — dispatch layer libeos_hal.a Experimental hal_common.c dispatches to a registered backend; test_drivers passes.
HAL — host backend (in libeos_hal.a) Planned hal_linux.c implements a Linux backend, but eos_hal_linux_register() is never called and is declared in no public header. On a host build no backend registers, eos_hal_init() returns -1, and every HAL call silently no-ops.
HAL — extended peripherals (ADC, PWM, I²C, SPI, …) (in libeos_hal.a) Planned hal_extended_stubs.c is 740 of the HAL's 3,185 lines and contains 144 (void)param; casts. The API exists; the peripherals do not.
Architecture — ARM Cortex-M4 / R5 23 .a targets Experimental Cross-compiles clean via arm-cortex-m4, arm-none-eabi-stm32f4 and arm-none-eabi-r5; artifacts verified armv7e-m / armv7 with objdump -f. Never executed — no board, no QEMU.
Architecture — RISC-V, Cortex-A/AArch64 — Unknown Toolchain files exist (riscv64-linux-gnu.cmake, aarch64-linux-gnu.cmake). Neither toolchain was installed, so neither was built. NOT RUN.
Boards boards/*.yaml Planned 84 descriptors, of which 71 are named generic-*. A descriptor is not a port; none has been validated on hardware.
Drivers + devicetree libeos_drivers.a, libeos_devicetree.a Experimental Build; test_drivers and test_devicetree pass. The DTB parser is bounds-checked against untrusted input and has a fuzz target. Per-driver status unassessed.
Networking (eNet) libeos_net.a Planned Per ADR-014. net/src/net.c is 190 lines carrying 20 (void)param; casts; eos_net_connect() is return -1. There is no protocol implementation of any kind. test_net passes because it tests the facade's argument validation, not a connection. §12 names TCP/IP, UDP, DHCP, DNS, MQTT, CoAP, HTTP and WebSocket — none exist.
Security (eSec) — keystore, ACL libeos_security.a Experimental Builds; test_security passes.
Security (eSec) — RSA / ECC signatures (in libeos_crypto.a) Planned Per ADR-011 / ADR-012. The RSA and ECC routines are stubs: eos_ecc_verify() accepted any 64-byte signature and eos_rsa_verify_sha256() compared only the trailing 32 bytes. They now refuse to run unless a build defines EOS_ALLOW_STUB_CRYPTO, and test_crypto_failclosed asserts that refusal. No signature verification exists.
Security (eSec) — AES, SHA-256, SHA-512 (in libeos_crypto.a) Experimental Build; test_crypto, test_crypto_aes, test_crypto_sha512 and test_crypto_vectors pass, including NIST vectors. Hand-written; not independently audited, which §4 discourages. ADR-012 selects Mbed TLS to replace them.
Power management libeos_power.a Experimental Builds; test_power passes. Peripheral IDs are bounds-checked against negative values.
Filesystem libeos_filesystem.a Experimental Builds; test_filesystem passes. No power-loss or wear-levelling evidence — the properties that matter most, and the ones unit tests cannot establish.
OTA libeos_ota.a Experimental Builds; test_ota passes. eos_ota_apply() refuses without a registered authenticator, so an image's own declared hash is no longer treated as proof of origin. Not validated end-to-end against eBoot.
Packaging libeos_pkg.a, libeos_systems.a Experimental Build; test_package and test_config pass. The config parser is bounds-checked against a package count exceeding EOS_MAX_PACKAGES (AddressSanitizer clean on the input that previously overflowed).
Debug (GDB stub, core dump) libeos_debug.a Experimental Builds; test_debug passes. M-packet payloads are length- and charset-validated. eos_gdb_read_mem/write_mem still cast a uint32_t to a pointer, so the accept path is untested on 64-bit hosts.
POSIX compat adapter libeos_compat.a Experimental Builds; test_os_adapter passes.
Examples (13 apps) not in the root build Experimental examples/blink-gpio builds standalone and runs on the host. The remaining twelve are unverified.

Claims that must not be made until evidence exists

  • That any board or architecture is supported beyond a boards/ descriptor and a clean cross-compile. Nothing here has been observed to boot.
  • Any latency, throughput, power or boot-time figure. §25 requires a link to a reproducible benchmark; no benchmark methodology is published. The footprint numbers above are the one exception — arm-none-eabi-size -t is reproducible and the command is given.
  • Any comparison against another OS.
  • Real-time or deterministic guarantees — no scheduling latency measurement exists.
  • That EoS has networking or signature verification. Both are Planned.