A thin, no-policy Rust crate for EriX handoff structures used in early boot and early userspace bootstrap.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Erik Inkinen 16b9cb8dcf
All checks were successful
CI / markdown (push) Successful in 7s
CI / test (push) Successful in 23s
chore: Merge native CLI development into main
Merge the selected feature/native-cli history with an explicit two-parent commit so main retains the development lineage and the validated source snapshot. The resulting tree is identical to the selected feature commit; no dependency pins or runtime behavior are changed by this merge.

Previous main: a33368bf81
Selected feature: 65d56177ea

Publish this integration point following the requested cross-repository merge. Preserve the feature branch and immutable dependency objects for reproducibility; do not squash, rebase or rewrite existing commits.
2026-09-12 08:28:47 +03:00
.github build: Pin dependency and CI helper source commits 2026-09-12 07:30:58 +03:00
src Replace untyped handoff records with RAM extents 2026-08-04 07:21:07 +03:00
.editorconfig Initial commit 2026-02-26 11:39:01 +01:00
.gitignore Ignore local .ci workspace 2026-04-15 21:52:51 +03:00
.markdownlint-cli2.yaml Tighten CI markdown policy 2026-05-22 15:10:22 +03:00
ARCHITECTURE.md Replace untyped handoff records with RAM extents 2026-08-04 07:21:07 +03:00
Cargo.toml Add handoff structures and validation for bootloader, kernel, and root services 2026-02-26 12:52:24 +02:00
CODE_OF_CONDUCT.md docs: Synchronize shared contribution and review policies 2026-09-12 06:38:17 +03:00
CONTRIBUTING.md build: Pin dependency and CI helper source commits 2026-09-12 07:30:58 +03:00
LICENSE Initial commit 2026-02-26 11:39:01 +01:00
README.md Replace untyped handoff records with RAM extents 2026-08-04 07:21:07 +03:00
ROADMAP.md fix: preserve exact module content sizes 2026-07-29 07:45:20 +03:00
rustfmt.toml lib-handoff: drop unstable rustfmt options for stable toolchains 2026-03-23 10:19:54 +02:00
SECURITY.md docs: Synchronize shared contribution and review policies 2026-09-12 06:38:17 +03:00

lib-handoff

lib-handoff is the allocation-free Rust owner of EriX's versioned bootloader-to-kernel and kernel-to-root byte layouts.

EriX is a clean-room, capability-based microkernel operating system written entirely in Rust.

Technical requirements are tracked in the EriX requirements, conventions, and project documentation.

See:

  • docs for design documents and normative handoff specifications
  • lib-bootstrap for the separate root-to-service startup protocol

Purpose of This Repository

This repository provides one implementation boundary for the byte contracts that cross EriX's first two boot transitions. It exposes:

  • little-endian decoders for the two fixed headers
  • checked table and range validation
  • allocation-free iterators over memory, module, RAM allocator extent, framebuffer, and dynamic-catalog records
  • a required boot-calibrated processor-clock frequency for explicit hardware-deadline conversion in the kernel
  • constants for the encoded record sizes, identifiers, kinds, and flags
  • the x86_64 recursive-page-table index shared by the bootloader and kernel

validate_blob rejects incompatible versions, size mismatches, native-width conversion failures, metadata that overlaps a header or another metadata range, malformed entry sizes, unknown record values, forbidden writable and executable segment combinations, a missing processor-clock frequency, and non-zero reserved fields. Semantic launch, memory-map, capability, and dependency-graph policy remains with the receiving component.

Direct Cargo consumers are bootloader, kernel, and rootd.

Clean-Room Policy

EriX follows a strict clean-room philosophy:

  • No external source code may be copied.
  • No external Rust crates are allowed.
  • No code generation tools that embed third-party code.
  • All code must be authored within the project.

Violations will result in rejection of the contribution.

License

All EriX repositories are licensed under the ISC License.

Development Model

EriX development is modular, deterministic, reproducible, authority-explicit, security-first, and self-hosting oriented.

Repository validation requires:

cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
RUSTFLAGS="-D warnings" cargo test --all-targets --all-features
RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features
RUSTFLAGS="-D warnings" cargo build --target x86_64-unknown-none --all-features

The crate is no_std, denies unsafe code and missing public documentation, and has no dependencies.

Governance Principles

lib-handoff governance is limited to shared boot-transition representation and structural validation:

  • Wire sizes are explicit constants, not values derived from host layout.
  • Every wire offset is checked before conversion to native indexing.
  • Full validation covers every referenced descriptor before success.
  • The crate performs no I/O, allocation, service discovery, or policy action.
  • Root-to-service startup messages have one owner, lib-bootstrap; they are not duplicated here.
  • Format changes require coordinated consumer updates. Pre-release formats do not retain unused compatibility fields or aliases.

Library Boundaries

lib-handoff carries metadata, including capability-slot identifiers, but holds no authority. Callers remain responsible for proving that metadata corresponds to installed capabilities and for enforcing boot policy.

Contact

Development occurs in the EriX organization. Decisions require documented rationale in issues or design documents.

Maintainers can be reached at admin@erikinkinen.fi.