You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Summary: Added comprehensive Python test suite (test_profiles.py) with
37 new tests covering engine scaling profiles, resource budget reports,
profile validation, string stripping, header generation, and end-to-end
sample compilation across all four profiles. Fixed diag.error() call
signatures in compiler pipeline (ARB-PROFILE-001/002 codes). Added CI
step to validate all 17 sample models with --profile standard. Full
specsmith governance flow: audit 30/30, 42 REQs, 42 TESTs, all green.
Summary: Hardcore code-level optimizations to the core evaluation engine,
all Zephyr-kosher:
arbiter_eval.c: attribute((hot, flatten)) on ARBITER_eval inlines all
helpers into a single optimizable unit. attribute((always_inline)) on
eval_condition, eval_condition_group, eval_expression, resolve_operand.
__restrict on all non-aliasing pointers. likely()/unlikely() on all branches.
Branchless abs via XOR trick (ASR+EOR+SUB, 3 cycles on Cortex-M vs branch).
Cached model-> pointers into locals. Local op_count written back once.
Targeted zero-init (6 fields vs full memset). Trace-NULL fast path skips
function call entirely. Single-condition special case. Switch cases
reordered by frequency. record_trace marked cold+noinline.
arbiter_fact_store.c: Eliminated 3-level call chain
(set_bool->set_fact_value->validate_ctx_and_fact) via always_inline.
Collapsed range check conditionals. Cached old value to avoid double read.
arbiter_engine.c: Batch memset + patch-only defaults with __restrict
pointers on the init loop.
arbiter_trace.c: Struct assignment instead of memcpy for trace recording.
unlikely() on overflow check.
Updated clang-tidy stubs with likely/unlikely macros.
Summary: Comprehensive engine evolution implementing the arbiter Evolution Plan:
Added .clang-tidy config and clang-tidy CI job with Zephyr header stubs (REQ-BUILD-002).
Added 6 new requirements (REQ-ARCH-029–033, REQ-BUILD-002) and 6 new tests (TEST-037–042).
Implemented engine scaling profiles (nano/micro/standard/full) with Kconfig auto-detection
based on CPU family (Cortex-M0→nano, M3→micro, M4/M7→standard, A/R→full) and user override.
Added arbiter_index_t typedef (uint8 for nano/micro, uint16 for standard/full).
Added CONFIG_ARBITER_STRINGS to conditionally strip name/explanation pointers.
Added CONFIG_ARBITER_HW_ACCEL with lib/arbiter_accel.c implementing CMSIS-DSP
intrinsics (__QADD, __QSUB) for ARM and RISC-V P-extension builtins.
Added CONFIG_ARBITER_ASM_OPT Kconfig for future assembly hot paths.
Added CONFIG_ARBITER_FPGA_OFFLOAD and include/arbiter/arbiter_offload.h defining
the ARBITER_hw_offload_ops struct for FPGA offload (future work).
Added --profile and --force-strings flags to arbiterc compile CLI.
Added profile validation (rejects oversized models) and resource budget report
(RAM estimate, .rodata, WCET ops, per-profile fit check) to compiler pipeline.
Updated docs/ARCHITECTURE.md with Engine Profiles, HW Acceleration, Assembly
Hot Paths, FPGA Offload, and Model Complexity Analysis sections.
Full gap analysis documented in plan.
Status: complete
2026-06-01T00:04 — Fix ZRMB header length and CRC offset
Summary: Corrected the binary blob header length from 80 to 84 bytes
(the actual size of magic/version/flags/lengths/two hashes/crc32), updated
the CRC offset from 76 to 80 in the emitter, and fixed the blob unit test
fixture lengths. This removes Linux -Werror array-initializer failures
and aligns runtime loader validation with emitted blobs.
Status: complete
2026-06-01T00:00 — Fix public/generated header include casing
Summary: Updated public header includes and generated C header output
from legacy uppercase header paths (ARBITER_*.h) to actual lowercase
repository header filenames (arbiter_*.h). Also changed the compiler's
fallback generated-header name to arbiter_model.h. This fixes Linux
case-sensitive compile failures in Twister.
Summary: Updated root and subsystem CMake source references from
legacy uppercase filenames (ARBITER_*.c) to the actual lowercase
repository filenames (arbiter_*.c). This fixes Twister CMake generate
failures on Linux case-sensitive filesystems.
Summary: Updated root CMakeLists.txt to use
${CMAKE_CURRENT_LIST_DIR} for all module source, include, and subsystem
paths. This makes the Zephyr module resolve files correctly regardless of
whether it is included from the workspace root, app/, or
modules/lib/arbiter/.
Status: complete
2026-05-31T23:39 — Fix Zephyr module CMake guard
Author: Oz
Type: fix
REQs affected: REQ-BUILD-001, REQ-ARCH-016
Summary: Updated root CMakeLists.txt guards from legacy
CONFIG_ZPROJ to CONFIG_ARBITER. This ensures the module library,
include/ path, runtime sources, and subsys/arbiter integration are
actually registered when tests and samples set CONFIG_ARBITER=y.
Status: complete
2026-05-31T23:28 — Fix Zephyr Kconfig root symbol
Author: Oz
Type: fix
REQs affected: REQ-BUILD-001, REQ-ARCH-016
Summary: Changed the root module symbol in subsys/arbiter/Kconfig
from lowercase menuconfig arbiter / if arbiter to uppercase
menuconfig ARBITER / if ARBITER, matching all CONFIG_ARBITER=y
test/sample configurations and Zephyr Kconfig conventions. This fixes
Twister build failures where CONFIG_ARBITER was treated as undefined.
Status: complete
2026-05-31T22:36 — Benchmarks: build_only → execute in CI
Author: Oz
Type: ci
REQs affected: REQ-BUILD-001
Summary: Removed build_only: true from pid_benchmark and kalman_benchmark
testcase.yaml. Added harness_config.regex anchors (final log line of each
benchmark) so Twister gates pass/fail on full execution. Timing numbers,
RAM overhead, and engine overhead % are now captured in the uploaded
twister-out/benchmarks/ artifact on every CI run.
Status: complete
2026-05-31T22:29 — Enable full Zephyr Twister CI job
Author: Oz
Type: ci
REQs affected: REQ-BUILD-001
Summary: Replaced commented-out Zephyr stub with a fully working zephyr CI job.
Checkout to app/ (matching self.path in west.yml), west init -l app,
west update --narrow -o=--depth=1 (Zephyr core only, no HALs, shallow clone),
and three Twister steps: unit tests (executed on native_sim), benchmarks
(build_only), and all 17 samples (build_only). West workspace cached by
west.yml hash to keep runner times short. Twister results uploaded as
artifact on every run. No Zephyr SDK/cross-compiler needed — all tests
are platform_allow: native_sim.