# 0.1.0 Readiness Dashboard โ€” LIVE > **This is a living document.** Update statuses **in place** as work lands โ€” do not append a new copy. > Full evidence for every row is in [`status-1.md`](status-1.md). Last updated **2026-09-03**. > **North-star goal:** ship a named, self-contained **0.1.0** dev release of the portable RTOS microkernel > with commercial-grade attributes (versioning, license, docs, tested, honestly-scoped roadmap). ## How to read this Each capability carries a **maturity status**, the **user-facing API state** (does the user call it today or is it coming), and **per-architecture** support. The API column separates the *user-level perspective* ("what can I call?") from the *implementation scope* ("where does it actually run?"). **Maturity legend** | | Meaning | |---|---| | โœ… **Completed** | Implemented **and** HW-verified on silicon | | ๐ŸŸข **Implemented** | In root tree; builds + runs (QEMU/host), not yet HW-verified on that target | | ๐ŸŸก **Partial** | Present as a stub, one half, or a renamed subset โ€” not the full capability | | โšช **Planned** | Not in root; proven in `_legacy/` and/or on the roadmap | | โž– **N/A** | Architecture cannot support this (no HW mechanism) | | โ€” | Not yet assessed on this target | **API-state legend** โ€” `E` = **Existing API** (public in root headers today; 0.1.0 **freeze candidate**) ยท `E~` = existing but **internal/unstable** (not freeze-ready) ยท `P` = **Planned API** (to be introduced) ยท `P~` = planned, API shape not yet designed. **Architecture columns** โ€” `H` Host (pthread/flat) ยท `M` ARM-M (v6/7/8-M) ยท `A/R` ARM-A/R (v7a/v8a/v8r) ยท `RV` RISC-V rv32 ยท `TC` TriCore (AURIX) ยท `C2` C2000 (C28x) ยท `430` MSP430. Legacy-only arches **AVR** and **Xtensa/ESP32** are tracked in [ยง Target breadth](#9--target-breadth-tier-4) (Tier 4), not in every grid. > โš ๏ธ Statuses are best-known as of the date above; **correct them in place** when a build/run says otherwise. --- ## Release scorecard (0.1.0) | Tier | Theme | State | Blocking 0.1.0? | |---|---|---|---| | **Asset** | Differentiated kernel core (sched/sync/isolation/SMP/AMP) | โœ… proven | โ€” | | **0** | Productization (versioning, license, docs, **test harness**) | ๐ŸŸข done โ€” all core artifacts โœ…; only ๐ŸŸก dedicated limitations/coding-guidelines docs + deferred competitive one-pager remain | **YES โ€” primary work** | | **1** | Finish stubbed core (canary, introspect, board-wiring, hygiene) | ๐ŸŸข **honesty gaps closed** (canary + profiling getters + introspect doc + isolation fail-loud gate + hygiene) | done | | **2** | HAL / driver breadth | โšช planned | No โ€” roadmap | | **3** | Security / safety planes | โšช planned (HW-proven in `_legacy`) | No โ€” roadmap | | **4** | Target breadth (extra arches/boards) | ๐ŸŸก partial | No โ€” pull-driven | **0.1.0 = Asset (done) + Tier 0 + Tier 1.** Tiers 2โ€“4 ship as a documented, honest roadmap. --- ## 1 ยท Kernel & scheduling | Capability | API | H | M | A/R | RV | TC | C2 | 430 | Notes | |---|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|---| | Threads (create/exit/join) | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โœ… | โšช | `tk_thread_*`; 430 kernel port unproven (boards HAL-only) | | Preemptive scheduler | E | โž– | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โœ… | โšช | host is cooperative (pthread) | | Priorities | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โœ… | โšช | `TK_PRIO_MIN..MAX` | | EDF / deadlines | E | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | โšช | `TK_CONFIG_ENABLE_EDF` (default **off**), `tk_thread_set_deadline` | | Time / tick / sleep | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โœ… | โšช | per-instance `time_base`; `tk_time_us` is msร—1000 (sub-tick = P) | | Idle / low-power (`arch_idle`) | E~ | โž– | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โœ… | โšช | WFI/WAITI/SLEEP; no tickless framework | ## 2 ยท Synchronization | Capability | API | H | M | A/R | RV | TC | C2 | 430 | Notes | |---|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|---| | Mutex + priority inheritance | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โœ… | โšช | single-level PI (`tk_sync.c`) | | Semaphore | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โœ… | โšช | | | Condition variables | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | โšช | pthread-shaped; **no dedicated demo** at root | | Join / detach / attrs | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โœ… | โšช | | | Spinlock / seqlock (SMP) | E | โž– | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | โœ… | โž– | โž– | `tk_spinlock.h`/`tk_seqlock.h`; TC HW-verified | ## 3 ยท Isolation & multicore โญ the differentiator | Capability | API | H | M | A/R | RV | TC | C2 | 430 | Notes | |---|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|---| | MPU stack-guard (overflow) | E | โž– | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โž– | โž– | region + paging archs; C2000/430 incapable | | Unprivileged threads | E | โž– | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โž– | โž– | M: RA4M1 + M33 HW; TC: `unpriv_tricore` HW | | Per-thread stack isolation | E | โž– | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โž– | โž– | full-lockdown | | **Supervisor fence (AMP island)** | E | โž– | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โž– | โž– | **USP**; TC HW-verified 2026-09-02 (`amp_kernel_fence_tricore`) | | World / TrustZone-AMP (S/NS) | E | โž– | โœ… | โž– | โž– | โž– | โž– | โž– | ARM v8-M; MCXN947 HW (ADR 0005) | | SW stack canary (L1) | E | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | **`tk_stack.c` real** (fill + canary/switch + hook); host unit-tested + RV live-verified; direction-aware (grows-up TC/C2) | | SMP (single kernel, N cores) | E | โž– | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โž– | โž– | M: RP2040 HW; TC: 3-core HW | | AMP islands (multi-instance) | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โž– | โž– | `tk_kernel_define` | | Cross-core wake / IPI | E | โž– | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โž– | โž– | | | Cross-core reclaim (slots/CSA) | E | โž– | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | โœ… | โž– | โž– | TC CSA reclaim-to-home HW (`csa_reclaim_smp_tricore`) | **Fence mechanism coverage (USP):** 5 mechanisms / 2 classes โ€” region-MPU (ARM v8-M โœ…HW, v7-M โœ…HW, R52 ๐ŸŸขQEMU) + paging (RISC-V Sv32 ๐ŸŸขQEMU, ARM VMSA ๐ŸŸขQEMU) + TriCore PRS/DPR (โœ…HW) + system-side AHBSC/TrustZone (MCXN947 โœ…HW, ADR 0005). ## 4 ยท Observability & fault | Capability | API | H | M | A/R | RV | TC | C2 | 430 | Notes | |---|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|---| | Trace ring (flight recorder) | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | โ€” | `tk_trace_ring.c` | | SEGGER SysView | E | โž– | โœ… | โ€” | โ€” | โ€” | โ€” | โ€” | nRF52 HW | | Panic / post-mortem / hardfault | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | โ€” | `panic`, `hardfault` | | Stack high-water | E | โœ… | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | `tk_thread_stack_peak` / `_free`; host unit-tested | | Thread snapshot | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | ๐ŸŸข | โ€” | `tk_kernel_thread_snapshot` | | Remote monitor (ps/top region) | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | `ENABLE_INTROSPECT` = thread NAMES (doc fixed); external RAM-window monitor still roadmap | | Runtime stats accessor | E | โœ… | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | ๐ŸŸข | `tk_thread_cpu_ticks` / `_run_count` (under `TK_CONFIG_ENABLE_PROFILING`) | | Fault containment | E | โž– | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โ€” | โ€” | `TK_CONFIG_FAULT_CONTAIN` | | Liveness / stall detect (island) | E | ๐ŸŸข | โœ… | ๐ŸŸข | ๐ŸŸข | โœ… | โ€” | โ€” | `tk_kernel_liveness_check` | ## 5 ยท Safety (Tier 3 โ€” mostly planned; HW-proven in `_legacy`) | Capability | API | H | M | A/R | RV | TC | C2 | 430 | Notes | |---|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|---| | Watchdog kick seam (kernel) | E | ๐ŸŸข | โœ… | โ€” | โ€” | โ€” | โ€” | โ€” | `tk_watchdog_kick`; `watchdog` nRF52 HW | | Watchdog (portable MCAL) | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | legacy `tk_wdg` (nRF52/ESP32/host) | | Reset-reason | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | legacy `tk_mcu_reset_reason` (5 SoCs) | | Brownout detect | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | legacy nRF52/STM32 HW | | Persistence (validated) | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | legacy `tk_persist` (magic+CRC+len) | | `.noinit` RAM (raw) | E | ๐ŸŸข | ๐ŸŸข | โ€” | โ€” | โ€” | โ€” | โ€” | `noinit` (no integrity gate) | | Cross-core heartbeat | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | legacy `tk_heartbeat` per-core | | Error / DET reporting | P~ | ๐ŸŸก | ๐ŸŸก | ๐ŸŸก | ๐ŸŸก | ๐ŸŸก | ๐ŸŸก | ๐ŸŸก | root `tk_det.h` = no-op stub; legacy full subsystem | | Functional-safety lifecycle | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | legacy `docs/k2/` ISO-26262-style tree | ## 6 ยท Security / crypto / boot (Tier 3 โ€” planned; HW-proven nRF52 in `_legacy`) | Capability | API | H | M | A/R | RV | TC | C2 | 430 | Notes | |---|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|---| | SHA-256 / HMAC-SHA256 | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | SW + ESP32 HW backend | | AES-128 (ECB / CBC) | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | nRF52 ECB / ESP32 / host SW | | ECDSA P-256 verify | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | from-scratch, verify-only | | RNG / TRNG | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | nRF52/ESP32 HW; host PRNG | | CRC-16 | P | โšช | โšช | โšช | โšช | โšช | โšช | โšช | SW default + MSP430FR HW | | Verified boot (HMAC/ECDSA/2-stage) | P | โšช | โšช | โ€” | โ€” | โ€” | โ€” | โ€” | `tk_vboot`; HW-verified nRF52 | | APPROTECT / debug lockout | P | โž– | โšช | โ€” | โ€” | โ€” | โ€” | โ€” | nRF52 HW-verified | ## 7 ยท HAL peripherals (Tier 2 โ€” contract-compatible re-attach; all planned at root) Existing at root: **DIO/GPIO** (`tk_port_*` config + `tk_dio_*` operate), **UART-TX**, **edge-IRQ** (`tk_dio_irq`), **clock** (`tk_mcu`). Everything below is `P` (planned) โ€” legacy backends noted. | Peripheral | API | Legacy backends (portability proof) | Root | |---|:--:|---|:--:| | GPIO / DIO (config + operate) | E | nRF52, RA4M1, STM32, RP2040, TC275, โ€ฆ | ๐ŸŸข | | UART TX | E | all boards | ๐ŸŸข | | UART RX (ring) | P | legacy `tk_uart_rx.c` | โšช | | GPIO edge IRQ | E | nRF52 (`tk_dio_irq`) | ๐ŸŸข (M) | | GPIO zero-CPU routing (PPI) | โ€” | nRF52 GPIOTE MODE B | โž– excluded from contract | | Timer (GPT, app countdown) | P | nRF52, AVR, MSP430ร—2 + core (5) | โšช | | ADC | P | nRF52, AVR, MSP430ร—2, host (5) | โšช | | I2C (master + slave) | P | nRF52, AVR, MSP430ร—2, host (5) | โšช | | SPI (master) | P | nRF52, AVR, MSP430, host (4) | โšช | | PWM | P | nRF52, AVR, MSP430ร—2, host (5) | โšช | | ICU (input capture) | P | nRF52, MSP430FR (2) | โšช | | RTC (low-power) | P | nRF52, MSP430FR (2) | โšช | | TEMP (die) | P | nRF52, host (2) | โšช | | NFCT (tag) / BLE beacon | P~ | nRF52 only | โšช single-silicon | ## 8 ยท Drivers & off-chip devices (Tier 2 โ€” whole layers absent at root) | Item | API | Legacy | Root | |---|:--:|---|:--:| | Button (debounce + gestures) | P | `drivers/tk_button` | โšช | | LED (logical) | P | `drivers/tk_led` | โšช | | Persist driver | P | `drivers/tk_persist` | โšช | | LCD HD44780 (GPIO / PCF8574) | P | `devices/hd44780*` | โšช | | CAN MCP2515 | P | `devices/mcp2515` | โšช | | I2C expander PCF8574 | P | `devices/pcf8574` | โšช | | NFC PN532 | P | `devices/pn532` | โšช | ## 9 ยท Build, tooling & product infrastructure (Tier 0 โ€” the ship wrapper) | Item | Status | Notes | |---|:--:|---| | Build system (`make/tk.mk`, per-example) | ๐ŸŸข | present | | Profiles (nano/dev/full/hardened) | ๐ŸŸข | root is a superset of legacy | | Config system (`tk_config` + `TK_FEAT_*`) | ๐ŸŸข | capability layer added in reshape | | Arch/config regression checks (`check_*.sh`) | ๐ŸŸข | fence-matrix, arch-detect | | **Unit-test harness (host + QEMU)** | โšช | legacy `tests/` (`tb_test`, kernel/mutex/cond/handle/stack/crc/uart_rx + riscv arch) โ€” **not at root** | | **Quality-gate `Makefile`** (test/coverage/MC-DC/MISRA/check-profiles) | โšช | legacy top-level `Makefile` โ€” **not at root** | | Coverage / MC-DC / MISRA gates | โšช | gcov / LLVM MC-DC / cppcheck MISRA C:2012 | | `tkgen` pin/clock codegen | โšช | legacy `tools/tkgen` (YAML โ†’ const C) | | Composability CI gate | โšช | legacy `composability_matrix.sh` (I1โ€“I4) | | Versioning (`VERSION` + `gen_version.sh`) | โšช | legacy `0.1.0-dev` + build-stamp header | | SDK packaging (`tk_pkg.sh`) | โšช | legacy self-describing SDK per board | ### Target breadth (Tier 4) | Target | Kind | Status | Notes | |---|---|:--:|---| | AVR (ATmega328P) arch + Uno board | arch+board | โšช | legacy, rich HAL | | Xtensa LX6 (ESP32) arch + Wrover board | arch+board | โšช | legacy; SMP staged | | MSP430FR2433 board | board | โšช | legacy; most complete peripheral set (HAL-only) | | MSP430G2553 board | board | โšช | legacy; HAL-only superloop | | RA4M1 (`r7fa4m1ab_ek`) board | board | โšช | legacy; full kernel-capable ARM | | STM32F103 Blue Pill board | board | โšช | legacy; kernel-capable | | STM32H723 Nucleo board | board | โšช | legacy; kernel-capable | --- ## 10 ยท Productization checklist (0.1.0 gate) | Artifact | Status | Notes | |---|:--:|---| | Product **name** | โœ… | **Revera**, by VIACERTO LLC | | **LICENSE** + SPDX headers | โœ… | PolyForm Noncommercial 1.0.0 OR VIACERTO commercial; 226 files stamped | | `VERSION` + SemVer scheme | โœ… | `0.1.0` | | `CHANGELOG.md` (Keep-a-Changelog) | โœ… | | | Project **README** (pitch โ†’ USP โ†’ quickstart โ†’ support matrix โ†’ limitations) | โœ… | | | Getting-started guide | โœ… | `docs/guides/getting-started.md` (desktop โ†’ QEMU โ†’ own app) | | User manual / API reference | ๐ŸŸข | `docs/reference/api.md` + `docs/README.md` (manual index) | | Porting guide | ๐ŸŸข | `docs/guides/{arch-porting,board-bringup}.md` | | Supported-target matrix (Tier-1/2/3) | ๐ŸŸข | this dashboard | | **Limitations & Non-Goals** | ๐ŸŸก | in README status + CHANGELOG "Known limitations"; dedicated doc pending | | Coding guidelines | ๐ŸŸก | in CONTRIBUTING (C99 `-Werror -pedantic`, style, `tk_` prefix); dedicated doc pending | | Release manifest / "what's in the box" | โœ… | `docs/release-manifest.md` | | `CONTRIBUTING` + feedback process | โœ… | `CONTRIBUTING.md` with the dual-license CLA | | Competitive one-pager | ๐ŸŸก | `docs/evaluation/` (13 axes) is the seed (deferred) | | Announcement / release notes | โœ… | `docs/announcements/0.1.0.md` | --- ## Update log - **2026-09-03** โ€” Dashboard created from Readiness Review #1 (`status-1.md`). Baseline statuses set.