Skip to content

Repository Structure

The repository follows a layered structure where each directory has a single, clear ownership.

  • Directoryhaven/
  • Directory.github/
  • Directoryworkflows/ CI pipeline definitions (ci.yml, nightly.yml, benchmark.yml, …)
  • Directoryagents/ Specialized Copilot agent definitions
  • CODEOWNERS Isolation-critical path ownership
  • copilot-instructions.md AI assistant context
  • Directorysrc/
  • Directorycore/
  • Directorymm/ Stage-2 page table management (stage2.c)
  • Directoryirq/ Interrupt ownership and routing (ownership.c)
  • Directorysched/ Budget-based temporal scheduler (budget.c)
  • Directorydma/ SMMU / IOMMU policy (smmu.c)
  • Directoryexc/ EL2 exception handler (el2_exceptions.c)
  • Directoryarch/ Architecture-specific EL2 helpers (arm64)
  • Directorytime/ Timer and budget accounting
  • Directoryiommu/ IOMMU abstraction layer
  • Directoryguest/
  • Directorydrivers/ Guest UART driver stub (uart.c)
  • Directoryrtos/ FreeRTOS integration layer (freertos_integration.c)
  • Directorycommon/ Shared utilities
  • Directoryplatform/ Board-specific initialisation hooks
  • Directoryinclude/
  • Directoryhaven/
  • types.h Primitive typedefs (hv_u32, hv_u64, hv_status_t)
  • stage2.h Stage-2 MMU API
  • irq_ownership.h IRQ ownership API
  • budget_sched.h Budget scheduler API
  • smmu.h SMMU API
  • el2_exceptions.h EL2 exception API
  • guest_uart.h Guest UART API
  • freertos_integration.h FreeRTOS API
  • Directoryarch/ Architecture-specific headers
  • Directoryconfigs/
  • Directoryarm64/
  • imx95-devkit.yaml Primary thesis platform config
  • imx8qm-mek.yaml Secondary heterogeneous board config
  • qemu-virt.yaml CI and developer QEMU config
  • Directoryriscv/ (planned)
  • Directoryx86/ (planned)
  • Directorytests/
  • Directoryunit/ Stub contracts, EL2 exc, SMMU, FreeRTOS, UART
  • Directoryintegration/ Isolation flow, negative isolation tests
  • Directoryisolation/ Planned cross-partition violation tests
  • Directoryselftests/ Planned kernel selftests
  • Directorydemos/ Planned demo scenarios
  • Directoryscripts/
  • build.sh Core C build
  • test.sh Test runner
  • style-check.sh Shell syntax + C syntax-only check
  • check-configs.py YAML partition config validator
  • ci-preflight.sh Full local CI gate
  • ci-metadata.sh Build metadata capture
  • benchmark-baseline.py Command timing baseline
  • package-evidence.sh Evidence archive packager
  • qemu-smoke.sh QEMU availability check
  • setup-hooks.sh Git hook installer
  • release.sh Release workflow
  • Directorydocs/
  • Directoryarchitecture/ OVERVIEW, ISOLATION_MODEL, THESIS_DEEP_DIVE
  • Directorymethodology/ CI strategy, benchmarks, chapter traceability
  • Directoryporting/ i.MX95 setup, validation runbooks, porting guide
  • Directoryroadmap/ Milestones, release specs (R1–R4)
  • Directorysafety/ Threat model, assumptions
  • Directoryapi/ API placeholder
  • Directorywebsite/ This Astro Starlight documentation site
  • Directorybuild/ Generated artefacts (gitignored)
  • Directoryverification/ Coq and Isabelle formal proofs (planned)
  • Directorytools/
  • Directoryconfig-gen/ Config compiler tooling (planned)
  • Directoryanalysis/ Static analysis scripts
  • Directorydrivers/
  • Directorylinux/ Linux guest driver modules (planned)
  • Directoryguest-tools/ Guest userspace tools (planned)

Key Design Boundaries

src/core/ is the Trusted Computing Base

All code under src/core/ runs at EL2 and is the TCB. Changes here require an Isolation Guardian review. Every function must have a corresponding unit or integration test.

include/haven/ is the Stable Interface

Headers under include/haven/ define the only API surface that tests and platform code use. Changes here are breaking changes and require a version bump.

configs/ drives partition topology

YAML configs are the single source of truth for partition boundaries. The check-configs.py validator enforces required fields at every CI run.

website/ is decoupled from the build

The Astro documentation site under website/ is deployed independently to Vercel. It does not affect the C build or test pipeline.