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

_106 commits._

### Features
- **tests/vm: add `stock` profile and a vanilla x86_64 reference kernel** (3ec1f9d)
- **tests: add shellcheck guard and group static checks under `make lint`** (8be237b)
- **components: add proc_net_sock_ptr + model %pK pointer hashing in -H** (48cc14d)
- **Add phys exclude tests** (0347909)
- **Add .clang-format-ignore** (2f5c900)
- **tests: add self-edge guard for engine rules** (83aaa5b)
- **test-cross: add riscv32, arm-unknown, armeb to heredoc** (6cb6151)
- **Add perf_lbr_sampling component** (5d9ed1f)
- **components: add perf_ksymbol_leak — side-band PERF_RECORD_KSYMBOL reader** (00b93c0)

### Fixes
- **tests: fix arch-gated engine/kasld assertions for the image-base model** (84d2e53)
- **fix a bogus image_size corrupting the phys text-base inference** (7e5d989)
- **orchestrator: fix off-by-one in component output reader** (509c5b2)
- **test_kasld: regression coverage for merge pos preservation + renderer origins** (0f7541d)

### Backend
- **Bump version to 0.3.0** (e96d432)
- **clang-format** (474145c)
- **scrub test-infra refs from source comments; lint all shell scripts** (8786296)
- **tests: unit-test three arch-gated rules in isolation** (6e51e7e)
- **tests/vm: validate the Alpine-gap architectures from kernel.org** (9f55ec3)
- **Update documentation** (0515f55)
- **tests/vm: live cross-architecture soundness recipe** (6ce9729)
- **tests/test-cross: PATH-resolved qemu, naming-agnostic qemu_for, per-triple args** (793d886)
- **tests/replay: output-mode sweep, PATH-resolved qemu, glob build dir** (8f33b29)
- **components: skip live probes under KASLD_SYSROOT replay** (ad8cf25)
- **components: bound CAN BCM recvfrom with SO_RCVTIMEO** (c27a375)
- **image base: solve & report the kernel image base (_text), _stext as a projection** (5f52f0e)
- **rules: keep virt-floor-ok markers on the mask line** (842363b)
- **text base: sound floors on sub-offset architectures** (645ed1c)
- **check-results: validate all numeric input before arithmetic** (885a1b7)
- **evidence: derive MAX_COVERINGS from MAX_OBSERVATIONS** (a7d8cfd)
- **check-hardware-vulnerabilities: resolve shellcheck violations** (efccee7)
- **check-results: validate scalars, RAM-map coverage, block-coarse RAM tops** (50ee65d)
- **package: ship ksymoff and docs in install + release** (eaf7bc2)
- **engine: route complete RAM maps through coverings, out of the merge** (5aa51d6)
- **orchestrator: opt-in per-constraint engine diagnostic** (6fb58fb)
- **check-results: validate scalar facts and the inferred text windows** (fcdc87d)
- **rules: floor the interior-sample text-base ceiling to slot alignment** (c1d3496)
- **rework merged-record provenance: uncapped + method bitmask** (37fee8f)
- **rm tests/component-output-baseline** (423fa61)
- **components: route stdout data-echo to the stderr logger** (47c2e13)
- **detect non-canonical kernel-text ordering (SF_TEXT_ORDER)** (98dba3a)
- **components: sound text-base floor on sub-offset arches** (eaf0ba4)
- **components: leak physical MMIO bases via fb/serial ioctls** (05fee5a)
- **rules: derive ARM32 PAGE_OFFSET and text base from the VMSPLIT** (40c4005)
- **components: emit ARM32 mmu_idmap leak as physical, not virtual** (c4ab31f)
- **components: exact sizeof(struct page) from BTF for vmemmap-sizing rules** (0dbf36e)
- **Update docs** (c0a967f)
- **components: arm64 no-seed KASLR-disabled detector** (63a875b)
- **components: harvest riscv layout-dump "kernel" line (text-base pin)** (7b2327d)
- **chmod +x tests/check-component-meta** (8bd1f53)
- **tests: require KASLD_META on every component** (7c249e6)
- **rules: consolidate s390 below-text cascade into s390_text_from_belows** (e09afef)
- **rules: use include/kasld/ include paths, dropping the brittle ../** (a31121e)
- **components: standardise CLI parsing and diagnostic output** (a32a89c)
- **render: clearer text readout — entropy beside status, full leak provenance** (28e4742)
- **rules: let directmap pin take L4/L5 from a resolved Q_VA_BITS** (53c4788)
- **rules: pin x86_64 direct map under CONFIG_KASAN / nokaslr** (d4f8343)
- **tests: split renderer suite out of test_kasld into test_render** (1eaa773)
- **git mv TESTING.md docs/testing.md** (d5505be)
- **components: carve RAM-topology gaps from sysfs memory blocks** (050c09c)
- **rules: generalise RAM-gap exclude to any authoritative map (E820 + device-tree)** (6868fa5)
- **rules: carve forbidden physical regions out of Q_PHYS_TEXT_BASE via C_EXCLUDE** (6afd92d)
- **release: build via cross-tools/musl-cross, widen to 22 arches** (1eafb05)
- **headers: fold kasld.h into api.h and delete it** (3771091)
- **chmod + tests/check-truncation** (d167f96)
- **api: widen address-range helpers to 64-bit bounds; test the hardening model** (41813d2)
- **api: centralise kernel address-classification predicates** (fc33a67)
- **replay: sweep -H / -H -m / -H -j per fixture** (df50574)
- **orchestrator: lock the saturation flag set from worker threads** (3068891)
- **render: shared hardening model + markdown parity** (cb528bc)
- **tests: parallelize test-cross and replay (JOBS, default nproc)** (77bd652)
- **test_kasld: derive fixtures from arch constants; run under test-cross** (be9b244)
- **Bump actions [upload/download]-artifact@v4 to v5** (42e9909)
- **Bump actions/checkout@v4 to actions/checkout@v6** (a0e7dfa)
- **Change .clang-format Language from Cpp to C** (29c1e27)
- **hardening: drop the counterfactual entropy plan, keep the qualitative report** (9c3f372)
- **hardening: simplify plan↔gate matching (bare sysctl key)** (df3c753)
- **Update README** (ae7baaf)
- **hardening: counterfactual derandomization plan + clearer -H report** (4cfe0ca)
- **clang-format** (52260a9)
- **orchestrator: report per-quantity corroboration under --verbose** (598feea)
- **tests: cover x86_64 page_offset L4/L5 paging-mode selection** (fefcd5f)
- **perf components: portable u64 ring access on 32-bit cross builds** (c088cdb)
- **arch: ppc32 + riscv32 PAGE_OFFSET_INVARIANT=1 — unlock coupling synth** (ebdd533)
- **riscv64: SV39 range emit + Q_VA_BITS pin from /proc/cpuinfo** (a9d05eb)
- **renderers: surface all contributors in detail, markdown, and JSON** (4592812)
- **merge: preserve POS_BASE across same-key merges; render all contributors** (4f9da02)
- **perf_event_open: poll-driven ring drain; aligned emit** (a4a1b5a)
- **proc_pid_syscall: Update code comments** (8a5c582)
- **Cleanup code comments; use present-tense** (e0d19aa)
- **post-rename cleanup + window-scaled phys_virt_synth landmarks** (47d0732)
- **api: prefix every phys/virt-specific symbol; land EFI_RNG_PROTOCOL detector** (2bff684)
- **orchestrator: send progress bar to stderr, gate on isatty** (671e318)
- **components: rename kebab-cased to snake_case** (d4915b7)
- **Undo clang-format damage to test scripts** (68b9224)
- **Bump version to 0.2.1-dev** (f4f28b3)

### Tests
- **test: keep large engine locals off the stack in test_engine** (00c874a)

### Docs
- **docs: Standardize American spelling and KASLD casing, refreshed samples** (7af6c14)
- **docs: update testing.md** (f9c818a)
- **docs: state engine soundness/termination + pin entropy definition** (1c65494)
- **docs: document the directmap pin, test_render split, and result_extent** (5fac162)
- **docs: add architecture.md + diagrams; slim CONTRIBUTING to mechanics** (b8788f9)

### Chore
- **ci: per-push cross-arch engine tests + manual replay workflow** (879e878)
- **ci: extract shared cross-build into a reusable workflow** (d51faca)
- **ci: musl cross-compile gate matching the release matrix** (73da508)
- **build: make 32/64-bit truncation & overflow bug classes build failures** (b96ce35)
- **ci: run clang-format for src and tests in one job** (a0ebb9b)

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