AresOS is an experimental operating system written in Rust, built from the ground up to explore modern kernel architecture, low-level hardware control, and safe systems programming.
Named after Ares, the project represents strength, control, and raw system power — the philosophy that a developer should fully understand and command the machine they use.
AresOS is both a learning platform and a long-term experimental system, focused on transparency, performance, and deep system knowledge.
AresOS follows a simple belief:
The best way to understand a computer is to build the system that runs it.
Modern operating systems hide enormous complexity behind layers of abstraction. AresOS instead embraces that complexity and exposes how systems truly work.
The project focuses on:
- Understanding the machine
- Writing software close to the hardware
- Designing systems intentionally rather than inheriting legacy design
Rust provides the safety guarantees needed to build such a system without sacrificing performance.
AresOS draws inspiration from several legendary operating system projects.
One of the strongest influences is TempleOS, created entirely by Terry A. Davis.
TempleOS demonstrated what a single determined developer could achieve by building a complete operating system from scratch. Its bold philosophy and uncompromising approach to system design helped inspire many modern hobby OS projects.
While AresOS follows a different technical path—using Rust and modern system architecture—it shares the same spirit of deep curiosity, independence, and exploration of computing at the lowest level.
Other inspirations include:
- Linux
- Redox OS
- Minix
AresOS aims to become a small but powerful experimental operating system that demonstrates:
- modern kernel design
- memory-safe systems programming
- transparent system behavior
- efficient hardware interaction
The project also serves as a long-term exploration of operating system engineering.
- Rust bare-metal kernel
- interrupt handling
- memory management
- virtual memory and paging
- keyboard input
- timer interrupts
- device driver framework
- modular kernel design
- multitasking scheduler
- kernel logging and debugging
- filesystem support
- disk drivers
- persistent storage
- terminal shell
- system utilities
- process management tools
- freestanding Rust kernel
- bootloader integration
- basic screen output
Status: ✅ Complete (validated 2026-03-17)
Checklist: docs/phase-1-checklist.md
- interrupt descriptor table
- keyboard driver
- timer interrupts
Status: ✅ Complete (validated 2026-03-17)
Checklist: docs/phase-2-checklist.md
- paging implementation
- frame allocator
- heap allocation
Status: ✅ Complete (validated 2026-03-17)
Checklist: docs/phase-3-checklist.md
- multitasking scheduler
- context switching
- task management
Status: ✅ Complete (validated 2026-03-17, cooperative async; context switching in context-lab mode)
Checklist: docs/phase-4-checklist.md
- preemptive scheduler mode (
preemptionfeature) - process abstraction + PID allocator
- fairness telemetry and preemption observability
Status: ✅ Complete (validated 2026-05-06)
Checklist: docs/phase-5-checklist.md
Scheduler deep dive: docs/SCHEDULER.md
- command shell
- system utilities
- basic programs
Status: ✅ Complete (validated 2026-05-06; shell + utilities + syscall/storage baseline)
Checklist: docs/phase-6-checklist.md
- block-device storage boundary
- simple persistent filesystem format
- shell and syscall file operations
Status: ✅ Complete (validated 2026-05-13; remount persistence + QEMU storage smoke)
Checklist: docs/phase-7-checklist.md
Storage deep dive: docs/STORAGE.md
- device registry and PCI discovery skeleton
- block-device manager
- QEMU-friendly driver-backed storage path
Status: ✅ Complete (validated 2026-05-13; device/block smoke + storage-through-manager)
Checklist: docs/phase-8-checklist.md
Device deep dive: docs/DEVICES.md
- executable manifest format
/bin/*program discovery- file-backed launch path for built-in program entries
Status: ✅ Complete (validated 2026-05-13; stored manifests + loader smoke)
Checklist: docs/phase-9-checklist.md
Program loader deep dive: docs/PROGRAMS.md
- static users, roles, and credential model
- file owner/mode metadata with checked shell/syscall operations
- executable trust fields and process ownership policy
Status: ✅ Complete (validated 2026-05-13; permission denial + process ownership smoke)
Checklist: docs/phase-10-checklist.md
Security deep dive: docs/SECURITY.md
- conservative ELF64 image validation
- descriptor-only address-space and virtual-region model
- image manifest discovery without unsafe binary execution
Status: ✅ Complete (validated 2026-05-13; image validation + unsupported execution smoke)
Checklist: docs/phase-11-checklist.md
Executable image deep dive: docs/EXECUTABLE_IMAGES.md
- page-aligned executable load plans
- copy and zero-fill action accounting
- frame/page reservation metadata without page-table mutation
Status: ✅ Complete (validated 2026-05-13; load-plan preparation + execution-block smoke)
Checklist: docs/phase-12-checklist.md
Load-plan deep dive: docs/LOAD_PLANS.md
- deterministic mapping-stub records for prepared load plans
- frame-token, copy-byte, and zero-fill accounting
- mapped-stub process metadata without executable scheduling
Status: ✅ Complete (validated 2026-05-13; mapping-stub smoke + execution-block preservation)
Checklist: docs/phase-13-checklist.md
Mapping-stub deep dive: docs/MAPPING_STUBS.md
- persistent frame ownership registry
- bounded physical-frame accounting after heap initialization
- frame allocation/release counters for future executable backing
Status: ✅ Complete (validated 2026-05-13; frame ownership smoke)
Checklist: docs/phase-14-checklist.md
Frame ownership deep dive: docs/FRAME_OWNERSHIP.md
- frame-backed image records for mapped executable pages
- owned-frame consumption from the Phase 14 registry
- copy and zero-fill accounting attached to backed pages
Status: ✅ Complete (validated 2026-05-13; frame-backed image smoke)
Checklist: docs/phase-15-checklist.md
Frame-backed image deep dive: docs/FRAME_BACKED_IMAGES.md
- inactive user page-table descriptors for frame-backed images
- virtual-to-physical translation validation
- blocked
PageTableReadyprocess metadata without CR3 switching
Status: ✅ Complete (validated 2026-05-13; inactive page-table smoke)
Checklist: docs/phase-16-checklist.md
User page-table deep dive: docs/USER_PAGE_TABLES.md
- GDT user code/data selectors
- initial user entry frame and stack descriptors
- blocked
UserContextReadyprocess metadata without Ring 3 entry
Status: ✅ Complete (validated 2026-05-13; user-context smoke)
Checklist: docs/phase-17-checklist.md
User context deep dive: docs/USER_CONTEXT.md
- controlled user-entry/trap result records
- reserved user trap vector metadata
- blocked
UserTrappedprocess metadata
Status: ✅ Complete (validated 2026-05-13; controlled Ring 3 trampoline smoke)
Checklist: docs/phase-18-checklist.md
Ring 3 trampoline deep dive: docs/RING3_TRAMPOLINE.md
- user syscall register-frame ABI
- syscall dispatch return metadata
- blocked
UserSyscallReturnedprocess metadata
Status: ✅ Complete (validated 2026-05-13; syscall return smoke)
Checklist: docs/phase-19-checklist.md
User syscall deep dive: docs/USER_SYSCALLS.md
- guarded
/bin/helloELF execution path - deterministic output and exit status for
run hello - blocked
UserElfExitedprocess metadata
Status: ✅ Complete (validated 2026-05-13; user ELF smoke)
Checklist: docs/phase-20-checklist.md
User ELF MVP deep dive: docs/USER_ELF_MVP.md
- real x86_64 page tables from inactive descriptors
- descriptor vs hardware translation verification
- blocked
HwPageTableReadyprocess metadata
Checklist: docs/phase-21-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- activate and restore user CR3 without execution
- translation verification under switched page tables
- blocked
Cr3Activatedprocess metadata
Checklist: docs/phase-22-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- CPU Ring 3 entry via
iretqto a controlled stub - return through invalid-opcode trap during bring-up
- blocked
UserEnteredHwprocess metadata
Checklist: docs/phase-23-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- IDT vector
0x80handler for cooperative user return - blocked
UserHwTrappedprocess metadata
Checklist: docs/phase-24-checklist.md
Status: ✅ Complete (validated 2026-05-22)
syscall/sysretMSRs and entry stub- hardware tick-probe syscall path
- blocked
UserHwSyscallReturnedprocess metadata
Checklist: docs/phase-25-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- bounded
copy_from_user/copy_to_user - copy-probe syscall round-trip
Checklist: docs/phase-26-checklist.md
Status: ✅ Complete (validated 2026-05-22)
R_X86_64_RELATIVE/R_X86_64_64for seeded images- relocation accounting during frame backing
Checklist: docs/phase-27-checklist.md
Status: ✅ Complete (validated 2026-05-22)
run hellothrough hardware Ring 3 + syscall path- blocked
UserHwElfExitedprocess metadata
Checklist: docs/phase-28-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- allowlisted
helloandexit42ELF programs - seeded manifests and images
Checklist: docs/phase-29-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- save/restore distinct user CR3 values
- isolation verification across switches
Checklist: docs/phase-30-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- CR3 binding on process records and preemptive context switch
Phase31-SchedCr3boot smoke
Checklist: docs/phase-31-checklist.md
Status: ✅ Complete (validated 2026-05-22)
Scheduler deep dive: docs/SCHEDULER.md
- saved
UserHwFrameacross scheduler yield Phase32-UserFrameboot smoke
Checklist: docs/phase-32-checklist.md
Status: ✅ Complete (validated 2026-05-22)
helloandexit42under distinct hardware page tablesPhase33-MultiElfboot smoke
Checklist: docs/phase-33-checklist.md
Status: ✅ Complete (validated 2026-05-22)
ExitProcess/WaitProcesssyscallsPhase34-ExitWaitboot smoke
Checklist: docs/phase-34-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- allowlisted hardware syscall IDs
Phase35-SyscallTableboot smoke
Checklist: docs/phase-35-checklist.md
Status: ✅ Complete (validated 2026-05-22)
User syscall deep dive: docs/USER_SYSCALLS.md
- storage probe syscalls with validated user copies
Phase36-StorageCopyinboot smoke
Checklist: docs/phase-36-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- discover
elf64-imagemanifests; gated execution includingtickprobe Phase37-ManifestElfboot smoke
Checklist: docs/phase-37-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- user
#PFhandler and demand-zero mapping Phase38-DemandZeroboot smoke
Checklist: docs/phase-38-checklist.md
Status: ✅ Complete (validated 2026-05-22)
Demand paging deep dive: docs/DEMAND_PAGING.md
DT_NEEDEDdetection for ARES seed ELFsPhase39-Dynamicboot smoke
Checklist: docs/phase-39-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- end-to-end validation of phases 31–39
Phase40-Integrationboot smoke
Checklist: docs/phase-40-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- map
libc_stubdependency at0x700000whenDT_NEEDEDis present Phase41-SharedLibboot smoke
Checklist: docs/phase-41-checklist.md
Status: ✅ Complete (validated 2026-05-22)
Shared library deep dive: docs/SHARED_LIBRARIES.md
R_X86_64_GLOB_DATimports against mapped shared libraryPhase42-DynRelocboot smoke
Checklist: docs/phase-42-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- run
trust=systemmanifests without name allowlist (systrustfixture) Phase43-TrustExecboot smoke
Checklist: docs/phase-43-checklist.md
Status: ✅ Complete (validated 2026-05-22)
ReadPathProbesyscall with validated user pathsPhase44-UserPathboot smoke
Checklist: docs/phase-44-checklist.md
Status: ✅ Complete (validated 2026-05-22)
OpenFile/CloseFilesyscalls with bring-up FD tablePhase45-FileFdboot smoke
Checklist: docs/phase-45-checklist.md
Status: ✅ Complete (validated 2026-05-22)
File I/O deep dive: docs/FILE_DESCRIPTORS.md
ReadFd/WriteFdwith validated user buffersPhase46-FdIOboot smoke
Checklist: docs/phase-46-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- demand-map file pages from storage on user
#PF Phase47-FileDemandboot smoke
Checklist: docs/phase-47-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- reject writable+executable user page flags
Phase48-WxPolicyboot smoke
Checklist: docs/phase-48-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- CPU count detection, AP accounting, TLB flush hooks
Phase49-Smpboot smoke
Checklist: docs/phase-49-checklist.md
Status: ✅ Complete (validated 2026-05-22)
SMP deep dive: docs/SMP.md
- end-to-end validation of phases 41–49
Phase50-Integrationboot smoke
Checklist: docs/phase-50-checklist.md
Status: ✅ Complete (validated 2026-05-22)
- FD tables stored on
Process;current_process_idfrom CR3 Phase51-ProcFdboot smoke
Checklist: docs/phase-51-checklist.md
DupFdsyscall; per-processcwd; relativeOpenFilePhase52-FdDupboot smoke
Checklist: docs/phase-52-checklist.md
Mprotectsyscall within W^X; stack guard probePhase53-Mprotectboot smoke
Checklist: docs/phase-53-checklist.md
- anonymous RW at
0x600000; read-only file mmap Phase54-Mmapboot smoke
Checklist: docs/phase-54-checklist.md
WritePathProbesyscall; storage round-trip smokePhase55-WritePathboot smoke
Checklist: docs/phase-55-checklist.md
/lib/*.elfsearch;libc_stub+libaux_stubmappingPhase56-MultiShlibboot smoke
Checklist: docs/phase-56-checklist.md
R_X86_64_JUMP_SLOTbinding;Phase57-PltRelocboot smoke
Checklist: docs/phase-57-checklist.md
digest=sha256:manifest field; SHA-256 verificationPhase58-DigestTrustboot smoke
Checklist: docs/phase-58-checklist.md
- BSP runqueue accounting on preempt; APs remain parked
Phase59-Runqueuesboot smoke
Checklist: docs/phase-59-checklist.md
- cumulative validation of phases 51–59
Phase60-Integrationboot smoke
Checklist: docs/phase-60-checklist.md
Chdirsyscall; collapse..in resolved pathsPhase61-Chdirboot smoke
Checklist: docs/phase-61-checklist.md
Munmapsyscall; TLB shootdown on unmapPhase62-Munmapboot smoke
Checklist: docs/phase-62-checklist.md
- region list on
Process; mmap overlap rejection Phase63-Vmaboot smoke
Checklist: docs/phase-63-checklist.md
ForkLitesyscall; shallow-copy FD table and cwdPhase64-ForkLiteboot smoke
Checklist: docs/phase-64-checklist.md
- hardware
syscallpath forWritePathProbe/Mprotect Phase65-Ring3Syscallboot smoke
Checklist: docs/phase-65-checklist.md
F_GETFDandF_DUPFDviaFcntlsyscallPhase66-Fcntlboot smoke
Checklist: docs/phase-66-checklist.md
- defer
R_X86_64_JUMP_SLOTuntilbind_lazy_plt Phase67-LazyPltboot smoke
Checklist: docs/phase-67-checklist.md
- per-CPU shootdown counters on unmap/map flush
Phase68-TlbShootdownboot smoke
Checklist: docs/phase-68-checklist.md
- parked AP idle tick counter under QEMU
-smp 2 Phase69-ApIdleboot smoke
Checklist: docs/phase-69-checklist.md
- cumulative validation of phases 61–69
Phase70-Integrationboot smoke
Checklist: docs/phase-70-checklist.md
- hardware
syscallstub withsysretback to user Phase71-Sysretboot smoke
Checklist: docs/phase-71-checklist.md
Chdirsyscall from Ring 3 HW path with user path pointerPhase72-Ring3Chdirboot smoke
Checklist: docs/phase-72-checklist.md
Munmaparg1length; VMA truncate; TLB shootdown on unmapPhase73-MunmapLenboot smoke
Checklist: docs/phase-73-checklist.md
WaitLite = 78waits for fork-lite child exit codePhase74-WaitLiteboot smoke
Checklist: docs/phase-74-checklist.md
/bin/syscallprobemanifest; HW syscall probesPhase75-SyscallProbeboot smoke
Checklist: docs/phase-75-checklist.md
- per-FD flags with
FD_CLOEXEC Phase76-Fcntlboot smoke
Checklist: docs/phase-76-checklist.md
- lazy PLT bind under Ring 3 smoke flag
Phase77-Ring3LazyPltboot smoke
Checklist: docs/phase-77-checklist.md
- logical IPI counters on
request_tlb_shootdown Phase78-IpiTlbboot smoke
Checklist: docs/phase-78-checklist.md
- AP
hlttrampoline entry accounting Phase79-ApTrampolineboot smoke
Checklist: docs/phase-79-checklist.md
- cumulative validation of phases 71–79
Phase80-Integrationboot smoke
Checklist: docs/phase-80-checklist.md
HW_SYSRET_REALcounter; HW probe viahw-sysret-probefeature on QEMU bootPhase81-HwSysretboot smoke
Checklist: docs/phase-81-checklist.md
GetCwd = 79copies process cwd to user bufferPhase82-Getcwdboot smoke
Checklist: docs/phase-82-checklist.md
/bin/chdirprobemanifest;Chdir+GetCwdsmokePhase83-Chdirprobeboot smoke
Checklist: docs/phase-83-checklist.md
- middle
munmapsplits VMA registry (VMA_SPLITS) Phase84-VmaSplitboot smoke
Checklist: docs/phase-84-checklist.md
- shallow
fork_duplicate_cr3for fork-lite child Phase85-ForkDupboot smoke
Checklist: docs/phase-85-checklist.md
ExecLite = 81replaces image; sweepsFD_CLOEXECfdsPhase86-ExecLiteboot smoke
Checklist: docs/phase-86-checklist.md
Pipe = 80; ring buffer; read/write on pipe fdsPhase87-PipeLiteboot smoke
Checklist: docs/phase-87-checklist.md
#PFat PLT slot triggers lazy bind under smoke flagPhase88-Ring3PltFaultboot smoke
Checklist: docs/phase-88-checklist.md
LAPIC_IPI_SENDon TLB shootdown requestPhase89-IpiSendboot smoke
Checklist: docs/phase-89-checklist.md
- cumulative validation of phases 81–89 counters (no nested re-run)
Phase90-Integrationboot smoke
Checklist: docs/phase-90-checklist.md
- anon page COW break after
fork_lite; parent/child write isolation smoke Phase91-ForkCowboot smoke
Checklist: docs/phase-91-checklist.md
Poll = 82single-fd readiness on pipe fdsPhase92-PollLiteboot smoke
Checklist: docs/phase-92-checklist.md
next_anon_hintfills lowest gap before high-water bumpPhase93-MmapGapboot smoke
Checklist: docs/phase-93-checklist.md
- bounded argv copy from user pointer vector
Phase94-ExecArgvboot smoke
Checklist: docs/phase-94-checklist.md
/bin/pipeprobeseed; HW pipe +Pollpath underhw-sysret-probePhase95-PipeProbeboot smoke
Checklist: docs/phase-95-checklist.md
- merge adjacent anon VMAs on munmap boundary
Phase96-VmaCoalesceboot smoke
Checklist: docs/phase-96-checklist.md
- BSP steals from CPU1 runqueue counter when empty
Phase97-WorkStealboot smoke
Checklist: docs/phase-97-checklist.md
- synthetic runnable enqueue on CPU1 without AP scheduler loop
Phase98-ApRunnableboot smoke
Checklist: docs/phase-98-checklist.md
- discard-backed ICR-low write counter (no real MMIO in QEMU tests)
Phase99-LapicIcrboot smoke
Checklist: docs/phase-99-checklist.md
- cumulative validation of phases 91–99 counters (no nested re-run)
Phase100-Integrationboot smoke
Checklist: docs/phase-100-checklist.md
Phases 1–100 answered whether the OS can exist. Phases 101–110 freeze semantic constitutionalism: axioms, rights algebra, temporal visibility, IPC guarantees, governance gates G1–G5, and ares-semantics-v1 — before native implementation (111+).
Status: complete (validated 2026-05-25 — semantic lint + Phase 110 constitutional smoke)
Checklist index: docs/phase-101-checklist.md … docs/phase-110-checklist.md
Validation:
python scripts/semantic_lint.py
python scripts/phase110_constitutional_check.py --timeout 300
Key guides:
- NATIVE_MODEL.md — post-Unix capability civilization
- AXIOMS.md — constitutional axioms A1–A10 (A7+A10 anti-entropy pair)
- ROADMAP_POST100.md — phases 101–150 table
Kernel object table, native cap lifecycle (IDs 256+ kernel-only), storage grants, compat path broker, ambient/namespace policy, and cap+compat integration milestone.
Status: complete (validated 2026-05-25 — Phase120-CapCompat boot smoke)
Checklist index: docs/phase-111-checklist.md … docs/phase-120-checklist.md
Validation:
cargo check -p kernel
cargo test -p kernel --features preemption --test preemption_integration
python scripts/phase120_cap_integration_check.py --timeout 300
Service loaders, brokers, endpoints, service-centric scheduling — see ROADMAP_POST100.md.
Full index of checklists, deep-dive guides, and validation commands: docs/INDEX.md
AresOS
├── Cargo.toml workspace manifest
├── docs/ phase checklists + deep-dive guides (see INDEX.md)
├── scripts/ QEMU smoke checks + validation_matrix.py
├── kernel/
│ ├── Cargo.toml kernel crate manifest
│ ├── x86_64-unknown-none.json
│ ├── src/
│ │ ├── main.rs kernel entry + phase boot smokes
│ │ ├── lib.rs modules, init (GDT, IDT, SMP)
│ │ ├── storage.rs simple persistent filesystem
│ │ ├── security.rs identity + permission policy
│ │ ├── syscall.rs syscall IDs + dispatch
│ │ ├── device.rs device registry + PCI skeleton
│ │ ├── block.rs block-device manager
│ │ ├── exec_image.rs ELF64 image validation
│ │ ├── elf_reloc.rs static + GLOB_DAT relocations
│ │ ├── shared_loader.rs shared library mapping (phase 41)
│ │ ├── load_plan.rs executable load-plan accounting
│ │ ├── mapping_stub.rs mapping-stub records
│ │ ├── frame_ownership.rs frame ownership registry
│ │ ├── frame_backing.rs frame-backed image pages
│ │ ├── user_memory.rs inactive page-table descriptors
│ │ ├── user_paging.rs hardware page tables, CR3, W^X
│ │ ├── demand_paging.rs demand-zero + file-backed #PF
│ │ ├── user_context.rs user entry-frame descriptors
│ │ ├── user_entry.rs Ring 3 / iretq / syscall entry
│ │ ├── user_syscall.rs syscall ABI + copy helpers
│ │ ├── user_syscall_hw.rs hardware syscall/sysret path
│ │ ├── user_copy.rs validated user copies
│ │ ├── user_path.rs bounded user path copyin
│ │ ├── fd_table.rs per-process file descriptor table
│ │ ├── mmap.rs mmap bring-up (Phase 54)
│ │ ├── image_digest.rs SHA-256 manifest digests (Phase 58)
│ │ ├── smp.rs CPU detect, TLB hooks, runqueues
│ │ ├── ring3_trampoline.rs controlled user-entry traps
│ │ ├── task/ scheduler, loader, keyboard shell
│ │ └── performance/ metrics + profiler
│ └── tests/
│ └── preemption_integration.rs
└── .cargo/config.toml target + runner configuration
Install dependencies:
rustup component add llvm-tools-preview
cargo install bootimage
rustup component add rust-src
Install QEMU (example on Ubuntu/Debian):
sudo apt install qemu-system-x86
Install QEMU on Windows (winget):
winget install --id SoftwareFreedomConservancy.QEMU --accept-package-agreements --accept-source-agreements
Build the OS:
cargo build -p kernel
GitHub Actions (.github/workflows/ci.yml) runs cargo fmt --check and the full validation matrix on every push and pull request to main/master (Ubuntu, QEMU; expect roughly 4–6 hours):
python scripts/validation_matrix.py --soak-duration 30 --latency-duration 30 --boot-wait 90 --smoke-timeout 180
Run AresOS using QEMU:
cargo run -p kernel
Run Phase 5 preemption mode:
cargo run -p kernel --features preemption
Phase 5 integration checks:
cargo test -p kernel --test preemption_integration
Phase 5 soak check (fairness/progress):
./scripts/phase5-soak-check --duration 120 --min-samples 3
Phase 5 latency check (<100ms estimated preemption latency):
./scripts/phase5-latency-check --duration 120 --min-samples 5 --max-latency-ms 100
Phase 6 smoke check:
./scripts/phase6-smoke-check
Phase 7 persistent storage check:
./scripts/phase7-storage-check --timeout 180
Phase 8 device/block check:
./scripts/phase8-device-check --timeout 180
Phase 9 stored program loader check:
./scripts/phase9-loader-check --timeout 180
Phase 10 security policy check:
./scripts/phase10-security-check --timeout 180
Phase 11 executable image check:
./scripts/phase11-image-check --timeout 180
Phase 12 executable load-plan check:
./scripts/phase12-load-plan-check --timeout 180
Phase 13 mapping-stub check:
./scripts/phase13-mapping-stub-check --timeout 180
Phase 14 frame ownership check:
./scripts/phase14-frame-check --timeout 180
Phase 15 frame-backed image check:
./scripts/phase15-frame-backing-check --timeout 180
Phase 16 inactive page-table check:
./scripts/phase16-page-table-check --timeout 180
Phase 17 user-context check:
./scripts/phase17-user-context-check --timeout 180
Phase 18 controlled Ring 3 check:
./scripts/phase18-ring3-check --timeout 180
Phase 19 syscall return check:
./scripts/phase19-syscall-return-check --timeout 180
Phase 20 user ELF check:
./scripts/phase20-user-elf-check --timeout 180
Phase 21 hardware page-table check:
python scripts/phase21_hw_page_table_check.py --timeout 180
Phase 22 CR3 activation check:
python scripts/phase22_cr3_check.py --timeout 180
Phase 23 iretq entry check:
python scripts/phase23_iretq_check.py --timeout 180
Phase 24 user trap check:
python scripts/phase24_user_trap_check.py --timeout 180
Phase 25 hardware syscall check:
python scripts/phase25_syscall_hw_check.py --timeout 180
Phase 26 user copyin check:
python scripts/phase26_copyin_check.py --timeout 180
Phase 27 relocation check:
python scripts/phase27_reloc_check.py --timeout 180
Phase 28 hardware hello check:
python scripts/phase28_hw_hello_check.py --timeout 180
Phase 29 allowlist check:
python scripts/phase29_allowlist_check.py --timeout 180
Phase 30 CR3 switch check:
python scripts/phase30_cr3_switch_check.py --timeout 180
Phases 31–50 QEMU checks (same pattern; example):
python scripts/phase41_shared_lib_check.py --timeout 180
python scripts/phase50_integration_check.py --timeout 180
Full validation matrix (QEMU-backed; run alone on Windows, ~2+ hours):
python scripts/validation_matrix.py --soak-duration 30 --latency-duration 30 --boot-wait 90 --smoke-timeout 180
Resume from a specific check:
python scripts/validation_matrix.py --from-check phase41-shared-lib-check --smoke-timeout 180
Run tests (unit + integration under QEMU):
cargo test -p kernel --features preemption --test preemption_integration
Run Phase 4 wrapper-mode preemption soak check:
./scripts/phase4-soak-check
AresOS is an experimental post-Unix capability system with semantic constitutionalism — not “Linux but smaller.”
Phases 1–100 built kernel mechanics (paging, ELF, syscalls, SMP groundwork). The long-term challenge is preserving semantic coherence across decades, not only shipping features.
Preserving semantic coherence is harder than building the kernel.
- Native: capabilities, async endpoints, no ambient paths, service-centric design — see NATIVE_MODEL.md
- Compat: ELF, FDs, paths, POSIX (future shim) — substrate, not architectural truth
- Governance: AXIOMS.md (especially A7 semantic laws override convenience, A10 minimization), gates G1–G5, SEMANTIC_SPECS.md
What happens when you build a civilization on the OS on your own terms — and write the laws before the code?
Licensed under the Apache License, Version 2.0.
See LICENSE for the full text.
