| 2026-07-18 | Planning foundation | Product, architecture, backlog, rules, prompts, and operational records established | Documentation structure and reference review | Implementation has not started |
| 2026-07-18 | PBI-001 | Repository source layout reserved with explicit ownership per arch-v0.1.0 section 5 | Layout review against architecture | Empty directories, no README files by preference |
| 2026-07-18 | PBI-002 | Root CMake project with C language declaration and target-scoped component options | Ninja configure with GCC and Clang, in-source guard | First buildable target arrives in PBI-003 |
| 2026-07-18 | PBI-003 | pet_core static library and pet::core alias with strict C99 contract, no allocator | GCC and Clang build, -std=c99, nm allocator scan, standalone build | Minimal version surface only, domain types deferred to PBI-014 |
| 2026-07-18 | PBI-004 | Linux GCC and Clang CMake presets with build, test, and compile-commands output | GCC and Clang configure and build via presets | Full strict gate tooling arrives in PBI-005 through PBI-010 |
| 2026-07-18 | PBI-005 | .clang-format baseline with format and format-check targets over project code | format-check target passes on GCC and Clang builds | Generated and third-party files excluded |
| 2026-07-18 | PBI-006 | pet::warnings interface target, strict GCC/Clang set, MSVC mapping, warnings-as-errors | GCC and Clang build clean under -Werror | Linked PRIVATE so consumers do not inherit |
| 2026-07-18 | PBI-007 | CTest suite mirroring arena test architecture with pinned cmocka-1.1.7 FetchContent | GCC and Clang build and run pet_tests, core-only build needs no cmocka | No -Wl,—wrap, cmocka treated as external |
| 2026-07-18 | PBI-008 | cppcheck target over project sources with C99 model, fails on findings | cppcheck target passes | Dependencies and build outputs excluded |
| 2026-07-18 | PBI-009 | .clang-tidy baseline with parallel run-clang-tidy tidy target | tidy target passes, analyses project TUs only | Fetched cmocka TU excluded by regex |
| 2026-07-18 | PBI-010 | pet::sanitisers interface with ASan and UBSan presets, private to host targets | ASan and UBSan build and test pass, UBSan halt confirmed, ordinary builds clean | GCC/Clang only, fails clearly elsewhere |
| 2026-07-18 | PBI-011 | pet::coverage plus coverage and valgrind audit targets with Gcovr reports under _reports | Coverage report measures src only with branch data, Valgrind 0 errors | Audit gate tools, GCC coverage only |
| 2026-07-18 | PBI-012 | Fast, strict, and audit gates via gate.py over cmake -P, minimum CMake raised to 3.25 | ./gate.py fast, strict, and audit all pass | Workflow presets rejected: single configure step only |
| 2026-07-18 | PBI-013 | Host-conditioned Windows MSVC and Clang presets with MSVC C17 mode | JSON valid, Windows presets hidden on Linux, Linux stays C99, strict gate passes | Windows designed but unverified, completes E01 |
| 2026-07-18 | Documentation links | Milestones filename corrected and wikilinks converted to relative Markdown links | 82 relative links resolved, 0 broken | Obsidian graph view has no dangling nodes |
| 2026-07-18 | PBI-014 | Public status, domain types, and caller-owned fixed-capacity world contract | Strict gate passed, type and storage tests, allocator scan clean | ADR-001 records the memory model, pet_world_init implemented in PBI-015 |
| 2026-07-18 | PBI-015 | pet_world_init validates the whole configuration before writing anything | Strict gate passed, 9 tests covering boundaries, rejection, and determinism | Rejected input leaves the destination untouched |
| 2026-07-18 | PBI-016 | pet_world_validate, pet_world_reset, and PET_WORLD_EMPTY complete the lifecycle | Strict and audit gates passed, 32 tests, 100% line and 96.4% branch coverage | Completes E02, reset needs no deallocation |
| 2026-07-19 | PBI-017 | PetTimeMs, bounded pet_world_update, overflow rejection, and world clock state | Strict and audit gates passed, 55 tests, 22 added, Valgrind 0 errors | ADR-002, PetWorld 64 bytes, within bound |
| 2026-07-19 | PBI-018 | PetActivity idle to curious transition at PET_CURIOUS_AFTER_MS | Strict and audit gates passed, 71 tests, 16 added, boundary and split-delta cases | PetWorld 72 bytes, bound raised to 96 |
| 2026-07-19 | PBI-019 | Caller-owned PetRandom with seed API and bounded draw | Strict gate passed, 93 tests, 14 added, golden vectors | ADR-003 records SplitMix64 and bias trade-off |
| 2026-07-19 | PBI-020 | Replay, rejection, long-sequence determinism, and update-order evidence | Strict and audit gates passed, 93 tests, 8 added, Valgrind 0 errors | Completes E03, bounded name scan only |
| 2026-07-19 | PBI-021 | PetAction and pet_world_apply_action with documented no-op | Strict and audit gates passed, 16 action tests | PET_ACTION_NONE is zero, no public table ABI |
| 2026-07-19 | PBI-022 | Internal transition tables with activity and expression regions | Strict and audit gates passed, greet reaches attentive and happy | ADR-004, PetWorld 88 bytes |
| 2026-07-19 | PBI-023 | Call order, table order, composition, rejection, and replay evidence | Strict and audit gates passed, 127 tests, 34 added, Valgrind 0 errors | Completes E04, no cascade per update |
| 2026-07-19 | PBI-024 | PetSnapshot public presentation contract added | Snapshot tests pass | ADR-005 records field policy |
| 2026-07-19 | PBI-025 | pet_world_snapshot derives a copied, read-only view | Strict and audit gates passed | No world pointer exposed |
| 2026-07-19 | PBI-026 | Snapshot coverage and lifecycle evidence completed | 145 tests, Valgrind 0 errors | Completes E05, PetSnapshot 56 bytes |
| 2026-07-19 | PBI-027 | pet_headless diagnostic host printing snapshot state through the public API only | Strict gate passed, host builds with tests off and Core builds with headless off | Links pet::core only, no internal header, no platform clock |
| 2026-07-19 | PBI-028 | Scripted eight step scenario with a repeatability check registered as pet_headless_scenario | Strict gate passed, 2 CTest tests, scenario asserts state not wording | Completes E06, diagnostic text stays uncontracted |
| 2026-07-19 | PBI-029 | Public API failure audit over all nine operations, recorded in architecture 10.5 | Strict and audit gates passed, 148 tests, 3 added and 2 strengthened, 100% line, function, and branch coverage | No behaviour defect found, reset recovery and version storage were the real gaps |
| 2026-07-19 | Verification tooling | Check logic moved from CMake to tools/verify Python, gate.py orchestrates directly, five .cmake modules removed | Fast, strict, and audit gates pass, core-only build passes | CMake keeps the build graph only, gates compose by list containment |
| 2026-07-19 | PBI-030 | tools/verify/symbols.py scans the compiled Core archive against a closed per-toolchain allowlist | Strict gate passed, forbidden symbols and budget overrun both demonstrated to fail | GCC allowed nothing, Clang allowed memcpy and memset x2, MSVC dumpbin unavailable |
| 2026-07-19 | PBI-031 | tools/verify/headers.py compiles each discovered public header alone under strict C99 | Strict gate passed, 8 headers under GCC and Clang, include-order break demonstrated to fail | Generated version.h covered, needs a filler declaration for C99 |
| 2026-07-19 | PBI-032 | pet_alloc_probe plus tools/verify/alloc.py verify zero heap usage under Valgrind | Audit gate passed, probe reports 0 allocations, deliberate malloc demonstrated to fail | Probe links no sanitiser or coverage, both allocate. Windows unavailable |
| 2026-07-19 | Tooling contract | CMake and Python boundary recorded in code rules 10.1 and architecture 7.3, quality check contracts reworded from targets to gate and script delivery | Fast, strict, and audit gates pass, reference search clean in current guidance | No CMake check target restored, general architecture left tool agnostic |
| 2026-07-19 | Review fixes | Allocation probe observes state through pet_world_snapshot instead of PetWorld fields | Probe exits 0, 0 allocations, audit gate passes | Evidence no longer depends on the authoritative layout |
| 2026-07-19 | PBI-033 | Support matrix evidence collected in architecture 10.6, verified toolchain recorded in 7.2, tools/verify/matrix.py added as a release-time step | Audit gate passed from clean, declared sizes match under GCC and Clang, LIM-002 and LIM-003 recorded | Linux GCC and Clang runtime tested, Windows unverified, embedded portable by design |
| 2026-07-19 | PBI-034 | v0.1.0 release review completed, exit criteria ticked, milestone and epic statuses closed | Audit gate passed, 148 tests plus the headless scenario, 100% line, function, and branch coverage | Completes E07 and release v0.1.0, architecture accepted, V0 milestone now in progress |