## bcoles/kasld — v0.1.1…v0.2.0

_124 commits._

### Features
- **Update extra/check-results for new output format** (0f345e9)
- **inference: randomize_memory_page_offset — add same-(origin,region,name) path** (0e075e7)
- **check-results: add V bss validator** (85f6184)
- **inference: add kernel_image_phys_bound** (d4ddf21)
- **Add KASLD_SECTION_BSS / KASLD_REGION_KERNEL_BSS vocabulary** (607521e)
- **Add x86_firmware_memmap_holes inference plugin** (b2c1e88)
- **Add x86_64_coupling_validate inference plugin** (1cfe887)
- **Add x86_32_vmsplit_ceiling inference plugin** (d439df1)
- **Add text_cluster_filter inference plugin** (85314a5)
- **Add ppc64_rtas_bound inference plugin** (c085b24)
- **Add ppc64_opal_bound inference plugin** (718fc97)
- **Add mips64_xkphys_filter inference plugin** (ebe7296)
- **Add initrd_phys_avoid inference plugin** (24e865c)
- **Add arm64_phys_kaslr_align inference plugin** (fc00469)
- **Add arm64_memstart_align.c inference plugin** (8917246)
- **Add x86_64_la57_from_directmap inference plugin** (af15438)
- **src/inference/riscv64_fdt_kaslr_seed.c: add riscv64 FDT kaslr-seed inference plugin** (b6f79c7)
- **src/inference/riscv64_no_seed_default.c: add riscv64 KASLR-disabled detection plugin** (88f835a)
- **src/inference/min_offset_from_image_size.c: add MIPS/LoongArch image-size lower bound plugin** (023f2fb)
- **src/inference/randomize_memory_page_offset.c: add x86-64 randomize_memory page_offset plugin** (897cf64)
- **src/inference/ppc32_booke_phys_ceiling.c: add PPC32 BookE physical KASLR ceiling plugin** (e614628)
- **src/inference/dram_ceiling.c: add DRAM ceiling plugin** (6edc04d)
- **src/inference/boot_params_align.c: add x86-64 boot_params kernel_alignment/init_size plugin** (dc6431c)
- **Add cmdline_has_prefix() function** (9cba2ca)
- **inference: add [layout] output to silent plugins** (db29fc0)
- **config_max_offset_bound: new PRE_COLLECTION plugin for KASLR window ceiling** (52d7cb7)
- **va_bits_from_results: new POST_COLLECTION arm64 VA_BITS inference plugin** (b388a30)
- **s390_paging_level: new PRE_COLLECTION plugin for paging level detection** (6fbcab6)
- **riscv64_va_bits_mmap: new PRE_COLLECTION plugin for SATP mode detection** (2e2a7d6)
- **riscv64_non_efi_phys_base: new POST_COLLECTION plugin for non-EFI riscv64** (07dc746)
- **image_size_from_text_data_gap: new POST_COLLECTION image size plugin** (4668a42)
- **highmem_32bit_bound: new POST_COLLECTION plugin for 32-bit highmem kernels** (064ad9d)
- **arm64_va_bits_mmap: new PRE_COLLECTION plugin for VA_BITS detection** (b13c954)
- **inference: add directmap_page_offset_bounds POST_COLLECTION plugin** (3a2a6f6)
- **inference: add cpuinfo_phys_bits PRE_COLLECTION plugin** (1c0da37)
- **Add clang-format config file** (36e2068)
- **inference: add meminfo_phys_ceiling POST_COLLECTION plugin** (6432022)
- **inference: add convergence loop to on_exit phase groups** (cfa95ce)
- **inference: add physical KASLR ceiling to kaslr_ceiling plugin** (d39d9db)
- **inference: add module_text_bound POST_COLLECTION plugin** (d7f5438)
- **inference: add LAYOUT_ADJUST phase and layout_adjust plugin** (edbc7f2)
- **tests: add tests for inference plugins** (40dcdaa)
- **Add phys_virt_synth inference plugin** (162ef5b)
- **Add DRAM bound propagation inference plugin** (f3e3e02)
- **add kaslr_ceiling PRE_COLLECTION inference plugin** (4fdd8c2)
- **add inference plugin infrastructure** (f58ad59)
- **components: add phase key to all KASLD_META() blocks** (233db98)
- **render: add hardware side-channels section to hardening report** (c6fb8d2)

### Fixes
- **inference/directmap_page_offset_bounds: fix strict lower-bound off-by-one** (96f317e)
- **inference/initrd_phys_avoid: fix 32-bit UB in read_initrd_x86** (0f268fe)
- **render: fix Memory KASLR display when only one side is tightened** (1f3f2e8)
- **proc-cpuinfo: fix L5 PAGE_OFFSET floor and tighten L4 comment** (74c63b9)
- **s390: fix module_text_bound — add Case B for modules-below-start layout** (609434b)
- **render: fix virtual layout diagram top/bottom labels after inference feedback** (7095298)

### Backend
- **Bump version to 0.2.0** (91cc174)
- **Undo clang-format damage to tests/replay script** (7046388)
- **Tests: chmod +x test scripts** (e2506dc)
- **engine: rewrite inference as a layered evidential constraint system** (ce79466)
- **Bump version to 0.2.0-dev** (fafe224)
- **extra/collect: portable diagnostic + test-fixture capture tool** (a1d5f79)
- **clang-format** (a04e1fa)
- **inference: tighten kaslr_align from observed base_align (LAYOUT_ADJUST)** (ceea6a8)
- **inference: tighten text-base ceiling from interior samples (POST_COLLECTION)** (3d962bd)
- **inference: phys text base ≤ lowest MMIO above DRAM (POST_COLLECTION)** (25dcfb8)
- **inference: exclude phys text base from DRAM holes (POST_COLLECTION)** (3a4d848)
- **make: link inference plugin objects into the test binary** (6dd2b14)
- **chmod +x extra/check-results** (3673aa0)
- **region_info: collapse three-place coupling into a KASLD_REGION_LIST X-macro** (18e4d7c)
- **Load results from file or stdin only** (b0585a6)
- **inference: enforce tighten-only invariant in run_inference_phase** (1627244)
- **result model: migrate from section strings to (extent, position, confidence)** (11256d7)
- **Update README** (a5ebdbf)
- **inference/x86_firmware_memmap_holes: check strtoul conversion result** (321dcf4)
- **inference/riscv64_va_bits_mmap: rename SV39_NEW/OLD constants to LO/HI** (801dbae)
- **inference: chain page_offset_base → vmalloc_base → vmemmap_base** (d73908f)
- **dmesg_efi_memmap: emit EFI_LOADER_CODE bounds as kernel_image candidates** (8dce641)
- **sysfs_nd_region: read persistent-memory region phys ranges from /sys/bus/nd** (87fb6ed)
- **sysfs_iommu_reserved_regions: read IOMMU reserved_regions phys ranges** (28c5e2a)
- **sysfs_devicetree_uefi_mmap: read chosen/linux,uefi-mmap-{start,size,desc-size}** (9be77ee)
- **sysfs_devicetree_elfcorehdr: read chosen/linux,elfcorehdr-mem** (14f5ded)
- **boot_params_e820: read /sys/kernel/boot_params/data E820 table** (444f9da)
- **inference: print init line once per process across three plugins** (f07be6f)
- **sidt: refer to KPTI by Kconfig name (CONFIG_PAGE_TABLE_ISOLATION)** (f169732)
- **Update README** (8057c15)
- **Update tests** (c9146fa)
- **dmesg_mem_init_kernel_layout: emit PHYS/KERNEL_BSS on coupled arches** (91f3276)
- **s390: update comment headers** (dd55fed)
- **render: surface kernel-locating regions in compact Results** (80979dc)
- **inference: audit fixes for soundness and clean-up** (860fb4e)
- **orchestrator: refresh kaslr_align fields per phase** (41751ef)
- **clang-format** (f2f6490)
- **Clarify phys/virt addresses in output** (505d0be)
- **Update tests** (adeaba3)
- **Update code comments** (a529199)
- **riscv64_no_seed_default: return if already pinned** (c9061b2)
- **riscv64_non_efi_phys_base: return if already pinned** (99b857f)
- **kasld_ceiling: Validate minimum plausible file size** (31aa2eb)
- **kconfig_has_kaslr: drop CONFIG_RELOCATABLE requirement** (1362697)
- **inference: standardise verbose output — use [infer] prefix, route to stdout** (62d43ad)
- **components/hibernation_nokaslr: detect hibernation resume disabling KASLR** (67a2773)
- **inference: gate [layout] diagnostic output on --verbose** (93a68e4)
- **inference/kaslr_ceiling: use compile-time macros to prevent repeated ceiling application** (1b9c05d)
- **clang-format** (1a07759)
- **dram_bound: extend to raise phys_base_min on decoupled arches** (5731f4e)
- **x86-32: tighten KERNEL_PHYS_MAX to 512MB** (c838c90)
- **s390: set KASLR_BASE_MAX to KERNEL_BASE_MAX** (109b4d5)
- **riscv64: set KASLR_PHYS_MAX to KERNEL_PHYS_MAX** (2b787f5)
- **arm64: correct EFI_KIMG_ALIGN comment for each page size** (fc315d9)
- **Replace DoozyX/clang-format-lint-action with jidicula/clang-format-action** (b467918)
- **Rename build-and-test GitHub workflow to build** (dcf38b4)
- **Set clang-format GitHub action to clangFormatVersion: 20** (2109b34)
- **riscv64: update sv39 PAGE_OFFSET_L3 to v6.12+ value (0xffffffd600000000)** (37424d4)
- **render: insert gap box between lowest VAS region and kernel_vas_start** (4632f81)
- **orchestrator: remove kaslr_appears_active guard; probing always runs** (7298c20)
- **render: show physical KASLR range in analysis section** (c304541)
- **inference: sync layout bounds into ctx at every phase boundary** (4fb34cf)
- **Surface inference-narrowed slot range when no concrete address found** (d3c3f19)
- **Update README** (1d35b0f)
- **update code comments** (3a581b6)
- **Remove method-based phase fallback from classify_components** (c87d348)
- **Bump version to 0.1.2-dev** (3bb5496)

### Tests
- **test: track randomize_memory ram_base witness requirement** (c2350fa)

### Chore
- **refactor: introduce exec_state table; replace hardcoded phase calls** (7a50d4d)
- **refactor: replace is_probing with phase string field** (6d3e0cd)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/bcoles/kasld?utm_source=github-action)._