Skip to content

Latest commit

 

History

History
44 lines (41 loc) · 7.96 KB

File metadata and controls

44 lines (41 loc) · 7.96 KB

Architecture decision records

Read ADRs selectively by scope. Accepted records remain historical contracts; the supersession columns identify only explicit replacement, not later feature growth.

ADR Title Status Scope Supersedes Superseded by
0001 Start with AArch64 on QEMU virt Accepted Architecture strategy - -
0002 AArch64 IRQ path via GICv2 and timer Accepted AArch64 IRQ - -
0003 Preemptive IRQ-return switching Accepted Scheduler/ABI - -
0004 Boot/exception separation Accepted AArch64 exceptions - -
0005 One-shot timer deadline engine Accepted Time - -
0006 Time-owned timed events Accepted Time/scheduler - 0032 (timed wait identity only)
0007 DTB memory map and frame allocator Accepted Memory - -
0008 AArch64 soft-float target Accepted Build/ABI - -
0009 Bootstrap heap on frame allocation Accepted Memory - -
0010 IRQ-safe heap policy Accepted Memory/RT - 0029 (heap lock ownership only)
0011 Preallocated scheduler/time structures Accepted Scheduler/time - 0028 (saved-frame backing only)
0012 Bounded mailbox IPC Accepted IPC - 0029 (lock naming only), 0032 (waiter identity only)
0013 Mailbox timeout semantics Accepted IPC/time - 0032 (timeout identity and loser cleanup only)
0014 Bounded kernel thread lifecycle Accepted Threads - 0032 (join waiter identity), 0033 (slot identity and stack/context ownership)
0015 AArch64 high-half MMU Accepted AArch64/MMU - -
0016 First AArch64 EL0 process Accepted Userspace/MMU - -
0017 Process table and user faults Accepted Processes - 0032 (join/wait registration identity), 0033 (main-thread join and user-stack ownership)
0018 Userspace ELF loader only Accepted Loader - -
0019 Readonly ramfs and FD table Accepted FD ABI; original backing partially replaced - 0021 (backing only)
0020 UART stdin and shell Accepted Console/userspace - 0032 (stdin waiter identity only)
0021 CPIO initramfs root Accepted Filesystem backing 0019 (backing only) -
0022 Minimal process control Accepted Processes/syscalls - 0033 (main-thread resource transfer and reap)
0023 Directory FDs and getdents64 Accepted Filesystem ABI - -
0024 Process cwd and path traversal Accepted Filesystem/process - -
0025 Automated testing and releases Accepted Verification/release - -
0026 Agent-oriented development workflow Accepted Repository workflow - -
0027 Typed active context and syscall boundary Accepted Kernel/AArch64 context boundary - 0028 (saved-frame bridge only)
0028 Typed saved context and scheduler ownership Accepted Scheduler/AArch64 context ownership 0011 (saved-frame backing), 0027 (saved-frame bridge) -
0029 Local IRQ and task preemption exclusion Accepted Synchronization/memory/RT 0010 (heap lock ownership), 0012 (lock naming) 0030 (transitional preemption backend only)
0030 Nested preemption control and deferred rescheduling Accepted Synchronization/scheduler/RT 0029 (transitional preemption backend only) -
0031 Centralized scheduler state transitions Accepted Scheduler/lifecycle/RT - 0032 (blocked-state identity), 0033 (thread-only transition identity and terminology)
0032 Typed wait registrations and external wake ownership Accepted Scheduler/waits/RT 0006 (timed wait identity), 0012 (waiter identity), 0013 (timeout identity and loser cleanup), 0014 (join waiter identity), 0017 (join/wait registration identity), 0020 (stdin waiter identity), 0031 (blocked-state identity) 0033 (active wait ownership and diagnostic kind removal)
0033 Unified thread model and scheduler/process separation Accepted Scheduler/process/memory ownership 0014 (slot identity and stack/context ownership), 0017 (main-thread join and user-stack ownership), 0022 (main-thread resource transfer and reap), 0031 (thread-only transition identity), 0032 (active wait ownership and diagnostic kind removal) -
0034 Process subsystem module boundaries Accepted Process source boundaries - -

Use TEMPLATE.md for new decisions.